diff options
| author | Tom Lane | 2019-02-05 00:18:50 +0000 |
|---|---|---|
| committer | Tom Lane | 2019-02-05 00:18:50 +0000 |
| commit | 60b1d6c2a736a1279b297f698cf507d5c81fa31a (patch) | |
| tree | 99813d603350a2ceee28b003d6ab9e503a198fe3 /doc/src/sgml | |
| parent | 16e0464a11d8c2840cf8127394a4b4315111440a (diff) | |
Doc: in each release branch, keep only that branch's own release notes.
Historically we've had each release branch include all prior branches'
notes, including minor-release changes, back to the beginning of the
project. That's basically an O(N^2) proposition, and it was starting to
catch up with us: as of HEAD the back-branch release notes alone accounted
for nearly 30% of the documentation. While there's certainly some value
in easy access to back-branch notes, this is getting out of hand.
Hence, switch over to the rule that each branch contains only its own
release notes. So as to not make older notes too hard to find, each
branch will provide URLs for the immediately preceding branches'
release notes on the project website.
There might be value in providing aggregated notes across all branches
somewhere on the website, but that's a task for another day.
Discussion: https://postgr.es/m/cbd4aeb5-2d9c-8b84-e968-9e09393d4c83@postgresql.org
Diffstat (limited to 'doc/src/sgml')
| -rw-r--r-- | doc/src/sgml/filelist.sgml | 13 | ||||
| -rw-r--r-- | doc/src/sgml/release-7.4.sgml | 4622 | ||||
| -rw-r--r-- | doc/src/sgml/release-8.0.sgml | 5421 | ||||
| -rw-r--r-- | doc/src/sgml/release-8.1.sgml | 5444 | ||||
| -rw-r--r-- | doc/src/sgml/release-8.2.sgml | 7077 | ||||
| -rw-r--r-- | doc/src/sgml/release-8.3.sgml | 8549 | ||||
| -rw-r--r-- | doc/src/sgml/release-8.4.sgml | 10080 | ||||
| -rw-r--r-- | doc/src/sgml/release-9.0.sgml | 11091 | ||||
| -rw-r--r-- | doc/src/sgml/release-9.1.sgml | 11763 | ||||
| -rw-r--r-- | doc/src/sgml/release-9.2.sgml | 12201 | ||||
| -rw-r--r-- | doc/src/sgml/release-9.3.sgml | 14551 | ||||
| -rw-r--r-- | doc/src/sgml/release-9.4.sgml | 13157 | ||||
| -rw-r--r-- | doc/src/sgml/release-9.5.sgml | 11192 | ||||
| -rw-r--r-- | doc/src/sgml/release-old.sgml | 6657 | ||||
| -rw-r--r-- | doc/src/sgml/release.sgml | 91 |
15 files changed, 74 insertions, 121835 deletions
diff --git a/doc/src/sgml/filelist.sgml b/doc/src/sgml/filelist.sgml index 69649a7da4b..a2769f0c0f3 100644 --- a/doc/src/sgml/filelist.sgml +++ b/doc/src/sgml/filelist.sgml @@ -169,19 +169,6 @@ <!ENTITY release SYSTEM "release.sgml"> <!ENTITY release-9.6 SYSTEM "release-9.6.sgml"> -<!ENTITY release-9.5 SYSTEM "release-9.5.sgml"> -<!ENTITY release-9.4 SYSTEM "release-9.4.sgml"> -<!ENTITY release-9.3 SYSTEM "release-9.3.sgml"> -<!ENTITY release-9.2 SYSTEM "release-9.2.sgml"> -<!ENTITY release-9.1 SYSTEM "release-9.1.sgml"> -<!ENTITY release-9.0 SYSTEM "release-9.0.sgml"> -<!ENTITY release-8.4 SYSTEM "release-8.4.sgml"> -<!ENTITY release-8.3 SYSTEM "release-8.3.sgml"> -<!ENTITY release-8.2 SYSTEM "release-8.2.sgml"> -<!ENTITY release-8.1 SYSTEM "release-8.1.sgml"> -<!ENTITY release-8.0 SYSTEM "release-8.0.sgml"> -<!ENTITY release-7.4 SYSTEM "release-7.4.sgml"> -<!ENTITY release-old SYSTEM "release-old.sgml"> <!ENTITY acronyms SYSTEM "acronyms.sgml"> diff --git a/doc/src/sgml/release-7.4.sgml b/doc/src/sgml/release-7.4.sgml deleted file mode 100644 index 1b5796c9589..00000000000 --- a/doc/src/sgml/release-7.4.sgml +++ /dev/null @@ -1,4622 +0,0 @@ -<!-- doc/src/sgml/release-7.4.sgml --> -<!-- See header comment in release.sgml about typical markup --> - - <sect1 id="release-7-4-30"> - <title>Release 7.4.30</title> - - <formalpara> - <title>Release date:</title> - <para>2010-10-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.29. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <para> - This is expected to be the last <productname>PostgreSQL</> release - in the 7.4.X series. Users are encouraged to update to a newer - release branch soon. - </para> - - <sect2> - <title>Migration to Version 7.4.30</title> - - <para> - A dump/restore is not required for those running 7.4.X. - However, if you are upgrading from a version earlier than 7.4.26, - see <xref linkend="release-7-4-26">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Use a separate interpreter for each calling SQL userid in PL/Perl and - PL/Tcl (Tom Lane) - </para> - - <para> - This change prevents security problems that can be caused by subverting - Perl or Tcl code that will be executed later in the same session under - another SQL user identity (for example, within a <literal>SECURITY - DEFINER</> function). Most scripting languages offer numerous ways that - that might be done, such as redefining standard functions or operators - called by the target function. Without this change, any SQL user with - Perl or Tcl language usage rights can do essentially anything with the - SQL privileges of the target function's owner. - </para> - - <para> - The cost of this change is that intentional communication among Perl - and Tcl functions becomes more difficult. To provide an escape hatch, - PL/PerlU and PL/TclU functions continue to use only one interpreter - per session. This is not considered a security issue since all such - functions execute at the trust level of a database superuser already. - </para> - - <para> - It is likely that third-party procedural languages that claim to offer - trusted execution have similar security issues. We advise contacting - the authors of any PL you are depending on for security-critical - purposes. - </para> - - <para> - Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433). - </para> - </listitem> - - <listitem> - <para> - Prevent possible crashes in <function>pg_get_expr()</> by disallowing - it from being called with an argument that is not one of the system - catalog columns it's intended to be used with - (Heikki Linnakangas, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane) - </para> - - <para> - This occurred when a sub-select contains a join alias reference that - expands into an expression containing another sub-select. - </para> - </listitem> - - <listitem> - <para> - Take care to fsync the contents of lockfiles (both - <filename>postmaster.pid</> and the socket lockfile) while writing them - (Tom Lane) - </para> - - <para> - This omission could result in corrupted lockfile contents if the - machine crashes shortly after postmaster start. That could in turn - prevent subsequent attempts to start the postmaster from succeeding, - until the lockfile is manually removed. - </para> - </listitem> - - <listitem> - <para> - Improve <filename>contrib/dblink</>'s handling of tables containing - dropped columns (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix connection leak after <quote>duplicate connection name</quote> - errors in <filename>contrib/dblink</> (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Update build infrastructure and documentation to reflect the source code - repository's move from CVS to Git (Magnus Hagander and others) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-29"> - <title>Release 7.4.29</title> - - <formalpara> - <title>Release date:</title> - <para>2010-05-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.28. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <para> - The <productname>PostgreSQL</> community will stop releasing updates - for the 7.4.X release series in July 2010. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 7.4.29</title> - - <para> - A dump/restore is not required for those running 7.4.X. - However, if you are upgrading from a version earlier than 7.4.26, - see <xref linkend="release-7-4-26">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Enforce restrictions in <literal>plperl</> using an opmask applied to - the whole interpreter, instead of using <filename>Safe.pm</> - (Tim Bunce, Andrew Dunstan) - </para> - - <para> - Recent developments have convinced us that <filename>Safe.pm</> is too - insecure to rely on for making <literal>plperl</> trustable. This - change removes use of <filename>Safe.pm</> altogether, in favor of using - a separate interpreter with an opcode mask that is always applied. - Pleasant side effects of the change include that it is now possible to - use Perl's <literal>strict</> pragma in a natural way in - <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</> - variables work as expected in sort routines, and that function - compilation is significantly faster. (CVE-2010-1169) - </para> - </listitem> - - <listitem> - <para> - Prevent PL/Tcl from executing untrustworthy code from - <structname>pltcl_modules</> (Tom) - </para> - - <para> - PL/Tcl's feature for autoloading Tcl code from a database table - could be exploited for trojan-horse attacks, because there was no - restriction on who could create or insert into that table. This change - disables the feature unless <structname>pltcl_modules</> is owned by a - superuser. (However, the permissions on the table are not checked, so - installations that really need a less-than-secure modules table can - still grant suitable privileges to trusted non-superusers.) Also, - prevent loading code into the unrestricted <quote>normal</> Tcl - interpreter unless we are really going to execute a <literal>pltclu</> - function. (CVE-2010-1170) - </para> - </listitem> - - <listitem> - <para> - Do not allow an unprivileged user to reset superuser-only parameter - settings (Alvaro) - </para> - - <para> - Previously, if an unprivileged user ran <literal>ALTER USER ... RESET - ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for - a database he owns, this would remove all special parameter settings - for the user or database, even ones that are only supposed to be - changeable by a superuser. Now, the <command>ALTER</> will only - remove the parameters that the user has permission to change. - </para> - </listitem> - - <listitem> - <para> - Avoid possible crash during backend shutdown if shutdown occurs - when a <literal>CONTEXT</> addition would be made to log entries (Tom) - </para> - - <para> - In some cases the context-printing function would fail because the - current transaction had already been rolled back when it came time - to print a log message. - </para> - </listitem> - - <listitem> - <para> - Update pl/perl's <filename>ppport.h</> for modern Perl versions - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix assorted memory leaks in pl/python (Andreas Freund, Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure that <filename>contrib/pgstattuple</> functions respond to cancel - interrupts promptly (Tatsuhito Kasahara) - </para> - </listitem> - - <listitem> - <para> - Make server startup deal properly with the case that - <function>shmget()</> returns <literal>EINVAL</> for an existing - shared memory segment (Tom) - </para> - - <para> - This behavior has been observed on BSD-derived kernels including OS X. - It resulted in an entirely-misleading startup failure complaining that - the shared memory request size was too large. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-28"> - <title>Release 7.4.28</title> - - <formalpara> - <title>Release date:</title> - <para>2010-03-15</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.27. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <para> - The <productname>PostgreSQL</> community will stop releasing updates - for the 7.4.X release series in July 2010. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 7.4.28</title> - - <para> - A dump/restore is not required for those running 7.4.X. - However, if you are upgrading from a version earlier than 7.4.26, - see <xref linkend="release-7-4-26">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Add new configuration parameter <varname>ssl_renegotiation_limit</> to - control how often we do session key renegotiation for an SSL connection - (Magnus) - </para> - - <para> - This can be set to zero to disable renegotiation completely, which may - be required if a broken SSL library is used. In particular, some - vendors are shipping stopgap patches for CVE-2009-3555 that cause - renegotiation attempts to fail. - </para> - </listitem> - - <listitem> - <para> - Make <function>substring()</> for <type>bit</> types treat any negative - length as meaning <quote>all the rest of the string</> (Tom) - </para> - - <para> - The previous coding treated only -1 that way, and would produce an - invalid result value for other negative values, possibly leading to - a crash (CVE-2010-0442). - </para> - </listitem> - - <listitem> - <para> - Fix some cases of pathologically slow regular expression matching (Tom) - </para> - </listitem> - - <listitem> - <para> - When reading <filename>pg_hba.conf</> and related files, do not treat - <literal>@something</> as a file inclusion request if the <literal>@</> - appears inside quote marks; also, never treat <literal>@</> by itself - as a file inclusion request (Tom) - </para> - - <para> - This prevents erratic behavior if a role or database name starts with - <literal>@</>. If you need to include a file whose path name - contains spaces, you can still do so, but you must write - <literal>@"/path to/file"</> rather than putting the quotes around - the whole construct. - </para> - </listitem> - - <listitem> - <para> - Prevent infinite loop on some platforms if a directory is named as - an inclusion target in <filename>pg_hba.conf</> and related files - (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure PL/Tcl initializes the Tcl interpreter fully (Tom) - </para> - - <para> - The only known symptom of this oversight is that the Tcl - <literal>clock</> command misbehaves if using Tcl 8.5 or later. - </para> - </listitem> - - <listitem> - <para> - Prevent crash in <filename>contrib/dblink</> when too many key - columns are specified to a <function>dblink_build_sql_*</> function - (Rushabh Lathia, Joe Conway) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-27"> - <title>Release 7.4.27</title> - - <formalpara> - <title>Release date:</title> - <para>2009-12-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.26. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.27</title> - - <para> - A dump/restore is not required for those running 7.4.X. - However, if you are upgrading from a version earlier than 7.4.26, - see <xref linkend="release-7-4-26">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Protect against indirect security threats caused by index functions - changing session-local state (Gurjeet Singh, Tom) - </para> - - <para> - This change prevents allegedly-immutable index functions from possibly - subverting a superuser's session (CVE-2009-4136). - </para> - </listitem> - - <listitem> - <para> - Reject SSL certificates containing an embedded null byte in the common - name (CN) field (Magnus) - </para> - - <para> - This prevents unintended matching of a certificate to a server or client - name during SSL validation (CVE-2009-4034). - </para> - </listitem> - - <listitem> - <para> - Fix possible crash during backend-startup-time cache initialization (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent signals from interrupting <literal>VACUUM</> at unsafe times - (Alvaro) - </para> - - <para> - This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled - after it's already committed its tuple movements, as well as transient - errors if a plain <literal>VACUUM</> is interrupted after having - truncated the table. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to integer overflow in hash table size - calculation (Tom) - </para> - - <para> - This could occur with extremely large planner estimates for the size of - a hashjoin's result. - </para> - </listitem> - - <listitem> - <para> - Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris - Mikkelson) - </para> - </listitem> - - <listitem> - <para> - Fix PAM password processing to be more robust (Tom) - </para> - - <para> - The previous code is known to fail with the combination of the Linux - <literal>pam_krb5</> PAM module with Microsoft Active Directory as the - domain controller. It might have problems elsewhere too, since it was - making unjustified assumptions about what arguments the PAM stack would - pass to it. - </para> - </listitem> - - <listitem> - <para> - Make the postmaster ignore any <literal>application_name</> parameter in - connection request packets, to improve compatibility with future libpq - versions (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-26"> - <title>Release 7.4.26</title> - - <formalpara> - <title>Release date:</title> - <para>2009-09-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.25. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.26</title> - - <para> - A dump/restore is not required for those running 7.4.X. - However, if you have any hash indexes on <type>interval</> columns, - you must <command>REINDEX</> them after updating to 7.4.26. - Also, if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Disallow <command>RESET ROLE</> and <command>RESET SESSION - AUTHORIZATION</> inside security-definer functions (Tom, Heikki) - </para> - - <para> - This covers a case that was missed in the previous patch that - disallowed <command>SET ROLE</> and <command>SET SESSION - AUTHORIZATION</> inside security-definer functions. - (See CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Fix handling of sub-SELECTs appearing in the arguments of - an outer-level aggregate function (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix hash calculation for data type <type>interval</> (Tom) - </para> - - <para> - This corrects wrong results for hash joins on interval values. - It also changes the contents of hash indexes on interval columns. - If you have any such indexes, you must <command>REINDEX</> them - after updating. - </para> - </listitem> - - <listitem> - <para> - Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal> - when <replaceable>x</> is more than 2 million and integer - datetimes are in use (Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Fix calculation of distance between a point and a line segment (Tom) - </para> - - <para> - This led to incorrect results from a number of geometric operators. - </para> - </listitem> - - <listitem> - <para> - Fix <type>money</> data type to work in locales where currency - amounts have no fractional digits, e.g. Japan (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Properly round datetime input like - <literal>00:12:57.9999999999999999999999999999</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix poor choice of page split point in GiST R-tree operator classes - (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix portability issues in plperl initialization (Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Improve robustness of <application>libpq</>'s code to recover - from errors during <command>COPY FROM STDIN</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid including conflicting readline and editline header files - when both libraries are installed (Zdenek Kotala) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-25"> - <title>Release 7.4.25</title> - - <formalpara> - <title>Release date:</title> - <para>2009-03-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.24. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.25</title> - - <para> - A dump/restore is not required for those running 7.4.X. - However, if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent error recursion crashes when encoding conversion fails (Tom) - </para> - - <para> - This change extends fixes made in the last two minor releases for - related failure scenarios. The previous fixes were narrowly tailored - for the original problem reports, but we have now recognized that - <emphasis>any</> error thrown by an encoding conversion function could - potentially lead to infinite recursion while trying to report the - error. The solution therefore is to disable translation and encoding - conversion and report the plain-ASCII form of any error message, - if we find we have gotten into a recursive error reporting situation. - (CVE-2009-0922) - </para> - </listitem> - - <listitem> - <para> - Disallow <command>CREATE CONVERSION</> with the wrong encodings - for the specified conversion function (Heikki) - </para> - - <para> - This prevents one possible scenario for encoding conversion failure. - The previous change is a backstop to guard against other kinds of - failures in the same area. - </para> - </listitem> - - <listitem> - <para> - Fix core dump when <function>to_char()</> is given format codes that - are inappropriate for the type of the data argument (Tom) - </para> - </listitem> - - <listitem> - <para> - Add <literal>MUST</> (Mauritius Island Summer Time) to the default list - of known timezone abbreviations (Xavier Bugaud) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-24"> - <title>Release 7.4.24</title> - - <formalpara> - <title>Release date:</title> - <para>2009-02-02</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.23. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.24</title> - - <para> - A dump/restore is not required for those running 7.4.X. - However, if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Improve handling of URLs in <function>headline()</> function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Improve handling of overlength headlines in <function>headline()</> - function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Prevent possible Assert failure or misconversion if an encoding - conversion is created with the wrong conversion function for the - specified pair of encodings (Tom, Heikki) - </para> - </listitem> - - <listitem> - <para> - Avoid unnecessary locking of small tables in <command>VACUUM</> - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix uninitialized variables in <filename>contrib/tsearch2</>'s - <function>get_covers()</> function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix bug in <function>to_char()</>'s handling of <literal>TH</> - format codes (Andreas Scherbaum) - </para> - </listitem> - - <listitem> - <para> - Make all documentation reference <literal>pgsql-bugs</> and/or - <literal>pgsql-hackers</> as appropriate, instead of the - now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</> - mailing lists (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-23"> - <title>Release 7.4.23</title> - - <formalpara> - <title>Release date:</title> - <para>2008-11-03</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.22. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.23</title> - - <para> - A dump/restore is not required for those running 7.4.X. - However, if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix backend crash when the client encoding cannot represent a localized - error message (Tom) - </para> - - <para> - We have addressed similar issues before, but it would still fail if - the <quote>character has no equivalent</> message itself couldn't - be converted. The fix is to disable localization and send the plain - ASCII error message when we detect such a situation. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect tsearch2 headline generation when single query - item matches first word of text (Sushant Sinha) - </para> - </listitem> - - <listitem> - <para> - Fix improper display of fractional seconds in interval values when - using a non-ISO datestyle in an <option>--enable-integer-datetimes</> - build (Ron Mayer) - </para> - </listitem> - - <listitem> - <para> - Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</> - behave correctly when the passed tuple and tuple descriptor have - different numbers of columns (Tom) - </para> - - <para> - This situation is normal when a table has had columns added or removed, - but these two functions didn't handle it properly. - The only likely consequence is an incorrect error indication. - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</>'s parsing of <command>CREATE USER</> (Michael) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-22"> - <title>Release 7.4.22</title> - - <formalpara> - <title>Release date:</title> - <para>2008-09-22</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.21. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.22</title> - - <para> - A dump/restore is not required for those running 7.4.X. - However, if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix datetime input functions to correctly detect integer overflow when - running on a 64-bit platform (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve performance of writing very long log messages to syslog (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT - ON</> query (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner to estimate that <literal>GROUP BY</> expressions yielding - boolean results always result in two groups, regardless of the - expressions' contents (Tom) - </para> - - <para> - This is very substantially more accurate than the regular <literal>GROUP - BY</> estimate for certain boolean tests like <replaceable>col</> - <literal>IS NULL</>. - </para> - </listitem> - - <listitem> - <para> - Improve <application>pg_dump</> and <application>pg_restore</>'s - error reporting after failure to send a SQL command (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-21"> - <title>Release 7.4.21</title> - - <formalpara> - <title>Release date:</title> - <para>2008-06-12</para> - </formalpara> - - <para> - This release contains one serious bug fix over 7.4.20. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.21</title> - - <para> - A dump/restore is not required for those running 7.4.X. - However, if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom) - </para> - - <para> - Before this fix, a negative constant in a view or rule might be dumped - as, say, <literal>-42::integer</>, which is subtly incorrect: it should - be <literal>(-42)::integer</> due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - <productname>PostgreSQL</> to reject what had been a valid - <command>SELECT DISTINCT</> view query. Since this could result in - <application>pg_dump</> output failing to reload, it is being treated - as a high-priority fix. The only released versions in which dump - output is actually incorrect are 8.3.1 and 8.2.7. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-20"> - <title>Release 7.4.20</title> - - <formalpara> - <title>Release date:</title> - <para>never released</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.19. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.20</title> - - <para> - A dump/restore is not required for those running 7.4.X. - However, if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix conversions between ISO-8859-5 and other encodings to handle - Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with - two dots) (Sergey Burladyan) - </para> - </listitem> - - <listitem> - <para> - Fix a few datatype input functions - that were allowing unused bytes in their results to contain - uninitialized, unpredictable values (Tom) - </para> - - <para> - This could lead to failures in which two apparently identical literal - values were not seen as equal, resulting in the parser complaining - about unmatched <literal>ORDER BY</> and <literal>DISTINCT</> - expressions. - </para> - </listitem> - - <listitem> - <para> - Fix a corner case in regular-expression substring matching - (<literal>substring(<replaceable>string</> from - <replaceable>pattern</>)</literal>) (Tom) - </para> - - <para> - The problem occurs when there is a match to the pattern overall but - the user has specified a parenthesized subexpression and that - subexpression hasn't got a match. An example is - <literal>substring('foo' from 'foo(bar)?')</>. - This should return NULL, since <literal>(bar)</> isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - <literal>foo</>). - </para> - </listitem> - - <listitem> - <para> - Fix incorrect result from <application>ecpg</>'s - <function>PGTYPEStimestamp_sub()</> function (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</> - 4.3 (Tom) - </para> - - <para> - This problem affects <quote>old style</> (V0) C functions that - return boolean. The fix is already in 8.3, but the need to - back-patch it was not realized at the time. - </para> - </listitem> - - <listitem> - <para> - Fix longstanding <command>LISTEN</>/<command>NOTIFY</> - race condition (Tom) - </para> - - <para> - In rare cases a session that had just executed a - <command>LISTEN</> might not get a notification, even though - one would be expected because the concurrent transaction executing - <command>NOTIFY</> was observed to commit later. - </para> - - <para> - A side effect of the fix is that a transaction that has executed - a not-yet-committed <command>LISTEN</> command will not see any - row in <structname>pg_listener</> for the <command>LISTEN</>, - should it choose to look; formerly it would have. This behavior - was never documented one way or the other, but it is possible that - some applications depend on the old behavior. - </para> - </listitem> - - <listitem> - <para> - Fix display of constant expressions in <literal>ORDER BY</> - and <literal>GROUP BY</> (Tom) - </para> - - <para> - An explicitly casted constant would be shown incorrectly. This could - for example lead to corruption of a view definition during - dump and reload. - </para> - </listitem> - - <listitem> - <para> - Fix <application>libpq</> to handle NOTICE messages correctly - during COPY OUT (Tom) - </para> - - <para> - This failure has only been observed to occur when a user-defined - datatype's output routine issues a NOTICE, but there is no - guarantee it couldn't happen due to other causes. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-19"> - <title>Release 7.4.19</title> - - <formalpara> - <title>Release date:</title> - <para>2008-01-07</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.18, - including fixes for significant security issues. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.19</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent functions in indexes from executing with the privileges of - the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom) - </para> - - <para> - Functions used in index expressions and partial-index - predicates are evaluated whenever a new table entry is made. It has - long been understood that this poses a risk of trojan-horse code - execution if one modifies a table owned by an untrustworthy user. - (Note that triggers, defaults, check constraints, etc. pose the - same type of risk.) But functions in indexes pose extra danger - because they will be executed by routine maintenance operations - such as <command>VACUUM FULL</>, which are commonly performed - automatically under a superuser account. For example, a nefarious user - can execute code with superuser privileges by setting up a - trojan-horse index definition and waiting for the next routine vacuum. - The fix arranges for standard maintenance operations - (including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>, - and <command>CLUSTER</>) to execute as the table owner rather than - the calling user, using the same privilege-switching mechanism already - used for <literal>SECURITY DEFINER</> functions. To prevent bypassing - this security measure, execution of <command>SET SESSION - AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a - <literal>SECURITY DEFINER</> context. (CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Repair assorted bugs in the regular-expression package (Tom, Will Drewry) - </para> - - <para> - Suitably crafted regular-expression patterns could cause crashes, - infinite or near-infinite looping, and/or massive memory consumption, - all of which pose denial-of-service hazards for applications that - accept regex search patterns from untrustworthy sources. - (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</> to use only - password authentication, as a security measure (Joe) - </para> - - <para> - The fix that appeared for this in 7.4.18 was incomplete, as it plugged - the hole for only some <filename>dblink</> functions. (CVE-2007-6601, - CVE-2007-3278) - </para> - </listitem> - - <listitem> - <para> - Fix planner failure in some cases of <literal>WHERE false AND var IN - (SELECT ...)</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix potential crash in <function>translate()</> when using a multibyte - database encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python to not crash on long exception messages (Alvaro) - </para> - </listitem> - - <listitem> - <para> - <application>ecpg</> parser fixes (Michael) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle - NULL rowid as a category in its own right, rather than crashing (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix <type>tsvector</> and <type>tsquery</> output routines to - escape backslashes correctly (Teodor, Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix crash of <function>to_tsvector()</> on huge input strings (Teodor) - </para> - </listitem> - - <listitem> - <para> - Require a specific version of <productname>Autoconf</> to be used - when re-generating the <command>configure</> script (Peter) - </para> - - <para> - This affects developers and packagers only. The change was made - to prevent accidental use of untested combinations of - <productname>Autoconf</> and <productname>PostgreSQL</> versions. - You can remove the version check if you really want to use a - different <productname>Autoconf</> version, but it's - your responsibility whether the result works or not. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-18"> - <title>Release 7.4.18</title> - - <formalpara> - <title>Release date:</title> - <para>2007-09-17</para> - </formalpara> - - <para> - This release contains fixes from 7.4.17. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.18</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent index corruption when a transaction inserts rows and - then aborts close to the end of a concurrent <command>VACUUM</> - on the same table (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix excessive logging of <acronym>SSL</> error messages (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix crash when <varname>log_min_error_statement</> logging runs out - of memory (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent <command>CLUSTER</> from failing - due to attempting to process temporary tables of other sessions (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</> to use only - password authentication, as a security measure (Joe) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-17"> - <title>Release 7.4.17</title> - - <formalpara> - <title>Release date:</title> - <para>2007-04-23</para> - </formalpara> - - <para> - This release contains fixes from 7.4.16, - including a security fix. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.17</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Support explicit placement of the temporary-table schema within - <varname>search_path</>, and disable searching it for functions - and operators (Tom) - </para> - <para> - This is needed to allow a security-definer function to set a - truly secure value of <varname>search_path</>. Without it, - an unprivileged SQL user can use temporary objects to execute code - with the privileges of the security-definer function (CVE-2007-2138). - See <command>CREATE FUNCTION</> for more information. - </para> - </listitem> - - <listitem> - <para> - <filename>/contrib/tsearch2</> crash fixes (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles - <command>UPDATE</> chains (Tom, Pavan Deolasee) - </para> - </listitem> - - <listitem> - <para> - Fix PANIC during enlargement of a hash index (bug introduced in 7.4.15) - (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-16"> - <title>Release 7.4.16</title> - - <formalpara> - <title>Release date:</title> - <para>2007-02-05</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.15, including - a security fix. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.16</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Remove security vulnerability that allowed connected users - to read backend memory (Tom) - </para> - <para> - The vulnerability involves suppressing the normal check that a SQL - function returns the data type it's declared to, or changing the - data type of a table column used in a SQL function (CVE-2007-0555). - This error can easily be exploited to cause a backend crash, and in - principle might be used to read database content that the user - should not be able to access. - </para> - </listitem> - - <listitem> - <para> - Fix rare bug wherein btree index page splits could fail - due to choosing an infeasible split point (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix for rare Assert() crash triggered by <literal>UNION</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Tighten security of multi-byte character processing for UTF8 sequences - over three bytes long (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-15"> - <title>Release 7.4.15</title> - - <formalpara> - <title>Release date:</title> - <para>2007-01-08</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.14. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.15</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Improve handling of <function>getaddrinfo()</> on AIX (Tom) - </para> - - <para> - This fixes a problem with starting the statistics collector, - among other things. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>failed to re-find parent key</> errors in - <command>VACUUM</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bugs affecting multi-gigabyte hash indexes (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix error when constructing an <literal>ARRAY[]</> made up of multiple - empty elements (Tom) - </para> - </listitem> - - <listitem> - <para> - <function>to_number()</> and <function>to_char(numeric)</> - are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for - new <application>initdb</> installs (Tom) - </para> - - <para> - This is because <varname>lc_numeric</> can potentially - change the output of these functions. - </para> - </listitem> - - <listitem> - <para> - Improve index usage of regular expressions that use parentheses (Tom) - </para> - - <para> - This improves <application>psql</> <literal>\d</> performance also. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-14"> - <title>Release 7.4.14</title> - - <formalpara> - <title>Release date:</title> - <para>2006-10-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.13. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.14</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Fix core dump when an untyped literal is taken as -ANYARRAY</para></listitem> -<listitem><para>Fix <function>string_to_array()</> to handle overlapping - matches for the separator string</para> -<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>. -</para></listitem> -<listitem><para>Fix corner cases in pattern matching for - <application>psql</>'s <literal>\d</> commands</para></listitem> -<listitem><para>Fix index-corrupting bugs in /contrib/ltree - (Teodor)</para></listitem> -<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem> -<listitem><para>Adjust regression tests for recent changes in US DST laws -</para> </listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-13"> - <title>Release 7.4.13</title> - - <formalpara> - <title>Release date:</title> - <para>2006-05-23</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.12, - including patches for extremely serious security issues. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.13</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - - <para> - Full security against the SQL-injection attacks described in - CVE-2006-2313 and CVE-2006-2314 might require changes in application - code. If you have applications that embed untrustworthy strings - into SQL commands, you should examine them as soon as possible to - ensure that they are using recommended escaping techniques. In - most cases, applications should be using subroutines provided by - libraries or drivers (such as <application>libpq</>'s - <function>PQescapeStringConn()</>) to perform string escaping, - rather than relying on <foreignphrase>ad hoc</> code to do it. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Change the server to reject invalidly-encoded multibyte -characters in all cases (Tatsuo, Tom)</para> -<para>While <productname>PostgreSQL</> has been moving in this direction for -some time, the checks are now applied uniformly to all encodings and all -textual input, and are now always errors not merely warnings. This change -defends against SQL-injection attacks of the type described in CVE-2006-2313. -</para></listitem> - -<listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para> -<para>As a server-side defense against SQL-injection attacks of the type -described in CVE-2006-2314, the server now only accepts <literal>''</> and not -<literal>\'</> as a representation of ASCII single quote in SQL string -literals. By default, <literal>\'</> is rejected only when -<varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK, -GB18030, or UHC), which is the scenario in which SQL injection is possible. -A new configuration parameter <varname>backslash_quote</> is available to -adjust this behavior when needed. Note that full security against -CVE-2006-2314 might require client-side changes; the purpose of -<varname>backslash_quote</> is in part to make it obvious that insecure -clients are insecure. -</para></listitem> - -<listitem><para>Modify <application>libpq</>'s string-escaping routines to be -aware of encoding considerations and -<varname>standard_conforming_strings</></para> -<para>This fixes <application>libpq</>-using applications for the security -issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs -them against the planned changeover to SQL-standard string literal syntax. -Applications that use multiple <productname>PostgreSQL</> connections -concurrently should migrate to <function>PQescapeStringConn()</> and -<function>PQescapeByteaConn()</> to ensure that escaping is done correctly -for the settings in use in each database connection. Applications that -do string escaping <quote>by hand</> should be modified to rely on library -routines instead. -</para></listitem> - -<listitem><para>Fix some incorrect encoding conversion functions</para> -<para><function>win1251_to_iso</>, <function>alt_to_iso</>, -<function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>, -<function>mic_to_euc_tw</> were all broken to varying -extents. -</para></listitem> - -<listitem><para>Clean up stray remaining uses of <literal>\'</> in strings -(Bruce, Jan)</para></listitem> - -<listitem><para>Fix bug that sometimes caused OR'd index scans to -miss rows they should have returned</para></listitem> - -<listitem><para>Fix WAL replay for case where a btree index has been -truncated</para></listitem> - -<listitem><para>Fix <literal>SIMILAR TO</> for patterns involving -<literal>|</> (Tom)</para></listitem> - -<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael -Fuhr)</para></listitem> - -<listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)</para></listitem> - -<listitem><para>Fix various minor memory leaks</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-12"> - <title>Release 7.4.12</title> - - <formalpara> - <title>Release date:</title> - <para>2006-02-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.11. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.12</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, - see <xref linkend="release-7-4-11">. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> - -<listitem><para>Fix potential crash in <command>SET -SESSION AUTHORIZATION</> (CVE-2006-0553)</para> -<para>An unprivileged user could crash the server process, resulting in -momentary denial of service to other users, if the server has been compiled -with Asserts enabled (which is not the default). -Thanks to Akio Ishida for reporting this problem. -</para></listitem> - -<listitem><para>Fix bug with row visibility logic in self-inserted -rows (Tom)</para> -<para>Under rare circumstances a row inserted by the current command -could be seen as already valid, when it should not be. Repairs bug -created in 7.4.9 and 7.3.11 releases. -</para></listitem> - -<listitem><para>Fix race condition that could lead to <quote>file already -exists</> errors during pg_clog file creation -(Tom)</para></listitem> - -<listitem><para>Properly check <literal>DOMAIN</> constraints for -<literal>UNKNOWN</> parameters in prepared statements -(Neil)</para></listitem> - -<listitem><para>Fix to allow restoring dumps that have cross-schema -references to custom operators (Tom)</para></listitem> - -<listitem><para>Portability fix for testing presence of <function>finite</> -and <function>isinf</> during configure (Tom)</para></listitem> - -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-11"> - <title>Release 7.4.11</title> - - <formalpara> - <title>Release date:</title> - <para>2006-01-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.10. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.11</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.8, - see <xref linkend="release-7-4-8">. - Also, you might need to <command>REINDEX</> indexes on textual - columns after updating, if you are affected by the locale or - <application>plperl</> issues described below. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> - -<listitem><para>Fix for protocol-level Describe messages issued -outside a transaction or in a failed transaction (Tom)</para></listitem> - -<listitem><para>Fix character string comparison for locales that consider -different character combinations as equal, such as Hungarian (Tom)</para> -<para>This might require <command>REINDEX</> to fix existing indexes on -textual columns.</para></listitem> - -<listitem><para>Set locale environment variables during postmaster startup -to ensure that <application>plperl</> won't change the locale later</para> -<para>This fixes a problem that occurred if the <application>postmaster</> was -started with environment variables specifying a different locale than what -<application>initdb</> had been told. Under these conditions, any use of -<application>plperl</> was likely to lead to corrupt indexes. You might need -<command>REINDEX</> to fix existing indexes on -textual columns if this has happened to you.</para></listitem> - -<listitem><para>Fix longstanding bug in strpos() and regular expression -handling in certain rarely used Asian multi-byte character sets (Tatsuo) -</para></listitem> - -<listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt, -which caused it not to use all available salt space for MD5 and -XDES algorithms (Marko Kreen, Solar Designer)</para> -<para>Salts for Blowfish and standard DES are unaffected.</para></listitem> - -<listitem><para>Fix <filename>/contrib/dblink</> to throw an error, -rather than crashing, when the number of columns specified is different from -what's actually returned by the query (Joe)</para></listitem> - -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-10"> - <title>Release 7.4.10</title> - - <formalpara> - <title>Release date:</title> - <para>2005-12-12</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.9. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.10</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.8, - see <xref linkend="release-7-4-8">. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> - -<listitem><para>Fix race condition in transaction log management</para> -<para>There was a narrow window in which an I/O operation could be initiated -for the wrong page, leading to an Assert failure or data -corruption.</para> -</listitem> - -<listitem><para>Prevent failure if client sends Bind protocol message -when current transaction is already aborted</para></listitem> - -<listitem><para><filename>/contrib/ltree</> fixes (Teodor)</para></listitem> - -<listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem> - -<listitem><para>Fix longstanding planning error for outer joins</para> -<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is -only supported with merge-joinable join conditions</>.</para></listitem> - -<listitem><para>Prevent core dump in <application>pg_autovacuum</> when a -table has been dropped</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-9"> - <title>Release 7.4.9</title> - - <formalpara> - <title>Release date:</title> - <para>2005-10-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.8. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.9</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.8, - see <xref linkend="release-7-4-8">. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Fix error that allowed <command>VACUUM</> to remove -<literal>ctid</> chains too soon, and add more checking in code that follows -<literal>ctid</> links</para> -<para>This fixes a long-standing problem that could cause crashes in very rare -circumstances.</para></listitem> -<listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified -length when using a multiple-byte character set (Yoshiyuki Asaba)</para> -<para>In prior releases, the padding of <type>CHAR()</> was incorrect -because it only padded to the specified number of bytes without -considering how many characters were stored.</para></listitem> -<listitem><para>Fix the sense of the test for read-only transaction -in <command>COPY</></para> -<para>The code formerly prohibited <command>COPY TO</>, where it should -prohibit <command>COPY FROM</>. -</para></listitem> -<listitem><para>Fix planning problem with outer-join ON clauses that reference -only the inner-side relation</para></listitem> -<listitem><para>Further fixes for <literal>x FULL JOIN y ON true</> corner -cases</para></listitem> -<listitem><para>Make <function>array_in</> and <function>array_recv</> more -paranoid about validating their OID parameter</para></listitem> -<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE -a...</> with GiST index on column <literal>a</></para></listitem> -<listitem><para>Improve robustness of datetime parsing</para></listitem> -<listitem><para>Improve checking for partially-written WAL -pages</para></listitem> -<listitem><para>Improve robustness of signal handling when SSL is -enabled</para></listitem> -<listitem><para>Don't try to open more than <literal>max_files_per_process</> -files during postmaster startup</para></listitem> -<listitem><para>Various memory leakage fixes</para></listitem> -<listitem><para>Various portability improvements</para></listitem> -<listitem><para>Fix PL/pgSQL to handle <literal>var := var</> correctly when -the variable is of pass-by-reference type</para></listitem> -<listitem><para>Update <filename>contrib/tsearch2</> to use current Snowball -code</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-8"> - <title>Release 7.4.8</title> - - <formalpara> - <title>Release date:</title> - <para>2005-05-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.7, including several - security-related issues. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.8</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - it is one possible way of handling two significant security problems - that have been found in the initial contents of 7.4.X system - catalogs. A dump/initdb/reload sequence using 7.4.8's initdb will - automatically correct these problems. - </para> - - <para> - The larger security problem is that the built-in character set encoding - conversion functions can be invoked from SQL commands by unprivileged - users, but the functions were not designed for such use and are not - secure against malicious choices of arguments. The fix involves changing - the declared parameter list of these functions so that they can no longer - be invoked from SQL commands. (This does not affect their normal use - by the encoding conversion machinery.) - </para> - - <para> - The lesser problem is that the <filename>contrib/tsearch2</> module - creates several functions that are misdeclared to return - <type>internal</> when they do not accept <type>internal</> arguments. - This breaks type safety for all functions using <type>internal</> - arguments. - </para> - - <para> - It is strongly recommended that all installations repair these errors, - either by initdb or by following the manual repair procedures given - below. The errors at least allow unprivileged database users to crash - their server process, and might allow unprivileged users to gain the - privileges of a database superuser. - </para> - - <para> - If you wish not to do an initdb, perform the following procedures instead. - As the database superuser, do: - -<programlisting> -BEGIN; -UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype -WHERE pronamespace = 11 AND pronargs = 5 - AND proargtypes[2] = 'cstring'::regtype; --- The command should report having updated 90 rows; --- if not, rollback and investigate instead of committing! -COMMIT; -</programlisting> - - Next, if you have installed <filename>contrib/tsearch2</>, do: - -<programlisting> -BEGIN; -UPDATE pg_proc SET proargtypes[0] = 'internal'::regtype -WHERE oid IN ( - 'dex_init(text)'::regprocedure, - 'snb_en_init(text)'::regprocedure, - 'snb_ru_init(text)'::regprocedure, - 'spell_init(text)'::regprocedure, - 'syn_init(text)'::regprocedure -); --- The command should report having updated 5 rows; --- if not, rollback and investigate instead of committing! -COMMIT; -</programlisting> - - If this command fails with a message like <quote>function - "dex_init(text)" does not exist</>, then either <filename>tsearch2</> - is not installed in this database, or you already did the update. - </para> - - <para> - The above procedures must be carried out in <emphasis>each</> database - of an installation, including <literal>template1</>, and ideally - including <literal>template0</> as well. If you do not fix the - template databases then any subsequently created databases will contain - the same errors. <literal>template1</> can be fixed in the same way - as any other database, but fixing <literal>template0</> requires - additional steps. First, from any database issue: -<programlisting> -UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; -</programlisting> - Next connect to <literal>template0</> and perform the above repair - procedures. Finally, do: -<programlisting> --- re-freeze template0: -VACUUM FREEZE; --- and protect it against future alterations: -UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; -</programlisting> - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Change encoding function signature to prevent -misuse</para></listitem> -<listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of -<type>INTERNAL</> function results</para></listitem> -<listitem><para>Repair ancient race condition that allowed a transaction to be -seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner -than for other purposes</para> -<para>This is an extremely serious bug since it could lead to apparent -data inconsistencies being briefly visible to applications.</para></listitem> -<listitem><para>Repair race condition between relation extension and -VACUUM</para> -<para>This could theoretically have caused loss of a page's worth of -freshly-inserted data, although the scenario seems of very low probability. -There are no known cases of it having caused more than an Assert failure. -</para></listitem> -<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para> -<para> -The comparison code was wrong in the case where the -<literal>--enable-integer-datetimes</> configuration switch had been used. -NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column, -it will need to be <command>REINDEX</>ed after installing this update, because -the fix corrects the sort order of column values. -</para></listitem> -<listitem><para>Fix <function>EXTRACT(EPOCH)</> for -<type>TIME WITH TIME ZONE</> values</para></listitem> -<listitem><para>Fix mis-display of negative fractional seconds in -<type>INTERVAL</> values</para> -<para> -This error only occurred when the -<literal>--enable-integer-datetimes</> configuration switch had been used. -</para></listitem> -<listitem><para>Ensure operations done during backend shutdown are counted by -statistics collector</para> -<para> -This is expected to resolve reports of <application>pg_autovacuum</> -not vacuuming the system catalogs often enough — it was not being -told about catalog deletions caused by temporary table removal during -backend exit. -</para></listitem> -<listitem><para>Additional buffer overrun checks in plpgsql -(Neil)</para></listitem> -<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</> -correctly (Neil)</para></listitem> -<listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds -(Marko Kreen)</para></listitem> -<listitem><para>Still more 64-bit fixes for -<filename>contrib/intagg</></para></listitem> -<listitem><para>Prevent incorrect optimization of functions returning -<type>RECORD</></para></listitem> -<listitem><para>Prevent <function>to_char(interval)</> from dumping core for -month-related formats</para></listitem> -<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem> -<listitem><para>Fix <function>array_map</> to call PL functions correctly</para></listitem> -<listitem><para>Fix permission checking in <command>ALTER DATABASE RENAME</></para></listitem> -<listitem><para>Fix <command>ALTER LANGUAGE RENAME</></para></listitem> -<listitem><para>Make <function>RemoveFromWaitQueue</> clean up after itself</para> -<para> -This fixes a lock management error that would only be visible if a transaction -was kicked out of a wait for a lock (typically by query cancel) and then the -holder of the lock released it within a very narrow window. -</para></listitem> -<listitem><para>Fix problem with untyped parameter appearing in -<command>INSERT ... SELECT</></para></listitem> -<listitem><para>Fix <command>CLUSTER</> failure after -<command>ALTER TABLE SET WITHOUT OIDS</></para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-7"> - <title>Release 7.4.7</title> - - <formalpara> - <title>Release date:</title> - <para>2005-01-31</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.6, including several - security-related issues. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - <sect2> - <title>Migration to Version 7.4.7</title> - - <para> - A dump/restore is not required for those running 7.4.X. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Disallow <command>LOAD</> to non-superusers</para> -<para> -On platforms that will automatically execute initialization functions of a -shared library (this includes at least Windows and ELF-based Unixen), -<command>LOAD</> can be used to make the server execute arbitrary code. -Thanks to NGS Software for reporting this.</para></listitem> -<listitem><para>Check that creator of an aggregate function has the right to -execute the specified transition functions</para> -<para> -This oversight made it possible to bypass denial of EXECUTE -permission on a function.</para></listitem> -<listitem><para>Fix security and 64-bit issues in -contrib/intagg</para></listitem> -<listitem><para>Add needed STRICT marking to some contrib functions (Kris -Jurka)</para></listitem> -<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too -many parameters (Neil)</para></listitem> -<listitem><para>Fix planning error for FULL and RIGHT outer joins</para> -<para> -The result of the join was mistakenly supposed to be sorted the same as the -left input. This could not only deliver mis-sorted output to the user, but -in case of nested merge joins could give outright wrong answers. -</para></listitem> -<listitem><para>Fix plperl for quote marks in tuple fields</para></listitem> -<listitem><para>Fix display of negative intervals in SQL and GERMAN -datestyles</para></listitem> -<listitem><para>Make age(timestamptz) do calculation in local timezone not -GMT</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-6"> - <title>Release 7.4.6</title> - - <formalpara> - <title>Release date:</title> - <para>2004-10-22</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.5. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - - <sect2> - <title>Migration to Version 7.4.6</title> - - <para> - A dump/restore is not required for those running 7.4.X. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Repair possible failure to update hint bits on disk</para> -<para> -Under rare circumstances this oversight could lead to -<quote>could not access transaction status</> failures, which qualifies -it as a potential-data-loss bug. -</para></listitem> -<listitem><para>Ensure that hashed outer join does not miss tuples</para> -<para> -Very large left joins using a hash join plan could fail to output unmatched -left-side rows given just the right data distribution. -</para></listitem> -<listitem><para>Disallow running <application>pg_ctl</> as root</para> -<para> -This is to guard against any possible security issues. -</para></listitem> -<listitem><para>Avoid using temp files in <filename>/tmp</> in <command>make_oidjoins_check</command></para> -<para> -This has been reported as a security issue, though it's hardly worthy of -concern since there is no reason for non-developers to use this script anyway. -</para></listitem> -<listitem><para>Prevent forced backend shutdown from re-emitting prior command -result</para> -<para> -In rare cases, a client might think that its last command had succeeded when -it really had been aborted by forced database shutdown. -</para></listitem> -<listitem><para>Repair bug in <function>pg_stat_get_backend_idset</function></para> -<para> -This could lead to misbehavior in some of the system-statistics views. -</para></listitem> -<listitem><para>Fix small memory leak in postmaster</para></listitem> -<listitem><para>Fix <quote>expected both swapped tables to have TOAST -tables</> bug</para> -<para> -This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN. -</para></listitem> -<listitem><para>Prevent <literal>pg_ctl restart</> from adding <literal>-D</> multiple times</para></listitem> -<listitem><para>Fix problem with NULL values in GiST indexes</para></listitem> -<listitem><para><literal>::</> is no longer interpreted as a variable in an -ECPG prepare statement</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-5"> - <title>Release 7.4.5</title> - - <formalpara> - <title>Release date:</title> - <para>2004-08-18</para> - </formalpara> - - <para> - This release contains one serious bug fix over 7.4.4. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - - <sect2> - <title>Migration to Version 7.4.5</title> - - <para> - A dump/restore is not required for those running 7.4.X. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Repair possible crash during concurrent B-tree index insertions</para> -<para> -This patch fixes a rare case in which concurrent insertions into a B-tree index -could result in a server panic. No permanent damage would result, but it's -still worth a re-release. The bug does not exist in pre-7.4 releases. -</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-4"> - <title>Release 7.4.4</title> - - <formalpara> - <title>Release date:</title> - <para>2004-08-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.3. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - - <sect2> - <title>Migration to Version 7.4.4</title> - - <para> - A dump/restore is not required for those running 7.4.X. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Prevent possible loss of committed transactions during crash</para> -<para> -Due to insufficient interlocking between transaction commit and checkpointing, -it was possible for transactions committed just before the most recent -checkpoint to be lost, in whole or in part, following a database crash and -restart. This is a serious bug that has existed -since <productname>PostgreSQL</productname> 7.1. -</para></listitem> -<listitem><para>Check HAVING restriction before evaluating result list of an -aggregate plan</para></listitem> -<listitem><para>Avoid crash when session's current user ID is deleted</para></listitem> -<listitem><para>Fix hashed crosstab for zero-rows case (Joe)</para></listitem> -<listitem><para>Force cache update after renaming a column in a foreign key</para></listitem> -<listitem><para>Pretty-print UNION queries correctly</para></listitem> -<listitem><para>Make psql handle <literal>\r\n</> newlines properly in COPY IN</para></listitem> -<listitem><para><application>pg_dump</> handled ACLs with grant options incorrectly</para></listitem> -<listitem><para>Fix thread support for OS X and Solaris</para></listitem> -<listitem><para>Updated JDBC driver (build 215) with various fixes</para></listitem> -<listitem><para>ECPG fixes</para></listitem> -<listitem><para>Translation updates (various contributors)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-3"> - <title>Release 7.4.3</title> - - <formalpara> - <title>Release date:</title> - <para>2004-06-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.2. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - - <sect2> - <title>Migration to Version 7.4.3</title> - - <para> - A dump/restore is not required for those running 7.4.X. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Fix temporary memory leak when using non-hashed aggregates (Tom)</para></listitem> -<listitem><para>ECPG fixes, including some for Informix compatibility (Michael)</para></listitem> -<listitem><para>Fixes for compiling with thread-safety, particularly Solaris (Bruce)</para></listitem> -<listitem><para>Fix error in COPY IN termination when using the old network protocol (ljb)</para></listitem> -<listitem><para>Several important fixes in pg_autovacuum, including fixes for -large tables, unsigned oids, stability, temp tables, and debug mode -(Matthew T. O'Connor)</para></listitem> -<listitem><para>Fix problem with reading tar-format dumps on NetBSD and BSD/OS (Bruce)</para></listitem> -<listitem><para>Several JDBC fixes</para></listitem> -<listitem><para>Fix ALTER SEQUENCE RESTART where last_value equals the restart value (Tom)</para></listitem> -<listitem><para>Repair failure to recalculate nested sub-selects (Tom)</para></listitem> -<listitem><para>Fix problems with non-constant expressions in LIMIT/OFFSET</para></listitem> -<listitem><para>Support FULL JOIN with no join clause, such as X FULL JOIN Y ON TRUE (Tom)</para></listitem> -<listitem><para>Fix another zero-column table bug (Tom)</para></listitem> -<listitem><para>Improve handling of non-qualified identifiers in GROUP BY clauses in sub-selects (Tom)</para> -<para> -Select-list aliases within the sub-select will now take precedence over -names from outer query levels. -</para></listitem> -<listitem><para>Do not generate <quote>NATURAL CROSS JOIN</> when decompiling rules (Tom)</para></listitem> -<listitem><para>Add checks for invalid field length in binary COPY (Tom)</para> -<para> - This fixes a difficult-to-exploit security hole. -</para></listitem> -<listitem><para>Avoid locking conflict between <command>ANALYZE</command> and <command>LISTEN</command>/<command>NOTIFY</command></para></listitem> -<listitem><para>Numerous translation updates (various contributors)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-2"> - <title>Release 7.4.2</title> - - <formalpara> - <title>Release date:</title> - <para>2004-03-08</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4.1. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - - <sect2> - <title>Migration to Version 7.4.2</title> - - <para> - A dump/restore is not required for those running 7.4.X. However, - it might be advisable as the easiest method of incorporating fixes for - two errors that have been found in the initial contents of 7.4.X system - catalogs. A dump/initdb/reload sequence using 7.4.2's initdb will - automatically correct these problems. - </para> - - <para> - The more severe of the two errors is that data type <type>anyarray</> - has the wrong alignment label; this is a problem because the - <structname>pg_statistic</> system catalog uses <type>anyarray</> - columns. The mislabeling can cause planner misestimations and even - crashes when planning queries that involve <literal>WHERE</> clauses on - double-aligned columns (such as <type>float8</> and <type>timestamp</>). - It is strongly recommended that all installations repair this error, - either by initdb or by following the manual repair procedure given - below. - </para> - - <para> - The lesser error is that the system view <structname>pg_settings</> - ought to be marked as having public update access, to allow - <literal>UPDATE pg_settings</> to be used as a substitute for - <command>SET</>. This can also be fixed either by initdb or manually, - but it is not necessary to fix unless you want to use <literal>UPDATE - pg_settings</>. - </para> - - <para> - If you wish not to do an initdb, the following procedure will work - for fixing <structname>pg_statistic</>. As the database superuser, - do: - -<programlisting> --- clear out old data in pg_statistic: -DELETE FROM pg_statistic; -VACUUM pg_statistic; --- this should update 1 row: -UPDATE pg_type SET typalign = 'd' WHERE oid = 2277; --- this should update 6 rows: -UPDATE pg_attribute SET attalign = 'd' WHERE atttypid = 2277; --- --- At this point you MUST start a fresh backend to avoid a crash! --- --- repopulate pg_statistic: -ANALYZE; -</programlisting> - - This can be done in a live database, but beware that all backends - running in the altered database must be restarted before it is safe to - repopulate <structname>pg_statistic</>. - </para> - - <para> - To repair the <structname>pg_settings</> error, simply do: -<programlisting> -GRANT SELECT, UPDATE ON pg_settings TO PUBLIC; -</programlisting> - </para> - - <para> - The above procedures must be carried out in <emphasis>each</> database - of an installation, including <literal>template1</>, and ideally - including <literal>template0</> as well. If you do not fix the - template databases then any subsequently created databases will contain - the same errors. <literal>template1</> can be fixed in the same way - as any other database, but fixing <literal>template0</> requires - additional steps. First, from any database issue: -<programlisting> -UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; -</programlisting> - Next connect to <literal>template0</> and perform the above repair - procedures. Finally, do: -<programlisting> --- re-freeze template0: -VACUUM FREEZE; --- and protect it against future alterations: -UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; -</programlisting> - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<para> - Release 7.4.2 incorporates all the fixes included in release 7.3.6, - plus the following fixes: -</para> - -<itemizedlist> -<listitem><para>Fix <structname>pg_statistics</> alignment bug that could crash optimizer</para> -<para>See above for details about this problem.</para></listitem> -<listitem><para>Allow non-super users to update <structname>pg_settings</></para></listitem> -<listitem><para>Fix several optimizer bugs, most of which led to -<quote>variable not found in subplan target lists</> errors</para></listitem> -<listitem><para>Avoid out-of-memory failure during startup of large multiple -index scan</para></listitem> -<listitem><para>Fix multibyte problem that could lead to <quote>out of -memory</> error during <command>COPY IN</></para></listitem> -<listitem><para>Fix problems with <command>SELECT INTO</> / <command>CREATE -TABLE AS</> from tables without OIDs</para></listitem> -<listitem><para>Fix problems with <filename>alter_table</> regression test -during parallel testing</para></listitem> -<listitem><para>Fix problems with hitting open file limit, especially on OS X (Tom)</para></listitem> -<listitem><para>Partial fix for Turkish-locale issues</para> -<para>initdb will succeed now in Turkish locale, but there are still some -inconveniences associated with the <literal>i/I</> problem.</para></listitem> -<listitem><para>Make pg_dump set client encoding on restore</para></listitem> -<listitem><para>Other minor pg_dump fixes</para></listitem> -<listitem><para>Allow ecpg to again use C keywords as column names (Michael)</para></listitem> -<listitem><para>Added ecpg <literal>WHENEVER NOT_FOUND</> to -<literal>SELECT/INSERT/UPDATE/DELETE</> (Michael)</para></listitem> -<listitem><para>Fix ecpg crash for queries calling set-returning functions (Michael)</para></listitem> -<listitem><para>Various other ecpg fixes (Michael)</para></listitem> -<listitem><para>Fixes for Borland compiler</para></listitem> -<listitem><para>Thread build improvements (Bruce)</para></listitem> -<listitem><para>Various other build fixes</para></listitem> -<listitem><para>Various JDBC fixes</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-7-4-1"> - <title>Release 7.4.1</title> - - <formalpara> - <title>Release date:</title> - <para>2003-12-22</para> - </formalpara> - - <para> - This release contains a variety of fixes from 7.4. - For information about new features in the 7.4 major release, see - <xref linkend="release-7-4">. - </para> - - - <sect2> - <title>Migration to Version 7.4.1</title> - - <para> - A dump/restore is <emphasis>not</emphasis> required for those - running 7.4. - </para> - - <para> - If you want to install the fixes in the information schema - you need to reload it into the database. - This is either accomplished by initializing a new cluster - by running <command>initdb</command>, or by running the following - sequence of SQL commands in each database (ideally including - <literal>template1</literal>) as a superuser in - <application>psql</application>, after installing the new release: -<programlisting> -DROP SCHEMA information_schema CASCADE; -\i /usr/local/pgsql/share/information_schema.sql -</programlisting> - Substitute your installation path in the second command. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Fixed bug in <command>CREATE SCHEMA</command> parsing in ECPG (Michael)</para></listitem> -<listitem><para>Fix compile error when <option>--enable-thread-safety</option> and <option>--with-perl</option> are used together (Peter)</para></listitem> -<listitem><para>Fix for subqueries that used hash joins (Tom)</para> -<para> - Certain subqueries that used hash joins would crash because of - improperly shared structures. -</para></listitem> -<listitem><para>Fix free space map compaction bug (Tom)</para> -<para> - This fixes a bug where compaction of the free space map could lead - to a database server shutdown. -</para> -</listitem> -<listitem><para>Fix for Borland compiler build of libpq (Bruce)</para></listitem> -<listitem><para>Fix <function>netmask()</function> and <function>hostmask()</function> to return the maximum-length masklen (Tom)</para> -<para> - Fix these functions to return values consistent with pre-7.4 - releases. -</para> -</listitem> -<listitem><para>Several <filename>contrib/pg_autovacuum</filename> fixes</para> -<para> - Fixes include improper variable initialization, missing vacuum after - <command>TRUNCATE</command>, and duration computation overflow for long vacuums. -</para> -</listitem> -<listitem><para>Allow compile of <filename>contrib/cube</filename> under Cygwin (Jason Tishler)</para></listitem> -<listitem><para>Fix Solaris use of password file when no passwords are defined (Tom)</para> -<para> - Fix crash on Solaris caused by use of any type of password - authentication when no passwords were defined. -</para> -</listitem> -<listitem><para>JDBC fix for thread problems, other fixes</para></listitem> -<listitem><para>Fix for <type>bytea</type> index lookups (Joe)</para></listitem> -<listitem><para>Fix information schema for bit data types (Peter)</para></listitem> -<listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem> -<listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem> -<listitem><para>Make <function>PQescapeBytea</function> and <function>byteaout</function> consistent with each other (Joe)</para></listitem> -<listitem><para>Escape <type>bytea</type> output for bytes > 0x7e(Joe)</para> -<para> - If different client encodings are used for <type>bytea</type> output and input, it - is possible for <type>bytea</type> values to be corrupted by the differing - encodings. This fix escapes all bytes that might be affected. -</para> -</listitem> -<listitem><para>Added missing <function>SPI_finish()</function> calls to dblink's <function>get_tuple_of_interest()</function> (Joe)</para></listitem> -<listitem><para>New Czech FAQ</para></listitem> -<listitem><para>Fix information schema view <literal>constraint_column_usage</literal> for foreign keys (Peter)</para></listitem> -<listitem><para>ECPG fixes (Michael)</para></listitem> -<listitem><para>Fix bug with multiple <literal>IN</literal> subqueries and joins in the subqueries (Tom)</para></listitem> -<listitem><para>Allow <literal>COUNT('x')</literal> to work (Tom)</para></listitem> -<listitem><para>Install ECPG include files for Informix compatibility into separate directory (Peter)</para> -<para> - Some names of ECPG include files for Informix compatibility conflicted with operating system include files. - By installing them in their own directory, name conflicts have been reduced. -</para> -</listitem> -<listitem><para>Fix SSL memory leak (Neil)</para> -<para> - This release fixes a bug in 7.4 where SSL didn't free all memory it allocated. -</para> -</listitem> -<listitem><para>Prevent <filename>pg_service.conf</filename> from using service name as default dbname (Bruce)</para></listitem> -<listitem><para>Fix local ident authentication on FreeBSD (Tom)</para></listitem> -</itemizedlist> - - </sect2> -</sect1> - -<sect1 id="release-7-4"> - <title>Release 7.4</title> - - <formalpara> - <title>Release date:</title> - <para>2003-11-17</para> - </formalpara> - - <sect2> - <title>Overview</title> - - <para> - Major changes in this release: - </para> - - <variablelist> - <varlistentry> - <term> - <literal>IN</literal> / <literal>NOT IN</literal> subqueries are - now much more efficient - </term> - - <listitem> - <para> - In previous releases, <literal>IN</literal>/<literal>NOT - IN</literal> subqueries were joined to the upper query by - sequentially scanning the subquery looking for a match. The - 7.4 code uses the same sophisticated techniques used by - ordinary joins and so is much faster. An - <literal>IN</literal> will now usually be as fast as or faster - than an equivalent <literal>EXISTS</literal> subquery; this - reverses the conventional wisdom that applied to previous - releases. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Improved <literal>GROUP BY</literal> processing by using hash buckets - </term> - - <listitem> - <para> - In previous releases, rows to be grouped had to be sorted - first. The 7.4 code can do <literal>GROUP BY</literal> - without sorting, by accumulating results into a hash table - with one entry per group. It will still use the sort - technique, however, if the hash table is estimated to be too - large to fit in <varname>sort_mem</>. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - New multikey hash join capability - </term> - - <listitem> - <para> - In previous releases, hash joins could only occur on single - keys. This release allows multicolumn hash joins. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Queries using the explicit <literal>JOIN</literal> syntax are - now better optimized - </term> - - <listitem> - <para> - Prior releases evaluated queries using the explicit - <literal>JOIN</literal> syntax only in the order implied by - the syntax. 7.4 allows full optimization of these queries, - meaning the optimizer considers all possible join orderings - and chooses the most efficient. Outer joins, however, must - still follow the declared ordering. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Faster and more powerful regular expression code - </term> - - <listitem> - <para> - The entire regular expression module has been replaced with a - new version by Henry Spencer, originally written for Tcl. The - code greatly improves performance and supports several flavors - of regular expressions. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Function-inlining for simple SQL functions - </term> - - <listitem> - <para> - Simple SQL functions can now be inlined by including their SQL - in the main query. This improves performance by eliminating - per-call overhead. That means simple SQL functions now - behave like macros. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Full support for IPv6 connections and IPv6 address data types - </term> - - <listitem> - <para> - Previous releases allowed only IPv4 connections, and the IP - data types only supported IPv4 addresses. This release adds - full IPv6 support in both of these areas. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Major improvements in SSL performance and reliability - </term> - - <listitem> - <para> - Several people very familiar with the SSL API have overhauled - our SSL code to improve SSL key negotiation and error - recovery. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Make free space map efficiently reuse empty index pages, - and other free space management improvements - </term> - - <listitem> - <para> - In previous releases, B-tree index pages that were left empty - because of deleted rows could only be reused by rows with - index values similar to the rows originally indexed on that - page. In 7.4, <command>VACUUM</command> records empty index - pages and allows them to be reused for any future index rows. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - SQL-standard information schema - </term> - - <listitem> - <para> - The information schema provides a standardized and stable way - to access information about the schema objects defined in a - database. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Cursors conform more closely to the SQL standard - </term> - - <listitem> - <para> - The commands <command>FETCH</command> and - <command>MOVE</command> have been overhauled to conform more - closely to the SQL standard. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Cursors can exist outside transactions - </term> - - <listitem> - <para> - These cursors are also called holdable cursors. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - New client-to-server protocol - </term> - - <listitem> - <para> - The new protocol adds error codes, more status information, - faster startup, better support for binary data transmission, - parameter values separated from SQL commands, prepared - statements available at the protocol level, and cleaner - recovery from <command>COPY</command> failures. The older - protocol is still supported by both server and clients. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - <application>libpq</application> and - <application>ECPG</application> applications are now fully - thread-safe - </term> - - <listitem> - <para> - While previous <application>libpq</application> releases - already supported threads, this release improves thread safety - by fixing some non-thread-safe code that was used during - database connection startup. The <command>configure</command> - option <option>--enable-thread-safety</option> must be used to - enable this feature. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - New version of full-text indexing - </term> - - <listitem> - <para> - A new full-text indexing suite is available in - <filename>contrib/tsearch2</filename>. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - New autovacuum tool - </term> - - <listitem> - <para> - The new autovacuum tool in - <filename>contrib/autovacuum</filename> monitors the database - statistics tables for - <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command> - activity and automatically vacuums tables when needed. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Array handling has been improved and moved into the server core - </term> - - <listitem> - <para> - Many array limitations have been removed, and arrays behave - more like fully-supported data types. - </para> - </listitem> - </varlistentry> - - </variablelist> - </sect2> - - <sect2> - <title>Migration to Version 7.4</title> - - <para> - A dump/restore using <application>pg_dump</application> is - required for those wishing to migrate data from any previous - release. - </para> - - <para> - Observe the following incompatibilities: - </para> - - <itemizedlist> - <listitem> - <para> - The server-side autocommit setting was removed and - reimplemented in client applications and languages. - Server-side autocommit was causing too many problems with - languages and applications that wanted to control their own - autocommit behavior, so autocommit was removed from the server - and added to individual client APIs as appropriate. - </para> - </listitem> - - <listitem> - <para> - Error message wording has changed substantially in this - release. Significant effort was invested to make the messages - more consistent and user-oriented. If your applications try to - detect different error conditions by parsing the error message, - you are strongly encouraged to use the new error code facility instead. - </para> - </listitem> - - <listitem> - <para> - Inner joins using the explicit <literal>JOIN</literal> syntax - might behave differently because they are now better - optimized. - </para> - </listitem> - - <listitem> - <para> - A number of server configuration parameters have been renamed - for clarity, primarily those related to - logging. - </para> - </listitem> - - <listitem> - <para> - <literal>FETCH 0</literal> or <literal>MOVE 0</literal> now - does nothing. In prior releases, <literal>FETCH 0</literal> - would fetch all remaining rows, and <literal>MOVE 0</literal> - would move to the end of the cursor. - </para> - </listitem> - - <listitem> - <para> - <command>FETCH</command> and <command>MOVE</command> now return - the actual number of rows fetched/moved, or zero if at the - beginning/end of the cursor. Prior releases would return the - row count passed to the command, not the number of rows - actually fetched or moved. - </para> - </listitem> - - <listitem> - <para> - <command>COPY</command> now can process files that use - carriage-return or carriage-return/line-feed end-of-line - sequences. Literal carriage-returns and line-feeds are no - longer accepted in data values; use <literal>\r</literal> and - <literal>\n</literal> instead. - </para> - </listitem> - - <listitem> - <para> - Trailing spaces are now trimmed when converting from type - <type>char(<replaceable>n</>)</type> to - <type>varchar(<replaceable>n</>)</type> or <type>text</type>. - This is what most people always expected to happen anyway. - </para> - </listitem> - - <listitem> - <para> - The data type <type>float(<replaceable>p</>)</type> now - measures <replaceable>p</> in binary digits, not decimal - digits. The new behavior follows the SQL standard. - </para> - </listitem> - - <listitem> - <para> - Ambiguous date values now must match the ordering specified by - the <varname>datestyle</varname> setting. In prior releases, a - date specification of <literal>10/20/03</> was interpreted as a - date in October even if <varname>datestyle</> specified that - the day should be first. 7.4 will throw an error if a date - specification is invalid for the current setting of - <varname>datestyle</>. - </para> - </listitem> - - <listitem> - <para> - The functions <function>oidrand</function>, - <function>oidsrand</function>, and - <function>userfntest</function> have been removed. These - functions were determined to be no longer useful. - </para> - </listitem> - - <listitem> - <para> - String literals specifying time-varying date/time values, such - as <literal>'now'</literal> or <literal>'today'</literal> will - no longer work as expected in column default expressions; they - now cause the time of the table creation to be the default, not - the time of the insertion. Functions such as - <function>now()</>, <function>current_timestamp</>, or - <function>current_date</function> should be used instead. - </para> - - <para> - In previous releases, there was special code so that strings - such as <literal>'now'</literal> were interpreted at - <command>INSERT</> time and not at table creation time, but - this work around didn't cover all cases. Release 7.4 now - requires that defaults be defined properly using functions such - as <function>now()</> or <function>current_timestamp</>. These - will work in all situations. - </para> - </listitem> - - <listitem> - <para> - The dollar sign (<literal>$</>) is no longer allowed in - operator names. It can instead be a non-first character in - identifiers. This was done to improve compatibility with other - database systems, and to avoid syntax problems when parameter - placeholders (<literal>$<replaceable>n</></>) are written - adjacent to operators. - </para> - </listitem> - - </itemizedlist> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - Below you will find a detailed account of the changes between - release 7.4 and the previous major release. - </para> - - <sect3> - <title>Server Operation Changes</title> - - <itemizedlist> - <listitem> - <para> - Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, - Bruce, Tom, Kurt Roeckx, Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Fix SSL to handle errors cleanly (Nathan Mueller) - </para> - <para> - In prior releases, certain SSL API error reports were not - handled correctly. This release fixes those problems. - </para> - </listitem> - - <listitem> - <para> - SSL protocol security and performance improvements (Sean Chittenden) - </para> - <para> - SSL key renegotiation was happening too frequently, causing poor - SSL performance. Also, initial key handling was improved. - </para> - </listitem> - - <listitem> - <para> - Print lock information when a deadlock is detected (Tom) - </para> - <para> - This allows easier debugging of deadlock situations. - </para> - </listitem> - - <listitem> - <para> - Update <filename>/tmp</filename> socket modification times - regularly to avoid their removal (Tom) - </para> - <para> - This should help prevent <filename>/tmp</filename> directory - cleaner administration scripts from removing server socket - files. - </para> - </listitem> - - <listitem><para>Enable PAM for Mac OS X (Aaron Hillegass)</para></listitem> - - <listitem> - <para>Make B-tree indexes fully WAL-safe (Tom)</para> - <para> - In prior releases, under certain rare cases, a server crash - could cause B-tree indexes to become corrupt. This release - removes those last few rare cases. - </para> - </listitem> - - <listitem><para>Allow B-tree index compaction and empty page reuse (Tom)</para></listitem> - - <listitem> - <para> - Fix inconsistent index lookups during split of first root page (Tom) - </para> - <para> - In prior releases, when a single-page index split into two - pages, there was a brief period when another database session - could miss seeing an index entry. This release fixes that rare - failure case. - </para> - </listitem> - - <listitem><para>Improve free space map allocation logic (Tom)</para></listitem> - - <listitem> - <para>Preserve free space information between server restarts (Tom)</para> - <para> - In prior releases, the free space map was not saved when the - postmaster was stopped, so newly started servers had no free - space information. This release saves the free space map, and - reloads it when the server is restarted. - </para> - </listitem> - - <listitem><para>Add start time to <literal>pg_stat_activity</literal> (Neil)</para></listitem> - <listitem><para>New code to detect corrupt disk pages; erase with <varname>zero_damaged_pages</varname> (Tom)</para></listitem> - <listitem><para>New client/server protocol: faster, no username length limit, allow clean exit from <command>COPY</command> (Tom)</para></listitem> - <listitem><para>Add transaction status, table ID, column ID to client/server protocol (Tom)</para></listitem> - <listitem><para>Add binary I/O to client/server protocol (Tom)</para></listitem> - <listitem><para>Remove autocommit server setting; move to client applications (Tom)</para></listitem> - <listitem><para>New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter)</para></listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>Performance Improvements</title> - - <itemizedlist> - <listitem><para>Add hashing for <literal>GROUP BY</literal> aggregates (Tom)</para></listitem> - <listitem><para>Make nested-loop joins be smarter about multicolumn indexes (Tom)</para></listitem> - <listitem><para>Allow multikey hash joins (Tom)</para></listitem> - <listitem><para>Improve constant folding (Tom)</para></listitem> - <listitem><para>Add ability to inline simple SQL functions (Tom)</para></listitem> - - <listitem> - <para>Reduce memory usage for queries using complex functions (Tom)</para> - <para> - In prior releases, functions returning allocated memory would - not free it until the query completed. This release allows the - freeing of function-allocated memory when the function call - completes, reducing the total memory used by functions. - </para> - </listitem> - - <listitem> - <para>Improve GEQO optimizer performance (Tom)</para> - <para> - This release fixes several inefficiencies in the way the GEQO optimizer - manages potential query paths. - </para> - </listitem> - - <listitem> - <para> - Allow <literal>IN</>/<literal>NOT IN</> to be handled via hash - tables (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve <literal>NOT IN (<replaceable>subquery</>)</literal> - performance (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow most <literal>IN</literal> subqueries to be processed as - joins (Tom) - </para> - </listitem> - - <listitem> - <para> - Pattern matching operations can use indexes regardless of - locale (Peter) - </para> - <para> - There is no way for non-ASCII locales to use the standard - indexes for <literal>LIKE</literal> comparisons. This release - adds a way to create a special index for - <literal>LIKE</literal>. - </para> - </listitem> - - <listitem> - <para>Allow the postmaster to preload libraries using <varname>preload_libraries</varname> (Joe)</para> - <para> - For shared libraries that require a long time to load, this - option is available so the library can be preloaded in the - postmaster and inherited by all database sessions. - </para> - </listitem> - - <listitem> - <para> - Improve optimizer cost computations, particularly for subqueries (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid sort when subquery <literal>ORDER BY</literal> matches upper query (Tom) - </para> - </listitem> - - <listitem> - <para> - Deduce that <literal>WHERE a.x = b.y AND b.y = 42</literal> also - means <literal>a.x = 42</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow hash/merge joins on complex joins (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow hash joins for more data types (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow join optimization of explicit inner joins, disable with - <varname>join_collapse_limit</varname> (Tom) - </para> - </listitem> - - <listitem> - <para> - Add parameter <varname>from_collapse_limit</varname> to control - conversion of subqueries to joins (Tom) - </para> - </listitem> - - <listitem> - <para> - Use faster and more powerful regular expression code from Tcl - (Henry Spencer, Tom) - </para> - </listitem> - - <listitem> - <para> - Use bit-mapped relation sets in the optimizer (Tom) - </para> - </listitem> - - <listitem> - <para>Improve connection startup time (Tom)</para> - <para> - The new client/server protocol requires fewer network packets to - start a database session. - </para> - </listitem> - - <listitem> - <para> - Improve trigger/constraint performance (Stephan) - </para> - </listitem> - - <listitem> - <para> - Improve speed of <literal>col IN (const, const, const, ...)</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix hash indexes which were broken in rare cases (Tom) - </para> - </listitem> - - <listitem><para>Improve hash index concurrency and speed (Tom)</para> - <para> - Prior releases suffered from poor hash index performance, - particularly for high concurrency situations. This release fixes - that, and the development group is interested in reports - comparing B-tree and hash index performance. - </para> - </listitem> - - <listitem> - <para>Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)</para> - <para> - Certain CPU's perform faster data copies when addresses are - 32-byte aligned. - </para> - </listitem> - - <listitem> - <para>Data type <type>numeric</type> reimplemented for better performance (Tom)</para> - <para> - <type>numeric</type> used to be stored in base 100. The new code - uses base 10000, for significantly better performance. - </para> - </listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>Server Configuration Changes</title> - - <itemizedlist> - <listitem> - <para>Rename server parameter <varname>server_min_messages</> to <varname>log_min_messages</> (Bruce)</para> - <para> - This was done so most parameters that control the server logs - begin with <literal>log_</>. - </para> - </listitem> - - <listitem><para>Rename <varname>show_*_stats</> to <varname>log_*_stats</> (Bruce)</para></listitem> - <listitem><para>Rename <varname>show_source_port</> to <varname>log_source_port</> (Bruce)</para></listitem> - <listitem><para>Rename <varname>hostname_lookup</> to <varname>log_hostname</> (Bruce)</para></listitem> - - <listitem> - <para>Add <varname>checkpoint_warning</> to warn of excessive checkpointing (Bruce)</para> - <para> - In prior releases, it was difficult to determine if checkpoint - was happening too frequently. This feature adds a warning to the - server logs when excessive checkpointing happens. - </para> - </listitem> - - <listitem><para>New read-only server parameters for localization (Tom)</para></listitem> - - <listitem> - <para> - Change debug server log messages to output as <literal>DEBUG</> - rather than <literal>LOG</> (Bruce) - </para> - </listitem> - - <listitem> - <para>Prevent server log variables from being turned off by non-superusers (Bruce)</para> - <para> - This is a security feature so non-superusers cannot disable - logging that was enabled by the administrator. - </para> - </listitem> - - <listitem> - <para> - <varname>log_min_messages</>/<varname>client_min_messages</> now - controls <varname>debug_*</> output (Bruce) - </para> - <para> - This centralizes client debug information so all debug output - can be sent to either the client or server logs. - </para> - </listitem> - - <listitem> - <para>Add Mac OS X Rendezvous server support (Chris Campbell)</para> - <para> - This allows Mac OS X hosts to query the network for available - <productname>PostgreSQL</productname> servers. - </para> - </listitem> - - <listitem> - <para> - Add ability to print only slow statements using - <varname>log_min_duration_statement</varname> - (Christopher) - </para> - <para> - This is an often requested debugging feature that allows - administrators to see only slow queries in their server logs. - </para> - </listitem> - - <listitem> - <para>Allow <filename>pg_hba.conf</filename> to accept netmasks in CIDR format (Andrew Dunstan)</para> - <para> - This allows administrators to merge the host IP address and - netmask fields into a single CIDR field in <filename>pg_hba.conf</filename>. - </para> - </listitem> - - <listitem><para>New read-only parameter <varname>is_superuser</varname> (Tom)</para></listitem> - - <listitem> - <para>New parameter <varname>log_error_verbosity</varname> to control error detail (Tom)</para> - <para> - This works with the new error reporting feature to supply - additional error information like hints, file names and line - numbers. - </para> - </listitem> - - <listitem> - <para><literal>postgres --describe-config</literal> now dumps server config variables (Aizaz Ahmed, Peter)</para> - <para> - This option is useful for administration tools that need to know - the configuration variable names and their minimums, maximums, - defaults, and descriptions. - </para> - </listitem> - - <listitem> - <para> - Add new columns in <literal>pg_settings</literal>: - <literal>context</>, <literal>type</>, <literal>source</>, - <literal>min_val</>, <literal>max_val</> (Joe) - </para> - </listitem> - - <listitem> - <para> - Make default <varname>shared_buffers</> 1000 and - <varname>max_connections</> 100, if possible (Tom) - </para> - <para> - Prior versions defaulted to 64 shared buffers so <productname>PostgreSQL</productname> - would start on even very old systems. This release tests the - amount of shared memory allowed by the platform and selects more - reasonable default values if possible. Of course, users are - still encouraged to evaluate their resource load and size - <varname>shared_buffers</varname> accordingly. - </para> - </listitem> - - <listitem> - <para> - New <filename>pg_hba.conf</filename> record type - <literal>hostnossl</> to prevent SSL connections (Jon - Jensen) - </para> - <para> - In prior releases, there was no way to prevent SSL connections - if both the client and server supported SSL. This option allows - that capability. - </para> - </listitem> - - <listitem> - <para> - Remove parameter <varname>geqo_random_seed</varname> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Add server parameter <varname>regex_flavor</varname> to control regular expression processing (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <command>pg_ctl</command> better handle nonstandard ports (Greg) - </para> - </listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>Query Changes</title> - - <itemizedlist> - <listitem><para>New SQL-standard information schema (Peter)</para></listitem> - <listitem><para>Add read-only transactions (Peter)</para></listitem> - <listitem><para>Print key name and value in foreign-key violation messages (Dmitry Tkach)</para></listitem> - - <listitem> - <para>Allow users to see their own queries in <literal>pg_stat_activity</literal> (Kevin Brown)</para> - <para> - In prior releases, only the superuser could see query strings - using <literal>pg_stat_activity</literal>. Now ordinary users - can see their own query strings. - </para> - </listitem> - - <listitem> - <para>Fix aggregates in subqueries to match SQL standard (Tom)</para> - <para> - The SQL standard says that an aggregate function appearing - within a nested subquery belongs to the outer query if its - argument contains only outer-query variables. Prior - <productname>PostgreSQL</productname> releases did not handle - this fine point correctly. - </para> - </listitem> - - <listitem> - <para>Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews)</para> - <para> - By default, tables mentioned in the query are automatically - added to the <literal>FROM</> clause if they are not already - there. This is compatible with historic - <productname>POSTGRES</productname> behavior but is contrary to - the SQL standard. This option allows selecting - standard-compatible behavior. - </para> - </listitem> - - <listitem> - <para>Allow <literal>UPDATE ... SET col = DEFAULT</literal> (Rod)</para> - <para> - This allows <command>UPDATE</command> to set a column to its - declared default value. - </para> - </listitem> - - <listitem> - <para>Allow expressions to be used in <literal>LIMIT</>/<literal>OFFSET</> (Tom)</para> - <para> - In prior releases, <literal>LIMIT</>/<literal>OFFSET</> could - only use constants, not expressions. - </para> - </listitem> - - <listitem> - <para>Implement <literal>CREATE TABLE AS EXECUTE</literal> (Neil, Peter)</para> - </listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>Object Manipulation Changes</title> - - <itemizedlist> - <listitem> - <para>Make <command>CREATE SEQUENCE</command> grammar more conforming to SQL:2003 (Neil)</para> - </listitem> - - <listitem> - <para>Add statement-level triggers (Neil)</para> - <para> - While this allows a trigger to fire at the end of a statement, - it does not allow the trigger to access all rows modified by the - statement. This capability is planned for a future release. - </para> - </listitem> - - <listitem> - <para>Add check constraints for domains (Rod)</para> - <para> - This greatly increases the usefulness of domains by allowing - them to use check constraints. - </para> - </listitem> - - <listitem> - <para>Add <command>ALTER DOMAIN</command> (Rod)</para> - <para> - This allows manipulation of existing domains. - </para> - </listitem> - - <listitem> - <para>Fix several zero-column table bugs (Tom)</para> - <para> - <productname>PostgreSQL</productname> supports zero-column tables. This fixes various bugs - that occur when using such tables. - </para> - </listitem> - - <listitem> - <para>Have <literal>ALTER TABLE ... ADD PRIMARY KEY</literal> add not-null constraint (Rod)</para> - <para> - In prior releases, <literal>ALTER TABLE ... ADD - PRIMARY</literal> would add a unique index, but not a not-null - constraint. That is fixed in this release. - </para> - </listitem> - - <listitem><para>Add <literal>ALTER TABLE ... WITHOUT OIDS</literal> (Rod)</para> - <para> - This allows control over whether new and updated rows will have - an OID column. This is most useful for saving storage space. - </para> - </listitem> - - <listitem> - <para> - Add <literal>ALTER SEQUENCE</literal> to modify minimum, maximum, - increment, cache, cycle values (Rod) - </para> - </listitem> - - <listitem> - <para>Add <literal>ALTER TABLE ... CLUSTER ON</literal> (Alvaro Herrera)</para> - <para> - This command is used by <command>pg_dump</command> to record the - cluster column for each table previously clustered. This - information is used by database-wide cluster to cluster all - previously clustered tables. - </para> - </listitem> - - <listitem><para>Improve automatic type casting for domains (Rod, Tom)</para></listitem> - <listitem><para>Allow dollar signs in identifiers, except as first character (Tom)</para></listitem> - <listitem><para>Disallow dollar signs in operator names, so <literal>x=$1</> works (Tom)</para></listitem> - - <listitem> - <para> - Allow copying table schema using <literal>LIKE - <replaceable>subtable</replaceable></literal>, also SQL:2003 - feature <literal>INCLUDING DEFAULTS</literal> (Rod) - </para> - </listitem> - - <listitem> - <para> - Add <literal>WITH GRANT OPTION</literal> clause to - <command>GRANT</command> (Peter) - </para> - <para> - This enabled <command>GRANT</command> to give other users the - ability to grant privileges on an object. - </para> - </listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>Utility Command Changes</title> - - <itemizedlist> - <listitem> - <para>Add <literal>ON COMMIT</literal> clause to <command>CREATE TABLE</command> for temporary tables (Gavin)</para> - <para> - This adds the ability for a table to be dropped or all rows - deleted on transaction commit. - </para> - </listitem> - - <listitem> - <para>Allow cursors outside transactions using <literal>WITH HOLD</literal> (Neil)</para> - <para> - In previous releases, cursors were removed at the end of the - transaction that created them. Cursors can now be created with - the <literal>WITH HOLD</literal> option, which allows them to - continue to be accessed after the creating transaction has - committed. - </para> - </listitem> - - <listitem> - <para><literal>FETCH 0</literal> and <literal>MOVE 0 </literal> now do nothing (Bruce)</para> - <para> - In previous releases, <literal>FETCH 0</literal> fetched all - remaining rows, and <literal>MOVE 0</literal> moved to the end - of the cursor. - </para> - </listitem> - - <listitem> - <para> - Cause <command>FETCH</command> and <command>MOVE</command> to - return the number of rows fetched/moved, or zero if at the - beginning/end of cursor, per SQL standard (Bruce) - </para> - <para> - In prior releases, the row count returned by - <command>FETCH</command> and <command>MOVE</command> did not - accurately reflect the number of rows processed. - </para> - </listitem> - - <listitem> - <para>Properly handle <literal>SCROLL</literal> with cursors, or - report an error (Neil)</para> - <para> - Allowing random access (both forward and backward scrolling) to - some kinds of queries cannot be done without some additional - work. If <literal>SCROLL</literal> is specified when the cursor - is created, this additional work will be performed. Furthermore, - if the cursor has been created with <literal>NO SCROLL</literal>, - no random access is allowed. - </para> - </listitem> - - <listitem> - <para> - Implement SQL-compatible options <literal>FIRST</>, - <literal>LAST</>, <literal>ABSOLUTE <replaceable>n</></>, - <literal>RELATIVE <replaceable>n</></> for - <command>FETCH</command> and <command>MOVE</command> (Tom) - </para> - </listitem> - - <listitem> - <para>Allow <command>EXPLAIN</command> on <command>DECLARE CURSOR</command> (Tom)</para> - </listitem> - - <listitem> - <para>Allow <command>CLUSTER</command> to use index marked as pre-clustered by default (Alvaro Herrera)</para> - </listitem> - - <listitem> - <para>Allow <command>CLUSTER</command> to cluster all tables (Alvaro Herrera)</para> - <para> - This allows all previously clustered tables in a database to be - reclustered with a single command. - </para> - </listitem> - - <listitem><para>Prevent <command>CLUSTER</command> on partial indexes (Tom)</para></listitem> - - <listitem><para>Allow DOS and Mac line-endings in <command>COPY</> files (Bruce)</para></listitem> - - <listitem> - <para> - Disallow literal carriage return as a data value, - backslash-carriage-return and <literal>\r</> are still allowed - (Bruce) - </para> - </listitem> - - <listitem> - <para><command>COPY</> changes (binary, <literal>\.</>) (Tom)</para> - </listitem> - - <listitem> - <para>Recover from <command>COPY</command> failure cleanly (Tom)</para> - </listitem> - - <listitem> - <para>Prevent possible memory leaks in <command>COPY</command> (Tom)</para> - </listitem> - - <listitem> - <para>Make <command>TRUNCATE</command> transaction-safe (Rod)</para> - <para> - <command>TRUNCATE</command> can now be used inside a - transaction. If the transaction aborts, the changes made by the - <command>TRUNCATE</command> are automatically rolled back. - </para> - </listitem> - - <listitem> - <para> - Allow prepare/bind of utility commands like - <command>FETCH</command> and <command>EXPLAIN</command> (Tom) - </para> - </listitem> - - <listitem> - <para>Add <command>EXPLAIN EXECUTE</command> (Neil)</para> - </listitem> - - <listitem> - <para>Improve <command>VACUUM</command> performance on indexes by reducing WAL traffic (Tom)</para> - </listitem> - - <listitem> - <para>Functional indexes have been generalized into indexes on expressions (Tom)</para> - <para> - In prior releases, functional indexes only supported a simple - function applied to one or more column names. This release - allows any type of scalar expression. - </para> - </listitem> - - <listitem> - <para> - Have <command>SHOW TRANSACTION ISOLATION</command> match input - to <command>SET TRANSACTION ISOLATION</command> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Have <command>COMMENT ON DATABASE</command> on nonlocal - database generate a warning, rather than an error (Rod) - </para> - - <para> - Database comments are stored in database-local tables so - comments on a database have to be stored in each database. - </para> - </listitem> - - <listitem> - <para> - Improve reliability of <command>LISTEN</>/<command>NOTIFY</> (Tom) - </para> - </listitem> - - <listitem> - <para>Allow <command>REINDEX</command> to reliably reindex nonshared system catalog indexes (Tom)</para> - <para> - This allows system tables to be reindexed without the - requirement of a standalone session, which was necessary in - previous releases. The only tables that now require a standalone - session for reindexing are the global system tables - <literal>pg_database</>, <literal>pg_shadow</>, and - <literal>pg_group</>. - </para> - </listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>Data Type and Function Changes</title> - - <itemizedlist> - <listitem> - <para> - New server parameter <varname>extra_float_digits</varname> to - control precision display of floating-point numbers (Pedro - Ferreira, Tom) - </para> - <para> - This controls output precision which was causing regression - testing problems. - </para> - </listitem> - - <listitem><para>Allow <literal>+1300</literal> as a numeric time-zone specifier, for FJST (Tom)</para></listitem> - - <listitem> - <para> - Remove rarely used functions <function>oidrand</>, - <function>oidsrand</>, and <function>userfntest</> functions - (Neil) - </para> - </listitem> - - <listitem> - <para>Add <function>md5()</> function to main server, already in <filename>contrib/pgcrypto</filename> (Joe)</para> - <para> - An MD5 function was frequently requested. For more complex - encryption capabilities, use - <filename>contrib/pgcrypto</filename>. - </para> - </listitem> - - <listitem><para>Increase date range of <type>timestamp</type> (John Cochran)</para></listitem> - - <listitem> - <para> - Change <literal>EXTRACT(EPOCH FROM timestamp)</literal> so - <type>timestamp without time zone</type> is assumed to be in - local time, not GMT (Tom) - </para> - </listitem> - - <listitem><para>Trap division by zero in case the operating system doesn't prevent it (Tom)</para></listitem> - <listitem><para>Change the <type>numeric</type> data type internally to base 10000 (Tom)</para></listitem> - <listitem><para>New <function>hostmask()</function> function (Greg Wickham)</para></listitem> - <listitem><para>Fixes for <function>to_char()</function> and <function>to_timestamp()</function> (Karel)</para></listitem> - - <listitem> - <para> - Allow functions that can take any argument data type and return - any data type, using <type>anyelement</type> and - <type>anyarray</type> (Joe) - </para> - <para> - This allows the creation of functions that can work with any - data type. - </para> - </listitem> - - <listitem> - <para> - Arrays can now be specified as <literal>ARRAY[1,2,3]</literal>, - <literal>ARRAY[['a','b'],['c','d']]</literal>, or - <literal>ARRAY[ARRAY[ARRAY[2]]]</literal> (Joe) - </para> - </listitem> - - <listitem> - <para> - Allow proper comparisons for arrays, including <literal>ORDER - BY</literal> and <literal>DISTINCT</literal> support - (Joe) - </para> - </listitem> - - <listitem><para>Allow indexes on array columns (Joe)</para></listitem> - <listitem><para>Allow array concatenation with <literal>||</literal> (Joe)</para></listitem> - - <listitem> - <para> - Allow <literal>WHERE</literal> qualification - <literal><replaceable>expr</> <replaceable>op</> ANY/SOME/ALL - (<replaceable>array_expr</>)</literal> (Joe) - </para> - <para> - This allows arrays to behave like a list of values, for purposes - like <literal>SELECT * FROM tab WHERE col IN - (array_val)</literal>. - </para> - </listitem> - - <listitem> - <para> - New array functions <function>array_append</>, - <function>array_cat</>, <function>array_lower</>, - <function>array_prepend</>, <function>array_to_string</>, - <function>array_upper</>, <function>string_to_array</> (Joe) - </para> - </listitem> - - <listitem><para>Allow user defined aggregates to use polymorphic functions (Joe)</para></listitem> - <listitem><para>Allow assignments to empty arrays (Joe)</para></listitem> - - <listitem> - <para> - Allow 60 in seconds fields of <type>time</type>, - <type>timestamp</type>, and <type>interval</type> input values - (Tom) - </para> - <para> - Sixty-second values are needed for leap seconds. - </para> - </listitem> - - <listitem><para>Allow <type>cidr</type> data type to be cast to <type>text</type> (Tom)</para></listitem> - - <listitem><para>Disallow invalid time zone names in SET TIMEZONE</para></listitem> - - <listitem> - <para> - Trim trailing spaces when <type>char</type> is cast to - <type>varchar</> or <type>text</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <type>float(<replaceable>p</>)</> measure the precision - <replaceable>p</> in binary digits, not decimal digits - (Tom) - </para> - </listitem> - - <listitem> - <para>Add IPv6 support to the <type>inet</type> and <type>cidr</type> data types (Michael Graff)</para> - </listitem> - - <listitem> - <para>Add <function>family()</function> function to report whether address is IPv4 or IPv6 (Michael Graff)</para> - </listitem> - - <listitem> - <para> - Have <literal>SHOW datestyle</literal> generate output similar - to that used by <literal>SET datestyle</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <literal>EXTRACT(TIMEZONE)</literal> and <literal>SET/SHOW - TIME ZONE</literal> follow the SQL convention for the sign of - time zone offsets, i.e., positive is east from UTC (Tom) - </para> - </listitem> - - <listitem> - <para>Fix <literal>date_trunc('quarter', ...)</literal> (Böjthe Zoltán)</para> - <para> - Prior releases returned an incorrect value for this function call. - </para> - </listitem> - - <listitem> - <para>Make <function>initcap()</function> more compatible with Oracle (Mike Nolan)</para> - <para> - <function>initcap()</function> now uppercases a letter appearing - after any non-alphanumeric character, rather than only after - whitespace. - </para> - </listitem> - - <listitem> - <para>Allow only <varname>datestyle</varname> field order for date values not in ISO-8601 format (Greg)</para> - </listitem> - - <listitem> - <para> - Add new <varname>datestyle</varname> values <literal>MDY</>, - <literal>DMY</>, and <literal>YMD</> to set input field order; - honor <literal>US</> and <literal>European</> for backward - compatibility (Tom) - </para> - </listitem> - - <listitem> - <para> - String literals like <literal>'now'</literal> or - <literal>'today'</literal> will no longer work as a column - default. Use functions such as <function>now()</function>, - <function>current_timestamp</function> instead. (change - required for prepared statements) (Tom) - </para> - </listitem> - - <listitem> - <para>Treat NaN as larger than any other value in <function>min()</>/<function>max()</> (Tom)</para> - <para> - NaN was already sorted after ordinary numeric values for most - purposes, but <function>min()</> and <function>max()</> didn't - get this right. - </para> - </listitem> - - <listitem> - <para>Prevent interval from suppressing <literal>:00</literal> - seconds display</para> - </listitem> - - <listitem> - <para> - New functions <function>pg_get_triggerdef(prettyprint)</function> - and <function>pg_conversion_is_visible()</function> (Christopher) - </para> - </listitem> - - <listitem> - <para>Allow time to be specified as <literal>040506</> or <literal>0405</> (Tom)</para> - </listitem> - - <listitem> - <para> - Input date order must now be <literal>YYYY-MM-DD</literal> (with 4-digit year) or - match <varname>datestyle</varname> - </para> - </listitem> - - <listitem> - <para> - Make <function>pg_get_constraintdef</function> support - unique, primary-key, and check constraints (Christopher) - </para> - </listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>Server-Side Language Changes</title> - - <itemizedlist> - <listitem> - <para> - Prevent PL/pgSQL crash when <literal>RETURN NEXT</literal> is - used on a zero-row record variable (Tom) - </para> - </listitem> - - <listitem> - <para> - Make PL/Python's <function>spi_execute</function> interface - handle null values properly (Andrew Bosma) - </para> - </listitem> - - <listitem> - <para>Allow PL/pgSQL to declare variables of composite types without <literal>%ROWTYPE</literal> (Tom)</para> - </listitem> - - <listitem> - <para>Fix PL/Python's <function>_quote()</function> function to handle big integers</para> - </listitem> - - <listitem> - <para>Make PL/Python an untrusted language, now called <literal>plpythonu</literal> (Kevin Jacobs, Tom)</para> - <para> - The Python language no longer supports a restricted execution - environment, so the trusted version of PL/Python was removed. If - this situation changes, a version of PL/Python that can be used - by non-superusers will be readded. - </para> - </listitem> - - <listitem> - <para>Allow polymorphic PL/pgSQL functions (Joe, Tom)</para> - </listitem> - - <listitem> - <para>Allow polymorphic SQL functions (Joe)</para> - </listitem> - - <listitem> - <para> - Improved compiled function caching mechanism in PL/pgSQL with - full support for polymorphism (Joe) - </para> - </listitem> - - <listitem> - <para> - Add new parameter <literal>$0</> in PL/pgSQL representing the - function's actual return type (Joe) - </para> - </listitem> - - <listitem> - <para> - Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom) - </para> - </listitem> - - <listitem> - <para> - Fixed PL/Tcl's <function>spi_prepare</function> to accept fully - qualified type names in the parameter type list - (Jan) - </para> - </listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>psql Changes</title> - - <itemizedlist> - <listitem> - <para>Add <literal>\pset pager always</literal> to always use pager (Greg)</para> - <para> - This forces the pager to be used even if the number of rows is - less than the screen height. This is valuable for rows that - wrap across several screen rows. - </para> - </listitem> - - <listitem><para>Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)</para></listitem> - <listitem><para>Reorder <literal>\?</> help into groupings (Harald Armin Massa, Bruce)</para></listitem> - <listitem><para>Add backslash commands for listing schemas, casts, and conversions (Christopher)</para></listitem> - - <listitem> - <para> - <command>\encoding</> now changes based on the server parameter - <varname>client_encoding</varname> (Tom) - </para> - <para> - In previous versions, <command>\encoding</command> was not aware - of encoding changes made using <literal>SET - client_encoding</literal>. - </para> - </listitem> - - <listitem> - <para>Save editor buffer into readline history (Ross)</para> - <para> - When <command>\e</> is used to edit a query, the result is saved - in the readline history for retrieval using the up arrow. - </para> - </listitem> - - <listitem><para>Improve <command>\d</command> display (Christopher)</para></listitem> - <listitem><para>Enhance HTML mode to be more standards-conforming (Greg)</para></listitem> - - <listitem> - <para>New <command>\set AUTOCOMMIT off</command> capability (Tom)</para> - <para> - This takes the place of the removed server parameter <varname>autocommit</varname>. - </para> - </listitem> - - <listitem> - <para>New <command>\set VERBOSITY</command> to control error detail (Tom)</para> - <para> - This controls the new error reporting details. - </para> - </listitem> - - <listitem><para>New prompt escape sequence <literal>%x</literal> to show transaction status (Tom)</para></listitem> - <listitem><para>Long options for <application>psql</application> are now available on all platforms</para></listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>pg_dump Changes</title> - - <itemizedlist> - <listitem><para>Multiple pg_dump fixes, including tar format and large objects</para></listitem> - <listitem><para>Allow pg_dump to dump specific schemas (Neil)</para></listitem> - - <listitem> - <para>Make pg_dump preserve column storage characteristics (Christopher)</para> - <para> - This preserves <literal>ALTER TABLE ... SET STORAGE</literal> information. - </para> - </listitem> - - <listitem><para>Make pg_dump preserve <command>CLUSTER</command> characteristics (Christopher)</para></listitem> - - <listitem> - <para> - Have pg_dumpall use <command>GRANT</>/<command>REVOKE</> to dump database-level privileges (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow pg_dumpall to support the options <option>-a</>, - <option>-s</>, <option>-x</> of pg_dump (Tom) - </para> - </listitem> - - <listitem><para>Prevent pg_dump from lowercasing identifiers specified on the command line (Tom)</para></listitem> - - <listitem> - <para> - pg_dump options <option>--use-set-session-authorization</option> - and <option>--no-reconnect</option> now do nothing, all dumps - use <command>SET SESSION AUTHORIZATION</command> - </para> - <para> - pg_dump no longer reconnects to switch users, but instead always - uses <command>SET SESSION AUTHORIZATION</command>. This will - reduce password prompting during restores. - </para> - </listitem> - - <listitem> - <para>Long options for <application>pg_dump</application> are now available on all platforms</para> - <para> - <productname>PostgreSQL</productname> now includes its own - long-option processing routines. - </para> - </listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>libpq Changes</title> - - <itemizedlist> - <listitem> - <para> - Add function <function>PQfreemem</function> for freeing memory on - Windows, suggested for <command>NOTIFY</command> (Bruce) - </para> - <para> - Windows requires that memory allocated in a library be freed by - a function in the same library, hence - <function>free()</function> doesn't work for freeing memory - allocated by libpq. <function>PQfreemem</function> is the proper - way to free libpq memory, especially on Windows, and is - recommended for other platforms as well. - </para> - </listitem> - - <listitem> - <para>Document service capability, and add sample file (Bruce)</para> - <para> - This allows clients to look up connection information in a - central file on the client machine. - </para> - </listitem> - - <listitem> - <para> - Make <function>PQsetdbLogin</function> have the same defaults as - <function>PQconnectdb</function> (Tom) - </para> - </listitem> - - <listitem><para>Allow libpq to cleanly fail when result sets are too large (Tom)</para></listitem> - - <listitem> - <para> - Improve performance of function <function>PQunescapeBytea</function> (Ben Lamb) - </para> - </listitem> - - <listitem> - <para> - Allow thread-safe libpq with <filename>configure</filename> - option <option>--enable-thread-safety</option> (Lee Kindness, - Philip Yarra) - </para> - </listitem> - - <listitem> - <para> - Allow function <function>pqInternalNotice</function> to accept a - format string and arguments instead of just a preformatted - message (Tom, Sean Chittenden) - </para> - </listitem> - - <listitem> - <para> - Control SSL negotiation with <literal>sslmode</literal> values - <literal>disable</literal>, <literal>allow</literal>, - <literal>prefer</literal>, and <literal>require</literal> (Jon - Jensen) - </para> - </listitem> - - <listitem> - <para>Allow new error codes and levels of text (Tom)</para> - </listitem> - - <listitem> - <para>Allow access to the underlying table and column of a query result (Tom)</para> - <para> - This is helpful for query-builder applications that want to know - the underlying table and column names associated with a specific - result set. - </para> - </listitem> - - <listitem><para>Allow access to the current transaction status (Tom)</para></listitem> - <listitem><para>Add ability to pass binary data directly to the server (Tom)</para></listitem> - - <listitem> - <para> - Add function <function>PQexecPrepared</function> and - <function>PQsendQueryPrepared</function> functions which perform - bind/execute of previously prepared statements (Tom) - </para> - </listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>JDBC Changes</title> - - <itemizedlist> - <listitem><para>Allow <function>setNull</function> on updateable result sets</para></listitem> - <listitem><para>Allow <function>executeBatch</function> on a prepared statement (Barry)</para></listitem> - <listitem><para>Support SSL connections (Barry)</para></listitem> - <listitem><para>Handle schema names in result sets (Paul Sorenson)</para></listitem> - <listitem><para>Add refcursor support (Nic Ferrier)</para></listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>Miscellaneous Interface Changes</title> - - <itemizedlist> - <listitem> - <para>Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)</para> - </listitem> - <listitem> - <para>Add Informix compatibility to ECPG (Michael)</para> - <para> - This allows ECPG to process embedded C programs that were - written using certain Informix extensions. - </para> - </listitem> - - <listitem> - <para>Add type <type>decimal</type> to ECPG that is fixed length, for Informix (Michael)</para> - </listitem> - - <listitem> - <para> - Allow thread-safe embedded SQL programs with - <filename>configure</filename> option - <option>--enable-thread-safety</option> (Lee Kindness, Bruce) - </para> - <para> - This allows multiple threads to access the database at the same - time. - </para> - </listitem> - - <listitem> - <para>Moved Python client PyGreSQL to <ulink url="http://www.pygresql.org"></ulink> (Marc)</para> - </listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>Source Code Changes</title> - - <itemizedlist> - <listitem><para>Prevent need for separate platform geometry regression result files (Tom)</para></listitem> - <listitem><para>Improved PPC locking primitive (Reinhard Max)</para></listitem> - <listitem><para>New function <function>palloc0</function> to allocate and clear memory (Bruce)</para></listitem> - <listitem><para>Fix locking code for s390x CPU (64-bit) (Tom)</para></listitem> - <listitem><para>Allow OpenBSD to use local ident credentials (William Ahern)</para></listitem> - <listitem><para>Make query plan trees read-only to executor (Tom)</para></listitem> - <listitem><para>Add Darwin startup scripts (David Wheeler)</para></listitem> - <listitem><para>Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek)</para></listitem> - <listitem><para>Use our own version of <function>getopt_long()</function> if needed (Peter)</para></listitem> - <listitem><para>Convert administration scripts to C (Peter)</para></listitem> - <listitem><para> Bison >= 1.85 is now required to build the <productname>PostgreSQL</> grammar, if building from CVS</para></listitem> - <listitem><para>Merge documentation into one book (Peter)</para></listitem> - <listitem><para>Add Windows compatibility functions (Bruce)</para></listitem> - <listitem><para>Allow client interfaces to compile under MinGW (Bruce)</para></listitem> - <listitem><para>New <function>ereport()</function> function for error reporting (Tom)</para></listitem> - <listitem><para>Support Intel compiler on Linux (Peter)</para></listitem> - <listitem><para>Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)</para></listitem> - <listitem><para>Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)</para></listitem> - <listitem> - <para>Remove <option>--enable-recode</option> option from <command>configure</command></para> - <para> - This was no longer needed now that we have <command>CREATE CONVERSION</command>. - </para> - </listitem> - <listitem> - <para>Generate a compile error if spinlock code is not found (Bruce)</para> - <para> - Platforms without spinlock code will now fail to compile, rather - than silently using semaphores. This failure can be disabled - with a new <command>configure</command> option. - </para> - </listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>Contrib Changes</title> - - <itemizedlist> - <listitem><para>Change dbmirror license to BSD</para></listitem> - <listitem><para>Improve earthdistance (Bruno Wolff III)</para></listitem> - <listitem><para>Portability improvements to pgcrypto (Marko Kreen)</para></listitem> - <listitem><para>Prevent crash in xml (John Gray, Michael Richards)</para></listitem> - <listitem><para>Update oracle</para></listitem> - <listitem><para>Update mysql</para></listitem> - <listitem><para>Update cube (Bruno Wolff III)</para></listitem> - <listitem><para>Update earthdistance to use cube (Bruno Wolff III)</para></listitem> - <listitem><para>Update btree_gist (Oleg)</para></listitem> - <listitem><para>New tsearch2 full-text search module (Oleg, Teodor)</para></listitem> - <listitem><para>Add hash-based crosstab function to tablefuncs (Joe)</para></listitem> - <listitem><para>Add serial column to order <function>connectby()</> siblings in tablefuncs (Nabil Sayegh,Joe)</para></listitem> - <listitem><para>Add named persistent connections to dblink (Shridhar Daithanka)</para></listitem> - <listitem><para>New pg_autovacuum allows automatic <command>VACUUM</command> (Matthew T. O'Connor)</para></listitem> - <listitem><para>Make pgbench honor environment variables <envar>PGHOST</>, <envar>PGPORT</>, <envar>PGUSER</> (Tatsuo)</para></listitem> - <listitem><para>Improve intarray (Teodor Sigaev)</para></listitem> - <listitem><para>Improve pgstattuple (Rod)</para></listitem> - <listitem><para>Fix bug in <function>metaphone()</function> in fuzzystrmatch</para></listitem> - <listitem><para>Improve adddepend (Rod)</para></listitem> - <listitem><para>Update spi/timetravel (Böjthe Zoltán)</para></listitem> - <listitem><para>Fix dbase <option>-s</> option and improve non-ASCII handling (Thomas Behr, Márcio Smiderle)</para></listitem> - <listitem><para>Remove array module because features now included by default (Joe)</para></listitem> - </itemizedlist> - </sect3> - </sect2> -</sect1> diff --git a/doc/src/sgml/release-8.0.sgml b/doc/src/sgml/release-8.0.sgml deleted file mode 100644 index 4f04024d2e6..00000000000 --- a/doc/src/sgml/release-8.0.sgml +++ /dev/null @@ -1,5421 +0,0 @@ -<!-- doc/src/sgml/release-8.0.sgml --> -<!-- See header comment in release.sgml about typical markup --> - - <sect1 id="release-8-0-26"> - <title>Release 8.0.26</title> - - <formalpara> - <title>Release date:</title> - <para>2010-10-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.25. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <para> - This is expected to be the last <productname>PostgreSQL</> release - in the 8.0.X series. Users are encouraged to update to a newer - release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.0.26</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.22, - see <xref linkend="release-8-0-22">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Use a separate interpreter for each calling SQL userid in PL/Perl and - PL/Tcl (Tom Lane) - </para> - - <para> - This change prevents security problems that can be caused by subverting - Perl or Tcl code that will be executed later in the same session under - another SQL user identity (for example, within a <literal>SECURITY - DEFINER</> function). Most scripting languages offer numerous ways that - that might be done, such as redefining standard functions or operators - called by the target function. Without this change, any SQL user with - Perl or Tcl language usage rights can do essentially anything with the - SQL privileges of the target function's owner. - </para> - - <para> - The cost of this change is that intentional communication among Perl - and Tcl functions becomes more difficult. To provide an escape hatch, - PL/PerlU and PL/TclU functions continue to use only one interpreter - per session. This is not considered a security issue since all such - functions execute at the trust level of a database superuser already. - </para> - - <para> - It is likely that third-party procedural languages that claim to offer - trusted execution have similar security issues. We advise contacting - the authors of any PL you are depending on for security-critical - purposes. - </para> - - <para> - Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433). - </para> - </listitem> - - <listitem> - <para> - Prevent possible crashes in <function>pg_get_expr()</> by disallowing - it from being called with an argument that is not one of the system - catalog columns it's intended to be used with - (Heikki Linnakangas, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane) - </para> - - <para> - This occurred when a sub-select contains a join alias reference that - expands into an expression containing another sub-select. - </para> - </listitem> - - <listitem> - <para> - Defend against functions returning setof record where not all the - returned rows are actually of the same rowtype (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Take care to fsync the contents of lockfiles (both - <filename>postmaster.pid</> and the socket lockfile) while writing them - (Tom Lane) - </para> - - <para> - This omission could result in corrupted lockfile contents if the - machine crashes shortly after postmaster start. That could in turn - prevent subsequent attempts to start the postmaster from succeeding, - until the lockfile is manually removed. - </para> - </listitem> - - <listitem> - <para> - Avoid recursion while assigning XIDs to heavily-nested - subtransactions (Andres Freund, Robert Haas) - </para> - - <para> - The original coding could result in a crash if there was limited - stack space. - </para> - </listitem> - - <listitem> - <para> - Fix <varname>log_line_prefix</>'s <literal>%i</> escape, - which could produce junk early in backend startup (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible data corruption in <command>ALTER TABLE ... SET - TABLESPACE</> when archiving is enabled (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET - TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge) - </para> - </listitem> - - <listitem> - <para> - In PL/Python, defend against null pointer results from - <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</> - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Improve <filename>contrib/dblink</>'s handling of tables containing - dropped columns (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix connection leak after <quote>duplicate connection name</quote> - errors in <filename>contrib/dblink</> (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</> to handle connection names longer than - 62 bytes correctly (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Update build infrastructure and documentation to reflect the source code - repository's move from CVS to Git (Magnus Hagander and others) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010l - for DST law changes in Egypt and Palestine; also historical corrections - for Finland. - </para> - - <para> - This change also adds new names for two Micronesian timezones: - Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred - abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over - Pacific/Ponape. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-25"> - <title>Release 8.0.25</title> - - <formalpara> - <title>Release date:</title> - <para>2010-05-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.24. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <para> - The <productname>PostgreSQL</> community will stop releasing updates - for the 8.0.X release series in July 2010. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.0.25</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.22, - see <xref linkend="release-8-0-22">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Enforce restrictions in <literal>plperl</> using an opmask applied to - the whole interpreter, instead of using <filename>Safe.pm</> - (Tim Bunce, Andrew Dunstan) - </para> - - <para> - Recent developments have convinced us that <filename>Safe.pm</> is too - insecure to rely on for making <literal>plperl</> trustable. This - change removes use of <filename>Safe.pm</> altogether, in favor of using - a separate interpreter with an opcode mask that is always applied. - Pleasant side effects of the change include that it is now possible to - use Perl's <literal>strict</> pragma in a natural way in - <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</> - variables work as expected in sort routines, and that function - compilation is significantly faster. (CVE-2010-1169) - </para> - </listitem> - - <listitem> - <para> - Prevent PL/Tcl from executing untrustworthy code from - <structname>pltcl_modules</> (Tom) - </para> - - <para> - PL/Tcl's feature for autoloading Tcl code from a database table - could be exploited for trojan-horse attacks, because there was no - restriction on who could create or insert into that table. This change - disables the feature unless <structname>pltcl_modules</> is owned by a - superuser. (However, the permissions on the table are not checked, so - installations that really need a less-than-secure modules table can - still grant suitable privileges to trusted non-superusers.) Also, - prevent loading code into the unrestricted <quote>normal</> Tcl - interpreter unless we are really going to execute a <literal>pltclu</> - function. (CVE-2010-1170) - </para> - </listitem> - - <listitem> - <para> - Do not allow an unprivileged user to reset superuser-only parameter - settings (Alvaro) - </para> - - <para> - Previously, if an unprivileged user ran <literal>ALTER USER ... RESET - ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for - a database he owns, this would remove all special parameter settings - for the user or database, even ones that are only supposed to be - changeable by a superuser. Now, the <command>ALTER</> will only - remove the parameters that the user has permission to change. - </para> - </listitem> - - <listitem> - <para> - Avoid possible crash during backend shutdown if shutdown occurs - when a <literal>CONTEXT</> addition would be made to log entries (Tom) - </para> - - <para> - In some cases the context-printing function would fail because the - current transaction had already been rolled back when it came time - to print a log message. - </para> - </listitem> - - <listitem> - <para> - Update pl/perl's <filename>ppport.h</> for modern Perl versions - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix assorted memory leaks in pl/python (Andreas Freund, Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent infinite recursion in <application>psql</> when expanding - a variable that refers to itself (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure that <filename>contrib/pgstattuple</> functions respond to cancel - interrupts promptly (Tatsuhito Kasahara) - </para> - </listitem> - - <listitem> - <para> - Make server startup deal properly with the case that - <function>shmget()</> returns <literal>EINVAL</> for an existing - shared memory segment (Tom) - </para> - - <para> - This behavior has been observed on BSD-derived kernels including OS X. - It resulted in an entirely-misleading startup failure complaining that - the shared memory request size was too large. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010j - for DST law changes in Argentina, Australian Antarctic, Bangladesh, - Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; - also historical corrections for Taiwan. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-24"> - <title>Release 8.0.24</title> - - <formalpara> - <title>Release date:</title> - <para>2010-03-15</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.23. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <para> - The <productname>PostgreSQL</> community will stop releasing updates - for the 8.0.X release series in July 2010. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.0.24</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.22, - see <xref linkend="release-8-0-22">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Add new configuration parameter <varname>ssl_renegotiation_limit</> to - control how often we do session key renegotiation for an SSL connection - (Magnus) - </para> - - <para> - This can be set to zero to disable renegotiation completely, which may - be required if a broken SSL library is used. In particular, some - vendors are shipping stopgap patches for CVE-2009-3555 that cause - renegotiation attempts to fail. - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes when trying to recover from a failure in - subtransaction start (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix server memory leak associated with use of savepoints and a client - encoding different from server's encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <function>substring()</> for <type>bit</> types treat any negative - length as meaning <quote>all the rest of the string</> (Tom) - </para> - - <para> - The previous coding treated only -1 that way, and would produce an - invalid result value for other negative values, possibly leading to - a crash (CVE-2010-0442). - </para> - </listitem> - - <listitem> - <para> - Fix integer-to-bit-string conversions to handle the first fractional - byte correctly when the output bit width is wider than the given - integer by something other than a multiple of 8 bits (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix some cases of pathologically slow regular expression matching (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix the <literal>STOP WAL LOCATION</> entry in backup history files to - report the next WAL segment's name when the end location is exactly at a - segment boundary (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - When reading <filename>pg_hba.conf</> and related files, do not treat - <literal>@something</> as a file inclusion request if the <literal>@</> - appears inside quote marks; also, never treat <literal>@</> by itself - as a file inclusion request (Tom) - </para> - - <para> - This prevents erratic behavior if a role or database name starts with - <literal>@</>. If you need to include a file whose path name - contains spaces, you can still do so, but you must write - <literal>@"/path to/file"</> rather than putting the quotes around - the whole construct. - </para> - </listitem> - - <listitem> - <para> - Prevent infinite loop on some platforms if a directory is named as - an inclusion target in <filename>pg_hba.conf</> and related files - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix plpgsql failure in one case where a composite column is set to NULL - (Tom) - </para> - </listitem> - - <listitem> - <para> - Add <literal>volatile</> markings in PL/Python to avoid possible - compiler-specific misbehavior (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Ensure PL/Tcl initializes the Tcl interpreter fully (Tom) - </para> - - <para> - The only known symptom of this oversight is that the Tcl - <literal>clock</> command misbehaves if using Tcl 8.5 or later. - </para> - </listitem> - - <listitem> - <para> - Prevent crash in <filename>contrib/dblink</> when too many key - columns are specified to a <function>dblink_build_sql_*</> function - (Rushabh Lathia, Joe Conway) - </para> - </listitem> - - <listitem> - <para> - Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy - memory management (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010e - for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-23"> - <title>Release 8.0.23</title> - - <formalpara> - <title>Release date:</title> - <para>2009-12-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.22. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.23</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.22, - see <xref linkend="release-8-0-22">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Protect against indirect security threats caused by index functions - changing session-local state (Gurjeet Singh, Tom) - </para> - - <para> - This change prevents allegedly-immutable index functions from possibly - subverting a superuser's session (CVE-2009-4136). - </para> - </listitem> - - <listitem> - <para> - Reject SSL certificates containing an embedded null byte in the common - name (CN) field (Magnus) - </para> - - <para> - This prevents unintended matching of a certificate to a server or client - name during SSL validation (CVE-2009-4034). - </para> - </listitem> - - <listitem> - <para> - Fix possible crash during backend-startup-time cache initialization (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent signals from interrupting <literal>VACUUM</> at unsafe times - (Alvaro) - </para> - - <para> - This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled - after it's already committed its tuple movements, as well as transient - errors if a plain <literal>VACUUM</> is interrupted after having - truncated the table. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to integer overflow in hash table size - calculation (Tom) - </para> - - <para> - This could occur with extremely large planner estimates for the size of - a hashjoin's result. - </para> - </listitem> - - <listitem> - <para> - Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris - Mikkelson) - </para> - </listitem> - - <listitem> - <para> - Fix premature drop of temporary files used for a cursor that is accessed - within a subtransaction (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix PAM password processing to be more robust (Tom) - </para> - - <para> - The previous code is known to fail with the combination of the Linux - <literal>pam_krb5</> PAM module with Microsoft Active Directory as the - domain controller. It might have problems elsewhere too, since it was - making unjustified assumptions about what arguments the PAM stack would - pass to it. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash in exception processing in PL/Python (Peter) - </para> - </listitem> - - <listitem> - <para> - Ensure <application>psql</>'s flex module is compiled with the correct - system header definitions (Tom) - </para> - - <para> - This fixes build failures on platforms where - <literal>--enable-largefile</> causes incompatible changes in the - generated code. - </para> - </listitem> - - <listitem> - <para> - Make the postmaster ignore any <literal>application_name</> parameter in - connection request packets, to improve compatibility with future libpq - versions (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009s - for DST law changes in Antarctica, Argentina, Bangladesh, Fiji, - Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical - corrections for Hong Kong. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-22"> - <title>Release 8.0.22</title> - - <formalpara> - <title>Release date:</title> - <para>2009-09-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.21. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.22</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you have any hash indexes on <type>interval</> columns, - you must <command>REINDEX</> them after updating to 8.0.22. - Also, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Disallow <command>RESET ROLE</> and <command>RESET SESSION - AUTHORIZATION</> inside security-definer functions (Tom, Heikki) - </para> - - <para> - This covers a case that was missed in the previous patch that - disallowed <command>SET ROLE</> and <command>SET SESSION - AUTHORIZATION</> inside security-definer functions. - (See CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Fix handling of sub-SELECTs appearing in the arguments of - an outer-level aggregate function (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix hash calculation for data type <type>interval</> (Tom) - </para> - - <para> - This corrects wrong results for hash joins on interval values. - It also changes the contents of hash indexes on interval columns. - If you have any such indexes, you must <command>REINDEX</> them - after updating. - </para> - </listitem> - - <listitem> - <para> - Treat <function>to_char(..., 'TH')</> as an uppercase ordinal - suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki) - </para> - - <para> - It was previously handled as <literal>'th'</> (lowercase). - </para> - </listitem> - - <listitem> - <para> - Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal> - when <replaceable>x</> is more than 2 million and integer - datetimes are in use (Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Fix calculation of distance between a point and a line segment (Tom) - </para> - - <para> - This led to incorrect results from a number of geometric operators. - </para> - </listitem> - - <listitem> - <para> - Fix <type>money</> data type to work in locales where currency - amounts have no fractional digits, e.g. Japan (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Properly round datetime input like - <literal>00:12:57.9999999999999999999999999999</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix poor choice of page split point in GiST R-tree operator classes - (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix portability issues in plperl initialization (Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to not go into an infinite loop if - <filename>postgresql.conf</> is empty (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to - properly handle the maximum number of parameters (twenty) (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve robustness of <application>libpq</>'s code to recover - from errors during <command>COPY FROM STDIN</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid including conflicting readline and editline header files - when both libraries are installed (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009l - for DST law changes in Bangladesh, Egypt, Jordan, Pakistan, - Argentina/San_Luis, Cuba, Jordan (historical correction only), - Mauritius, Morocco, Palestine, Syria, Tunisia. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-21"> - <title>Release 8.0.21</title> - - <formalpara> - <title>Release date:</title> - <para>2009-03-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.20. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.21</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent error recursion crashes when encoding conversion fails (Tom) - </para> - - <para> - This change extends fixes made in the last two minor releases for - related failure scenarios. The previous fixes were narrowly tailored - for the original problem reports, but we have now recognized that - <emphasis>any</> error thrown by an encoding conversion function could - potentially lead to infinite recursion while trying to report the - error. The solution therefore is to disable translation and encoding - conversion and report the plain-ASCII form of any error message, - if we find we have gotten into a recursive error reporting situation. - (CVE-2009-0922) - </para> - </listitem> - - <listitem> - <para> - Disallow <command>CREATE CONVERSION</> with the wrong encodings - for the specified conversion function (Heikki) - </para> - - <para> - This prevents one possible scenario for encoding conversion failure. - The previous change is a backstop to guard against other kinds of - failures in the same area. - </para> - </listitem> - - <listitem> - <para> - Fix core dump when <function>to_char()</> is given format codes that - are inappropriate for the type of the data argument (Tom) - </para> - </listitem> - - <listitem> - <para> - Add <literal>MUST</> (Mauritius Island Summer Time) to the default list - of known timezone abbreviations (Xavier Bugaud) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-20"> - <title>Release 8.0.20</title> - - <formalpara> - <title>Release date:</title> - <para>2009-02-02</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.19. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.20</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Improve handling of URLs in <function>headline()</> function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Improve handling of overlength headlines in <function>headline()</> - function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Prevent possible Assert failure or misconversion if an encoding - conversion is created with the wrong conversion function for the - specified pair of encodings (Tom, Heikki) - </para> - </listitem> - - <listitem> - <para> - Avoid unnecessary locking of small tables in <command>VACUUM</> - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix uninitialized variables in <filename>contrib/tsearch2</>'s - <function>get_covers()</> function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Make all documentation reference <literal>pgsql-bugs</> and/or - <literal>pgsql-hackers</> as appropriate, instead of the - now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</> - mailing lists (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009a (for - Kathmandu and historical DST corrections in Switzerland, Cuba) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-19"> - <title>Release 8.0.19</title> - - <formalpara> - <title>Release date:</title> - <para>2008-11-03</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.18. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.19</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix backend crash when the client encoding cannot represent a localized - error message (Tom) - </para> - - <para> - We have addressed similar issues before, but it would still fail if - the <quote>character has no equivalent</> message itself couldn't - be converted. The fix is to disable localization and send the plain - ASCII error message when we detect such a situation. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash when deeply nested functions are invoked from - a trigger (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure an error is reported when a newly-defined PL/pgSQL trigger - function is invoked as a normal function (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect tsearch2 headline generation when single query - item matches first word of text (Sushant Sinha) - </para> - </listitem> - - <listitem> - <para> - Fix improper display of fractional seconds in interval values when - using a non-ISO datestyle in an <option>--enable-integer-datetimes</> - build (Ron Mayer) - </para> - </listitem> - - <listitem> - <para> - Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</> - behave correctly when the passed tuple and tuple descriptor have - different numbers of columns (Tom) - </para> - - <para> - This situation is normal when a table has had columns added or removed, - but these two functions didn't handle it properly. - The only likely consequence is an incorrect error indication. - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</>'s parsing of <command>CREATE USER</> (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix recent breakage of <literal>pg_ctl restart</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008i (for - DST law changes in Argentina, Brazil, Mauritius, Syria) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-18"> - <title>Release 8.0.18</title> - - <formalpara> - <title>Release date:</title> - <para>2008-09-22</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.17. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.18</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Widen local lock counters from 32 to 64 bits (Tom) - </para> - - <para> - This responds to reports that the counters could overflow in - sufficiently long transactions, leading to unexpected <quote>lock is - already held</> errors. - </para> - </listitem> - - <listitem> - <para> - Add checks in executor startup to ensure that the tuples produced by an - <command>INSERT</> or <command>UPDATE</> will match the target table's - current rowtype (Tom) - </para> - - <para> - <command>ALTER COLUMN TYPE</>, followed by re-use of a previously - cached plan, could produce this type of situation. The check protects - against data corruption and/or crashes that could ensue. - </para> - </listitem> - - <listitem> - <para> - Fix datetime input functions to correctly detect integer overflow when - running on a 64-bit platform (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve performance of writing very long log messages to syslog (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT - ON</> query (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner to estimate that <literal>GROUP BY</> expressions yielding - boolean results always result in two groups, regardless of the - expressions' contents (Tom) - </para> - - <para> - This is very substantially more accurate than the regular <literal>GROUP - BY</> estimate for certain boolean tests like <replaceable>col</> - <literal>IS NULL</>. - </para> - </listitem> - - <listitem> - <para> - Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful - about the encoding of data sent to or from Tcl (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python to work with Python 2.5 - </para> - - <para> - This is a back-port of fixes made during the 8.2 development cycle. - </para> - </listitem> - - <listitem> - <para> - Improve <application>pg_dump</> and <application>pg_restore</>'s - error reporting after failure to send a SQL command (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to properly preserve postmaster - command-line arguments across a <literal>restart</> (Bruce) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008f (for - DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, - Pakistan, Palestine, and Paraguay) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-17"> - <title>Release 8.0.17</title> - - <formalpara> - <title>Release date:</title> - <para>2008-06-12</para> - </formalpara> - - <para> - This release contains one serious bug fix over 8.0.16. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.17</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom) - </para> - - <para> - Before this fix, a negative constant in a view or rule might be dumped - as, say, <literal>-42::integer</>, which is subtly incorrect: it should - be <literal>(-42)::integer</> due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - <productname>PostgreSQL</> to reject what had been a valid - <command>SELECT DISTINCT</> view query. Since this could result in - <application>pg_dump</> output failing to reload, it is being treated - as a high-priority fix. The only released versions in which dump - output is actually incorrect are 8.3.1 and 8.2.7. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-16"> - <title>Release 8.0.16</title> - - <formalpara> - <title>Release date:</title> - <para>never released</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.15. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.16</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new - column is correctly checked to see if it's been initialized to all - non-nulls (Brendan Jurd) - </para> - - <para> - Previous versions neglected to check this requirement at all. - </para> - </listitem> - - <listitem> - <para> - Fix possible <command>CREATE TABLE</> failure when inheriting the - <quote>same</> constraint from multiple parent relations that - inherited that constraint from a common ancestor (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix conversions between ISO-8859-5 and other encodings to handle - Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with - two dots) (Sergey Burladyan) - </para> - </listitem> - - <listitem> - <para> - Fix a few datatype input functions - that were allowing unused bytes in their results to contain - uninitialized, unpredictable values (Tom) - </para> - - <para> - This could lead to failures in which two apparently identical literal - values were not seen as equal, resulting in the parser complaining - about unmatched <literal>ORDER BY</> and <literal>DISTINCT</> - expressions. - </para> - </listitem> - - <listitem> - <para> - Fix a corner case in regular-expression substring matching - (<literal>substring(<replaceable>string</> from - <replaceable>pattern</>)</literal>) (Tom) - </para> - - <para> - The problem occurs when there is a match to the pattern overall but - the user has specified a parenthesized subexpression and that - subexpression hasn't got a match. An example is - <literal>substring('foo' from 'foo(bar)?')</>. - This should return NULL, since <literal>(bar)</> isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - <literal>foo</>). - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008c (for - DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, - Argentina/San_Luis, and Chile) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect result from <application>ecpg</>'s - <function>PGTYPEStimestamp_sub()</> function (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix core dump in <filename>contrib/xml2</>'s - <function>xpath_table()</> function when the input query returns a - NULL value (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</>'s makefile to not override - <literal>CFLAGS</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</> - 4.3 (Tom) - </para> - - <para> - This problem affects <quote>old style</> (V0) C functions that - return boolean. The fix is already in 8.3, but the need to - back-patch it was not realized at the time. - </para> - </listitem> - - <listitem> - <para> - Fix longstanding <command>LISTEN</>/<command>NOTIFY</> - race condition (Tom) - </para> - - <para> - In rare cases a session that had just executed a - <command>LISTEN</> might not get a notification, even though - one would be expected because the concurrent transaction executing - <command>NOTIFY</> was observed to commit later. - </para> - - <para> - A side effect of the fix is that a transaction that has executed - a not-yet-committed <command>LISTEN</> command will not see any - row in <structname>pg_listener</> for the <command>LISTEN</>, - should it choose to look; formerly it would have. This behavior - was never documented one way or the other, but it is possible that - some applications depend on the old behavior. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash when an error occurs during a query using a hash index - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix input of datetime values for February 29 in years BC (Tom) - </para> - - <para> - The former coding was mistaken about which years were leap years. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>unrecognized node type</> error in some variants of - <command>ALTER OWNER</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to correctly extract the postmaster's port - number from command-line options (Itagaki Takahiro, Tom) - </para> - - <para> - Previously, <literal>pg_ctl start -w</> could try to contact the - postmaster on the wrong port, leading to bogus reports of startup - failure. - </para> - </listitem> - - <listitem> - <para> - Use <option>-fwrapv</> to defend against possible misoptimization - in recent <application>gcc</> versions (Tom) - </para> - - <para> - This is known to be necessary when building <productname>PostgreSQL</> - with <application>gcc</> 4.3 or later. - </para> - </listitem> - - <listitem> - <para> - Fix display of constant expressions in <literal>ORDER BY</> - and <literal>GROUP BY</> (Tom) - </para> - - <para> - An explicitly casted constant would be shown incorrectly. This could - for example lead to corruption of a view definition during - dump and reload. - </para> - </listitem> - - <listitem> - <para> - Fix <application>libpq</> to handle NOTICE messages correctly - during COPY OUT (Tom) - </para> - - <para> - This failure has only been observed to occur when a user-defined - datatype's output routine issues a NOTICE, but there is no - guarantee it couldn't happen due to other causes. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-15"> - <title>Release 8.0.15</title> - - <formalpara> - <title>Release date:</title> - <para>2008-01-07</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.14, - including fixes for significant security issues. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <para> - This is the last 8.0.X release for which the <productname>PostgreSQL</> - community will produce binary packages for <productname>Windows</>. - Windows users are encouraged to move to 8.2.X or later, - since there are Windows-specific fixes in 8.2.X that - are impractical to back-port. 8.0.X will continue to - be supported on other platforms. - </para> - - <sect2> - <title>Migration to Version 8.0.15</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent functions in indexes from executing with the privileges of - the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom) - </para> - - <para> - Functions used in index expressions and partial-index - predicates are evaluated whenever a new table entry is made. It has - long been understood that this poses a risk of trojan-horse code - execution if one modifies a table owned by an untrustworthy user. - (Note that triggers, defaults, check constraints, etc. pose the - same type of risk.) But functions in indexes pose extra danger - because they will be executed by routine maintenance operations - such as <command>VACUUM FULL</>, which are commonly performed - automatically under a superuser account. For example, a nefarious user - can execute code with superuser privileges by setting up a - trojan-horse index definition and waiting for the next routine vacuum. - The fix arranges for standard maintenance operations - (including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>, - and <command>CLUSTER</>) to execute as the table owner rather than - the calling user, using the same privilege-switching mechanism already - used for <literal>SECURITY DEFINER</> functions. To prevent bypassing - this security measure, execution of <command>SET SESSION - AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a - <literal>SECURITY DEFINER</> context. (CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Repair assorted bugs in the regular-expression package (Tom, Will Drewry) - </para> - - <para> - Suitably crafted regular-expression patterns could cause crashes, - infinite or near-infinite looping, and/or massive memory consumption, - all of which pose denial-of-service hazards for applications that - accept regex search patterns from untrustworthy sources. - (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</> to use only - password authentication, as a security measure (Joe) - </para> - - <para> - The fix that appeared for this in 8.0.14 was incomplete, as it plugged - the hole for only some <filename>dblink</> functions. (CVE-2007-6601, - CVE-2007-3278) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2007k - (in particular, recent Argentina changes) (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner failure in some cases of <literal>WHERE false AND var IN - (SELECT ...)</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Preserve the tablespace of indexes that are - rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Make archive recovery always start a new WAL timeline, rather than only - when a recovery stop time was used (Simon) - </para> - - <para> - This avoids a corner-case risk of trying to overwrite an existing - archived copy of the last WAL segment, and seems simpler and cleaner - than the original definition. - </para> - </listitem> - - <listitem> - <para> - Make <command>VACUUM</> not use all of <varname>maintenance_work_mem</> - when the table is too small for it to be useful (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Fix potential crash in <function>translate()</> when using a multibyte - database encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Perl to cope when platform's Perl defines type <literal>bool</> - as <literal>int</> rather than <literal>char</> (Tom) - </para> - - <para> - While this could theoretically happen anywhere, no standard build of - Perl did things this way ... until <productname>Mac OS X</> 10.5. - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python to not crash on long exception messages (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_dump</> to correctly handle inheritance child tables - that have default expressions different from their parent's (Tom) - </para> - </listitem> - - <listitem> - <para> - <application>ecpg</> parser fixes (Michael) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle - NULL rowid as a category in its own right, rather than crashing (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix <type>tsvector</> and <type>tsquery</> output routines to - escape backslashes correctly (Teodor, Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix crash of <function>to_tsvector()</> on huge input strings (Teodor) - </para> - </listitem> - - <listitem> - <para> - Require a specific version of <productname>Autoconf</> to be used - when re-generating the <command>configure</> script (Peter) - </para> - - <para> - This affects developers and packagers only. The change was made - to prevent accidental use of untested combinations of - <productname>Autoconf</> and <productname>PostgreSQL</> versions. - You can remove the version check if you really want to use a - different <productname>Autoconf</> version, but it's - your responsibility whether the result works or not. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-14"> - <title>Release 8.0.14</title> - - <formalpara> - <title>Release date:</title> - <para>2007-09-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.13. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.14</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent index corruption when a transaction inserts rows and - then aborts close to the end of a concurrent <command>VACUUM</> - on the same table (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix excessive logging of <acronym>SSL</> error messages (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix logging so that log messages are never interleaved when using - the syslogger process (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix crash when <varname>log_min_error_statement</> logging runs out - of memory (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect handling of some foreign-key corner cases (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent <command>CLUSTER</> from failing - due to attempting to process temporary tables of other sessions (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Update the time zone database rules, particularly New Zealand's upcoming changes (Tom) - </para> - </listitem> - - <listitem> - <para> - Windows socket improvements (Magnus) - </para> - </listitem> - - <listitem> - <para> - Suppress timezone name (<literal>%Z</>) in log timestamps on Windows - because of possible encoding mismatches (Tom) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</> to use only - password authentication, as a security measure (Joe) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-13"> - <title>Release 8.0.13</title> - - <formalpara> - <title>Release date:</title> - <para>2007-04-23</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.12, - including a security fix. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.13</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Support explicit placement of the temporary-table schema within - <varname>search_path</>, and disable searching it for functions - and operators (Tom) - </para> - <para> - This is needed to allow a security-definer function to set a - truly secure value of <varname>search_path</>. Without it, - an unprivileged SQL user can use temporary objects to execute code - with the privileges of the security-definer function (CVE-2007-2138). - See <command>CREATE FUNCTION</> for more information. - </para> - </listitem> - - <listitem> - <para> - <filename>/contrib/tsearch2</> crash fixes (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles - <command>UPDATE</> chains (Tom, Pavan Deolasee) - </para> - </listitem> - - <listitem> - <para> - Fix PANIC during enlargement of a hash index (bug introduced in 8.0.10) - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix POSIX-style timezone specs to follow new USA DST rules (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-12"> - <title>Release 8.0.12</title> - - <formalpara> - <title>Release date:</title> - <para>2007-02-07</para> - </formalpara> - - <para> - This release contains one fix from 8.0.11. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.12</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Remove overly-restrictive check for type length in constraints and - functional indexes(Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-11"> - <title>Release 8.0.11</title> - - <formalpara> - <title>Release date:</title> - <para>2007-02-05</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.10, including - a security fix. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.11</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Remove security vulnerabilities that allowed connected users - to read backend memory (Tom) - </para> - <para> - The vulnerabilities involve suppressing the normal check that a SQL - function returns the data type it's declared to, and changing the - data type of a table column (CVE-2007-0555, CVE-2007-0556). These - errors can easily be exploited to cause a backend crash, and in - principle might be used to read database content that the user - should not be able to access. - </para> - </listitem> - - <listitem> - <para> - Fix rare bug wherein btree index page splits could fail - due to choosing an infeasible split point (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix for rare Assert() crash triggered by <literal>UNION</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Tighten security of multi-byte character processing for UTF8 sequences - over three bytes long (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-10"> - <title>Release 8.0.10</title> - - <formalpara> - <title>Release date:</title> - <para>2007-01-08</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.9. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.10</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Improve handling of <function>getaddrinfo()</> on AIX (Tom) - </para> - - <para> - This fixes a problem with starting the statistics collector, - among other things. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>failed to re-find parent key</> errors in - <command>VACUUM</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix race condition for truncation of a large relation across a - gigabyte boundary by <command>VACUUM</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bugs affecting multi-gigabyte hash indexes (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible deadlock in Windows signal handling (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix error when constructing an <literal>ARRAY[]</> made up of multiple - empty elements (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix ecpg memory leak during connection (Michael) - </para> - </listitem> - - <listitem> - <para> - <function>to_number()</> and <function>to_char(numeric)</> - are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for - new <application>initdb</> installs (Tom) - </para> - - <para> - This is because <varname>lc_numeric</> can potentially - change the output of these functions. - </para> - </listitem> - - <listitem> - <para> - Improve index usage of regular expressions that use parentheses (Tom) - </para> - - <para> - This improves <application>psql</> <literal>\d</> performance also. - </para> - </listitem> - - <listitem> - <para> - Update timezone database - </para> - - <para> - This affects Australian and Canadian daylight-savings rules in - particular. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-9"> - <title>Release 8.0.9</title> - - <formalpara> - <title>Release date:</title> - <para>2006-10-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.8. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.9</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Fix crash when referencing <literal>NEW</> row -values in rule WHERE expressions (Tom)</para></listitem> -<listitem><para>Fix core dump when an untyped literal is taken as -ANYARRAY</para></listitem> -<listitem><para>Fix mishandling of AFTER triggers when query contains a SQL -function returning multiple rows (Tom)</para></listitem> -<listitem><para>Fix <command>ALTER TABLE ... TYPE</> to recheck -<literal>NOT NULL</> for <literal>USING</> clause (Tom)</para></listitem> -<listitem><para>Fix <function>string_to_array()</> to handle overlapping - matches for the separator string</para> -<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>. -</para></listitem> -<listitem><para>Fix corner cases in pattern matching for - <application>psql</>'s <literal>\d</> commands</para></listitem> -<listitem><para>Fix index-corrupting bugs in /contrib/ltree - (Teodor)</para></listitem> -<listitem><para>Numerous robustness fixes in <application>ecpg</> (Joachim -Wieland)</para></listitem> -<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem> -<listitem><para>Fix instability of statistics collection on Win32 (Tom, Andrew)</para></listitem> -<listitem><para>Fixes for <systemitem class="osname">AIX</> and -<productname>Intel</> compilers (Tom)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-8"> - <title>Release 8.0.8</title> - - <formalpara> - <title>Release date:</title> - <para>2006-05-23</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.7, - including patches for extremely serious security issues. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.8</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - - <para> - Full security against the SQL-injection attacks described in - CVE-2006-2313 and CVE-2006-2314 might require changes in application - code. If you have applications that embed untrustworthy strings - into SQL commands, you should examine them as soon as possible to - ensure that they are using recommended escaping techniques. In - most cases, applications should be using subroutines provided by - libraries or drivers (such as <application>libpq</>'s - <function>PQescapeStringConn()</>) to perform string escaping, - rather than relying on <foreignphrase>ad hoc</> code to do it. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Change the server to reject invalidly-encoded multibyte -characters in all cases (Tatsuo, Tom)</para> -<para>While <productname>PostgreSQL</> has been moving in this direction for -some time, the checks are now applied uniformly to all encodings and all -textual input, and are now always errors not merely warnings. This change -defends against SQL-injection attacks of the type described in CVE-2006-2313. -</para></listitem> - -<listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para> -<para>As a server-side defense against SQL-injection attacks of the type -described in CVE-2006-2314, the server now only accepts <literal>''</> and not -<literal>\'</> as a representation of ASCII single quote in SQL string -literals. By default, <literal>\'</> is rejected only when -<varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK, -GB18030, or UHC), which is the scenario in which SQL injection is possible. -A new configuration parameter <varname>backslash_quote</> is available to -adjust this behavior when needed. Note that full security against -CVE-2006-2314 might require client-side changes; the purpose of -<varname>backslash_quote</> is in part to make it obvious that insecure -clients are insecure. -</para></listitem> - -<listitem><para>Modify <application>libpq</>'s string-escaping routines to be -aware of encoding considerations and -<varname>standard_conforming_strings</></para> -<para>This fixes <application>libpq</>-using applications for the security -issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs -them against the planned changeover to SQL-standard string literal syntax. -Applications that use multiple <productname>PostgreSQL</> connections -concurrently should migrate to <function>PQescapeStringConn()</> and -<function>PQescapeByteaConn()</> to ensure that escaping is done correctly -for the settings in use in each database connection. Applications that -do string escaping <quote>by hand</> should be modified to rely on library -routines instead. -</para></listitem> - -<listitem><para>Fix some incorrect encoding conversion functions</para> -<para><function>win1251_to_iso</>, <function>alt_to_iso</>, -<function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>, -<function>mic_to_euc_tw</> were all broken to varying -extents. -</para></listitem> - -<listitem><para>Clean up stray remaining uses of <literal>\'</> in strings -(Bruce, Jan)</para></listitem> - -<listitem><para>Fix bug that sometimes caused OR'd index scans to -miss rows they should have returned</para></listitem> - -<listitem><para>Fix WAL replay for case where a btree index has been -truncated</para></listitem> - -<listitem><para>Fix <literal>SIMILAR TO</> for patterns involving -<literal>|</> (Tom)</para></listitem> - -<listitem><para>Fix <command>SELECT INTO</> and <command>CREATE TABLE AS</> to -create tables in the default tablespace, not the base directory (Kris -Jurka)</para></listitem> - -<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael -Fuhr)</para></listitem> - -<listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)</para></listitem> - -<listitem><para>Fix various minor memory leaks</para></listitem> - -<listitem><para>Fix problem with password prompting on some Win32 systems -(Robert Kinberg)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-7"> - <title>Release 8.0.7</title> - - <formalpara> - <title>Release date:</title> - <para>2006-02-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.6. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.7</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6">. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> - -<listitem><para>Fix potential crash in <command>SET -SESSION AUTHORIZATION</> (CVE-2006-0553)</para> -<para>An unprivileged user could crash the server process, resulting in -momentary denial of service to other users, if the server has been compiled -with Asserts enabled (which is not the default). -Thanks to Akio Ishida for reporting this problem. -</para></listitem> - -<listitem><para>Fix bug with row visibility logic in self-inserted -rows (Tom)</para> -<para>Under rare circumstances a row inserted by the current command -could be seen as already valid, when it should not be. Repairs bug -created in 8.0.4, 7.4.9, and 7.3.11 releases. -</para></listitem> - -<listitem><para>Fix race condition that could lead to <quote>file already -exists</> errors during pg_clog and pg_subtrans file creation -(Tom)</para></listitem> - -<listitem><para>Fix cases that could lead to crashes if a cache-invalidation -message arrives at just the wrong time (Tom)</para></listitem> - -<listitem><para>Properly check <literal>DOMAIN</> constraints for -<literal>UNKNOWN</> parameters in prepared statements -(Neil)</para></listitem> - -<listitem><para>Ensure <command>ALTER COLUMN TYPE</> will process -<literal>FOREIGN KEY</>, <literal>UNIQUE</>, and <literal>PRIMARY KEY</> -constraints in the proper order (Nakano Yoshihisa)</para></listitem> - -<listitem><para>Fixes to allow restoring dumps that have cross-schema -references to custom operators or operator classes (Tom)</para></listitem> - -<listitem><para>Allow <application>pg_restore</> to continue properly after a -<command>COPY</> failure; formerly it tried to treat the remaining -<command>COPY</> data as SQL commands (Stephen Frost)</para></listitem> - -<listitem><para>Fix <application>pg_ctl</> <literal>unregister</> crash -when the data directory is not specified (Magnus)</para></listitem> - -<listitem><para>Fix <application>ecpg</> crash on AMD64 and PPC -(Neil)</para></listitem> - -<listitem><para>Recover properly if error occurs during argument passing -in <application>PL/python</> (Neil)</para></listitem> - -<listitem><para>Fix <application>PL/perl</>'s handling of locales on -Win32 to match the backend (Andrew)</para></listitem> - -<listitem><para>Fix crash when <literal>log_min_messages</> is set to -<literal>DEBUG3</> or above in <filename>postgresql.conf</> on Win32 -(Bruce)</para></listitem> - -<listitem><para>Fix <application>pgxs</> <literal>-L</> library path -specification for Win32, Cygwin, OS X, AIX (Bruce)</para></listitem> - -<listitem><para>Check that SID is enabled while checking for Win32 admin -privileges (Magnus)</para></listitem> - -<listitem><para>Properly reject out-of-range date inputs (Kris -Jurka)</para></listitem> - -<listitem><para>Portability fix for testing presence of <function>finite</> -and <function>isinf</> during configure (Tom)</para></listitem> - -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-6"> - <title>Release 8.0.6</title> - - <formalpara> - <title>Release date:</title> - <para>2006-01-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.5. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.6</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, - see <xref linkend="release-8-0-3">. - Also, you might need to <command>REINDEX</> indexes on textual - columns after updating, if you are affected by the locale or - <application>plperl</> issues described below. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> - -<listitem><para>Fix Windows code so that postmaster will continue rather -than exit if there is no more room in ShmemBackendArray (Magnus)</para> -<para>The previous behavior could lead to a denial-of-service situation if too -many connection requests arrive close together. This applies -<emphasis>only</> to the Windows port.</para></listitem> - -<listitem><para>Fix bug introduced in 8.0 that could allow ReadBuffer -to return an already-used page as new, potentially causing loss of -recently-committed data (Tom)</para></listitem> - -<listitem><para>Fix for protocol-level Describe messages issued -outside a transaction or in a failed transaction (Tom)</para></listitem> - -<listitem><para>Fix character string comparison for locales that consider -different character combinations as equal, such as Hungarian (Tom)</para> -<para>This might require <command>REINDEX</> to fix existing indexes on -textual columns.</para></listitem> - -<listitem><para>Set locale environment variables during postmaster startup -to ensure that <application>plperl</> won't change the locale later</para> -<para>This fixes a problem that occurred if the <application>postmaster</> was -started with environment variables specifying a different locale than what -<application>initdb</> had been told. Under these conditions, any use of -<application>plperl</> was likely to lead to corrupt indexes. You might need -<command>REINDEX</> to fix existing indexes on -textual columns if this has happened to you.</para></listitem> - -<listitem><para>Allow more flexible relocation of installation -directories (Tom)</para> -<para>Previous releases supported relocation only if all installation -directory paths were the same except for the last component.</para></listitem> - -<listitem><para>Fix longstanding bug in strpos() and regular expression -handling in certain rarely used Asian multi-byte character sets (Tatsuo) -</para></listitem> - -<listitem><para>Various fixes for functions returning <literal>RECORD</>s -(Tom) </para></listitem> - -<listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt, -which caused it not to use all available salt space for MD5 and -XDES algorithms (Marko Kreen, Solar Designer)</para> -<para>Salts for Blowfish and standard DES are unaffected.</para></listitem> - -<listitem><para>Fix <filename>/contrib/dblink</> to throw an error, -rather than crashing, when the number of columns specified is different from -what's actually returned by the query (Joe)</para></listitem> - -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-5"> - <title>Release 8.0.5</title> - - <formalpara> - <title>Release date:</title> - <para>2005-12-12</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.4. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.5</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, - see <xref linkend="release-8-0-3">. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> - -<listitem><para>Fix race condition in transaction log management</para> -<para>There was a narrow window in which an I/O operation could be initiated -for the wrong page, leading to an Assert failure or data -corruption.</para> -</listitem> - -<listitem><para>Fix bgwriter problems after recovering from errors -(Tom)</para> -<para> -The background writer was found to leak buffer pins after write errors. -While not fatal in itself, this might lead to mysterious blockages of -later VACUUM commands. -</para> -</listitem> - -<listitem><para>Prevent failure if client sends Bind protocol message -when current transaction is already aborted</para></listitem> - -<listitem><para><filename>/contrib/ltree</> fixes (Teodor)</para></listitem> - -<listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem> - -<listitem><para>Retry file reads and writes after Windows -NO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem> - -<listitem><para>Fix intermittent failure when <varname>log_line_prefix</> -includes <literal>%i</></para></listitem> - -<listitem><para>Fix <application>psql</> performance issue with long scripts -on Windows (Merlin Moncure)</para></listitem> - -<listitem><para>Fix missing updates of <filename>pg_group</> flat -file</para></listitem> - -<listitem><para>Fix longstanding planning error for outer joins</para> -<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is -only supported with merge-joinable join conditions</>.</para></listitem> - -<listitem><para>Postpone timezone initialization until after -<filename>postmaster.pid</> is created</para> -<para>This avoids confusing startup scripts that expect the pid file to appear -quickly.</para></listitem> - -<listitem><para>Prevent core dump in <application>pg_autovacuum</> when a -table has been dropped</para></listitem> - -<listitem><para>Fix problems with whole-row references (<literal>foo.*</>) -to subquery results</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-4"> - <title>Release 8.0.4</title> - - <formalpara> - <title>Release date:</title> - <para>2005-10-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.3. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.4</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, - see <xref linkend="release-8-0-3">. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Fix error that allowed <command>VACUUM</> to remove -<literal>ctid</> chains too soon, and add more checking in code that follows -<literal>ctid</> links</para> -<para>This fixes a long-standing problem that could cause crashes in very rare -circumstances.</para></listitem> -<listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified -length when using a multiple-byte character set (Yoshiyuki Asaba)</para> -<para>In prior releases, the padding of <type>CHAR()</> was incorrect -because it only padded to the specified number of bytes without -considering how many characters were stored.</para></listitem> -<listitem><para>Force a checkpoint before committing <command>CREATE -DATABASE</></para> -<para>This should fix recent reports of <quote>index is not a btree</> -failures when a crash occurs shortly after <command>CREATE -DATABASE</>.</para></listitem> -<listitem><para>Fix the sense of the test for read-only transaction -in <command>COPY</></para> -<para>The code formerly prohibited <command>COPY TO</>, where it should -prohibit <command>COPY FROM</>. -</para></listitem> -<listitem><para>Handle consecutive embedded newlines in <command>COPY</> -CSV-mode input</para></listitem> -<listitem><para>Fix <function>date_trunc(week)</> for dates near year -end</para></listitem> -<listitem><para>Fix planning problem with outer-join ON clauses that reference -only the inner-side relation</para></listitem> -<listitem><para>Further fixes for <literal>x FULL JOIN y ON true</> corner -cases</para></listitem> -<listitem><para>Fix overenthusiastic optimization of <literal>x IN (SELECT -DISTINCT ...)</> and related cases</para></listitem> -<listitem><para>Fix mis-planning of queries with small <literal>LIMIT</> -values due to poorly thought out <quote>fuzzy</> cost -comparison</para></listitem> -<listitem><para>Make <function>array_in</> and <function>array_recv</> more -paranoid about validating their OID parameter</para></listitem> -<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE -a...</> with GiST index on column <literal>a</></para></listitem> -<listitem><para>Improve robustness of datetime parsing</para></listitem> -<listitem><para>Improve checking for partially-written WAL -pages</para></listitem> -<listitem><para>Improve robustness of signal handling when SSL is -enabled</para></listitem> -<listitem><para>Improve MIPS and M68K spinlock code</para></listitem> -<listitem><para>Don't try to open more than <literal>max_files_per_process</> -files during postmaster startup</para></listitem> -<listitem><para>Various memory leakage fixes</para></listitem> -<listitem><para>Various portability improvements</para></listitem> -<listitem><para>Update timezone data files</para></listitem> -<listitem><para>Improve handling of DLL load failures on Windows</para></listitem> -<listitem><para>Improve random-number generation on Windows</para></listitem> -<listitem><para>Make <literal>psql -f filename</> return a nonzero exit code -when opening the file fails</para></listitem> -<listitem><para>Change <application>pg_dump</> to handle inherited check -constraints more reliably</para></listitem> -<listitem><para>Fix password prompting in <application>pg_restore</> on -Windows</para></listitem> -<listitem><para>Fix PL/pgSQL to handle <literal>var := var</> correctly when -the variable is of pass-by-reference type</para></listitem> -<listitem><para>Fix PL/Perl <literal>%_SHARED</> so it's actually -shared</para></listitem> -<listitem><para>Fix <filename>contrib/pg_autovacuum</> to allow sleep -intervals over 2000 sec</para></listitem> -<listitem><para>Update <filename>contrib/tsearch2</> to use current Snowball -code</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-3"> - <title>Release 8.0.3</title> - - <formalpara> - <title>Release date:</title> - <para>2005-05-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.2, including several - security-related issues. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.3</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - it is one possible way of handling two significant security problems - that have been found in the initial contents of 8.0.X system - catalogs. A dump/initdb/reload sequence using 8.0.3's initdb will - automatically correct these problems. - </para> - - <para> - The larger security problem is that the built-in character set encoding - conversion functions can be invoked from SQL commands by unprivileged - users, but the functions were not designed for such use and are not - secure against malicious choices of arguments. The fix involves changing - the declared parameter list of these functions so that they can no longer - be invoked from SQL commands. (This does not affect their normal use - by the encoding conversion machinery.) - </para> - - <para> - The lesser problem is that the <filename>contrib/tsearch2</> module - creates several functions that are improperly declared to return - <type>internal</> when they do not accept <type>internal</> arguments. - This breaks type safety for all functions using <type>internal</> - arguments. - </para> - - <para> - It is strongly recommended that all installations repair these errors, - either by initdb or by following the manual repair procedure given - below. The errors at least allow unprivileged database users to crash - their server process, and might allow unprivileged users to gain the - privileges of a database superuser. - </para> - - <para> - If you wish not to do an initdb, perform the same manual repair - procedures shown in the <link linkend="release-7-4-8">7.4.8 release - notes</link>. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Change encoding function signature to prevent -misuse</para></listitem> -<listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of -<type>INTERNAL</> function results</para></listitem> -<listitem><para>Guard against incorrect second parameter to -<function>record_out</></para></listitem> -<listitem><para>Repair ancient race condition that allowed a transaction to be -seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner -than for other purposes</para> -<para>This is an extremely serious bug since it could lead to apparent -data inconsistencies being briefly visible to applications.</para></listitem> -<listitem><para>Repair race condition between relation extension and -VACUUM</para> -<para>This could theoretically have caused loss of a page's worth of -freshly-inserted data, although the scenario seems of very low probability. -There are no known cases of it having caused more than an Assert failure. -</para></listitem> -<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para> -<para> -The comparison code was wrong in the case where the -<literal>--enable-integer-datetimes</> configuration switch had been used. -NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column, -it will need to be <command>REINDEX</>ed after installing this update, because -the fix corrects the sort order of column values. -</para></listitem> -<listitem><para>Fix <function>EXTRACT(EPOCH)</> for -<type>TIME WITH TIME ZONE</> values</para></listitem> -<listitem><para>Fix mis-display of negative fractional seconds in -<type>INTERVAL</> values</para> -<para> -This error only occurred when the -<literal>--enable-integer-datetimes</> configuration switch had been used. -</para></listitem> -<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</> -correctly (Neil)</para></listitem> -<listitem><para>Still more 64-bit fixes for -<filename>contrib/intagg</></para></listitem> -<listitem><para>Prevent incorrect optimization of functions returning -<type>RECORD</></para></listitem> -<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem> -<listitem><para>Fix Borland makefile for libpq</para></listitem> -<listitem><para>Fix <filename>contrib/btree_gist</> for <type>timetz</> type -(Teodor)</para></listitem> -<listitem><para>Make <command>pg_ctl</> check the PID found in -<filename>postmaster.pid</> to see if it is still a live -process</para></listitem> -<listitem><para>Fix <command>pg_dump</>/<command>pg_restore</> problems caused -by addition of dump timestamps</para></listitem> -<listitem><para>Fix interaction between materializing holdable cursors and -firing deferred triggers during transaction commit</para></listitem> -<listitem><para>Fix memory leak in SQL functions returning pass-by-reference -data types</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-2"> - <title>Release 8.0.2</title> - - <formalpara> - <title>Release date:</title> - <para>2005-04-07</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.1. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.2</title> - - <para> - A dump/restore is not required for those running 8.0.*. - This release updates the major version number of the - <productname>PostgreSQL</productname> libraries, so it might be - necessary to re-link some user applications if they cannot - find the properly-numbered shared library. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Increment the major version number of all interface -libraries (Bruce)</para> -<para> -This should have been done in 8.0.0. It is required so 7.4.X versions -of PostgreSQL client applications, like <application>psql</>, -can be used on the same machine as 8.0.X applications. This might require -re-linking user applications that use these libraries. -</para></listitem> -<listitem><para>Add Windows-only <varname>wal_sync_method</> setting of -<option>fsync_writethrough</> (Magnus, Bruce)</para> -<para> -This setting causes <productname>PostgreSQL</productname> to write through -any disk-drive write cache when writing to WAL. -This behavior was formerly called <option>fsync</>, but was -renamed because it acts quite differently from <option>fsync</> on other -platforms. -</para> -</listitem> -<listitem><para>Enable the <varname>wal_sync_method</> setting of -<option>open_datasync</> on Windows, and make it the default for that - platform (Magnus, Bruce)</para> -<para> -Because the default is no longer <option>fsync_writethrough</>, -data loss is possible during a power failure if the disk drive has -write caching enabled. To turn off the write cache on Windows, -from the <application>Device Manager</>, choose the drive properties, -then <literal>Policies</>. -</para> -</listitem> -<listitem><para>New cache management algorithm <acronym>2Q</> replaces -<acronym>ARC</> (Tom)</para> -<para> -This was done to avoid a pending US patent on <acronym>ARC</>. The -<acronym>2Q</> code might be a few percentage points slower than -<acronym>ARC</> for some work loads. A better cache management algorithm -will appear in 8.1. -</para></listitem> -<listitem><para>Planner adjustments to improve behavior on freshly-created -tables (Tom)</para></listitem> -<listitem><para>Allow plpgsql to assign to an element of an array that is -initially <literal>NULL</> (Tom)</para> -<para> -Formerly the array would remain <literal>NULL</>, but now it becomes a -single-element array. The main SQL engine was changed to handle -<command>UPDATE</> of a null array value this way in 8.0, but the similar -case in plpgsql was overlooked. -</para> -</listitem> -<listitem><para>Convert <literal>\r\n</> and <literal>\r</> to <literal>\n</> -in plpython function bodies (Michael Fuhr)</para> -<para> - This prevents syntax errors when plpython code is written on a Windows or - Mac client. -</para> -</listitem> -<listitem><para>Allow SPI cursors to handle utility commands that return rows, -such as <command>EXPLAIN</> (Tom)</para></listitem> -<listitem><para>Fix <command>CLUSTER</> failure after <command>ALTER TABLE -SET WITHOUT OIDS</> (Tom)</para></listitem> -<listitem><para>Reduce memory usage of <command>ALTER TABLE ADD COLUMN</> -(Neil)</para></listitem> -<listitem><para>Fix <command>ALTER LANGUAGE RENAME</> (Tom)</para></listitem> -<listitem><para>Document the Windows-only <literal>register</> and -<literal>unregister</> options of <application>pg_ctl</> (Magnus)</para></listitem> -<listitem><para>Ensure operations done during backend shutdown are counted by -statistics collector</para> -<para> -This is expected to resolve reports of <application>pg_autovacuum</> -not vacuuming the system catalogs often enough — it was not being -told about catalog deletions caused by temporary table removal during -backend exit. -</para></listitem> -<listitem><para>Change the Windows default for configuration parameter -<varname>log_destination</> to <option>eventlog</> (Magnus)</para> -<para> -By default, a server running on Windows will now send log output to the -Windows event logger rather than standard error. -</para></listitem> -<listitem><para>Make Kerberos authentication work on Windows (Magnus)</para></listitem> -<listitem><para>Allow <command>ALTER DATABASE RENAME</> by superusers -who aren't flagged as having CREATEDB privilege (Tom)</para></listitem> -<listitem><para>Modify WAL log entries for <command>CREATE</> and -<command>DROP DATABASE</> to not specify absolute paths (Tom)</para> -<para>This allows point-in-time recovery on a different machine with possibly -different database location. Note that <command>CREATE TABLESPACE</> still -poses a hazard in such situations. -</para></listitem> -<listitem><para>Fix crash from a backend exiting with an open transaction -that created a table and opened a cursor on it (Tom)</para></listitem> -<listitem><para>Fix <function>array_map()</> so it can call PL functions -(Tom)</para></listitem> -<listitem><para>Several <filename>contrib/tsearch2</> and -<filename>contrib/btree_gist</> fixes (Teodor) -</para></listitem> -<listitem><para>Fix crash of some <filename>contrib/pgcrypto</> -functions on some platforms (Marko Kreen)</para></listitem> -<listitem><para>Fix <filename>contrib/intagg</> for 64-bit platforms -(Tom)</para></listitem> -<listitem><para>Fix ecpg bugs in parsing of <command>CREATE</> statement -(Michael)</para></listitem> -<listitem><para>Work around gcc bug on powerpc and amd64 causing problems in -ecpg (Christof Petig)</para></listitem> -<listitem><para>Do not use locale-aware versions of <function>upper()</>, -<function>lower()</>, and <function>initcap()</> when the locale is -<literal>C</> (Bruce)</para> -<para> - This allows these functions to work on platforms that generate errors - for non-7-bit data when the locale is <literal>C</>. -</para></listitem> -<listitem><para>Fix <function>quote_ident()</> to quote names that match keywords (Tom)</para></listitem> -<listitem><para>Fix <function>to_date()</> to behave reasonably when -<literal>CC</> and <literal>YY</> fields are both used (Karel)</para></listitem> -<listitem><para>Prevent <function>to_char(interval)</> from failing -when given a zero-month interval (Tom)</para></listitem> -<listitem><para>Fix wrong week returned by <function>date_trunc('week')</> -(Bruce)</para> -<para> -<function>date_trunc('week')</> -returned the wrong year for the first few days of January in some years. -</para></listitem> -<listitem><para>Use the correct default mask length for class <literal>D</> -addresses in <type>INET</> data types (Tom)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-1"> - <title>Release 8.0.1</title> - - <formalpara> - <title>Release date:</title> - <para>2005-01-31</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.0, including several - security-related issues. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0">. - </para> - - <sect2> - <title>Migration to Version 8.0.1</title> - - <para> - A dump/restore is not required for those running 8.0.0. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Disallow <command>LOAD</> to non-superusers</para> -<para> -On platforms that will automatically execute initialization functions of a -shared library (this includes at least Windows and ELF-based Unixen), -<command>LOAD</> can be used to make the server execute arbitrary code. -Thanks to NGS Software for reporting this.</para></listitem> -<listitem><para>Check that creator of an aggregate function has the right to -execute the specified transition functions</para> -<para> -This oversight made it possible to bypass denial of EXECUTE -permission on a function.</para></listitem> -<listitem><para>Fix security and 64-bit issues in -contrib/intagg</para></listitem> -<listitem><para>Add needed STRICT marking to some contrib functions (Kris -Jurka)</para></listitem> -<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too -many parameters (Neil)</para></listitem> -<listitem><para>Make <command>ALTER TABLE ADD COLUMN</> enforce domain -constraints in all cases</para></listitem> -<listitem><para>Fix planning error for FULL and RIGHT outer joins</para> -<para> -The result of the join was mistakenly supposed to be sorted the same as the -left input. This could not only deliver mis-sorted output to the user, but -in case of nested merge joins could give outright wrong answers. -</para></listitem> -<listitem><para>Improve planning of grouped aggregate queries</para></listitem> -<listitem><para><command>ROLLBACK TO <replaceable>savepoint</></command> -closes cursors created since the savepoint</para></listitem> -<listitem><para>Fix inadequate backend stack size on Windows</para></listitem> -<listitem><para>Avoid SHGetSpecialFolderPath() on Windows -(Magnus)</para></listitem> -<listitem><para>Fix some problems in running pg_autovacuum as a Windows -service (Dave Page)</para></listitem> -<listitem><para>Multiple minor bug fixes in -pg_dump/pg_restore</para></listitem> -<listitem><para>Fix ecpg segfault with named structs used in -typedefs (Michael)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0"> - <title>Release 8.0</title> - - <formalpara> - <title>Release date:</title> - <para>2005-01-19</para> - </formalpara> - - <sect2> - <title>Overview</title> - - <para> - Major changes in this release: - </para> - - <variablelist> - <varlistentry> - <term> - Microsoft Windows Native Server - </term> - - <listitem> - <para> - This is the first <productname>PostgreSQL</productname> release - to run natively on <trademark class="registered">Microsoft Windows</> as - a server. It can run as a <productname>Windows</> service. This - release supports NT-based Windows releases like - <productname>Windows 2000 SP4</>, <productname>Windows XP</>, and - <productname>Windows 2003</>. Older releases like - <productname>Windows 95</>, <productname>Windows 98</>, and - <productname>Windows ME</> are not supported because these operating - systems do not have the infrastructure to support - <productname>PostgreSQL</productname>. A separate installer - project has been created to ease installation on - <productname>Windows</> — see <ulink - url="http://www.postgresql.org/ftp/win32/"></ulink>. - </para> - - <para> - Although tested throughout our release cycle, the Windows port - does not have the benefit of years of use in production - environments that <productname>PostgreSQL</productname> has on - Unix platforms. Therefore it should be treated with the same - level of caution as you would a new product. - </para> - - <para> - Previous releases required the Unix emulation toolkit - <productname>Cygwin</> in order to run the server on Windows - operating systems. <productname>PostgreSQL</productname> has - supported native clients on Windows for many years. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Savepoints - </term> - - <listitem> - <para> - Savepoints allow specific parts of a transaction to be aborted - without affecting the remainder of the transaction. Prior - releases had no such capability; there was no way to recover - from a statement failure within a transaction except by - aborting the whole transaction. This feature is valuable for - application writers who require error recovery within a - complex transaction. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Point-In-Time Recovery - </term> - - <listitem> - <para> - In previous releases there was no way to recover from disk - drive failure except to restore from a previous backup or use - a standby replication server. Point-in-time recovery allows - continuous backup of the server. You can recover either to - the point of failure or to some transaction in the past. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Tablespaces - </term> - - <listitem> - <para> - Tablespaces allow administrators to select different file systems - for storage of individual tables, indexes, and databases. - This improves performance and control over disk space - usage. Prior releases used <application>initlocation</> and - manual symlink management for such tasks. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Improved Buffer Management, <command>CHECKPOINT</command>, - <command>VACUUM</command> - </term> - - <listitem> - <para> - This release has a more intelligent buffer replacement strategy, - which will make better use of available shared buffers and - improve performance. The performance impact of vacuum and - checkpoints is also lessened. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Change Column Types - </term> - - <listitem> - <para> - A column's data type can now be changed with <command>ALTER - TABLE</command>. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - New Perl Server-Side Language - </term> - - <listitem> - <para> - A new version of the <application>plperl</> server-side language now - supports a persistent shared storage area, triggers, returning records - and arrays of records, and SPI calls to access the database. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Comma-separated-value (CSV) support in <command>COPY</command> - </term> - - <listitem> - <para> - <command>COPY</command> can now read and write - comma-separated-value files. It has the flexibility to - interpret nonstandard quoting and separation characters too. - </para> - </listitem> - </varlistentry> - - </variablelist> - </sect2> - - <sect2> - <title>Migration to Version 8.0</title> - - <para> - A dump/restore using <application>pg_dump</application> is - required for those wishing to migrate data from any previous - release. - </para> - - <para> - Observe the following incompatibilities: - </para> - - <itemizedlist> - - <listitem> - <para> - In <option>READ COMMITTED</> serialization mode, volatile functions - now see the results of concurrent transactions committed up to the - beginning of each statement within the function, rather than up to the - beginning of the interactive command that called the function. - </para> - </listitem> - - <listitem> - <para> - Functions declared <option>STABLE</> or <option>IMMUTABLE</> always - use the snapshot of the calling query, and therefore do not see the - effects of actions taken after the calling query starts, whether in - their own transaction or other transactions. Such a function must be - read-only, too, meaning that it cannot use any SQL commands other than - <command>SELECT</>. - </para> - </listitem> - - <listitem> - <para> - Nondeferred <option>AFTER</> triggers are now fired immediately - after completion of the triggering query, rather than upon - finishing the current interactive command. This makes a - difference when the triggering query occurred within a function: - the trigger is invoked before the function proceeds to its next - operation. - </para> - </listitem> - - <listitem> - <para> - Server configuration parameters <varname>virtual_host</> and - <varname>tcpip_socket</> have been replaced with a more general - parameter <varname>listen_addresses</>. Also, the server now listens on - <literal>localhost</> by default, which eliminates the need for the - <literal>-i</> postmaster switch in many scenarios. - </para> - </listitem> - - <listitem> - <para> - Server configuration parameters <varname>SortMem</> and - <varname>VacuumMem</> have been renamed to <varname>work_mem</> - and <varname>maintenance_work_mem</> to better reflect their - use. The original names are still supported in - <command>SET</command> and <command>SHOW</command>. - </para> - </listitem> - - <listitem> - <para> - Server configuration parameters <varname>log_pid</>, - <varname>log_timestamp</>, and <varname>log_source_port</> have been - replaced with a more general parameter <varname>log_line_prefix</>. - </para> - </listitem> - - <listitem> - <para> - Server configuration parameter <varname>syslog</> has been - replaced with a more logical <varname>log_destination</> variable to - control the log output destination. - </para> - </listitem> - - <listitem> - <para> - Server configuration parameter <varname>log_statement</> has been - changed so it can selectively log just database modification or - data definition statements. Server configuration parameter - <varname>log_duration</> now prints only when <varname>log_statement</> - prints the query. - </para> - </listitem> - - <listitem> - <para> - Server configuration parameter <varname>max_expr_depth</> parameter has - been replaced with <varname>max_stack_depth</> which measures the - physical stack size rather than the expression nesting depth. This - helps prevent session termination due to stack overflow caused by - recursive functions. - </para> - </listitem> - - <listitem> - <para> - The <function>length()</> function no longer counts trailing spaces in - <type>CHAR(n)</> values. - </para> - </listitem> - - <listitem> - <para> - Casting an integer to <type>BIT(N)</> selects the rightmost N bits of the - integer, not the leftmost N bits as before. - </para> - </listitem> - - <listitem> - <para> - Updating an element or slice of a NULL array value now produces - a nonnull array result, namely an array containing - just the assigned-to positions. - </para> - </listitem> - - <listitem> - <para> - Syntax checking of array input values has been tightened up - considerably. Junk that was previously allowed in odd places with - odd results now causes an error. Empty-string element values - must now be written as <literal>""</>, rather than writing nothing. - Also changed behavior with respect to whitespace surrounding - array elements: trailing whitespace is now ignored, for symmetry - with leading whitespace (which has always been ignored). - </para> - </listitem> - - <listitem> - <para> - Overflow in integer arithmetic operations is now detected and - reported as an error. - </para> - </listitem> - - <listitem> - <para> - The arithmetic operators associated with the single-byte - <type>"char"</> data type have been removed. - </para> - </listitem> - - <listitem> - <para> - The <function>extract()</> function (also called - <function>date_part</>) now returns the proper year for BC dates. - It previously returned one less than the correct year. The - function now also returns the proper values for millennium and - century. - </para> - </listitem> - - <listitem> - <para> - <type>CIDR</> values now must have their nonmasked bits be zero. - For example, we no longer allow - <literal>204.248.199.1/31</literal> as a <type>CIDR</> value. Such - values should never have been accepted by - <productname>PostgreSQL</productname> and will now be rejected. - </para> - </listitem> - - <listitem> - <para> - <command>EXECUTE</command> now returns a completion tag that - matches the executed statement. - </para> - </listitem> - - <listitem> - <para> - <application>psql</>'s <command>\copy</> command now reads or - writes to the query's <literal>stdin/stdout</>, rather than - <application>psql</>'s <literal>stdin/stdout</>. The previous - behavior can be accessed via new - <option>pstdin</>/<option>pstdout</> parameters. - </para> - </listitem> - - <listitem> - <para> - The JDBC client interface has been removed from the core - distribution, and is now hosted at <ulink url= - "http://jdbc.postgresql.org"></ulink>. - </para> - </listitem> - - <listitem> - <para> - The Tcl client interface has also been removed. There are several - Tcl interfaces now hosted at <ulink url= - "http://gborg.postgresql.org"></ulink>. - </para> - </listitem> - - <listitem> - <para> - The server now uses its own time zone database, rather than the - one supplied by the operating system. This will provide consistent - behavior across all platforms. In most cases, there should be - little noticeable difference in time zone behavior, except that - the time zone names used by <command>SET</>/<command>SHOW</> - <varname>TimeZone</> might be different from what your platform provides. - </para> - </listitem> - - <listitem> - <para> - <application>Configure</>'s threading option no longer requires - users to run tests or edit configuration files; threading options - are now detected automatically. - </para> - </listitem> - - <listitem> - <para> - Now that tablespaces have been implemented, - <application>initlocation</> has been removed. - </para> - </listitem> - - <listitem> - <para> - The API for user-defined GiST indexes has been changed. The - Union and PickSplit methods are now passed a pointer to a - special <structname>GistEntryVector</structname> structure, - rather than a <type>bytea</type>. - </para> - </listitem> - - </itemizedlist> - </sect2> - - <sect2> - <title>Deprecated Features</title> - - <para> - Some aspects of <productname>PostgreSQL</productname>'s behavior - have been determined to be suboptimal. For the sake of backward - compatibility these have not been removed in 8.0, but they are - considered deprecated and will be removed in the next major - release. - </para> - - <itemizedlist> - <listitem> - <para> - The 8.1 release will remove the <function>to_char()</> function - for intervals. - </para> - </listitem> - - <listitem> - <para> - The server now warns of empty strings passed to - <type>oid</type>/<type>float4</type>/<type>float8</type> data - types, but continues to interpret them as zeroes as before. - In the next major release, empty strings will be considered - invalid input for these data types. - </para> - </listitem> - - <listitem> - <para> - By default, tables in <productname>PostgreSQL</productname> 8.0 - and earlier are created with <type>OID</>s. In the next release, - this will <emphasis>not</emphasis> be the case: to create a table - that contains <type>OID</>s, the <option>WITH OIDS</> clause must - be specified or the <varname>default_with_oids</varname> - configuration parameter must be set. Users are encouraged to - explicitly specify <option>WITH OIDS</> if their tables - require OIDs for compatibility with future releases of - <productname>PostgreSQL</productname>. - </para> - </listitem> - - </itemizedlist> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - Below you will find a detailed account of the changes between - release 8.0 and the previous major release. - </para> - - <sect3> - <title>Performance Improvements</title> - <itemizedlist> - - <listitem> - <para> - Support cross-data-type index usage (Tom) - </para> - <para> - Before this change, many queries would not use an index if the data - types did not match exactly. This improvement makes index usage more - intuitive and consistent. - </para> - </listitem> - - <listitem> - <para> - New buffer replacement strategy that improves caching (Jan) - </para> - <para> - Prior releases used a least-recently-used (LRU) cache to keep - recently referenced pages in memory. The LRU algorithm - did not consider the number of times a specific cache entry was - accessed, so large table scans could force out useful cache pages. - The new cache algorithm uses four separate lists to track most - recently used and most frequently used cache pages and dynamically - optimize their replacement based on the work load. This should - lead to much more efficient use of the shared buffer cache. - Administrators who have tested shared buffer sizes in the past - should retest with this new cache replacement policy. - </para> - </listitem> - - <listitem> - <para> - Add subprocess to write dirty buffers periodically to reduce - checkpoint writes (Jan) - </para> - <para> - In previous releases, the checkpoint process, which runs every few - minutes, would write all dirty buffers to the operating system's - buffer cache then flush all dirty operating system buffers to - disk. This resulted in a periodic spike in disk usage that often - hurt performance. The new code uses a background writer to trickle - disk writes at a steady pace so checkpoints have far fewer dirty - pages to write to disk. Also, the new code does not issue a global - <function>sync()</> call, but instead <function>fsync()</>s just - the files written since the last checkpoint. This should improve - performance and minimize degradation during checkpoints. - </para> - </listitem> - - <listitem> - <para> - Add ability to prolong vacuum to reduce performance impact (Jan) - </para> - <para> - On busy systems, <command>VACUUM</command> performs many I/O - requests which can hurt performance for other users. This - release allows you to slow down <command>VACUUM</command> to - reduce its impact on other users, though this increases the - total duration of <command>VACUUM</command>. - </para> - </listitem> - - <listitem> - <para> - Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom) - </para> - <para> - This improves the way indexes are scanned when many duplicate - values exist in the index. - </para> - </listitem> - - <listitem> - <para> - Use dynamically-generated table size estimates while planning (Tom) - </para> - <para> - Formerly the planner estimated table sizes using the values seen - by the last <command>VACUUM</command> or <command>ANALYZE</command>, - both as to physical table size (number of pages) and number of rows. - Now, the current physical table size is obtained from the kernel, - and the number of rows is estimated by multiplying the table size - by the row density (rows per page) seen by the last - <command>VACUUM</command> or <command>ANALYZE</command>. This should - produce more reliable estimates in cases where the table size has - changed significantly since the last housekeeping command. - </para> - </listitem> - - <listitem> - <para> - Improved index usage with <literal>OR</> clauses (Tom) - </para> - <para> - This allows the optimizer to use indexes in statements with many OR - clauses that would not have been indexed in the past. It can also use - multi-column indexes where the first column is specified and the second - column is part of an <literal>OR</> clause. - </para> - </listitem> - - <listitem> - <para> - Improve matching of partial index clauses (Tom) - </para> - <para> - The server is now smarter about using partial indexes in queries - involving complex <option>WHERE</> clauses. - </para> - </listitem> - - <listitem> - <para> - Improve performance of the GEQO optimizer (Tom) - </para> - <para> - The GEQO optimizer is used to plan queries involving many tables (by - default, twelve or more). This release speeds up the way queries are - analyzed to decrease time spent in optimization. - </para> - </listitem> - - <listitem> - <para> - Miscellaneous optimizer improvements - </para> - <para> - There is not room here to list all the minor improvements made, but - numerous special cases work better than in prior releases. - </para> - </listitem> - - <listitem> - <para> - Improve lookup speed for C functions (Tom) - </para> - <para> - This release uses a hash table to lookup information for dynamically - loaded C functions. This improves their speed so they perform nearly as - quickly as functions that are built into the server executable. - </para> - </listitem> - - <listitem> - <para> - Add type-specific <command>ANALYZE</command> statistics - capability (Mark Cave-Ayland) - </para> - <para> - This feature allows more flexibility in generating statistics - for nonstandard data types. - </para> - </listitem> - - <listitem> - <para> - <command>ANALYZE</command> now collects statistics for - expression indexes (Tom) - </para> - <para> - Expression indexes (also called functional indexes) allow users to - index not just columns but the results of expressions and function - calls. With this release, the optimizer can gather and use statistics - about the contents of expression indexes. This will greatly improve - the quality of planning for queries in which an expression index is - relevant. - </para> - </listitem> - - <listitem> - <para> - New two-stage sampling method for <command>ANALYZE</command> - (Manfred Koizar) - </para> - <para> - This gives better statistics when the density of valid rows is very - different in different regions of a table. - </para> - </listitem> - - <listitem> - <para> - Speed up <command>TRUNCATE</command> (Tom) - </para> - <para> - This buys back some of the performance loss observed in 7.4, while still - keeping <command>TRUNCATE</command> transaction-safe. - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Server Changes</title> - <itemizedlist> - - <listitem> - <para> - Add WAL file archiving and point-in-time recovery (Simon Riggs) - </para> - </listitem> - - <listitem> - <para> - Add tablespaces so admins can control disk layout (Gavin) - </para> - </listitem> - - <listitem> - <para> - Add a built-in log rotation program (Andreas Pflug) - </para> - <para> - It is now possible to log server messages conveniently without - relying on either <application>syslog</> or an external log - rotation program. - </para> - </listitem> - - <listitem> - <para> - Add new read-only server configuration parameters to show server - compile-time settings: <varname>block_size</>, - <varname>integer_datetimes</>, <varname>max_function_args</>, - <varname>max_identifier_length</>, <varname>max_index_keys</> (Joe) - </para> - </listitem> - - <listitem> - <para> - Make quoting of <literal>sameuser</>, <literal>samegroup</>, and - <literal>all</> remove special meaning of these terms in - <filename>pg_hba.conf</> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Use clearer IPv6 name <literal>::1/128</> for - <literal>localhost</> in default <filename>pg_hba.conf</> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Use CIDR format in <filename>pg_hba.conf</> examples (Andrew) - </para> - </listitem> - - <listitem> - <para> - Rename server configuration parameters <varname>SortMem</> and - <varname>VacuumMem</> to <varname>work_mem</> and - <varname>maintenance_work_mem</> (Old names still supported) (Tom) - </para> - <para> - This change was made to clarify that bulk operations such as index and - foreign key creation use <varname>maintenance_work_mem</>, while - <varname>work_mem</> is for workspaces used during query execution. - </para> - </listitem> - - <listitem> - <para> - Allow logging of session disconnections using server configuration - <varname>log_disconnections</> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Add new server configuration parameter <varname>log_line_prefix</> to - allow control of information emitted in each log line (Andrew) - </para> - <para> - Available information includes user name, database name, remote IP - address, and session start time. - </para> - </listitem> - - <listitem> - <para> - Remove server configuration parameters <varname>log_pid</>, - <varname>log_timestamp</>, <varname>log_source_port</>; functionality - superseded by <varname>log_line_prefix</> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Replace the <varname>virtual_host</> and <varname>tcpip_socket</> - parameters with a unified <varname>listen_addresses</> parameter - (Andrew, Tom) - </para> - <para> - <varname>virtual_host</> could only specify a single IP address to - listen on. <varname>listen_addresses</> allows multiple addresses - to be specified. - </para> - </listitem> - - <listitem> - <para> - Listen on localhost by default, which eliminates the need for the - <option>-i</> postmaster switch in many scenarios (Andrew) - </para> - <para> - Listening on localhost (<literal>127.0.0.1</>) opens no new - security holes but allows configurations like Windows and JDBC, - which do not support local sockets, to work without special - adjustments. - </para> - </listitem> - - <listitem> - <para> - Remove <varname>syslog</> server configuration parameter, and add more - logical <varname>log_destination</> variable to control log output - location (Magnus) - </para> - </listitem> - - <listitem> - <para> - Change server configuration parameter <varname>log_statement</> to take - values <varname>all</>, <varname>mod</>, <varname>ddl</>, or - <varname>none</> to select which queries are logged (Bruce) - </para> - <para> - This allows administrators to log only data definition changes or - only data modification statements. - </para> - </listitem> - - <listitem> - <para> - Some logging-related configuration parameters could formerly be adjusted - by ordinary users, but only in the <quote>more verbose</> direction. - They are now treated more strictly: only superusers can set them. - However, a superuser can use <command>ALTER USER</> to provide per-user - settings of these values for non-superusers. Also, it is now possible - for superusers to set values of superuser-only configuration parameters - via <literal>PGOPTIONS</>. - </para> - </listitem> - - <listitem> - <para> - Allow configuration files to be placed outside the data directory (mlw) - </para> - <para> - By default, configuration files are kept in the cluster's top directory. - With this addition, configuration files can be placed outside the - data directory, easing administration. - </para> - </listitem> - - <listitem> - <para> - Plan prepared queries only when first executed so constants can be - used for statistics (Oliver Jowett) - </para> - <para> - Prepared statements plan queries once and execute them many - times. While prepared queries avoid the overhead of re-planning - on each use, the quality of the plan suffers from not knowing the exact - parameters to be used in the query. In this release, planning of - unnamed prepared statements is delayed until the first execution, - and the actual parameter values of that execution are used as - optimization hints. This allows use of out-of-line parameter passing - without incurring a performance penalty. - </para> - </listitem> - - <listitem> - <para> - Allow <command>DECLARE CURSOR</command> to take parameters - (Oliver Jowett) - </para> - <para> - It is now useful to issue <command>DECLARE CURSOR</command> in a - <function>Parse</> message with parameters. The parameter values - sent at <function>Bind</> time will be substituted into the - execution of the cursor's query. - </para> - </listitem> - - <listitem> - <para> - Fix hash joins and aggregates of <type>inet</type> and - <type>cidr</type> data types (Tom) - </para> - <para> - Release 7.4 handled hashing of mixed <type>inet</type> and - <type>cidr</type> values incorrectly. (This bug did not exist - in prior releases because they wouldn't try to hash either - data type.) - </para> - </listitem> - - <listitem> - <para> - Make <varname>log_duration</> print only when <varname>log_statement</> - prints the query (Ed L.) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Query Changes</title> - <itemizedlist> - - <listitem> - <para> - Add savepoints (nested transactions) (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Unsupported isolation levels are now accepted and promoted to the - nearest supported level (Peter) - </para> - <para> - The SQL specification states that if a database doesn't support a - specific isolation level, it should use the next more restrictive level. - This change complies with that recommendation. - </para> - </listitem> - - <listitem> - <para> - Allow <command>BEGIN WORK</command> to specify transaction - isolation levels like <command>START TRANSACTION</command> does - (Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix table permission checking for cases in which rules generate - a query type different from the originally submitted query (Tom) - </para> - </listitem> - - <listitem> - <para> - Implement dollar quoting to simplify single-quote usage (Andrew, Tom, - David Fetter) - </para> - <para> - In previous releases, because single quotes had to be used to - quote a function's body, the use of single quotes inside the - function text required use of two single quotes or other error-prone - notations. With this release we add the ability to use "dollar - quoting" to quote a block of text. The ability to use different - quoting delimiters at different nesting levels greatly simplifies - the task of quoting correctly, especially in complex functions. - Dollar quoting can be used anywhere quoted text is needed. - </para> - </listitem> - - <listitem> - <para> - Make <literal>CASE val WHEN compval1 THEN ...</> evaluate <literal>val</> only once (Tom) - </para> - <para> - <option>CASE</> no longer evaluates the tested expression multiple - times. This has benefits when the expression is complex or is - volatile. - </para> - </listitem> - - <listitem> - <para> - Test <option>HAVING</> before computing target list of an - aggregate query (Tom) - </para> - <para> - Fixes improper failure of cases such as <literal>SELECT SUM(win)/SUM(lose) - ... GROUP BY ... HAVING SUM(lose) > 0</>. This should work but formerly - could fail with divide-by-zero. - </para> - </listitem> - - <listitem> - <para> - Replace <varname>max_expr_depth</> parameter with - <varname>max_stack_depth</> parameter, measured in kilobytes of stack - size (Tom) - </para> - <para> - This gives us a fairly bulletproof defense against crashing due to - runaway recursive functions. Instead of measuring the depth of expression - nesting, we now directly measure the size of the execution stack. - </para> - </listitem> - - <listitem> - <para> - Allow arbitrary row expressions (Tom) - </para> - <para> - This release allows SQL expressions to contain arbitrary composite - types, that is, row values. It also allows functions to more easily - take rows as arguments and return row values. - </para> - </listitem> - - <listitem> - <para> - Allow <option>LIKE</>/<option>ILIKE</> to be used as the operator - in row and subselect comparisons (Fabien Coelho) - </para> - </listitem> - - <listitem> - <para> - Avoid locale-specific case conversion of basic ASCII letters in - identifiers and keywords (Tom) - </para> - <para> - This solves the <quote>Turkish problem</> with mangling of words - containing <literal>I</> and <literal>i</>. Folding of characters - outside the 7-bit-ASCII set is still locale-aware. - </para> - </listitem> - - <listitem> - <para> - Improve syntax error reporting (Fabien, Tom) - </para> - <para> - Syntax error reports are more useful than before. - </para> - </listitem> - - <listitem> - <para> - Change <command>EXECUTE</command> to return a completion tag - matching the executed statement (Kris Jurka) - </para> - <para> - Previous releases return an <command>EXECUTE</command> tag for - any <command>EXECUTE</command> call. In this release, the tag - returned will reflect the command executed. - </para> - </listitem> - - <listitem> - <para> - Avoid emitting <option>NATURAL CROSS JOIN</> in rule listings (Tom) - </para> - <para> - Such a clause makes no logical sense, but in some cases the rule - decompiler formerly produced this syntax. - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Object Manipulation Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <command>COMMENT ON</> for casts, conversions, languages, - operator classes, and large objects (Christopher) - </para> - </listitem> - - <listitem> - <para> - Add new server configuration parameter <varname>default_with_oids</> to - control whether tables are created with <type>OID</>s by default (Neil) - </para> - <para> - This allows administrators to control whether <command>CREATE - TABLE</command> commands create tables with or without <type>OID</> - columns by default. (Note: the current factory default setting for - <varname>default_with_oids</> is <literal>TRUE</>, but the default - will become <literal>FALSE</> in future releases.) - </para> - </listitem> - - <listitem> - <para> - Add <option>WITH</> / <option>WITHOUT OIDS</> clause to - <command>CREATE TABLE AS</command> (Neil) - </para> - </listitem> - - <listitem> - <para> - Allow <command>ALTER TABLE DROP COLUMN</> to drop an <type>OID</> - column (<command>ALTER TABLE SET WITHOUT OIDS</> still works) - (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow composite types as table columns (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow <command>ALTER ... ADD COLUMN</> with defaults and - <option>NOT NULL</> constraints; works per SQL spec (Rod) - </para> - <para> - It is now possible for <option>ADD COLUMN</> to create a column - that is not initially filled with NULLs, but with a specified - default value. - </para> - </listitem> - - <listitem> - <para> - Add <command>ALTER COLUMN TYPE</> to change column's type (Rod) - </para> - <para> - It is now possible to alter a column's data type without dropping - and re-adding the column. - </para> - </listitem> - - <listitem> - <para> - Allow multiple <command>ALTER</> actions in a single <command>ALTER - TABLE</command> command (Rod) - </para> - <para> - This is particularly useful for <command>ALTER</> commands that - rewrite the table (which include <option>ALTER COLUMN TYPE</> and - <option>ADD COLUMN</> with a default). By grouping - <command>ALTER</> commands together, the table need be rewritten - only once. - </para> - </listitem> - - <listitem> - <para> - Allow <command>ALTER TABLE</command> to add <type>SERIAL</type> - columns (Tom) - </para> - <para> - This falls out from the new capability of specifying defaults for new - columns. - </para> - </listitem> - - <listitem> - <para> - Allow changing the owners of aggregates, conversions, databases, - functions, operators, operator classes, schemas, types, and tablespaces - (Christopher, Euler Taveira de Oliveira) - </para> - <para> - Previously this required modifying the system tables directly. - </para> - </listitem> - - <listitem> - <para> - Allow temporary object creation to be limited to <option>SECURITY - DEFINER</> functions (Sean Chittenden) - </para> - </listitem> - - <listitem> - <para> - Add <option>ALTER TABLE ... SET WITHOUT CLUSTER</> (Christopher) - </para> - <para> - Prior to this release, there was no way to clear an auto-cluster - specification except to modify the system tables. - </para> - </listitem> - - <listitem> - <para> - Constraint/Index/<type>SERIAL</> names are now - <replaceable>table_column_type</> - with numbers appended to guarantee uniqueness within the schema - (Tom) - </para> - <para> - The SQL specification states that such names should be unique - within a schema. - </para> - </listitem> - - <listitem> - <para> - Add <function>pg_get_serial_sequence()</> to return a - <type>SERIAL</> column's sequence name (Christopher) - </para> - <para> - This allows automated scripts to reliably find the <type>SERIAL</> - sequence name. - </para> - </listitem> - - <listitem> - <para> - Warn when primary/foreign key data type mismatch requires costly lookup - </para> - </listitem> - - <listitem> - <para> - New <command>ALTER INDEX</> command to allow moving of indexes - between tablespaces (Gavin) - </para> - </listitem> - - <listitem> - <para> - Make <command>ALTER TABLE OWNER</> change dependent sequence - ownership too (Alvaro) - </para> - </listitem> - - - </itemizedlist> - </sect3> - - - <sect3> - <title>Utility Command Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow <command>CREATE SCHEMA</command> to create triggers, - indexes, and sequences (Neil) - </para> - </listitem> - - <listitem> - <para> - Add <option>ALSO</> keyword to <command>CREATE RULE</command> (Fabien - Coelho) - </para> - <para> - This allows <option>ALSO</> to be added to rule creation to contrast it with - <option>INSTEAD</> rules. - </para> - </listitem> - - <listitem> - <para> - Add <option>NOWAIT</> option to <command>LOCK</command> (Tatsuo) - </para> - <para> - This allows the <command>LOCK</command> command to fail if it - would have to wait for the requested lock. - </para> - </listitem> - - <listitem> - <para> - Allow <command>COPY</command> to read and write - comma-separated-value (CSV) files (Andrew, Bruce) - </para> - </listitem> - - <listitem> - <para> - Generate error if the <command>COPY</command> delimiter and NULL - string conflict (Bruce) - </para> - </listitem> - - <listitem> - <para> - <command>GRANT</command>/<command>REVOKE</command> behavior - follows the SQL spec more closely - </para> - </listitem> - - <listitem> - <para> - Avoid locking conflict between <command>CREATE INDEX</command> - and <command>CHECKPOINT</command> (Tom) - </para> - <para> - In 7.3 and 7.4, a long-running B-tree index build could block concurrent - <command>CHECKPOINT</>s from completing, thereby causing WAL bloat because the - WAL log could not be recycled. - </para> - </listitem> - - <listitem> - <para> - Database-wide <command>ANALYZE</command> does not hold locks - across tables (Tom) - </para> - <para> - This reduces the potential for deadlocks against other backends - that want exclusive locks on tables. To get the benefit of this - change, do not execute database-wide <command>ANALYZE</command> - inside a transaction block (<command>BEGIN</command> block); it - must be able to commit and start a new transaction for each - table. - </para> - </listitem> - - <listitem> - <para> - <command>REINDEX</command> does not exclusively lock the index's - parent table anymore - </para> - <para> - The index itself is still exclusively locked, but readers of the - table can continue if they are not using the particular index - being rebuilt. - </para> - </listitem> - - <listitem> - <para> - Erase MD5 user passwords when a user is renamed (Bruce) - </para> - <para> - <productname>PostgreSQL</productname> uses the user name as salt - when encrypting passwords via MD5. When a user's name is changed, - the salt will no longer match the stored MD5 password, so the - stored password becomes useless. In this release a notice is - generated and the password is cleared. A new password must then - be assigned if the user is to be able to log in with a password. - </para> - </listitem> - - <listitem> - <para> - New <application>pg_ctl</> <option>kill</> option for Windows (Andrew) - </para> - <para> - Windows does not have a <literal>kill</> command to send signals to - backends so this capability was added to <application>pg_ctl</>. - </para> - </listitem> - - <listitem> - <para> - Information schema improvements - </para> - </listitem> - - <listitem> - <para> - Add <option>--pwfile</> option to - <application>initdb</application> so the initial password can be - set by GUI tools (Magnus) - </para> - </listitem> - - <listitem> - <para> - Detect locale/encoding mismatch in - <application>initdb</application> (Peter) - </para> - </listitem> - - <listitem> - <para> - Add <option>register</> command to <application>pg_ctl</> to - register Windows operating system service (Dave Page) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Data Type and Function Changes</title> - <itemizedlist> - - <listitem> - <para> - More complete support for composite types (row types) (Tom) - </para> - <para> - Composite values can be used in many places where only scalar values - worked before. - </para> - </listitem> - - <listitem> - <para> - Reject nonrectangular array values as erroneous (Joe) - </para> - <para> - Formerly, <function>array_in</> would silently build a - surprising result. - </para> - </listitem> - - <listitem> - <para> - Overflow in integer arithmetic operations is now detected (Tom) - </para> - </listitem> - - <listitem> - <para> - The arithmetic operators associated with the single-byte - <type>"char"</> data type have been removed. - </para> - <para> - Formerly, the parser would select these operators in many situations - where an <quote>unable to select an operator</> error would be more - appropriate, such as <literal>null * null</>. If you actually want - to do arithmetic on a <type>"char"</> column, you can cast it to - integer explicitly. - </para> - </listitem> - - <listitem> - <para> - Syntax checking of array input values considerably tightened up (Joe) - </para> - <para> - Junk that was previously allowed in odd places with odd results - now causes an <literal>ERROR</>, for example, non-whitespace - after the closing right brace. - </para> - </listitem> - - <listitem> - <para> - Empty-string array element values must now be written as - <literal>""</>, rather than writing nothing (Joe) - </para> - <para> - Formerly, both ways of writing an empty-string element value were - allowed, but now a quoted empty string is required. The case where - nothing at all appears will probably be considered to be a NULL - element value in some future release. - </para> - </listitem> - - <listitem> - <para> - Array element trailing whitespace is now ignored (Joe) - </para> - <para> - Formerly leading whitespace was ignored, but trailing whitespace - between an element value and the delimiter or right brace was - significant. Now trailing whitespace is also ignored. - </para> - </listitem> - - <listitem> - <para> - Emit array values with explicit array bounds when lower bound is not one - (Joe) - </para> - </listitem> - - <listitem> - <para> - Accept <literal>YYYY-monthname-DD</> as a date string (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <function>netmask</> and <function>hostmask</> functions - return maximum-length mask length (Tom) - </para> - </listitem> - - <listitem> - <para> - Change factorial function to return <type>numeric</type> (Gavin) - </para> - <para> - Returning <type>numeric</type> allows the factorial function to - work for a wider range of input values. - </para> - </listitem> - - <listitem> - <para> - <function>to_char</>/<function>to_date()</> date conversion - improvements (Kurt Roeckx, Fabien Coelho) - </para> - </listitem> - - <listitem> - <para> - Make <function>length()</> disregard trailing spaces in - <type>CHAR(n)</> (Gavin) - </para> - <para> - This change was made to improve consistency: trailing spaces are - semantically insignificant in <type>CHAR(n)</> data, so they - should not be counted by <function>length()</>. - </para> - </listitem> - - <listitem> - <para> - Warn about empty string being passed to - <type>OID</>/<type>float4</>/<type>float8</> data types (Neil) - </para> - <para> - 8.1 will throw an error instead. - </para> - </listitem> - - <listitem> - <para> - Allow leading or trailing whitespace in - <type>int2</>/<type>int4</>/<type>int8</>/<type>float4</>/<type>float8</> - input routines - (Neil) - </para> - </listitem> - - <listitem> - <para> - Better support for IEEE <literal>Infinity</> and <literal>NaN</> - values in <type>float4</type>/<type>float8</type> (Neil) - </para> - <para> - These should now work on all platforms that support IEEE-compliant - floating point arithmetic. - </para> - </listitem> - - <listitem> - <para> - Add <option>week</> option to <function>date_trunc()</> (Robert Creager) - </para> - </listitem> - - <listitem> - <para> - Fix <function>to_char</function> for <literal>1 BC</> - (previously it returned <literal>1 AD</>) (Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix <function>date_part(year)</> for BC dates (previously it - returned one less than the correct year) (Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix <function>date_part()</> to return the proper millennium and - century (Fabien Coelho) - </para> - <para> - In previous versions, the century and millennium results had a wrong - number and started in the wrong year, as compared to standard - reckoning of such things. - </para> - </listitem> - - <listitem> - <para> - Add <function>ceiling()</> as an alias for <function>ceil()</>, - and <function>power()</> as an alias for <function>pow()</> for - standards compliance (Neil) - </para> - </listitem> - - <listitem> - <para> - Change <function>ln()</>, <function>log()</>, - <function>power()</>, and <function>sqrt()</> to emit the correct - <literal>SQLSTATE</> error codes for certain error conditions, as - specified by SQL:2003 (Neil) - </para> - </listitem> - - <listitem> - <para> - Add <function>width_bucket()</> function as defined by SQL:2003 (Neil) - </para> - </listitem> - - <listitem> - <para> - Add <function>generate_series()</> functions to simplify working - with numeric sets (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix <function>upper/lower/initcap()</> functions to work with - multibyte encodings (Tom) - </para> - </listitem> - - <listitem> - <para> - Add boolean and bitwise integer <option>AND</>/<option>OR</> - aggregates (Fabien Coelho) - </para> - </listitem> - - <listitem> - <para> - New session information functions to return network addresses for client - and server (Sean Chittenden) - </para> - </listitem> - - <listitem> - <para> - Add function to determine the area of a closed path (Sean Chittenden) - </para> - </listitem> - - <listitem> - <para> - Add function to send cancel request to other backends (Magnus) - </para> - </listitem> - - <listitem> - <para> - Add <type>interval</> plus <type>datetime</> operators (Tom) - </para> - <para> - The reverse ordering, <type>datetime</> plus <type>interval</>, - was already supported, but both are required by the SQL standard. - </para> - </listitem> - - <listitem> - <para> - Casting an integer to <type>BIT(N)</> selects the rightmost N bits - of the integer - (Tom) - </para> - <para> - In prior releases, the leftmost N bits were selected, but this was - deemed unhelpful, not to mention inconsistent with casting from bit - to int. - </para> - </listitem> - - <listitem> - <para> - Require <type>CIDR</> values to have all nonmasked bits be zero - (Kevin Brintnall) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Server-Side Language Changes</title> - <itemizedlist> - - <listitem> - <para> - In <literal>READ COMMITTED</> serialization mode, volatile functions - now see the results of concurrent transactions committed up to the - beginning of each statement within the function, rather than up to the - beginning of the interactive command that called the function. - </para> - </listitem> - - <listitem> - <para> - Functions declared <literal>STABLE</> or <literal>IMMUTABLE</> always - use the snapshot of the calling query, and therefore do not see the - effects of actions taken after the calling query starts, whether in - their own transaction or other transactions. Such a function must be - read-only, too, meaning that it cannot use any SQL commands other than - <command>SELECT</>. There is a considerable performance gain from - declaring a function <literal>STABLE</> or <literal>IMMUTABLE</> - rather than <literal>VOLATILE</>. - </para> - </listitem> - - <listitem> - <para> - Nondeferred <option>AFTER</> triggers are now fired immediately - after completion of the triggering query, rather than upon - finishing the current interactive command. This makes a difference - when the triggering query occurred within a function: the trigger - is invoked before the function proceeds to its next operation. For - example, if a function inserts a new row into a table, any - nondeferred foreign key checks occur before proceeding with the - function. - </para> - </listitem> - - <listitem> - <para> - Allow function parameters to be declared with names (Dennis Björklund) - </para> - <para> - This allows better documentation of functions. Whether the names - actually do anything depends on the specific function language - being used. - </para> - </listitem> - - <listitem> - <para> - Allow PL/pgSQL parameter names to be referenced in the function (Dennis Björklund) - </para> - <para> - This basically creates an automatic alias for each named parameter. - </para> - </listitem> - - <listitem> - <para> - Do minimal syntax checking of PL/pgSQL functions at creation time (Tom) - </para> - <para> - This allows us to catch simple syntax errors sooner. - </para> - </listitem> - - <listitem> - <para> - More support for composite types (row and record variables) in PL/pgSQL - </para> - <para> - For example, it now works to pass a rowtype variable to another function - as a single variable. - </para> - </listitem> - - <listitem> - <para> - Default values for PL/pgSQL variables can now reference previously - declared variables - </para> - </listitem> - - <listitem> - <para> - Improve parsing of PL/pgSQL FOR loops (Tom) - </para> - <para> - Parsing is now driven by presence of <literal>".."</> rather than - data type of <option>FOR</> variable. This makes no difference for - correct functions, but should result in more understandable error - messages when a mistake is made. - </para> - </listitem> - - <listitem> - <para> - Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - In PL/Tcl, SPI commands are now run in subtransactions. If an error - occurs, the subtransaction is cleaned up and the error is reported - as an ordinary Tcl error, which can be trapped with <literal>catch</>. - Formerly, it was not possible to catch such errors. - </para> - </listitem> - - <listitem> - <para> - Accept <command>ELSEIF</> in PL/pgSQL (Neil) - </para> - <para> - Previously PL/pgSQL only allowed <command>ELSIF</>, but many people - are accustomed to spelling this keyword <command>ELSEIF</>. - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title><application>psql</> Changes</title> - <itemizedlist> - - <listitem> - <para> - Improve <application>psql</> information display about database - objects (Christopher) - </para> - </listitem> - - <listitem> - <para> - Allow <application>psql</> to display group membership in - <command>\du</> and <command>\dg</> (Markus Bertheau) - </para> - </listitem> - - <listitem> - <para> - Prevent <application>psql</> <command>\dn</command> from showing - temporary schemas (Bruce) - </para> - </listitem> - - <listitem> - <para> - Allow <application>psql</> to handle tilde user expansion for file - names (Zach Irmen) - </para> - </listitem> - - <listitem> - <para> - Allow <application>psql</> to display fancy prompts, including - color, via <application>readline</> (Reece Hart, Chet Ramey) - </para> - </listitem> - - <listitem> - <para> - Make <application>psql</> <command>\copy</> match <command>COPY</command> command syntax - fully (Tom) - </para> - </listitem> - - <listitem> - <para> - Show the location of syntax errors (Fabien Coelho, Tom) - </para> - </listitem> - - <listitem> - <para> - Add <command>CLUSTER</command> information to <application>psql</> - <command>\d</> display - (Bruce) - </para> - </listitem> - - <listitem> - <para> - Change <application>psql</> <command>\copy stdin/stdout</> to read - from command input/output (Bruce) - </para> - </listitem> - - <listitem> - <para> - Add <option>pstdin</>/<option>pstdout</> to read from - <application>psql</>'s <literal>stdin</>/<literal>stdout</> (Mark - Feit) - </para> - </listitem> - - <listitem> - <para> - Add global <application>psql</> configuration file, <filename>psqlrc.sample</filename> - (Bruce) - </para> - <para> - This allows a central file where global <application>psql</> startup commands can - be stored. - </para> - </listitem> - - <listitem> - <para> - Have <application>psql</> <command>\d+</> indicate if the table - has an <type>OID</> column (Neil) - </para> - </listitem> - - <listitem> - <para> - On Windows, use binary mode in <application>psql</> when reading files so control-Z - is not seen as end-of-file - </para> - </listitem> - - <listitem> - <para> - Have <command>\dn+</> show permissions and description for schemas (Dennis - Björklund) - </para> - </listitem> - - <listitem> - <para> - Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane) - </para> - </listitem> - - <listitem> - <para> - Allow boolean settings to be set using upper or lower case (Michael Paesold) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title><application>pg_dump</> Changes</title> - <itemizedlist> - - <listitem> - <para> - Use dependency information to improve the reliability of - <application>pg_dump</> (Tom) - </para> - <para> - This should solve the longstanding problems with related objects - sometimes being dumped in the wrong order. - </para> - </listitem> - - <listitem> - <para> - Have <application>pg_dump</> output objects in alphabetical order if possible (Tom) - </para> - <para> - This should make it easier to identify changes between - dump files. - </para> - </listitem> - - <listitem> - <para> - Allow <application>pg_restore</> to ignore some SQL errors (Fabien Coelho) - </para> - <para> - This makes <application>pg_restore</>'s behavior similar to the - results of feeding a <application>pg_dump</> output script to - <application>psql</>. In most cases, ignoring errors and plowing - ahead is the most useful thing to do. Also added was a pg_restore - option to give the old behavior of exiting on an error. - </para> - </listitem> - - <listitem> - <para> - <application>pg_restore</> <option>-l</> display now includes - objects' schema names - </para> - </listitem> - - <listitem> - <para> - New begin/end markers in <application>pg_dump</> text output (Bruce) - </para> - </listitem> - - <listitem> - <para> - Add start/stop times for - <application>pg_dump</>/<application>pg_dumpall</> in verbose mode - (Bruce) - </para> - </listitem> - - <listitem> - <para> - Allow most <application>pg_dump</> options in - <application>pg_dumpall</> (Christopher) - </para> - </listitem> - - <listitem> - <para> - Have <application>pg_dump</> use <command>ALTER OWNER</> rather - than <command>SET SESSION AUTHORIZATION</> by default - (Christopher) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>libpq Changes</title> - <itemizedlist> - - <listitem> - <para> - Make libpq's <option>SIGPIPE</> handling thread-safe (Bruce) - </para> - </listitem> - - <listitem> - <para> - Add <function>PQmbdsplen()</> which returns the display length - of a character (Tatsuo) - </para> - </listitem> - - <listitem> - <para> - Add thread locking to <application>SSL</> and - <application>Kerberos</> connections (Manfred Spraul) - </para> - </listitem> - - <listitem> - <para> - Allow <function>PQoidValue()</>, <function>PQcmdTuples()</>, and - <function>PQoidStatus()</> to work on <command>EXECUTE</command> - commands (Neil) - </para> - </listitem> - - <listitem> - <para> - Add <function>PQserverVersion()</> to provide more convenient - access to the server version number (Greg Sabino Mullane) - </para> - </listitem> - - <listitem> - <para> - Add <function>PQprepare/PQsendPrepared()</> functions to support - preparing statements without necessarily specifying the data types - of their parameters (Abhijit Menon-Sen) - </para> - </listitem> - - <listitem> - <para> - Many ECPG improvements, including <command>SET DESCRIPTOR</> (Michael) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Source Code Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow the database server to run natively on Windows (Claudio, Magnus, Andrew) - </para> - </listitem> - - <listitem> - <para> - Shell script commands converted to C versions for Windows support (Andrew) - </para> - </listitem> - - <listitem> - <para> - Create an extension makefile framework (Fabien Coelho, Peter) - </para> - <para> - This simplifies the task of building extensions outside the original - source tree. - </para> - </listitem> - - <listitem> - <para> - Support relocatable installations (Bruce) - </para> - <para> - Directory paths for installed files (such as the - <filename>/share</> directory) are now computed relative to the - actual location of the executables, so that an installation tree - can be moved to another place without reconfiguring and - rebuilding. - </para> - </listitem> - - <listitem> - <para> - Use <option>--with-docdir</> to choose installation location of documentation; also - allow <option>--infodir</> (Peter) - </para> - </listitem> - - <listitem> - <para> - Add <option>--without-docdir</> to prevent installation of documentation (Peter) - </para> - </listitem> - - <listitem> - <para> - Upgrade to <application>DocBook</> V4.2 SGML (Peter) - </para> - </listitem> - - <listitem> - <para> - New <literal>PostgreSQL</> <application>CVS</> tag (Marc) - </para> - <para> - This was done to make it easier for organizations to manage their - own copies of the <productname>PostgreSQL</productname> - <application>CVS</> repository. File version stamps from the master - repository will not get munged by checking into or out of a copied - repository. - </para> - </listitem> - - <listitem> - <para> - Clarify locking code (Manfred Koizar) - </para> - </listitem> - - <listitem> - <para> - Buffer manager cleanup (Neil) - </para> - </listitem> - - <listitem> - <para> - Decouple platform tests from CPU spinlock code (Bruce, Tom) - </para> - </listitem> - - <listitem> - <para> - Add inlined test-and-set code on PA-RISC for <application>gcc</> - (ViSolve, Tom) - </para> - </listitem> - - <listitem> - <para> - Improve i386 spinlock code (Manfred Spraul) - </para> - </listitem> - - <listitem> - <para> - Clean up spinlock assembly code to avoid warnings from newer - <application>gcc</> releases (Tom) - </para> - </listitem> - - <listitem> - <para> - Remove JDBC from source tree; now a separate project - </para> - </listitem> - - <listitem> - <para> - Remove the libpgtcl client interface; now a separate project - </para> - </listitem> - - <listitem> - <para> - More accurately estimate memory and file descriptor usage (Tom) - </para> - </listitem> - - <listitem> - <para> - Improvements to the Mac OS X startup scripts (Ray A.) - </para> - </listitem> - - <listitem> - <para> - New <function>fsync()</> test program (Bruce) - </para> - </listitem> - - <listitem> - <para> - Major documentation improvements (Neil, Peter) - </para> - </listitem> - - <listitem> - <para> - Remove <application>pg_encoding</application>; not needed - anymore - </para> - </listitem> - - <listitem> - <para> - Remove <application>pg_id</application>; not needed anymore - </para> - </listitem> - - <listitem> - <para> - Remove <application>initlocation</application>; not needed - anymore - </para> - </listitem> - - <listitem> - <para> - Auto-detect thread flags (no more manual testing) (Bruce) - </para> - </listitem> - - <listitem> - <para> - Use Olson's public domain <application>timezone</> library (Magnus) - </para> - </listitem> - - <listitem> - <para> - With threading enabled, use thread flags on Unixware for - backend executables too (Bruce) - </para> - <para> - Unixware cannot mix threaded and nonthreaded object files in the - same executable, so everything must be compiled as threaded. - </para> - </listitem> - - <listitem> - <para> - <application>psql</> now uses a <application>flex</>-generated - lexical analyzer to process command strings - </para> - </listitem> - - <listitem> - <para> - Reimplement the linked list data structure used throughout the - backend (Neil) - </para> - <para> - This improves performance by allowing list append and length - operations to be more efficient. - </para> - </listitem> - - <listitem> - <para> - Allow dynamically loaded modules to create their own server configuration - parameters (Thomas Hallgren) - </para> - </listitem> - - <listitem> - <para> - New Brazilian version of FAQ (Euler Taveira de Oliveira) - </para> - </listitem> - - <listitem> - <para> - Add French FAQ (Guillaume Lelarge) - </para> - </listitem> - - <listitem> - <para> - New <application>pgevent</> for Windows logging - </para> - </listitem> - - <listitem> - <para> - Make libpq and ECPG build as proper shared libraries on OS X (Tom) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Contrib Changes</title> - <itemizedlist> - - <listitem> - <para> - Overhaul of <filename>contrib/dblink</> (Joe) - </para> - </listitem> - - <listitem> - <para> - <filename>contrib/dbmirror</> improvements (Steven Singer) - </para> - </listitem> - - <listitem> - <para> - New <filename>contrib/xml2</> (John Gray, Torchbox) - </para> - </listitem> - - <listitem> - <para> - Updated <filename>contrib/mysql</filename> - </para> - </listitem> - - <listitem> - <para> - New version of <filename>contrib/btree_gist</> (Teodor) - </para> - </listitem> - - <listitem> - <para> - New <filename>contrib/trgm</>, trigram matching for - <productname>PostgreSQL</productname> (Teodor) - </para> - </listitem> - - <listitem> - <para> - Many <filename>contrib/tsearch2</> improvements (Teodor) - </para> - </listitem> - - <listitem> - <para> - Add double metaphone to <filename>contrib/fuzzystrmatch</> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Allow <filename>contrib/pg_autovacuum</> to run as a Windows service (Dave Page) - </para> - </listitem> - - <listitem> - <para> - Add functions to <filename>contrib/dbsize</> (Andreas Pflug) - </para> - </listitem> - - <listitem> - <para> - Removed <filename>contrib/pg_logger</>: obsoleted by integrated logging - subprocess - </para> - </listitem> - - <listitem> - <para> - Removed <filename>contrib/rserv</>: obsoleted by various separate projects - </para> - </listitem> - - </itemizedlist> - </sect3> - - </sect2> - </sect1> diff --git a/doc/src/sgml/release-8.1.sgml b/doc/src/sgml/release-8.1.sgml deleted file mode 100644 index 0db2d91547f..00000000000 --- a/doc/src/sgml/release-8.1.sgml +++ /dev/null @@ -1,5444 +0,0 @@ -<!-- doc/src/sgml/release-8.1.sgml --> -<!-- See header comment in release.sgml about typical markup --> - - <sect1 id="release-8-1-23"> - <title>Release 8.1.23</title> - - <formalpara> - <title>Release date:</title> - <para>2010-12-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.22. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <para> - This is expected to be the last <productname>PostgreSQL</> release - in the 8.1.X series. Users are encouraged to update to a newer - release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.1.23</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.18, - see <xref linkend="release-8-1-18">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Force the default - <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link> - to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp) - </para> - - <para> - The default on Linux has actually been <literal>fdatasync</> for many - years, but recent kernel changes caused <productname>PostgreSQL</> to - choose <literal>open_datasync</> instead. This choice did not result - in any performance improvement, and caused outright failures on - certain filesystems, notably <literal>ext4</> with the - <literal>data=journal</> mount option. - </para> - </listitem> - - <listitem> - <para> - Fix recovery from base backup when the starting checkpoint WAL record - is not in the same WAL segment as its redo point (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Add support for detecting register-stack overrun on <literal>IA64</> - (Tom Lane) - </para> - - <para> - The <literal>IA64</> architecture has two hardware stacks. Full - prevention of stack-overrun failures requires checking both. - </para> - </listitem> - - <listitem> - <para> - Add a check for stack overflow in <function>copyObject()</> (Tom Lane) - </para> - - <para> - Certain code paths could crash due to stack overflow given a - sufficiently complex query. - </para> - </listitem> - - <listitem> - <para> - Fix detection of page splits in temporary GiST indexes (Heikki - Linnakangas) - </para> - - <para> - It is possible to have a <quote>concurrent</> page split in a - temporary index, if for example there is an open cursor scanning the - index when an insertion is done. GiST failed to detect this case and - hence could deliver wrong results when execution of the cursor - continued. - </para> - </listitem> - - <listitem> - <para> - Avoid memory leakage while <command>ANALYZE</>'ing complex index - expressions (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Ensure an index that uses a whole-row Var still depends on its table - (Tom Lane) - </para> - - <para> - An index declared like <literal>create index i on t (foo(t.*))</> - would not automatically get dropped when its table was dropped. - </para> - </listitem> - - <listitem> - <para> - Do not <quote>inline</> a SQL function with multiple <literal>OUT</> - parameters (Tom Lane) - </para> - - <para> - This avoids a possible crash due to loss of information about the - expected result rowtype. - </para> - </listitem> - - <listitem> - <para> - Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane) - </para> - - <para> - The planner would sometimes attempt to evaluate sub-expressions that - in fact could never be reached, possibly leading to unexpected errors. - </para> - </listitem> - - <listitem> - <para> - Add print functionality for <structname>InhRelation</> nodes (Tom Lane) - </para> - - <para> - This avoids a failure when <varname>debug_print_parse</> is enabled - and certain types of query are executed. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect calculation of distance from a point to a horizontal - line segment (Tom Lane) - </para> - - <para> - This bug affected several different geometric distance-measurement - operators. - </para> - </listitem> - - <listitem> - <para> - Fix <application>PL/pgSQL</>'s handling of <quote>simple</> - expressions to not fail in recursion or error-recovery cases (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm - (Alexander Korotkov) - </para> - - <para> - This could result in considerable inefficiency, though not actually - incorrect answers, in a GiST index on a <type>cube</> column. - If you have such an index, consider <command>REINDEX</>ing it after - installing this update. - </para> - </listitem> - - <listitem> - <para> - Don't emit <quote>identifier will be truncated</> notices in - <filename>contrib/dblink</> except when creating new connections - (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix potential coredump on missing public key in - <filename>contrib/pgcrypto</> (Marti Raudsepp) - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in <filename>contrib/xml2</>'s XPath query functions - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010o - for DST law changes in Fiji and Samoa; - also historical corrections for Hong Kong. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-22"> - <title>Release 8.1.22</title> - - <formalpara> - <title>Release date:</title> - <para>2010-10-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.21. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <para> - The <productname>PostgreSQL</> community will stop releasing updates - for the 8.1.X release series in November 2010. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.1.22</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.18, - see <xref linkend="release-8-1-18">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Use a separate interpreter for each calling SQL userid in PL/Perl and - PL/Tcl (Tom Lane) - </para> - - <para> - This change prevents security problems that can be caused by subverting - Perl or Tcl code that will be executed later in the same session under - another SQL user identity (for example, within a <literal>SECURITY - DEFINER</> function). Most scripting languages offer numerous ways that - that might be done, such as redefining standard functions or operators - called by the target function. Without this change, any SQL user with - Perl or Tcl language usage rights can do essentially anything with the - SQL privileges of the target function's owner. - </para> - - <para> - The cost of this change is that intentional communication among Perl - and Tcl functions becomes more difficult. To provide an escape hatch, - PL/PerlU and PL/TclU functions continue to use only one interpreter - per session. This is not considered a security issue since all such - functions execute at the trust level of a database superuser already. - </para> - - <para> - It is likely that third-party procedural languages that claim to offer - trusted execution have similar security issues. We advise contacting - the authors of any PL you are depending on for security-critical - purposes. - </para> - - <para> - Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433). - </para> - </listitem> - - <listitem> - <para> - Prevent possible crashes in <function>pg_get_expr()</> by disallowing - it from being called with an argument that is not one of the system - catalog columns it's intended to be used with - (Heikki Linnakangas, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane) - </para> - - <para> - This occurred when a sub-select contains a join alias reference that - expands into an expression containing another sub-select. - </para> - </listitem> - - <listitem> - <para> - Prevent show_session_authorization() from crashing within autovacuum - processes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Defend against functions returning setof record where not all the - returned rows are actually of the same rowtype (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible failure when hashing a pass-by-reference function result - (Tao Ma, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Take care to fsync the contents of lockfiles (both - <filename>postmaster.pid</> and the socket lockfile) while writing them - (Tom Lane) - </para> - - <para> - This omission could result in corrupted lockfile contents if the - machine crashes shortly after postmaster start. That could in turn - prevent subsequent attempts to start the postmaster from succeeding, - until the lockfile is manually removed. - </para> - </listitem> - - <listitem> - <para> - Avoid recursion while assigning XIDs to heavily-nested - subtransactions (Andres Freund, Robert Haas) - </para> - - <para> - The original coding could result in a crash if there was limited - stack space. - </para> - </listitem> - - <listitem> - <para> - Fix <varname>log_line_prefix</>'s <literal>%i</> escape, - which could produce junk early in backend startup (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible data corruption in <command>ALTER TABLE ... SET - TABLESPACE</> when archiving is enabled (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET - TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge) - </para> - </listitem> - - <listitem> - <para> - In PL/Python, defend against null pointer results from - <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</> - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Improve <filename>contrib/dblink</>'s handling of tables containing - dropped columns (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix connection leak after <quote>duplicate connection name</quote> - errors in <filename>contrib/dblink</> (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</> to handle connection names longer than - 62 bytes correctly (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Update build infrastructure and documentation to reflect the source code - repository's move from CVS to Git (Magnus Hagander and others) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010l - for DST law changes in Egypt and Palestine; also historical corrections - for Finland. - </para> - - <para> - This change also adds new names for two Micronesian timezones: - Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred - abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over - Pacific/Ponape. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-21"> - <title>Release 8.1.21</title> - - <formalpara> - <title>Release date:</title> - <para>2010-05-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.20. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.21</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.18, - see <xref linkend="release-8-1-18">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Enforce restrictions in <literal>plperl</> using an opmask applied to - the whole interpreter, instead of using <filename>Safe.pm</> - (Tim Bunce, Andrew Dunstan) - </para> - - <para> - Recent developments have convinced us that <filename>Safe.pm</> is too - insecure to rely on for making <literal>plperl</> trustable. This - change removes use of <filename>Safe.pm</> altogether, in favor of using - a separate interpreter with an opcode mask that is always applied. - Pleasant side effects of the change include that it is now possible to - use Perl's <literal>strict</> pragma in a natural way in - <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</> - variables work as expected in sort routines, and that function - compilation is significantly faster. (CVE-2010-1169) - </para> - </listitem> - - <listitem> - <para> - Prevent PL/Tcl from executing untrustworthy code from - <structname>pltcl_modules</> (Tom) - </para> - - <para> - PL/Tcl's feature for autoloading Tcl code from a database table - could be exploited for trojan-horse attacks, because there was no - restriction on who could create or insert into that table. This change - disables the feature unless <structname>pltcl_modules</> is owned by a - superuser. (However, the permissions on the table are not checked, so - installations that really need a less-than-secure modules table can - still grant suitable privileges to trusted non-superusers.) Also, - prevent loading code into the unrestricted <quote>normal</> Tcl - interpreter unless we are really going to execute a <literal>pltclu</> - function. (CVE-2010-1170) - </para> - </listitem> - - <listitem> - <para> - Do not allow an unprivileged user to reset superuser-only parameter - settings (Alvaro) - </para> - - <para> - Previously, if an unprivileged user ran <literal>ALTER USER ... RESET - ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for - a database he owns, this would remove all special parameter settings - for the user or database, even ones that are only supposed to be - changeable by a superuser. Now, the <command>ALTER</> will only - remove the parameters that the user has permission to change. - </para> - </listitem> - - <listitem> - <para> - Avoid possible crash during backend shutdown if shutdown occurs - when a <literal>CONTEXT</> addition would be made to log entries (Tom) - </para> - - <para> - In some cases the context-printing function would fail because the - current transaction had already been rolled back when it came time - to print a log message. - </para> - </listitem> - - <listitem> - <para> - Update pl/perl's <filename>ppport.h</> for modern Perl versions - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix assorted memory leaks in pl/python (Andreas Freund, Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent infinite recursion in <application>psql</> when expanding - a variable that refers to itself (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure that <filename>contrib/pgstattuple</> functions respond to cancel - interrupts promptly (Tatsuhito Kasahara) - </para> - </listitem> - - <listitem> - <para> - Make server startup deal properly with the case that - <function>shmget()</> returns <literal>EINVAL</> for an existing - shared memory segment (Tom) - </para> - - <para> - This behavior has been observed on BSD-derived kernels including OS X. - It resulted in an entirely-misleading startup failure complaining that - the shared memory request size was too large. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010j - for DST law changes in Argentina, Australian Antarctic, Bangladesh, - Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; - also historical corrections for Taiwan. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-20"> - <title>Release 8.1.20</title> - - <formalpara> - <title>Release date:</title> - <para>2010-03-15</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.19. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.20</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.18, - see <xref linkend="release-8-1-18">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Add new configuration parameter <varname>ssl_renegotiation_limit</> to - control how often we do session key renegotiation for an SSL connection - (Magnus) - </para> - - <para> - This can be set to zero to disable renegotiation completely, which may - be required if a broken SSL library is used. In particular, some - vendors are shipping stopgap patches for CVE-2009-3555 that cause - renegotiation attempts to fail. - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes when trying to recover from a failure in - subtransaction start (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix server memory leak associated with use of savepoints and a client - encoding different from server's encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <function>substring()</> for <type>bit</> types treat any negative - length as meaning <quote>all the rest of the string</> (Tom) - </para> - - <para> - The previous coding treated only -1 that way, and would produce an - invalid result value for other negative values, possibly leading to - a crash (CVE-2010-0442). - </para> - </listitem> - - <listitem> - <para> - Fix integer-to-bit-string conversions to handle the first fractional - byte correctly when the output bit width is wider than the given - integer by something other than a multiple of 8 bits (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix some cases of pathologically slow regular expression matching (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix the <literal>STOP WAL LOCATION</> entry in backup history files to - report the next WAL segment's name when the end location is exactly at a - segment boundary (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix some more cases of temporary-file leakage (Heikki) - </para> - - <para> - This corrects a problem introduced in the previous minor release. - One case that failed is when a plpgsql function returning set is - called within another function's exception handler. - </para> - </listitem> - - <listitem> - <para> - When reading <filename>pg_hba.conf</> and related files, do not treat - <literal>@something</> as a file inclusion request if the <literal>@</> - appears inside quote marks; also, never treat <literal>@</> by itself - as a file inclusion request (Tom) - </para> - - <para> - This prevents erratic behavior if a role or database name starts with - <literal>@</>. If you need to include a file whose path name - contains spaces, you can still do so, but you must write - <literal>@"/path to/file"</> rather than putting the quotes around - the whole construct. - </para> - </listitem> - - <listitem> - <para> - Prevent infinite loop on some platforms if a directory is named as - an inclusion target in <filename>pg_hba.conf</> and related files - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s <literal>numericlocale</> option to not - format strings it shouldn't in latex and troff output formats (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix plpgsql failure in one case where a composite column is set to NULL - (Tom) - </para> - </listitem> - - <listitem> - <para> - Add <literal>volatile</> markings in PL/Python to avoid possible - compiler-specific misbehavior (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Ensure PL/Tcl initializes the Tcl interpreter fully (Tom) - </para> - - <para> - The only known symptom of this oversight is that the Tcl - <literal>clock</> command misbehaves if using Tcl 8.5 or later. - </para> - </listitem> - - <listitem> - <para> - Prevent crash in <filename>contrib/dblink</> when too many key - columns are specified to a <function>dblink_build_sql_*</> function - (Rushabh Lathia, Joe Conway) - </para> - </listitem> - - <listitem> - <para> - Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy - memory management (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010e - for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-19"> - <title>Release 8.1.19</title> - - <formalpara> - <title>Release date:</title> - <para>2009-12-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.18. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.19</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.18, - see <xref linkend="release-8-1-18">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Protect against indirect security threats caused by index functions - changing session-local state (Gurjeet Singh, Tom) - </para> - - <para> - This change prevents allegedly-immutable index functions from possibly - subverting a superuser's session (CVE-2009-4136). - </para> - </listitem> - - <listitem> - <para> - Reject SSL certificates containing an embedded null byte in the common - name (CN) field (Magnus) - </para> - - <para> - This prevents unintended matching of a certificate to a server or client - name during SSL validation (CVE-2009-4034). - </para> - </listitem> - - <listitem> - <para> - Fix possible crash during backend-startup-time cache initialization (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent signals from interrupting <literal>VACUUM</> at unsafe times - (Alvaro) - </para> - - <para> - This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled - after it's already committed its tuple movements, as well as transient - errors if a plain <literal>VACUUM</> is interrupted after having - truncated the table. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to integer overflow in hash table size - calculation (Tom) - </para> - - <para> - This could occur with extremely large planner estimates for the size of - a hashjoin's result. - </para> - </listitem> - - <listitem> - <para> - Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris - Mikkelson) - </para> - </listitem> - - <listitem> - <para> - Ensure that shared tuple-level locks held by prepared transactions are - not ignored (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix premature drop of temporary files used for a cursor that is accessed - within a subtransaction (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix PAM password processing to be more robust (Tom) - </para> - - <para> - The previous code is known to fail with the combination of the Linux - <literal>pam_krb5</> PAM module with Microsoft Active Directory as the - domain controller. It might have problems elsewhere too, since it was - making unjustified assumptions about what arguments the PAM stack would - pass to it. - </para> - </listitem> - - <listitem> - <para> - Fix processing of ownership dependencies during <literal>CREATE OR - REPLACE FUNCTION</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure that Perl arrays are properly converted to - <productname>PostgreSQL</> arrays when returned by a set-returning - PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen) - </para> - - <para> - This worked correctly already for non-set-returning functions. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash in exception processing in PL/Python (Peter) - </para> - </listitem> - - <listitem> - <para> - Ensure <application>psql</>'s flex module is compiled with the correct - system header definitions (Tom) - </para> - - <para> - This fixes build failures on platforms where - <literal>--enable-largefile</> causes incompatible changes in the - generated code. - </para> - </listitem> - - <listitem> - <para> - Make the postmaster ignore any <literal>application_name</> parameter in - connection request packets, to improve compatibility with future libpq - versions (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009s - for DST law changes in Antarctica, Argentina, Bangladesh, Fiji, - Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical - corrections for Hong Kong. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-18"> - <title>Release 8.1.18</title> - - <formalpara> - <title>Release date:</title> - <para>2009-09-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.17. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.18</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you have any hash indexes on <type>interval</> columns, - you must <command>REINDEX</> them after updating to 8.1.18. - Also, if you are upgrading from a version earlier than 8.1.15, - see <xref linkend="release-8-1-15">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Disallow <command>RESET ROLE</> and <command>RESET SESSION - AUTHORIZATION</> inside security-definer functions (Tom, Heikki) - </para> - - <para> - This covers a case that was missed in the previous patch that - disallowed <command>SET ROLE</> and <command>SET SESSION - AUTHORIZATION</> inside security-definer functions. - (See CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Fix handling of sub-SELECTs appearing in the arguments of - an outer-level aggregate function (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix hash calculation for data type <type>interval</> (Tom) - </para> - - <para> - This corrects wrong results for hash joins on interval values. - It also changes the contents of hash indexes on interval columns. - If you have any such indexes, you must <command>REINDEX</> them - after updating. - </para> - </listitem> - - <listitem> - <para> - Treat <function>to_char(..., 'TH')</> as an uppercase ordinal - suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki) - </para> - - <para> - It was previously handled as <literal>'th'</> (lowercase). - </para> - </listitem> - - <listitem> - <para> - Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal> - when <replaceable>x</> is more than 2 million and integer - datetimes are in use (Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Fix calculation of distance between a point and a line segment (Tom) - </para> - - <para> - This led to incorrect results from a number of geometric operators. - </para> - </listitem> - - <listitem> - <para> - Fix <type>money</> data type to work in locales where currency - amounts have no fractional digits, e.g. Japan (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Properly round datetime input like - <literal>00:12:57.9999999999999999999999999999</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix poor choice of page split point in GiST R-tree operator classes - (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix portability issues in plperl initialization (Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to not go into an infinite loop if - <filename>postgresql.conf</> is empty (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to - properly handle the maximum number of parameters (twenty) (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve robustness of <application>libpq</>'s code to recover - from errors during <command>COPY FROM STDIN</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid including conflicting readline and editline header files - when both libraries are installed (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009l - for DST law changes in Bangladesh, Egypt, Jordan, Pakistan, - Argentina/San_Luis, Cuba, Jordan (historical correction only), - Mauritius, Morocco, Palestine, Syria, Tunisia. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-17"> - <title>Release 8.1.17</title> - - <formalpara> - <title>Release date:</title> - <para>2009-03-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.16. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.17</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.15, - see <xref linkend="release-8-1-15">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent error recursion crashes when encoding conversion fails (Tom) - </para> - - <para> - This change extends fixes made in the last two minor releases for - related failure scenarios. The previous fixes were narrowly tailored - for the original problem reports, but we have now recognized that - <emphasis>any</> error thrown by an encoding conversion function could - potentially lead to infinite recursion while trying to report the - error. The solution therefore is to disable translation and encoding - conversion and report the plain-ASCII form of any error message, - if we find we have gotten into a recursive error reporting situation. - (CVE-2009-0922) - </para> - </listitem> - - <listitem> - <para> - Disallow <command>CREATE CONVERSION</> with the wrong encodings - for the specified conversion function (Heikki) - </para> - - <para> - This prevents one possible scenario for encoding conversion failure. - The previous change is a backstop to guard against other kinds of - failures in the same area. - </para> - </listitem> - - <listitem> - <para> - Fix core dump when <function>to_char()</> is given format codes that - are inappropriate for the type of the data argument (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix decompilation of <literal>CASE WHEN</> with an implicit coercion - (Tom) - </para> - - <para> - This mistake could lead to Assert failures in an Assert-enabled build, - or an <quote>unexpected CASE WHEN clause</> error message in other - cases, when trying to examine or dump a view. - </para> - </listitem> - - <listitem> - <para> - Fix possible misassignment of the owner of a TOAST table's rowtype (Tom) - </para> - - <para> - If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</> - were executed by someone other than the table owner, the - <structname>pg_type</> entry for the table's TOAST table would end up - marked as owned by that someone. This caused no immediate problems, - since the permissions on the TOAST rowtype aren't examined by any - ordinary database operation. However, it could lead to unexpected - failures if one later tried to drop the role that issued the command - (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</> - warnings from <application>pg_dump</> after having done so (in 8.3). - </para> - </listitem> - - <listitem> - <para> - Clean up PL/pgSQL error status variables fully at block exit - (Ashesh Vashi and Dave Page) - </para> - - <para> - This is not a problem for PL/pgSQL itself, but the omission could cause - the PL/pgSQL Debugger to crash while examining the state of a function. - </para> - </listitem> - - <listitem> - <para> - Add <literal>MUST</> (Mauritius Island Summer Time) to the default list - of known timezone abbreviations (Xavier Bugaud) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-16"> - <title>Release 8.1.16</title> - - <formalpara> - <title>Release date:</title> - <para>2009-02-02</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.15. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.16</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.15, - see <xref linkend="release-8-1-15">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix crash in autovacuum (Alvaro) - </para> - - <para> - The crash occurs only after vacuuming a whole database for - anti-transaction-wraparound purposes, which means that it occurs - infrequently and is hard to track down. - </para> - </listitem> - - <listitem> - <para> - Improve handling of URLs in <function>headline()</> function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Improve handling of overlength headlines in <function>headline()</> - function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Prevent possible Assert failure or misconversion if an encoding - conversion is created with the wrong conversion function for the - specified pair of encodings (Tom, Heikki) - </para> - </listitem> - - <listitem> - <para> - Avoid unnecessary locking of small tables in <command>VACUUM</> - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Ensure that the contents of a holdable cursor don't depend on the - contents of TOAST tables (Tom) - </para> - - <para> - Previously, large field values in a cursor result might be represented - as TOAST pointers, which would fail if the referenced table got dropped - before the cursor is read, or if the large value is deleted and then - vacuumed away. This cannot happen with an ordinary cursor, - but it could with a cursor that is held past its creating transaction. - </para> - </listitem> - - <listitem> - <para> - Fix uninitialized variables in <filename>contrib/tsearch2</>'s - <function>get_covers()</> function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix <application>configure</> script to properly report failure when - unable to obtain linkage information for PL/Perl (Andrew) - </para> - </listitem> - - <listitem> - <para> - Make all documentation reference <literal>pgsql-bugs</> and/or - <literal>pgsql-hackers</> as appropriate, instead of the - now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</> - mailing lists (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009a (for - Kathmandu and historical DST corrections in Switzerland, Cuba) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-15"> - <title>Release 8.1.15</title> - - <formalpara> - <title>Release date:</title> - <para>2008-11-03</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.14. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.15</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. Also, if you were running a previous - 8.1.X release, it is recommended to <command>REINDEX</> all GiST - indexes after the upgrade. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix GiST index corruption due to marking the wrong index entry - <quote>dead</> after a deletion (Teodor) - </para> - - <para> - This would result in index searches failing to find rows they - should have found. Corrupted indexes can be fixed with - <command>REINDEX</>. - </para> - </listitem> - - <listitem> - <para> - Fix backend crash when the client encoding cannot represent a localized - error message (Tom) - </para> - - <para> - We have addressed similar issues before, but it would still fail if - the <quote>character has no equivalent</> message itself couldn't - be converted. The fix is to disable localization and send the plain - ASCII error message when we detect such a situation. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash when deeply nested functions are invoked from - a trigger (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears - in a function call in <literal>FROM</>, a multi-row <literal>VALUES</> - list, or a <literal>RETURNING</> list (Tom) - </para> - - <para> - The usual symptom of this problem is an <quote>unrecognized node type</> - error. - </para> - </listitem> - - <listitem> - <para> - Ensure an error is reported when a newly-defined PL/pgSQL trigger - function is invoked as a normal function (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent possible collision of <structfield>relfilenode</> numbers - when moving a table to another tablespace with <command>ALTER SET - TABLESPACE</> (Heikki) - </para> - - <para> - The command tried to re-use the existing filename, instead of - picking one that is known unused in the destination directory. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect tsearch2 headline generation when single query - item matches first word of text (Sushant Sinha) - </para> - </listitem> - - <listitem> - <para> - Fix improper display of fractional seconds in interval values when - using a non-ISO datestyle in an <option>--enable-integer-datetimes</> - build (Ron Mayer) - </para> - </listitem> - - <listitem> - <para> - Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</> - behave correctly when the passed tuple and tuple descriptor have - different numbers of columns (Tom) - </para> - - <para> - This situation is normal when a table has had columns added or removed, - but these two functions didn't handle it properly. - The only likely consequence is an incorrect error indication. - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix recent breakage of <literal>pg_ctl restart</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008i (for - DST law changes in Argentina, Brazil, Mauritius, Syria) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-14"> - <title>Release 8.1.14</title> - - <formalpara> - <title>Release date:</title> - <para>2008-09-22</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.13. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.14</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Widen local lock counters from 32 to 64 bits (Tom) - </para> - - <para> - This responds to reports that the counters could overflow in - sufficiently long transactions, leading to unexpected <quote>lock is - already held</> errors. - </para> - </listitem> - - <listitem> - <para> - Fix possible duplicate output of tuples during a GiST index scan (Teodor) - </para> - </listitem> - - <listitem> - <para> - Add checks in executor startup to ensure that the tuples produced by an - <command>INSERT</> or <command>UPDATE</> will match the target table's - current rowtype (Tom) - </para> - - <para> - <command>ALTER COLUMN TYPE</>, followed by re-use of a previously - cached plan, could produce this type of situation. The check protects - against data corruption and/or crashes that could ensue. - </para> - </listitem> - - <listitem> - <para> - Fix <literal>AT TIME ZONE</> to first try to interpret its timezone - argument as a timezone abbreviation, and only try it as a full timezone - name if that fails, rather than the other way around as formerly (Tom) - </para> - - <para> - The timestamp input functions have always resolved ambiguous zone names - in this order. Making <literal>AT TIME ZONE</> do so as well improves - consistency, and fixes a compatibility bug introduced in 8.1: - in ambiguous cases we now behave the same as 8.0 and before did, - since in the older versions <literal>AT TIME ZONE</> accepted - <emphasis>only</> abbreviations. - </para> - </listitem> - - <listitem> - <para> - Fix datetime input functions to correctly detect integer overflow when - running on a 64-bit platform (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve performance of writing very long log messages to syslog (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT - ON</> query (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner bug with nested sub-select expressions (Tom) - </para> - - <para> - If the outer sub-select has no direct dependency on the parent query, - but the inner one does, the outer value might not get recalculated - for new parent query rows. - </para> - </listitem> - - <listitem> - <para> - Fix planner to estimate that <literal>GROUP BY</> expressions yielding - boolean results always result in two groups, regardless of the - expressions' contents (Tom) - </para> - - <para> - This is very substantially more accurate than the regular <literal>GROUP - BY</> estimate for certain boolean tests like <replaceable>col</> - <literal>IS NULL</>. - </para> - </listitem> - - <listitem> - <para> - Fix PL/pgSQL to not fail when a <literal>FOR</> loop's target variable - is a record containing composite-type fields (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful - about the encoding of data sent to or from Tcl (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python to work with Python 2.5 - </para> - - <para> - This is a back-port of fixes made during the 8.2 development cycle. - </para> - </listitem> - - <listitem> - <para> - Improve <application>pg_dump</> and <application>pg_restore</>'s - error reporting after failure to send a SQL command (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to properly preserve postmaster - command-line arguments across a <literal>restart</> (Bruce) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008f (for - DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, - Pakistan, Palestine, and Paraguay) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-13"> - <title>Release 8.1.13</title> - - <formalpara> - <title>Release date:</title> - <para>2008-06-12</para> - </formalpara> - - <para> - This release contains one serious and one minor bug fix over 8.1.12. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.13</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom) - </para> - - <para> - Before this fix, a negative constant in a view or rule might be dumped - as, say, <literal>-42::integer</>, which is subtly incorrect: it should - be <literal>(-42)::integer</> due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - <productname>PostgreSQL</> to reject what had been a valid - <command>SELECT DISTINCT</> view query. Since this could result in - <application>pg_dump</> output failing to reload, it is being treated - as a high-priority fix. The only released versions in which dump - output is actually incorrect are 8.3.1 and 8.2.7. - </para> - </listitem> - - <listitem> - <para> - Make <command>ALTER AGGREGATE ... OWNER TO</> update - <structname>pg_shdepend</> (Tom) - </para> - - <para> - This oversight could lead to problems if the aggregate was later - involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</> - operation. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-12"> - <title>Release 8.1.12</title> - - <formalpara> - <title>Release date:</title> - <para>never released</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.11. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.12</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new - column is correctly checked to see if it's been initialized to all - non-nulls (Brendan Jurd) - </para> - - <para> - Previous versions neglected to check this requirement at all. - </para> - </listitem> - - <listitem> - <para> - Fix possible <command>CREATE TABLE</> failure when inheriting the - <quote>same</> constraint from multiple parent relations that - inherited that constraint from a common ancestor (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix conversions between ISO-8859-5 and other encodings to handle - Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with - two dots) (Sergey Burladyan) - </para> - </listitem> - - <listitem> - <para> - Fix a few datatype input functions - that were allowing unused bytes in their results to contain - uninitialized, unpredictable values (Tom) - </para> - - <para> - This could lead to failures in which two apparently identical literal - values were not seen as equal, resulting in the parser complaining - about unmatched <literal>ORDER BY</> and <literal>DISTINCT</> - expressions. - </para> - </listitem> - - <listitem> - <para> - Fix a corner case in regular-expression substring matching - (<literal>substring(<replaceable>string</> from - <replaceable>pattern</>)</literal>) (Tom) - </para> - - <para> - The problem occurs when there is a match to the pattern overall but - the user has specified a parenthesized subexpression and that - subexpression hasn't got a match. An example is - <literal>substring('foo' from 'foo(bar)?')</>. - This should return NULL, since <literal>(bar)</> isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - <literal>foo</>). - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008c (for - DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, - Argentina/San_Luis, and Chile) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect result from <application>ecpg</>'s - <function>PGTYPEStimestamp_sub()</> function (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix core dump in <filename>contrib/xml2</>'s - <function>xpath_table()</> function when the input query returns a - NULL value (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</>'s makefile to not override - <literal>CFLAGS</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</> - 4.3 (Tom) - </para> - - <para> - This problem affects <quote>old style</> (V0) C functions that - return boolean. The fix is already in 8.3, but the need to - back-patch it was not realized at the time. - </para> - </listitem> - - <listitem> - <para> - Fix longstanding <command>LISTEN</>/<command>NOTIFY</> - race condition (Tom) - </para> - - <para> - In rare cases a session that had just executed a - <command>LISTEN</> might not get a notification, even though - one would be expected because the concurrent transaction executing - <command>NOTIFY</> was observed to commit later. - </para> - - <para> - A side effect of the fix is that a transaction that has executed - a not-yet-committed <command>LISTEN</> command will not see any - row in <structname>pg_listener</> for the <command>LISTEN</>, - should it choose to look; formerly it would have. This behavior - was never documented one way or the other, but it is possible that - some applications depend on the old behavior. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>LISTEN</> and <command>UNLISTEN</> within a - prepared transaction (Tom) - </para> - - <para> - This was formerly allowed but trying to do it had various unpleasant - consequences, notably that the originating backend could not exit - as long as an <command>UNLISTEN</> remained uncommitted. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash when an error occurs during a query using a hash index - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix input of datetime values for February 29 in years BC (Tom) - </para> - - <para> - The former coding was mistaken about which years were leap years. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>unrecognized node type</> error in some variants of - <command>ALTER OWNER</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to correctly extract the postmaster's port - number from command-line options (Itagaki Takahiro, Tom) - </para> - - <para> - Previously, <literal>pg_ctl start -w</> could try to contact the - postmaster on the wrong port, leading to bogus reports of startup - failure. - </para> - </listitem> - - <listitem> - <para> - Use <option>-fwrapv</> to defend against possible misoptimization - in recent <application>gcc</> versions (Tom) - </para> - - <para> - This is known to be necessary when building <productname>PostgreSQL</> - with <application>gcc</> 4.3 or later. - </para> - </listitem> - - <listitem> - <para> - Fix display of constant expressions in <literal>ORDER BY</> - and <literal>GROUP BY</> (Tom) - </para> - - <para> - An explicitly casted constant would be shown incorrectly. This could - for example lead to corruption of a view definition during - dump and reload. - </para> - </listitem> - - <listitem> - <para> - Fix <application>libpq</> to handle NOTICE messages correctly - during COPY OUT (Tom) - </para> - - <para> - This failure has only been observed to occur when a user-defined - datatype's output routine issues a NOTICE, but there is no - guarantee it couldn't happen due to other causes. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-11"> - <title>Release 8.1.11</title> - - <formalpara> - <title>Release date:</title> - <para>2008-01-07</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.10, - including fixes for significant security issues. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <para> - This is the last 8.1.X release for which the <productname>PostgreSQL</> - community will produce binary packages for <productname>Windows</>. - Windows users are encouraged to move to 8.2.X or later, - since there are Windows-specific fixes in 8.2.X that - are impractical to back-port. 8.1.X will continue to - be supported on other platforms. - </para> - - <sect2> - <title>Migration to Version 8.1.11</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent functions in indexes from executing with the privileges of - the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom) - </para> - - <para> - Functions used in index expressions and partial-index - predicates are evaluated whenever a new table entry is made. It has - long been understood that this poses a risk of trojan-horse code - execution if one modifies a table owned by an untrustworthy user. - (Note that triggers, defaults, check constraints, etc. pose the - same type of risk.) But functions in indexes pose extra danger - because they will be executed by routine maintenance operations - such as <command>VACUUM FULL</>, which are commonly performed - automatically under a superuser account. For example, a nefarious user - can execute code with superuser privileges by setting up a - trojan-horse index definition and waiting for the next routine vacuum. - The fix arranges for standard maintenance operations - (including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>, - and <command>CLUSTER</>) to execute as the table owner rather than - the calling user, using the same privilege-switching mechanism already - used for <literal>SECURITY DEFINER</> functions. To prevent bypassing - this security measure, execution of <command>SET SESSION - AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a - <literal>SECURITY DEFINER</> context. (CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Repair assorted bugs in the regular-expression package (Tom, Will Drewry) - </para> - - <para> - Suitably crafted regular-expression patterns could cause crashes, - infinite or near-infinite looping, and/or massive memory consumption, - all of which pose denial-of-service hazards for applications that - accept regex search patterns from untrustworthy sources. - (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</> to use only - password authentication, as a security measure (Joe) - </para> - - <para> - The fix that appeared for this in 8.1.10 was incomplete, as it plugged - the hole for only some <filename>dblink</> functions. (CVE-2007-6601, - CVE-2007-3278) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2007k - (in particular, recent Argentina changes) (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve planner's handling of LIKE/regex estimation in non-C locales - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner failure in some cases of <literal>WHERE false AND var IN - (SELECT ...)</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Preserve the tablespace of indexes that are - rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Make archive recovery always start a new WAL timeline, rather than only - when a recovery stop time was used (Simon) - </para> - - <para> - This avoids a corner-case risk of trying to overwrite an existing - archived copy of the last WAL segment, and seems simpler and cleaner - than the original definition. - </para> - </listitem> - - <listitem> - <para> - Make <command>VACUUM</> not use all of <varname>maintenance_work_mem</> - when the table is too small for it to be useful (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Fix potential crash in <function>translate()</> when using a multibyte - database encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix overflow in <literal>extract(epoch from interval)</> for intervals - exceeding 68 years (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Perl to not fail when a UTF-8 regular expression is used - in a trusted function (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Perl to cope when platform's Perl defines type <literal>bool</> - as <literal>int</> rather than <literal>char</> (Tom) - </para> - - <para> - While this could theoretically happen anywhere, no standard build of - Perl did things this way ... until <productname>Mac OS X</> 10.5. - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python to not crash on long exception messages (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_dump</> to correctly handle inheritance child tables - that have default expressions different from their parent's (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>libpq</> crash when <varname>PGPASSFILE</> refers - to a file that is not a plain file (Martin Pitt) - </para> - </listitem> - - <listitem> - <para> - <application>ecpg</> parser fixes (Michael) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/pgcrypto</> defend against - <application>OpenSSL</> libraries that fail on keys longer than 128 - bits; which is the case at least on some Solaris versions (Marko Kreen) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle - NULL rowid as a category in its own right, rather than crashing (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix <type>tsvector</> and <type>tsquery</> output routines to - escape backslashes correctly (Teodor, Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix crash of <function>to_tsvector()</> on huge input strings (Teodor) - </para> - </listitem> - - <listitem> - <para> - Require a specific version of <productname>Autoconf</> to be used - when re-generating the <command>configure</> script (Peter) - </para> - - <para> - This affects developers and packagers only. The change was made - to prevent accidental use of untested combinations of - <productname>Autoconf</> and <productname>PostgreSQL</> versions. - You can remove the version check if you really want to use a - different <productname>Autoconf</> version, but it's - your responsibility whether the result works or not. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-10"> - <title>Release 8.1.10</title> - - <formalpara> - <title>Release date:</title> - <para>2007-09-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.9. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.10</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent index corruption when a transaction inserts rows and - then aborts close to the end of a concurrent <command>VACUUM</> - on the same table (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow the <type>interval</> data type to accept input consisting only of - milliseconds or microseconds (Neil) - </para> - </listitem> - - <listitem> - <para> - Speed up rtree index insertion (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix excessive logging of <acronym>SSL</> error messages (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix logging so that log messages are never interleaved when using - the syslogger process (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix crash when <varname>log_min_error_statement</> logging runs out - of memory (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect handling of some foreign-key corner cases (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent <command>REINDEX</> and <command>CLUSTER</> from failing - due to attempting to process temporary tables of other sessions (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Update the time zone database rules, particularly New Zealand's upcoming changes (Tom) - </para> - </listitem> - - <listitem> - <para> - Windows socket improvements (Magnus) - </para> - </listitem> - - <listitem> - <para> - Suppress timezone name (<literal>%Z</>) in log timestamps on Windows - because of possible encoding mismatches (Tom) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</> to use only - password authentication, as a security measure (Joe) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-9"> - <title>Release 8.1.9</title> - - <formalpara> - <title>Release date:</title> - <para>2007-04-23</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.8, - including a security fix. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.9</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Support explicit placement of the temporary-table schema within - <varname>search_path</>, and disable searching it for functions - and operators (Tom) - </para> - <para> - This is needed to allow a security-definer function to set a - truly secure value of <varname>search_path</>. Without it, - an unprivileged SQL user can use temporary objects to execute code - with the privileges of the security-definer function (CVE-2007-2138). - See <command>CREATE FUNCTION</> for more information. - </para> - </listitem> - - <listitem> - <para> - <filename>/contrib/tsearch2</> crash fixes (Teodor) - </para> - </listitem> - - <listitem> - <para> - Require <command>COMMIT PREPARED</> to be executed in the same - database as the transaction was prepared in (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles - <command>UPDATE</> chains (Tom, Pavan Deolasee) - </para> - </listitem> - - <listitem> - <para> - Planner fixes, including improving outer join and bitmap scan - selection logic (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PANIC during enlargement of a hash index (bug introduced in 8.1.6) - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix POSIX-style timezone specs to follow new USA DST rules (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-8"> - <title>Release 8.1.8</title> - - <formalpara> - <title>Release date:</title> - <para>2007-02-07</para> - </formalpara> - - <para> - This release contains one fix from 8.1.7. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.8</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Remove overly-restrictive check for type length in constraints and - functional indexes(Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-7"> - <title>Release 8.1.7</title> - - <formalpara> - <title>Release date:</title> - <para>2007-02-05</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.6, including - a security fix. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.7</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Remove security vulnerabilities that allowed connected users - to read backend memory (Tom) - </para> - <para> - The vulnerabilities involve suppressing the normal check that a SQL - function returns the data type it's declared to, and changing the - data type of a table column (CVE-2007-0555, CVE-2007-0556). These - errors can easily be exploited to cause a backend crash, and in - principle might be used to read database content that the user - should not be able to access. - </para> - </listitem> - - <listitem> - <para> - Fix rare bug wherein btree index page splits could fail - due to choosing an infeasible split point (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Improve <command>VACUUM</> performance for databases with many tables (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix autovacuum to avoid leaving non-permanent transaction IDs in - non-connectable databases (Alvaro) - </para> - - <para> - This bug affects the 8.1 branch only. - </para> - </listitem> - - <listitem> - <para> - Fix for rare Assert() crash triggered by <literal>UNION</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Tighten security of multi-byte character processing for UTF8 sequences - over three bytes long (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bogus <quote>permission denied</> failures occurring on Windows - due to attempts to fsync already-deleted files (Magnus, Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes when an already-in-use PL/pgSQL function is - updated (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-6"> - <title>Release 8.1.6</title> - - <formalpara> - <title>Release date:</title> - <para>2007-01-08</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.5. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.6</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Improve handling of <function>getaddrinfo()</> on AIX (Tom) - </para> - - <para> - This fixes a problem with starting the statistics collector, - among other things. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</> to handle a tar-format backup - that contains large objects (blobs) with comments (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <quote>failed to re-find parent key</> errors in - <command>VACUUM</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Clean out <filename>pg_internal.init</> cache files during server - restart (Simon) - </para> - - <para> - This avoids a hazard that the cache files might contain stale - data after PITR recovery. - </para> - </listitem> - - <listitem> - <para> - Fix race condition for truncation of a large relation across a - gigabyte boundary by <command>VACUUM</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug causing needless deadlock errors on row-level locks (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bugs affecting multi-gigabyte hash indexes (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible deadlock in Windows signal handling (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix error when constructing an <literal>ARRAY[]</> made up of multiple - empty elements (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix ecpg memory leak during connection (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix for Darwin (OS X) compilation (Tom) - </para> - </listitem> - - <listitem> - <para> - <function>to_number()</> and <function>to_char(numeric)</> - are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for - new <application>initdb</> installs (Tom) - </para> - - <para> - This is because <varname>lc_numeric</> can potentially - change the output of these functions. - </para> - </listitem> - - <listitem> - <para> - Improve index usage of regular expressions that use parentheses (Tom) - </para> - - <para> - This improves <application>psql</> <literal>\d</> performance also. - </para> - </listitem> - - <listitem> - <para> - Update timezone database - </para> - - <para> - This affects Australian and Canadian daylight-savings rules in - particular. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-5"> - <title>Release 8.1.5</title> - - <formalpara> - <title>Release date:</title> - <para>2006-10-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.4. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.5</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Disallow aggregate functions in <command>UPDATE</> -commands, except within sub-SELECTs (Tom)</para> -<para>The behavior of such an aggregate was unpredictable, and in 8.1.X -could cause a crash, so it has been disabled. The SQL standard does not allow -this either.</para></listitem> -<listitem><para>Fix core dump when an untyped literal is taken as -ANYARRAY</para></listitem> -<listitem><para>Fix core dump in duration logging for extended query protocol -when a <command>COMMIT</> or <command>ROLLBACK</> is -executed</para></listitem> -<listitem><para>Fix mishandling of AFTER triggers when query contains a SQL -function returning multiple rows (Tom)</para></listitem> -<listitem><para>Fix <command>ALTER TABLE ... TYPE</> to recheck -<literal>NOT NULL</> for <literal>USING</> clause (Tom)</para></listitem> -<listitem><para>Fix <function>string_to_array()</> to handle overlapping - matches for the separator string</para> -<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>. -</para></listitem> -<listitem><para>Fix <function>to_timestamp()</> for -<literal>AM</>/<literal>PM</> formats (Bruce)</para></listitem> -<listitem><para>Fix autovacuum's calculation that decides whether - <command>ANALYZE</> is needed (Alvaro)</para></listitem> -<listitem><para>Fix corner cases in pattern matching for - <application>psql</>'s <literal>\d</> commands</para></listitem> -<listitem><para>Fix index-corrupting bugs in /contrib/ltree - (Teodor)</para></listitem> -<listitem><para>Numerous robustness fixes in <application>ecpg</> (Joachim -Wieland)</para></listitem> -<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem> -<listitem><para>Minor fixes in /contrib/dblink and /contrib/tsearch2</para> -</listitem> -<listitem><para>Efficiency improvements in hash tables and bitmap index scans -(Tom)</para></listitem> -<listitem><para>Fix instability of statistics collection on Windows (Tom, Andrew)</para></listitem> -<listitem><para>Fix <varname>statement_timeout</> to use the proper -units on Win32 (Bruce)</para> -<para>In previous Win32 8.1.X versions, the delay was off by a factor of -100.</para></listitem> -<listitem><para>Fixes for <acronym>MSVC</> and <productname>Borland C++</> -compilers (Hiroshi Saito)</para></listitem> -<listitem><para>Fixes for <systemitem class="osname">AIX</> and -<productname>Intel</> compilers (Tom)</para></listitem> -<listitem><para>Fix rare bug in continuous archiving (Tom)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-4"> - <title>Release 8.1.4</title> - - <formalpara> - <title>Release date:</title> - <para>2006-05-23</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.3, - including patches for extremely serious security issues. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.4</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. - </para> - - <para> - Full security against the SQL-injection attacks described in - CVE-2006-2313 and CVE-2006-2314 might require changes in application - code. If you have applications that embed untrustworthy strings - into SQL commands, you should examine them as soon as possible to - ensure that they are using recommended escaping techniques. In - most cases, applications should be using subroutines provided by - libraries or drivers (such as <application>libpq</>'s - <function>PQescapeStringConn()</>) to perform string escaping, - rather than relying on <foreignphrase>ad hoc</> code to do it. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Change the server to reject invalidly-encoded multibyte -characters in all cases (Tatsuo, Tom)</para> -<para>While <productname>PostgreSQL</> has been moving in this direction for -some time, the checks are now applied uniformly to all encodings and all -textual input, and are now always errors not merely warnings. This change -defends against SQL-injection attacks of the type described in CVE-2006-2313. -</para></listitem> - -<listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para> -<para>As a server-side defense against SQL-injection attacks of the type -described in CVE-2006-2314, the server now only accepts <literal>''</> and not -<literal>\'</> as a representation of ASCII single quote in SQL string -literals. By default, <literal>\'</> is rejected only when -<varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK, -GB18030, or UHC), which is the scenario in which SQL injection is possible. -A new configuration parameter <varname>backslash_quote</> is available to -adjust this behavior when needed. Note that full security against -CVE-2006-2314 might require client-side changes; the purpose of -<varname>backslash_quote</> is in part to make it obvious that insecure -clients are insecure. -</para></listitem> - -<listitem><para>Modify <application>libpq</>'s string-escaping routines to be -aware of encoding considerations and -<varname>standard_conforming_strings</></para> -<para>This fixes <application>libpq</>-using applications for the security -issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs -them against the planned changeover to SQL-standard string literal syntax. -Applications that use multiple <productname>PostgreSQL</> connections -concurrently should migrate to <function>PQescapeStringConn()</> and -<function>PQescapeByteaConn()</> to ensure that escaping is done correctly -for the settings in use in each database connection. Applications that -do string escaping <quote>by hand</> should be modified to rely on library -routines instead. -</para></listitem> - -<listitem><para>Fix weak key selection in pgcrypto (Marko Kreen)</para> -<para>Errors in fortuna PRNG reseeding logic could cause a predictable -session key to be selected by <function>pgp_sym_encrypt()</> in some cases. -This only affects non-OpenSSL-using builds. -</para></listitem> - -<listitem><para>Fix some incorrect encoding conversion functions</para> -<para><function>win1251_to_iso</>, <function>win866_to_iso</>, -<function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>, -<function>mic_to_euc_tw</> were all broken to varying -extents. -</para></listitem> - -<listitem><para>Clean up stray remaining uses of <literal>\'</> in strings -(Bruce, Jan)</para></listitem> - -<listitem><para>Make autovacuum visible in <structname>pg_stat_activity</> -(Alvaro)</para></listitem> - -<listitem><para>Disable <literal>full_page_writes</> (Tom)</para> -<para>In certain cases, having <literal>full_page_writes</> off would cause -crash recovery to fail. A proper fix will appear in 8.2; for now it's just -disabled. -</para></listitem> - -<listitem><para>Various planner fixes, particularly for bitmap index scans and -MIN/MAX optimization (Tom)</para></listitem> - -<listitem><para>Fix incorrect optimization in merge join (Tom)</para> -<para>Outer joins could sometimes emit multiple copies of unmatched rows. -</para></listitem> - -<listitem><para>Fix crash from using and modifying a plpgsql function in the -same transaction</para></listitem> - -<listitem><para>Fix WAL replay for case where a B-Tree index has been -truncated</para></listitem> - -<listitem><para>Fix <literal>SIMILAR TO</> for patterns involving -<literal>|</> (Tom)</para></listitem> - -<listitem><para>Fix <command>SELECT INTO</> and <command>CREATE TABLE AS</> to -create tables in the default tablespace, not the base directory (Kris -Jurka)</para></listitem> - -<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael -Fuhr)</para></listitem> - -<listitem><para>Improve qsort performance (Dann Corbit)</para> -<para>Currently this code is only used on Solaris. -</para></listitem> - -<listitem><para>Fix for OS/X Bonjour on x86 systems (Ashley Clark)</para></listitem> - -<listitem><para>Fix various minor memory leaks</para></listitem> - -<listitem><para>Fix problem with password prompting on some Win32 systems -(Robert Kinberg)</para></listitem> - -<listitem><para>Improve <application>pg_dump</>'s handling of default values -for domains</para></listitem> - -<listitem><para>Fix <application>pg_dumpall</> to handle identically-named -users and groups reasonably (only possible when dumping from a pre-8.1 server) -(Tom)</para> -<para>The user and group will be merged into a single role with -<literal>LOGIN</> permission. Formerly the merged role wouldn't have -<literal>LOGIN</> permission, making it unusable as a user. -</para></listitem> - -<listitem><para>Fix <application>pg_restore</> <literal>-n</> to work as -documented (Tom)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-3"> - <title>Release 8.1.3</title> - - <formalpara> - <title>Release date:</title> - <para>2006-02-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.2, - including one very serious security issue. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.3</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see <xref linkend="release-8-1-2">. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> - -<listitem><para>Fix bug that allowed any logged-in user to <command>SET -ROLE</> to any other database user id (CVE-2006-0553)</para> -<para>Due to inadequate validity checking, a user could exploit the special -case that <command>SET ROLE</> normally uses to restore the previous role -setting after an error. This allowed ordinary users to acquire superuser -status, for example. -The escalation-of-privilege risk exists only in 8.1.0-8.1.2. -However, in all releases back to 7.3 there is a related bug in <command>SET -SESSION AUTHORIZATION</> that allows unprivileged users to crash the server, -if it has been compiled with Asserts enabled (which is not the default). -Thanks to Akio Ishida for reporting this problem. -</para></listitem> - -<listitem><para>Fix bug with row visibility logic in self-inserted -rows (Tom)</para> -<para>Under rare circumstances a row inserted by the current command -could be seen as already valid, when it should not be. Repairs bug -created in 8.0.4, 7.4.9, and 7.3.11 releases. -</para></listitem> - -<listitem><para>Fix race condition that could lead to <quote>file already -exists</> errors during pg_clog and pg_subtrans file creation -(Tom)</para></listitem> - -<listitem><para>Fix cases that could lead to crashes if a cache-invalidation -message arrives at just the wrong time (Tom)</para></listitem> - -<listitem><para>Properly check <literal>DOMAIN</> constraints for -<literal>UNKNOWN</> parameters in prepared statements -(Neil)</para></listitem> - -<listitem><para>Ensure <command>ALTER COLUMN TYPE</> will process -<literal>FOREIGN KEY</>, <literal>UNIQUE</>, and <literal>PRIMARY KEY</> -constraints in the proper order (Nakano Yoshihisa)</para></listitem> - -<listitem><para>Fixes to allow restoring dumps that have cross-schema -references to custom operators or operator classes (Tom)</para></listitem> - -<listitem><para>Allow <application>pg_restore</> to continue properly after a -<command>COPY</> failure; formerly it tried to treat the remaining -<command>COPY</> data as SQL commands (Stephen Frost)</para></listitem> - -<listitem><para>Fix <application>pg_ctl</> <literal>unregister</> crash -when the data directory is not specified (Magnus)</para></listitem> - -<listitem><para>Fix <application>libpq</> <function>PQprint</> HTML tags -(Christoph Zwerschke)</para></listitem> - -<listitem><para>Fix <application>ecpg</> crash on AMD64 and PPC -(Neil)</para></listitem> - -<listitem><para>Allow <literal>SETOF</> and <literal>%TYPE</> to be used -together in function result type declarations</para></listitem> - -<listitem><para>Recover properly if error occurs during argument passing -in <application>PL/python</> (Neil)</para></listitem> - -<listitem><para>Fix memory leak in <function>plperl_return_next</> -(Neil)</para></listitem> - -<listitem><para>Fix <application>PL/perl</>'s handling of locales on -Win32 to match the backend (Andrew)</para></listitem> - -<listitem><para>Various optimizer fixes (Tom)</para></listitem> - -<listitem><para>Fix crash when <literal>log_min_messages</> is set to -<literal>DEBUG3</> or above in <filename>postgresql.conf</> on Win32 -(Bruce)</para></listitem> - -<listitem><para>Fix <application>pgxs</> <literal>-L</> library path -specification for Win32, Cygwin, OS X, AIX (Bruce)</para></listitem> - -<listitem><para>Check that SID is enabled while checking for Win32 admin -privileges (Magnus)</para></listitem> - -<listitem><para>Properly reject out-of-range date inputs (Kris -Jurka)</para></listitem> - -<listitem><para>Portability fix for testing presence of <function>finite</> -and <function>isinf</> during configure (Tom)</para></listitem> - -<listitem><para>Improve speed of <command>COPY IN</> via libpq, by -avoiding a kernel call per data line (Alon Goldshuv)</para></listitem> - -<listitem><para>Improve speed of <filename>/contrib/tsearch2</> index -creation (Tom)</para></listitem> - -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-2"> - <title>Release 8.1.2</title> - - <formalpara> - <title>Release date:</title> - <para>2006-01-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.1. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.2</title> - - <para> - A dump/restore is not required for those running 8.1.X. - However, you might need to <command>REINDEX</> indexes on textual - columns after updating, if you are affected by the locale or - <application>plperl</> issues described below. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> - -<listitem><para>Fix Windows code so that postmaster will continue rather -than exit if there is no more room in ShmemBackendArray (Magnus)</para> -<para>The previous behavior could lead to a denial-of-service situation if too -many connection requests arrive close together. This applies -<emphasis>only</> to the Windows port.</para></listitem> - -<listitem><para>Fix bug introduced in 8.0 that could allow ReadBuffer -to return an already-used page as new, potentially causing loss of -recently-committed data (Tom)</para></listitem> - -<listitem><para>Fix for protocol-level Describe messages issued -outside a transaction or in a failed transaction (Tom)</para></listitem> - -<listitem><para>Fix character string comparison for locales that consider -different character combinations as equal, such as Hungarian (Tom)</para> -<para>This might require <command>REINDEX</> to fix existing indexes on -textual columns.</para></listitem> - -<listitem><para>Set locale environment variables during postmaster startup -to ensure that <application>plperl</> won't change the locale later</para> -<para>This fixes a problem that occurred if the <application>postmaster</> was -started with environment variables specifying a different locale than what -<application>initdb</> had been told. Under these conditions, any use of -<application>plperl</> was likely to lead to corrupt indexes. You might need -<command>REINDEX</> to fix existing indexes on -textual columns if this has happened to you.</para></listitem> - -<listitem><para>Allow more flexible relocation of installation -directories (Tom)</para> -<para>Previous releases supported relocation only if all installation -directory paths were the same except for the last component.</para></listitem> - -<listitem><para>Prevent crashes caused by the use of -<literal>ISO-8859-5</> and <literal>ISO-8859-9</> encodings -(Tatsuo)</para></listitem> - -<listitem><para>Fix longstanding bug in strpos() and regular expression -handling in certain rarely used Asian multi-byte character sets (Tatsuo) -</para></listitem> - -<listitem><para>Fix bug where COPY CSV mode considered any -<literal>\.</> to terminate the copy data</para> <para>The new code -requires <literal>\.</> to appear alone on a line, as per -documentation.</para></listitem> - -<listitem><para>Make COPY CSV mode quote a literal data value of -<literal>\.</> to ensure it cannot be interpreted as the -end-of-data marker (Bruce)</para></listitem> - -<listitem><para>Various fixes for functions returning <literal>RECORD</>s -(Tom) </para></listitem> - -<listitem><para>Fix processing of <filename>postgresql.conf</> so a -final line with no newline is processed properly (Tom) -</para></listitem> - -<listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt, -which caused it not to use all available salt space for MD5 and -XDES algorithms (Marko Kreen, Solar Designer)</para> -<para>Salts for Blowfish and standard DES are unaffected.</para></listitem> - -<listitem><para>Fix autovacuum crash when processing expression indexes -</para></listitem> - -<listitem><para>Fix <filename>/contrib/dblink</> to throw an error, -rather than crashing, when the number of columns specified is different from -what's actually returned by the query (Joe)</para></listitem> - -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1-1"> - <title>Release 8.1.1</title> - - <formalpara> - <title>Release date:</title> - <para>2005-12-12</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.1.0. - For information about new features in the 8.1 major release, see - <xref linkend="release-8-1">. - </para> - - <sect2> - <title>Migration to Version 8.1.1</title> - - <para> - A dump/restore is not required for those running 8.1.X. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Fix incorrect optimizations of outer-join conditions -(Tom)</para></listitem> - -<listitem><para>Fix problems with wrong reported column names in cases -involving sub-selects flattened by the optimizer (Tom)</para></listitem> - -<listitem><para>Fix update failures in scenarios involving CHECK constraints, -toasted columns, <emphasis>and</> indexes (Tom)</para></listitem> - -<listitem><para>Fix bgwriter problems after recovering from errors -(Tom)</para> -<para> -The background writer was found to leak buffer pins after write errors. -While not fatal in itself, this might lead to mysterious blockages of -later VACUUM commands. -</para> -</listitem> - -<listitem><para>Prevent failure if client sends Bind protocol message -when current transaction is already aborted</para></listitem> - -<listitem><para><filename>/contrib/tsearch2</> and <filename>/contrib/ltree</> -fixes (Teodor)</para></listitem> - -<listitem><para>Fix problems with translated error messages in -languages that require word reordering, such as Turkish; also problems with -unexpected truncation of output strings and wrong display of the smallest -possible bigint value (Andrew, Tom)</para> -<para> -These problems only appeared on platforms that were using our -<filename>port/snprintf.c</> code, which includes BSD variants if -<literal>--enable-nls</> was given, and perhaps others. In addition, -a different form of the translated-error-message problem could appear -on Windows depending on which version of <filename>libintl</> was used. -</para></listitem> - -<listitem><para>Re-allow <literal>AM</>/<literal>PM</>, <literal>HH</>, -<literal>HH12</>, and <literal>D</> format specifiers for -<function>to_char(time)</> and <function>to_char(interval)</>. -(<function>to_char(interval)</> should probably use -<literal>HH24</>.) (Bruce)</para></listitem> - -<listitem><para>AIX, HPUX, and MSVC compile fixes (Tom, Hiroshi -Saito)</para></listitem> - -<listitem><para>Optimizer improvements (Tom)</para></listitem> - -<listitem><para>Retry file reads and writes after Windows -NO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem> - -<listitem><para>Prevent <application>autovacuum</> from crashing during -ANALYZE of expression index (Alvaro)</para></listitem> - -<listitem><para>Fix problems with ON COMMIT DELETE ROWS temp -tables</para></listitem> - -<listitem><para>Fix problems when a trigger alters the output of a SELECT -DISTINCT query</para></listitem> - -<listitem><para>Add 8.1.0 release note item on how to migrate invalid -<literal>UTF-8</> byte sequences (Paul Lindner)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-1"> - <title>Release 8.1</title> - - <formalpara> - <title>Release date:</title> - <para>2005-11-08</para> - </formalpara> - - <sect2> - <title>Overview</title> - - <para> - Major changes in this release: - </para> - - <variablelist> - - <varlistentry> - <term> - Improve concurrent access to the shared buffer cache (Tom) - </term> - - <listitem> - <para> - Access to the shared buffer cache was identified as a - significant scalability problem, particularly on multi-CPU - systems. In this release, the way that locking is done in the - buffer manager has been overhauled to reduce lock contention - and improve scalability. The buffer manager has also been - changed to use a <quote>clock sweep</quote> replacement - policy. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Allow index scans to use an intermediate in-memory bitmap (Tom) - </term> - - <listitem> - <para> - In previous releases, only a single index could be used to do - lookups on a table. With this feature, if a query has - <command>WHERE tab.col1 = 4 and tab.col2 = 9</>, and there is - no multicolumn index on <literal>col1</> and <literal>col2</>, - but there is an index on <literal>col1</> and another on - <literal>col2</>, it is possible to search both indexes and - combine the results in memory, then do heap fetches for only - the rows matching both the <literal>col1</> and - <literal>col2</> restrictions. This is very useful in - environments that have a lot of unstructured queries where it - is impossible to create indexes that match all possible access - conditions. Bitmap scans are useful even with a single index, - as they reduce the amount of random access needed; a bitmap - index scan is efficient for retrieving fairly large fractions - of the complete table, whereas plain index scans are not. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Add two-phase commit (Heikki Linnakangas, Alvaro, Tom) - </term> - - <listitem> - <para> - Two-phase commit allows transactions to be "prepared" on several - computers, and once all computers have successfully prepared - their transactions (none failed), all transactions can be - committed. Even if a machine crashes after a prepare, the - prepared transaction can be committed after the machine is - restarted. New syntax includes <command>PREPARE TRANSACTION</> and - <command>COMMIT/ROLLBACK PREPARED</>. A new system view - <literal>pg_prepared_xacts</> has also been added. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Create a new role system that replaces users and groups - (Stephen Frost) - </term> - - <listitem> - <para> - Roles are a combination of users and groups. Like users, they - can have login capability, and like groups, a role can have - other roles as members. Roles basically remove the distinction - between users and groups. For example, a role can: - </para> - - <itemizedlist> - - <listitem> - <para> - Have login capability (optionally) - </para> - </listitem> - - <listitem> - <para> - Own objects - </para> - </listitem> - - <listitem> - <para> - Hold access permissions for database objects - </para> - </listitem> - - <listitem> - <para> - Inherit permissions from other roles it is a member of - </para> - </listitem> - - </itemizedlist> - <para> - Once a user logs into a role, she obtains capabilities of - the login role plus any inherited roles, and can use - <command>SET ROLE</> to switch to other roles she is a member of. - This feature is a generalization of the SQL standard's concept of - roles. - This change also replaces <structname>pg_shadow</> and - <structname>pg_group</> by new role-capable catalogs - <structname>pg_authid</> and <structname>pg_auth_members</>. The old - tables are redefined as read-only views on the new role tables. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Automatically use indexes for <function>MIN()</> and - <function>MAX()</> (Tom) - </term> - - <listitem> - <para> - In previous releases, the only way to use an index for - <function>MIN()</> or <function>MAX()</> was to rewrite the - query as <command>SELECT col FROM tab ORDER BY col LIMIT 1</>. - Index usage now happens automatically. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Move <filename>/contrib/pg_autovacuum</> into the main server - (Alvaro) - </term> - - <listitem> - <para> - Integrating autovacuum into the server allows it to be - automatically started and stopped in sync with the database - server, and allows autovacuum to be configured from - <filename>postgresql.conf</>. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Add shared row level locks using <command>SELECT ... FOR SHARE</> - (Alvaro) - </term> - - <listitem> - <para> - While <productname>PostgreSQL</productname>'s MVCC locking - allows <command>SELECT</> to never be blocked by writers and - therefore does not need shared row locks for typical operations, - shared locks are useful for applications that require shared row - locking. In particular this reduces the locking requirements - imposed by referential integrity checks. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Add dependencies on shared objects, specifically roles - (Alvaro) - </term> - - <listitem> - <para> - This extension of the dependency mechanism prevents roles from - being dropped while there are still database objects they own. - Formerly it was possible to accidentally <quote>orphan</> objects by - deleting their owner. While this could be recovered from, it - was messy and unpleasant. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Improve performance for partitioned tables (Simon) - </term> - - <listitem> - <para> - The new <varname>constraint_exclusion</varname> configuration - parameter avoids lookups on child tables where constraints indicate - that no matching rows exist in the child table. - </para> - <para> - This allows for a basic type of table partitioning. If child tables - store separate key ranges and this is enforced using appropriate - <command>CHECK</> constraints, the optimizer will skip child - table accesses when the constraint guarantees no matching rows - exist in the child table. - </para> - </listitem> - </varlistentry> - - </variablelist> - </sect2> - - <sect2> - <title>Migration to Version 8.1</title> - - <para> - A dump/restore using <application>pg_dump</application> is required - for those wishing to migrate data from any previous release. - </para> - - <para> - The 8.0 release announced that the <function>to_char()</> function - for intervals would be removed in 8.1. However, since no better API - has been suggested, <function>to_char(interval)</> has been enhanced in - 8.1 and will remain in the server. - </para> - - <para> - Observe the following incompatibilities: - </para> - - <itemizedlist> - - <listitem> - <para> - <varname>add_missing_from</> is now false by default (Neil) - </para> - <para> - By default, we now generate an error if a table is used in a query - without a <literal>FROM</> reference. The old behavior is still - available, but the parameter must be set to 'true' to obtain it. - </para> - - <para> - It might be necessary to set <varname>add_missing_from</> to true - in order to load an existing dump file, if the dump contains any - views or rules created using the implicit-<literal>FROM</> syntax. - This should be a one-time annoyance, because - <productname>PostgreSQL</productname> 8.1 will convert - such views and rules to standard explicit-<literal>FROM</> syntax. - Subsequent dumps will therefore not have the problem. - </para> - </listitem> - - <listitem> - <para> - Cause input of a zero-length string (<literal>''</literal>) for - <type>float4</type>/<type>float8</type>/<type>oid</type> - to throw an error, rather than treating it as a zero (Neil) - </para> - <para> - This change is consistent with the current handling of - zero-length strings for integers. The schedule for this change - was announced in 8.0. - </para> - </listitem> - - <listitem> - <para> - <varname>default_with_oids</> is now false by default (Neil) - </para> - <para> - With this option set to false, user-created tables no longer - have an OID column unless <command>WITH OIDS</> is specified in - <command>CREATE TABLE</>. Though OIDs have existed in all - releases of <productname>PostgreSQL</>, their use is limited - because they are only four bytes long and the counter is shared - across all installed databases. The preferred way of uniquely - identifying rows is via sequences and the <type>SERIAL</> type, - which have been supported since <productname>PostgreSQL</> 6.4. - </para> - </listitem> - - <listitem> - <para> - Add <literal>E''</> syntax so eventually ordinary strings can - treat backslashes literally (Bruce) - </para> - <para> - Currently <productname>PostgreSQL</productname> processes a - backslash in a string literal as introducing a special escape sequence, - e.g. <literal>\n</> or <literal>\010</>. - While this allows easy entry of special values, it is - nonstandard and makes porting of applications from other - databases more difficult. For this reason, the - <productname>PostgreSQL</productname> project is planning to - remove the special meaning of backslashes in strings. For - backward compatibility and for users who want special backslash - processing, a new string syntax has been created. This new string - syntax is formed by writing an <literal>E</> immediately preceding the - single quote that starts the string, e.g. <literal>E'hi\n'</>. While - this release does not change the handling of backslashes in strings, it - does add new configuration parameters to help users migrate applications - for future releases: - </para> - <itemizedlist> - - <listitem> - <para> - <varname>standard_conforming_strings</> — does this release - treat backslashes literally in ordinary strings? - </para> - </listitem> - - <listitem> - <para> - <varname>escape_string_warning</> — warn about backslashes in - ordinary (non-E) strings - </para> - </listitem> - - </itemizedlist> - - <para> - The <varname>standard_conforming_strings</> value is read-only. - Applications can retrieve the value to know how backslashes are - processed. (Presence of the parameter can also be taken as an - indication that <literal>E''</> string syntax is supported.) - In a future release, <varname>standard_conforming_strings</> - will be true, meaning backslashes will be treated literally in - non-E strings. To prepare for this change, use <literal>E''</> - strings in places that need special backslash processing, and - turn on <varname>escape_string_warning</> to find additional - strings that need to be converted to use <literal>E''</>. - Also, use two single-quotes (<literal>''</>) to embed a literal - single-quote in a string, rather than the - <productname>PostgreSQL</productname>-supported syntax of - backslash single-quote (<literal>\'</>). The former is - standards-conforming and does not require the use of the - <literal>E''</> string syntax. You can also use the - <literal>$$</> string syntax, which does not treat backslashes - specially. - </para> - </listitem> - - <listitem> - <para> - Make <command>REINDEX DATABASE</> reindex all indexes in the - database (Tom) - </para> - <para> - Formerly, <command>REINDEX DATABASE</> reindexed only - system tables. This new behavior seems more intuitive. A new - command <command>REINDEX SYSTEM</> provides the old functionality - of reindexing just the system tables. - </para> - </listitem> - - <listitem> - <para> - Read-only large object descriptors now obey MVCC snapshot semantics - </para> - <para> - When a large object is opened with <literal>INV_READ</> (and not - <literal>INV_WRITE</>), the data read from the descriptor will now - reflect a <quote>snapshot</> of the large object's state at the - time of the transaction snapshot in use by the query that called - <function>lo_open()</>. To obtain the old behavior of always - returning the latest committed data, include <literal>INV_WRITE</> - in the mode flags for <function>lo_open()</>. - </para> - </listitem> - - <listitem> - <para> - Add proper dependencies for arguments of sequence functions (Tom) - </para> - <para> - In previous releases, sequence names passed to <function>nextval()</>, - <function>currval()</>, and <function>setval()</> were stored as - simple text strings, meaning that renaming or dropping a - sequence used in a <literal>DEFAULT</> clause made the clause - invalid. This release stores all newly-created sequence function - arguments as internal OIDs, allowing them to track sequence - renaming, and adding dependency information that prevents - improper sequence removal. It also makes such <literal>DEFAULT</> - clauses immune to schema renaming and search path changes. - </para> - <para> - Some applications might rely on the old behavior of - run-time lookup for sequence names. This can still be done by - explicitly casting the argument to <type>text</>, for example - <literal>nextval('myseq'::text)</>. - </para> - <para> - Pre-8.1 database dumps loaded into 8.1 will use the old text-based - representation and therefore will not have the features of - OID-stored arguments. However, it is possible to update a - database containing text-based <literal>DEFAULT</> clauses. - First, save this query into a file, such as <filename>fixseq.sql</>: -<programlisting> -SELECT 'ALTER TABLE ' || - pg_catalog.quote_ident(n.nspname) || '.' || - pg_catalog.quote_ident(c.relname) || - ' ALTER COLUMN ' || pg_catalog.quote_ident(a.attname) || - ' SET DEFAULT ' || - regexp_replace(d.adsrc, - $$val\(\(('[^']*')::text\)::regclass$$, - $$val(\1$$, - 'g') || - ';' -FROM pg_namespace n, pg_class c, pg_attribute a, pg_attrdef d -WHERE n.oid = c.relnamespace AND - c.oid = a.attrelid AND - a.attrelid = d.adrelid AND - a.attnum = d.adnum AND - d.adsrc ~ $$val\(\('[^']*'::text\)::regclass$$; -</programlisting> - Next, run the query against a database to find what - adjustments are required, like this for database <literal>db1</>: -<programlisting> -psql -t -f fixseq.sql db1 -</programlisting> - This will show the <command>ALTER TABLE</> commands needed to - convert the database to the newer OID-based representation. - If the commands look reasonable, run this to update the database: -<programlisting> -psql -t -f fixseq.sql db1 | psql -e db1 -</programlisting> - This process must be repeated in each database to be updated. - </para> - </listitem> - - <listitem> - <para> - In <application>psql</application>, treat unquoted - <literal>\{digit}+</> sequences as octal (Bruce) - </para> - <para> - In previous releases, <literal>\{digit}+</> sequences were - treated as decimal, and only <literal>\0{digit}+</> were treated - as octal. This change was made for consistency. - </para> - </listitem> - - <listitem> - <para> - Remove grammar productions for prefix and postfix <literal>%</> - and <literal>^</> operators - (Tom) - </para> - <para> - These have never been documented and complicated the use of the - modulus operator (<literal>%</>) with negative numbers. - </para> - </listitem> - - <listitem> - <para> - Make <literal>&<</> and <literal>&></> for polygons - consistent with the box "over" operators (Tom) - </para> - </listitem> - - <listitem> - <para> - <command>CREATE LANGUAGE</> can ignore the provided arguments - in favor of information from <structname>pg_pltemplate</> - (Tom) - </para> - <para> - A new system catalog <structname>pg_pltemplate</> has been defined - to carry information about the preferred definitions of procedural - languages (such as whether they have validator functions). When - an entry exists in this catalog for the language being created, - <command>CREATE LANGUAGE</> will ignore all its parameters except the - language name and instead use the catalog information. This measure - was taken because of increasing problems with obsolete language - definitions being loaded by old dump files. As of 8.1, - <application>pg_dump</> will dump procedural language definitions as - just <command>CREATE LANGUAGE <replaceable>name</></command>, relying - on a template entry to exist at load time. We expect this will be a - more future-proof representation. - </para> - </listitem> - - <listitem> - <para> - Make <function>pg_cancel_backend(int)</function> return a - <type>boolean</type> rather than an <type>integer</type> (Neil) - </para> - </listitem> - - <listitem> - <para> - Some users are having problems loading UTF-8 data into 8.1.X. - This is because previous versions allowed invalid UTF-8 byte - sequences to be entered into the database, and this release - properly accepts only valid UTF-8 sequences. One way to correct a - dumpfile is to run the command <command>iconv -c -f UTF-8 -t - UTF-8 -o cleanfile.sql dumpfile.sql</>. The <literal>-c</> option - removes invalid character sequences. A diff of the two files will - show the sequences that are invalid. <command>iconv</> reads the - entire input file into memory so it might be necessary to use - <application>split</> to break up the dump into multiple smaller - files for processing. - </para> - </listitem> - - </itemizedlist> - </sect2> - - <sect2> - <title>Additional Changes</title> - - <para> - Below you will find a detailed account of the additional changes - between <productname>PostgreSQL</productname> 8.1 and the - previous major release. - </para> - - <sect3> - <title>Performance Improvements</title> - <itemizedlist> - - <listitem> - <para> - Improve GiST and R-tree index performance (Neil) - </para> - </listitem> - - <listitem> - <para> - Improve the optimizer, including auto-resizing of hash joins - (Tom) - </para> - </listitem> - - <listitem> - <para> - Overhaul internal API in several areas - </para> - </listitem> - - <listitem> - <para> - Change WAL record CRCs from 64-bit to 32-bit (Tom) - </para> - <para> - We determined that the extra cost of computing 64-bit CRCs was - significant, and the gain in reliability too marginal to justify it. - </para> - </listitem> - - <listitem> - <para> - Prevent writing large empty gaps in WAL pages (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve spinlock behavior on SMP machines, particularly Opterons (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow nonconsecutive index columns to be used in a multicolumn - index (Tom) - </para> - <para> - For example, this allows an index on columns a,b,c to be used in - a query with <command>WHERE a = 4 and c = 10</>. - </para> - </listitem> - - <listitem> - <para> - Skip WAL logging for <command>CREATE TABLE AS</> / - <command>SELECT INTO</> (Simon) - </para> - <para> - Since a crash during <command>CREATE TABLE AS</> would cause the - table to be dropped during recovery, there is no reason to WAL - log as the table is loaded. (Logging still happens if WAL - archiving is enabled, however.) - </para> - </listitem> - - <listitem> - <para> - Allow concurrent GiST index access (Teodor, Oleg) - </para> - </listitem> - - <listitem> - <para> - Add configuration parameter <varname>full_page_writes</> to - control writing full pages to WAL (Bruce) - </para> - <para> - To prevent partial disk writes from corrupting the database, - <productname>PostgreSQL</productname> writes a complete copy of - each database disk page to WAL the first time it is modified - after a checkpoint. This option turns off that functionality for more - speed. This is safe to use with battery-backed disk caches where - partial page writes cannot happen. - </para> - </listitem> - - <listitem> - <para> - Use <literal>O_DIRECT</> if available when using - <literal>O_SYNC</> for <varname>wal_sync_method</varname> - (Itagaki Takahiro) - </para> - <para> - <literal>O_DIRECT</> causes disk writes to bypass the kernel - cache, and for WAL writes, this improves performance. - </para> - </listitem> - - <listitem> - <para> - Improve <command>COPY FROM</> performance (Alon Goldshuv) - </para> - <para> - This was accomplished by reading <command>COPY</> input in - larger chunks, rather than character by character. - </para> - </listitem> - - <listitem> - <para> - Improve the performance of <function>COUNT()</function>, - <function>SUM</function>, <function>AVG()</function>, - <function>STDDEV()</function>, and - <function>VARIANCE()</function> (Neil, Tom) - </para> - </listitem> - </itemizedlist> - </sect3> - - <sect3> - <title>Server Changes</title> - <itemizedlist> - - <listitem> - <para> - Prevent problems due to transaction ID (XID) wraparound (Tom) - </para> - <para> - The server will now warn when the transaction counter approaches - the wraparound point. If the counter becomes too close to wraparound, - the server will stop accepting queries. This ensures that data is - not lost before needed vacuuming is performed. - </para> - </listitem> - - <listitem> - <para> - Fix problems with object IDs (OIDs) conflicting with existing system - objects after the OID counter has wrapped around (Tom) - </para> - </listitem> - - <listitem> - <para> - Add warning about the need to increase - <varname>max_fsm_relations</> and <varname>max_fsm_pages</> - during <command>VACUUM</> (Ron Mayer) - </para> - </listitem> - - <listitem> - <para> - Add <varname>temp_buffers</> configuration parameter to allow - users to determine the size of the local buffer area for - temporary table access (Tom) - </para> - </listitem> - - <listitem> - <para> - Add session start time and client IP address to - <literal>pg_stat_activity</> (Magnus) - </para> - </listitem> - - <listitem> - <para> - Adjust <literal>pg_stat</> views for bitmap scans (Tom) - </para> - <para> - The meanings of some of the fields have changed slightly. - </para> - </listitem> - - <listitem> - <para> - Enhance <literal>pg_locks</> view (Tom) - </para> - </listitem> - - <listitem> - <para> - Log queries for client-side <command>PREPARE</> and - <command>EXECUTE</> (Simon) - </para> - </listitem> - - <listitem> - <para> - Allow Kerberos name and user name case sensitivity to be - specified in <filename>postgresql.conf</> (Magnus) - </para> - </listitem> - - <listitem> - <para> - Add configuration parameter <varname>krb_server_hostname</> so - that the server host name can be specified as part of service - principal (Todd Kover) - </para> - <para> - If not set, any service principal matching an entry in the - keytab can be used. This is new Kerberos matching behavior in - this release. - </para> - </listitem> - - <listitem> - <para> - Add <varname>log_line_prefix</> options for millisecond - timestamps (<literal>%m</>) and remote host (<literal>%h</>) (Ed - L.) - </para> - </listitem> - - <listitem> - <para> - Add WAL logging for GiST indexes (Teodor, Oleg) - </para> - <para> - GiST indexes are now safe for crash and point-in-time recovery. - </para> - </listitem> - - <listitem> - <para> - Remove old <filename>*.backup</> files when we do - <function>pg_stop_backup()</> (Bruce) - </para> - <para> - This prevents a large number of <filename>*.backup</> files from - existing in <filename>pg_xlog/</>. - </para> - </listitem> - - <listitem> - <para> - Add configuration parameters to control TCP/IP keep-alive - times for idle, interval, and count (Oliver Jowett) - </para> - - <para> - These values can be changed to allow more rapid detection of - lost client connections. - </para> - </listitem> - - <listitem> - <para> - Add per-user and per-database connection limits (Petr Jelinek) - </para> - <para> - Using <command>ALTER USER</> and <command>ALTER DATABASE</>, - limits can now be enforced on the maximum number of sessions that - can concurrently connect as a specific user or to a specific database. - Setting the limit to zero disables user or database connections. - </para> - </listitem> - - <listitem> - <para> - Allow more than two gigabytes of shared memory and per-backend - work memory on 64-bit machines (Koichi Suzuki) - </para> - </listitem> - - <listitem> - <para> - New system catalog <structname>pg_pltemplate</> allows overriding - obsolete procedural-language definitions in dump files (Tom) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Query Changes</title> - <itemizedlist> - - <listitem> - <para> - Add temporary views (Koju Iijima, Neil) - </para> - </listitem> - - <listitem> - <para> - Fix <command>HAVING</> without any aggregate functions or - <command>GROUP BY</> so that the query returns a single group (Tom) - </para> - <para> - Previously, such a case would treat the <command>HAVING</> - clause the same as a <command>WHERE</> clause. This was not per spec. - </para> - </listitem> - - <listitem> - <para> - Add <command>USING</> clause to allow additional tables to be - specified to <command>DELETE</> (Euler Taveira de Oliveira, Neil) - </para> - <para> - In prior releases, there was no clear method for specifying - additional tables to be used for joins in a <command>DELETE</> - statement. <command>UPDATE</> already has a <literal>FROM</> - clause for this purpose. - </para> - </listitem> - - <listitem> - <para> - Add support for <literal>\x</> hex escapes in backend and ecpg - strings (Bruce) - </para> - <para> - This is just like the standard C <literal>\x</> escape syntax. - Octal escapes were already supported. - </para> - </listitem> - - <listitem> - <para> - Add <command>BETWEEN SYMMETRIC</> query syntax (Pavel Stehule) - </para> - <para> - This feature allows <command>BETWEEN</> comparisons without - requiring the first value to be less than the second. For - example, <command>2 BETWEEN [ASYMMETRIC] 3 AND 1</> returns - false, while <command>2 BETWEEN SYMMETRIC 3 AND 1</> returns - true. <command>BETWEEN ASYMMETRIC</> was already supported. - </para> - </listitem> - - <listitem> - <para> - Add <command>NOWAIT</> option to <command>SELECT ... FOR - UPDATE/SHARE</> (Hans-Juergen Schoenig) - </para> - <para> - While the <varname>statement_timeout</> configuration - parameter allows a query taking more than a certain amount of - time to be canceled, the <command>NOWAIT</> option allows a - query to be canceled as soon as a <command>SELECT ... FOR - UPDATE/SHARE</> command cannot immediately acquire a row lock. - </para> - </listitem> - </itemizedlist> - </sect3> - - - <sect3> - <title>Object Manipulation Changes</title> - <itemizedlist> - - <listitem> - <para> - Track dependencies of shared objects (Alvaro) - </para> - <para> - <productname>PostgreSQL</productname> allows global tables - (users, databases, tablespaces) to reference information in - multiple databases. This addition adds dependency information - for global tables, so, for example, user ownership can be - tracked across databases, so a user who owns something in any - database can no longer be removed. Dependency tracking already - existed for database-local objects. - </para> - </listitem> - - <listitem> - <para> - Allow limited <command>ALTER OWNER</> commands to be performed - by the object owner (Stephen Frost) - </para> - <para> - Prior releases allowed only superusers to change object owners. - Now, ownership can be transferred if the user executing the command - owns the object and would be able to create it as the new owner - (that is, the user is a member of the new owning role and that role - has the CREATE permission that would be needed to create the object - afresh). - </para> - </listitem> - - <listitem> - <para> - Add <command>ALTER</> object <command>SET SCHEMA</> capability - for some object types (tables, functions, types) (Bernd Helmle) - </para> - <para> - This allows objects to be moved to different schemas. - </para> - </listitem> - - <listitem> - <para> - Add <command>ALTER TABLE ENABLE/DISABLE TRIGGER</command> to - disable triggers (Satoshi Nagayasu) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Utility Command Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow <command>TRUNCATE</> to truncate multiple tables in a - single command (Alvaro) - </para> - <para> - Because of referential integrity checks, it is not allowed to - truncate a table that is part of a referential integrity - constraint. Using this new functionality, <command>TRUNCATE</> - can be used to truncate such tables, if both tables involved in - a referential integrity constraint are truncated in a single - <command>TRUNCATE</> command. - </para> - </listitem> - - <listitem> - <para> - Properly process carriage returns and line feeds in - <command>COPY CSV</> mode (Andrew) - </para> - <para> - In release 8.0, carriage returns and line feeds in <command>CSV - COPY TO</> were processed in an inconsistent manner. (This was - documented on the TODO list.) - </para> - </listitem> - - <listitem> - <para> - Add <command>COPY WITH CSV HEADER</> to allow a header line as - the first line in <command>COPY</> (Andrew) - </para> - <para> - This allows handling of the common <command>CSV</> usage of - placing the column names on the first line of the data file. For - <command>COPY TO</>, the first line contains the column names, - and for <command>COPY FROM</>, the first line is ignored. - </para> - </listitem> - - <listitem> - <para> - On Windows, display better sub-second precision in - <command>EXPLAIN ANALYZE</> (Magnus) - </para> - </listitem> - - <listitem> - <para> - Add trigger duration display to <command>EXPLAIN ANALYZE</> - (Tom) - </para> - <para> - Prior releases included trigger execution time as part of the - total execution time, but did not show it separately. It is now - possible to see how much time is spent in each trigger. - </para> - </listitem> - - <listitem> - <para> - Add support for <literal>\x</> hex escapes in <command>COPY</> - (Sergey Ten) - </para> - <para> - Previous releases only supported octal escapes. - </para> - </listitem> - - <listitem> - <para> - Make <command>SHOW ALL</> include variable descriptions - (Matthias Schmidt) - </para> - <para> - <command>SHOW</> varname still only displays the variable's - value and does not include the description. - </para> - </listitem> - - <listitem> - <para> - Make <application>initdb</application> create a new standard - database called <literal>postgres</>, and convert utilities to - use <literal>postgres</> rather than <literal>template1</> for - standard lookups (Dave) - </para> - <para> - In prior releases, <literal>template1</> was used both as a - default connection for utilities like - <application>createuser</application>, and as a template for - new databases. This caused <command>CREATE DATABASE</> to - sometimes fail, because a new database cannot be created if - anyone else is in the template database. With this change, the - default connection database is now <literal>postgres</>, - meaning it is much less likely someone will be using - <literal>template1</> during <command>CREATE DATABASE</>. - </para> - </listitem> - - <listitem> - <para> - Create new <application>reindexdb</application> command-line - utility by moving <filename>/contrib/reindexdb</> into the - server (Euler Taveira de Oliveira) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Data Type and Function Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <function>MAX()</> and <function>MIN()</> aggregates for - array types (Koju Iijima) - </para> - </listitem> - - <listitem> - <para> - Fix <function>to_date()</> and <function>to_timestamp()</> to - behave reasonably when <literal>CC</> and <literal>YY</> fields - are both used (Karel Zak) - </para> - <para> - If the format specification contains <literal>CC</> and a year - specification is <literal>YYY</> or longer, ignore the - <literal>CC</>. If the year specification is <literal>YY</> or - shorter, interpret <literal>CC</> as the previous century. - </para> - </listitem> - - <listitem> - <para> - Add <function>md5(bytea)</> (Abhijit Menon-Sen) - </para> - <para> - <function>md5(text)</> already existed. - </para> - </listitem> - - <listitem> - <para> - Add support for <command>numeric ^ numeric</> based on - <function>power(numeric, numeric)</> - </para> - <para> - The function already existed, but there was no operator assigned - to it. - </para> - </listitem> - - <listitem> - <para> - Fix <type>NUMERIC</> modulus by properly truncating the quotient - during computation (Bruce) - </para> - <para> - In previous releases, modulus for large values sometimes - returned negative results due to rounding of the quotient. - </para> - </listitem> - - <listitem> - <para> - Add a function <function>lastval()</> (Dennis Björklund) - </para> - <para> - <function>lastval()</> is a simplified version of - <function>currval()</>. It automatically determines the proper - sequence name based on the most recent <function>nextval()</> or - <function>setval()</> call performed by the current session. - </para> - </listitem> - - <listitem> - <para> - Add <function>to_timestamp(DOUBLE PRECISION) (Michael Glaesemann)</> - </para> - <para> - Converts Unix seconds since 1970 to a <type>TIMESTAMP WITH - TIMEZONE</>. - </para> - </listitem> - - <listitem> - <para> - Add <function>pg_postmaster_start_time()</> function (Euler - Taveira de Oliveira, Matthias Schmidt) - </para> - </listitem> - - <listitem> - <para> - Allow the full use of time zone names in <command>AT TIME - ZONE</>, not just the short list previously available (Magnus) - </para> - <para> - Previously, only a predefined list of time zone names were - supported by <command>AT TIME ZONE</>. Now any supported time - zone name can be used, e.g.: -<programlisting> -SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; -</programlisting> - In the above query, the time zone used is adjusted based on the - daylight saving time rules that were in effect on the supplied - date. - </para> - </listitem> - - <listitem> - <para> - Add <function>GREATEST()</> and <function>LEAST()</> variadic - functions (Pavel Stehule) - </para> - <para> - These functions take a variable number of arguments and return - the greatest or least value among the arguments. - </para> - </listitem> - - <listitem> - <para> - Add <function>pg_column_size()</> (Mark Kirkwood) - </para> - <para> - This returns storage size of a column, which might be compressed. - </para> - </listitem> - - <listitem> - <para> - Add <function>regexp_replace()</> (Atsushi Ogawa) - </para> - <para> - This allows regular expression replacement, like sed. An optional - flag argument allows selection of global (replace all) and - case-insensitive modes. - </para> - </listitem> - - <listitem> - <para> - Fix interval division and multiplication (Bruce) - </para> - <para> - Previous versions sometimes returned unjustified results, like - <command>'4 months'::interval / 5</> returning <command>'1 mon - -6 days'</>. - </para> - </listitem> - - <listitem> - <para> - Fix roundoff behavior in timestamp, time, and interval output (Tom) - </para> - <para> - This fixes some cases in which the seconds field would be shown as - <literal>60</> instead of incrementing the higher-order fields. - </para> - </listitem> - - <listitem> - <para> - Add a separate day field to type <type>interval</> so a one day - interval can be distinguished from a 24 hour interval (Michael - Glaesemann) - </para> - <para> - Days that contain a daylight saving time adjustment are not 24 - hours long, but typically 23 or 25 hours. This change creates a - conceptual distinction between intervals of <quote>so many days</> - and intervals of <quote>so many hours</>. Adding - <literal>1 day</> to a timestamp now gives the same local time on - the next day even if a daylight saving time adjustment occurs - between, whereas adding <literal>24 hours</> will give a different - local time when this happens. For example, under US DST rules: -<programlisting> -'2005-04-03 00:00:00-05' + '1 day' = '2005-04-04 00:00:00-04' -'2005-04-03 00:00:00-05' + '24 hours' = '2005-04-04 01:00:00-04' -</programlisting> - </para> - </listitem> - - <listitem> - <para> - Add <function>justify_days()</> and <function>justify_hours()</> - (Michael Glaesemann) - </para> - <para> - These functions, respectively, adjust days to an appropriate - number of full months and days, and adjust hours to an - appropriate number of full days and hours. - </para> - </listitem> - - <listitem> - <para> - Move <filename>/contrib/dbsize</> into the backend, and rename - some of the functions (Dave Page, Andreas Pflug) - </para> - <para> - <itemizedlist> - - <listitem> - <para> - <function>pg_tablespace_size()</> - </para> - </listitem> - - <listitem> - <para> - <function>pg_database_size()</> - </para> - </listitem> - - <listitem> - <para> - <function>pg_relation_size()</> - </para> - </listitem> - - <listitem> - <para> - <function>pg_total_relation_size()</> - </para> - </listitem> - - <listitem> - <para> - <function>pg_size_pretty()</> - </para> - </listitem> - - </itemizedlist> - </para> - <para> - <function>pg_total_relation_size()</> includes indexes and TOAST - tables. - </para> - </listitem> - - <listitem> - <para> - Add functions for read-only file access to the cluster directory - (Dave Page, Andreas Pflug) - </para> - <para> - <itemizedlist> - - <listitem> - <para> - <function>pg_stat_file()</> - </para> - </listitem> - - <listitem> - <para> - <function>pg_read_file()</> - </para> - </listitem> - - <listitem> - <para> - <function>pg_ls_dir()</> - </para> - </listitem> - - </itemizedlist> - </para> - </listitem> - - <listitem> - <para> - Add <function>pg_reload_conf()</> to force reloading of the - configuration files (Dave Page, Andreas Pflug) - </para> - </listitem> - - <listitem> - <para> - Add <function>pg_rotate_logfile()</> to force rotation of the - server log file (Dave Page, Andreas Pflug) - </para> - </listitem> - - <listitem> - <para> - Change <literal>pg_stat_*</> views to include TOAST tables (Tom) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Encoding and Locale Changes</title> - <itemizedlist> - - <listitem> - <para> - Rename some encodings to be more consistent and to follow - international standards (Bruce) - </para> - <para> - <itemizedlist> - - <listitem> - <para> - <literal>UNICODE</> is now <literal>UTF8</> - </para> - </listitem> - - <listitem> - <para> - <literal>ALT</> is now <literal>WIN866</> - </para> - </listitem> - - <listitem> - <para> - <literal>WIN</> is now <literal>WIN1251</> - </para> - </listitem> - - <listitem> - <para> - <literal>TCVN</> is now <literal>WIN1258</> - </para> - </listitem> - - </itemizedlist> - </para> - - <para> - The original names still work. - </para> - </listitem> - - <listitem> - <para> - Add support for <literal>WIN1252</> encoding (Roland Volkmann) - </para> - </listitem> - - <listitem> - <para> - Add support for four-byte <literal>UTF8</> characters (John - Hansen) - </para> - <para> - Previously only one, two, and three-byte <literal>UTF8</> characters - were supported. This is particularly important for support for - some Chinese character sets. - </para> - </listitem> - - <listitem> - <para> - Allow direct conversion between <literal>EUC_JP</> and - <literal>SJIS</> to improve performance (Atsushi Ogawa) - </para> - </listitem> - - <listitem> - <para> - Allow the UTF8 encoding to work on Windows (Magnus) - </para> - <para> - This is done by mapping UTF8 to the Windows-native UTF16 - implementation. - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>General Server-Side Language Changes</title> - <itemizedlist> - - <listitem> - <para> - Fix <command>ALTER LANGUAGE RENAME</> (Sergey Yatskevich) - </para> - </listitem> - - <listitem> - <para> - Allow function characteristics, like strictness and volatility, - to be modified via <command>ALTER FUNCTION</> (Neil) - </para> - </listitem> - - <listitem> - <para> - Increase the maximum number of function arguments to 100 (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow SQL and PL/pgSQL functions to use <command>OUT</> and - <command>INOUT</> parameters (Tom) - </para> - <para> - <command>OUT</> is an alternate way for a function to return - values. Instead of using <command>RETURN</>, values can be - returned by assigning to parameters declared as <command>OUT</> or - <command>INOUT</>. This is notationally simpler in some cases, - particularly so when multiple values need to be returned. - While returning multiple values from a function - was possible in previous releases, this greatly simplifies the - process. (The feature will be extended to other server-side - languages in future releases.) - </para> - </listitem> - - <listitem> - <para> - Move language handler functions into the <literal>pg_catalog</> schema - </para> - <para> - This makes it easier to drop the public schema if desired. - </para> - </listitem> - - <listitem> - <para> - Add <function>SPI_getnspname()</function> to SPI (Neil) - </para> - </listitem> - - </itemizedlist> - </sect3> - - <sect3> - <title>PL/pgSQL Server-Side Language Changes</title> - <itemizedlist> - - <listitem> - <para> - Overhaul the memory management of PL/pgSQL functions (Neil) - </para> - <para> - The parsetree of each function is now stored in a separate - memory context. This allows this memory to be easily reclaimed - when it is no longer needed. - </para> - </listitem> - - <listitem> - <para> - Check function syntax at <command>CREATE FUNCTION</> time, - rather than at runtime (Neil) - </para> - <para> - Previously, most syntax errors were reported only when the - function was executed. - </para> - </listitem> - - <listitem> - <para> - Allow <command>OPEN</> to open non-<command>SELECT</> queries - like <command>EXPLAIN</> and <command>SHOW</> (Tom) - </para> - </listitem> - - <listitem> - <para> - No longer require functions to issue a <command>RETURN</> - statement (Tom) - </para> - <para> - This is a byproduct of the newly added <command>OUT</> and - <command>INOUT</> functionality. <command>RETURN</> can - be omitted when it is not needed to provide the function's - return value. - </para> - </listitem> - - <listitem> - <para> - Add support for an optional <command>INTO</> clause to - PL/pgSQL's <command>EXECUTE</> statement (Pavel Stehule, Neil) - </para> - </listitem> - - <listitem> - <para> - Make <command>CREATE TABLE AS</> set <command>ROW_COUNT</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Define <literal>SQLSTATE</> and <literal>SQLERRM</> to return - the <literal>SQLSTATE</> and error message of the current - exception (Pavel Stehule, Neil) - </para> - <para> - These variables are only defined inside exception blocks. - </para> - </listitem> - - <listitem> - <para> - Allow the parameters to the <command>RAISE</> statement to be - expressions (Pavel Stehule, Neil) - </para> - </listitem> - - <listitem> - <para> - Add a loop <command>CONTINUE</> statement (Pavel Stehule, Neil) - </para> - </listitem> - - <listitem> - <para> - Allow block and loop labels (Pavel Stehule) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>PL/Perl Server-Side Language Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow large result sets to be returned efficiently (Abhijit - Menon-Sen) - </para> - <para> - This allows functions to use <function>return_next()</> to avoid - building the entire result set in memory. - </para> - </listitem> - - <listitem> - <para> - Allow one-row-at-a-time retrieval of query results (Abhijit Menon-Sen) - </para> - <para> - This allows functions to use <function>spi_query()</> and - <function>spi_fetchrow()</> to avoid accumulating the entire - result set in memory. - </para> - </listitem> - - <listitem> - <para> - Force PL/Perl to handle strings as <literal>UTF8</> if the - server encoding is <literal>UTF8</> (David Kamholz) - </para> - </listitem> - - <listitem> - <para> - Add a validator function for PL/Perl (Andrew) - </para> - <para> - This allows syntax errors to be reported at definition time, - rather than execution time. - </para> - </listitem> - - <listitem> - <para> - Allow PL/Perl to return a Perl array when the function returns - an array type (Andrew) - </para> - <para> - This basically maps <productname>PostgreSQL</productname> arrays - to Perl arrays. - </para> - </listitem> - - <listitem> - <para> - Allow Perl nonfatal warnings to generate <command>NOTICE</> - messages (Andrew) - </para> - </listitem> - - <listitem> - <para> - Allow Perl's <literal>strict</> mode to be enabled (Andrew) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title><application>psql</> Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <command>\set ON_ERROR_ROLLBACK</> to allow statements in - a transaction to error without affecting the rest of the - transaction (Greg Sabino Mullane) - </para> - <para> - This is basically implemented by wrapping every statement in a - sub-transaction. - </para> - </listitem> - - <listitem> - <para> - Add support for <literal>\x</> hex strings in - <application>psql</> variables (Bruce) - </para> - <para> - Octal escapes were already supported. - </para> - </listitem> - - <listitem> - <para> - Add support for <command>troff -ms</> output format (Roger - Leigh) - </para> - </listitem> - - <listitem> - <para> - Allow the history file location to be controlled by - <envar>HISTFILE</> (Andreas Seltenreich) - </para> - <para> - This allows configuration of per-database history storage. - </para> - </listitem> - - <listitem> - <para> - Prevent <command>\x</> (expanded mode) from affecting - the output of <command>\d tablename</> (Neil) - </para> - </listitem> - - <listitem> - <para> - Add <option>-L</> option to <application>psql</application> to - log sessions (Lorne Sunley) - </para> - <para> - This option was added because some operating systems do not have - simple command-line activity logging functionality. - </para> - </listitem> - - <listitem> - <para> - Make <command>\d</> show the tablespaces of indexes (Qingqing - Zhou) - </para> - </listitem> - - <listitem> - <para> - Allow <application>psql</application> help (<command>\h</>) to - make a best guess on the proper help information (Greg Sabino - Mullane) - </para> - <para> - This allows the user to just add <command>\h</> to the front of - the syntax error query and get help on the supported syntax. - Previously any additional query text beyond the command name - had to be removed to use <command>\h</>. - </para> - </listitem> - - <listitem> - <para> - Add <command>\pset numericlocale</> to allow numbers to be - output in a locale-aware format (Eugen Nedelcu) - </para> - <para> - For example, using <literal>C</> locale <literal>100000</> would - be output as <literal>100,000.0</> while a European locale might - output this value as <literal>100.000,0</>. - </para> - </listitem> - - <listitem> - <para> - Make startup banner show both server version number and - <application>psql</>'s version number, when they are different (Bruce) - </para> - <para> - Also, a warning will be shown if the server and <application>psql</> - are from different major releases. - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title><application>pg_dump</> Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <option>-n</> / <option>--schema</> switch to - <application>pg_restore</> (Richard van den Berg) - </para> - <para> - This allows just the objects in a specified schema to be restored. - </para> - </listitem> - - <listitem> - <para> - Allow <application>pg_dump</> to dump large objects even in - text mode (Tom) - </para> - <para> - With this change, large objects are now always dumped; the former - <option>-b</> switch is a no-op. - </para> - </listitem> - - <listitem> - <para> - Allow <application>pg_dump</> to dump a consistent snapshot of - large objects (Tom) - </para> - </listitem> - - <listitem> - <para> - Dump comments for large objects (Tom) - </para> - </listitem> - - <listitem> - <para> - Add <option>--encoding</> to <application>pg_dump</> - (Magnus Hagander) - </para> - <para> - This allows a database to be dumped in an encoding that is - different from the server's encoding. This is valuable when - transferring the dump to a machine with a different encoding. - </para> - </listitem> - - <listitem> - <para> - Rely on <structname>pg_pltemplate</> for procedural languages (Tom) - </para> - <para> - If the call handler for a procedural language is in the - <literal>pg_catalog</> schema, <application>pg_dump</> does not - dump the handler. Instead, it dumps the language using just - <command>CREATE LANGUAGE <replaceable>name</></command>, - relying on the <structname>pg_pltemplate</> catalog to provide - the language's creation parameters at load time. - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title><application>libpq</application> Changes</title> - <itemizedlist> - - <listitem> - <para> - Add a <envar>PGPASSFILE</> environment variable to specify the - password file's filename (Andrew) - </para> - </listitem> - - <listitem> - <para> - Add <function>lo_create()</>, that is similar to - <function>lo_creat()</> but allows the OID of the large object - to be specified (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <application>libpq</application> consistently return an error - to the client application on <function>malloc()</function> - failure (Neil) - </para> - </listitem> - </itemizedlist> - </sect3> - - - <sect3> - <title>Source Code Changes</title> - <itemizedlist> - - <listitem> - <para> - Fix <application>pgxs</> to support building against a relocated - installation - </para> - </listitem> - - <listitem> - <para> - Add spinlock support for the Itanium processor using Intel - compiler (Vikram Kalsi) - </para> - </listitem> - - <listitem> - <para> - Add Kerberos 5 support for Windows (Magnus) - </para> - </listitem> - - <listitem> - <para> - Add Chinese FAQ (laser@pgsqldb.com) - </para> - </listitem> - - <listitem> - <para> - Rename Rendezvous to Bonjour to match OS/X feature renaming - (Bruce) - </para> - </listitem> - - <listitem> - <para> - Add support for <literal>fsync_writethrough</literal> on - Darwin (Chris Campbell) - </para> - </listitem> - - <listitem> - <para> - Streamline the passing of information within the server, the - optimizer, and the lock system (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow <application>pg_config</> to be compiled using MSVC (Andrew) - </para> - <para> - This is required to build DBD::Pg using <application>MSVC</>. - </para> - </listitem> - - <listitem> - <para> - Remove support for Kerberos V4 (Magnus) - </para> - <para> - Kerberos 4 had security vulnerabilities and is no longer - maintained. - </para> - </listitem> - - <listitem> - <para> - Code cleanups (Coverity static analysis performed by - EnterpriseDB) - </para> - </listitem> - - <listitem> - <para> - Modify <filename>postgresql.conf</> to use documentation defaults - <literal>on</>/<literal>off</> rather than - <literal>true</>/<literal>false</> (Bruce) - </para> - </listitem> - - <listitem> - <para> - Enhance <application>pg_config</> to be able to report more - build-time values (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow <application>libpq</application> to be built thread-safe - on Windows (Dave Page) - </para> - </listitem> - - <listitem> - <para> - Allow IPv6 connections to be used on Windows (Andrew) - </para> - </listitem> - - <listitem> - <para> - Add Server Administration documentation about I/O subsystem - reliability (Bruce) - </para> - </listitem> - - <listitem> - <para> - Move private declarations from <filename>gist.h</filename> to - <filename>gist_private.h</filename> (Neil) - </para> - - <para> - In previous releases, <filename>gist.h</> contained both the - public GiST API (intended for use by authors of GiST index - implementations) as well as some private declarations used by - the implementation of GiST itself. The latter have been moved - to a separate file, <filename>gist_private.h</>. Most GiST - index implementations should be unaffected. - </para> - </listitem> - - <listitem> - <para> - Overhaul GiST memory management (Neil) - </para> - - <para> - GiST methods are now always invoked in a short-lived memory - context. Therefore, memory allocated via <function>palloc()</> - will be reclaimed automatically, so GiST index implementations - do not need to manually release allocated memory via - <function>pfree()</>. - </para> - </listitem> - </itemizedlist> - </sect3> - - - <sect3> - <title>Contrib Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <filename>/contrib/pg_buffercache</> contrib module (Mark - Kirkwood) - </para> - <para> - This displays the contents of the buffer cache, for debugging and - performance tuning purposes. - </para> - </listitem> - - <listitem> - <para> - Remove <filename>/contrib/array</> because it is obsolete (Tom) - </para> - </listitem> - - <listitem> - <para> - Clean up the <filename>/contrib/lo</> module (Tom) - </para> - </listitem> - - <listitem> - <para> - Move <filename>/contrib/findoidjoins</> to - <filename>/src/tools</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Remove the <literal><<</>, <literal>>></>, - <literal>&<</>, and <literal>&></> operators from - <filename>/contrib/cube</> - </para> - <para> - These operators were not useful. - </para> - </listitem> - - <listitem> - <para> - Improve <filename>/contrib/btree_gist</> (Janko Richter) - </para> - </listitem> - - <listitem> - <para> - Improve <filename>/contrib/pgbench</> (Tomoaki Sato, Tatsuo) - </para> - <para> - There is now a facility for testing with SQL command scripts given - by the user, instead of only a hard-wired command sequence. - </para> - </listitem> - - <listitem> - <para> - Improve <filename>/contrib/pgcrypto</> (Marko Kreen) - </para> - - <itemizedlist> - - <listitem> - <para> - Implementation of OpenPGP symmetric-key and public-key encryption - </para> - <para> - Both RSA and Elgamal public-key algorithms are supported. - </para> - </listitem> - - <listitem> - <para> - Stand alone build: include SHA256/384/512 hashes, Fortuna PRNG - </para> - </listitem> - - <listitem> - <para> - OpenSSL build: support 3DES, use internal AES with OpenSSL < 0.9.7 - </para> - </listitem> - - <listitem> - <para> - Take build parameters (OpenSSL, zlib) from <filename>configure</> result - </para> - <para> - There is no need to edit the <filename>Makefile</> anymore. - </para> - </listitem> - - <listitem> - <para> - Remove support for <filename>libmhash</> and <filename>libmcrypt</> - </para> - </listitem> - - </itemizedlist> - </listitem> - - </itemizedlist> - </sect3> - - </sect2> - </sect1> diff --git a/doc/src/sgml/release-8.2.sgml b/doc/src/sgml/release-8.2.sgml deleted file mode 100644 index 8a67cf22ccf..00000000000 --- a/doc/src/sgml/release-8.2.sgml +++ /dev/null @@ -1,7077 +0,0 @@ -<!-- doc/src/sgml/release-8.2.sgml --> -<!-- See header comment in release.sgml about typical markup --> - - <sect1 id="release-8-2-23"> - <title>Release 8.2.23</title> - - <formalpara> - <title>Release date:</title> - <para>2011-12-05</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.22. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <para> - This is expected to be the last <productname>PostgreSQL</> release - in the 8.2.X series. Users are encouraged to update to a newer - release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.2.23</title> - - <para> - A dump/restore is not required for those running 8.2.X. - </para> - - <para> - However, a longstanding error was discovered in the definition of the - <literal>information_schema.referential_constraints</> view. If you - rely on correct results from that view, you should replace its - definition as explained in the first changelog item below. - </para> - - <para> - Also, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix bugs in <literal>information_schema.referential_constraints</> view - (Tom Lane) - </para> - - <para> - This view was being insufficiently careful about matching the - foreign-key constraint to the depended-on primary or unique key - constraint. That could result in failure to show a foreign key - constraint at all, or showing it multiple times, or claiming that it - depends on a different constraint than the one it really does. - </para> - - <para> - Since the view definition is installed by <application>initdb</>, - merely upgrading will not fix the problem. If you need to fix this - in an existing installation, you can (as a superuser) drop the - <literal>information_schema</> schema then re-create it by sourcing - <filename><replaceable>SHAREDIR</>/information_schema.sql</filename>. - (Run <literal>pg_config --sharedir</> if you're uncertain where - <replaceable>SHAREDIR</> is.) This must be repeated in each database - to be fixed. - </para> - </listitem> - - <listitem> - <para> - Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS - SELECT * FROM src</> or <literal>INSERT INTO dest SELECT * FROM src</> - (Tom Lane) - </para> - - <para> - If a table has been modified by <command>ALTER TABLE ADD COLUMN</>, - attempts to copy its data verbatim to another table could produce - corrupt results in certain corner cases. - The problem can only manifest in this precise form in 8.4 and later, - but we patched earlier versions as well in case there are other code - paths that could trigger the same bug. - </para> - </listitem> - - <listitem> - <para> - Fix race condition during toast table access from stale syscache entries - (Tom Lane) - </para> - - <para> - The typical symptom was transient errors like <quote>missing chunk - number 0 for toast value NNNNN in pg_toast_2619</>, where the cited - toast table would always belong to a system catalog. - </para> - </listitem> - - <listitem> - <para> - Improve locale support in <type>money</> type's input and output - (Tom Lane) - </para> - - <para> - Aside from not supporting all standard - <link linkend="guc-lc-monetary"><varname>lc_monetary</></link> - formatting options, the input and output functions were inconsistent, - meaning there were locales in which dumped <type>money</> values could - not be re-read. - </para> - </listitem> - - <listitem> - <para> - Don't let <link - linkend="guc-transform-null-equals"><varname>transform_null_equals</></link> - affect <literal>CASE foo WHEN NULL ...</> constructs - (Heikki Linnakangas) - </para> - - <para> - <varname>transform_null_equals</> is only supposed to affect - <literal>foo = NULL</> expressions written directly by the user, not - equality checks generated internally by this form of <literal>CASE</>. - </para> - </listitem> - - <listitem> - <para> - Change foreign-key trigger creation order to better support - self-referential foreign keys (Tom Lane) - </para> - - <para> - For a cascading foreign key that references its own table, a row update - will fire both the <literal>ON UPDATE</> trigger and the - <literal>CHECK</> trigger as one event. The <literal>ON UPDATE</> - trigger must execute first, else the <literal>CHECK</> will check a - non-final state of the row and possibly throw an inappropriate error. - However, the firing order of these triggers is determined by their - names, which generally sort in creation order since the triggers have - auto-generated names following the convention - <quote>RI_ConstraintTrigger_NNNN</>. A proper fix would require - modifying that convention, which we will do in 9.2, but it seems risky - to change it in existing releases. So this patch just changes the - creation order of the triggers. Users encountering this type of error - should drop and re-create the foreign key constraint to get its - triggers into the right order. - </para> - </listitem> - - <listitem> - <para> - Preserve blank lines within commands in <application>psql</>'s command - history (Robert Haas) - </para> - - <para> - The former behavior could cause problems if an empty line was removed - from within a string literal, for example. - </para> - </listitem> - - <listitem> - <para> - Use the preferred version of <application>xsubpp</> to build PL/Perl, - not necessarily the operating system's main copy - (David Wheeler and Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Honor query cancel interrupts promptly in <function>pgstatindex()</> - (Robert Haas) - </para> - </listitem> - - <listitem> - <para> - Ensure VPATH builds properly install all server header files - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Shorten file names reported in verbose error messages (Peter Eisentraut) - </para> - - <para> - Regular builds have always reported just the name of the C file - containing the error message call, but VPATH builds formerly - reported an absolute path name. - </para> - </listitem> - - <listitem> - <para> - Fix interpretation of Windows timezone names for Central America - (Tom Lane) - </para> - - <para> - Map <quote>Central America Standard Time</> to <literal>CST6</>, not - <literal>CST6CDT</>, because DST is generally not observed anywhere in - Central America. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2011n - for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; - also historical corrections for Alaska and British East Africa. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-22"> - <title>Release 8.2.22</title> - - <formalpara> - <title>Release date:</title> - <para>2011-09-26</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.21. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <para> - The <productname>PostgreSQL</> community will stop releasing updates - for the 8.2.X release series in December 2011. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.2.22</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix multiple bugs in GiST index page split processing (Heikki - Linnakangas) - </para> - - <para> - The probability of occurrence was low, but these could lead to index - corruption. - </para> - </listitem> - - <listitem> - <para> - Avoid possibly accessing off the end of memory in <command>ANALYZE</> - (Noah Misch) - </para> - - <para> - This fixes a very-low-probability server crash scenario. - </para> - </listitem> - - <listitem> - <para> - Fix race condition in relcache init file invalidation (Tom Lane) - </para> - - <para> - There was a window wherein a new backend process could read a stale init - file but miss the inval messages that would tell it the data is stale. - The result would be bizarre failures in catalog accesses, typically - <quote>could not read block 0 in file ...</> later during startup. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak at end of a GiST index scan (Tom Lane) - </para> - - <para> - Commands that perform many separate GiST index scans, such as - verification of a new GiST-based exclusion constraint on a table - already containing many rows, could transiently require large amounts of - memory due to this leak. - </para> - </listitem> - - <listitem> - <para> - Fix performance problem when constructing a large, lossy bitmap - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix array- and path-creating functions to ensure padding bytes are - zeroes (Tom Lane) - </para> - - <para> - This avoids some situations where the planner will think that - semantically-equal constants are not equal, resulting in poor - optimization. - </para> - </listitem> - - <listitem> - <para> - Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane) - </para> - - <para> - This could lead to loss of committed transactions after a server crash. - </para> - </listitem> - - <listitem> - <para> - Fix dump bug for <literal>VALUES</> in a view (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Disallow <literal>SELECT FOR UPDATE/SHARE</> on sequences (Tom Lane) - </para> - - <para> - This operation doesn't work as expected and can lead to failures. - </para> - </listitem> - - <listitem> - <para> - Defend against integer overflow when computing size of a hash table (Tom - Lane) - </para> - </listitem> - - <listitem> - <para> - Fix portability bugs in use of credentials control messages for - <quote>peer</> authentication (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix typo in <function>pg_srand48</> seed initialization (Andres Freund) - </para> - - <para> - This led to failure to use all bits of the provided seed. This function - is not used on most platforms (only those without <function>srandom</>), - and the potential security exposure from a less-random-than-expected - seed seems minimal in any case. - </para> - </listitem> - - <listitem> - <para> - Avoid integer overflow when the sum of <literal>LIMIT</> and - <literal>OFFSET</> values exceeds 2^63 (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Add overflow checks to <type>int4</> and <type>int8</> versions of - <function>generate_series()</> (Robert Haas) - </para> - </listitem> - - <listitem> - <para> - Fix trailing-zero removal in <function>to_char()</> (Marti Raudsepp) - </para> - - <para> - In a format with <literal>FM</> and no digit positions - after the decimal point, zeroes to the left of the decimal point could - be removed incorrectly. - </para> - </listitem> - - <listitem> - <para> - Fix <function>pg_size_pretty()</> to avoid overflow for inputs close to - 2^63 (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s counting of script file line numbers during - <literal>COPY</> from a different file (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</>'s direct-to-database mode for - <varname>standard_conforming_strings</> (Tom Lane) - </para> - - <para> - <application>pg_restore</> could emit incorrect commands when restoring - directly to a database server from an archive file that had been made - with <varname>standard_conforming_strings</> set to <literal>on</>. - </para> - </listitem> - - <listitem> - <para> - Fix write-past-buffer-end and memory leak in <application>libpq</>'s - LDAP service lookup code (Albe Laurenz) - </para> - </listitem> - - <listitem> - <para> - In <application>libpq</>, avoid failures when using nonblocking I/O - and an SSL connection (Martin Pihlak, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Improve libpq's handling of failures during connection startup - (Tom Lane) - </para> - - <para> - In particular, the response to a server report of <function>fork()</> - failure during SSL connection startup is now saner. - </para> - </listitem> - - <listitem> - <para> - Make <application>ecpglib</> write <type>double</> values with 15 digits - precision (Akira Kurosawa) - </para> - </listitem> - - <listitem> - <para> - Apply upstream fix for blowfish signed-character bug (CVE-2011-2483) - (Tom Lane) - </para> - - <para> - <filename>contrib/pg_crypto</>'s blowfish encryption code could give - wrong results on platforms where char is signed (which is most), - leading to encrypted passwords being weaker than they should be. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in <filename>contrib/seg</> (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix <function>pgstatindex()</> to give consistent results for empty - indexes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Allow building with perl 5.14 (Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Update configure script's method for probing existence of system - functions (Tom Lane) - </para> - - <para> - The version of autoconf we used in 8.3 and 8.2 could be fooled by - compilers that perform link-time optimization. - </para> - </listitem> - - <listitem> - <para> - Fix assorted issues with build and install file paths containing spaces - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2011i - for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-21"> - <title>Release 8.2.21</title> - - <formalpara> - <title>Release date:</title> - <para>2011-04-18</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.20. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.21</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Avoid potential deadlock during catalog cache initialization - (Nikhil Sontakke) - </para> - - <para> - In some cases the cache loading code would acquire share lock on a - system index before locking the index's catalog. This could deadlock - against processes trying to acquire exclusive locks in the other, - more standard order. - </para> - </listitem> - - <listitem> - <para> - Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</> trigger - handling when there was a concurrent update to the target tuple - (Tom Lane) - </para> - - <para> - This bug has been observed to result in intermittent <quote>cannot - extract system attribute from virtual tuple</> failures while trying to - do <literal>UPDATE RETURNING ctid</>. There is a very small probability - of more serious errors, such as generating incorrect index entries for - the updated tuple. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>DROP TABLE</> when there are pending deferred trigger - events for the table (Tom Lane) - </para> - - <para> - Formerly the <command>DROP</> would go through, leading to - <quote>could not open relation with OID nnn</> errors when the - triggers were eventually fired. - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python memory leak involving array slices (Daniel Popowich) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</> to cope with long lines (over 1KB) in - TOC files (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Put in more safeguards against crashing due to division-by-zero - with overly enthusiastic compiler optimization (Aurelien Jarno) - </para> - </listitem> - - <listitem> - <para> - Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane) - </para> - - <para> - There was a hard-wired assumption that this system function was not - available on MIPS hardware on these systems. Use a compile-time test - instead, since more recent versions have it. - </para> - </listitem> - - <listitem> - <para> - Fix compilation failures on HP-UX (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix path separator used by <application>pg_regress</> on Cygwin - (Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2011f - for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa, - and Turkey; also historical corrections for South Australia, Alaska, - and Hawaii. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-20"> - <title>Release 8.2.20</title> - - <formalpara> - <title>Release date:</title> - <para>2011-01-31</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.19. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.20</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Avoid failures when <command>EXPLAIN</> tries to display a simple-form - <literal>CASE</> expression (Tom Lane) - </para> - - <para> - If the <literal>CASE</>'s test expression was a constant, the planner - could simplify the <literal>CASE</> into a form that confused the - expression-display code, resulting in <quote>unexpected CASE WHEN - clause</> errors. - </para> - </listitem> - - <listitem> - <para> - Fix assignment to an array slice that is before the existing range - of subscripts (Tom Lane) - </para> - - <para> - If there was a gap between the newly added subscripts and the first - pre-existing subscript, the code miscalculated how many entries needed - to be copied from the old array's null bitmap, potentially leading to - data corruption or crash. - </para> - </listitem> - - <listitem> - <para> - Avoid unexpected conversion overflow in planner for very distant date - values (Tom Lane) - </para> - - <para> - The <type>date</> type supports a wider range of dates than can be - represented by the <type>timestamp</> types, but the planner assumed it - could always convert a date to timestamp with impunity. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</>'s text output for large objects (BLOBs) - when <varname>standard_conforming_strings</> is on (Tom Lane) - </para> - - <para> - Although restoring directly to a database worked correctly, string - escaping was incorrect if <application>pg_restore</> was asked for - SQL text output and <varname>standard_conforming_strings</> had been - enabled in the source database. - </para> - </listitem> - - <listitem> - <para> - Fix erroneous parsing of <type>tsquery</> values containing - <literal>... & !(subexpression) | ...</literal> (Tom Lane) - </para> - - <para> - Queries containing this combination of operators were not executed - correctly. The same error existed in <filename>contrib/intarray</>'s - <type>query_int</> type and <filename>contrib/ltree</>'s - <type>ltxtquery</> type. - </para> - </listitem> - - <listitem> - <para> - Fix buffer overrun in <filename>contrib/intarray</>'s input function - for the <type>query_int</> type (Apple) - </para> - - <para> - This bug is a security risk since the function's return address could - be overwritten. Thanks to Apple Inc's security team for reporting this - issue and supplying the fix. (CVE-2010-4015) - </para> - </listitem> - - <listitem> - <para> - Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm - (Alexander Korotkov) - </para> - - <para> - This could result in considerable inefficiency, though not actually - incorrect answers, in a GiST index on a <type>seg</> column. - If you have such an index, consider <command>REINDEX</>ing it after - installing this update. (This is identical to the bug that was fixed in - <filename>contrib/cube</> in the previous update.) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-19"> - <title>Release 8.2.19</title> - - <formalpara> - <title>Release date:</title> - <para>2010-12-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.18. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.19</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Force the default - <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link> - to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp) - </para> - - <para> - The default on Linux has actually been <literal>fdatasync</> for many - years, but recent kernel changes caused <productname>PostgreSQL</> to - choose <literal>open_datasync</> instead. This choice did not result - in any performance improvement, and caused outright failures on - certain filesystems, notably <literal>ext4</> with the - <literal>data=journal</> mount option. - </para> - </listitem> - - <listitem> - <para> - Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane) - </para> - - <para> - This could result in <quote>bad buffer id: 0</> failures or - corruption of index contents during replication. - </para> - </listitem> - - <listitem> - <para> - Fix recovery from base backup when the starting checkpoint WAL record - is not in the same WAL segment as its redo point (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Add support for detecting register-stack overrun on <literal>IA64</> - (Tom Lane) - </para> - - <para> - The <literal>IA64</> architecture has two hardware stacks. Full - prevention of stack-overrun failures requires checking both. - </para> - </listitem> - - <listitem> - <para> - Add a check for stack overflow in <function>copyObject()</> (Tom Lane) - </para> - - <para> - Certain code paths could crash due to stack overflow given a - sufficiently complex query. - </para> - </listitem> - - <listitem> - <para> - Fix detection of page splits in temporary GiST indexes (Heikki - Linnakangas) - </para> - - <para> - It is possible to have a <quote>concurrent</> page split in a - temporary index, if for example there is an open cursor scanning the - index when an insertion is done. GiST failed to detect this case and - hence could deliver wrong results when execution of the cursor - continued. - </para> - </listitem> - - <listitem> - <para> - Avoid memory leakage while <command>ANALYZE</>'ing complex index - expressions (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Ensure an index that uses a whole-row Var still depends on its table - (Tom Lane) - </para> - - <para> - An index declared like <literal>create index i on t (foo(t.*))</> - would not automatically get dropped when its table was dropped. - </para> - </listitem> - - <listitem> - <para> - Do not <quote>inline</> a SQL function with multiple <literal>OUT</> - parameters (Tom Lane) - </para> - - <para> - This avoids a possible crash due to loss of information about the - expected result rowtype. - </para> - </listitem> - - <listitem> - <para> - Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>, - <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the - <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane) - </para> - - <para> - The planner would sometimes attempt to evaluate sub-expressions that - in fact could never be reached, possibly leading to unexpected errors. - </para> - </listitem> - - <listitem> - <para> - Add print functionality for <structname>InhRelation</> nodes (Tom Lane) - </para> - - <para> - This avoids a failure when <varname>debug_print_parse</> is enabled - and certain types of query are executed. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect calculation of distance from a point to a horizontal - line segment (Tom Lane) - </para> - - <para> - This bug affected several different geometric distance-measurement - operators. - </para> - </listitem> - - <listitem> - <para> - Fix <application>PL/pgSQL</>'s handling of <quote>simple</> - expressions to not fail in recursion or error-recovery cases (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>PL/Python</>'s handling of set-returning functions - (Jan Urbanski) - </para> - - <para> - Attempts to call SPI functions within the iterator generating a set - result would fail. - </para> - </listitem> - - <listitem> - <para> - Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm - (Alexander Korotkov) - </para> - - <para> - This could result in considerable inefficiency, though not actually - incorrect answers, in a GiST index on a <type>cube</> column. - If you have such an index, consider <command>REINDEX</>ing it after - installing this update. - </para> - </listitem> - - <listitem> - <para> - Don't emit <quote>identifier will be truncated</> notices in - <filename>contrib/dblink</> except when creating new connections - (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix potential coredump on missing public key in - <filename>contrib/pgcrypto</> (Marti Raudsepp) - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in <filename>contrib/xml2</>'s XPath query functions - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010o - for DST law changes in Fiji and Samoa; - also historical corrections for Hong Kong. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-18"> - <title>Release 8.2.18</title> - - <formalpara> - <title>Release date:</title> - <para>2010-10-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.17. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.18</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Use a separate interpreter for each calling SQL userid in PL/Perl and - PL/Tcl (Tom Lane) - </para> - - <para> - This change prevents security problems that can be caused by subverting - Perl or Tcl code that will be executed later in the same session under - another SQL user identity (for example, within a <literal>SECURITY - DEFINER</> function). Most scripting languages offer numerous ways that - that might be done, such as redefining standard functions or operators - called by the target function. Without this change, any SQL user with - Perl or Tcl language usage rights can do essentially anything with the - SQL privileges of the target function's owner. - </para> - - <para> - The cost of this change is that intentional communication among Perl - and Tcl functions becomes more difficult. To provide an escape hatch, - PL/PerlU and PL/TclU functions continue to use only one interpreter - per session. This is not considered a security issue since all such - functions execute at the trust level of a database superuser already. - </para> - - <para> - It is likely that third-party procedural languages that claim to offer - trusted execution have similar security issues. We advise contacting - the authors of any PL you are depending on for security-critical - purposes. - </para> - - <para> - Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433). - </para> - </listitem> - - <listitem> - <para> - Prevent possible crashes in <function>pg_get_expr()</> by disallowing - it from being called with an argument that is not one of the system - catalog columns it's intended to be used with - (Heikki Linnakangas, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix Windows shared-memory allocation code - (Tsutomu Yamada, Magnus Hagander) - </para> - - <para> - This bug led to the often-reported <quote>could not reattach to shared - memory</quote> error message. This is a back-patch of a fix that was - applied to newer branches some time ago. - </para> - </listitem> - - <listitem> - <para> - Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on - Windows (Magnus Hagander) - </para> - - <para> - Under high load, Windows processes will sometimes fail at startup with - this error code. Formerly the postmaster treated this as a panic - condition and restarted the whole database, but that seems to be - an overreaction. - </para> - </listitem> - - <listitem> - <para> - Fix possible duplicate scans of <literal>UNION ALL</> member relations - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane) - </para> - - <para> - This occurred when a sub-select contains a join alias reference that - expands into an expression containing another sub-select. - </para> - </listitem> - - <listitem> - <para> - Reduce PANIC to ERROR in some occasionally-reported btree failure cases, - and provide additional detail in the resulting error messages - (Tom Lane) - </para> - - <para> - This should improve the system's robustness with corrupted indexes. - </para> - </listitem> - - <listitem> - <para> - Prevent show_session_authorization() from crashing within autovacuum - processes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Defend against functions returning setof record where not all the - returned rows are actually of the same rowtype (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible failure when hashing a pass-by-reference function result - (Tao Ma, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Take care to fsync the contents of lockfiles (both - <filename>postmaster.pid</> and the socket lockfile) while writing them - (Tom Lane) - </para> - - <para> - This omission could result in corrupted lockfile contents if the - machine crashes shortly after postmaster start. That could in turn - prevent subsequent attempts to start the postmaster from succeeding, - until the lockfile is manually removed. - </para> - </listitem> - - <listitem> - <para> - Avoid recursion while assigning XIDs to heavily-nested - subtransactions (Andres Freund, Robert Haas) - </para> - - <para> - The original coding could result in a crash if there was limited - stack space. - </para> - </listitem> - - <listitem> - <para> - Fix <varname>log_line_prefix</>'s <literal>%i</> escape, - which could produce junk early in backend startup (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible data corruption in <command>ALTER TABLE ... SET - TABLESPACE</> when archiving is enabled (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET - TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge) - </para> - </listitem> - - <listitem> - <para> - In PL/Python, defend against null pointer results from - <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</> - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Improve <filename>contrib/dblink</>'s handling of tables containing - dropped columns (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix connection leak after <quote>duplicate connection name</quote> - errors in <filename>contrib/dblink</> (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</> to handle connection names longer than - 62 bytes correctly (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Add <function>hstore(text, text)</> - function to <filename>contrib/hstore</> (Robert Haas) - </para> - - <para> - This function is the recommended substitute for the now-deprecated - <literal>=></> operator. It was back-patched so that future-proofed - code can be used with older server versions. Note that the patch will - be effective only after <filename>contrib/hstore</> is installed or - reinstalled in a particular database. Users might prefer to execute - the <command>CREATE FUNCTION</> command by hand, instead. - </para> - </listitem> - - <listitem> - <para> - Update build infrastructure and documentation to reflect the source code - repository's move from CVS to Git (Magnus Hagander and others) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010l - for DST law changes in Egypt and Palestine; also historical corrections - for Finland. - </para> - - <para> - This change also adds new names for two Micronesian timezones: - Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred - abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over - Pacific/Ponape. - </para> - </listitem> - - <listitem> - <para> - Make Windows' <quote>N. Central Asia Standard Time</> timezone map to - Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander) - </para> - - <para> - Microsoft changed the DST behavior of this zone in the timezone update - from KB976098. Asia/Novosibirsk is a better match to its new behavior. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-17"> - <title>Release 8.2.17</title> - - <formalpara> - <title>Release date:</title> - <para>2010-05-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.16. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.17</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Enforce restrictions in <literal>plperl</> using an opmask applied to - the whole interpreter, instead of using <filename>Safe.pm</> - (Tim Bunce, Andrew Dunstan) - </para> - - <para> - Recent developments have convinced us that <filename>Safe.pm</> is too - insecure to rely on for making <literal>plperl</> trustable. This - change removes use of <filename>Safe.pm</> altogether, in favor of using - a separate interpreter with an opcode mask that is always applied. - Pleasant side effects of the change include that it is now possible to - use Perl's <literal>strict</> pragma in a natural way in - <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</> - variables work as expected in sort routines, and that function - compilation is significantly faster. (CVE-2010-1169) - </para> - </listitem> - - <listitem> - <para> - Prevent PL/Tcl from executing untrustworthy code from - <structname>pltcl_modules</> (Tom) - </para> - - <para> - PL/Tcl's feature for autoloading Tcl code from a database table - could be exploited for trojan-horse attacks, because there was no - restriction on who could create or insert into that table. This change - disables the feature unless <structname>pltcl_modules</> is owned by a - superuser. (However, the permissions on the table are not checked, so - installations that really need a less-than-secure modules table can - still grant suitable privileges to trusted non-superusers.) Also, - prevent loading code into the unrestricted <quote>normal</> Tcl - interpreter unless we are really going to execute a <literal>pltclu</> - function. (CVE-2010-1170) - </para> - </listitem> - - <listitem> - <para> - Fix possible crash if a cache reset message is received during - rebuild of a relcache entry (Heikki) - </para> - - <para> - This error was introduced in 8.2.16 while fixing a related failure. - </para> - </listitem> - - <listitem> - <para> - Do not allow an unprivileged user to reset superuser-only parameter - settings (Alvaro) - </para> - - <para> - Previously, if an unprivileged user ran <literal>ALTER USER ... RESET - ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for - a database he owns, this would remove all special parameter settings - for the user or database, even ones that are only supposed to be - changeable by a superuser. Now, the <command>ALTER</> will only - remove the parameters that the user has permission to change. - </para> - </listitem> - - <listitem> - <para> - Avoid possible crash during backend shutdown if shutdown occurs - when a <literal>CONTEXT</> addition would be made to log entries (Tom) - </para> - - <para> - In some cases the context-printing function would fail because the - current transaction had already been rolled back when it came time - to print a log message. - </para> - </listitem> - - <listitem> - <para> - Update pl/perl's <filename>ppport.h</> for modern Perl versions - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix assorted memory leaks in pl/python (Andreas Freund, Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent infinite recursion in <application>psql</> when expanding - a variable that refers to itself (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s <literal>\copy</> to not add spaces around - a dot within <literal>\copy (select ...)</> (Tom) - </para> - - <para> - Addition of spaces around the decimal point in a numeric literal would - result in a syntax error. - </para> - </listitem> - - <listitem> - <para> - Ensure that <filename>contrib/pgstattuple</> functions respond to cancel - interrupts promptly (Tatsuhito Kasahara) - </para> - </listitem> - - <listitem> - <para> - Make server startup deal properly with the case that - <function>shmget()</> returns <literal>EINVAL</> for an existing - shared memory segment (Tom) - </para> - - <para> - This behavior has been observed on BSD-derived kernels including OS X. - It resulted in an entirely-misleading startup failure complaining that - the shared memory request size was too large. - </para> - </listitem> - - <listitem> - <para> - Avoid possible crashes in syslogger process on Windows (Heikki) - </para> - </listitem> - - <listitem> - <para> - Deal more robustly with incomplete time zone information in the - Windows registry (Magnus) - </para> - </listitem> - - <listitem> - <para> - Update the set of known Windows time zone names (Magnus) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010j - for DST law changes in Argentina, Australian Antarctic, Bangladesh, - Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; - also historical corrections for Taiwan. - </para> - - <para> - Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of - timezone abbreviations. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-16"> - <title>Release 8.2.16</title> - - <formalpara> - <title>Release date:</title> - <para>2010-03-15</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.15. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.16</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Add new configuration parameter <varname>ssl_renegotiation_limit</> to - control how often we do session key renegotiation for an SSL connection - (Magnus) - </para> - - <para> - This can be set to zero to disable renegotiation completely, which may - be required if a broken SSL library is used. In particular, some - vendors are shipping stopgap patches for CVE-2009-3555 that cause - renegotiation attempts to fail. - </para> - </listitem> - - <listitem> - <para> - Fix possible deadlock during backend startup (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes due to not handling errors during relcache reload - cleanly (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes when trying to recover from a failure in - subtransaction start (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix server memory leak associated with use of savepoints and a client - encoding different from server's encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST - index page split (Yoichi Hirai) - </para> - - <para> - This would result in index corruption, or even more likely an error - during WAL replay, if we were unlucky enough to crash during - end-of-recovery cleanup after having completed an incomplete GIST - insertion. - </para> - </listitem> - - <listitem> - <para> - Make <function>substring()</> for <type>bit</> types treat any negative - length as meaning <quote>all the rest of the string</> (Tom) - </para> - - <para> - The previous coding treated only -1 that way, and would produce an - invalid result value for other negative values, possibly leading to - a crash (CVE-2010-0442). - </para> - </listitem> - - <listitem> - <para> - Fix integer-to-bit-string conversions to handle the first fractional - byte correctly when the output bit width is wider than the given - integer by something other than a multiple of 8 bits (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix some cases of pathologically slow regular expression matching (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix the <literal>STOP WAL LOCATION</> entry in backup history files to - report the next WAL segment's name when the end location is exactly at a - segment boundary (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix some more cases of temporary-file leakage (Heikki) - </para> - - <para> - This corrects a problem introduced in the previous minor release. - One case that failed is when a plpgsql function returning set is - called within another function's exception handler. - </para> - </listitem> - - <listitem> - <para> - Improve constraint exclusion processing of boolean-variable cases, - in particular make it possible to exclude a partition that has a - <quote>bool_column = false</> constraint (Tom) - </para> - </listitem> - - <listitem> - <para> - When reading <filename>pg_hba.conf</> and related files, do not treat - <literal>@something</> as a file inclusion request if the <literal>@</> - appears inside quote marks; also, never treat <literal>@</> by itself - as a file inclusion request (Tom) - </para> - - <para> - This prevents erratic behavior if a role or database name starts with - <literal>@</>. If you need to include a file whose path name - contains spaces, you can still do so, but you must write - <literal>@"/path to/file"</> rather than putting the quotes around - the whole construct. - </para> - </listitem> - - <listitem> - <para> - Prevent infinite loop on some platforms if a directory is named as - an inclusion target in <filename>pg_hba.conf</> and related files - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible infinite loop if <function>SSL_read</> or - <function>SSL_write</> fails without setting <varname>errno</> (Tom) - </para> - - <para> - This is reportedly possible with some Windows versions of - <application>openssl</>. - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s <literal>numericlocale</> option to not - format strings it shouldn't in latex and troff output formats (Heikki) - </para> - </listitem> - - <listitem> - <para> - Make <application>psql</> return the correct exit status (3) when - <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are - both specified and an error occurs during the implied <command>COMMIT</> - (Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix plpgsql failure in one case where a composite column is set to NULL - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible failure when calling PL/Perl functions from PL/PerlU - or vice versa (Tim Bunce) - </para> - </listitem> - - <listitem> - <para> - Add <literal>volatile</> markings in PL/Python to avoid possible - compiler-specific misbehavior (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Ensure PL/Tcl initializes the Tcl interpreter fully (Tom) - </para> - - <para> - The only known symptom of this oversight is that the Tcl - <literal>clock</> command misbehaves if using Tcl 8.5 or later. - </para> - </listitem> - - <listitem> - <para> - Prevent crash in <filename>contrib/dblink</> when too many key - columns are specified to a <function>dblink_build_sql_*</> function - (Rushabh Lathia, Joe Conway) - </para> - </listitem> - - <listitem> - <para> - Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy - memory management (Tom) - </para> - </listitem> - - <listitem> - <para> - Make building of <filename>contrib/xml2</> more robust on Windows - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix race condition in Windows signal handling (Radu Ilie) - </para> - - <para> - One known symptom of this bug is that rows in <structname>pg_listener</> - could be dropped under heavy load. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010e - for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-15"> - <title>Release 8.2.15</title> - - <formalpara> - <title>Release date:</title> - <para>2009-12-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.14. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.15</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.14, - see <xref linkend="release-8-2-14">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Protect against indirect security threats caused by index functions - changing session-local state (Gurjeet Singh, Tom) - </para> - - <para> - This change prevents allegedly-immutable index functions from possibly - subverting a superuser's session (CVE-2009-4136). - </para> - </listitem> - - <listitem> - <para> - Reject SSL certificates containing an embedded null byte in the common - name (CN) field (Magnus) - </para> - - <para> - This prevents unintended matching of a certificate to a server or client - name during SSL validation (CVE-2009-4034). - </para> - </listitem> - - <listitem> - <para> - Fix possible crash during backend-startup-time cache initialization (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent signals from interrupting <literal>VACUUM</> at unsafe times - (Alvaro) - </para> - - <para> - This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled - after it's already committed its tuple movements, as well as transient - errors if a plain <literal>VACUUM</> is interrupted after having - truncated the table. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to integer overflow in hash table size - calculation (Tom) - </para> - - <para> - This could occur with extremely large planner estimates for the size of - a hashjoin's result. - </para> - </listitem> - - <listitem> - <para> - Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris - Mikkelson) - </para> - </listitem> - - <listitem> - <para> - Ensure that shared tuple-level locks held by prepared transactions are - not ignored (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix premature drop of temporary files used for a cursor that is accessed - within a subtransaction (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect logic for GiST index page splits, when the split depends - on a non-first column of the index (Paul Ramsey) - </para> - </listitem> - - <listitem> - <para> - Don't error out if recycling or removing an old WAL file fails at the - end of checkpoint (Heikki) - </para> - - <para> - It's better to treat the problem as non-fatal and allow the checkpoint - to complete. Future checkpoints will retry the removal. Such problems - are not expected in normal operation, but have been seen to be - caused by misdesigned Windows anti-virus and backup software. - </para> - </listitem> - - <listitem> - <para> - Ensure WAL files aren't repeatedly archived on Windows (Heikki) - </para> - - <para> - This is another symptom that could happen if some other process - interfered with deletion of a no-longer-needed file. - </para> - </listitem> - - <listitem> - <para> - Fix PAM password processing to be more robust (Tom) - </para> - - <para> - The previous code is known to fail with the combination of the Linux - <literal>pam_krb5</> PAM module with Microsoft Active Directory as the - domain controller. It might have problems elsewhere too, since it was - making unjustified assumptions about what arguments the PAM stack would - pass to it. - </para> - </listitem> - - <listitem> - <para> - Fix processing of ownership dependencies during <literal>CREATE OR - REPLACE FUNCTION</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice - versa (Tom) - </para> - - <para> - An error exit from the inner function could result in crashes due to - failure to re-select the correct Perl interpreter for the outer function. - </para> - </listitem> - - <listitem> - <para> - Fix session-lifespan memory leak when a PL/Perl function is redefined - (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure that Perl arrays are properly converted to - <productname>PostgreSQL</> arrays when returned by a set-returning - PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen) - </para> - - <para> - This worked correctly already for non-set-returning functions. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash in exception processing in PL/Python (Peter) - </para> - </listitem> - - <listitem> - <para> - Ensure <application>psql</>'s flex module is compiled with the correct - system header definitions (Tom) - </para> - - <para> - This fixes build failures on platforms where - <literal>--enable-largefile</> causes incompatible changes in the - generated code. - </para> - </listitem> - - <listitem> - <para> - Make the postmaster ignore any <literal>application_name</> parameter in - connection request packets, to improve compatibility with future libpq - versions (Tom) - </para> - </listitem> - - <listitem> - <para> - Update the timezone abbreviation files to match current reality (Joachim - Wieland) - </para> - - <para> - This includes adding <literal>IDT</> and <literal>SGT</> to the default - timezone abbreviation set. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009s - for DST law changes in Antarctica, Argentina, Bangladesh, Fiji, - Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical - corrections for Hong Kong. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-14"> - <title>Release 8.2.14</title> - - <formalpara> - <title>Release date:</title> - <para>2009-09-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.13. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.14</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you have any hash indexes on <type>interval</> columns, - you must <command>REINDEX</> them after updating to 8.2.14. - Also, if you are upgrading from a version earlier than 8.2.11, - see <xref linkend="release-8-2-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Force WAL segment switch during <function>pg_start_backup()</> - (Heikki) - </para> - - <para> - This avoids corner cases that could render a base backup unusable. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>RESET ROLE</> and <command>RESET SESSION - AUTHORIZATION</> inside security-definer functions (Tom, Heikki) - </para> - - <para> - This covers a case that was missed in the previous patch that - disallowed <command>SET ROLE</> and <command>SET SESSION - AUTHORIZATION</> inside security-definer functions. - (See CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Make <command>LOAD</> of an already-loaded loadable module - into a no-op (Tom) - </para> - - <para> - Formerly, <command>LOAD</> would attempt to unload and re-load the - module, but this is unsafe and not all that useful. - </para> - </listitem> - - <listitem> - <para> - Disallow empty passwords during LDAP authentication (Magnus) - </para> - </listitem> - - <listitem> - <para> - Fix handling of sub-SELECTs appearing in the arguments of - an outer-level aggregate function (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bugs associated with fetching a whole-row value from the - output of a Sort or Materialize plan node (Tom) - </para> - </listitem> - - <listitem> - <para> - Revert planner change that disabled partial-index and constraint - exclusion optimizations when there were more than 100 clauses in - an AND or OR list (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix hash calculation for data type <type>interval</> (Tom) - </para> - - <para> - This corrects wrong results for hash joins on interval values. - It also changes the contents of hash indexes on interval columns. - If you have any such indexes, you must <command>REINDEX</> them - after updating. - </para> - </listitem> - - <listitem> - <para> - Treat <function>to_char(..., 'TH')</> as an uppercase ordinal - suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki) - </para> - - <para> - It was previously handled as <literal>'th'</> (lowercase). - </para> - </listitem> - - <listitem> - <para> - Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal> - when <replaceable>x</> is more than 2 million and integer - datetimes are in use (Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Fix calculation of distance between a point and a line segment (Tom) - </para> - - <para> - This led to incorrect results from a number of geometric operators. - </para> - </listitem> - - <listitem> - <para> - Fix <type>money</> data type to work in locales where currency - amounts have no fractional digits, e.g. Japan (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Properly round datetime input like - <literal>00:12:57.9999999999999999999999999999</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix poor choice of page split point in GiST R-tree operator classes - (Teodor) - </para> - </listitem> - - <listitem> - <para> - Avoid performance degradation in bulk inserts into GIN indexes - when the input values are (nearly) in sorted order (Tom) - </para> - </listitem> - - <listitem> - <para> - Correctly enforce NOT NULL domain constraints in some contexts in - PL/pgSQL (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix portability issues in plperl initialization (Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to not go into an infinite loop if - <filename>postgresql.conf</> is empty (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/hstore</> throw an error when a key or - value is too long to fit in its data structure, rather than - silently truncating it (Andrew Gierth) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to - properly handle the maximum number of parameters (twenty) (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve robustness of <application>libpq</>'s code to recover - from errors during <command>COPY FROM STDIN</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid including conflicting readline and editline header files - when both libraries are installed (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009l - for DST law changes in Bangladesh, Egypt, Jordan, Pakistan, - Argentina/San_Luis, Cuba, Jordan (historical correction only), - Mauritius, Morocco, Palestine, Syria, Tunisia. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-13"> - <title>Release 8.2.13</title> - - <formalpara> - <title>Release date:</title> - <para>2009-03-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.12. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.13</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.11, - see <xref linkend="release-8-2-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent error recursion crashes when encoding conversion fails (Tom) - </para> - - <para> - This change extends fixes made in the last two minor releases for - related failure scenarios. The previous fixes were narrowly tailored - for the original problem reports, but we have now recognized that - <emphasis>any</> error thrown by an encoding conversion function could - potentially lead to infinite recursion while trying to report the - error. The solution therefore is to disable translation and encoding - conversion and report the plain-ASCII form of any error message, - if we find we have gotten into a recursive error reporting situation. - (CVE-2009-0922) - </para> - </listitem> - - <listitem> - <para> - Disallow <command>CREATE CONVERSION</> with the wrong encodings - for the specified conversion function (Heikki) - </para> - - <para> - This prevents one possible scenario for encoding conversion failure. - The previous change is a backstop to guard against other kinds of - failures in the same area. - </para> - </listitem> - - <listitem> - <para> - Fix core dump when <function>to_char()</> is given format codes that - are inappropriate for the type of the data argument (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible failure in <filename>contrib/tsearch2</> when C locale is - used with a multi-byte encoding (Teodor) - </para> - - <para> - Crashes were possible on platforms where <type>wchar_t</> is narrower - than <type>int</>; Windows in particular. - </para> - </listitem> - - <listitem> - <para> - Fix extreme inefficiency in <filename>contrib/tsearch2</> parser's - handling of an email-like string containing multiple <literal>@</> - characters (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix decompilation of <literal>CASE WHEN</> with an implicit coercion - (Tom) - </para> - - <para> - This mistake could lead to Assert failures in an Assert-enabled build, - or an <quote>unexpected CASE WHEN clause</> error message in other - cases, when trying to examine or dump a view. - </para> - </listitem> - - <listitem> - <para> - Fix possible misassignment of the owner of a TOAST table's rowtype (Tom) - </para> - - <para> - If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</> - were executed by someone other than the table owner, the - <structname>pg_type</> entry for the table's TOAST table would end up - marked as owned by that someone. This caused no immediate problems, - since the permissions on the TOAST rowtype aren't examined by any - ordinary database operation. However, it could lead to unexpected - failures if one later tried to drop the role that issued the command - (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</> - warnings from <application>pg_dump</> after having done so (in 8.3). - </para> - </listitem> - - <listitem> - <para> - Fix PL/pgSQL to not treat <literal>INTO</> after <command>INSERT</> as - an INTO-variables clause anywhere in the string, not only at the start; - in particular, don't fail for <command>INSERT INTO</> within - <command>CREATE RULE</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Clean up PL/pgSQL error status variables fully at block exit - (Ashesh Vashi and Dave Page) - </para> - - <para> - This is not a problem for PL/pgSQL itself, but the omission could cause - the PL/pgSQL Debugger to crash while examining the state of a function. - </para> - </listitem> - - <listitem> - <para> - Retry failed calls to <function>CallNamedPipe()</> on Windows - (Steve Marshall, Magnus) - </para> - - <para> - It appears that this function can sometimes fail transiently; - we previously treated any failure as a hard error, which could - confuse <command>LISTEN</>/<command>NOTIFY</> as well as other - operations. - </para> - </listitem> - - <listitem> - <para> - Add <literal>MUST</> (Mauritius Island Summer Time) to the default list - of known timezone abbreviations (Xavier Bugaud) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-12"> - <title>Release 8.2.12</title> - - <formalpara> - <title>Release date:</title> - <para>2009-02-02</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.11. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.12</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.11, - see <xref linkend="release-8-2-11">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Improve handling of URLs in <function>headline()</> function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Improve handling of overlength headlines in <function>headline()</> - function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Prevent possible Assert failure or misconversion if an encoding - conversion is created with the wrong conversion function for the - specified pair of encodings (Tom, Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix possible Assert failure if a statement executed in PL/pgSQL is - rewritten into another kind of statement, for example if an - <command>INSERT</> is rewritten into an <command>UPDATE</> (Heikki) - </para> - </listitem> - - <listitem> - <para> - Ensure that a snapshot is available to datatype input functions (Tom) - </para> - - <para> - This primarily affects domains that are declared with <literal>CHECK</> - constraints involving user-defined stable or immutable functions. Such - functions typically fail if no snapshot has been set. - </para> - </listitem> - - <listitem> - <para> - Make it safer for SPI-using functions to be used within datatype I/O; - in particular, to be used in domain check constraints (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid unnecessary locking of small tables in <command>VACUUM</> - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix a problem that made <literal>UPDATE RETURNING tableoid</> - return zero instead of the correct OID (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner misestimation of selectivity when transitive equality - is applied to an outer-join clause (Tom) - </para> - - <para> - This could result in bad plans for queries like - <literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</> - </para> - </listitem> - - <listitem> - <para> - Improve optimizer's handling of long <literal>IN</> lists (Tom) - </para> - - <para> - This change avoids wasting large amounts of time on such lists - when constraint exclusion is enabled. - </para> - </listitem> - - <listitem> - <para> - Ensure that the contents of a holdable cursor don't depend on the - contents of TOAST tables (Tom) - </para> - - <para> - Previously, large field values in a cursor result might be represented - as TOAST pointers, which would fail if the referenced table got dropped - before the cursor is read, or if the large value is deleted and then - vacuumed away. This cannot happen with an ordinary cursor, - but it could with a cursor that is held past its creating transaction. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak when a set-returning function is terminated without - reading its whole result (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</>'s - <function>dblink_get_result(text,bool)</> function (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix possible garbage output from <filename>contrib/sslinfo</> functions - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>configure</> script to properly report failure when - unable to obtain linkage information for PL/Perl (Andrew) - </para> - </listitem> - - <listitem> - <para> - Make all documentation reference <literal>pgsql-bugs</> and/or - <literal>pgsql-hackers</> as appropriate, instead of the - now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</> - mailing lists (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009a (for - Kathmandu and historical DST corrections in Switzerland, Cuba) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-11"> - <title>Release 8.2.11</title> - - <formalpara> - <title>Release date:</title> - <para>2008-11-03</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.10. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.11</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.7, - see <xref linkend="release-8-2-7">. Also, if you were running a previous - 8.2.X release, it is recommended to <command>REINDEX</> all GiST - indexes after the upgrade. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix GiST index corruption due to marking the wrong index entry - <quote>dead</> after a deletion (Teodor) - </para> - - <para> - This would result in index searches failing to find rows they - should have found. Corrupted indexes can be fixed with - <command>REINDEX</>. - </para> - </listitem> - - <listitem> - <para> - Fix backend crash when the client encoding cannot represent a localized - error message (Tom) - </para> - - <para> - We have addressed similar issues before, but it would still fail if - the <quote>character has no equivalent</> message itself couldn't - be converted. The fix is to disable localization and send the plain - ASCII error message when we detect such a situation. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash when deeply nested functions are invoked from - a trigger (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve optimization of <replaceable>expression</> <literal>IN</> - (<replaceable>expression-list</>) queries (Tom, per an idea from Robert - Haas) - </para> - - <para> - Cases in which there are query variables on the right-hand side had been - handled less efficiently in 8.2.x and 8.3.x than in prior versions. - The fix restores 8.1 behavior for such cases. - </para> - </listitem> - - <listitem> - <para> - Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears - in a function call in <literal>FROM</>, a multi-row <literal>VALUES</> - list, or a <literal>RETURNING</> list (Tom) - </para> - - <para> - The usual symptom of this problem is an <quote>unrecognized node type</> - error. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak during rescan of a hashed aggregation plan (Neil) - </para> - </listitem> - - <listitem> - <para> - Ensure an error is reported when a newly-defined PL/pgSQL trigger - function is invoked as a normal function (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent possible collision of <structfield>relfilenode</> numbers - when moving a table to another tablespace with <command>ALTER SET - TABLESPACE</> (Heikki) - </para> - - <para> - The command tried to re-use the existing filename, instead of - picking one that is known unused in the destination directory. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect tsearch2 headline generation when single query - item matches first word of text (Sushant Sinha) - </para> - </listitem> - - <listitem> - <para> - Fix improper display of fractional seconds in interval values when - using a non-ISO datestyle in an <option>--enable-integer-datetimes</> - build (Ron Mayer) - </para> - </listitem> - - <listitem> - <para> - Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</> - behave correctly when the passed tuple and tuple descriptor have - different numbers of columns (Tom) - </para> - - <para> - This situation is normal when a table has had columns added or removed, - but these two functions didn't handle it properly. - The only likely consequence is an incorrect error indication. - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix recent breakage of <literal>pg_ctl restart</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure <filename>pg_control</> is opened in binary mode - (Itagaki Takahiro) - </para> - - <para> - <application>pg_controldata</> and <application>pg_resetxlog</> - did this incorrectly, and so could fail on Windows. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008i (for - DST law changes in Argentina, Brazil, Mauritius, Syria) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-10"> - <title>Release 8.2.10</title> - - <formalpara> - <title>Release date:</title> - <para>2008-09-22</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.9. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.10</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.7, - see <xref linkend="release-8-2-7">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix bug in btree WAL recovery code (Heikki) - </para> - - <para> - Recovery failed if the WAL ended partway through a page split operation. - </para> - </listitem> - - <listitem> - <para> - Fix potential miscalculation of <structfield>datfrozenxid</> (Alvaro) - </para> - - <para> - This error may explain some recent reports of failure to remove old - <structname>pg_clog</> data. - </para> - </listitem> - - <listitem> - <para> - Widen local lock counters from 32 to 64 bits (Tom) - </para> - - <para> - This responds to reports that the counters could overflow in - sufficiently long transactions, leading to unexpected <quote>lock is - already held</> errors. - </para> - </listitem> - - <listitem> - <para> - Fix possible duplicate output of tuples during a GiST index scan (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix missed permissions checks when a view contains a simple - <literal>UNION ALL</> construct (Heikki) - </para> - - <para> - Permissions for the referenced tables were checked properly, but not - permissions for the view itself. - </para> - </listitem> - - <listitem> - <para> - Add checks in executor startup to ensure that the tuples produced by an - <command>INSERT</> or <command>UPDATE</> will match the target table's - current rowtype (Tom) - </para> - - <para> - <command>ALTER COLUMN TYPE</>, followed by re-use of a previously - cached plan, could produce this type of situation. The check protects - against data corruption and/or crashes that could ensue. - </para> - </listitem> - - <listitem> - <para> - Fix possible repeated drops during <command>DROP OWNED</> (Tom) - </para> - - <para> - This would typically result in strange errors such as <quote>cache - lookup failed for relation NNN</>. - </para> - </listitem> - - <listitem> - <para> - Fix <literal>AT TIME ZONE</> to first try to interpret its timezone - argument as a timezone abbreviation, and only try it as a full timezone - name if that fails, rather than the other way around as formerly (Tom) - </para> - - <para> - The timestamp input functions have always resolved ambiguous zone names - in this order. Making <literal>AT TIME ZONE</> do so as well improves - consistency, and fixes a compatibility bug introduced in 8.1: - in ambiguous cases we now behave the same as 8.0 and before did, - since in the older versions <literal>AT TIME ZONE</> accepted - <emphasis>only</> abbreviations. - </para> - </listitem> - - <listitem> - <para> - Fix datetime input functions to correctly detect integer overflow when - running on a 64-bit platform (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent integer overflows during units conversion when displaying a - configuration parameter that has units (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve performance of writing very long log messages to syslog (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow spaces in the suffix part of an LDAP URL in - <filename>pg_hba.conf</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT - ON</> query (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner bug with nested sub-select expressions (Tom) - </para> - - <para> - If the outer sub-select has no direct dependency on the parent query, - but the inner one does, the outer value might not get recalculated - for new parent query rows. - </para> - </listitem> - - <listitem> - <para> - Fix planner to estimate that <literal>GROUP BY</> expressions yielding - boolean results always result in two groups, regardless of the - expressions' contents (Tom) - </para> - - <para> - This is very substantially more accurate than the regular <literal>GROUP - BY</> estimate for certain boolean tests like <replaceable>col</> - <literal>IS NULL</>. - </para> - </listitem> - - <listitem> - <para> - Fix PL/pgSQL to not fail when a <literal>FOR</> loop's target variable - is a record containing composite-type fields (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful - about the encoding of data sent to or from Tcl (Tom) - </para> - </listitem> - - <listitem> - <para> - On Windows, work around a Microsoft bug by preventing - <application>libpq</> from trying to send more than 64kB per system call - (Magnus) - </para> - </listitem> - - <listitem> - <para> - Improve <application>pg_dump</> and <application>pg_restore</>'s - error reporting after failure to send a SQL command (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to properly preserve postmaster - command-line arguments across a <literal>restart</> (Bruce) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008f (for - DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, - Pakistan, Palestine, and Paraguay) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-9"> - <title>Release 8.2.9</title> - - <formalpara> - <title>Release date:</title> - <para>2008-06-12</para> - </formalpara> - - <para> - This release contains one serious and one minor bug fix over 8.2.8. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.9</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.7, - see <xref linkend="release-8-2-7">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom) - </para> - - <para> - Before this fix, a negative constant in a view or rule might be dumped - as, say, <literal>-42::integer</>, which is subtly incorrect: it should - be <literal>(-42)::integer</> due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - <productname>PostgreSQL</> to reject what had been a valid - <command>SELECT DISTINCT</> view query. Since this could result in - <application>pg_dump</> output failing to reload, it is being treated - as a high-priority fix. The only released versions in which dump - output is actually incorrect are 8.3.1 and 8.2.7. - </para> - </listitem> - - <listitem> - <para> - Make <command>ALTER AGGREGATE ... OWNER TO</> update - <structname>pg_shdepend</> (Tom) - </para> - - <para> - This oversight could lead to problems if the aggregate was later - involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</> - operation. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-8"> - <title>Release 8.2.8</title> - - <formalpara> - <title>Release date:</title> - <para>never released</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.7. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.8</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.7, - see <xref linkend="release-8-2-7">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that - occurred on Windows when using UTF-8 database encoding and a different - client encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new - column is correctly checked to see if it's been initialized to all - non-nulls (Brendan Jurd) - </para> - - <para> - Previous versions neglected to check this requirement at all. - </para> - </listitem> - - <listitem> - <para> - Fix possible <command>CREATE TABLE</> failure when inheriting the - <quote>same</> constraint from multiple parent relations that - inherited that constraint from a common ancestor (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <function>pg_get_ruledef()</> to show the alias, if any, attached - to the target table of an <command>UPDATE</> or <command>DELETE</> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix GIN bug that could result in a <literal>too many LWLocks - taken</literal> failure (Teodor) - </para> - </listitem> - - <listitem> - <para> - Avoid possible crash when decompressing corrupted data - (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Repair two places where SIGTERM exit of a backend could leave corrupted - state in shared memory (Tom) - </para> - - <para> - Neither case is very important if SIGTERM is used to shut down the - whole database cluster together, but there was a problem if someone - tried to SIGTERM individual backends. - </para> - </listitem> - - <listitem> - <para> - Fix conversions between ISO-8859-5 and other encodings to handle - Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with - two dots) (Sergey Burladyan) - </para> - </listitem> - - <listitem> - <para> - Fix several datatype input functions, notably <function>array_in()</>, - that were allowing unused bytes in their results to contain - uninitialized, unpredictable values (Tom) - </para> - - <para> - This could lead to failures in which two apparently identical literal - values were not seen as equal, resulting in the parser complaining - about unmatched <literal>ORDER BY</> and <literal>DISTINCT</> - expressions. - </para> - </listitem> - - <listitem> - <para> - Fix a corner case in regular-expression substring matching - (<literal>substring(<replaceable>string</> from - <replaceable>pattern</>)</literal>) (Tom) - </para> - - <para> - The problem occurs when there is a match to the pattern overall but - the user has specified a parenthesized subexpression and that - subexpression hasn't got a match. An example is - <literal>substring('foo' from 'foo(bar)?')</>. - This should return NULL, since <literal>(bar)</> isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - <literal>foo</>). - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008c (for - DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and - Argentina/San_Luis) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect result from <application>ecpg</>'s - <function>PGTYPEStimestamp_sub()</> function (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix broken GiST comparison function for <filename>contrib/tsearch2</>'s - <type>tsquery</> type (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes in <filename>contrib/cube</> functions (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix core dump in <filename>contrib/xml2</>'s - <function>xpath_table()</> function when the input query returns a - NULL value (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</>'s makefile to not override - <literal>CFLAGS</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</> - 4.3 (Tom) - </para> - - <para> - This problem affects <quote>old style</> (V0) C functions that - return boolean. The fix is already in 8.3, but the need to - back-patch it was not realized at the time. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-7"> - <title>Release 8.2.7</title> - - <formalpara> - <title>Release date:</title> - <para>2008-03-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.6. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.7</title> - - <para> - A dump/restore is not required for those running 8.2.X. - However, you might need to <command>REINDEX</> indexes on textual - columns after updating, if you are affected by the Windows locale - issue described below. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix character string comparison for Windows locales that consider - different character combinations as equal (Tom) - </para> - - <para> - This fix applies only on Windows and only when using UTF-8 - database encoding. The same fix was made for all other cases - over two years ago, but Windows with UTF-8 uses a separate code - path that was not updated. If you are using a locale that - considers some non-identical strings as equal, you may need to - <command>REINDEX</> to fix existing indexes on textual columns. - </para> - </listitem> - - <listitem> - <para> - Repair potential deadlock between concurrent <command>VACUUM FULL</> - operations on different system catalogs (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix longstanding <command>LISTEN</>/<command>NOTIFY</> - race condition (Tom) - </para> - - <para> - In rare cases a session that had just executed a - <command>LISTEN</> might not get a notification, even though - one would be expected because the concurrent transaction executing - <command>NOTIFY</> was observed to commit later. - </para> - - <para> - A side effect of the fix is that a transaction that has executed - a not-yet-committed <command>LISTEN</> command will not see any - row in <structname>pg_listener</> for the <command>LISTEN</>, - should it choose to look; formerly it would have. This behavior - was never documented one way or the other, but it is possible that - some applications depend on the old behavior. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>LISTEN</> and <command>UNLISTEN</> within a - prepared transaction (Tom) - </para> - - <para> - This was formerly allowed but trying to do it had various unpleasant - consequences, notably that the originating backend could not exit - as long as an <command>UNLISTEN</> remained uncommitted. - </para> - </listitem> - - <listitem> - <para> - Disallow dropping a temporary table within a - prepared transaction (Heikki) - </para> - - <para> - This was correctly disallowed by 8.1, but the check was inadvertently - broken in 8.2. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash when an error occurs during a query using a hash index - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix memory leaks in certain usages of set-returning functions (Neil) - </para> - </listitem> - - <listitem> - <para> - Fix input of datetime values for February 29 in years BC (Tom) - </para> - - <para> - The former coding was mistaken about which years were leap years. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>unrecognized node type</> error in some variants of - <command>ALTER OWNER</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure <structname>pg_stat_activity</>.<structfield>waiting</> flag - is cleared when a lock wait is aborted (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix handling of process permissions on Windows Vista (Dave, Magnus) - </para> - - <para> - In particular, this fix allows starting the server as the Administrator - user. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008a - (in particular, recent Chile changes); adjust timezone abbreviation - <literal>VET</> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to correctly extract the postmaster's port - number from command-line options (Itagaki Takahiro, Tom) - </para> - - <para> - Previously, <literal>pg_ctl start -w</> could try to contact the - postmaster on the wrong port, leading to bogus reports of startup - failure. - </para> - </listitem> - - <listitem> - <para> - Use <option>-fwrapv</> to defend against possible misoptimization - in recent <application>gcc</> versions (Tom) - </para> - - <para> - This is known to be necessary when building <productname>PostgreSQL</> - with <application>gcc</> 4.3 or later. - </para> - </listitem> - - - <listitem> - <para> - Correctly enforce <varname>statement_timeout</> values longer - than <literal>INT_MAX</> microseconds (about 35 minutes) (Tom) - </para> - - <para> - This bug affects only builds with <option>--enable-integer-datetimes</>. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>unexpected PARAM_SUBLINK ID</> planner error when - constant-folding simplifies a sub-select (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix logical errors in constraint-exclusion handling of <literal>IS - NULL</> and <literal>NOT</> expressions (Tom) - </para> - - <para> - The planner would sometimes exclude partitions that should not - have been excluded because of the possibility of NULL results. - </para> - </listitem> - - <listitem> - <para> - Fix another cause of <quote>failed to build any N-way joins</> - planner errors (Tom) - </para> - - <para> - This could happen in cases where a clauseless join needed to be - forced before a join clause could be exploited. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect constant propagation in outer-join planning (Tom) - </para> - - <para> - The planner could sometimes incorrectly conclude that a variable - could be constrained to be equal to a constant, leading - to wrong query results. - </para> - </listitem> - - <listitem> - <para> - Fix display of constant expressions in <literal>ORDER BY</> - and <literal>GROUP BY</> (Tom) - </para> - - <para> - An explicitly casted constant would be shown incorrectly. This could - for example lead to corruption of a view definition during - dump and reload. - </para> - </listitem> - - <listitem> - <para> - Fix <application>libpq</> to handle NOTICE messages correctly - during COPY OUT (Tom) - </para> - - <para> - This failure has only been observed to occur when a user-defined - datatype's output routine issues a NOTICE, but there is no - guarantee it couldn't happen due to other causes. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-6"> - <title>Release 8.2.6</title> - - <formalpara> - <title>Release date:</title> - <para>2008-01-07</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.5, - including fixes for significant security issues. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.6</title> - - <para> - A dump/restore is not required for those running 8.2.X. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent functions in indexes from executing with the privileges of - the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom) - </para> - - <para> - Functions used in index expressions and partial-index - predicates are evaluated whenever a new table entry is made. It has - long been understood that this poses a risk of trojan-horse code - execution if one modifies a table owned by an untrustworthy user. - (Note that triggers, defaults, check constraints, etc. pose the - same type of risk.) But functions in indexes pose extra danger - because they will be executed by routine maintenance operations - such as <command>VACUUM FULL</>, which are commonly performed - automatically under a superuser account. For example, a nefarious user - can execute code with superuser privileges by setting up a - trojan-horse index definition and waiting for the next routine vacuum. - The fix arranges for standard maintenance operations - (including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>, - and <command>CLUSTER</>) to execute as the table owner rather than - the calling user, using the same privilege-switching mechanism already - used for <literal>SECURITY DEFINER</> functions. To prevent bypassing - this security measure, execution of <command>SET SESSION - AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a - <literal>SECURITY DEFINER</> context. (CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Repair assorted bugs in the regular-expression package (Tom, Will Drewry) - </para> - - <para> - Suitably crafted regular-expression patterns could cause crashes, - infinite or near-infinite looping, and/or massive memory consumption, - all of which pose denial-of-service hazards for applications that - accept regex search patterns from untrustworthy sources. - (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</> to use only - password authentication, as a security measure (Joe) - </para> - - <para> - The fix that appeared for this in 8.2.5 was incomplete, as it plugged - the hole for only some <filename>dblink</> functions. (CVE-2007-6601, - CVE-2007-3278) - </para> - </listitem> - - <listitem> - <para> - Fix bugs in WAL replay for GIN indexes (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix GIN index build to work properly when - <varname>maintenance_work_mem</> is 4GB or more (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2007k - (in particular, recent Argentina changes) (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve planner's handling of LIKE/regex estimation in non-C locales - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planning-speed problem for deep outer-join nests, as well as - possible poor choice of join order (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner failure in some cases of <literal>WHERE false AND var IN - (SELECT ...)</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <command>CREATE TABLE ... SERIAL</> and - <command>ALTER SEQUENCE ... OWNED BY</> not change the - <function>currval()</> state of the sequence (Tom) - </para> - </listitem> - - <listitem> - <para> - Preserve the tablespace and storage parameters of indexes that are - rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Make archive recovery always start a new WAL timeline, rather than only - when a recovery stop time was used (Simon) - </para> - - <para> - This avoids a corner-case risk of trying to overwrite an existing - archived copy of the last WAL segment, and seems simpler and cleaner - than the original definition. - </para> - </listitem> - - <listitem> - <para> - Make <command>VACUUM</> not use all of <varname>maintenance_work_mem</> - when the table is too small for it to be useful (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Fix potential crash in <function>translate()</> when using a multibyte - database encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <function>corr()</> return the correct result for negative - correlation values (Neil) - </para> - </listitem> - - <listitem> - <para> - Fix overflow in <literal>extract(epoch from interval)</> for intervals - exceeding 68 years (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Perl to not fail when a UTF-8 regular expression is used - in a trusted function (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Perl to cope when platform's Perl defines type <literal>bool</> - as <literal>int</> rather than <literal>char</> (Tom) - </para> - - <para> - While this could theoretically happen anywhere, no standard build of - Perl did things this way ... until <productname>Mac OS X</> 10.5. - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python to work correctly with Python 2.5 on 64-bit machines - (Marko Kreen) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python to not crash on long exception messages (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_dump</> to correctly handle inheritance child tables - that have default expressions different from their parent's (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>libpq</> crash when <varname>PGPASSFILE</> refers - to a file that is not a plain file (Martin Pitt) - </para> - </listitem> - - <listitem> - <para> - <application>ecpg</> parser fixes (Michael) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/pgcrypto</> defend against - <application>OpenSSL</> libraries that fail on keys longer than 128 - bits; which is the case at least on some Solaris versions (Marko Kreen) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle - NULL rowid as a category in its own right, rather than crashing (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix <type>tsvector</> and <type>tsquery</> output routines to - escape backslashes correctly (Teodor, Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix crash of <function>to_tsvector()</> on huge input strings (Teodor) - </para> - </listitem> - - <listitem> - <para> - Require a specific version of <productname>Autoconf</> to be used - when re-generating the <command>configure</> script (Peter) - </para> - - <para> - This affects developers and packagers only. The change was made - to prevent accidental use of untested combinations of - <productname>Autoconf</> and <productname>PostgreSQL</> versions. - You can remove the version check if you really want to use a - different <productname>Autoconf</> version, but it's - your responsibility whether the result works or not. - </para> - </listitem> - - <listitem> - <para> - Update <function>gettimeofday</> configuration check so that - <productname>PostgreSQL</> can be built on newer versions of - <productname>MinGW</> (Magnus) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-5"> - <title>Release 8.2.5</title> - - <formalpara> - <title>Release date:</title> - <para>2007-09-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.4. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.5</title> - - <para> - A dump/restore is not required for those running 8.2.X. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent index corruption when a transaction inserts rows and - then aborts close to the end of a concurrent <command>VACUUM</> - on the same table (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>ALTER DOMAIN ADD CONSTRAINT</> for cases involving - domains over domains (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix some planner problems with outer joins, notably poor - size estimation for <literal>t1 LEFT JOIN t2 WHERE t2.col IS NULL</> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow the <type>interval</> data type to accept input consisting only of - milliseconds or microseconds (Neil) - </para> - </listitem> - - <listitem> - <para> - Allow timezone name to appear before the year in <type>timestamp</> input (Tom) - </para> - </listitem> - - <listitem> - <para> - Fixes for <acronym>GIN</> indexes used by <filename>/contrib/tsearch2</> (Teodor) - </para> - </listitem> - - <listitem> - <para> - Speed up rtree index insertion (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix excessive logging of <acronym>SSL</> error messages (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix logging so that log messages are never interleaved when using - the syslogger process (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix crash when <varname>log_min_error_statement</> logging runs out - of memory (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect handling of some foreign-key corner cases (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <function>stddev_pop(numeric)</> and <function>var_pop(numeric)</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent <command>REINDEX</> and <command>CLUSTER</> from failing - due to attempting to process temporary tables of other sessions (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Update the time zone database rules, particularly New Zealand's upcoming changes (Tom) - </para> - </listitem> - - <listitem> - <para> - Windows socket and semaphore improvements (Magnus) - </para> - </listitem> - - <listitem> - <para> - Make <command>pg_ctl -w</> work properly in Windows service mode (Dave Page) - </para> - </listitem> - - <listitem> - <para> - Fix memory allocation bug when using <application>MIT Kerberos</> on Windows (Magnus) - </para> - </listitem> - - <listitem> - <para> - Suppress timezone name (<literal>%Z</>) in log timestamps on Windows - because of possible encoding mismatches (Tom) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</> to use only - password authentication, as a security measure (Joe) - </para> - </listitem> - - <listitem> - <para> - Restrict <filename>/contrib/pgstattuple</> functions to superusers, for security reasons (Tom) - </para> - </listitem> - - <listitem> - <para> - Do not let <filename>/contrib/intarray</> try to make its GIN opclass - the default (this caused problems at dump/restore) (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-4"> - <title>Release 8.2.4</title> - - <formalpara> - <title>Release date:</title> - <para>2007-04-23</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.3, - including a security fix. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.4</title> - - <para> - A dump/restore is not required for those running 8.2.X. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Support explicit placement of the temporary-table schema within - <varname>search_path</>, and disable searching it for functions - and operators (Tom) - </para> - - <para> - This is needed to allow a security-definer function to set a - truly secure value of <varname>search_path</>. Without it, - an unprivileged SQL user can use temporary objects to execute code - with the privileges of the security-definer function (CVE-2007-2138). - See <command>CREATE FUNCTION</> for more information. - </para> - </listitem> - - <listitem> - <para> - Fix <varname>shared_preload_libraries</> for Windows - by forcing reload in each backend (Korry Douglas) - </para> - </listitem> - - <listitem> - <para> - Fix <function>to_char()</> so it properly upper/lower cases localized day or month - names (Pavel Stehule) - </para> - </listitem> - - <listitem> - <para> - <filename>/contrib/tsearch2</> crash fixes (Teodor) - </para> - </listitem> - - <listitem> - <para> - Require <command>COMMIT PREPARED</> to be executed in the same - database as the transaction was prepared in (Heikki) - </para> - </listitem> - - <listitem> - <para> - Allow <command>pg_dump</> to do binary backups larger than two gigabytes - on Windows (Magnus) - </para> - </listitem> - - <listitem> - <para> - New traditional (Taiwan) Chinese <acronym>FAQ</> (Zhou Daojing) - </para> - </listitem> - - <listitem> - <para> - Prevent the statistics collector from writing to disk too frequently (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles - <command>UPDATE</> chains (Tom, Pavan Deolasee) - </para> - </listitem> - - <listitem> - <para> - Fix bug in domains that use array types (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <command>pg_dump</> so it can dump a serial column's sequence - using <option>-t</> when not also dumping the owning table - (Tom) - </para> - </listitem> - - <listitem> - <para> - Planner fixes, including improving outer join and bitmap scan - selection logic (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible wrong answers or crash when a PL/pgSQL function tries - to <literal>RETURN</> from within an <literal>EXCEPTION</> block - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PANIC during enlargement of a hash index (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix POSIX-style timezone specs to follow new USA DST rules (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-3"> - <title>Release 8.2.3</title> - - <formalpara> - <title>Release date:</title> - <para>2007-02-07</para> - </formalpara> - - <para> - This release contains two fixes from 8.2.2. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.3</title> - - <para> - A dump/restore is not required for those running 8.2.X. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Remove overly-restrictive check for type length in constraints and - functional indexes(Tom) - </para> - </listitem> - - <listitem> - <para> - Fix optimization so MIN/MAX in subqueries can again use indexes (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-2"> - <title>Release 8.2.2</title> - - <formalpara> - <title>Release date:</title> - <para>2007-02-05</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2.1, including - a security fix. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.2</title> - - <para> - A dump/restore is not required for those running 8.2.X. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Remove security vulnerabilities that allowed connected users - to read backend memory (Tom) - </para> - - <para> - The vulnerabilities involve suppressing the normal check that a SQL - function returns the data type it's declared to, and changing the - data type of a table column (CVE-2007-0555, CVE-2007-0556). These - errors can easily be exploited to cause a backend crash, and in - principle might be used to read database content that the user - should not be able to access. - </para> - </listitem> - - <listitem> - <para> - Fix not-so-rare-anymore bug wherein btree index page splits could fail - due to choosing an infeasible split point (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix Borland C compile scripts (L Bayuk) - </para> - </listitem> - - <listitem> - <para> - Properly handle <function>to_char('CC')</> for years ending in - <literal>00</> (Tom) - </para> - - <para> - Year 2000 is in the twentieth century, not the twenty-first. - </para> - </listitem> - - <listitem> - <para> - <filename>/contrib/tsearch2</> localization improvements (Tatsuo, Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect permission check in - <literal>information_schema.key_column_usage</> view (Tom) - </para> - - <para> - The symptom is <quote>relation with OID nnnnn does not exist</> errors. - To get this fix without using <command>initdb</>, use <command>CREATE OR - REPLACE VIEW</> to install the corrected definition found in - <filename>share/information_schema.sql</>. Note you will need to do - this in each database. - </para> - </listitem> - - <listitem> - <para> - Improve <command>VACUUM</> performance for databases with many tables (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix for rare Assert() crash triggered by <literal>UNION</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix potentially incorrect results from index searches using - <literal>ROW</> inequality conditions (Tom) - </para> - </listitem> - - <listitem> - <para> - Tighten security of multi-byte character processing for UTF8 sequences - over three bytes long (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bogus <quote>permission denied</> failures occurring on Windows - due to attempts to fsync already-deleted files (Magnus, Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug that could cause the statistics collector - to hang on Windows (Magnus) - </para> - - <para> - This would in turn lead to autovacuum not working. - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes when an already-in-use PL/pgSQL function is - updated (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve PL/pgSQL handling of domain types (Sergiy Vyshnevetskiy, Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible errors in processing PL/pgSQL exception blocks (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2-1"> - <title>Release 8.2.1</title> - - <formalpara> - <title>Release date:</title> - <para>2007-01-08</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.2. - For information about new features in the 8.2 major release, see - <xref linkend="release-8-2">. - </para> - - <sect2> - <title>Migration to Version 8.2.1</title> - - <para> - A dump/restore is not required for those running 8.2. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix crash with <literal>SELECT</> ... <literal>LIMIT ALL</> (also - <literal>LIMIT NULL</>) (Tom) - </para> - </listitem> - - <listitem> - <para> - <filename>Several /contrib/tsearch2</> fixes (Teodor) - </para> - </listitem> - - <listitem> - <para> - On Windows, make log messages coming from the operating system use - <acronym>ASCII</> encoding (Hiroshi Saito) - </para> - - <para> - This fixes a conversion problem when there is a mismatch between - the encoding of the operating system and database server. - </para> - </listitem> - - <listitem> - <para> - Fix Windows linking of <application>pg_dump</> using - <filename>win32.mak</> - (Hiroshi Saito) - </para> - </listitem> - - <listitem> - <para> - Fix planner mistakes for outer join queries (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix several problems in queries involving sub-SELECTs (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix potential crash in SPI during subtransaction abort (Tom) - </para> - - <para> - This affects all PL functions since they all use SPI. - </para> - </listitem> - - <listitem> - <para> - Improve build speed of <acronym>PDF</> documentation (Peter) - </para> - </listitem> - - <listitem> - <para> - Re-add <acronym>JST</> (Japan) timezone abbreviation (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve optimization decisions related to index scans (Tom) - </para> - </listitem> - - <listitem> - <para> - Have <application>psql</> print multi-byte combining characters as - before, rather than output as <literal>\u</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve index usage of regular expressions that use parentheses (Tom) - </para> - - <para> - This improves <application>psql</> <literal>\d</> performance also. - </para> - </listitem> - - <listitem> - <para> - Make <application>pg_dumpall</> assume that databases have public - <literal>CONNECT</> privilege, when dumping from a pre-8.2 server (Tom) - </para> - - <para> - This preserves the previous behavior that anyone can connect to a - database if allowed by <filename>pg_hba.conf</>. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-2"> - <title>Release 8.2</title> - - <formalpara> - <title>Release date:</title> - <para>2006-12-05</para> - </formalpara> - - <sect2> - <title>Overview</title> - - <para> - This release adds many functionality and performance improvements that - were requested by users, including: - - <itemizedlist> - - <listitem> - <para> - Query language enhancements including <command>INSERT/UPDATE/DELETE - RETURNING</command>, multirow <literal>VALUES</literal> lists, and - optional target-table alias in - <command>UPDATE</>/<command>DELETE</command> - </para> - </listitem> - - <listitem> - <para> - Index creation without blocking concurrent - <command>INSERT</>/<command>UPDATE</>/<command>DELETE</> - operations - </para> - </listitem> - - <listitem> - <para> - Many query optimization improvements, including support for - reordering outer joins - </para> - </listitem> - - <listitem> - <para> - Improved sorting performance with lower memory usage - </para> - </listitem> - - <listitem> - <para> - More efficient locking with better concurrency - </para> - </listitem> - - <listitem> - <para> - More efficient vacuuming - </para> - </listitem> - - <listitem> - <para> - Easier administration of warm standby servers - </para> - </listitem> - - <listitem> - <para> - New <literal>FILLFACTOR</literal> support for tables and indexes - </para> - </listitem> - - <listitem> - <para> - Monitoring, logging, and performance tuning additions - </para> - </listitem> - - <listitem> - <para> - More control over creating and dropping objects - </para> - </listitem> - - <listitem> - <para> - Table inheritance relationships can be defined - for and removed from pre-existing tables - </para> - </listitem> - - <listitem> - <para> - <command>COPY TO</command> can copy the output of an arbitrary - <command>SELECT</command> statement - </para> - </listitem> - - <listitem> - <para> - Array improvements, including nulls in arrays - </para> - </listitem> - - <listitem> - <para> - Aggregate-function improvements, including multiple-input - aggregates and SQL:2003 statistical functions - </para> - </listitem> - - <listitem> - <para> - Many <filename>contrib/</filename> improvements - </para> - </listitem> - - </itemizedlist> - - </para> - - </sect2> - - <sect2> - <title>Migration to Version 8.2</title> - - <para> - A dump/restore using <application>pg_dump</application> is - required for those wishing to migrate data from any previous - release. - </para> - - <para> - Observe the following incompatibilities: - </para> - - <itemizedlist> - - <listitem> - <para> - Set <link - linkend="guc-escape-string-warning"><varname>escape_string_warning</></link> - to <literal>on</> by default (Bruce) - </para> - - <para> - This issues a warning if backslash escapes are used in - <link linkend="sql-syntax-strings">non-escape (non-<literal>E''</>) - strings</link>. - </para> - </listitem> - - <listitem> - <para> - Change the <link linkend="sql-syntax-row-constructors">row - constructor syntax</link> (<literal>ROW(...)</>) so that - list elements <literal>foo.*</> will be expanded to a list - of their member fields, rather than creating a nested - row type field as formerly (Tom) - </para> - - <para> - The new behavior is substantially more useful since it - allows, for example, triggers to check for data changes - with <literal>IF row(new.*) IS DISTINCT FROM row(old.*)</>. - The old behavior is still available by omitting <literal>.*</>. - </para> - </listitem> - - <listitem> - <para> - Make <link linkend="row-wise-comparison">row comparisons</link> - follow <acronym>SQL</> standard semantics and allow them - to be used in index scans (Tom) - </para> - - <para> - Previously, row = and <> comparisons followed the - standard but < <= > >= did not. A row comparison - can now be used as an index constraint for a multicolumn - index matching the row value. - </para> - </listitem> - - <listitem> - <para> - Make <link linkend="functions-comparison">row <literal>IS <optional>NOT</> NULL</literal></link> - tests follow <acronym>SQL</> standard semantics (Tom) - </para> - - <para> - The former behavior conformed to the standard for simple cases - with <literal>IS NULL</>, but <literal>IS NOT NULL</> would return - true if any row field was non-null, whereas the standard says it - should return true only when all fields are non-null. - </para> - </listitem> - - <listitem> - <para> - Make <link linkend="SQL-SET-CONSTRAINTS"><command>SET - CONSTRAINT</></link> affect only one constraint (Kris Jurka) - </para> - - <para> - In previous releases, <command>SET CONSTRAINT</> modified - all constraints with a matching name. In this release, - the schema search path is used to modify only the first - matching constraint. A schema specification is also - supported. This more nearly conforms to the SQL standard. - </para> - </listitem> - - <listitem> - <para> - Remove <literal>RULE</> permission for tables, for security reasons - (Tom) - </para> - - <para> - As of this release, only a table's owner can create or modify - rules for the table. For backwards compatibility, - <command>GRANT</>/<command>REVOKE RULE</> is still accepted, - but it does nothing. - </para> - </listitem> - - <listitem> - <para> - Array comparison improvements (Tom) - </para> - - <para> - Now array dimensions are also compared. - </para> - </listitem> - - <listitem> - <para> - Change <link linkend="functions-array">array concatenation</link> - to match documented behavior (Tom) - </para> - - <para> - This changes the previous behavior where concatenation - would modify the array lower bound. - </para> - </listitem> - - <listitem> - <para> - Make command-line options of <application>postmaster</> - and <link linkend="app-postgres"><application>postgres</></link> - identical (Peter) - </para> - - <para> - This allows the postmaster to pass arguments to each backend - without using <literal>-o</>. Note that some options are now - only available as long-form options, because there were conflicting - single-letter options. - </para> - </listitem> - - <listitem> - <para> - Deprecate use of <application>postmaster</> symbolic link (Peter) - </para> - - <para> - <application>postmaster</> and <application>postgres</> - commands now act identically, with the behavior determined - by command-line options. The <application>postmaster</> symbolic link is - kept for compatibility, but is not really needed. - </para> - </listitem> - - <listitem> - <para> - Change <link - linkend="guc-log-duration"><varname>log_duration</></link> - to output even if the query is not output (Tom) - </para> - - <para> - In prior releases, <varname>log_duration</> only printed if - the query appeared earlier in the log. - </para> - </listitem> - - <listitem> - <para> - Make <link - linkend="functions-formatting"><function>to_char(time)</></link> - and <link - linkend="functions-formatting"><function>to_char(interval)</></link> - treat <literal>HH</> and <literal>HH12</> as 12-hour - intervals - </para> - - <para> - Most applications should use <literal>HH24</> unless they - want a 12-hour display. - </para> - </listitem> - - <listitem> - <para> - Zero unmasked bits in conversion from <link - linkend="datatype-inet"><type>INET</></link> to <link - linkend="datatype-inet"><type>CIDR</></link> (Tom) - </para> - - <para> - This ensures that the converted value is actually valid for - <type>CIDR</>. - </para> - </listitem> - - <listitem> - <para> - Remove <varname>australian_timezones</> configuration variable - (Joachim Wieland) - </para> - - <para> - This variable has been superseded by a more general facility - for configuring timezone abbreviations. - </para> - </listitem> - - <listitem> - <para> - Improve cost estimation for nested-loop index scans (Tom) - </para> - - <para> - This might eliminate the need to set unrealistically small - values of <link - linkend="guc-random-page-cost"><varname>random_page_cost</></link>. - If you have been using a very small <varname>random_page_cost</>, - please recheck your test cases. - </para> - </listitem> - - <listitem> - <para> - Change behavior of <command>pg_dump</> <literal>-n</> and - <literal>-t</> options. (Greg Sabino Mullane) - </para> - <para> - See the <command>pg_dump</> manual page for details. - </para> - </listitem> - - <listitem> - <para> - Change <link linkend="libpq"><application>libpq</></link> - <function>PQdsplen()</> to return a useful value (Martijn - van Oosterhout) - </para> - </listitem> - - <listitem> - <para> - Declare <link linkend="libpq"><application>libpq</></link> - <function>PQgetssl()</> as returning <literal>void *</>, - rather than <literal>SSL *</> (Martijn van Oosterhout) - </para> - - <para> - This allows applications to use the function without including - the OpenSSL headers. - </para> - </listitem> - - <listitem> - <para> - C-language loadable modules must now include a - <link linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</></link> - macro call for version compatibility checking - (Martijn van Oosterhout) - </para> - </listitem> - - <listitem> - <para> - For security's sake, modules used by a PL/PerlU function are no - longer available to PL/Perl functions (Andrew) - </para> - <note> - <para> - This also implies that data can no longer be shared between a PL/Perl - function and a PL/PerlU function. - Some Perl installations have not been compiled with the correct flags - to allow multiple interpreters to exist within a single process. - In this situation PL/Perl and PL/PerlU cannot both be used in a - single backend. The solution is to get a Perl installation which - supports multiple interpreters. - </para> - </note> - </listitem> - - <listitem> - <para> - In <filename>contrib/xml2/</>, rename <function>xml_valid()</> to - <function>xml_is_well_formed()</> (Tom) - </para> - - <para> - <function>xml_valid()</> will remain for backward compatibility, - but its behavior will change to do schema checking in a future - release. - </para> - </listitem> - - <listitem> - <para> - Remove <filename>contrib/ora2pg/</>, now at <ulink - url="http://www.samse.fr/GPL/ora2pg"></ulink> - </para> - </listitem> - - <listitem> - <para> - Remove contrib modules that have been migrated to PgFoundry: - <filename>adddepend</>, <filename>dbase</>, <filename>dbmirror</>, - <filename>fulltextindex</>, <filename>mac</>, <filename>userlock</> - </para> - </listitem> - - <listitem> - <para> - Remove abandoned contrib modules: - <filename>mSQL-interface</>, <filename>tips</> - </para> - </listitem> - - <listitem> - <para> - Remove <acronym>QNX</> and <acronym>BEOS</> ports (Bruce) - </para> - - <para> - These ports no longer had active maintainers. - </para> - </listitem> - - </itemizedlist> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - Below you will find a detailed account of the - changes between <productname>PostgreSQL</productname> 8.2 and - the previous major release. - </para> - - <sect3> - <title>Performance Improvements</title> - <itemizedlist> - - <listitem> - <para> - Allow the planner to reorder <link linkend="queries-join">outer - joins</link> in some circumstances (Tom) - </para> - - <para> - In previous releases, outer joins would always be evaluated in - the order written in the query. This change allows the - query optimizer to consider reordering outer joins, in cases where - it can determine that the join order can be changed without - altering the meaning of the query. This can make a - considerable performance difference for queries involving - multiple outer joins or mixed inner and outer joins. - </para> - </listitem> - - <listitem> - <para> - Improve efficiency of <link - linkend="functions-comparisons"><literal>IN</> - (list-of-expressions)</link> clauses (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve sorting speed and reduce memory usage (Simon, Tom) - </para> - </listitem> - - <listitem> - <para> - Improve subtransaction performance (Alvaro, Itagaki Takahiro, - Tom) - </para> - </listitem> - - <listitem> - <para> - Add <literal>FILLFACTOR</> to <link - linkend="SQL-CREATETABLE">table</link> and <link - linkend="SQL-CREATEINDEX">index</link> creation (ITAGAKI - Takahiro) - </para> - - <para> - This leaves extra free space in each table or index page, - allowing improved performance as the database grows. This - is particularly valuable to maintain clustering. - </para> - </listitem> - - <listitem> - <para> - Increase default values for <link - linkend="guc-shared-buffers"><varname>shared_buffers</></link> - and <varname>max_fsm_pages</> - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Improve locking performance by breaking the lock manager tables into - sections - (Tom) - </para> - - <para> - This allows locking to be more fine-grained, reducing - contention. - </para> - </listitem> - - <listitem> - <para> - Reduce locking requirements of sequential scans (Qingqing - Zhou) - </para> - </listitem> - - <listitem> - <para> - Reduce locking required for database creation and destruction - (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve the optimizer's selectivity estimates for <link - linkend="functions-like"><literal>LIKE</></link>, <link - linkend="functions-like"><literal>ILIKE</></link>, and - <link linkend="functions-posix-regexp">regular expression</link> - operations (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve planning of joins to <link linkend="ddl-inherit">inherited - tables</link> and <link linkend="queries-union"><literal>UNION - ALL</></link> views (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="guc-constraint-exclusion">constraint - exclusion</link> to be applied to <link - linkend="ddl-inherit">inherited</link> <command>UPDATE</> and - <command>DELETE</> queries (Tom) - </para> - - <para> - <command>SELECT</> already honored constraint exclusion. - </para> - </listitem> - - <listitem> - <para> - Improve planning of constant <literal>WHERE</> clauses, such as - a condition that depends only on variables inherited from an - outer query level (Tom) - </para> - </listitem> - - <listitem> - <para> - Protocol-level unnamed prepared statements are re-planned - for each set of <literal>BIND</> values (Tom) - </para> - - <para> - This improves performance because the exact parameter values - can be used in the plan. - </para> - </listitem> - - <listitem> - <para> - Speed up vacuuming of B-Tree indexes (Heikki Linnakangas, - Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid extra scan of tables without indexes during <link - linkend="SQL-VACUUM"><command>VACUUM</></link> (Greg Stark) - </para> - </listitem> - - <listitem> - <para> - Improve multicolumn <link linkend="GiST"><acronym>GiST</></link> - indexing (Oleg, Teodor) - </para> - </listitem> - - <listitem> - <para> - Remove dead index entries before B-Tree page split (Junji - Teramoto) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Server Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow a forced switch to a new transaction log file (Simon, Tom) - </para> - - <para> - This is valuable for keeping warm standby slave servers - in sync with the master. Transaction log file switching now also happens - automatically during <link - linkend="functions-admin"><function>pg_stop_backup()</></link>. - This ensures that all - transaction log files needed for recovery can be archived immediately. - </para> - </listitem> - - <listitem> - <para> - Add <acronym>WAL</> informational functions (Simon) - </para> - - <para> - Add functions for interrogating the current transaction log insertion - point and determining <acronym>WAL</> filenames from the - hex <acronym>WAL</> locations displayed by <link - linkend="functions-admin"><function>pg_stop_backup()</></link> - and related functions. - </para> - </listitem> - - <listitem> - <para> - Improve recovery from a crash during <acronym>WAL</> replay (Simon) - </para> - - <para> - The server now does periodic checkpoints during <acronym>WAL</> - recovery, so if there is a crash, future <acronym>WAL</> - recovery is shortened. This also eliminates the need for - warm standby servers to replay the entire log since the - base backup if they crash. - </para> - </listitem> - - <listitem> - <para> - Improve reliability of long-term <acronym>WAL</> replay - (Heikki, Simon, Tom) - </para> - - <para> - Formerly, trying to roll forward through more than 2 billion - transactions would not work due to XID wraparound. This meant - warm standby servers had to be reloaded - from fresh base backups periodically. - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="guc-archive-timeout"><varname>archive_timeout</></link> - to force transaction log file switches at a given interval (Simon) - </para> - - <para> - This enforces a maximum replication delay for warm standby servers. - </para> - </listitem> - - <listitem> - <para> - Add native <link linkend="auth-ldap"><acronym>LDAP</></link> - authentication (Magnus Hagander) - </para> - - <para> - This is particularly useful for platforms that do not - support <acronym>PAM</>, such as Windows. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="sql-grant-description-objects"><literal>GRANT - CONNECT ON DATABASE</></link> (Gevik Babakhani) - </para> - - <para> - This gives SQL-level control over database access. It works as - an additional filter on top of the existing - <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link> - controls. - </para> - </listitem> - - <listitem> - <para> - Add support for <link linkend="ssl-tcp"><acronym>SSL</> - Certificate Revocation List</link> (<acronym>CRL</>) files - (Libor Hohoš) - </para> - - <para> - The server and <application>libpq</> both recognize <acronym>CRL</> - files now. - </para> - </listitem> - - <listitem> - <para> - <link linkend="GiST"><acronym>GiST</></link> indexes are - now clusterable (Teodor) - </para> - </listitem> - - <listitem> - <para> - Remove routine autovacuum server log entries (Bruce) - </para> - - <para> - <link - linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link> - now shows autovacuum activity. - </para> - </listitem> - - <listitem> - <para> - Track maximum XID age within individual tables, instead of whole databases (Alvaro) - </para> - - <para> - This reduces the overhead involved in preventing transaction - ID wraparound, by avoiding unnecessary VACUUMs. - </para> - </listitem> - - <listitem> - <para> - Add last vacuum and analyze timestamp columns to the stats - collector (Larry Rosenman) - </para> - - <para> - These values now appear in the <link - linkend="monitoring-stats-views-table"><literal>pg_stat_*_tables</></link> - system views. - </para> - </listitem> - - <listitem> - <para> - Improve performance of statistics monitoring, especially - <varname>stats_command_string</> - (Tom, Bruce) - </para> - - <para> - This release enables <varname>stats_command_string</> by - default, now that its overhead is minimal. This means - <link - linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link> - will now show all active queries by default. - </para> - </listitem> - - <listitem> - <para> - Add a <literal>waiting</> column to <link - linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link> - (Tom) - </para> - - <para> - This allows <structname>pg_stat_activity</> to show all the - information included in the <application>ps</> display. - </para> - </listitem> - - <listitem> - <para> - Add configuration parameter <link - linkend="guc-update-process-title"><varname>update_process_title</></link> - to control whether the <application>ps</> display is updated - for every command (Bruce) - </para> - - <para> - On platforms where it is expensive to update the <application>ps</> - display, it might be worthwhile to turn this off and rely solely on - <structname>pg_stat_activity</> for status information. - </para> - </listitem> - - <listitem> - <para> - Allow units to be specified in configuration settings - (Peter) - </para> - - <para> - For example, you can now set <link - linkend="guc-shared-buffers"><varname>shared_buffers</></link> - to <literal>32MB</> rather than mentally converting sizes. - </para> - </listitem> - - <listitem> - <para> - Add support for <link linkend="config-setting">include - directives</link> in <filename>postgresql.conf</> (Joachim - Wieland) - </para> - </listitem> - - <listitem> - <para> - Improve logging of protocol-level prepare/bind/execute - messages (Bruce, Tom) - </para> - - <para> - Such logging now shows statement names, bind parameter - values, and the text of the query being executed. Also, - the query text is properly included in logged error messages - when enabled by <varname>log_min_error_statement</>. - </para> - </listitem> - - <listitem> - <para> - Prevent <link - linkend="guc-max-stack-depth"><varname>max_stack_depth</></link> - from being set to unsafe values - </para> - - <para> - On platforms where we can determine the actual kernel stack depth - limit (which is most), make sure that the initial default value of - <varname>max_stack_depth</> is safe, and reject attempts to set it - to unsafely large values. - </para> - </listitem> - - <listitem> - <para> - Enable highlighting of error location in query in more - cases (Tom) - </para> - - <para> - The server is now able to report a specific error location for - some semantic errors (such as unrecognized column name), rather - than just for basic syntax errors as before. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>failed to re-find parent key</> errors in - <command>VACUUM</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Clean out <filename>pg_internal.init</> cache files during server - restart (Simon) - </para> - - <para> - This avoids a hazard that the cache files might contain stale - data after PITR recovery. - </para> - </listitem> - - <listitem> - <para> - Fix race condition for truncation of a large relation across a - gigabyte boundary by <command>VACUUM</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug causing needless deadlock errors on row-level locks (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bugs affecting multi-gigabyte hash indexes (Tom) - </para> - </listitem> - - <listitem> - <para> - Each backend process is now its own process group leader (Tom) - </para> - - <para> - This allows query cancel to abort subprocesses invoked from a - backend or archive/recovery process. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Query Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <link linkend="SQL-INSERT"><command>INSERT</></link>/<link - linkend="SQL-UPDATE"><command>UPDATE</></link>/<link - linkend="SQL-DELETE"><command>DELETE</></link> - <literal>RETURNING</> (Jonah Harris, Tom) - </para> - - <para> - This allows these commands to return values, such as the - computed serial key for a new row. In the <command>UPDATE</> - case, values from the updated version of the row are returned. - </para> - </listitem> - - <listitem> - <para> - Add support for multiple-row <link - linkend="queries-values"><literal>VALUES</></link> clauses, - per SQL standard (Joe, Tom) - </para> - - <para> - This allows <command>INSERT</> to insert multiple rows of - constants, or queries to generate result sets using constants. - For example, <literal>INSERT ... VALUES (...), (...), - ....</>, and <literal>SELECT * FROM (VALUES (...), (...), - ....) AS alias(f1, ...)</>. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="SQL-UPDATE"><command>UPDATE</></link> - and <link linkend="SQL-DELETE"><command>DELETE</></link> - to use an alias for the target table (Atsushi Ogawa) - </para> - - <para> - The SQL standard does not permit an alias in these commands, but - many database systems allow one anyway for notational convenience. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="SQL-UPDATE"><command>UPDATE</></link> - to set multiple columns with a list of values (Susanne - Ebrecht) - </para> - - <para> - This is basically a short-hand for assigning the columns - and values in pairs. The syntax is <literal>UPDATE tab - SET (<replaceable>column</>, ...) = (<replaceable>val</>, ...)</>. - </para> - </listitem> - - <listitem> - <para> - Make row comparisons work per standard (Tom) - </para> - - <para> - The forms <, <=, >, >= now compare rows lexicographically, - that is, compare the first elements, if equal compare the second - elements, and so on. Formerly they expanded to an AND condition - across all the elements, which was neither standard nor very useful. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-TRUNCATE"><literal>CASCADE</></link> - option to <command>TRUNCATE</> (Joachim Wieland) - </para> - - <para> - This causes <command>TRUNCATE</> to automatically include all tables - that reference the specified table(s) via foreign keys. While - convenient, this is a dangerous tool — use with caution! - </para> - </listitem> - - <listitem> - <para> - Support <literal>FOR UPDATE</> and <literal>FOR SHARE</> - in the same <link linkend="SQL-INSERT"><literal>SELECT</></link> - command (Tom) - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="functions-comparisons"><literal>IS NOT - DISTINCT FROM</></link> (Pavel Stehule) - </para> - - <para> - This operator is similar to equality (<literal>=</>), but - evaluates to true when both left and right operands are - <literal>NULL</>, and to false when just one is, rather than - yielding <literal>NULL</> in these cases. - </para> - </listitem> - - <listitem> - <para> - Improve the length output used by <link - linkend="queries-union"><literal>UNION</></link>/<literal>INTERSECT</>/<literal>EXCEPT</> - (Tom) - </para> - - <para> - When all corresponding columns are of the same defined length, that - length is used for the result, rather than a generic length. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="functions-like"><literal>ILIKE</></link> - to work for multi-byte encodings (Tom) - </para> - - <para> - Internally, <literal>ILIKE</> now calls <function>lower()</> - and then uses <literal>LIKE</>. Locale-specific regular - expression patterns still do not work in these encodings. - </para> - </listitem> - - <listitem> - <para> - Enable <link - linkend="guc-standard-conforming-strings"><varname>standard_conforming_strings</></link> - to be turned <literal>on</> (Kevin Grittner) - </para> - - <para> - This allows backslash escaping in strings to be disabled, - making <productname>PostgreSQL</> more - standards-compliant. The default is <literal>off</> for backwards - compatibility, but future releases will default this to <literal>on</>. - </para> - </listitem> - - <listitem> - <para> - Do not flatten subqueries that contain <literal>volatile</> - functions in their target lists (Jaime Casanova) - </para> - - <para> - This prevents surprising behavior due to multiple evaluation - of a <literal>volatile</> function (such as <function>random()</> - or <function>nextval()</>). It might cause performance - degradation in the presence of functions that are unnecessarily - marked as <literal>volatile</>. - </para> - </listitem> - - <listitem> - <para> - Add system views <link - linkend="view-pg-prepared-statements"><literal>pg_prepared_statements</></link> - and <link - linkend="view-pg-cursors"><literal>pg_cursors</></link> - to show prepared statements and open cursors (Joachim Wieland, Neil) - </para> - - <para> - These are very useful in pooled connection setups. - </para> - </listitem> - - <listitem> - <para> - Support portal parameters in <link - linkend="SQL-EXPLAIN"><command>EXPLAIN</></link> and <link - linkend="SQL-EXECUTE"><command>EXECUTE</></link> (Tom) - </para> - - <para> - This allows, for example, <acronym>JDBC</> <literal>?</> parameters to - work in these commands. - </para> - </listitem> - - <listitem> - <para> - If <acronym>SQL</>-level <link - linkend="SQL-PREPARE"><command>PREPARE</></link> parameters - are unspecified, infer their types from the content of the - query (Neil) - </para> - - <para> - Protocol-level <command>PREPARE</> already did this. - </para> - </listitem> - - <listitem> - <para> - Allow <literal>LIMIT</> and <literal>OFFSET</> to exceed - two billion (Dhanaraj M) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Object Manipulation Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <literal>TABLESPACE</> clause to <link - linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></link> - (Neil) - </para> - - <para> - This allows a tablespace to be specified for the new table. - </para> - </listitem> - - <listitem> - <para> - Add <literal>ON COMMIT</> clause to <link - linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></link> - (Neil) - </para> - - <para> - This allows temporary tables to be truncated or dropped on - transaction commit. The default behavior is for the table - to remain until the session ends. - </para> - </listitem> - - <listitem> - <para> - Add <literal>INCLUDING CONSTRAINTS</> to <link - linkend="SQL-CREATETABLE"><command>CREATE TABLE LIKE</></link> - (Greg Stark) - </para> - - <para> - This allows easy copying of <literal>CHECK</> constraints to a new - table. - </para> - </listitem> - - <listitem> - <para> - Allow the creation of placeholder (shell) <link - linkend="SQL-CREATETYPE">types</link> (Martijn van Oosterhout) - </para> - - <para> - A shell type declaration creates a type name, without specifying - any of the details of the type. Making a shell type is useful - because it allows cleaner declaration of the type's input/output - functions, which must exist before the type can be defined <quote>for - real</>. The syntax is <command>CREATE TYPE <replaceable - class="parameter">typename</replaceable></>. - </para> - </listitem> - - <listitem> - <para> - <link linkend="SQL-CREATEAGGREGATE">Aggregate functions</link> - now support multiple input parameters (Sergey Koposov, Tom) - </para> - </listitem> - - <listitem> - <para> - Add new aggregate creation <link - linkend="SQL-CREATEAGGREGATE">syntax</link> (Tom) - </para> - - <para> - The new syntax is <command>CREATE AGGREGATE - <replaceable>aggname</> (<replaceable>input_type</>) - (<replaceable>parameter_list</>)</command>. This more - naturally supports the new multi-parameter aggregate - functionality. The previous syntax is still supported. - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="SQL-ALTERROLE"><command>ALTER ROLE PASSWORD NULL</></link> - to remove a previously set role password (Peter) - </para> - </listitem> - - <listitem> - <para> - Add <command>DROP</> object <literal>IF EXISTS</> for many - object types (Andrew) - </para> - - <para> - This allows <command>DROP</> operations on non-existent - objects without generating an error. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-DROP-OWNED"><literal>DROP OWNED</></link> - to drop all objects owned by a role (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-REASSIGN-OWNED"><literal>REASSIGN - OWNED</></link> to reassign ownership of all objects owned - by a role (Alvaro) - </para> - - <para> - This, and <literal>DROP OWNED</> above, facilitate dropping - roles. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-GRANT"><command>GRANT ON SEQUENCE</></link> - syntax (Bruce) - </para> - - <para> - This was added for setting sequence-specific permissions. - <literal>GRANT ON TABLE</> for sequences is still supported - for backward compatibility. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-GRANT"><literal>USAGE</></link> - permission for sequences that allows only <function>currval()</> - and <function>nextval()</>, not <function>setval()</> - (Bruce) - </para> - - <para> - <literal>USAGE</> permission allows more fine-grained - control over sequence access. Granting <literal>USAGE</> - allows users to increment - a sequence, but prevents them from setting the sequence to - an arbitrary value using <function>setval()</>. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-ALTERTABLE"><literal>ALTER TABLE - [ NO ] INHERIT</></link> (Greg Stark) - </para> - - <para> - This allows inheritance to be adjusted dynamically, rather than - just at table creation and destruction. This is very valuable - when using inheritance to implement table partitioning. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="SQL-COMMENT">comments</link> on global - objects to be stored globally (Kris Jurka) - </para> - - <para> - Previously, comments attached to databases were stored in individual - databases, making them ineffective, and there was no provision - at all for comments on roles or tablespaces. This change adds a new - shared catalog <link - linkend="catalog-pg-shdescription"><structname>pg_shdescription</structname></link> - and stores comments on databases, roles, and tablespaces therein. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Utility Command Changes</title> - <itemizedlist> - - <listitem> - <para> - Add option to allow indexes to be created without blocking - concurrent writes to the table (Greg Stark, Tom) - </para> - - <para> - The new syntax is <link linkend="SQL-CREATEINDEX"><command>CREATE - INDEX CONCURRENTLY</></link>. The default behavior is - still to block table modification while an index is being - created. - </para> - </listitem> - - <listitem> - <para> - Provide <link linkend="functions-advisory-locks">advisory - locking</link> functionality (Abhijit Menon-Sen, Tom) - </para> - - <para> - This is a new locking API designed to replace what used to be - in /contrib/userlock. The userlock code is now on pgfoundry. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="SQL-COPY"><command>COPY</></link> to - dump a <command>SELECT</> query (Zoltan Boszormenyi, Karel - Zak) - </para> - - <para> - This allows <command>COPY</> to dump arbitrary <acronym>SQL</> - queries. The syntax is <literal>COPY (SELECT ...) TO</>. - </para> - </listitem> - - <listitem> - <para> - Make the <link linkend="SQL-COPY"><command>COPY</></link> - command return a command tag that includes the number of - rows copied (Volkan YAZICI) - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="SQL-VACUUM"><command>VACUUM</></link> - to expire rows without being affected by other concurrent - <command>VACUUM</> operations (Hannu Krossing, Alvaro, Tom) - </para> - </listitem> - - <listitem> - <para> - Make <link linkend="APP-INITDB"><application>initdb</></link> - detect the operating system locale and set the default - <varname>DateStyle</> accordingly (Peter) - </para> - - <para> - This makes it more likely that the installed - <filename>postgresql.conf</> <varname>DateStyle</> value will - be as desired. - </para> - </listitem> - - <listitem> - <para> - Reduce number of progress messages displayed by <application>initdb</> (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Date/Time Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow full timezone names in <link - linkend="datatype-datetime"><type>timestamp</></link> input values - (Joachim Wieland) - </para> - - <para> - For example, <literal>'2006-05-24 21:11 - America/New_York'::timestamptz</>. - </para> - </listitem> - - <listitem> - <para> - Support configurable timezone abbreviations (Joachim Wieland) - </para> - - <para> - A desired set of timezone abbreviations can be chosen via the - configuration parameter <link - linkend="guc-timezone-abbreviations"><varname>timezone_abbreviations</></link>. - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="view-pg-timezone-abbrevs"><varname>pg_timezone_abbrevs</></link> - and <link - linkend="view-pg-timezone-names"><varname>pg_timezone_names</></link> - views to show supported timezones (Magnus Hagander) - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="functions-datetime-table"><function>clock_timestamp()</></link>, - <link - linkend="functions-datetime-table"><function>statement_timestamp()</></link>, - and <link - linkend="functions-datetime-table"><function>transaction_timestamp()</></link> - (Bruce) - </para> - - <para> - <function>clock_timestamp()</> is the current wall-clock time, - <function>statement_timestamp()</> is the time the current - statement arrived at the server, and - <function>transaction_timestamp()</> is an alias for - <function>now()</>. - </para> - </listitem> - - <listitem> - <para> - Allow <link - linkend="functions-formatting"><function>to_char()</></link> - to print localized month and day names (Euler Taveira de - Oliveira) - </para> - </listitem> - - <listitem> - <para> - Allow <link - linkend="functions-formatting"><function>to_char(time)</></link> - and <link - linkend="functions-formatting"><function>to_char(interval)</></link> - to output <acronym>AM</>/<acronym>PM</> specifications - (Bruce) - </para> - - <para> - Intervals and times are treated as 24-hour periods, e.g. - <literal>25 hours</> is considered <acronym>AM</>. - </para> - </listitem> - - <listitem> - <para> - Add new function <link - linkend="functions-datetime-table"><function>justify_interval()</></link> - to adjust interval units (Mark Dilger) - </para> - </listitem> - - <listitem> - <para> - Allow timezone offsets up to 14:59 away from GMT - </para> - - <para> - Kiribati uses GMT+14, so we'd better accept that. - </para> - </listitem> - - <listitem> - <para> - Interval computation improvements (Michael Glaesemann, Bruce) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Other Data Type and Function Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow arrays to contain <literal>NULL</> elements (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow assignment to array elements not contiguous with the existing - entries (Tom) - </para> - - <para> - The intervening array positions will be filled with nulls. - This is per SQL standard. - </para> - </listitem> - - <listitem> - <para> - New built-in <link linkend="functions-array">operators</link> - for array-subset comparisons (<literal>@></>, - <literal><@</>, <literal>&&</>) (Teodor, Tom) - </para> - - <para> - These operators can be indexed for many data types using - <acronym>GiST</> or <acronym>GIN</> indexes. - </para> - </listitem> - - <listitem> - <para> - Add convenient arithmetic <link - linkend="cidr-inet-operators-table">operations</link> on - <type>INET</>/<type>CIDR</> values (Stephen R. van den - Berg) - </para> - - <para> - The new operators are <literal>&</> (and), <literal>|</> - (or), <literal>~</> (not), <type>inet</> <literal>+</> <type>int8</>, - <type>inet</> <literal>-</> <type>int8</>, and - <type>inet</> <literal>-</> <type>inet</>. - </para> - </listitem> - - <listitem> - <para> - Add new <link - linkend="functions-aggregate-statistics-table">aggregate functions</link> - from SQL:2003 (Neil) - </para> - - <para> - The new functions are <function>var_pop()</>, - <function>var_samp()</>, <function>stddev_pop()</>, and - <function>stddev_samp()</>. <function>var_samp()</> and - <function>stddev_samp()</> are merely renamings of the - existing aggregates <function>variance()</> and - <function>stddev()</>. The latter names remain available - for backward compatibility. - </para> - </listitem> - - <listitem> - <para> - Add SQL:2003 statistical <link - linkend="functions-aggregate-statistics-table">aggregates</link> - (Sergey Koposov) - </para> - - <para> - New functions: <function>regr_intercept()</>, - <function>regr_slope()</>, <function>regr_r2()</>, - <function>corr()</>, <function>covar_samp()</>, - <function>covar_pop()</>, <function>regr_avgx()</>, - <function>regr_avgy()</>, <function>regr_sxy()</>, - <function>regr_sxx()</>, <function>regr_syy()</>, - <function>regr_count()</>. - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="SQL-CREATEDOMAIN">domains</link> to be - based on other domains (Tom) - </para> - </listitem> - - <listitem> - <para> - Properly enforce domain <link - linkend="ddl-constraints"><literal>CHECK</></link> constraints - everywhere (Neil, Tom) - </para> - - <para> - For example, the result of a user-defined function that is - declared to return a domain type is now checked against the - domain's constraints. This closes a significant hole in the domain - implementation. - </para> - </listitem> - - <listitem> - <para> - Fix problems with dumping renamed <link - linkend="datatype-serial"><type>SERIAL</></link> columns - (Tom) - </para> - - <para> - The fix is to dump a <type>SERIAL</> column by explicitly - specifying its <literal>DEFAULT</> and sequence elements, - and reconstructing the <type>SERIAL</> column on reload - using a new <link linkend="SQL-ALTERSEQUENCE"><command>ALTER - SEQUENCE OWNED BY</></link> command. This also allows - dropping a <type>SERIAL</> column specification. - </para> - </listitem> - - <listitem> - <para> - Add a server-side sleep function <link - linkend="functions-datetime-delay"><function>pg_sleep()</></link> - (Joachim Wieland) - </para> - </listitem> - - <listitem> - <para> - Add all comparison operators for the <link - linkend="datatype-oid"><type>tid</></link> (tuple id) data - type (Mark Kirkwood, Greg Stark, Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>PL/pgSQL Server-Side Language Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <literal>TG_table_name</> and <literal>TG_table_schema</> to - trigger parameters (Andrew) - </para> - - <para> - <literal>TG_relname</> is now deprecated. Comparable - changes have been made in the trigger parameters for the other - PLs as well. - </para> - </listitem> - - <listitem> - <para> - Allow <literal>FOR</> statements to return values to scalars - as well as records and row types (Pavel Stehule) - </para> - </listitem> - - <listitem> - <para> - Add a <literal>BY</> clause to the <literal>FOR</> loop, - to control the iteration increment (Jaime Casanova) - </para> - </listitem> - - <listitem> - <para> - Add <literal>STRICT</> to <link - linkend="plpgsql-statements-sql-onerow"><command>SELECT - INTO</></link> (Matt Miller) - </para> - - <para> - <literal>STRICT</> mode throws an exception if more or less - than one row is returned by the <command>SELECT</>, for - <productname>Oracle PL/SQL</> compatibility. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>PL/Perl Server-Side Language Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <literal>table_name</> and <literal>table_schema</> to - trigger parameters (Adam Sjøgren) - </para> - </listitem> - - <listitem> - <para> - Add prepared queries (Dmitry Karasik) - </para> - </listitem> - - <listitem> - <para> - Make <literal>$_TD</> trigger data a global variable (Andrew) - </para> - - <para> - Previously, it was lexical, which caused unexpected sharing - violations. - </para> - </listitem> - - <listitem> - <para> - Run PL/Perl and PL/PerlU in separate interpreters, for security - reasons (Andrew) - </para> - <para> - In consequence, they can no longer share data nor loaded modules. - Also, if Perl has not been compiled with the requisite flags to - allow multiple interpreters, only one of these languages can be used - in any given backend process. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>PL/Python Server-Side Language Changes</title> - <itemizedlist> - - <listitem> - <para> - Named parameters are passed as ordinary variables, as well as in the - <literal>args[]</> array (Sven Suursoho) - </para> - </listitem> - - <listitem> - <para> - Add <literal>table_name</> and <literal>table_schema</> to - trigger parameters (Andrew) - </para> - </listitem> - - <listitem> - <para> - Allow returning of composite types and result sets (Sven Suursoho) - </para> - </listitem> - - <listitem> - <para> - Return result-set as <literal>list</>, <literal>iterator</>, - or <literal>generator </>(Sven Suursoho) - </para> - </listitem> - - <listitem> - <para> - Allow functions to return <literal>void</> (Neil) - </para> - </listitem> - - <listitem> - <para> - Python 2.5 is now supported (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="APP-PSQL"><application>psql</></link> Changes</title> - <itemizedlist> - - <listitem> - <para> - Add new command <literal>\password</> for changing role - password with client-side password encryption (Peter) - </para> - </listitem> - - <listitem> - <para> - Allow <literal>\c</> to connect to a new host and port - number (David, Volkan YAZICI) - </para> - </listitem> - - <listitem> - <para> - Add tablespace display to <literal>\l+</> (Philip Yarra) - </para> - </listitem> - - <listitem> - <para> - Improve <literal>\df</> slash command to include the argument - names and modes (<literal>OUT</> or <literal>INOUT</>) of - the function (David Fetter) - </para> - </listitem> - - <listitem> - <para> - Support binary <command>COPY</> (Andreas Pflug) - </para> - </listitem> - - <listitem> - <para> - Add option to run the entire session in a single transaction - (Simon) - </para> - - <para> - Use option <literal>-1</> or <literal>--single-transaction</>. - </para> - </listitem> - - <listitem> - <para> - Support for automatically retrieving <command>SELECT</> - results in batches using a cursor (Chris Mair) - </para> - - <para> - This is enabled using <command>\set FETCH_COUNT - <replaceable>n</></command>. This - feature allows large result sets to be retrieved in - <application>psql</> without attempting to buffer the entire - result set in memory. - </para> - </listitem> - - <listitem> - <para> - Make multi-line values align in the proper column - (Martijn van Oosterhout) - </para> - - <para> - Field values containing newlines are now displayed in a more - readable fashion. - </para> - </listitem> - - <listitem> - <para> - Save multi-line statements as a single entry, rather than - one line at a time (Sergey E. Koposov) - </para> - - <para> - This makes up-arrow recall of queries easier. (This is - not available on Windows, because that platform uses the native - command-line editing present in the operating system.) - </para> - </listitem> - - <listitem> - <para> - Make the line counter 64-bit so it can handle files with more - than two billion lines (David Fetter) - </para> - </listitem> - - <listitem> - <para> - Report both the returned data and the command status tag - for <command>INSERT</>/<command>UPDATE</>/<command>DELETE - RETURNING</> (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="APP-PGDUMP"><application>pg_dump</></link> Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow complex selection of objects to be included or excluded - by <application>pg_dump</> (Greg Sabino Mullane) - </para> - - <para> - <application>pg_dump</> now supports multiple <literal>-n</> - (schema) and <literal>-t</> (table) options, and adds - <literal>-N</> and <literal>-T</> options to exclude objects. - Also, the arguments of these switches can now be wild-card expressions - rather than single object names, for example - <literal>-t 'foo*'</>, and a schema can be part of - a <literal>-t</> or <literal>-T</> switch, for example - <literal>-t schema1.table1</>. - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="APP-PGRESTORE"><application>pg_restore</></link> - <literal>--no-data-for-failed-tables</> option to suppress - loading data if table creation failed (i.e., the table already - exists) (Martin Pitt) - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="APP-PGRESTORE"><application>pg_restore</></link> - option to run the entire session in a single transaction - (Simon) - </para> - - <para> - Use option <literal>-1</> or <literal>--single-transaction</>. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="libpq"><application>libpq</></link> Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <link - linkend="libpq-misc"><function>PQencryptPassword()</></link> - to encrypt passwords (Tom) - </para> - - <para> - This allows passwords to be sent pre-encrypted for commands - like <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ... - PASSWORD</></link>. - </para> - </listitem> - - <listitem> - <para> - Add function <link - linkend="libpq-threading"><function>PQisthreadsafe()</></link> - (Bruce) - </para> - - <para> - This allows applications to query the thread-safety status - of the library. - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="libpq-exec-main"><function>PQdescribePrepared()</></link>, - <link - linkend="libpq-exec-main"><function>PQdescribePortal()</></link>, - and related functions to return information about previously - prepared statements and open cursors (Volkan YAZICI) - </para> - </listitem> - - <listitem> - <para> - Allow <link linkend="libpq-ldap"><acronym>LDAP</></link> lookups - from <link - linkend="libpq-pgservice"><filename>pg_service.conf</></link> - (Laurenz Albe) - </para> - </listitem> - - <listitem> - <para> - Allow a hostname in <link - linkend="libpq-pgpass"><filename>~/.pgpass</></link> - to match the default socket directory (Bruce) - </para> - - <para> - A blank hostname continues to match any Unix-socket connection, - but this addition allows entries that are specific to one of - several postmasters on the machine. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="ecpg"><application>ecpg</></link> Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow <link linkend="SQL-SHOW"><command>SHOW</></link> to - put its result into a variable (Joachim Wieland) - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="SQL-COPY"><command>COPY TO STDOUT</></link> - (Joachim Wieland) - </para> - </listitem> - - <listitem> - <para> - Add regression tests (Joachim Wieland, Michael) - </para> - </listitem> - - <listitem> - <para> - Major source code cleanups (Joachim Wieland, Michael) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><application>Windows</> Port</title> - <itemizedlist> - - <listitem> - <para> - Allow <acronym>MSVC</> to compile the <productname>PostgreSQL</> - server (Magnus, Hiroshi Saito) - </para> - </listitem> - - <listitem> - <para> - Add <acronym>MSVC</> support for utility commands and <link - linkend="APP-PGDUMP"><application>pg_dump</></link> (Hiroshi - Saito) - </para> - </listitem> - - <listitem> - <para> - Add support for Windows code pages <literal>1253</>, - <literal>1254</>, <literal>1255</>, and <literal>1257</> - (Kris Jurka) - </para> - </listitem> - - <listitem> - <para> - Drop privileges on startup, so that the server can be started from - an administrative account (Magnus) - </para> - </listitem> - - <listitem> - <para> - Stability fixes (Qingqing Zhou, Magnus) - </para> - </listitem> - - <listitem> - <para> - Add native semaphore implementation (Qingqing Zhou) - </para> - - <para> - The previous code mimicked SysV semaphores. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Source Code Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <link linkend="GIN"><acronym>GIN</></link> (Generalized - Inverted iNdex) index access method (Teodor, Oleg) - </para> - </listitem> - - <listitem> - <para> - Remove R-tree indexing (Tom) - </para> - - <para> - Rtree has been re-implemented using <link - linkend="GiST"><acronym>GiST</></link>. Among other - differences, this means that rtree indexes now have support - for crash recovery via write-ahead logging (WAL). - </para> - </listitem> - - <listitem> - <para> - Reduce libraries needlessly linked into the backend (Martijn - van Oosterhout, Tom) - </para> - </listitem> - - <listitem> - <para> - Add a configure flag to allow libedit to be preferred over - <acronym>GNU</> readline (Bruce) - </para> - - <para> - Use configure <link - linkend="configure"><literal>--with-libedit-preferred</></link>. - </para> - </listitem> - - <listitem> - <para> - Allow installation into directories containing spaces - (Peter) - </para> - </listitem> - - <listitem> - <para> - Improve ability to relocate installation directories (Tom) - </para> - </listitem> - - <listitem> - <para> - Add support for <productname>Solaris x86_64</> using the - <productname>Solaris</> compiler (Pierre Girard, Theo - Schlossnagle, Bruce) - </para> - </listitem> - - <listitem> - <para> - Add <application>DTrace</> support (Robert Lor) - </para> - </listitem> - - <listitem> - <para> - Add <literal>PG_VERSION_NUM</> for use by third-party - applications wanting to test the backend version in C using > - and < comparisons (Bruce) - </para> - </listitem> - - <listitem> - <para> - Add <literal>XLOG_BLCKSZ</> as independent from <literal>BLCKSZ</> - (Mark Wong) - </para> - </listitem> - - <listitem> - <para> - Add <literal>LWLOCK_STATS</> define to report locking - activity (Tom) - </para> - </listitem> - - <listitem> - <para> - Emit warnings for unknown <application>configure</> options - (Martijn van Oosterhout) - </para> - </listitem> - - <listitem> - <para> - Add server support for <quote>plugin</> libraries - that can be used for add-on tasks such as debugging and performance - measurement (Korry Douglas) - </para> - - <para> - This consists of two features: a table of <quote>rendezvous - variables</> that allows separately-loaded shared libraries to - communicate, and a new configuration parameter <link - linkend="guc-local-preload-libraries"><varname>local_preload_libraries</></link> - that allows libraries to be loaded into specific sessions without - explicit cooperation from the client application. This allows - external add-ons to implement features such as a PL/pgSQL debugger. - </para> - </listitem> - - <listitem> - <para> - Rename existing configuration parameter - <varname>preload_libraries</> to <link - linkend="guc-shared-preload-libraries"><varname>shared_preload_libraries</></link> - (Tom) - </para> - - <para> - This was done for clarity in comparison to - <varname>local_preload_libraries</>. - </para> - </listitem> - - <listitem> - <para> - Add new configuration parameter <link - linkend="guc-server-version-num"><varname>server_version_num</></link> - (Greg Sabino Mullane) - </para> - - <para> - This is like <varname>server_version</varname>, but is an - integer, e.g. <literal>80200</>. This allows applications to - make version checks more easily. - </para> - </listitem> - - <listitem> - <para> - Add a configuration parameter <link - linkend="guc-seq-page-cost"><varname>seq_page_cost</></link> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Re-implement the <link linkend="regress">regression test</link> script as a C program - (Magnus, Tom) - </para> - </listitem> - - <listitem> - <para> - Allow loadable modules to allocate shared memory and - lightweight locks (Marc Munro) - </para> - </listitem> - - <listitem> - <para> - Add automatic initialization and finalization of dynamically - loaded libraries (Ralf Engelschall, Tom) - </para> - - <para> - New <link linkend="xfunc-c-dynload">functions</link> - <function>_PG_init()</> and <function>_PG_fini()</> are - called if the library defines such symbols. Hence we no - longer need to specify an initialization function in - <varname>shared_preload_libraries</>; we can assume that - the library used the <function>_PG_init()</> convention - instead. - </para> - </listitem> - - <listitem> - <para> - Add <link - linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</></link> - header block to all shared object files (Martijn van - Oosterhout) - </para> - - <para> - The magic block prevents version mismatches between loadable object - files and servers. - </para> - </listitem> - - <listitem> - <para> - Add shared library support for AIX (Laurenz Albe) - </para> - </listitem> - - <listitem> - <para> - New <link linkend="datatype-xml"><acronym>XML</></link> - documentation section (Bruce) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Contrib Changes</title> - <itemizedlist> - - <listitem> - <para> - Major tsearch2 improvements (Oleg, Teodor) - </para> - - <itemizedlist> - - <listitem> - <para> - multibyte encoding support, including <acronym>UTF8</> - </para> - </listitem> - <listitem> - <para> - query rewriting support - </para> - </listitem> - <listitem> - <para> - improved ranking functions - </para> - </listitem> - <listitem> - <para> - thesaurus dictionary support - </para> - </listitem> - <listitem> - <para> - Ispell dictionaries now recognize <application>MySpell</> - format, used by <application>OpenOffice</> - </para> - </listitem> - <listitem> - <para> - <acronym>GIN</> support - </para> - </listitem> - - </itemizedlist> - - </listitem> - - <listitem> - <para> - Add adminpack module containing <application>Pgadmin</> administration - functions (Dave) - </para> - - <para> - These functions provide additional file system access - routines not present in the default <productname>PostgreSQL</> - server. - </para> - </listitem> - - <listitem> - <para> - Add sslinfo module (Victor Wagner) - </para> - - <para> - Reports information about the current connection's <acronym>SSL</> - certificate. - </para> - </listitem> - - <listitem> - <para> - Add pgrowlocks module (Tatsuo) - </para> - - <para> - This shows row locking information for a specified table. - </para> - </listitem> - - <listitem> - <para> - Add hstore module (Oleg, Teodor) - </para> - </listitem> - - <listitem> - <para> - Add isn module, replacing isbn_issn (Jeremy Kronuz) - </para> - - <para> - This new implementation supports <acronym>EAN13</>, <acronym>UPC</>, - <acronym>ISBN</> (books), <acronym>ISMN</> (music), and - <acronym>ISSN</> (serials). - </para> - </listitem> - - <listitem> - <para> - Add index information functions to pgstattuple (ITAGAKI Takahiro, - Satoshi Nagayasu) - </para> - </listitem> - - <listitem> - <para> - Add pg_freespacemap module to display free space map information - (Mark Kirkwood) - </para> - </listitem> - - <listitem> - <para> - pgcrypto now has all planned functionality (Marko Kreen) - </para> - <itemizedlist> - <listitem> - <para> - Include iMath library in pgcrypto to have the public-key encryption - functions always available. - </para> - </listitem> - <listitem> - <para> - Add SHA224 algorithm that was missing in OpenBSD code. - </para> - </listitem> - <listitem> - <para> - Activate builtin code for SHA224/256/384/512 hashes on older - OpenSSL to have those algorithms always available. - </para> - </listitem> - <listitem> - <para> - New function gen_random_bytes() that returns cryptographically strong - randomness. Useful for generating encryption keys. - </para> - </listitem> - <listitem> - <para> - Remove digest_exists(), hmac_exists() and cipher_exists() functions. - </para> - </listitem> - </itemizedlist> - </listitem> - - <listitem> - <para> - Improvements to cube module (Joshua Reich) - </para> - - <para> - New functions are <function>cube(float[])</>, - <function>cube(float[], float[])</>, and - <function>cube_subset(cube, int4[])</>. - </para> - </listitem> - - <listitem> - <para> - Add async query capability to dblink (Kai Londenberg, - Joe Conway) - </para> - </listitem> - - <listitem> - <para> - New operators for array-subset comparisons (<literal>@></>, - <literal><@</>, <literal>&&</>) (Tom) - </para> - - <para> - Various contrib packages already had these operators for their - datatypes, but the naming wasn't consistent. We have now added - consistently named array-subset comparison operators to the core code - and all the contrib packages that have such functionality. - (The old names remain available, but are deprecated.) - </para> - </listitem> - - <listitem> - <para> - Add uninstall scripts for all contrib packages that have install - scripts (David, Josh Drake) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - </sect2> - </sect1> diff --git a/doc/src/sgml/release-8.3.sgml b/doc/src/sgml/release-8.3.sgml deleted file mode 100644 index 693d725557d..00000000000 --- a/doc/src/sgml/release-8.3.sgml +++ /dev/null @@ -1,8549 +0,0 @@ -<!-- doc/src/sgml/release-8.3.sgml --> -<!-- See header comment in release.sgml about typical markup --> - - <sect1 id="release-8-3-23"> - <title>Release 8.3.23</title> - - <formalpara> - <title>Release date:</title> - <para>2013-02-07</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.22. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <para> - This is expected to be the last <productname>PostgreSQL</> release - in the 8.3.X series. Users are encouraged to update to a newer - release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.3.23</title> - - <para> - A dump/restore is not required for those running 8.3.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.3.17, - see <xref linkend="release-8-3-17">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent execution of <function>enum_recv</> from SQL (Tom Lane) - </para> - - <para> - The function was misdeclared, allowing a simple SQL command to crash the - server. In principle an attacker might be able to use it to examine the - contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) - for reporting this issue. (CVE-2013-0255) - </para> - </listitem> - - <listitem> - <para> - Fix SQL grammar to allow subscripting or field selection from a - sub-SELECT result (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Protect against race conditions when scanning - <structname>pg_tablespace</> (Stephen Frost, Tom Lane) - </para> - - <para> - <command>CREATE DATABASE</> and <command>DROP DATABASE</> could - misbehave if there were concurrent updates of - <structname>pg_tablespace</> entries. - </para> - </listitem> - - <listitem> - <para> - Prevent <command>DROP OWNED</> from trying to drop whole databases or - tablespaces (Álvaro Herrera) - </para> - - <para> - For safety, ownership of these objects must be reassigned, not dropped. - </para> - </listitem> - - <listitem> - <para> - Prevent misbehavior when a <symbol>RowExpr</> or <symbol>XmlExpr</> - is parse-analyzed twice (Andres Freund, Tom Lane) - </para> - - <para> - This mistake could be user-visible in contexts such as - <literal>CREATE TABLE LIKE INCLUDING INDEXES</>. - </para> - </listitem> - - <listitem> - <para> - Improve defenses against integer overflow in hashtable sizing - calculations (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Ensure that non-ASCII prompt strings are translated to the correct - code page on Windows (Alexander Law, Noah Misch) - </para> - - <para> - This bug affected <application>psql</> and some other client programs. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash in <application>psql</>'s <command>\?</> command - when not connected to a database (Meng Qingzhong) - </para> - </listitem> - - <listitem> - <para> - Fix one-byte buffer overrun in <application>libpq</>'s - <function>PQprintTuples</> (Xi Wang) - </para> - - <para> - This ancient function is not used anywhere by - <productname>PostgreSQL</> itself, but it might still be used by some - client code. - </para> - </listitem> - - <listitem> - <para> - Rearrange configure's tests for supplied functions so it is not - fooled by bogus exports from libedit/libreadline (Christoph Berg) - </para> - </listitem> - - <listitem> - <para> - Ensure Windows build number increases over time (Magnus Hagander) - </para> - </listitem> - - <listitem> - <para> - Make <application>pgxs</> build executables with the right - <literal>.exe</> suffix when cross-compiling for Windows - (Zoltan Boszormenyi) - </para> - </listitem> - - <listitem> - <para> - Add new timezone abbreviation <literal>FET</> (Tom Lane) - </para> - - <para> - This is now used in some eastern-European time zones. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-22"> - <title>Release 8.3.22</title> - - <formalpara> - <title>Release date:</title> - <para>2012-12-06</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.21. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <para> - The <productname>PostgreSQL</> community will stop releasing updates - for the 8.3.X release series in February 2013. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.3.22</title> - - <para> - A dump/restore is not required for those running 8.3.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.3.17, - see <xref linkend="release-8-3-17">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix multiple bugs associated with <command>CREATE INDEX - CONCURRENTLY</> (Andres Freund, Tom Lane) - </para> - - <para> - Fix <command>CREATE INDEX CONCURRENTLY</> to use - in-place updates when changing the state of an index's - <structname>pg_index</> row. This prevents race conditions that could - cause concurrent sessions to miss updating the target index, thus - resulting in corrupt concurrently-created indexes. - </para> - - <para> - Also, fix various other operations to ensure that they ignore - invalid indexes resulting from a failed <command>CREATE INDEX - CONCURRENTLY</> command. The most important of these is - <command>VACUUM</>, because an auto-vacuum could easily be launched - on the table before corrective action can be taken to fix or remove - the invalid index. - </para> - </listitem> - - <listitem> - <para> - Avoid corruption of internal hash tables when out of memory - (Hitoshi Harada) - </para> - </listitem> - - <listitem> - <para> - Fix planning of non-strict equivalence clauses above outer joins - (Tom Lane) - </para> - - <para> - The planner could derive incorrect constraints from a clause equating - a non-strict construct to something else, for example - <literal>WHERE COALESCE(foo, 0) = 0</> - when <literal>foo</> is coming from the nullable side of an outer join. - </para> - </listitem> - - <listitem> - <para> - Improve planner's ability to prove exclusion constraints from - equivalence classes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix partial-row matching in hashed subplans to handle cross-type cases - correctly (Tom Lane) - </para> - - <para> - This affects multicolumn <literal>NOT IN</> subplans, such as - <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</> - when for instance <literal>b</> and <literal>y</> are <type>int4</> - and <type>int8</> respectively. This mistake led to wrong answers - or crashes depending on the specific datatypes involved. - </para> - </listitem> - - <listitem> - <para> - Acquire buffer lock when re-fetching the old tuple for an - <literal>AFTER ROW UPDATE/DELETE</> trigger (Andres Freund) - </para> - - <para> - In very unusual circumstances, this oversight could result in passing - incorrect data to the precheck logic for a foreign-key enforcement - trigger. That could result in a crash, or in an incorrect decision - about whether to fire the trigger. - </para> - </listitem> - - <listitem> - <para> - Fix <command>REASSIGN OWNED</> to handle grants on tablespaces - (Álvaro Herrera) - </para> - </listitem> - - <listitem> - <para> - Ignore incorrect <structname>pg_attribute</> entries for system - columns for views (Tom Lane) - </para> - - <para> - Views do not have any system columns. However, we forgot to - remove such entries when converting a table to a view. That's fixed - properly for 9.3 and later, but in previous branches we need to defend - against existing mis-converted views. - </para> - </listitem> - - <listitem> - <para> - Fix rule printing to dump <literal>INSERT INTO <replaceable>table</> - DEFAULT VALUES</literal> correctly (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Guard against stack overflow when there are too many - <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> clauses - in a query (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Prevent platform-dependent failures when dividing the minimum possible - integer value by -1 (Xi Wang, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible access past end of string in date parsing - (Hitoshi Harada) - </para> - </listitem> - - <listitem> - <para> - Produce an understandable error message if the length of the path name - for a Unix-domain socket exceeds the platform-specific limit - (Tom Lane, Andrew Dunstan) - </para> - - <para> - Formerly, this would result in something quite unhelpful, such as - <quote>Non-recoverable failure in name resolution</>. - </para> - </listitem> - - <listitem> - <para> - Fix memory leaks when sending composite column values to the client - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Make <application>pg_ctl</> more robust about reading the - <filename>postmaster.pid</> file (Heikki Linnakangas) - </para> - - <para> - Fix race conditions and possible file descriptor leakage. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash in <application>psql</> if incorrectly-encoded data - is presented and the <varname>client_encoding</> setting is a - client-only encoding, such as SJIS (Jiang Guiqing) - </para> - </listitem> - - <listitem> - <para> - Fix bugs in the <filename>restore.sql</> script emitted by - <application>pg_dump</> in <literal>tar</> output format (Tom Lane) - </para> - - <para> - The script would fail outright on tables whose names include - upper-case characters. Also, make the script capable of restoring - data in <option>--inserts</> mode as well as the regular COPY mode. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</> to accept POSIX-conformant - <literal>tar</> files (Brian Weaver, Tom Lane) - </para> - - <para> - The original coding of <application>pg_dump</>'s <literal>tar</> - output mode produced files that are not fully conformant with the - POSIX standard. This has been corrected for version 9.3. This - patch updates previous branches so that they will accept both the - incorrect and the corrected formats, in hopes of avoiding - compatibility problems when 9.3 comes out. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_resetxlog</> to locate <filename>postmaster.pid</> - correctly when given a relative path to the data directory (Tom Lane) - </para> - - <para> - This mistake could lead to <application>pg_resetxlog</> not noticing - that there is an active postmaster using the data directory. - </para> - </listitem> - - <listitem> - <para> - Fix <application>libpq</>'s <function>lo_import()</> and - <function>lo_export()</> functions to report file I/O errors properly - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</>'s processing of nested structure pointer - variables (Muhammad Usama) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/pageinspect</>'s btree page inspection - functions take buffer locks while examining pages (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pgxs</> support for building loadable modules on AIX - (Tom Lane) - </para> - - <para> - Building modules outside the original source tree didn't work on AIX. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2012j - for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western - Samoa, and portions of Brazil. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-21"> - <title>Release 8.3.21</title> - - <formalpara> - <title>Release date:</title> - <para>2012-09-24</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.20. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <para> - The <productname>PostgreSQL</> community will stop releasing updates - for the 8.3.X release series in February 2013. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.3.21</title> - - <para> - A dump/restore is not required for those running 8.3.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.3.17, - see <xref linkend="release-8-3-17">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Improve page-splitting decisions in GiST indexes (Alexander Korotkov, - Robert Haas, Tom Lane) - </para> - - <para> - Multi-column GiST indexes might suffer unexpected bloat due to this - error. - </para> - </listitem> - - <listitem> - <para> - Fix cascading privilege revoke to stop if privileges are still held - (Tom Lane) - </para> - - <para> - If we revoke a grant option from some role <replaceable>X</>, but - <replaceable>X</> still holds that option via a grant from someone - else, we should not recursively revoke the corresponding privilege - from role(s) <replaceable>Y</> that <replaceable>X</> had granted it - to. - </para> - </listitem> - - <listitem> - <para> - Fix handling of <literal>SIGFPE</> when PL/Perl is in use (Andres Freund) - </para> - - <para> - Perl resets the process's <literal>SIGFPE</> handler to - <literal>SIG_IGN</>, which could result in crashes later on. Restore - the normal Postgres signal handler after initializing PL/Perl. - </para> - </listitem> - - <listitem> - <para> - Prevent PL/Perl from crashing if a recursive PL/Perl function is - redefined while being executed (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Work around possible misoptimization in PL/Perl (Tom Lane) - </para> - - <para> - Some Linux distributions contain an incorrect version of - <filename>pthread.h</> that results in incorrect compiled code in - PL/Perl, leading to crashes if a PL/Perl function calls another one - that throws an error. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2012f - for DST law changes in Fiji - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-20"> - <title>Release 8.3.20</title> - - <formalpara> - <title>Release date:</title> - <para>2012-08-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.19. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <para> - The <productname>PostgreSQL</> community will stop releasing updates - for the 8.3.X release series in February 2013. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.3.20</title> - - <para> - A dump/restore is not required for those running 8.3.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.3.17, - see <xref linkend="release-8-3-17">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent access to external files/URLs via XML entity references - (Noah Misch, Tom Lane) - </para> - - <para> - <function>xml_parse()</> would attempt to fetch external files or - URLs as needed to resolve DTD and entity references in an XML value, - thus allowing unprivileged database users to attempt to fetch data - with the privileges of the database server. While the external data - wouldn't get returned directly to the user, portions of it could be - exposed in error messages if the data didn't parse as valid XML; and - in any case the mere ability to check existence of a file might be - useful to an attacker. (CVE-2012-3489) - </para> - </listitem> - - <listitem> - <para> - Prevent access to external files/URLs via <filename>contrib/xml2</>'s - <function>xslt_process()</> (Peter Eisentraut) - </para> - - <para> - <application>libxslt</> offers the ability to read and write both - files and URLs through stylesheet commands, thus allowing - unprivileged database users to both read and write data with the - privileges of the database server. Disable that through proper use - of <application>libxslt</>'s security options. (CVE-2012-3488) - </para> - - <para> - Also, remove <function>xslt_process()</>'s ability to fetch documents - and stylesheets from external files/URLs. While this was a - documented <quote>feature</>, it was long regarded as a bad idea. - The fix for CVE-2012-3489 broke that capability, and rather than - expend effort on trying to fix it, we're just going to summarily - remove it. - </para> - </listitem> - - <listitem> - <para> - Prevent too-early recycling of btree index pages (Noah Misch) - </para> - - <para> - When we allowed read-only transactions to skip assigning XIDs, we - introduced the possibility that a deleted btree page could be - recycled while a read-only transaction was still in flight to it. - This would result in incorrect index search results. The probability - of such an error occurring in the field seems very low because of the - timing requirements, but nonetheless it should be fixed. - </para> - </listitem> - - <listitem> - <para> - Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) - </para> - - <para> - If <command>ALTER SEQUENCE</> was executed on a freshly created or - reset sequence, and then precisely one <function>nextval()</> call - was made on it, and then the server crashed, WAL replay would restore - the sequence to a state in which it appeared that no - <function>nextval()</> had been done, thus allowing the first - sequence value to be returned again by the next - <function>nextval()</> call. In particular this could manifest for - <type>serial</> columns, since creation of a serial column's sequence - includes an <command>ALTER SEQUENCE OWNED BY</> step. - </para> - </listitem> - - <listitem> - <para> - Ensure the <filename>backup_label</> file is fsync'd after - <function>pg_start_backup()</> (Dave Kerr) - </para> - </listitem> - - <listitem> - <para> - Back-patch 9.1 improvement to compress the fsync request queue - (Robert Haas) - </para> - - <para> - This improves performance during checkpoints. The 9.1 change - has now seen enough field testing to seem safe to back-patch. - </para> - </listitem> - - <listitem> - <para> - Only allow autovacuum to be auto-canceled by a directly blocked - process (Tom Lane) - </para> - - <para> - The original coding could allow inconsistent behavior in some cases; - in particular, an autovacuum could get canceled after less than - <literal>deadlock_timeout</> grace period. - </para> - </listitem> - - <listitem> - <para> - Improve logging of autovacuum cancels (Robert Haas) - </para> - </listitem> - - <listitem> - <para> - Fix log collector so that <literal>log_truncate_on_rotation</> works - during the very first log rotation after server start (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Ensure that a whole-row reference to a subquery doesn't include any - extra <literal>GROUP BY</> or <literal>ORDER BY</> columns (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Disallow copying whole-row references in <literal>CHECK</> - constraints and index definitions during <command>CREATE TABLE</> - (Tom Lane) - </para> - - <para> - This situation can arise in <command>CREATE TABLE</> with - <literal>LIKE</> or <literal>INHERITS</>. The copied whole-row - variable was incorrectly labeled with the row type of the original - table not the new one. Rejecting the case seems reasonable for - <literal>LIKE</>, since the row types might well diverge later. For - <literal>INHERITS</> we should ideally allow it, with an implicit - coercion to the parent table's row type; but that will require more - work than seems safe to back-patch. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in <literal>ARRAY(SELECT ...)</> subqueries (Heikki - Linnakangas, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix extraction of common prefixes from regular expressions (Tom Lane) - </para> - - <para> - The code could get confused by quantified parenthesized - subexpressions, such as <literal>^(foo)?bar</>. This would lead to - incorrect index optimization of searches for such patterns. - </para> - </listitem> - - <listitem> - <para> - Report errors properly in <filename>contrib/xml2</>'s - <function>xslt_process()</> (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2012e - for DST law changes in Morocco and Tokelau - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-19"> - <title>Release 8.3.19</title> - - <formalpara> - <title>Release date:</title> - <para>2012-06-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.18. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.19</title> - - <para> - A dump/restore is not required for those running 8.3.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.3.17, - see <xref linkend="release-8-3-17">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix incorrect password transformation in - <filename>contrib/pgcrypto</>'s DES <function>crypt()</> function - (Solar Designer) - </para> - - <para> - If a password string contained the byte value <literal>0x80</>, the - remainder of the password was ignored, causing the password to be much - weaker than it appeared. With this fix, the rest of the string is - properly included in the DES hash. Any stored password values that are - affected by this bug will thus no longer match, so the stored values may - need to be updated. (CVE-2012-2143) - </para> - </listitem> - - <listitem> - <para> - Ignore <literal>SECURITY DEFINER</> and <literal>SET</> attributes for - a procedural language's call handler (Tom Lane) - </para> - - <para> - Applying such attributes to a call handler could crash the server. - (CVE-2012-2655) - </para> - </listitem> - - <listitem> - <para> - Allow numeric timezone offsets in <type>timestamp</> input to be up to - 16 hours away from UTC (Tom Lane) - </para> - - <para> - Some historical time zones have offsets larger than 15 hours, the - previous limit. This could result in dumped data values being rejected - during reload. - </para> - </listitem> - - <listitem> - <para> - Fix timestamp conversion to cope when the given time is exactly the - last DST transition time for the current timezone (Tom Lane) - </para> - - <para> - This oversight has been there a long time, but was not noticed - previously because most DST-using zones are presumed to have an - indefinite sequence of future DST transitions. - </para> - </listitem> - - <listitem> - <para> - Fix <type>text</> to <type>name</> and <type>char</> to <type>name</> - casts to perform string truncation correctly in multibyte encodings - (Karl Schnaitter) - </para> - </listitem> - - <listitem> - <para> - Fix memory copying bug in <function>to_tsquery()</> (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix slow session startup when <structname>pg_attribute</> is very large - (Tom Lane) - </para> - - <para> - If <structname>pg_attribute</> exceeds one-fourth of - <varname>shared_buffers</>, cache rebuilding code that is sometimes - needed during session start would trigger the synchronized-scan logic, - causing it to take many times longer than normal. The problem was - particularly acute if many new sessions were starting at once. - </para> - </listitem> - - <listitem> - <para> - Ensure sequential scans check for query cancel reasonably often (Merlin - Moncure) - </para> - - <para> - A scan encountering many consecutive pages that contain no live tuples - would not respond to interrupts meanwhile. - </para> - </listitem> - - <listitem> - <para> - Ensure the Windows implementation of <function>PGSemaphoreLock()</> - clears <varname>ImmediateInterruptOK</> before returning (Tom Lane) - </para> - - <para> - This oversight meant that a query-cancel interrupt received later - in the same query could be accepted at an unsafe time, with - unpredictable but not good consequences. - </para> - </listitem> - - <listitem> - <para> - Show whole-row variables safely when printing views or rules - (Abbas Butt, Tom Lane) - </para> - - <para> - Corner cases involving ambiguous names (that is, the name could be - either a table or column name of the query) were printed in an - ambiguous way, risking that the view or rule would be interpreted - differently after dump and reload. Avoid the ambiguous case by - attaching a no-op cast. - </para> - </listitem> - - <listitem> - <para> - Ensure autovacuum worker processes perform stack depth checking - properly (Heikki Linnakangas) - </para> - - <para> - Previously, infinite recursion in a function invoked by - auto-<command>ANALYZE</> could crash worker processes. - </para> - </listitem> - - <listitem> - <para> - Fix logging collector to not lose log coherency under high load (Andrew - Dunstan) - </para> - - <para> - The collector previously could fail to reassemble large messages if it - got too busy. - </para> - </listitem> - - <listitem> - <para> - Fix logging collector to ensure it will restart file rotation - after receiving <systemitem>SIGHUP</> (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix PL/pgSQL's <command>GET DIAGNOSTICS</> command when the target - is the function's first variable (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix several performance problems in <application>pg_dump</> when - the database contains many objects (Jeff Janes, Tom Lane) - </para> - - <para> - <application>pg_dump</> could get very slow if the database contained - many schemas, or if many objects are in dependency loops, or if there - are many owned sequences. - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</>'s <function>dblink_exec()</> to not leak - temporary database connections upon error (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2012c - for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland - Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; - also historical corrections for Canada. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-18"> - <title>Release 8.3.18</title> - - <formalpara> - <title>Release date:</title> - <para>2012-02-27</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.17. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.18</title> - - <para> - A dump/restore is not required for those running 8.3.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.3.17, - see <xref linkend="release-8-3-17">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Require execute permission on the trigger function for - <command>CREATE TRIGGER</> (Robert Haas) - </para> - - <para> - This missing check could allow another user to execute a trigger - function with forged input data, by installing it on a table he owns. - This is only of significance for trigger functions marked - <literal>SECURITY DEFINER</>, since otherwise trigger functions run - as the table owner anyway. (CVE-2012-0866) - </para> - </listitem> - - <listitem> - <para> - Convert newlines to spaces in names written in <application>pg_dump</> - comments (Robert Haas) - </para> - - <para> - <application>pg_dump</> was incautious about sanitizing object names - that are emitted within SQL comments in its output script. A name - containing a newline would at least render the script syntactically - incorrect. Maliciously crafted object names could present a SQL - injection risk when the script is reloaded. (CVE-2012-0868) - </para> - </listitem> - - <listitem> - <para> - Fix btree index corruption from insertions concurrent with vacuuming - (Tom Lane) - </para> - - <para> - An index page split caused by an insertion could sometimes cause a - concurrently-running <command>VACUUM</> to miss removing index entries - that it should remove. After the corresponding table rows are removed, - the dangling index entries would cause errors (such as <quote>could not - read block N in file ...</>) or worse, silently wrong query results - after unrelated rows are re-inserted at the now-free table locations. - This bug has been present since release 8.2, but occurs so infrequently - that it was not diagnosed until now. If you have reason to suspect - that it has happened in your database, reindexing the affected index - will fix things. - </para> - </listitem> - - <listitem> - <para> - Allow non-existent values for some settings in <command>ALTER - USER/DATABASE SET</> (Heikki Linnakangas) - </para> - - <para> - Allow <varname>default_text_search_config</>, - <varname>default_tablespace</>, and <varname>temp_tablespaces</> to be - set to names that are not known. This is because they might be known - in another database where the setting is intended to be used, or for the - tablespace cases because the tablespace might not be created yet. The - same issue was previously recognized for <varname>search_path</>, and - these settings now act like that one. - </para> - </listitem> - - <listitem> - <para> - Track the OID counter correctly during WAL replay, even when it wraps - around (Tom Lane) - </para> - - <para> - Previously the OID counter would remain stuck at a high value until the - system exited replay mode. The practical consequences of that are - usually nil, but there are scenarios wherein a standby server that's - been promoted to master might take a long time to advance the OID - counter to a reasonable value once values are needed. - </para> - </listitem> - - <listitem> - <para> - Fix regular expression back-references with <literal>*</> attached - (Tom Lane) - </para> - - <para> - Rather than enforcing an exact string match, the code would effectively - accept any string that satisfies the pattern sub-expression referenced - by the back-reference symbol. - </para> - - <para> - A similar problem still afflicts back-references that are embedded in a - larger quantified expression, rather than being the immediate subject - of the quantifier. This will be addressed in a future - <productname>PostgreSQL</> release. - </para> - </listitem> - - <listitem> - <para> - Fix recently-introduced memory leak in processing of - <type>inet</>/<type>cidr</> values (Heikki Linnakangas) - </para> - - <para> - A patch in the December 2011 releases of <productname>PostgreSQL</> - caused memory leakage in these operations, which could be significant - in scenarios such as building a btree index on such a column. - </para> - </listitem> - - <listitem> - <para> - Avoid double close of file handle in syslogger on Windows (MauMau) - </para> - - <para> - Ordinarily this error was invisible, but it would cause an exception - when running on a debug version of Windows. - </para> - </listitem> - - <listitem> - <para> - Fix I/O-conversion-related memory leaks in plpgsql - (Andres Freund, Jan Urbanski, Tom Lane) - </para> - - <para> - Certain operations would leak memory until the end of the current - function. - </para> - </listitem> - - <listitem> - <para> - Improve <application>pg_dump</>'s handling of inherited table columns - (Tom Lane) - </para> - - <para> - <application>pg_dump</> mishandled situations where a child column has - a different default expression than its parent column. If the default - is textually identical to the parent's default, but not actually the - same (for instance, because of schema search path differences) it would - not be recognized as different, so that after dump and restore the - child would be allowed to inherit the parent's default. Child columns - that are <literal>NOT NULL</> where their parent is not could also be - restored subtly incorrectly. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</>'s direct-to-database mode for - INSERT-style table data (Tom Lane) - </para> - - <para> - Direct-to-database restores from archive files made with - <option>--inserts</> or <option>--column-inserts</> options fail when - using <application>pg_restore</> from a release dated September or - December 2011, as a result of an oversight in a fix for another - problem. The archive file itself is not at fault, and text-mode - output is okay. - </para> - </listitem> - - <listitem> - <para> - Fix error in <filename>contrib/intarray</>'s <literal>int[] & - int[]</> operator (Guillaume Lelarge) - </para> - - <para> - If the smallest integer the two input arrays have in common is 1, - and there are smaller values in either array, then 1 would be - incorrectly omitted from the result. - </para> - </listitem> - - <listitem> - <para> - Fix error detection in <filename>contrib/pgcrypto</>'s - <function>encrypt_iv()</> and <function>decrypt_iv()</> - (Marko Kreen) - </para> - - <para> - These functions failed to report certain types of invalid-input errors, - and would instead return random garbage values for incorrect input. - </para> - </listitem> - - <listitem> - <para> - Fix one-byte buffer overrun in <filename>contrib/test_parser</> - (Paul Guyot) - </para> - - <para> - The code would try to read one more byte than it should, which would - crash in corner cases. - Since <filename>contrib/test_parser</> is only example code, this is - not a security issue in itself, but bad example code is still bad. - </para> - </listitem> - - <listitem> - <para> - Use <function>__sync_lock_test_and_set()</> for spinlocks on ARM, if - available (Martin Pitt) - </para> - - <para> - This function replaces our previous use of the <literal>SWPB</> - instruction, which is deprecated and not available on ARMv6 and later. - Reports suggest that the old code doesn't fail in an obvious way on - recent ARM boards, but simply doesn't interlock concurrent accesses, - leading to bizarre failures in multiprocess operation. - </para> - </listitem> - - <listitem> - <para> - Use <option>-fexcess-precision=standard</> option when building with - gcc versions that accept it (Andrew Dunstan) - </para> - - <para> - This prevents assorted scenarios wherein recent versions of gcc will - produce creative results. - </para> - </listitem> - - <listitem> - <para> - Allow use of threaded Python on FreeBSD (Chris Rees) - </para> - - <para> - Our configure script previously believed that this combination wouldn't - work; but FreeBSD fixed the problem, so remove that error check. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-17"> - <title>Release 8.3.17</title> - - <formalpara> - <title>Release date:</title> - <para>2011-12-05</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.16. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.17</title> - - <para> - A dump/restore is not required for those running 8.3.X. - </para> - - <para> - However, a longstanding error was discovered in the definition of the - <literal>information_schema.referential_constraints</> view. If you - rely on correct results from that view, you should replace its - definition as explained in the first changelog item below. - </para> - - <para> - Also, if you are upgrading from a version earlier than 8.3.8, - see <xref linkend="release-8-3-8">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix bugs in <literal>information_schema.referential_constraints</> view - (Tom Lane) - </para> - - <para> - This view was being insufficiently careful about matching the - foreign-key constraint to the depended-on primary or unique key - constraint. That could result in failure to show a foreign key - constraint at all, or showing it multiple times, or claiming that it - depends on a different constraint than the one it really does. - </para> - - <para> - Since the view definition is installed by <application>initdb</>, - merely upgrading will not fix the problem. If you need to fix this - in an existing installation, you can (as a superuser) drop the - <literal>information_schema</> schema then re-create it by sourcing - <filename><replaceable>SHAREDIR</>/information_schema.sql</filename>. - (Run <literal>pg_config --sharedir</> if you're uncertain where - <replaceable>SHAREDIR</> is.) This must be repeated in each database - to be fixed. - </para> - </listitem> - - <listitem> - <para> - Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS - SELECT * FROM src</> or <literal>INSERT INTO dest SELECT * FROM src</> - (Tom Lane) - </para> - - <para> - If a table has been modified by <command>ALTER TABLE ADD COLUMN</>, - attempts to copy its data verbatim to another table could produce - corrupt results in certain corner cases. - The problem can only manifest in this precise form in 8.4 and later, - but we patched earlier versions as well in case there are other code - paths that could trigger the same bug. - </para> - </listitem> - - <listitem> - <para> - Fix race condition during toast table access from stale syscache entries - (Tom Lane) - </para> - - <para> - The typical symptom was transient errors like <quote>missing chunk - number 0 for toast value NNNNN in pg_toast_2619</>, where the cited - toast table would always belong to a system catalog. - </para> - </listitem> - - <listitem> - <para> - Make <function>DatumGetInetP()</> unpack inet datums that have a 1-byte - header, and add a new macro, <function>DatumGetInetPP()</>, that does - not (Heikki Linnakangas) - </para> - - <para> - This change affects no core code, but might prevent crashes in add-on - code that expects <function>DatumGetInetP()</> to produce an unpacked - datum as per usual convention. - </para> - </listitem> - - <listitem> - <para> - Improve locale support in <type>money</> type's input and output - (Tom Lane) - </para> - - <para> - Aside from not supporting all standard - <link linkend="guc-lc-monetary"><varname>lc_monetary</></link> - formatting options, the input and output functions were inconsistent, - meaning there were locales in which dumped <type>money</> values could - not be re-read. - </para> - </listitem> - - <listitem> - <para> - Don't let <link - linkend="guc-transform-null-equals"><varname>transform_null_equals</></link> - affect <literal>CASE foo WHEN NULL ...</> constructs - (Heikki Linnakangas) - </para> - - <para> - <varname>transform_null_equals</> is only supposed to affect - <literal>foo = NULL</> expressions written directly by the user, not - equality checks generated internally by this form of <literal>CASE</>. - </para> - </listitem> - - <listitem> - <para> - Change foreign-key trigger creation order to better support - self-referential foreign keys (Tom Lane) - </para> - - <para> - For a cascading foreign key that references its own table, a row update - will fire both the <literal>ON UPDATE</> trigger and the - <literal>CHECK</> trigger as one event. The <literal>ON UPDATE</> - trigger must execute first, else the <literal>CHECK</> will check a - non-final state of the row and possibly throw an inappropriate error. - However, the firing order of these triggers is determined by their - names, which generally sort in creation order since the triggers have - auto-generated names following the convention - <quote>RI_ConstraintTrigger_NNNN</>. A proper fix would require - modifying that convention, which we will do in 9.2, but it seems risky - to change it in existing releases. So this patch just changes the - creation order of the triggers. Users encountering this type of error - should drop and re-create the foreign key constraint to get its - triggers into the right order. - </para> - </listitem> - - <listitem> - <para> - Avoid floating-point underflow while tracking buffer allocation rate - (Greg Matthews) - </para> - - <para> - While harmless in itself, on certain platforms this would result in - annoying kernel log messages. - </para> - </listitem> - - <listitem> - <para> - Preserve blank lines within commands in <application>psql</>'s command - history (Robert Haas) - </para> - - <para> - The former behavior could cause problems if an empty line was removed - from within a string literal, for example. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_dump</> to dump user-defined casts between - auto-generated types, such as table rowtypes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Use the preferred version of <application>xsubpp</> to build PL/Perl, - not necessarily the operating system's main copy - (David Wheeler and Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect coding in <filename>contrib/dict_int</> and - <filename>contrib/dict_xsyn</> (Tom Lane) - </para> - - <para> - Some functions incorrectly assumed that memory returned by - <function>palloc()</> is guaranteed zeroed. - </para> - </listitem> - - <listitem> - <para> - Honor query cancel interrupts promptly in <function>pgstatindex()</> - (Robert Haas) - </para> - </listitem> - - <listitem> - <para> - Ensure VPATH builds properly install all server header files - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Shorten file names reported in verbose error messages (Peter Eisentraut) - </para> - - <para> - Regular builds have always reported just the name of the C file - containing the error message call, but VPATH builds formerly - reported an absolute path name. - </para> - </listitem> - - <listitem> - <para> - Fix interpretation of Windows timezone names for Central America - (Tom Lane) - </para> - - <para> - Map <quote>Central America Standard Time</> to <literal>CST6</>, not - <literal>CST6CDT</>, because DST is generally not observed anywhere in - Central America. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2011n - for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; - also historical corrections for Alaska and British East Africa. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-16"> - <title>Release 8.3.16</title> - - <formalpara> - <title>Release date:</title> - <para>2011-09-26</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.15. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.16</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.8, - see <xref linkend="release-8-3-8">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane) - </para> - - <para> - These bugs could result in index corruption after reindexing a system - catalog. They are not believed to affect user indexes. - </para> - </listitem> - - <listitem> - <para> - Fix multiple bugs in GiST index page split processing (Heikki - Linnakangas) - </para> - - <para> - The probability of occurrence was low, but these could lead to index - corruption. - </para> - </listitem> - - <listitem> - <para> - Fix possible buffer overrun in <function>tsvector_concat()</> - (Tom Lane) - </para> - - <para> - The function could underestimate the amount of memory needed for its - result, leading to server crashes. - </para> - </listitem> - - <listitem> - <para> - Fix crash in <function>xml_recv</> when processing a - <quote>standalone</> parameter (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Avoid possibly accessing off the end of memory in <command>ANALYZE</> - and in SJIS-2004 encoding conversion (Noah Misch) - </para> - - <para> - This fixes some very-low-probability server crash scenarios. - </para> - </listitem> - - <listitem> - <para> - Fix race condition in relcache init file invalidation (Tom Lane) - </para> - - <para> - There was a window wherein a new backend process could read a stale init - file but miss the inval messages that would tell it the data is stale. - The result would be bizarre failures in catalog accesses, typically - <quote>could not read block 0 in file ...</> later during startup. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak at end of a GiST index scan (Tom Lane) - </para> - - <para> - Commands that perform many separate GiST index scans, such as - verification of a new GiST-based exclusion constraint on a table - already containing many rows, could transiently require large amounts of - memory due to this leak. - </para> - </listitem> - - <listitem> - <para> - Fix performance problem when constructing a large, lossy bitmap - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix array- and path-creating functions to ensure padding bytes are - zeroes (Tom Lane) - </para> - - <para> - This avoids some situations where the planner will think that - semantically-equal constants are not equal, resulting in poor - optimization. - </para> - </listitem> - - <listitem> - <para> - Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane) - </para> - - <para> - This could lead to loss of committed transactions after a server crash. - </para> - </listitem> - - <listitem> - <para> - Fix dump bug for <literal>VALUES</> in a view (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Disallow <literal>SELECT FOR UPDATE/SHARE</> on sequences (Tom Lane) - </para> - - <para> - This operation doesn't work as expected and can lead to failures. - </para> - </listitem> - - <listitem> - <para> - Defend against integer overflow when computing size of a hash table (Tom - Lane) - </para> - </listitem> - - <listitem> - <para> - Fix cases where <command>CLUSTER</> might attempt to access - already-removed TOAST data (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix portability bugs in use of credentials control messages for - <quote>peer</> authentication (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari, - Magnus Hagander) - </para> - - <para> - The typical symptom of this problem was <quote>The function requested is - not supported</> errors during SSPI login. - </para> - </listitem> - - <listitem> - <para> - Fix typo in <function>pg_srand48</> seed initialization (Andres Freund) - </para> - - <para> - This led to failure to use all bits of the provided seed. This function - is not used on most platforms (only those without <function>srandom</>), - and the potential security exposure from a less-random-than-expected - seed seems minimal in any case. - </para> - </listitem> - - <listitem> - <para> - Avoid integer overflow when the sum of <literal>LIMIT</> and - <literal>OFFSET</> values exceeds 2^63 (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Add overflow checks to <type>int4</> and <type>int8</> versions of - <function>generate_series()</> (Robert Haas) - </para> - </listitem> - - <listitem> - <para> - Fix trailing-zero removal in <function>to_char()</> (Marti Raudsepp) - </para> - - <para> - In a format with <literal>FM</> and no digit positions - after the decimal point, zeroes to the left of the decimal point could - be removed incorrectly. - </para> - </listitem> - - <listitem> - <para> - Fix <function>pg_size_pretty()</> to avoid overflow for inputs close to - 2^63 (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - In <application>pg_ctl</>, support silent mode for service registrations - on Windows (MauMau) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s counting of script file line numbers during - <literal>COPY</> from a different file (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</>'s direct-to-database mode for - <varname>standard_conforming_strings</> (Tom Lane) - </para> - - <para> - <application>pg_restore</> could emit incorrect commands when restoring - directly to a database server from an archive file that had been made - with <varname>standard_conforming_strings</> set to <literal>on</>. - </para> - </listitem> - - <listitem> - <para> - Fix write-past-buffer-end and memory leak in <application>libpq</>'s - LDAP service lookup code (Albe Laurenz) - </para> - </listitem> - - <listitem> - <para> - In <application>libpq</>, avoid failures when using nonblocking I/O - and an SSL connection (Martin Pihlak, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Improve libpq's handling of failures during connection startup - (Tom Lane) - </para> - - <para> - In particular, the response to a server report of <function>fork()</> - failure during SSL connection startup is now saner. - </para> - </listitem> - - <listitem> - <para> - Improve <application>libpq</>'s error reporting for SSL failures (Tom - Lane) - </para> - </listitem> - - <listitem> - <para> - Make <application>ecpglib</> write <type>double</> values with 15 digits - precision (Akira Kurosawa) - </para> - </listitem> - - <listitem> - <para> - In <application>ecpglib</>, be sure <literal>LC_NUMERIC</> setting is - restored after an error (Michael Meskes) - </para> - </listitem> - - <listitem> - <para> - Apply upstream fix for blowfish signed-character bug (CVE-2011-2483) - (Tom Lane) - </para> - - <para> - <filename>contrib/pg_crypto</>'s blowfish encryption code could give - wrong results on platforms where char is signed (which is most), - leading to encrypted passwords being weaker than they should be. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in <filename>contrib/seg</> (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix <function>pgstatindex()</> to give consistent results for empty - indexes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Allow building with perl 5.14 (Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Update configure script's method for probing existence of system - functions (Tom Lane) - </para> - - <para> - The version of autoconf we used in 8.3 and 8.2 could be fooled by - compilers that perform link-time optimization. - </para> - </listitem> - - <listitem> - <para> - Fix assorted issues with build and install file paths containing spaces - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2011i - for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-15"> - <title>Release 8.3.15</title> - - <formalpara> - <title>Release date:</title> - <para>2011-04-18</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.14. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.15</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.8, - see <xref linkend="release-8-3-8">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Disallow including a composite type in itself (Tom Lane) - </para> - - <para> - This prevents scenarios wherein the server could recurse infinitely - while processing the composite type. While there are some possible - uses for such a structure, they don't seem compelling enough to - justify the effort required to make sure it always works safely. - </para> - </listitem> - - <listitem> - <para> - Avoid potential deadlock during catalog cache initialization - (Nikhil Sontakke) - </para> - - <para> - In some cases the cache loading code would acquire share lock on a - system index before locking the index's catalog. This could deadlock - against processes trying to acquire exclusive locks in the other, - more standard order. - </para> - </listitem> - - <listitem> - <para> - Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</> trigger - handling when there was a concurrent update to the target tuple - (Tom Lane) - </para> - - <para> - This bug has been observed to result in intermittent <quote>cannot - extract system attribute from virtual tuple</> failures while trying to - do <literal>UPDATE RETURNING ctid</>. There is a very small probability - of more serious errors, such as generating incorrect index entries for - the updated tuple. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>DROP TABLE</> when there are pending deferred trigger - events for the table (Tom Lane) - </para> - - <para> - Formerly the <command>DROP</> would go through, leading to - <quote>could not open relation with OID nnn</> errors when the - triggers were eventually fired. - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python memory leak involving array slices (Daniel Popowich) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</> to cope with long lines (over 1KB) in - TOC files (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Put in more safeguards against crashing due to division-by-zero - with overly enthusiastic compiler optimization (Aurelien Jarno) - </para> - </listitem> - - <listitem> - <para> - Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane) - </para> - - <para> - There was a hard-wired assumption that this system function was not - available on MIPS hardware on these systems. Use a compile-time test - instead, since more recent versions have it. - </para> - </listitem> - - <listitem> - <para> - Fix compilation failures on HP-UX (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix version-incompatibility problem with <application>libintl</> on - Windows (Hiroshi Inoue) - </para> - </listitem> - - <listitem> - <para> - Fix usage of <application>xcopy</> in Windows build scripts to - work correctly under Windows 7 (Andrew Dunstan) - </para> - - <para> - This affects the build scripts only, not installation or usage. - </para> - </listitem> - - <listitem> - <para> - Fix path separator used by <application>pg_regress</> on Cygwin - (Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2011f - for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa, - and Turkey; also historical corrections for South Australia, Alaska, - and Hawaii. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-14"> - <title>Release 8.3.14</title> - - <formalpara> - <title>Release date:</title> - <para>2011-01-31</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.13. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.14</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.8, - see <xref linkend="release-8-3-8">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Avoid failures when <command>EXPLAIN</> tries to display a simple-form - <literal>CASE</> expression (Tom Lane) - </para> - - <para> - If the <literal>CASE</>'s test expression was a constant, the planner - could simplify the <literal>CASE</> into a form that confused the - expression-display code, resulting in <quote>unexpected CASE WHEN - clause</> errors. - </para> - </listitem> - - <listitem> - <para> - Fix assignment to an array slice that is before the existing range - of subscripts (Tom Lane) - </para> - - <para> - If there was a gap between the newly added subscripts and the first - pre-existing subscript, the code miscalculated how many entries needed - to be copied from the old array's null bitmap, potentially leading to - data corruption or crash. - </para> - </listitem> - - <listitem> - <para> - Avoid unexpected conversion overflow in planner for very distant date - values (Tom Lane) - </para> - - <para> - The <type>date</> type supports a wider range of dates than can be - represented by the <type>timestamp</> types, but the planner assumed it - could always convert a date to timestamp with impunity. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</>'s text output for large objects (BLOBs) - when <varname>standard_conforming_strings</> is on (Tom Lane) - </para> - - <para> - Although restoring directly to a database worked correctly, string - escaping was incorrect if <application>pg_restore</> was asked for - SQL text output and <varname>standard_conforming_strings</> had been - enabled in the source database. - </para> - </listitem> - - <listitem> - <para> - Fix erroneous parsing of <type>tsquery</> values containing - <literal>... & !(subexpression) | ...</literal> (Tom Lane) - </para> - - <para> - Queries containing this combination of operators were not executed - correctly. The same error existed in <filename>contrib/intarray</>'s - <type>query_int</> type and <filename>contrib/ltree</>'s - <type>ltxtquery</> type. - </para> - </listitem> - - <listitem> - <para> - Fix buffer overrun in <filename>contrib/intarray</>'s input function - for the <type>query_int</> type (Apple) - </para> - - <para> - This bug is a security risk since the function's return address could - be overwritten. Thanks to Apple Inc's security team for reporting this - issue and supplying the fix. (CVE-2010-4015) - </para> - </listitem> - - <listitem> - <para> - Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm - (Alexander Korotkov) - </para> - - <para> - This could result in considerable inefficiency, though not actually - incorrect answers, in a GiST index on a <type>seg</> column. - If you have such an index, consider <command>REINDEX</>ing it after - installing this update. (This is identical to the bug that was fixed in - <filename>contrib/cube</> in the previous update.) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-13"> - <title>Release 8.3.13</title> - - <formalpara> - <title>Release date:</title> - <para>2010-12-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.12. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.13</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.8, - see <xref linkend="release-8-3-8">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Force the default - <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link> - to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp) - </para> - - <para> - The default on Linux has actually been <literal>fdatasync</> for many - years, but recent kernel changes caused <productname>PostgreSQL</> to - choose <literal>open_datasync</> instead. This choice did not result - in any performance improvement, and caused outright failures on - certain filesystems, notably <literal>ext4</> with the - <literal>data=journal</> mount option. - </para> - </listitem> - - <listitem> - <para> - Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane) - </para> - - <para> - This could result in <quote>bad buffer id: 0</> failures or - corruption of index contents during replication. - </para> - </listitem> - - <listitem> - <para> - Fix recovery from base backup when the starting checkpoint WAL record - is not in the same WAL segment as its redo point (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Fix persistent slowdown of autovacuum workers when multiple workers - remain active for a long time (Tom Lane) - </para> - - <para> - The effective <varname>vacuum_cost_limit</> for an autovacuum worker - could drop to nearly zero if it processed enough tables, causing it - to run extremely slowly. - </para> - </listitem> - - <listitem> - <para> - Add support for detecting register-stack overrun on <literal>IA64</> - (Tom Lane) - </para> - - <para> - The <literal>IA64</> architecture has two hardware stacks. Full - prevention of stack-overrun failures requires checking both. - </para> - </listitem> - - <listitem> - <para> - Add a check for stack overflow in <function>copyObject()</> (Tom Lane) - </para> - - <para> - Certain code paths could crash due to stack overflow given a - sufficiently complex query. - </para> - </listitem> - - <listitem> - <para> - Fix detection of page splits in temporary GiST indexes (Heikki - Linnakangas) - </para> - - <para> - It is possible to have a <quote>concurrent</> page split in a - temporary index, if for example there is an open cursor scanning the - index when an insertion is done. GiST failed to detect this case and - hence could deliver wrong results when execution of the cursor - continued. - </para> - </listitem> - - <listitem> - <para> - Avoid memory leakage while <command>ANALYZE</>'ing complex index - expressions (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Ensure an index that uses a whole-row Var still depends on its table - (Tom Lane) - </para> - - <para> - An index declared like <literal>create index i on t (foo(t.*))</> - would not automatically get dropped when its table was dropped. - </para> - </listitem> - - <listitem> - <para> - Do not <quote>inline</> a SQL function with multiple <literal>OUT</> - parameters (Tom Lane) - </para> - - <para> - This avoids a possible crash due to loss of information about the - expected result rowtype. - </para> - </listitem> - - <listitem> - <para> - Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>, - <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the - <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane) - </para> - - <para> - The planner would sometimes attempt to evaluate sub-expressions that - in fact could never be reached, possibly leading to unexpected errors. - </para> - </listitem> - - <listitem> - <para> - Fix postmaster crash when connection acceptance - (<function>accept()</> or one of the calls made immediately after it) - fails, and the postmaster was compiled with GSSAPI support (Alexander - Chernikov) - </para> - </listitem> - - <listitem> - <para> - Fix missed unlink of temporary files when <varname>log_temp_files</> - is active (Tom Lane) - </para> - - <para> - If an error occurred while attempting to emit the log message, the - unlink was not done, resulting in accumulation of temp files. - </para> - </listitem> - - <listitem> - <para> - Add print functionality for <structname>InhRelation</> nodes (Tom Lane) - </para> - - <para> - This avoids a failure when <varname>debug_print_parse</> is enabled - and certain types of query are executed. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect calculation of distance from a point to a horizontal - line segment (Tom Lane) - </para> - - <para> - This bug affected several different geometric distance-measurement - operators. - </para> - </listitem> - - <listitem> - <para> - Fix <application>PL/pgSQL</>'s handling of <quote>simple</> - expressions to not fail in recursion or error-recovery cases (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>PL/Python</>'s handling of set-returning functions - (Jan Urbanski) - </para> - - <para> - Attempts to call SPI functions within the iterator generating a set - result would fail. - </para> - </listitem> - - <listitem> - <para> - Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm - (Alexander Korotkov) - </para> - - <para> - This could result in considerable inefficiency, though not actually - incorrect answers, in a GiST index on a <type>cube</> column. - If you have such an index, consider <command>REINDEX</>ing it after - installing this update. - </para> - </listitem> - - <listitem> - <para> - Don't emit <quote>identifier will be truncated</> notices in - <filename>contrib/dblink</> except when creating new connections - (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix potential coredump on missing public key in - <filename>contrib/pgcrypto</> (Marti Raudsepp) - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in <filename>contrib/xml2</>'s XPath query functions - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010o - for DST law changes in Fiji and Samoa; - also historical corrections for Hong Kong. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-12"> - <title>Release 8.3.12</title> - - <formalpara> - <title>Release date:</title> - <para>2010-10-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.11. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.12</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.8, - see <xref linkend="release-8-3-8">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Use a separate interpreter for each calling SQL userid in PL/Perl and - PL/Tcl (Tom Lane) - </para> - - <para> - This change prevents security problems that can be caused by subverting - Perl or Tcl code that will be executed later in the same session under - another SQL user identity (for example, within a <literal>SECURITY - DEFINER</> function). Most scripting languages offer numerous ways that - that might be done, such as redefining standard functions or operators - called by the target function. Without this change, any SQL user with - Perl or Tcl language usage rights can do essentially anything with the - SQL privileges of the target function's owner. - </para> - - <para> - The cost of this change is that intentional communication among Perl - and Tcl functions becomes more difficult. To provide an escape hatch, - PL/PerlU and PL/TclU functions continue to use only one interpreter - per session. This is not considered a security issue since all such - functions execute at the trust level of a database superuser already. - </para> - - <para> - It is likely that third-party procedural languages that claim to offer - trusted execution have similar security issues. We advise contacting - the authors of any PL you are depending on for security-critical - purposes. - </para> - - <para> - Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433). - </para> - </listitem> - - <listitem> - <para> - Prevent possible crashes in <function>pg_get_expr()</> by disallowing - it from being called with an argument that is not one of the system - catalog columns it's intended to be used with - (Heikki Linnakangas, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on - Windows (Magnus Hagander) - </para> - - <para> - Under high load, Windows processes will sometimes fail at startup with - this error code. Formerly the postmaster treated this as a panic - condition and restarted the whole database, but that seems to be - an overreaction. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect usage of non-strict OR joinclauses in Append indexscans - (Tom Lane) - </para> - - <para> - This is a back-patch of an 8.4 fix that was missed in the 8.3 branch. - This corrects an error introduced in 8.3.8 that could cause incorrect - results for outer joins when the inner relation is an inheritance tree - or <literal>UNION ALL</> subquery. - </para> - </listitem> - - <listitem> - <para> - Fix possible duplicate scans of <literal>UNION ALL</> member relations - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane) - </para> - - <para> - This occurred when a sub-select contains a join alias reference that - expands into an expression containing another sub-select. - </para> - </listitem> - - <listitem> - <para> - Fix failure to mark cached plans as transient (Tom Lane) - </para> - - <para> - If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</> is - in progress for one of the referenced tables, it is supposed to be - re-planned once the index is ready for use. This was not happening - reliably. - </para> - </listitem> - - <listitem> - <para> - Reduce PANIC to ERROR in some occasionally-reported btree failure cases, - and provide additional detail in the resulting error messages - (Tom Lane) - </para> - - <para> - This should improve the system's robustness with corrupted indexes. - </para> - </listitem> - - <listitem> - <para> - Prevent show_session_authorization() from crashing within autovacuum - processes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Defend against functions returning setof record where not all the - returned rows are actually of the same rowtype (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible failure when hashing a pass-by-reference function result - (Tao Ma, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Improve merge join's handling of NULLs in the join columns (Tom Lane) - </para> - - <para> - A merge join can now stop entirely upon reaching the first NULL, - if the sort order is such that NULLs sort high. - </para> - </listitem> - - <listitem> - <para> - Take care to fsync the contents of lockfiles (both - <filename>postmaster.pid</> and the socket lockfile) while writing them - (Tom Lane) - </para> - - <para> - This omission could result in corrupted lockfile contents if the - machine crashes shortly after postmaster start. That could in turn - prevent subsequent attempts to start the postmaster from succeeding, - until the lockfile is manually removed. - </para> - </listitem> - - <listitem> - <para> - Avoid recursion while assigning XIDs to heavily-nested - subtransactions (Andres Freund, Robert Haas) - </para> - - <para> - The original coding could result in a crash if there was limited - stack space. - </para> - </listitem> - - <listitem> - <para> - Avoid holding open old WAL segments in the walwriter process - (Magnus Hagander, Heikki Linnakangas) - </para> - - <para> - The previous coding would prevent removal of no-longer-needed segments. - </para> - </listitem> - - <listitem> - <para> - Fix <varname>log_line_prefix</>'s <literal>%i</> escape, - which could produce junk early in backend startup (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible data corruption in <command>ALTER TABLE ... SET - TABLESPACE</> when archiving is enabled (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET - TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge) - </para> - </listitem> - - <listitem> - <para> - Fix <command>REASSIGN OWNED</> to handle operator classes and families - (Asko Tiidumaa) - </para> - </listitem> - - <listitem> - <para> - Fix possible core dump when comparing two empty <type>tsquery</> values - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>LIKE</>'s handling of patterns containing <literal>%</> - followed by <literal>_</> (Tom Lane) - </para> - - <para> - We've fixed this before, but there were still some incorrectly-handled - cases. - </para> - </listitem> - - <listitem> - <para> - In PL/Python, defend against null pointer results from - <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</> - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Make psql recognize <command>DISCARD ALL</> as a command that should - not be encased in a transaction block in autocommit-off mode - (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</> to process data from <literal>RETURNING</> - clauses correctly (Michael Meskes) - </para> - </listitem> - - <listitem> - <para> - Improve <filename>contrib/dblink</>'s handling of tables containing - dropped columns (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix connection leak after <quote>duplicate connection name</quote> - errors in <filename>contrib/dblink</> (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</> to handle connection names longer than - 62 bytes correctly (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Add <function>hstore(text, text)</> - function to <filename>contrib/hstore</> (Robert Haas) - </para> - - <para> - This function is the recommended substitute for the now-deprecated - <literal>=></> operator. It was back-patched so that future-proofed - code can be used with older server versions. Note that the patch will - be effective only after <filename>contrib/hstore</> is installed or - reinstalled in a particular database. Users might prefer to execute - the <command>CREATE FUNCTION</> command by hand, instead. - </para> - </listitem> - - <listitem> - <para> - Update build infrastructure and documentation to reflect the source code - repository's move from CVS to Git (Magnus Hagander and others) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010l - for DST law changes in Egypt and Palestine; also historical corrections - for Finland. - </para> - - <para> - This change also adds new names for two Micronesian timezones: - Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred - abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over - Pacific/Ponape. - </para> - </listitem> - - <listitem> - <para> - Make Windows' <quote>N. Central Asia Standard Time</> timezone map to - Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander) - </para> - - <para> - Microsoft changed the DST behavior of this zone in the timezone update - from KB976098. Asia/Novosibirsk is a better match to its new behavior. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-11"> - <title>Release 8.3.11</title> - - <formalpara> - <title>Release date:</title> - <para>2010-05-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.10. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.11</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.8, - see <xref linkend="release-8-3-8">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Enforce restrictions in <literal>plperl</> using an opmask applied to - the whole interpreter, instead of using <filename>Safe.pm</> - (Tim Bunce, Andrew Dunstan) - </para> - - <para> - Recent developments have convinced us that <filename>Safe.pm</> is too - insecure to rely on for making <literal>plperl</> trustable. This - change removes use of <filename>Safe.pm</> altogether, in favor of using - a separate interpreter with an opcode mask that is always applied. - Pleasant side effects of the change include that it is now possible to - use Perl's <literal>strict</> pragma in a natural way in - <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</> - variables work as expected in sort routines, and that function - compilation is significantly faster. (CVE-2010-1169) - </para> - </listitem> - - <listitem> - <para> - Prevent PL/Tcl from executing untrustworthy code from - <structname>pltcl_modules</> (Tom) - </para> - - <para> - PL/Tcl's feature for autoloading Tcl code from a database table - could be exploited for trojan-horse attacks, because there was no - restriction on who could create or insert into that table. This change - disables the feature unless <structname>pltcl_modules</> is owned by a - superuser. (However, the permissions on the table are not checked, so - installations that really need a less-than-secure modules table can - still grant suitable privileges to trusted non-superusers.) Also, - prevent loading code into the unrestricted <quote>normal</> Tcl - interpreter unless we are really going to execute a <literal>pltclu</> - function. (CVE-2010-1170) - </para> - </listitem> - - <listitem> - <para> - Fix possible crash if a cache reset message is received during - rebuild of a relcache entry (Heikki) - </para> - - <para> - This error was introduced in 8.3.10 while fixing a related failure. - </para> - </listitem> - - <listitem> - <para> - Apply per-function GUC settings while running the language validator - for the function (Itagaki Takahiro) - </para> - - <para> - This avoids failures if the function's code is invalid without the - setting; an example is that SQL functions may not parse if the - <varname>search_path</> is not correct. - </para> - </listitem> - - <listitem> - <para> - Do not allow an unprivileged user to reset superuser-only parameter - settings (Alvaro) - </para> - - <para> - Previously, if an unprivileged user ran <literal>ALTER USER ... RESET - ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for - a database he owns, this would remove all special parameter settings - for the user or database, even ones that are only supposed to be - changeable by a superuser. Now, the <command>ALTER</> will only - remove the parameters that the user has permission to change. - </para> - </listitem> - - <listitem> - <para> - Avoid possible crash during backend shutdown if shutdown occurs - when a <literal>CONTEXT</> addition would be made to log entries (Tom) - </para> - - <para> - In some cases the context-printing function would fail because the - current transaction had already been rolled back when it came time - to print a log message. - </para> - </listitem> - - <listitem> - <para> - Ensure the archiver process responds to changes in - <varname>archive_command</> as soon as possible (Tom) - </para> - </listitem> - - <listitem> - <para> - Update pl/perl's <filename>ppport.h</> for modern Perl versions - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix assorted memory leaks in pl/python (Andreas Freund, Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent infinite recursion in <application>psql</> when expanding - a variable that refers to itself (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s <literal>\copy</> to not add spaces around - a dot within <literal>\copy (select ...)</> (Tom) - </para> - - <para> - Addition of spaces around the decimal point in a numeric literal would - result in a syntax error. - </para> - </listitem> - - <listitem> - <para> - Fix unnecessary <quote>GIN indexes do not support whole-index scans</> - errors for unsatisfiable queries using <filename>contrib/intarray</> - operators (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure that <filename>contrib/pgstattuple</> functions respond to cancel - interrupts promptly (Tatsuhito Kasahara) - </para> - </listitem> - - <listitem> - <para> - Make server startup deal properly with the case that - <function>shmget()</> returns <literal>EINVAL</> for an existing - shared memory segment (Tom) - </para> - - <para> - This behavior has been observed on BSD-derived kernels including OS X. - It resulted in an entirely-misleading startup failure complaining that - the shared memory request size was too large. - </para> - </listitem> - - <listitem> - <para> - Avoid possible crashes in syslogger process on Windows (Heikki) - </para> - </listitem> - - <listitem> - <para> - Deal more robustly with incomplete time zone information in the - Windows registry (Magnus) - </para> - </listitem> - - <listitem> - <para> - Update the set of known Windows time zone names (Magnus) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010j - for DST law changes in Argentina, Australian Antarctic, Bangladesh, - Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; - also historical corrections for Taiwan. - </para> - - <para> - Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of - timezone abbreviations. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-10"> - <title>Release 8.3.10</title> - - <formalpara> - <title>Release date:</title> - <para>2010-03-15</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.9. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.10</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.8, - see <xref linkend="release-8-3-8">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Add new configuration parameter <varname>ssl_renegotiation_limit</> to - control how often we do session key renegotiation for an SSL connection - (Magnus) - </para> - - <para> - This can be set to zero to disable renegotiation completely, which may - be required if a broken SSL library is used. In particular, some - vendors are shipping stopgap patches for CVE-2009-3555 that cause - renegotiation attempts to fail. - </para> - </listitem> - - <listitem> - <para> - Fix possible deadlock during backend startup (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes due to not handling errors during relcache reload - cleanly (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to use of dangling pointer to a cached plan - (Tatsuo) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes when trying to recover from a failure in - subtransaction start (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix server memory leak associated with use of savepoints and a client - encoding different from server's encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST - index page split (Yoichi Hirai) - </para> - - <para> - This would result in index corruption, or even more likely an error - during WAL replay, if we were unlucky enough to crash during - end-of-recovery cleanup after having completed an incomplete GIST - insertion. - </para> - </listitem> - - <listitem> - <para> - Make <function>substring()</> for <type>bit</> types treat any negative - length as meaning <quote>all the rest of the string</> (Tom) - </para> - - <para> - The previous coding treated only -1 that way, and would produce an - invalid result value for other negative values, possibly leading to - a crash (CVE-2010-0442). - </para> - </listitem> - - <listitem> - <para> - Fix integer-to-bit-string conversions to handle the first fractional - byte correctly when the output bit width is wider than the given - integer by something other than a multiple of 8 bits (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix some cases of pathologically slow regular expression matching (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix assorted crashes in <type>xml</> processing caused by sloppy - memory management (Tom) - </para> - - <para> - This is a back-patch of changes first applied in 8.4. The 8.3 code - was known buggy, but the new code was sufficiently different to not - want to back-patch it until it had gotten some field testing. - </para> - </listitem> - - <listitem> - <para> - Fix bug with trying to update a field of an element of a - composite-type array column (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix the <literal>STOP WAL LOCATION</> entry in backup history files to - report the next WAL segment's name when the end location is exactly at a - segment boundary (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix some more cases of temporary-file leakage (Heikki) - </para> - - <para> - This corrects a problem introduced in the previous minor release. - One case that failed is when a plpgsql function returning set is - called within another function's exception handler. - </para> - </listitem> - - <listitem> - <para> - Improve constraint exclusion processing of boolean-variable cases, - in particular make it possible to exclude a partition that has a - <quote>bool_column = false</> constraint (Tom) - </para> - </listitem> - - <listitem> - <para> - When reading <filename>pg_hba.conf</> and related files, do not treat - <literal>@something</> as a file inclusion request if the <literal>@</> - appears inside quote marks; also, never treat <literal>@</> by itself - as a file inclusion request (Tom) - </para> - - <para> - This prevents erratic behavior if a role or database name starts with - <literal>@</>. If you need to include a file whose path name - contains spaces, you can still do so, but you must write - <literal>@"/path to/file"</> rather than putting the quotes around - the whole construct. - </para> - </listitem> - - <listitem> - <para> - Prevent infinite loop on some platforms if a directory is named as - an inclusion target in <filename>pg_hba.conf</> and related files - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible infinite loop if <function>SSL_read</> or - <function>SSL_write</> fails without setting <varname>errno</> (Tom) - </para> - - <para> - This is reportedly possible with some Windows versions of - <application>openssl</>. - </para> - </listitem> - - <listitem> - <para> - Disallow <acronym>GSSAPI</> authentication on local connections, - since it requires a hostname to function correctly (Magnus) - </para> - </listitem> - - <listitem> - <para> - Make <application>ecpg</> report the proper SQLSTATE if the connection - disappears (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s <literal>numericlocale</> option to not - format strings it shouldn't in latex and troff output formats (Heikki) - </para> - </listitem> - - <listitem> - <para> - Make <application>psql</> return the correct exit status (3) when - <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are - both specified and an error occurs during the implied <command>COMMIT</> - (Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix plpgsql failure in one case where a composite column is set to NULL - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible failure when calling PL/Perl functions from PL/PerlU - or vice versa (Tim Bunce) - </para> - </listitem> - - <listitem> - <para> - Add <literal>volatile</> markings in PL/Python to avoid possible - compiler-specific misbehavior (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Ensure PL/Tcl initializes the Tcl interpreter fully (Tom) - </para> - - <para> - The only known symptom of this oversight is that the Tcl - <literal>clock</> command misbehaves if using Tcl 8.5 or later. - </para> - </listitem> - - <listitem> - <para> - Prevent crash in <filename>contrib/dblink</> when too many key - columns are specified to a <function>dblink_build_sql_*</> function - (Rushabh Lathia, Joe Conway) - </para> - </listitem> - - <listitem> - <para> - Allow zero-dimensional arrays in <filename>contrib/ltree</> operations - (Tom) - </para> - - <para> - This case was formerly rejected as an error, but it's more convenient to - treat it the same as a zero-element array. In particular this avoids - unnecessary failures when an <type>ltree</> operation is applied to the - result of <literal>ARRAY(SELECT ...)</> and the sub-select returns no - rows. - </para> - </listitem> - - <listitem> - <para> - Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy - memory management (Tom) - </para> - </listitem> - - <listitem> - <para> - Make building of <filename>contrib/xml2</> more robust on Windows - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix race condition in Windows signal handling (Radu Ilie) - </para> - - <para> - One known symptom of this bug is that rows in <structname>pg_listener</> - could be dropped under heavy load. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010e - for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-9"> - <title>Release 8.3.9</title> - - <formalpara> - <title>Release date:</title> - <para>2009-12-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.8. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.9</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.8, - see <xref linkend="release-8-3-8">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Protect against indirect security threats caused by index functions - changing session-local state (Gurjeet Singh, Tom) - </para> - - <para> - This change prevents allegedly-immutable index functions from possibly - subverting a superuser's session (CVE-2009-4136). - </para> - </listitem> - - <listitem> - <para> - Reject SSL certificates containing an embedded null byte in the common - name (CN) field (Magnus) - </para> - - <para> - This prevents unintended matching of a certificate to a server or client - name during SSL validation (CVE-2009-4034). - </para> - </listitem> - - <listitem> - <para> - Fix possible crash during backend-startup-time cache initialization (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid crash on empty thesaurus dictionary (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent signals from interrupting <literal>VACUUM</> at unsafe times - (Alvaro) - </para> - - <para> - This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled - after it's already committed its tuple movements, as well as transient - errors if a plain <literal>VACUUM</> is interrupted after having - truncated the table. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to integer overflow in hash table size - calculation (Tom) - </para> - - <para> - This could occur with extremely large planner estimates for the size of - a hashjoin's result. - </para> - </listitem> - - <listitem> - <para> - Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris - Mikkelson) - </para> - </listitem> - - <listitem> - <para> - Ensure that shared tuple-level locks held by prepared transactions are - not ignored (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix premature drop of temporary files used for a cursor that is accessed - within a subtransaction (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in syslogger process when rotating to a new CSV logfile - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix Windows permission-downgrade logic (Jesse Morris) - </para> - - <para> - This fixes some cases where the database failed to start on Windows, - often with misleading error messages such as <quote>could not locate - matching postgres executable</quote>. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect logic for GiST index page splits, when the split depends - on a non-first column of the index (Paul Ramsey) - </para> - </listitem> - - <listitem> - <para> - Don't error out if recycling or removing an old WAL file fails at the - end of checkpoint (Heikki) - </para> - - <para> - It's better to treat the problem as non-fatal and allow the checkpoint - to complete. Future checkpoints will retry the removal. Such problems - are not expected in normal operation, but have been seen to be - caused by misdesigned Windows anti-virus and backup software. - </para> - </listitem> - - <listitem> - <para> - Ensure WAL files aren't repeatedly archived on Windows (Heikki) - </para> - - <para> - This is another symptom that could happen if some other process - interfered with deletion of a no-longer-needed file. - </para> - </listitem> - - <listitem> - <para> - Fix PAM password processing to be more robust (Tom) - </para> - - <para> - The previous code is known to fail with the combination of the Linux - <literal>pam_krb5</> PAM module with Microsoft Active Directory as the - domain controller. It might have problems elsewhere too, since it was - making unjustified assumptions about what arguments the PAM stack would - pass to it. - </para> - </listitem> - - <listitem> - <para> - Raise the maximum authentication token (Kerberos ticket) size in GSSAPI - and SSPI authentication methods (Ian Turner) - </para> - - <para> - While the old 2000-byte limit was more than enough for Unix Kerberos - implementations, tickets issued by Windows Domain Controllers can be - much larger. - </para> - </listitem> - - <listitem> - <para> - Re-enable collection of access statistics for sequences (Akira Kurosawa) - </para> - - <para> - This used to work but was broken in 8.3. - </para> - </listitem> - - <listitem> - <para> - Fix processing of ownership dependencies during <literal>CREATE OR - REPLACE FUNCTION</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect handling of <literal>WHERE</> - <replaceable>x</>=<replaceable>x</> conditions (Tom) - </para> - - <para> - In some cases these could get ignored as redundant, but they aren't - — they're equivalent to <replaceable>x</> <literal>IS NOT NULL</>. - </para> - </listitem> - - <listitem> - <para> - Make text search parser accept underscores in XML attributes (Peter) - </para> - </listitem> - - <listitem> - <para> - Fix encoding handling in <type>xml</> binary input (Heikki) - </para> - - <para> - If the XML header doesn't specify an encoding, we now assume UTF-8 by - default; the previous handling was inconsistent. - </para> - </listitem> - - <listitem> - <para> - Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice - versa (Tom) - </para> - - <para> - An error exit from the inner function could result in crashes due to - failure to re-select the correct Perl interpreter for the outer function. - </para> - </listitem> - - <listitem> - <para> - Fix session-lifespan memory leak when a PL/Perl function is redefined - (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure that Perl arrays are properly converted to - <productname>PostgreSQL</> arrays when returned by a set-returning - PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen) - </para> - - <para> - This worked correctly already for non-set-returning functions. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash in exception processing in PL/Python (Peter) - </para> - </listitem> - - <listitem> - <para> - In <filename>contrib/pg_standby</>, disable triggering failover with a - signal on Windows (Fujii Masao) - </para> - - <para> - This never did anything useful, because Windows doesn't have Unix-style - signals, but recent changes made it actually crash. - </para> - </listitem> - - <listitem> - <para> - Ensure <application>psql</>'s flex module is compiled with the correct - system header definitions (Tom) - </para> - - <para> - This fixes build failures on platforms where - <literal>--enable-largefile</> causes incompatible changes in the - generated code. - </para> - </listitem> - - <listitem> - <para> - Make the postmaster ignore any <literal>application_name</> parameter in - connection request packets, to improve compatibility with future libpq - versions (Tom) - </para> - </listitem> - - <listitem> - <para> - Update the timezone abbreviation files to match current reality (Joachim - Wieland) - </para> - - <para> - This includes adding <literal>IDT</> and <literal>SGT</> to the default - timezone abbreviation set. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009s - for DST law changes in Antarctica, Argentina, Bangladesh, Fiji, - Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical - corrections for Hong Kong. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-8"> - <title>Release 8.3.8</title> - - <formalpara> - <title>Release date:</title> - <para>2009-09-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.7. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.8</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you have any hash indexes on <type>interval</> columns, - you must <command>REINDEX</> them after updating to 8.3.8. - Also, if you are upgrading from a version earlier than 8.3.5, - see <xref linkend="release-8-3-5">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus) - </para> - - <para> - This bug led to the often-reported <quote>could not reattach - to shared memory</> error message. - </para> - </listitem> - - <listitem> - <para> - Force WAL segment switch during <function>pg_start_backup()</> - (Heikki) - </para> - - <para> - This avoids corner cases that could render a base backup unusable. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>RESET ROLE</> and <command>RESET SESSION - AUTHORIZATION</> inside security-definer functions (Tom, Heikki) - </para> - - <para> - This covers a case that was missed in the previous patch that - disallowed <command>SET ROLE</> and <command>SET SESSION - AUTHORIZATION</> inside security-definer functions. - (See CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Make <command>LOAD</> of an already-loaded loadable module - into a no-op (Tom) - </para> - - <para> - Formerly, <command>LOAD</> would attempt to unload and re-load the - module, but this is unsafe and not all that useful. - </para> - </listitem> - - <listitem> - <para> - Disallow empty passwords during LDAP authentication (Magnus) - </para> - </listitem> - - <listitem> - <para> - Fix handling of sub-SELECTs appearing in the arguments of - an outer-level aggregate function (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bugs associated with fetching a whole-row value from the - output of a Sort or Materialize plan node (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent <varname>synchronize_seqscans</> from changing the results of - scrollable and <literal>WITH HOLD</> cursors (Tom) - </para> - </listitem> - - <listitem> - <para> - Revert planner change that disabled partial-index and constraint - exclusion optimizations when there were more than 100 clauses in - an AND or OR list (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix hash calculation for data type <type>interval</> (Tom) - </para> - - <para> - This corrects wrong results for hash joins on interval values. - It also changes the contents of hash indexes on interval columns. - If you have any such indexes, you must <command>REINDEX</> them - after updating. - </para> - </listitem> - - <listitem> - <para> - Treat <function>to_char(..., 'TH')</> as an uppercase ordinal - suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki) - </para> - - <para> - It was previously handled as <literal>'th'</> (lowercase). - </para> - </listitem> - - <listitem> - <para> - Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal> - when <replaceable>x</> is more than 2 million and integer - datetimes are in use (Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Fix calculation of distance between a point and a line segment (Tom) - </para> - - <para> - This led to incorrect results from a number of geometric operators. - </para> - </listitem> - - <listitem> - <para> - Fix <type>money</> data type to work in locales where currency - amounts have no fractional digits, e.g. Japan (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>LIKE</> for case where pattern contains <literal>%_</> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Properly round datetime input like - <literal>00:12:57.9999999999999999999999999999</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix memory leaks in XML operations (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix poor choice of page split point in GiST R-tree operator classes - (Teodor) - </para> - </listitem> - - <listitem> - <para> - Ensure that a <quote>fast shutdown</> request will forcibly terminate - open sessions, even if a <quote>smart shutdown</> was already in progress - (Fujii Masao) - </para> - </listitem> - - <listitem> - <para> - Avoid performance degradation in bulk inserts into GIN indexes - when the input values are (nearly) in sorted order (Tom) - </para> - </listitem> - - <listitem> - <para> - Correctly enforce NOT NULL domain constraints in some contexts in - PL/pgSQL (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix portability issues in plperl initialization (Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to not go into an infinite loop if - <filename>postgresql.conf</> is empty (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Improve <application>pg_dump</>'s efficiency when there are - many large objects (Tamas Vincze) - </para> - </listitem> - - <listitem> - <para> - Use <literal>SIGUSR1</>, not <literal>SIGQUIT</>, as the - failover signal for <application>pg_standby</> (Heikki) - </para> - </listitem> - - <listitem> - <para> - Make <application>pg_standby</>'s <literal>maxretries</> option - behave as documented (Fujii Masao) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/hstore</> throw an error when a key or - value is too long to fit in its data structure, rather than - silently truncating it (Andrew Gierth) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to - properly handle the maximum number of parameters (twenty) (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve robustness of <application>libpq</>'s code to recover - from errors during <command>COPY FROM STDIN</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid including conflicting readline and editline header files - when both libraries are installed (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009l - for DST law changes in Bangladesh, Egypt, Jordan, Pakistan, - Argentina/San_Luis, Cuba, Jordan (historical correction only), - Mauritius, Morocco, Palestine, Syria, Tunisia. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-7"> - <title>Release 8.3.7</title> - - <formalpara> - <title>Release date:</title> - <para>2009-03-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.6. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.7</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.5, - see <xref linkend="release-8-3-5">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent error recursion crashes when encoding conversion fails (Tom) - </para> - - <para> - This change extends fixes made in the last two minor releases for - related failure scenarios. The previous fixes were narrowly tailored - for the original problem reports, but we have now recognized that - <emphasis>any</> error thrown by an encoding conversion function could - potentially lead to infinite recursion while trying to report the - error. The solution therefore is to disable translation and encoding - conversion and report the plain-ASCII form of any error message, - if we find we have gotten into a recursive error reporting situation. - (CVE-2009-0922) - </para> - </listitem> - - <listitem> - <para> - Disallow <command>CREATE CONVERSION</> with the wrong encodings - for the specified conversion function (Heikki) - </para> - - <para> - This prevents one possible scenario for encoding conversion failure. - The previous change is a backstop to guard against other kinds of - failures in the same area. - </para> - </listitem> - - <listitem> - <para> - Fix <function>xpath()</> to not modify the path expression unless - necessary, and to make a saner attempt at it when necessary (Andrew) - </para> - - <para> - The SQL standard suggests that <function>xpath</> should work on data - that is a document fragment, but <application>libxml</> doesn't support - that, and indeed it's not clear that this is sensible according to the - XPath standard. <function>xpath</> attempted to work around this - mismatch by modifying both the data and the path expression, but the - modification was buggy and could cause valid searches to fail. Now, - <function>xpath</> checks whether the data is in fact a well-formed - document, and if so invokes <application>libxml</> with no change to the - data or path expression. Otherwise, a different modification method - that is somewhat less likely to fail is used. - </para> - - <note> - <para> - The new modification method is still not 100% satisfactory, and it - seems likely that no real solution is possible. This patch should - therefore be viewed as a band-aid to keep from breaking existing - applications unnecessarily. It is likely that - <productname>PostgreSQL</> 8.4 will simply reject use of - <function>xpath</> on data that is not a well-formed document. - </para> - </note> - </listitem> - - <listitem> - <para> - Fix core dump when <function>to_char()</> is given format codes that - are inappropriate for the type of the data argument (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible failure in text search when C locale is used with - a multi-byte encoding (Teodor) - </para> - - <para> - Crashes were possible on platforms where <type>wchar_t</> is narrower - than <type>int</>; Windows in particular. - </para> - </listitem> - - <listitem> - <para> - Fix extreme inefficiency in text search parser's handling of an - email-like string containing multiple <literal>@</> characters (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix planner problem with sub-<command>SELECT</> in the output list - of a larger subquery (Tom) - </para> - - <para> - The known symptom of this bug is a <quote>failed to locate grouping - columns</> error that is dependent on the datatype involved; - but there could be other issues as well. - </para> - </listitem> - - <listitem> - <para> - Fix decompilation of <literal>CASE WHEN</> with an implicit coercion - (Tom) - </para> - - <para> - This mistake could lead to Assert failures in an Assert-enabled build, - or an <quote>unexpected CASE WHEN clause</> error message in other - cases, when trying to examine or dump a view. - </para> - </listitem> - - <listitem> - <para> - Fix possible misassignment of the owner of a TOAST table's rowtype (Tom) - </para> - - <para> - If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</> - were executed by someone other than the table owner, the - <structname>pg_type</> entry for the table's TOAST table would end up - marked as owned by that someone. This caused no immediate problems, - since the permissions on the TOAST rowtype aren't examined by any - ordinary database operation. However, it could lead to unexpected - failures if one later tried to drop the role that issued the command - (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</> - warnings from <application>pg_dump</> after having done so (in 8.3). - </para> - </listitem> - - <listitem> - <para> - Change <command>UNLISTEN</> to exit quickly if the current session has - never executed any <command>LISTEN</> command (Tom) - </para> - - <para> - Most of the time this is not a particularly useful optimization, but - since <command>DISCARD ALL</> invokes <command>UNLISTEN</>, the previous - coding caused a substantial performance problem for applications that - made heavy use of <command>DISCARD ALL</>. - </para> - </listitem> - - <listitem> - <para> - Fix PL/pgSQL to not treat <literal>INTO</> after <command>INSERT</> as - an INTO-variables clause anywhere in the string, not only at the start; - in particular, don't fail for <command>INSERT INTO</> within - <command>CREATE RULE</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Clean up PL/pgSQL error status variables fully at block exit - (Ashesh Vashi and Dave Page) - </para> - - <para> - This is not a problem for PL/pgSQL itself, but the omission could cause - the PL/pgSQL Debugger to crash while examining the state of a function. - </para> - </listitem> - - <listitem> - <para> - Retry failed calls to <function>CallNamedPipe()</> on Windows - (Steve Marshall, Magnus) - </para> - - <para> - It appears that this function can sometimes fail transiently; - we previously treated any failure as a hard error, which could - confuse <command>LISTEN</>/<command>NOTIFY</> as well as other - operations. - </para> - </listitem> - - <listitem> - <para> - Add <literal>MUST</> (Mauritius Island Summer Time) to the default list - of known timezone abbreviations (Xavier Bugaud) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-6"> - <title>Release 8.3.6</title> - - <formalpara> - <title>Release date:</title> - <para>2009-02-02</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.5. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.6</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.5, - see <xref linkend="release-8-3-5">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Make <command>DISCARD ALL</> release advisory locks, in addition - to everything it already did (Tom) - </para> - - <para> - This was decided to be the most appropriate behavior. This could - affect existing applications, however. - </para> - </listitem> - - <listitem> - <para> - Fix whole-index GiST scans to work correctly (Teodor) - </para> - - <para> - This error could cause rows to be lost if a table is clustered - on a GiST index. - </para> - </listitem> - - <listitem> - <para> - Fix crash of <literal>xmlconcat(NULL)</> (Peter) - </para> - </listitem> - - <listitem> - <para> - Fix possible crash in <literal>ispell</> dictionary if high-bit-set - characters are used as flags (Teodor) - </para> - - <para> - This is known to be done by one widely available Norwegian dictionary, - and the same condition may exist in others. - </para> - </listitem> - - <listitem> - <para> - Fix misordering of <application>pg_dump</> output for composite types - (Tom) - </para> - - <para> - The most likely problem was for user-defined operator classes to - be dumped after indexes or views that needed them. - </para> - </listitem> - - <listitem> - <para> - Improve handling of URLs in <function>headline()</> function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Improve handling of overlength headlines in <function>headline()</> - function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Prevent possible Assert failure or misconversion if an encoding - conversion is created with the wrong conversion function for the - specified pair of encodings (Tom, Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix possible Assert failure if a statement executed in PL/pgSQL is - rewritten into another kind of statement, for example if an - <command>INSERT</> is rewritten into an <command>UPDATE</> (Heikki) - </para> - </listitem> - - <listitem> - <para> - Ensure that a snapshot is available to datatype input functions (Tom) - </para> - - <para> - This primarily affects domains that are declared with <literal>CHECK</> - constraints involving user-defined stable or immutable functions. Such - functions typically fail if no snapshot has been set. - </para> - </listitem> - - <listitem> - <para> - Make it safer for SPI-using functions to be used within datatype I/O; - in particular, to be used in domain check constraints (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid unnecessary locking of small tables in <command>VACUUM</> - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix a problem that sometimes kept <command>ALTER TABLE ENABLE/DISABLE - RULE</> from being recognized by active sessions (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix a problem that made <literal>UPDATE RETURNING tableoid</> - return zero instead of the correct OID (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow functions declared as taking <type>ANYARRAY</> to work on - the <structname>pg_statistic</> columns of that type (Tom) - </para> - - <para> - This used to work, but was unintentionally broken in 8.3. - </para> - </listitem> - - <listitem> - <para> - Fix planner misestimation of selectivity when transitive equality - is applied to an outer-join clause (Tom) - </para> - - <para> - This could result in bad plans for queries like - <literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</> - </para> - </listitem> - - <listitem> - <para> - Improve optimizer's handling of long <literal>IN</> lists (Tom) - </para> - - <para> - This change avoids wasting large amounts of time on such lists - when constraint exclusion is enabled. - </para> - </listitem> - - <listitem> - <para> - Prevent synchronous scan during GIN index build (Tom) - </para> - - <para> - Because GIN is optimized for inserting tuples in increasing TID order, - choosing to use a synchronous scan could slow the build by a factor of - three or more. - </para> - </listitem> - - <listitem> - <para> - Ensure that the contents of a holdable cursor don't depend on the - contents of TOAST tables (Tom) - </para> - - <para> - Previously, large field values in a cursor result might be represented - as TOAST pointers, which would fail if the referenced table got dropped - before the cursor is read, or if the large value is deleted and then - vacuumed away. This cannot happen with an ordinary cursor, - but it could with a cursor that is held past its creating transaction. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak when a set-returning function is terminated without - reading its whole result (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix encoding conversion problems in XML functions when the database - encoding isn't UTF-8 (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</>'s - <function>dblink_get_result(text,bool)</> function (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix possible garbage output from <filename>contrib/sslinfo</> functions - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect behavior of <filename>contrib/tsearch2</> compatibility - trigger when it's fired more than once in a command (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix possible mis-signaling in autovacuum (Heikki) - </para> - </listitem> - - <listitem> - <para> - Support running as a service on Windows 7 beta (Dave and Magnus) - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</>'s handling of varchar structs (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix <application>configure</> script to properly report failure when - unable to obtain linkage information for PL/Perl (Andrew) - </para> - </listitem> - - <listitem> - <para> - Make all documentation reference <literal>pgsql-bugs</> and/or - <literal>pgsql-hackers</> as appropriate, instead of the - now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</> - mailing lists (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009a (for - Kathmandu and historical DST corrections in Switzerland, Cuba) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-5"> - <title>Release 8.3.5</title> - - <formalpara> - <title>Release date:</title> - <para>2008-11-03</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.4. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.5</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.1, - see <xref linkend="release-8-3-1">. Also, if you were running a previous - 8.3.X release, it is recommended to <command>REINDEX</> all GiST - indexes after the upgrade. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix GiST index corruption due to marking the wrong index entry - <quote>dead</> after a deletion (Teodor) - </para> - - <para> - This would result in index searches failing to find rows they - should have found. Corrupted indexes can be fixed with - <command>REINDEX</>. - </para> - </listitem> - - <listitem> - <para> - Fix backend crash when the client encoding cannot represent a localized - error message (Tom) - </para> - - <para> - We have addressed similar issues before, but it would still fail if - the <quote>character has no equivalent</> message itself couldn't - be converted. The fix is to disable localization and send the plain - ASCII error message when we detect such a situation. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash in <type>bytea</>-to-XML mapping (Michael McMaster) - </para> - </listitem> - - <listitem> - <para> - Fix possible crash when deeply nested functions are invoked from - a trigger (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve optimization of <replaceable>expression</> <literal>IN</> - (<replaceable>expression-list</>) queries (Tom, per an idea from Robert - Haas) - </para> - - <para> - Cases in which there are query variables on the right-hand side had been - handled less efficiently in 8.2.x and 8.3.x than in prior versions. - The fix restores 8.1 behavior for such cases. - </para> - </listitem> - - <listitem> - <para> - Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears - in a function call in <literal>FROM</>, a multi-row <literal>VALUES</> - list, or a <literal>RETURNING</> list (Tom) - </para> - - <para> - The usual symptom of this problem is an <quote>unrecognized node type</> - error. - </para> - </listitem> - - <listitem> - <para> - Fix Assert failure during rescan of an <literal>IS NULL</> - search of a GiST index (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix memory leak during rescan of a hashed aggregation plan (Neil) - </para> - </listitem> - - <listitem> - <para> - Ensure an error is reported when a newly-defined PL/pgSQL trigger - function is invoked as a normal function (Tom) - </para> - </listitem> - - <listitem> - <para> - Force a checkpoint before <command>CREATE DATABASE</> starts to copy - files (Heikki) - </para> - - <para> - This prevents a possible failure if files had recently been deleted - in the source database. - </para> - </listitem> - - <listitem> - <para> - Prevent possible collision of <structfield>relfilenode</> numbers - when moving a table to another tablespace with <command>ALTER SET - TABLESPACE</> (Heikki) - </para> - - <para> - The command tried to re-use the existing filename, instead of - picking one that is known unused in the destination directory. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect text search headline generation when single query - item matches first word of text (Sushant Sinha) - </para> - </listitem> - - <listitem> - <para> - Fix improper display of fractional seconds in interval values when - using a non-ISO datestyle in an <option>--enable-integer-datetimes</> - build (Ron Mayer) - </para> - </listitem> - - <listitem> - <para> - Make <literal>ILIKE</> compare characters case-insensitively - even when they're escaped (Andrew) - </para> - </listitem> - - <listitem> - <para> - Ensure <command>DISCARD</> is handled properly by statement logging (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect logging of last-completed-transaction time during - PITR recovery (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</> - behave correctly when the passed tuple and tuple descriptor have - different numbers of columns (Tom) - </para> - - <para> - This situation is normal when a table has had columns added or removed, - but these two functions didn't handle it properly. - The only likely consequence is an incorrect error indication. - </para> - </listitem> - - <listitem> - <para> - Mark <varname>SessionReplicationRole</> as <literal>PGDLLIMPORT</> - so it can be used by <application>Slony</> on Windows (Magnus) - </para> - </listitem> - - <listitem> - <para> - Fix small memory leak when using <application>libpq</>'s - <literal>gsslib</> parameter (Magnus) - </para> - - <para> - The space used by the parameter string was not freed at connection - close. - </para> - </listitem> - - <listitem> - <para> - Ensure <application>libgssapi</> is linked into <application>libpq</> - if needed (Markus Schaaf) - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix recent breakage of <literal>pg_ctl restart</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure <filename>pg_control</> is opened in binary mode - (Itagaki Takahiro) - </para> - - <para> - <application>pg_controldata</> and <application>pg_resetxlog</> - did this incorrectly, and so could fail on Windows. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008i (for - DST law changes in Argentina, Brazil, Mauritius, Syria) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-4"> - <title>Release 8.3.4</title> - - <formalpara> - <title>Release date:</title> - <para>2008-09-22</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.3. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.4</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.1, - see <xref linkend="release-8-3-1">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix bug in btree WAL recovery code (Heikki) - </para> - - <para> - Recovery failed if the WAL ended partway through a page split operation. - </para> - </listitem> - - <listitem> - <para> - Fix potential use of wrong cutoff XID for HOT page pruning (Alvaro) - </para> - - <para> - This error created a risk of corruption in system - catalogs that are consulted by <command>VACUUM</>: dead tuple versions - might be removed too soon. The impact of this on actual database - operations would be minimal, since the system doesn't follow MVCC - rules while examining catalogs, but it might result in transiently - wrong output from <application>pg_dump</> or other client programs. - </para> - </listitem> - - <listitem> - <para> - Fix potential miscalculation of <structfield>datfrozenxid</> (Alvaro) - </para> - - <para> - This error may explain some recent reports of failure to remove old - <structname>pg_clog</> data. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect HOT updates after <structname>pg_class</> is reindexed - (Tom) - </para> - - <para> - Corruption of <structname>pg_class</> could occur if <literal>REINDEX - TABLE pg_class</> was followed in the same session by an <literal>ALTER - TABLE RENAME</> or <literal>ALTER TABLE SET SCHEMA</> command. - </para> - </listitem> - - <listitem> - <para> - Fix missed <quote>combo cid</> case (Karl Schnaitter) - </para> - - <para> - This error made rows incorrectly invisible to a transaction in which they - had been deleted by multiple subtransactions that all aborted. - </para> - </listitem> - - <listitem> - <para> - Prevent autovacuum from crashing if the table it's currently - checking is deleted at just the wrong time (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Widen local lock counters from 32 to 64 bits (Tom) - </para> - - <para> - This responds to reports that the counters could overflow in - sufficiently long transactions, leading to unexpected <quote>lock is - already held</> errors. - </para> - </listitem> - - <listitem> - <para> - Fix possible duplicate output of tuples during a GiST index scan (Teodor) - </para> - </listitem> - - <listitem> - <para> - Regenerate foreign key checking queries from scratch when either - table is modified (Tom) - </para> - - <para> - Previously, 8.3 would attempt to replan the query, but would work from - previously generated query text. This led to failures if a - table or column was renamed. - </para> - </listitem> - - <listitem> - <para> - Fix missed permissions checks when a view contains a simple - <literal>UNION ALL</> construct (Heikki) - </para> - - <para> - Permissions for the referenced tables were checked properly, but not - permissions for the view itself. - </para> - </listitem> - - <listitem> - <para> - Add checks in executor startup to ensure that the tuples produced by an - <command>INSERT</> or <command>UPDATE</> will match the target table's - current rowtype (Tom) - </para> - - <para> - This situation is believed to be impossible in 8.3, but it can happen in - prior releases, so a check seems prudent. - </para> - </listitem> - - <listitem> - <para> - Fix possible repeated drops during <command>DROP OWNED</> (Tom) - </para> - - <para> - This would typically result in strange errors such as <quote>cache - lookup failed for relation NNN</>. - </para> - </listitem> - - <listitem> - <para> - Fix several memory leaks in XML operations (Kris Jurka, Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <function>xmlserialize()</> to raise error properly for - unacceptable target data type (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix a couple of places that mis-handled multibyte characters in text - search configuration file parsing (Tom) - </para> - - <para> - Certain characters occurring in configuration files would always cause - <quote>invalid byte sequence for encoding</> failures. - </para> - </listitem> - - <listitem> - <para> - Provide file name and line number location for all errors reported - in text search configuration files (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>AT TIME ZONE</> to first try to interpret its timezone - argument as a timezone abbreviation, and only try it as a full timezone - name if that fails, rather than the other way around as formerly (Tom) - </para> - - <para> - The timestamp input functions have always resolved ambiguous zone names - in this order. Making <literal>AT TIME ZONE</> do so as well improves - consistency, and fixes a compatibility bug introduced in 8.1: - in ambiguous cases we now behave the same as 8.0 and before did, - since in the older versions <literal>AT TIME ZONE</> accepted - <emphasis>only</> abbreviations. - </para> - </listitem> - - <listitem> - <para> - Fix datetime input functions to correctly detect integer overflow when - running on a 64-bit platform (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent integer overflows during units conversion when displaying a - configuration parameter that has units (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve performance of writing very long log messages to syslog (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow spaces in the suffix part of an LDAP URL in - <filename>pg_hba.conf</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT - ON</> query (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner bug that could improperly push down <literal>IS NULL</> - tests below an outer join (Tom) - </para> - - <para> - This was triggered by occurrence of <literal>IS NULL</> tests for - the same relation in all arms of an upper <literal>OR</> clause. - </para> - </listitem> - - <listitem> - <para> - Fix planner bug with nested sub-select expressions (Tom) - </para> - - <para> - If the outer sub-select has no direct dependency on the parent query, - but the inner one does, the outer value might not get recalculated - for new parent query rows. - </para> - </listitem> - - <listitem> - <para> - Fix planner to estimate that <literal>GROUP BY</> expressions yielding - boolean results always result in two groups, regardless of the - expressions' contents (Tom) - </para> - - <para> - This is very substantially more accurate than the regular <literal>GROUP - BY</> estimate for certain boolean tests like <replaceable>col</> - <literal>IS NULL</>. - </para> - </listitem> - - <listitem> - <para> - Fix PL/pgSQL to not fail when a <literal>FOR</> loop's target variable - is a record containing composite-type fields (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful - about the encoding of data sent to or from Tcl (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve performance of <function>PQescapeBytea()</> (Rudolf Leitgeb) - </para> - </listitem> - - <listitem> - <para> - On Windows, work around a Microsoft bug by preventing - <application>libpq</> from trying to send more than 64kB per system call - (Magnus) - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</> to handle variables properly in <command>SET</> - commands (Michael) - </para> - </listitem> - - <listitem> - <para> - Improve <application>pg_dump</> and <application>pg_restore</>'s - error reporting after failure to send a SQL command (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to properly preserve postmaster - command-line arguments across a <literal>restart</> (Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix erroneous WAL file cutoff point calculation in - <application>pg_standby</> (Simon) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008f (for - DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, - Pakistan, Palestine, and Paraguay) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-3"> - <title>Release 8.3.3</title> - - <formalpara> - <title>Release date:</title> - <para>2008-06-12</para> - </formalpara> - - <para> - This release contains one serious and one minor bug fix over 8.3.2. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.3</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.1, - see <xref linkend="release-8-3-1">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom) - </para> - - <para> - Before this fix, a negative constant in a view or rule might be dumped - as, say, <literal>-42::integer</>, which is subtly incorrect: it should - be <literal>(-42)::integer</> due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - <productname>PostgreSQL</> to reject what had been a valid - <command>SELECT DISTINCT</> view query. Since this could result in - <application>pg_dump</> output failing to reload, it is being treated - as a high-priority fix. The only released versions in which dump - output is actually incorrect are 8.3.1 and 8.2.7. - </para> - </listitem> - - <listitem> - <para> - Make <command>ALTER AGGREGATE ... OWNER TO</> update - <structname>pg_shdepend</> (Tom) - </para> - - <para> - This oversight could lead to problems if the aggregate was later - involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</> - operation. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-2"> - <title>Release 8.3.2</title> - - <formalpara> - <title>Release date:</title> - <para>never released</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.1. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.2</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.1, - see <xref linkend="release-8-3-1">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that - occurred on Windows when using UTF-8 database encoding and a different - client encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect archive truncation point calculation for the - <literal>%r</> macro in <varname>restore_command</> parameters - (Simon) - </para> - - <para> - This could lead to data loss if a warm-standby script relied on - <literal>%r</> to decide when to throw away WAL segment files. - </para> - </listitem> - - <listitem> - <para> - Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new - column is correctly checked to see if it's been initialized to all - non-nulls (Brendan Jurd) - </para> - - <para> - Previous versions neglected to check this requirement at all. - </para> - </listitem> - - <listitem> - <para> - Fix <command>REASSIGN OWNED</> so that it works on procedural - languages too (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Fix problems with <command>SELECT FOR UPDATE/SHARE</> occurring as a - subquery in a query with a non-<command>SELECT</> top-level operation - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible <command>CREATE TABLE</> failure when inheriting the - <quote>same</> constraint from multiple parent relations that - inherited that constraint from a common ancestor (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <function>pg_get_ruledef()</> to show the alias, if any, attached - to the target table of an <command>UPDATE</> or <command>DELETE</> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Restore the pre-8.3 behavior that an out-of-range block number in a - TID being used in a TidScan plan results in silently not matching any - rows (Tom) - </para> - - <para> - 8.3.0 and 8.3.1 threw an error instead. - </para> - </listitem> - - <listitem> - <para> - Fix GIN bug that could result in a <literal>too many LWLocks - taken</literal> failure (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix broken GiST comparison function for <type>tsquery</> (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix <function>tsvector_update_trigger()</> and <function>ts_stat()</> - to accept domains over the types they expect to work with (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix failure to support enum data types as foreign keys (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid possible crash when decompressing corrupted data - (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Fix race conditions between delayed unlinks and <command>DROP - DATABASE</> (Heikki) - </para> - - <para> - In the worst case this could result in deleting a newly created table - in a new database that happened to get the same OID as the - recently-dropped one; but of course that is an extremely - low-probability scenario. - </para> - </listitem> - - <listitem> - <para> - Repair two places where SIGTERM exit of a backend could leave corrupted - state in shared memory (Tom) - </para> - - <para> - Neither case is very important if SIGTERM is used to shut down the - whole database cluster together, but there was a problem if someone - tried to SIGTERM individual backends. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to incorrect plan generated for an - <literal><replaceable>x</> IN (SELECT <replaceable>y</> - FROM ...)</literal> clause when <replaceable>x</> and <replaceable>y</> - have different data types; and make sure the behavior is semantically - correct when the conversion from <replaceable>y</>'s type to - <replaceable>x</>'s type is lossy (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix oversight that prevented the planner from substituting known Param - values as if they were constants (Tom) - </para> - - <para> - This mistake partially disabled optimization of unnamed - extended-Query statements in 8.3.0 and 8.3.1: in particular the - LIKE-to-indexscan optimization would never be applied if the LIKE - pattern was passed as a parameter, and constraint exclusion - depending on a parameter value didn't work either. - </para> - </listitem> - - <listitem> - <para> - Fix planner failure when an indexable <function>MIN</> or - <function>MAX</> aggregate is used with <literal>DISTINCT</> or - <literal>ORDER BY</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner to ensure it never uses a <quote>physical tlist</> for a - plan node that is feeding a Sort node (Tom) - </para> - - <para> - This led to the sort having to push around more data than it really - needed to, since unused column values were included in the sorted - data. - </para> - </listitem> - - <listitem> - <para> - Avoid unnecessary copying of query strings (Tom) - </para> - - <para> - This fixes a performance problem introduced in 8.3.0 when a very large - number of commands are submitted as a single query string. - </para> - </listitem> - - <listitem> - <para> - Make <function>TransactionIdIsCurrentTransactionId()</> use binary - search instead of linear search when checking child-transaction XIDs - (Heikki) - </para> - - <para> - This fixes some cases in which 8.3.0 was significantly - slower than earlier releases. - </para> - </listitem> - - <listitem> - <para> - Fix conversions between ISO-8859-5 and other encodings to handle - Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with - two dots) (Sergey Burladyan) - </para> - </listitem> - - <listitem> - <para> - Fix several datatype input functions, notably <function>array_in()</>, - that were allowing unused bytes in their results to contain - uninitialized, unpredictable values (Tom) - </para> - - <para> - This could lead to failures in which two apparently identical literal - values were not seen as equal, resulting in the parser complaining - about unmatched <literal>ORDER BY</> and <literal>DISTINCT</> - expressions. - </para> - </listitem> - - <listitem> - <para> - Fix a corner case in regular-expression substring matching - (<literal>substring(<replaceable>string</> from - <replaceable>pattern</>)</literal>) (Tom) - </para> - - <para> - The problem occurs when there is a match to the pattern overall but - the user has specified a parenthesized subexpression and that - subexpression hasn't got a match. An example is - <literal>substring('foo' from 'foo(bar)?')</>. - This should return NULL, since <literal>(bar)</> isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - <literal>foo</>). - </para> - </listitem> - - <listitem> - <para> - Prevent cancellation of an auto-vacuum that was launched to prevent - XID wraparound (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Improve <command>ANALYZE</>'s handling of in-doubt tuples (those - inserted or deleted by a not-yet-committed transaction) so that the - counts it reports to the stats collector are more likely to be correct - (Pavan Deolasee) - </para> - </listitem> - - <listitem> - <para> - Fix <application>initdb</> to reject a relative path for its - <literal>--xlogdir</> (<literal>-X</>) option (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <application>psql</> print tab characters as an appropriate - number of spaces, rather than <literal>\x09</literal> as was done in - 8.3.0 and 8.3.1 (Bruce) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008c (for - DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and - Argentina/San_Luis) - </para> - </listitem> - - <listitem> - <para> - Add <function>ECPGget_PGconn()</> function to - <application>ecpglib</> (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect result from <application>ecpg</>'s - <function>PGTYPEStimestamp_sub()</> function (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix handling of continuation line markers in <application>ecpg</> - (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes in <filename>contrib/cube</> functions (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix core dump in <filename>contrib/xml2</>'s - <function>xpath_table()</> function when the input query returns a - NULL value (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</>'s makefile to not override - <literal>CFLAGS</>, and make it auto-configure properly for - <application>libxslt</> present or not (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3-1"> - <title>Release 8.3.1</title> - - <formalpara> - <title>Release date:</title> - <para>2008-03-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.3.0. - For information about new features in the 8.3 major release, see - <xref linkend="release-8-3">. - </para> - - <sect2> - <title>Migration to Version 8.3.1</title> - - <para> - A dump/restore is not required for those running 8.3.X. - However, you might need to <command>REINDEX</> indexes on textual - columns after updating, if you are affected by the Windows locale - issue described below. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix character string comparison for Windows locales that consider - different character combinations as equal (Tom) - </para> - - <para> - This fix applies only on Windows and only when using UTF-8 - database encoding. The same fix was made for all other cases - over two years ago, but Windows with UTF-8 uses a separate code - path that was not updated. If you are using a locale that - considers some non-identical strings as equal, you may need to - <command>REINDEX</> to fix existing indexes on textual columns. - </para> - </listitem> - - <listitem> - <para> - Repair corner-case bugs in <command>VACUUM FULL</> (Tom) - </para> - - <para> - A potential deadlock between concurrent <command>VACUUM FULL</> - operations on different system catalogs was introduced in 8.2. - This has now been corrected. 8.3 made this worse because the - deadlock could occur within a critical code section, making it - a PANIC rather than just ERROR condition. - </para> - - <para> - Also, a <command>VACUUM FULL</> that failed partway through - vacuuming a system catalog could result in cache corruption in - concurrent database sessions. - </para> - - <para> - Another <command>VACUUM FULL</> bug introduced in 8.3 could - result in a crash or out-of-memory report when dealing with - pages containing no live tuples. - </para> - </listitem> - - <listitem> - <para> - Fix misbehavior of foreign key checks involving <type>character</> - or <type>bit</> columns (Tom) - </para> - - <para> - If the referencing column were of a different but compatible type - (for instance <type>varchar</>), the constraint was enforced incorrectly. - </para> - </listitem> - - <listitem> - <para> - Avoid needless deadlock failures in no-op foreign-key checks (Stephan - Szabo, Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible core dump when re-planning a prepared query (Tom) - </para> - - <para> - This bug affected only protocol-level prepare operations, not - SQL <command>PREPARE</>, and so tended to be seen only with - JDBC, DBI, and other client-side drivers that use prepared - statements heavily. - </para> - </listitem> - - <listitem> - <para> - Fix possible failure when re-planning a query that calls an SPI-using - function (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix failure in row-wise comparisons involving columns of different - datatypes (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix longstanding <command>LISTEN</>/<command>NOTIFY</> - race condition (Tom) - </para> - - <para> - In rare cases a session that had just executed a - <command>LISTEN</> might not get a notification, even though - one would be expected because the concurrent transaction executing - <command>NOTIFY</> was observed to commit later. - </para> - - <para> - A side effect of the fix is that a transaction that has executed - a not-yet-committed <command>LISTEN</> command will not see any - row in <structname>pg_listener</> for the <command>LISTEN</>, - should it choose to look; formerly it would have. This behavior - was never documented one way or the other, but it is possible that - some applications depend on the old behavior. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>LISTEN</> and <command>UNLISTEN</> within a - prepared transaction (Tom) - </para> - - <para> - This was formerly allowed but trying to do it had various unpleasant - consequences, notably that the originating backend could not exit - as long as an <command>UNLISTEN</> remained uncommitted. - </para> - </listitem> - - <listitem> - <para> - Disallow dropping a temporary table within a - prepared transaction (Heikki) - </para> - - <para> - This was correctly disallowed by 8.1, but the check was inadvertently - broken in 8.2 and 8.3. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash when an error occurs during a query using a hash index - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect comparison of <type>tsquery</> values (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect behavior of <literal>LIKE</> with non-ASCII characters - in single-byte encodings (Rolf Jentsch) - </para> - </listitem> - - <listitem> - <para> - Disable <function>xmlvalidate</> (Tom) - </para> - - <para> - This function should have been removed before 8.3 release, but - was inadvertently left in the source code. It poses a small - security risk since unprivileged users could use it to read the - first few characters of any file accessible to the server. - </para> - </listitem> - - <listitem> - <para> - Fix memory leaks in certain usages of set-returning functions (Neil) - </para> - </listitem> - - <listitem> - <para> - Make <function>encode(<replaceable>bytea</>, 'escape')</> convert all - high-bit-set byte values into <literal>\</><replaceable>nnn</> octal - escape sequences (Tom) - </para> - - <para> - This is necessary to avoid encoding problems when the database - encoding is multi-byte. This change could pose compatibility issues - for applications that are expecting specific results from - <function>encode</>. - </para> - </listitem> - - <listitem> - <para> - Fix input of datetime values for February 29 in years BC (Tom) - </para> - - <para> - The former coding was mistaken about which years were leap years. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>unrecognized node type</> error in some variants of - <command>ALTER OWNER</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid tablespace permissions errors in <command>CREATE TABLE LIKE - INCLUDING INDEXES</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure <structname>pg_stat_activity</>.<structfield>waiting</> flag - is cleared when a lock wait is aborted (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix handling of process permissions on Windows Vista (Dave, Magnus) - </para> - - <para> - In particular, this fix allows starting the server as the Administrator - user. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2008a - (in particular, recent Chile changes); adjust timezone abbreviation - <literal>VET</> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</> problems with arrays (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to correctly extract the postmaster's port - number from command-line options (Itagaki Takahiro, Tom) - </para> - - <para> - Previously, <literal>pg_ctl start -w</> could try to contact the - postmaster on the wrong port, leading to bogus reports of startup - failure. - </para> - </listitem> - - <listitem> - <para> - Use <option>-fwrapv</> to defend against possible misoptimization - in recent <application>gcc</> versions (Tom) - </para> - - <para> - This is known to be necessary when building <productname>PostgreSQL</> - with <application>gcc</> 4.3 or later. - </para> - </listitem> - - <listitem> - <para> - Enable building <filename>contrib/uuid-ossp</> with MSVC (Hiroshi Saito) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-3"> - <title>Release 8.3</title> - - <formalpara> - <title>Release date:</title> - <para>2008-02-04</para> - </formalpara> - - <sect2> - <title>Overview</title> - - <para> - With significant new functionality and performance enhancements, - this release represents a major leap forward for - <productname>PostgreSQL</>. This was made possible by a growing - community that has dramatically accelerated the pace of - development. This release adds the following major features: - </para> - - <itemizedlist> - - <listitem> - <para> - Full text search is integrated into the core database system - </para> - </listitem> - - <listitem> - <para> - Support for the SQL/XML standard, including new operators and an - <type>XML</type> data type - </para> - </listitem> - - <listitem> - <para> - Enumerated data types (<type>ENUM</type>) - </para> - </listitem> - - <listitem> - <para> - Arrays of composite types - </para> - </listitem> - - <listitem> - <para> - Universally Unique Identifier (<type>UUID</>) data type - </para> - </listitem> - - <listitem> - <para> - Add control over whether <literal>NULL</>s sort first or last - </para> - </listitem> - - <listitem> - <para> - Updatable cursors - </para> - </listitem> - - <listitem> - <para> - Server configuration parameters can now be set on a per-function - basis - </para> - </listitem> - - <listitem> - <para> - User-defined types can now have type modifiers - </para> - </listitem> - - <listitem> - <para> - Automatically re-plan cached queries when table - definitions change or statistics are updated - </para> - </listitem> - - <listitem> - <para> - Numerous improvements in logging and statistics collection - </para> - </listitem> - - <listitem> - <para> - Support Security Service Provider Interface (<acronym>SSPI</>) for - authentication on Windows - </para> - </listitem> - - <listitem> - <para> - Support multiple concurrent autovacuum processes, and other - autovacuum improvements - </para> - </listitem> - - <listitem> - <para> - Allow the whole <productname>PostgreSQL</> distribution to be compiled - with <productname>Microsoft Visual C++</> - </para> - </listitem> - - </itemizedlist> - - <para> - Major performance improvements are listed below. Most of - these enhancements are automatic and do not require user changes or - tuning: - </para> - - <itemizedlist> - - <listitem> - <para> - Asynchronous commit delays writes to WAL during transaction commit - </para> - </listitem> - - <listitem> - <para> - Checkpoint writes can be spread over a longer time period to smooth - the I/O spike during each checkpoint - </para> - </listitem> - - <listitem> - <para> - Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for - most <command>UPDATE</>s and <command>DELETE</>s - </para> - </listitem> - - <listitem> - <para> - Just-in-time background writer strategy improves disk write - efficiency - </para> - </listitem> - - <listitem> - <para> - Using non-persistent transaction IDs for read-only transactions - reduces overhead and <command>VACUUM</> requirements - </para> - </listitem> - - <listitem> - <para> - Per-field and per-row storage overhead has been reduced - </para> - </listitem> - - <listitem> - <para> - Large sequential scans no longer force out frequently used - cached pages - </para> - </listitem> - - <listitem> - <para> - Concurrent large sequential scans can now share disk reads - </para> - </listitem> - - <listitem> - <para> - <literal>ORDER BY ... LIMIT</> can be done without sorting - </para> - </listitem> - - </itemizedlist> - - <para> - The above items are explained in more detail in the sections below. - </para> - - </sect2> - - <sect2> - <title>Migration to Version 8.3</title> - - <para> - A dump/restore using <application>pg_dump</application> is - required for those wishing to migrate data from any previous - release. - </para> - - <para> - Observe the following incompatibilities: - </para> - - <sect3> - <title>General</title> - <itemizedlist> - - <listitem> - <para> - Non-character data types are no longer automatically cast to - <type>TEXT</> (Peter, Tom) - </para> - - <para> - Previously, if a non-character value was supplied to an operator or - function that requires <type>text</> input, it was automatically - cast to <type>text</>, for most (though not all) built-in data types. - This no longer happens: an explicit cast to <type>text</> is now - required for all non-character-string types. For example, these - expressions formerly worked: - -<programlisting> -substr(current_date, 1, 4) -23 LIKE '2%' -</programlisting> - - but will now draw <quote>function does not exist</> and <quote>operator - does not exist</> errors respectively. Use an explicit cast instead: - -<programlisting> -substr(current_date::text, 1, 4) -23::text LIKE '2%' -</programlisting> - - (Of course, you can use the more verbose <literal>CAST()</> syntax too.) - The reason for the change is that these automatic casts too often caused - surprising behavior. An example is that in previous releases, this - expression was accepted but did not do what was expected: - -<programlisting> -current_date < 2017-11-17 -</programlisting> - - This is actually comparing a date to an integer, which should be - (and now is) rejected — but in the presence of automatic - casts both sides were cast to <type>text</> and a textual comparison - was done, because the <literal>text < text</> operator was able - to match the expression when no other <literal><</> operator could. - </para> - - <para> - Types <type>char(<replaceable>n</>)</type> and - <type>varchar(<replaceable>n</>)</type> still cast to <type>text</> - automatically. Also, automatic casting to <type>text</> still works for - inputs to the concatenation (<literal>||</>) operator, so long as least - one input is a character-string type. - </para> - </listitem> - - <listitem> - <para> - Full text search features from <filename>contrib/tsearch2</> have - been moved into the core server, with some minor syntax changes - </para> - - <para> - <filename>contrib/tsearch2</> now contains a compatibility - interface. - </para> - </listitem> - - <listitem> - <para> - <literal>ARRAY(SELECT ...)</literal>, where the <command>SELECT</> - returns no rows, now returns an empty array, rather than NULL - (Tom) - </para> - </listitem> - - <listitem> - <para> - The array type name for a base data type is no longer always the base - type's name with an underscore prefix - </para> - - <para> - The old naming convention is still honored when possible, but - application code should no longer depend on it. Instead - use the new <literal>pg_type.typarray</literal> column to - identify the array data type associated with a given type. - </para> - </listitem> - - <listitem> - <para> - <literal>ORDER BY ... USING</> <replaceable>operator</> must now - use a less-than or greater-than <replaceable>operator</> that is - defined in a btree operator class - </para> - - <para> - This restriction was added to prevent inconsistent results. - </para> - </listitem> - - <listitem> - <para> - <command>SET LOCAL</command> changes now persist until - the end of the outermost transaction, unless rolled back (Tom) - </para> - - <para> - Previously <command>SET LOCAL</command>'s effects were lost - after subtransaction commit (<command>RELEASE SAVEPOINT</> - or exit from a PL/pgSQL exception block). - </para> - </listitem> - - <listitem> - <para> - Commands rejected in transaction blocks are now also rejected in - multiple-statement query strings (Tom) - </para> - - <para> - For example, <literal>"BEGIN; DROP DATABASE; COMMIT"</> will now be - rejected even if submitted as a single query message. - </para> - </listitem> - - <listitem> - <para> - <command>ROLLBACK</> outside a transaction block now - issues <literal>NOTICE</> instead of <literal>WARNING</> (Bruce) - </para> - </listitem> - - <listitem> - <para> - Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command> - from accepting schema-qualified names (Bruce) - </para> - - <para> - Formerly, these commands accepted <literal>schema.relation</> but - ignored the schema part, which was confusing. - </para> - </listitem> - - <listitem> - <para> - <command>ALTER SEQUENCE</> no longer affects the sequence's - <function>currval()</> state (Tom) - </para> - </listitem> - - <listitem> - <para> - Foreign keys now must match indexable conditions for - cross-data-type references (Tom) - </para> - - <para> - This improves semantic consistency and helps avoid - performance problems. - </para> - </listitem> - - <listitem> - <para> - Restrict object size functions to users who have reasonable - permissions to view such information (Tom) - </para> - - <para> - For example, <function>pg_database_size()</function> now requires - <literal>CONNECT</> permission, which is granted to everyone by - default. <function>pg_tablespace_size()</function> requires - <literal>CREATE</> permission in the tablespace, or is allowed if - the tablespace is the default tablespace for the database. - </para> - </listitem> - - <listitem> - <para> - Remove the undocumented <literal>!!=</> (not in) operator (Tom) - </para> - - <para> - <literal>NOT IN (SELECT ...)</literal> is the proper way to - perform this operation. - </para> - </listitem> - - <listitem> - <para> - Internal hashing functions are now more uniformly-distributed (Tom) - </para> - - <para> - If application code was computing and storing hash values using - internal <productname>PostgreSQL</> hashing functions, the hash - values must be regenerated. - </para> - </listitem> - - <listitem> - <para> - C-code conventions for handling variable-length data values - have changed (Greg Stark, Tom) - </para> - - <para> - The new <function>SET_VARSIZE()</> macro <emphasis>must</> be used - to set the length of generated <type>varlena</> values. Also, it - might be necessary to expand (<quote>de-TOAST</quote>) input values - in more cases. - </para> - </listitem> - - <listitem> - <para> - Continuous archiving no longer reports each successful archive - operation to the server logs unless <literal>DEBUG</> level is used - (Simon) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Configuration Parameters</title> - - <itemizedlist> - - <listitem> - <para> - Numerous changes in administrative server parameters - </para> - - <para> - <varname>bgwriter_lru_percent</>, - <varname>bgwriter_all_percent</>, - <varname>bgwriter_all_maxpages</>, - <varname>stats_start_collector</>, and - <varname>stats_reset_on_server_start</> are removed. - <varname>redirect_stderr</> is renamed to - <varname>logging_collector</>. - <varname>stats_command_string</> is renamed to - <varname>track_activities</>. - <varname>stats_block_level</> and <varname>stats_row_level</> - are merged into <varname>track_counts</>. - A new boolean configuration parameter, <varname>archive_mode</>, - controls archiving. Autovacuum's default settings have changed. - </para> - </listitem> - - <listitem> - <para> - Remove <varname>stats_start_collector</varname> parameter (Tom) - </para> - - <para> - We now always start the collector process, unless <acronym>UDP</> - socket creation fails. - </para> - </listitem> - - <listitem> - <para> - Remove <varname>stats_reset_on_server_start</varname> parameter (Tom) - </para> - - <para> - This was removed because <function>pg_stat_reset()</function> - can be used for this purpose. - </para> - </listitem> - - <listitem> - <para> - Commenting out a parameter in <filename>postgresql.conf</> now - causes it to revert to its default value (Joachim Wieland) - </para> - - <para> - Previously, commenting out an entry left the parameter's value unchanged - until the next server restart. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - - <sect3> - <title>Character Encodings</title> - - <itemizedlist> - - <listitem> - <para> - Add more checks for invalidly-encoded data (Andrew) - </para> - - <para> - This change plugs some holes that existed in literal backslash - escape string processing and <command>COPY</command> escape - processing. Now the de-escaped string is rechecked to see if the - result created an invalid multi-byte character. - </para> - </listitem> - - <listitem> - <para> - Disallow database encodings that are inconsistent with the server's - locale setting (Tom) - </para> - - <para> - On most platforms, <literal>C</> locale is the only locale that - will work with any database encoding. Other locale settings imply - a specific encoding and will misbehave if the database encoding - is something different. (Typical symptoms include bogus textual - sort order and wrong results from <function>upper()</> or - <function>lower()</>.) The server now rejects attempts to create - databases that have an incompatible encoding. - </para> - </listitem> - - <listitem> - <para> - Ensure that <function>chr()</function> cannot create - invalidly-encoded values (Andrew) - </para> - - <para> - In UTF8-encoded databases the argument of <function>chr()</function> is - now treated as a Unicode code point. In other multi-byte encodings - <function>chr()</function>'s argument must designate a 7-bit ASCII - character. Zero is no longer accepted. - <function>ascii()</function> has been adjusted to match. - </para> - </listitem> - - <listitem> - <para> - Adjust <function>convert()</function> behavior to ensure encoding - validity (Andrew) - </para> - - <para> - The two argument form of <function>convert()</function> has been - removed. The three argument form now takes a <type>bytea</type> - first argument and returns a <type>bytea</type>. To cover the - loss of functionality, three new functions have been added: - </para> - - <itemizedlist> - <listitem> - <para> - <function>convert_from(bytea, name)</function> returns - <type>text</> — converts the first argument from the named - encoding to the database encoding - </para> - </listitem> - - <listitem> - <para> - <function>convert_to(text, name)</function> returns - <type>bytea</> — converts the first argument from the - database encoding to the named encoding - </para> - </listitem> - - <listitem> - <para> - <function>length(bytea, name)</function> returns - <type>integer</> — gives the length of the first - argument in characters in the named encoding - </para> - </listitem> - </itemizedlist> - </listitem> - - <listitem> - <para> - Remove <literal>convert(argument USING conversion_name)</literal> - (Andrew) - </para> - - <para> - Its behavior did not match the SQL standard. - </para> - </listitem> - - <listitem> - <para> - Make JOHAB encoding client-only (Tatsuo) - </para> - - <para> - JOHAB is not safe as a server-side encoding. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - </sect2> - - <sect2> - <title>Changes</title> - - <para> - Below you will find a detailed account of the - changes between <productname>PostgreSQL</productname> 8.3 and - the previous major release. - </para> - - <sect3> - <title>Performance</title> - <itemizedlist> - - <listitem> - <para> - Asynchronous commit delays writes to WAL during transaction commit - (Simon) - </para> - - <para> - This feature dramatically increases performance for short data-modifying - transactions. The disadvantage is that because disk writes are delayed, - if the database or operating system crashes before data is written to - the disk, committed data will be lost. This feature is useful for - applications that can accept some data loss. Unlike turning off - <varname>fsync</varname>, using asynchronous commit does not put - database consistency at risk; the worst case is that after a crash the - last few reportedly-committed transactions might not be committed after - all. - This feature is enabled by turning off <varname>synchronous_commit</> - (which can be done per-session or per-transaction, if some transactions - are critical and others are not). - <varname>wal_writer_delay</> can be adjusted to control the maximum - delay before transactions actually reach disk. - </para> - </listitem> - - <listitem> - <para> - Checkpoint writes can be spread over a longer time period to smooth - the I/O spike during each checkpoint (Itagaki Takahiro and Heikki - Linnakangas) - </para> - - <para> - Previously all modified buffers were forced to disk as quickly as - possible during a - checkpoint, causing an I/O spike that decreased server performance. - This new approach spreads out disk writes during checkpoints, - reducing peak I/O usage. (User-requested and shutdown checkpoints - are still written as quickly as possible.) - </para> - </listitem> - - <listitem> - <para> - Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for most - <command>UPDATE</>s and <command>DELETE</>s (Pavan Deolasee, with - ideas from many others) - </para> - - <para> - <command>UPDATE</>s and <command>DELETE</>s leave dead tuples - behind, as do failed <command>INSERT</>s. Previously only - <command>VACUUM</> could reclaim space taken by dead tuples. With - <acronym>HOT</> dead tuple space can be automatically reclaimed at - the time of <command>INSERT</> or <command>UPDATE</> if no changes - are made to indexed columns. This allows for more consistent - performance. Also, <acronym>HOT</> avoids adding duplicate index - entries. - </para> - </listitem> - - <listitem> - <para> - Just-in-time background writer strategy improves disk write - efficiency (Greg Smith, Itagaki Takahiro) - </para> - - <para> - This greatly reduces the need for manual tuning of the background - writer. - </para> - </listitem> - - <listitem> - <para> - Per-field and per-row storage overhead have been reduced - (Greg Stark, Heikki Linnakangas) - </para> - - <para> - Variable-length data types with data values less than 128 bytes long - will see a storage decrease of 3 to 6 bytes. For example, two adjacent - <type>char(1)</type> fields now use 4 bytes instead of 16. Row headers - are also 4 bytes shorter than before. - </para> - </listitem> - - <listitem> - <para> - Using non-persistent transaction IDs for read-only transactions - reduces overhead and <command>VACUUM</> requirements (Florian Pflug) - </para> - - <para> - Non-persistent transaction IDs do not increment the global - transaction counter. Therefore, they reduce the load on - <structname>pg_clog</> and increase the time between forced - vacuums to prevent transaction ID wraparound. - Other performance - improvements were also made that should improve concurrency. - </para> - </listitem> - - <listitem> - <para> - Avoid incrementing the command counter after a read-only command (Tom) - </para> - - <para> - There was formerly a hard limit of 2<superscript>32</> - (4 billion) commands per transaction. Now only commands that - actually changed the database count, so while this limit still - exists, it should be significantly less annoying. - </para> - </listitem> - - <listitem> - <para> - Create a dedicated <acronym>WAL</> writer process to off-load - work from backends (Simon) - </para> - </listitem> - - <listitem> - <para> - Skip unnecessary WAL writes for <command>CLUSTER</command> and - <command>COPY</command> (Simon) - </para> - - <para> - Unless WAL archiving is enabled, the system now avoids WAL writes - for <command>CLUSTER</command> and just <function>fsync()</>s the - table at the end of the command. It also does the same for - <command>COPY</command> if the table was created in the same - transaction. - </para> - </listitem> - - <listitem> - <para> - Large sequential scans no longer force out frequently used - cached pages (Simon, Heikki, Tom) - </para> - </listitem> - - <listitem> - <para> - Concurrent large sequential scans can now share disk reads (Jeff Davis) - </para> - - <para> - This is accomplished by starting the new sequential scan in the - middle of the table (where another sequential scan is already - in-progress) and wrapping around to the beginning to finish. This - can affect the order of returned rows in a query that does not - specify <literal>ORDER BY</>. The <varname>synchronize_seqscans</> - configuration parameter can be used to disable this if necessary. - </para> - </listitem> - - <listitem> - <para> - <literal>ORDER BY ... LIMIT</> can be done without sorting - (Greg Stark) - </para> - - <para> - This is done by sequentially scanning the table and tracking just - the <quote>top N</> candidate rows, rather than performing a - full sort of the entire table. This is useful when there is no - matching index and the <literal>LIMIT</> is not large. - </para> - </listitem> - - <listitem> - <para> - Put a rate limit on messages sent to the statistics - collector by backends - (Tom) - </para> - - <para> - This reduces overhead for short transactions, but might sometimes - increase the delay before statistics are tallied. - </para> - </listitem> - - <listitem> - <para> - Improve hash join performance for cases with many NULLs (Tom) - </para> - </listitem> - - <listitem> - <para> - Speed up operator lookup for cases with non-exact datatype matches (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Server</title> - <itemizedlist> - - <listitem> - <para> - Autovacuum is now enabled by default (Alvaro) - </para> - - <para> - Several changes were made to eliminate disadvantages of having - autovacuum enabled, thereby justifying the change in default. - Several other autovacuum parameter defaults were also modified. - </para> - </listitem> - - <listitem> - <para> - Support multiple concurrent autovacuum processes (Alvaro, Itagaki - Takahiro) - </para> - - <para> - This allows multiple vacuums to run concurrently. This prevents - vacuuming of a large table from delaying vacuuming of smaller tables. - </para> - </listitem> - - <listitem> - <para> - Automatically re-plan cached queries when table - definitions change or statistics are updated (Tom) - </para> - - <para> - Previously PL/pgSQL functions that referenced temporary tables - would fail if the temporary table was dropped and recreated - between function invocations, unless <literal>EXECUTE</> was - used. This improvement fixes that problem and many related issues. - </para> - </listitem> - - <listitem> - <para> - Add a <varname>temp_tablespaces</varname> parameter to control - the tablespaces for temporary tables and files (Jaime Casanova, - Albert Cervera, Bernd Helmle) - </para> - - <para> - This parameter defines a list of tablespaces to be used. This - enables spreading the I/O load across multiple tablespaces. A random - tablespace is chosen each time a temporary object is created. - Temporary files are no longer stored in per-database - <filename>pgsql_tmp/</filename> directories but in per-tablespace - directories. - </para> - </listitem> - - <listitem> - <para> - Place temporary tables' TOAST tables in special schemas named - <literal>pg_toast_temp_<replaceable>nnn</></literal> (Tom) - </para> - - <para> - This allows low-level code to recognize these tables as temporary, - which enables various optimizations such as not WAL-logging changes - and using local rather than shared buffers for access. This also - fixes a bug wherein backends unexpectedly held open file references - to temporary TOAST tables. - </para> - </listitem> - - <listitem> - <para> - Fix problem that a constant flow of new connection requests could - indefinitely delay the postmaster from completing a shutdown or - a crash restart (Tom) - </para> - </listitem> - - <listitem> - <para> - Guard against a very-low-probability data loss scenario by preventing - re-use of a deleted table's relfilenode until after the next - checkpoint (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix <command>CREATE CONSTRAINT TRIGGER</> - to convert old-style foreign key trigger definitions into regular - foreign key constraints (Tom) - </para> - - <para> - This will ease porting of foreign key constraints carried forward from - pre-7.3 databases, if they were never converted using - <filename>contrib/adddepend</>. - </para> - </listitem> - - <listitem> - <para> - Fix <literal>DEFAULT NULL</> to override inherited defaults (Tom) - </para> - - <para> - <literal>DEFAULT NULL</> was formerly considered a noise phrase, but it - should (and now does) override non-null defaults that would otherwise - be inherited from a parent table or domain. - </para> - </listitem> - - <listitem> - <para> - Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004 (Tatsuo) - </para> - - <para> - These new encodings can be converted to and from UTF-8. - </para> - </listitem> - - <listitem> - <para> - Change server startup log message from <quote>database system is - ready</quote> to <quote>database system is ready to accept - connections</quote>, and adjust its timing - </para> - - <para> - The message now appears only when the postmaster is really ready - to accept connections. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Monitoring</title> - <itemizedlist> - - <listitem> - <para> - Add <varname>log_autovacuum_min_duration</varname> parameter to - support configurable logging of autovacuum activity (Simon, Alvaro) - </para> - </listitem> - - <listitem> - <para> - Add <varname>log_lock_waits</varname> parameter to log lock waiting - (Simon) - </para> - </listitem> - - <listitem> - <para> - Add <varname>log_temp_files</varname> parameter to log temporary - file usage (Bill Moran) - </para> - </listitem> - - <listitem> - <para> - Add <varname>log_checkpoints</varname> parameter to improve logging - of checkpoints (Greg Smith, Heikki) - </para> - </listitem> - - <listitem> - <para> - <varname>log_line_prefix</varname> now supports - <literal>%s</literal> and <literal>%c</literal> escapes in all - processes (Andrew) - </para> - - <para> - Previously these escapes worked only for user sessions, not for - background database processes. - </para> - </listitem> - - <listitem> - <para> - Add <varname>log_restartpoints</varname> to control logging of - point-in-time recovery restart points (Simon) - </para> - </listitem> - - <listitem> - <para> - Last transaction end time is now logged at end of recovery and at - each logged restart point (Simon) - </para> - </listitem> - - <listitem> - <para> - Autovacuum now reports its activity start time in - <literal>pg_stat_activity</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow server log output in comma-separated value (CSV) format (Arul - Shaji, Greg Smith, Andrew Dunstan) - </para> - - <para> - CSV-format log files can easily be loaded into a database table for - subsequent analysis. - </para> - </listitem> - - <listitem> - <para> - Use PostgreSQL-supplied timezone support for formatting timestamps - displayed in the server log (Tom) - </para> - - <para> - This avoids Windows-specific problems with localized time zone - names that are in the wrong encoding. There is a new - <varname>log_timezone</> parameter that controls the timezone - used in log messages, independently of the client-visible - <varname>timezone</> parameter. - </para> - </listitem> - - <listitem> - <para> - New system view <literal>pg_stat_bgwriter</literal> displays - statistics about background writer activity (Magnus) - </para> - </listitem> - - <listitem> - <para> - Add new columns for database-wide tuple statistics to - <literal>pg_stat_database</literal> (Magnus) - </para> - </listitem> - - <listitem> - <para> - Add an <literal>xact_start</literal> (transaction start time) column to - <literal>pg_stat_activity</literal> (Neil) - </para> - - <para> - This makes it easier to identify long-running transactions. - </para> - </listitem> - - <listitem> - <para> - Add <literal>n_live_tuples</> and <literal>n_dead_tuples</> columns - to <literal>pg_stat_all_tables</literal> and related views (Glen - Parker) - </para> - </listitem> - - <listitem> - <para> - Merge <varname>stats_block_level</> and <varname>stats_row_level</> - parameters into a single parameter <varname>track_counts</>, which - controls all messages sent to the statistics collector process - (Tom) - </para> - </listitem> - - <listitem> - <para> - Rename <varname>stats_command_string</varname> parameter to - <varname>track_activities</varname> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix statistical counting of live and dead tuples to recognize that - committed and aborted transactions have different effects (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Authentication</title> - <itemizedlist> - - <listitem> - <para> - Support Security Service Provider Interface (<acronym>SSPI</>) for - authentication on Windows (Magnus) - </para> - </listitem> - - <listitem> - <para> - Support GSSAPI authentication (Henry Hotz, Magnus) - </para> - - <para> - This should be preferred to native Kerberos authentication because - GSSAPI is an industry standard. - </para> - </listitem> - - <listitem> - <para> - Support a global SSL configuration file (Victor Wagner) - </para> - </listitem> - - <listitem> - <para> - Add <varname>ssl_ciphers</> parameter to control accepted SSL ciphers - (Victor Wagner) - </para> - </listitem> - - <listitem> - <para> - Add a Kerberos realm parameter, <varname>krb_realm</> (Magnus) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Write-Ahead Log (<acronym>WAL</>) and Continuous Archiving</title> - <itemizedlist> - - <listitem> - <para> - Change the timestamps recorded in transaction WAL records from - time_t to TimestampTz representation (Tom) - </para> - - <para> - This provides sub-second resolution in WAL, which can be useful for - point-in-time recovery. - </para> - </listitem> - - <listitem> - <para> - Reduce WAL disk space needed by warm standby servers (Simon) - </para> - - <para> - This change allows a warm standby server to pass the name of the earliest - still-needed WAL file to the recovery script, allowing automatic removal - of no-longer-needed WAL files. This is done using <literal>%r</> in - the <varname>restore_command</varname> parameter of - <filename>recovery.conf</filename>. - </para> - </listitem> - - <listitem> - <para> - New boolean configuration parameter, <varname>archive_mode</>, - controls archiving (Simon) - </para> - - <para> - Previously setting <varname>archive_command</> to an empty string - turned off archiving. Now <varname>archive_mode</> turns archiving - on and off, independently of <varname>archive_command</>. This is - useful for stopping archiving temporarily. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Queries</title> - <itemizedlist> - - <listitem> - <para> - Full text search is integrated into the core database - system (Teodor, Oleg) - </para> - - <para> - Text search has been improved, moved into the core code, and is now - installed by default. <filename>contrib/tsearch2</> now contains - a compatibility interface. - </para> - </listitem> - - <listitem> - <para> - Add control over whether <literal>NULL</>s sort first or last (Teodor, Tom) - </para> - - <para> - The syntax is <literal>ORDER BY ... NULLS FIRST/LAST</>. - </para> - </listitem> - - <listitem> - <para> - Allow per-column ascending/descending (<literal>ASC</>/<literal>DESC</>) - ordering options for indexes (Teodor, Tom) - </para> - - <para> - Previously a query using <literal>ORDER BY</> with mixed - <literal>ASC</>/<literal>DESC</> specifiers could not fully use - an index. Now an index can be fully used in such cases if the - index was created with matching - <literal>ASC</>/<literal>DESC</> specifications. - <literal>NULL</> sort order within an index can be controlled, too. - </para> - </listitem> - - <listitem> - <para> - Allow <literal>col IS NULL</> to use an index (Teodor) - </para> - </listitem> - - <listitem> - <para> - Updatable cursors (Arul Shaji, Tom) - </para> - - <para> - This eliminates the need to reference a primary key to - <command>UPDATE</> or <command>DELETE</> rows returned by a cursor. - The syntax is <literal>UPDATE/DELETE WHERE CURRENT OF</>. - </para> - </listitem> - - <listitem> - <para> - Allow <literal>FOR UPDATE</literal> in cursors (Arul Shaji, Tom) - </para> - </listitem> - - <listitem> - <para> - Create a general mechanism that supports casts to and from the - standard string types (<type>TEXT</type>, <type>VARCHAR</type>, - <type>CHAR</type>) for <emphasis>every</emphasis> datatype, by - invoking the datatype's I/O functions (Tom) - </para> - - <para> - Previously, such casts were available only for types that had - specialized function(s) for the purpose. - These new casts are assignment-only in the to-string direction, - explicit-only in the other direction, and therefore should create no - surprising behavior. - </para> - </listitem> - - <listitem> - <para> - Allow <literal>UNION</> and related constructs to return a domain - type, when all inputs are of that domain type (Tom) - </para> - - <para> - Formerly, the output would be considered to be of the domain's base - type. - </para> - </listitem> - - <listitem> - <para> - Allow limited hashing when using two different data types (Tom) - </para> - - <para> - This allows hash joins, hash indexes, hashed subplans, and hash - aggregation to be used in situations involving cross-data-type - comparisons, if the data types have compatible hash functions. - Currently, cross-data-type hashing support exists for - <type>smallint</type>/<type>integer</type>/<type>bigint</type>, - and for <type>float4</type>/<type>float8</type>. - </para> - </listitem> - - <listitem> - <para> - Improve optimizer logic for detecting when variables are equal - in a <literal>WHERE</> clause (Tom) - </para> - - <para> - This allows mergejoins to work with descending sort orders, and - improves recognition of redundant sort columns. - </para> - </listitem> - - <listitem> - <para> - Improve performance when planning large inheritance trees in - cases where most tables are excluded by constraints (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Object Manipulation</title> - <itemizedlist> - - <listitem> - - <para> - Arrays of composite types (David Fetter, Andrew, Tom) - </para> - - <para> - In addition to arrays of explicitly-declared composite types, - arrays of the rowtypes of regular tables and views are now - supported, except for rowtypes of system catalogs, sequences, and TOAST - tables. - </para> - - </listitem> - - <listitem> - <para> - Server configuration parameters can now be set on a per-function - basis (Tom) - </para> - - <para> - For example, functions can now set their own - <varname>search_path</> to prevent unexpected behavior if a - different <varname>search_path</> exists at run-time. Security - definer functions should set <varname>search_path</varname> to - avoid security loopholes. - </para> - </listitem> - - <listitem> - <para> - <command>CREATE/ALTER FUNCTION</command> now supports - <literal>COST</literal> and <literal>ROWS</literal> options (Tom) - </para> - - <para> - <literal>COST</literal> allows specification of the cost of a - function call. <literal>ROWS</literal> allows specification of - the average number or rows returned by a set-returning function. - These values are used by the optimizer in choosing the best plan. - </para> - </listitem> - - <listitem> - <para> - Implement <command>CREATE TABLE LIKE ... INCLUDING - INDEXES</command> (Trevor Hardcastle, Nikhil Sontakke, Neil) - </para> - </listitem> - - <listitem> - <para> - Allow <command>CREATE INDEX CONCURRENTLY</command> to ignore - transactions in other databases (Simon) - </para> - </listitem> - - <listitem> - <para> - Add <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER - SEQUENCE ... RENAME TO</command> (David Fetter, Neil) - </para> - - <para> - Previously this could only be done via <command>ALTER TABLE ... - RENAME TO</command>. - </para> - </listitem> - - <listitem> - <para> - Make <command>CREATE/DROP/RENAME DATABASE</> wait briefly for - conflicting backends to exit before failing (Tom) - </para> - - <para> - This increases the likelihood that these commands will succeed. - </para> - </listitem> - - <listitem> - <para> - Allow triggers and rules to be deactivated in groups using a - configuration parameter, for replication purposes (Jan) - </para> - - <para> - This allows replication systems to disable triggers and rewrite - rules as a group without modifying the system catalogs directly. - The behavior is controlled by <command>ALTER TABLE</> and a new - parameter <varname>session_replication_role</varname>. - </para> - </listitem> - - <listitem> - <para> - User-defined types can now have type modifiers (Teodor, Tom) - </para> - - <para> - This allows a user-defined type to take a modifier, like - <type>ssnum(7)</>. Previously only built-in - data types could have modifiers. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Utility Commands</title> - <itemizedlist> - - <listitem> - <para> - Non-superuser database owners now are able to add trusted procedural - languages to their databases by default (Jeremy Drake) - </para> - - <para> - While this is reasonably safe, some administrators might wish to - revoke the privilege. It is controlled by - <structname>pg_pltemplate</>.<structfield>tmpldbacreate</>. - </para> - </listitem> - - <listitem> - <para> - Allow a session's current parameter setting to be used as the - default for future sessions (Tom) - </para> - - <para> - This is done with <literal>SET ... FROM CURRENT</literal> in - <command>CREATE/ALTER FUNCTION</command>, <command>ALTER - DATABASE</command>, or <command>ALTER ROLE</command>. - </para> - </listitem> - - <listitem> - <para> - Implement new commands <command>DISCARD ALL</command>, - <command>DISCARD PLANS</command>, <command>DISCARD - TEMPORARY</command>, <command>CLOSE ALL</command>, and - <command>DEALLOCATE ALL</command> (Marko Kreen, Neil) - </para> - - <para> - These commands simplify resetting a database session to its initial - state, and are particularly useful for connection-pooling software. - </para> - </listitem> - - <listitem> - <para> - Make <command>CLUSTER</command> MVCC-safe (Heikki Linnakangas) - </para> - - <para> - Formerly, <command>CLUSTER</command> would discard all tuples - that were committed dead, even if there were still transactions - that should be able to see them under MVCC visibility rules. - </para> - </listitem> - - <listitem> - <para> - Add new <command>CLUSTER</command> syntax: <literal>CLUSTER - <replaceable>table</> USING <replaceable>index</></literal> - (Holger Schurig) - </para> - - <para> - The old <command>CLUSTER</command> syntax is still supported, but - the new form is considered more logical. - </para> - </listitem> - - <listitem> - <para> - Fix <command>EXPLAIN</command> so it can show complex plans - more accurately (Tom) - </para> - - <para> - References to subplan outputs are now always shown correctly, - instead of using <literal>?column<replaceable>N</>?</literal> - for complicated cases. - </para> - </listitem> - - <listitem> - <para> - Limit the amount of information reported when a user is dropped - (Alvaro) - </para> - - <para> - Previously, dropping (or attempting to drop) a user who owned many - objects could result in large <literal>NOTICE</literal> or - <literal>ERROR</literal> messages listing all these objects; this - caused problems for some client applications. The length of the - message is now limited, although a full list is still sent to the - server log. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Data Types</title> - <itemizedlist> - - <listitem> - <para> - Support for the SQL/XML standard, including new operators and an - <type>XML</type> data type (Nikolay Samokhvalov, Pavel Stehule, Peter) - </para> - </listitem> - - <listitem> - <para> - Enumerated data types (<type>ENUM</type>) (Tom Dunstan) - </para> - - <para> - This feature provides convenient support for fields that have a - small, fixed set of allowed values. An example of creating an - <literal>ENUM</> type is - <literal>CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy')</>. - </para> - </listitem> - - <listitem> - <para> - Universally Unique Identifier (<type>UUID</>) data type (Gevik - Babakhani, Neil) - </para> - - <para> - This closely matches <acronym>RFC</> 4122. - </para> - </listitem> - - <listitem> - <para> - Widen the <type>MONEY</type> data type to 64 bits (D'Arcy Cain) - </para> - - <para> - This greatly increases the range of supported <type>MONEY</> - values. - </para> - </listitem> - - <listitem> - <para> - Fix <type>float4</type>/<type>float8</type> to handle - <literal>Infinity</> and <literal>NAN</> (Not A Number) - consistently (Bruce) - </para> - - <para> - The code formerly was not consistent about distinguishing - <literal>Infinity</> from overflow conditions. - </para> - </listitem> - - <listitem> - <para> - Allow leading and trailing whitespace during input of - <type>boolean</type> values (Neil) - </para> - </listitem> - - <listitem> - <para> - Prevent <command>COPY</> from using digits and lowercase letters as - delimiters (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Functions</title> - <itemizedlist> - - <listitem> - <para> - Add new regular expression functions - <function>regexp_matches()</function>, - <function>regexp_split_to_array()</function>, and - <function>regexp_split_to_table()</function> (Jeremy Drake, Neil) - </para> - - <para> - These functions provide extraction of regular expression - subexpressions and allow splitting a string using a POSIX regular - expression. - </para> - </listitem> - - <listitem> - <para> - Add <function>lo_truncate()</function> for large object truncation - (Kris Jurka) - </para> - </listitem> - - <listitem> - <para> - Implement <function>width_bucket()</function> for the <type>float8</> - data type (Neil) - </para> - </listitem> - - <listitem> - <para> - Add <function>pg_stat_clear_snapshot()</function> to discard - statistics snapshots collected during the current transaction - (Tom) - </para> - - <para> - The first request for statistics in a transaction takes a statistics - snapshot that does not change during the transaction. This function - allows the snapshot to be discarded and a new snapshot loaded during - the next statistics query. This is particularly useful for PL/pgSQL - functions, which are confined to a single transaction. - </para> - </listitem> - - <listitem> - <para> - Add <literal>isodow</> option to <function>EXTRACT()</> and - <function>date_part()</> (Bruce) - </para> - - <para> - This returns the day of the week, with Sunday as seven. - (<literal>dow</> returns Sunday as zero.) - </para> - </listitem> - - <listitem> - <para> - Add <literal>ID</> (ISO day of week) and <literal>IDDD</> (ISO - day of year) format codes for <function>to_char()</>, - <function>to_date()</>, and <function>to_timestamp()</> (Brendan - Jurd) - </para> - </listitem> - - <listitem> - <para> - Make <function>to_timestamp()</> and <function>to_date()</> - assume <literal>TM</literal> (trim) option for potentially - variable-width fields (Bruce) - </para> - - <para> - This matches <productname>Oracle</>'s behavior. - </para> - </listitem> - - <listitem> - <para> - Fix off-by-one conversion error in - <function>to_date()</function>/<function>to_timestamp()</function> - <literal>D</> (non-ISO day of week) fields (Bruce) - </para> - </listitem> - - <listitem> - <para> - Make <function>setseed()</function> return void, rather than a - useless integer value (Neil) - </para> - </listitem> - - <listitem> - <para> - Add a hash function for <type>NUMERIC</type> (Neil) - </para> - - <para> - This allows hash indexes and hash-based plans to be used with - <type>NUMERIC</type> columns. - </para> - </listitem> - - <listitem> - <para> - Improve efficiency of - <literal>LIKE</literal>/<literal>ILIKE</literal>, especially for - multi-byte character sets like UTF-8 (Andrew, Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Make <function>currtid()</function> functions require - <literal>SELECT</literal> privileges on the target table (Tom) - </para> - </listitem> - - <listitem> - <para> - Add several <function>txid_*()</function> functions to query - active transaction IDs (Jan) - </para> - - <para> - This is useful for various replication solutions. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>PL/pgSQL Server-Side Language</title> - <itemizedlist> - - <listitem> - <para> - Add scrollable cursor support, including directional control in - <command>FETCH</command> (Pavel Stehule) - </para> - </listitem> - - <listitem> - <para> - Allow <literal>IN</literal> as an alternative to - <literal>FROM</literal> in PL/pgSQL's <command>FETCH</command> - statement, for consistency with the backend's - <command>FETCH</command> command (Pavel Stehule) - </para> - </listitem> - - <listitem> - <para> - Add <command>MOVE</command> to PL/pgSQL (Magnus, Pavel Stehule, - Neil) - </para> - </listitem> - - <listitem> - <para> - Implement <command>RETURN QUERY</command> (Pavel Stehule, Neil) - </para> - - <para> - This adds convenient syntax for PL/pgSQL set-returning functions - that want to return the result of a query. <command>RETURN QUERY</> - is easier and more efficient than a loop - around <command>RETURN NEXT</command>. - </para> - </listitem> - - <listitem> - <para> - Allow function parameter names to be qualified with the - function's name (Tom) - </para> - - <para> - For example, <literal>myfunc.myvar</>. This is particularly - useful for specifying variables in a query where the variable - name might match a column name. - </para> - </listitem> - - <listitem> - <para> - Make qualification of variables with block labels work properly (Tom) - </para> - - <para> - Formerly, outer-level block labels could unexpectedly interfere with - recognition of inner-level record or row references. - </para> - </listitem> - - <listitem> - <para> - Tighten requirements for <literal>FOR</literal> loop - <literal>STEP</> values (Tom) - </para> - - <para> - Prevent non-positive <literal>STEP</> values, and handle - loop overflows. - </para> - </listitem> - - <listitem> - <para> - Improve accuracy when reporting syntax error locations (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Other Server-Side Languages</title> - <itemizedlist> - - <listitem> - <para> - Allow type-name arguments to PL/Perl - <function>spi_prepare()</function> to be data type aliases in - addition to names found in <literal>pg_type</literal> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Allow type-name arguments to PL/Python - <function>plpy.prepare()</function> to be data type aliases in - addition to names found in <literal>pg_type</literal> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Allow type-name arguments to PL/Tcl <function>spi_prepare</> to - be data type aliases in addition to names found in - <literal>pg_type</literal> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Enable PL/PythonU to compile on Python 2.5 (Marko Kreen) - </para> - </listitem> - - <listitem> - <para> - Support a true PL/Python boolean type in compatible Python versions - (Python 2.3 and later) (Marko Kreen) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Tcl problems with thread-enabled <filename>libtcl</> spawning - multiple threads within the backend (Steve Marshall, Paul Bayer, - Doug Knight) - </para> - - <para> - This caused all sorts of unpleasantness. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="APP-PSQL"><application>psql</></link></title> - <itemizedlist> - - <listitem> - <para> - List disabled triggers separately in <literal>\d</literal> output - (Brendan Jurd) - </para> - </listitem> - - <listitem> - <para> - In <literal>\d</literal> patterns, always match <literal>$</literal> - literally (Tom) - </para> - </listitem> - - <listitem> - <para> - Show aggregate return types in <literal>\da</literal> output - (Greg Sabino Mullane) - </para> - </listitem> - - <listitem> - <para> - Add the function's volatility status to the output of - <literal>\df+</literal> (Neil) - </para> - </listitem> - - <listitem> - <para> - Add <literal>\prompt</literal> capability (Chad Wagner) - </para> - </listitem> - - <listitem> - <para> - Allow <literal>\pset</literal>, <literal>\t</literal>, and - <literal>\x</literal> to specify <literal>on</> or <literal>off</>, - rather than just toggling (Chad Wagner) - </para> - </listitem> - - <listitem> - <para> - Add <literal>\sleep</> capability (Jan) - </para> - </listitem> - - <listitem> - <para> - Enable <literal>\timing</> output for <literal>\copy</> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Improve <literal>\timing</literal> resolution on Windows - (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Flush <literal>\o</> output after each backslash command (Tom) - </para> - </listitem> - - <listitem> - <para> - Correctly detect and report errors while reading a <literal>-f</> - input file (Peter) - </para> - </listitem> - - <listitem> - <para> - Remove <literal>-u</> option (this option has long been deprecated) - (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title> - <itemizedlist> - - <listitem> - <para> - Add <literal>--tablespaces-only</> and <literal>--roles-only</> - options to <application>pg_dumpall</application> (Dave Page) - </para> - </listitem> - - <listitem> - <para> - Add an output file option to - <application>pg_dumpall</application> (Dave Page) - </para> - - <para> - This is primarily useful on Windows, where output redirection of - child <application>pg_dump</application> processes does not work. - </para> - </listitem> - - <listitem> - <para> - Allow <application>pg_dumpall</> to accept an initial-connection - database name rather than the default - <literal>template1</literal> (Dave Page) - </para> - </listitem> - - <listitem> - <para> - In <literal>-n</> and <literal>-t</> switches, always match - <literal>$</literal> literally (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve performance when a database has thousands of objects (Tom) - </para> - </listitem> - - <listitem> - <para> - Remove <literal>-u</> option (this option has long been deprecated) - (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Other Client Applications</title> - <itemizedlist> - - <listitem> - <para> - In <application>initdb</>, allow the location of the - <filename>pg_xlog</filename> directory to be specified - (Euler Taveira de Oliveira) - </para> - </listitem> - - <listitem> - <para> - Enable server core dump generation in <application>pg_regress</> - on supported operating systems (Andrew) - </para> - </listitem> - - <listitem> - <para> - Add a <literal>-t</> (timeout) parameter to <application>pg_ctl</> - (Bruce) - </para> - - <para> - This controls how long <application>pg_ctl</> will wait when waiting - for server startup or shutdown. Formerly the timeout was hard-wired - as 60 seconds. - </para> - </listitem> - - <listitem> - <para> - Add a <application>pg_ctl</> option to control generation - of server core dumps (Andrew) - </para> - </listitem> - - <listitem> - <para> - Allow Control-C to cancel <application>clusterdb</>, - <application>reindexdb</>, and <application>vacuumdb</> (Itagaki - Takahiro, Magnus) - </para> - </listitem> - - <listitem> - <para> - Suppress command tag output for <application>createdb</>, - <application>createuser</>, <application>dropdb</>, and - <application>dropuser</> (Peter) - </para> - - <para> - The <literal>--quiet</> option is ignored and will be removed in 8.4. - Progress messages when acting on all databases now go to stdout - instead of stderr because they are not actually errors. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="libpq"><application>libpq</></link></title> - <itemizedlist> - - <listitem> - <para> - Interpret the <literal>dbName</> parameter of - <function>PQsetdbLogin()</> as a <literal>conninfo</> string if - it contains an equals sign (Andrew) - </para> - - <para> - This allows use of <literal>conninfo</> strings in client - programs that still use <literal>PQsetdbLogin()</>. - </para> - </listitem> - - <listitem> - <para> - Support a global <acronym>SSL</> configuration file (Victor - Wagner) - </para> - </listitem> - - <listitem> - <para> - Add environment variable <varname>PGSSLKEY</> to control - <acronym>SSL</> hardware keys (Victor Wagner) - </para> - </listitem> - - <listitem> - <para> - Add <function>lo_truncate()</function> for large object - truncation (Kris Jurka) - </para> - </listitem> - - <listitem> - <para> - Add <function>PQconnectionNeedsPassword()</function> that returns - true if the server required a password but none was supplied - (Joe Conway, Tom) - </para> - - <para> - If this returns true after a failed connection attempt, a client - application should prompt the user for a password. In the past - applications have had to check for a specific error message string to - decide whether a password is needed; that approach is now - deprecated. - </para> - </listitem> - - <listitem> - <para> - Add <function>PQconnectionUsedPassword()</function> that returns - true if the supplied password was actually used - (Joe Conway, Tom) - </para> - - <para> - This is useful in some security contexts where it is important - to know whether a user-supplied password is actually valid. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><link linkend="ecpg"><application>ecpg</></link></title> - <itemizedlist> - - <listitem> - <para> - Use V3 frontend/backend protocol (Michael) - </para> - - <para> - This adds support for server-side prepared statements. - </para> - </listitem> - - <listitem> - <para> - Use native threads, instead of pthreads, on Windows (Magnus) - </para> - </listitem> - - <listitem> - <para> - Improve thread-safety of ecpglib (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Make the ecpg libraries export only necessary API symbols (Michael) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title><application>Windows</> Port</title> - <itemizedlist> - - <listitem> - <para> - Allow the whole <productname>PostgreSQL</> distribution to be compiled - with <productname>Microsoft Visual C++</> (Magnus and others) - </para> - - <para> - This allows Windows-based developers to use familiar development - and debugging tools. - Windows executables made with Visual C++ might also have better - stability and performance than those made with other tool sets. - The client-only Visual C++ build scripts have been removed. - </para> - </listitem> - - <listitem> - <para> - Drastically reduce postmaster's memory usage when it has many child - processes (Magnus) - </para> - </listitem> - - <listitem> - <para> - Allow regression tests to be started by an administrative - user (Magnus) - </para> - </listitem> - - <listitem> - <para> - Add native shared memory implementation (Magnus) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Server Programming Interface (<acronym>SPI</>)</title> - <itemizedlist> - - <listitem> - <para> - Add cursor-related functionality in SPI (Pavel Stehule) - </para> - - <para> - Allow access to the cursor-related planning options, and add - <command>FETCH</>/<command>MOVE</> routines. - </para> - </listitem> - - <listitem> - <para> - Allow execution of cursor commands through - <function>SPI_execute</function> (Tom) - </para> - - <para> - The macro <literal>SPI_ERROR_CURSOR</> still exists but will - never be returned. - </para> - </listitem> - - <listitem> - <para> - SPI plan pointers are now declared as <literal>SPIPlanPtr</> instead of - <literal>void *</> (Tom) - </para> - - <para> - This does not break application code, but switching is - recommended to help catch simple programming mistakes. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Build Options</title> - <itemizedlist> - - <listitem> - <para> - Add <application>configure</> option <literal>--enable-profiling</> - to enable code profiling (works only with <application>gcc</>) - (Korry Douglas and Nikhil Sontakke) - </para> - </listitem> - - <listitem> - <para> - Add <application>configure</> option <literal>--with-system-tzdata</> - to use the operating system's time zone database (Peter) - </para> - </listitem> - - <listitem> - <para> - Fix <acronym>PGXS</> so extensions can be built against PostgreSQL - installations whose <application>pg_config</> program does not - appear first in the <varname>PATH</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Support <command>gmake draft</command> when building the - <acronym>SGML</> documentation (Bruce) - </para> - - <para> - Unless <literal>draft</> is used, the documentation build will - now be repeated if necessary to ensure the index is up-to-date. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Source Code</title> - <itemizedlist> - - <listitem> - <para> - Rename macro <literal>DLLIMPORT</> to <literal>PGDLLIMPORT</> to - avoid conflicting with third party includes (like Tcl) that - define <literal>DLLIMPORT</> (Magnus) - </para> - </listitem> - - <listitem> - <para> - Create <quote>operator families</quote> to improve planning of - queries involving cross-data-type comparisons (Tom) - </para> - </listitem> - - <listitem> - <para> - Update GIN <function>extractQuery()</> API to allow signalling - that nothing can satisfy the query (Teodor) - </para> - </listitem> - - <listitem> - <para> - Move <literal>NAMEDATALEN</> definition from - <filename>postgres_ext.h</> to <filename>pg_config_manual.h</> - (Peter) - </para> - </listitem> - - <listitem> - <para> - Provide <function>strlcpy()</function> and - <function>strlcat()</function> on all platforms, and replace - error-prone uses of <function>strncpy()</function>, - <function>strncat()</function>, etc (Peter) - </para> - </listitem> - - <listitem> - <para> - Create hooks to let an external plugin monitor (or even replace) the - planner and create plans for hypothetical situations (Gurjeet - Singh, Tom) - </para> - </listitem> - - <listitem> - <para> - Create a function variable <literal>join_search_hook</> to let plugins - override the join search order portion of the planner (Julius - Stroffek) - </para> - </listitem> - - <listitem> - <para> - Add <function>tas()</> support for Renesas' M32R processor - (Kazuhiro Inaoka) - </para> - </listitem> - - <listitem> - <para> - <function>quote_identifier()</function> and - <application>pg_dump</application> no longer quote keywords that are - unreserved according to the grammar (Tom) - </para> - </listitem> - - <listitem> - <para> - Change the on-disk representation of the <type>NUMERIC</type> - data type so that the <structfield>sign_dscale</> word comes - before the weight (Tom) - </para> - </listitem> - - <listitem> - <para> - Use <acronym>SYSV</> semaphores rather than POSIX on Darwin - >= 6.0, i.e., OS X 10.2 and up (Chris Marcellino) - </para> - </listitem> - - <listitem> - <para> - Add <link linkend="acronyms">acronym</link> and <link - linkend="creating-cluster-nfs">NFS</link> documentation - sections (Bruce) - </para> - </listitem> - - <listitem> - <para> - "Postgres" is now documented as an accepted alias for - "PostgreSQL" (Peter) - </para> - </listitem> - - <listitem> - <para> - Add documentation about preventing database server spoofing when - the server is down (Bruce) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Contrib</title> - <itemizedlist> - - <listitem> - <para> - Move <filename>contrib</> <filename>README</> content into the - main <productname>PostgreSQL</> documentation (Albert Cervera i - Areny) - </para> - </listitem> - - <listitem> - <para> - Add <filename>contrib/pageinspect</filename> module for low-level - page inspection (Simon, Heikki) - </para> - </listitem> - - <listitem> - <para> - Add <filename>contrib/pg_standby</filename> module for controlling - warm standby operation (Simon) - </para> - </listitem> - - <listitem> - <para> - Add <filename>contrib/uuid-ossp</filename> module for generating - <type>UUID</> values using the OSSP UUID library (Peter) - </para> - - <para> - Use <application>configure</> - <literal>--with-ossp-uuid</literal> to activate. This takes - advantage of the new <type>UUID</type> builtin type. - </para> - </listitem> - - <listitem> - <para> - Add <filename>contrib/dict_int</filename>, - <filename>contrib/dict_xsyn</filename>, and - <filename>contrib/test_parser</filename> modules to provide - sample add-on text search dictionary templates and parsers - (Sergey Karpov) - </para> - </listitem> - - <listitem> - <para> - Allow <application>contrib/pgbench</> to set the fillfactor (Pavan - Deolasee) - </para> - </listitem> - - <listitem> - <para> - Add timestamps to <application>contrib/pgbench</> <literal>-l</> - (Greg Smith) - </para> - </listitem> - - <listitem> - <para> - Add usage count statistics to - <filename>contrib/pgbuffercache</filename> (Greg Smith) - </para> - </listitem> - - <listitem> - <para> - Add GIN support for <filename>contrib/hstore</> (Teodor) - </para> - </listitem> - - <listitem> - <para> - Add GIN support for <filename>contrib/pg_trgm</> (Guillaume Smet, Teodor) - </para> - </listitem> - - <listitem> - <para> - Update OS/X startup scripts in - <filename>contrib/start-scripts</filename> (Mark Cotner, David - Fetter) - </para> - </listitem> - - <listitem> - <para> - Restrict <function>pgrowlocks()</function> and - <function>dblink_get_pkey()</function> to users who have - <literal>SELECT</literal> privilege on the target table (Tom) - </para> - </listitem> - - <listitem> - <para> - Restrict <filename>contrib/pgstattuple</filename> functions to - superusers (Tom) - </para> - </listitem> - - <listitem> - <para> - <filename>contrib/xml2</filename> is deprecated and planned for - removal in 8.4 (Peter) - </para> - - <para> - The new XML support in core PostgreSQL supersedes this module. - </para> - </listitem> - - </itemizedlist> - - </sect3> - </sect2> - </sect1> diff --git a/doc/src/sgml/release-8.4.sgml b/doc/src/sgml/release-8.4.sgml deleted file mode 100644 index ac5a92f5a70..00000000000 --- a/doc/src/sgml/release-8.4.sgml +++ /dev/null @@ -1,10080 +0,0 @@ -<!-- doc/src/sgml/release-8.4.sgml --> -<!-- See header comment in release.sgml about typical markup --> - - <sect1 id="release-8-4-22"> - <title>Release 8.4.22</title> - - <formalpara> - <title>Release date:</title> - <para>2014-07-24</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.21. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <para> - This is expected to be the last <productname>PostgreSQL</> release - in the 8.4.X series. Users are encouraged to update to a newer - release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.4.22</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, this release corrects an index corruption problem in some GiST - indexes. See the first changelog entry below to find out whether your - installation has been affected and what steps you should take if so. - </para> - - <para> - Also, if you are upgrading from a version earlier than 8.4.19, - see <xref linkend="release-8-4-19">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Correctly initialize padding bytes in <filename>contrib/btree_gist</> - indexes on <type>bit</> columns (Heikki Linnakangas) - </para> - - <para> - This error could result in incorrect query results due to values that - should compare equal not being seen as equal. - Users with GiST indexes on <type>bit</> or <type>bit varying</> - columns should <command>REINDEX</> those indexes after installing this - update. - </para> - </listitem> - - <listitem> - <para> - Protect against torn pages when deleting GIN list pages (Heikki - Linnakangas) - </para> - - <para> - This fix prevents possible index corruption if a system crash occurs - while the page update is being written to disk. - </para> - </listitem> - - <listitem> - <para> - Fix possibly-incorrect cache invalidation during nested calls - to <function>ReceiveSharedInvalidMessages</> (Andres Freund) - </para> - </listitem> - - <listitem> - <para> - Don't assume a subquery's output is unique if there's a set-returning - function in its targetlist (David Rowley) - </para> - - <para> - This oversight could lead to misoptimization of constructs - like <literal>WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP - BY y)</literal>. - </para> - </listitem> - - <listitem> - <para> - Fix failure to detoast fields in composite elements of structured - types (Tom Lane) - </para> - - <para> - This corrects cases where TOAST pointers could be copied into other - tables without being dereferenced. If the original data is later - deleted, it would lead to errors like <quote>missing chunk number 0 - for toast value ...</> when the now-dangling pointer is used. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>record type has not been registered</> failures with - whole-row references to the output of Append plan nodes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible crash when invoking a user-defined function while - rewinding a cursor (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix query-lifespan memory leak while evaluating the arguments for a - function in <literal>FROM</> (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix session-lifespan memory leaks in regular-expression processing - (Tom Lane, Arthur O'Dwyer, Greg Stark) - </para> - </listitem> - - <listitem> - <para> - Fix data encoding error in <filename>hungarian.stop</> (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix liveness checks for rows that were inserted in the current - transaction and then deleted by a now-rolled-back subtransaction - (Andres Freund) - </para> - - <para> - This could cause problems (at least spurious warnings, and at worst an - infinite loop) if <command>CREATE INDEX</> or <command>CLUSTER</> were - done later in the same transaction. - </para> - </listitem> - - <listitem> - <para> - Clear <structname>pg_stat_activity</>.<structfield>xact_start</> - during <command>PREPARE TRANSACTION</> (Andres Freund) - </para> - - <para> - After the <command>PREPARE</>, the originating session is no longer in - a transaction, so it should not continue to display a transaction - start time. - </para> - </listitem> - - <listitem> - <para> - Fix <command>REASSIGN OWNED</> to not fail for text search objects - (Álvaro Herrera) - </para> - </listitem> - - <listitem> - <para> - Block signals during postmaster startup (Tom Lane) - </para> - - <para> - This ensures that the postmaster will properly clean up after itself - if, for example, it receives <systemitem>SIGINT</> while still - starting up. - </para> - </listitem> - - <listitem> - <para> - Secure Unix-domain sockets of temporary postmasters started during - <literal>make check</> (Noah Misch) - </para> - - <para> - Any local user able to access the socket file could connect as the - server's bootstrap superuser, then proceed to execute arbitrary code as - the operating-system user running the test, as we previously noted in - CVE-2014-0067. This change defends against that risk by placing the - server's socket in a temporary, mode 0700 subdirectory - of <filename>/tmp</>. The hazard remains however on platforms where - Unix sockets are not supported, notably Windows, because then the - temporary postmaster must accept local TCP connections. - </para> - - <para> - A useful side effect of this change is to simplify - <literal>make check</> testing in builds that - override <literal>DEFAULT_PGSOCKET_DIR</>. Popular non-default values - like <filename>/var/run/postgresql</> are often not writable by the - build user, requiring workarounds that will no longer be necessary. - </para> - </listitem> - - <listitem> - <para> - On Windows, allow new sessions to absorb values of PGC_BACKEND - parameters (such as <xref linkend="guc-log-connections">) from the - configuration file (Amit Kapila) - </para> - - <para> - Previously, if such a parameter were changed in the file post-startup, - the change would have no effect. - </para> - </listitem> - - <listitem> - <para> - Properly quote executable path names on Windows (Nikhil Deshpande) - </para> - - <para> - This oversight could cause <application>initdb</> - and <application>pg_upgrade</> to fail on Windows, if the installation - path contained both spaces and <literal>@</> signs. - </para> - </listitem> - - <listitem> - <para> - Fix linking of <application>libpython</> on OS X (Tom Lane) - </para> - - <para> - The method we previously used can fail with the Python library - supplied by Xcode 5.0 and later. - </para> - </listitem> - - <listitem> - <para> - Avoid buffer bloat in <application>libpq</> when the server - consistently sends data faster than the client can absorb it - (Shin-ichi Morita, Tom Lane) - </para> - - <para> - <application>libpq</> could be coerced into enlarging its input buffer - until it runs out of memory (which would be reported misleadingly - as <quote>lost synchronization with server</>). Under ordinary - circumstances it's quite far-fetched that data could be continuously - transmitted more quickly than the <function>recv()</> loop can - absorb it, but this has been observed when the client is artificially - slowed by scheduler constraints. - </para> - </listitem> - - <listitem> - <para> - Ensure that LDAP lookup attempts in <application>libpq</> time out as - intended (Laurenz Albe) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</>'s processing of old-style large object - comments (Tom Lane) - </para> - - <para> - A direct-to-database restore from an archive file generated by a - pre-9.0 version of <application>pg_dump</> would usually fail if the - archive contained more than a few comments for large objects. - </para> - </listitem> - - <listitem> - <para> - In <filename>contrib/pgcrypto</> functions, ensure sensitive - information is cleared from stack variables before returning - (Marko Kreen) - </para> - </listitem> - - <listitem> - <para> - In <filename>contrib/uuid-ossp</>, cache the state of the OSSP UUID - library across calls (Tom Lane) - </para> - - <para> - This improves the efficiency of UUID generation and reduces the amount - of entropy drawn from <filename>/dev/urandom</>, on platforms that - have that. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2014e - for DST law changes in Crimea, Egypt, and Morocco. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-21"> - <title>Release 8.4.21</title> - - <formalpara> - <title>Release date:</title> - <para>2014-03-20</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.20. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <para> - The <productname>PostgreSQL</> community will stop releasing updates - for the 8.4.X release series in July 2014. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.4.21</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.4.19, - see <xref linkend="release-8-4-19">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Restore GIN metapages unconditionally to avoid torn-page risk - (Heikki Linnakangas) - </para> - - <para> - Although this oversight could theoretically result in a corrupted - index, it is unlikely to have caused any problems in practice, since - the active part of a GIN metapage is smaller than a standard 512-byte - disk sector. - </para> - </listitem> - - <listitem> - <para> - Allow regular-expression operators to be terminated early by query - cancel requests (Tom Lane) - </para> - - <para> - This prevents scenarios wherein a pathological regular expression - could lock up a server process uninterruptibly for a long time. - </para> - </listitem> - - <listitem> - <para> - Remove incorrect code that tried to allow <literal>OVERLAPS</> with - single-element row arguments (Joshua Yanovski) - </para> - - <para> - This code never worked correctly, and since the case is neither - specified by the SQL standard nor documented, it seemed better to - remove it than fix it. - </para> - </listitem> - - <listitem> - <para> - Avoid getting more than <literal>AccessShareLock</> when de-parsing a - rule or view (Dean Rasheed) - </para> - - <para> - This oversight resulted in <application>pg_dump</> unexpectedly - acquiring <literal>RowExclusiveLock</> locks on tables mentioned as - the targets of <literal>INSERT</>/<literal>UPDATE</>/<literal>DELETE</> - commands in rules. While usually harmless, that could interfere with - concurrent transactions that tried to acquire, for example, - <literal>ShareLock</> on those tables. - </para> - </listitem> - - <listitem> - <para> - Prevent interrupts while reporting non-<literal>ERROR</> messages - (Tom Lane) - </para> - - <para> - This guards against rare server-process freezeups due to recursive - entry to <function>syslog()</>, and perhaps other related problems. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2014a - for DST law changes in Fiji and Turkey, plus historical changes in - Israel and Ukraine. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-20"> - <title>Release 8.4.20</title> - - <formalpara> - <title>Release date:</title> - <para>2014-02-20</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.19. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <para> - The <productname>PostgreSQL</> community will stop releasing updates - for the 8.4.X release series in July 2014. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.4.20</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.4.19, - see <xref linkend="release-8-4-19">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Shore up <literal>GRANT ... WITH ADMIN OPTION</> restrictions - (Noah Misch) - </para> - - <para> - Granting a role without <literal>ADMIN OPTION</> is supposed to - prevent the grantee from adding or removing members from the granted - role, but this restriction was easily bypassed by doing <literal>SET - ROLE</> first. The security impact is mostly that a role member can - revoke the access of others, contrary to the wishes of his grantor. - Unapproved role member additions are a lesser concern, since an - uncooperative role member could provide most of his rights to others - anyway by creating views or <literal>SECURITY DEFINER</> functions. - (CVE-2014-0060) - </para> - </listitem> - - <listitem> - <para> - Prevent privilege escalation via manual calls to PL validator - functions (Andres Freund) - </para> - - <para> - The primary role of PL validator functions is to be called implicitly - during <command>CREATE FUNCTION</>, but they are also normal SQL - functions that a user can call explicitly. Calling a validator on - a function actually written in some other language was not checked - for and could be exploited for privilege-escalation purposes. - The fix involves adding a call to a privilege-checking function in - each validator function. Non-core procedural languages will also - need to make this change to their own validator functions, if any. - (CVE-2014-0061) - </para> - </listitem> - - <listitem> - <para> - Avoid multiple name lookups during table and index DDL - (Robert Haas, Andres Freund) - </para> - - <para> - If the name lookups come to different conclusions due to concurrent - activity, we might perform some parts of the DDL on a different table - than other parts. At least in the case of <command>CREATE INDEX</>, - this can be used to cause the permissions checks to be performed - against a different table than the index creation, allowing for a - privilege escalation attack. - (CVE-2014-0062) - </para> - </listitem> - - <listitem> - <para> - Prevent buffer overrun with long datetime strings (Noah Misch) - </para> - - <para> - The <literal>MAXDATELEN</> constant was too small for the longest - possible value of type <type>interval</>, allowing a buffer overrun - in <function>interval_out()</>. Although the datetime input - functions were more careful about avoiding buffer overrun, the limit - was short enough to cause them to reject some valid inputs, such as - input containing a very long timezone name. The <application>ecpg</> - library contained these vulnerabilities along with some of its own. - (CVE-2014-0063) - </para> - </listitem> - - <listitem> - <para> - Prevent buffer overrun due to integer overflow in size calculations - (Noah Misch, Heikki Linnakangas) - </para> - - <para> - Several functions, mostly type input functions, calculated an - allocation size without checking for overflow. If overflow did - occur, a too-small buffer would be allocated and then written past. - (CVE-2014-0064) - </para> - </listitem> - - <listitem> - <para> - Prevent overruns of fixed-size buffers - (Peter Eisentraut, Jozef Mlich) - </para> - - <para> - Use <function>strlcpy()</> and related functions to provide a clear - guarantee that fixed-size buffers are not overrun. Unlike the - preceding items, it is unclear whether these cases really represent - live issues, since in most cases there appear to be previous - constraints on the size of the input string. Nonetheless it seems - prudent to silence all Coverity warnings of this type. - (CVE-2014-0065) - </para> - </listitem> - - <listitem> - <para> - Avoid crashing if <function>crypt()</> returns NULL (Honza Horak, - Bruce Momjian) - </para> - - <para> - There are relatively few scenarios in which <function>crypt()</> - could return NULL, but <filename>contrib/chkpass</> would crash - if it did. One practical case in which this could be an issue is - if <application>libc</> is configured to refuse to execute unapproved - hashing algorithms (e.g., <quote>FIPS mode</>). - (CVE-2014-0066) - </para> - </listitem> - - <listitem> - <para> - Document risks of <literal>make check</> in the regression testing - instructions (Noah Misch, Tom Lane) - </para> - - <para> - Since the temporary server started by <literal>make check</> - uses <quote>trust</> authentication, another user on the same machine - could connect to it as database superuser, and then potentially - exploit the privileges of the operating-system user who started the - tests. A future release will probably incorporate changes in the - testing procedure to prevent this risk, but some public discussion is - needed first. So for the moment, just warn people against using - <literal>make check</> when there are untrusted users on the - same machine. - (CVE-2014-0067) - </para> - </listitem> - - <listitem> - <para> - Fix possible mis-replay of WAL records when some segments of a - relation aren't full size (Greg Stark, Tom Lane) - </para> - - <para> - The WAL update could be applied to the wrong page, potentially many - pages past where it should have been. Aside from corrupting data, - this error has been observed to result in significant <quote>bloat</> - of standby servers compared to their masters, due to updates being - applied far beyond where the end-of-file should have been. This - failure mode does not appear to be a significant risk during crash - recovery, only when initially synchronizing a standby created from a - base backup taken from a quickly-changing master. - </para> - </listitem> - - <listitem> - <para> - Ensure that insertions into non-leaf GIN index pages write a full-page - WAL record when appropriate (Heikki Linnakangas) - </para> - - <para> - The previous coding risked index corruption in the event of a - partial-page write during a system crash. - </para> - </listitem> - - <listitem> - <para> - Fix race conditions during server process exit (Robert Haas) - </para> - - <para> - Ensure that signal handlers don't attempt to use the - process's <varname>MyProc</> pointer after it's no longer valid. - </para> - </listitem> - - <listitem> - <para> - Fix unsafe references to <varname>errno</> within error reporting - logic (Christian Kruse) - </para> - - <para> - This would typically lead to odd behaviors such as missing or - inappropriate <literal>HINT</> fields. - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes from using <function>ereport()</> too early - during server startup (Tom Lane) - </para> - - <para> - The principal case we've seen in the field is a crash if the server - is started in a directory it doesn't have permission to read. - </para> - </listitem> - - <listitem> - <para> - Clear retry flags properly in OpenSSL socket write - function (Alexander Kukushkin) - </para> - - <para> - This omission could result in a server lockup after unexpected loss - of an SSL-encrypted connection. - </para> - </listitem> - - <listitem> - <para> - Fix length checking for Unicode identifiers (<literal>U&"..."</> - syntax) containing escapes (Tom Lane) - </para> - - <para> - A spurious truncation warning would be printed for such identifiers - if the escaped form of the identifier was too long, but the - identifier actually didn't need truncation after de-escaping. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to invalid plan for nested sub-selects, such - as <literal>WHERE (... x IN (SELECT ...) ...) IN (SELECT ...)</> - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Ensure that <command>ANALYZE</> creates statistics for a table column - even when all the values in it are <quote>too wide</> (Tom Lane) - </para> - - <para> - <command>ANALYZE</> intentionally omits very wide values from its - histogram and most-common-values calculations, but it neglected to do - something sane in the case that all the sampled entries are too wide. - </para> - </listitem> - - <listitem> - <para> - In <literal>ALTER TABLE ... SET TABLESPACE</>, allow the database's - default tablespace to be used without a permissions check - (Stephen Frost) - </para> - - <para> - <literal>CREATE TABLE</> has always allowed such usage, - but <literal>ALTER TABLE</> didn't get the memo. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>cannot accept a set</> error when some arms of - a <literal>CASE</> return a set and others don't (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix checks for all-zero client addresses in pgstat functions (Kevin - Grittner) - </para> - </listitem> - - <listitem> - <para> - Fix possible misclassification of multibyte characters by the text - search parser (Tom Lane) - </para> - - <para> - Non-ASCII characters could be misclassified when using C locale with - a multibyte encoding. On Cygwin, non-C locales could fail as well. - </para> - </listitem> - - <listitem> - <para> - Fix possible misbehavior in <function>plainto_tsquery()</> - (Heikki Linnakangas) - </para> - - <para> - Use <function>memmove()</> not <function>memcpy()</> for copying - overlapping memory regions. There have been no field reports of - this actually causing trouble, but it's certainly risky. - </para> - </listitem> - - <listitem> - <para> - Accept <literal>SHIFT_JIS</> as an encoding name for locale checking - purposes (Tatsuo Ishii) - </para> - </listitem> - - <listitem> - <para> - Fix misbehavior of <function>PQhost()</> on Windows (Fujii Masao) - </para> - - <para> - It should return <literal>localhost</> if no host has been specified. - </para> - </listitem> - - <listitem> - <para> - Improve error handling in <application>libpq</> and <application>psql</> - for failures during <literal>COPY TO STDOUT/FROM STDIN</> (Tom Lane) - </para> - - <para> - In particular this fixes an infinite loop that could occur in 9.2 and - up if the server connection was lost during <literal>COPY FROM - STDIN</>. Variants of that scenario might be possible in older - versions, or with other client applications. - </para> - </listitem> - - <listitem> - <para> - Fix misaligned descriptors in <application>ecpg</> (MauMau) - </para> - </listitem> - - <listitem> - <para> - In <application>ecpg</>, handle lack of a hostname in the connection - parameters properly (Michael Meskes) - </para> - </listitem> - - <listitem> - <para> - Fix performance regression in <filename>contrib/dblink</> connection - startup (Joe Conway) - </para> - - <para> - Avoid an unnecessary round trip when client and server encodings match. - </para> - </listitem> - - <listitem> - <para> - In <filename>contrib/isn</>, fix incorrect calculation of the check - digit for ISMN values (Fabien Coelho) - </para> - </listitem> - - <listitem> - <para> - Ensure client-code-only installation procedure works as documented - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - In Mingw and Cygwin builds, install the <application>libpq</> DLL - in the <filename>bin</> directory (Andrew Dunstan) - </para> - - <para> - This duplicates what the MSVC build has long done. It should fix - problems with programs like <application>psql</> failing to start - because they can't find the DLL. - </para> - </listitem> - - <listitem> - <para> - Don't generate plain-text <filename>HISTORY</> - and <filename>src/test/regress/README</> files anymore (Tom Lane) - </para> - - <para> - These text files duplicated the main HTML and PDF documentation - formats. The trouble involved in maintaining them greatly outweighs - the likely audience for plain-text format. Distribution tarballs - will still contain files by these names, but they'll just be stubs - directing the reader to consult the main documentation. - The plain-text <filename>INSTALL</> file will still be maintained, as - there is arguably a use-case for that. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2013i - for DST law changes in Jordan and historical changes in Cuba. - </para> - - <para> - In addition, the zones <literal>Asia/Riyadh87</>, - <literal>Asia/Riyadh88</>, and <literal>Asia/Riyadh89</> have been - removed, as they are no longer maintained by IANA, and never - represented actual civil timekeeping practice. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-19"> - <title>Release 8.4.19</title> - - <formalpara> - <title>Release date:</title> - <para>2013-12-05</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.18. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.19</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, this release corrects a potential data corruption - issue. See the first changelog entry below to find out whether - your installation has been affected and what steps you can take if so. - </para> - - <para> - Also, if you are upgrading from a version earlier than 8.4.17, - see <xref linkend="release-8-4-17">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix <command>VACUUM</>'s tests to see whether it can - update <structfield>relfrozenxid</> (Andres Freund) - </para> - - <para> - In some cases <command>VACUUM</> (either manual or autovacuum) could - incorrectly advance a table's <structfield>relfrozenxid</> value, - allowing tuples to escape freezing, causing those rows to become - invisible once 2^31 transactions have elapsed. The probability of - data loss is fairly low since multiple incorrect advancements would - need to happen before actual loss occurs, but it's not zero. Users - upgrading from release 8.4.8 or earlier are not affected, but all later - versions contain the bug. - </para> - - <para> - The issue can be ameliorated by, after upgrading, vacuuming all tables - in all databases while having <link - linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link> - set to zero. This will fix any latent corruption but will not be able - to fix all pre-existing data errors. However, an installation can be - presumed safe after performing this vacuuming if it has executed fewer - than 2^31 update transactions in its lifetime (check this with - <literal>SELECT txid_current() < 2^31</>). - </para> - </listitem> - - <listitem> - <para> - Fix race condition in GIN index posting tree page deletion (Heikki - Linnakangas) - </para> - - <para> - This could lead to transient wrong answers or query failures. - </para> - </listitem> - - <listitem> - <para> - Avoid flattening a subquery whose <literal>SELECT</> list contains a - volatile function wrapped inside a sub-<literal>SELECT</> (Tom Lane) - </para> - - <para> - This avoids unexpected results due to extra evaluations of the - volatile function. - </para> - </listitem> - - <listitem> - <para> - Fix planner's processing of non-simple-variable subquery outputs - nested within outer joins (Tom Lane) - </para> - - <para> - This error could lead to incorrect plans for queries involving - multiple levels of subqueries within <literal>JOIN</> syntax. - </para> - </listitem> - - <listitem> - <para> - Fix premature deletion of temporary files (Andres Freund) - </para> - </listitem> - - <listitem> - <para> - Fix possible read past end of memory in rule printing (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Fix array slicing of <type>int2vector</> and <type>oidvector</> values - (Tom Lane) - </para> - - <para> - Expressions of this kind are now implicitly promoted to - regular <type>int2</> or <type>oid</> arrays. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect behaviors when using a SQL-standard, simple GMT offset - timezone (Tom Lane) - </para> - - <para> - In some cases, the system would use the simple GMT offset value when - it should have used the regular timezone setting that had prevailed - before the simple offset was selected. This change also causes - the <function>timeofday</> function to honor the simple GMT offset - zone. - </para> - </listitem> - - <listitem> - <para> - Prevent possible misbehavior when logging translations of Windows - error codes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Properly quote generated command lines in <application>pg_ctl</> - (Naoya Anzai and Tom Lane) - </para> - - <para> - This fix applies only to Windows. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_dumpall</> to work when a source database - sets <link - linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</></link> - via <command>ALTER DATABASE SET</> (Kevin Grittner) - </para> - - <para> - Previously, the generated script would fail during restore. - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</>'s processing of lists of variables - declared <type>varchar</> (Zoltán Böszörményi) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/lo</> defend against incorrect trigger definitions - (Marc Cousin) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2013h - for DST law changes in Argentina, Brazil, Jordan, Libya, - Liechtenstein, Morocco, and Palestine. Also, new timezone - abbreviations WIB, WIT, WITA for Indonesia. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-18"> - <title>Release 8.4.18</title> - - <formalpara> - <title>Release date:</title> - <para>2013-10-10</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.17. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.18</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.4.17, - see <xref linkend="release-8-4-17">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent corruption of multi-byte characters when attempting to - case-fold identifiers (Andrew Dunstan) - </para> - - <para> - <productname>PostgreSQL</> case-folds non-ASCII characters only - when using a single-byte server encoding. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak caused by <function>lo_open()</function> failure - (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix memory overcommit bug when <varname>work_mem</> is using more - than 24GB of memory (Stephen Frost) - </para> - </listitem> - - <listitem> - <para> - Fix deadlock bug in libpq when using SSL (Stephen Frost) - </para> - </listitem> - - <listitem> - <para> - Properly compute row estimates for boolean columns containing many NULL - values (Andrew Gierth) - </para> - - <para> - Previously tests like <literal>col IS NOT TRUE</> and <literal>col IS - NOT FALSE</> did not properly factor in NULL values when estimating - plan costs. - </para> - </listitem> - - <listitem> - <para> - Prevent pushing down <literal>WHERE</> clauses into unsafe - <literal>UNION/INTERSECT</> subqueries (Tom Lane) - </para> - - <para> - Subqueries of a <literal>UNION</> or <literal>INTERSECT</> that - contain set-returning functions or volatile functions in their - <literal>SELECT</> lists could be improperly optimized, leading to - run-time errors or incorrect query results. - </para> - </listitem> - - <listitem> - <para> - Fix rare case of <quote>failed to locate grouping columns</> - planner failure (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Improve view dumping code's handling of dropped columns in referenced - tables (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible deadlock during concurrent <command>CREATE INDEX - CONCURRENTLY</> operations (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <function>regexp_matches()</> handling of zero-length matches - (Jeevan Chalke) - </para> - - <para> - Previously, zero-length matches like '^' could return too many matches. - </para> - </listitem> - - <listitem> - <para> - Fix crash for overly-complex regular expressions (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix regular expression match failures for back references combined with - non-greedy quantifiers (Jeevan Chalke) - </para> - </listitem> - - <listitem> - <para> - Prevent <command>CREATE FUNCTION</> from checking <command>SET</> - variables unless function body checking is enabled (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <function>pgp_pub_decrypt()</> so it works for secret keys with - passwords (Marko Kreen) - </para> - </listitem> - - <listitem> - <para> - Remove rare inaccurate warning during vacuum of index-less tables - (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Avoid possible failure when performing transaction control commands (e.g - <command>ROLLBACK</>) in prepared queries (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Ensure that floating-point data input accepts standard spellings - of <quote>infinity</> on all platforms (Tom Lane) - </para> - - <para> - The C99 standard says that allowable spellings are <literal>inf</>, - <literal>+inf</>, <literal>-inf</>, <literal>infinity</>, - <literal>+infinity</>, and <literal>-infinity</>. Make sure we - recognize these even if the platform's <function>strtod</> function - doesn't. - </para> - </listitem> - - <listitem> - <para> - Expand ability to compare rows to records and arrays (Rafal Rzepecki, - Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2013d - for DST law changes in Israel, Morocco, Palestine, and Paraguay. - Also, historical zone data corrections for Macquarie Island. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-17"> - <title>Release 8.4.17</title> - - <formalpara> - <title>Release date:</title> - <para>2013-04-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.16. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.17</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, this release corrects several errors in management of GiST - indexes. After installing this update, it is advisable to - <command>REINDEX</> any GiST indexes that meet one or more of the - conditions described below. - </para> - - <para> - Also, if you are upgrading from a version earlier than 8.4.10, - see <xref linkend="release-8-4-10">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Reset OpenSSL randomness state in each postmaster child process - (Marko Kreen) - </para> - - <para> - This avoids a scenario wherein random numbers generated by - <filename>contrib/pgcrypto</> functions might be relatively easy for - another database user to guess. The risk is only significant when - the postmaster is configured with <varname>ssl</> = <literal>on</> - but most connections don't use SSL encryption. (CVE-2013-1900) - </para> - </listitem> - - <listitem> - <para> - Fix GiST indexes to not use <quote>fuzzy</> geometric comparisons when - it's not appropriate to do so (Alexander Korotkov) - </para> - - <para> - The core geometric types perform comparisons using <quote>fuzzy</> - equality, but <function>gist_box_same</> must do exact comparisons, - else GiST indexes using it might become inconsistent. After installing - this update, users should <command>REINDEX</> any GiST indexes on - <type>box</>, <type>polygon</>, <type>circle</>, or <type>point</> - columns, since all of these use <function>gist_box_same</>. - </para> - </listitem> - - <listitem> - <para> - Fix erroneous range-union and penalty logic in GiST indexes that use - <filename>contrib/btree_gist</> for variable-width data types, that is - <type>text</>, <type>bytea</>, <type>bit</>, and <type>numeric</> - columns (Tom Lane) - </para> - - <para> - These errors could result in inconsistent indexes in which some keys - that are present would not be found by searches, and also in useless - index bloat. Users are advised to <command>REINDEX</> such indexes - after installing this update. - </para> - </listitem> - - <listitem> - <para> - Fix bugs in GiST page splitting code for multi-column indexes - (Tom Lane) - </para> - - <para> - These errors could result in inconsistent indexes in which some keys - that are present would not be found by searches, and also in indexes - that are unnecessarily inefficient to search. Users are advised to - <command>REINDEX</> multi-column GiST indexes after installing this - update. - </para> - </listitem> - - <listitem> - <para> - Fix infinite-loop risk in regular expression compilation (Tom Lane, - Don Porter) - </para> - </listitem> - - <listitem> - <para> - Fix potential null-pointer dereference in regular expression compilation - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <function>to_char()</> to use ASCII-only case-folding rules where - appropriate (Tom Lane) - </para> - - <para> - This fixes misbehavior of some template patterns that should be - locale-independent, but mishandled <quote><literal>I</></quote> and - <quote><literal>i</></quote> in Turkish locales. - </para> - </listitem> - - <listitem> - <para> - Fix unwanted rejection of timestamp <literal>1999-12-31 24:00:00</> - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Remove useless <quote>picksplit doesn't support secondary split</> log - messages (Josh Hansen, Tom Lane) - </para> - - <para> - This message seems to have been added in expectation of code that was - never written, and probably never will be, since GiST's default - handling of secondary splits is actually pretty good. So stop nagging - end users about it. - </para> - </listitem> - - <listitem> - <para> - Fix possible failure to send a session's last few transaction - commit/abort counts to the statistics collector (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Eliminate memory leaks in PL/Perl's <function>spi_prepare()</> function - (Alex Hunsaker, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_dumpall</> to handle database names containing - <quote><literal>=</></quote> correctly (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Avoid crash in <application>pg_dump</> when an incorrect connection - string is given (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Ignore invalid indexes in <application>pg_dump</> (Michael Paquier) - </para> - - <para> - Dumping invalid indexes can cause problems at restore time, for example - if the reason the index creation failed was because it tried to enforce - a uniqueness condition not satisfied by the table's data. Also, if the - index creation is in fact still in progress, it seems reasonable to - consider it to be an uncommitted DDL change, which - <application>pg_dump</> wouldn't be expected to dump anyway. - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/pg_trgm</>'s <function>similarity()</> function - to return zero for trigram-less strings (Tom Lane) - </para> - - <para> - Previously it returned <literal>NaN</> due to internal division by zero. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2013b - for DST law changes in Chile, Haiti, Morocco, Paraguay, and some - Russian areas. Also, historical zone data corrections for numerous - places. - </para> - - <para> - Also, update the time zone abbreviation files for recent changes in - Russia and elsewhere: <literal>CHOT</>, <literal>GET</>, - <literal>IRKT</>, <literal>KGT</>, <literal>KRAT</>, <literal>MAGT</>, - <literal>MAWT</>, <literal>MSK</>, <literal>NOVT</>, <literal>OMST</>, - <literal>TKT</>, <literal>VLAT</>, <literal>WST</>, <literal>YAKT</>, - <literal>YEKT</> now follow their current meanings, and - <literal>VOLT</> (Europe/Volgograd) and <literal>MIST</> - (Antarctica/Macquarie) are added to the default abbreviations list. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-16"> - <title>Release 8.4.16</title> - - <formalpara> - <title>Release date:</title> - <para>2013-02-07</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.15. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.16</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.4.10, - see <xref linkend="release-8-4-10">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent execution of <function>enum_recv</> from SQL (Tom Lane) - </para> - - <para> - The function was misdeclared, allowing a simple SQL command to crash the - server. In principle an attacker might be able to use it to examine the - contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) - for reporting this issue. (CVE-2013-0255) - </para> - </listitem> - - <listitem> - <para> - Update minimum recovery point when truncating a relation file (Heikki - Linnakangas) - </para> - - <para> - Once data has been discarded, it's no longer safe to stop recovery at - an earlier point in the timeline. - </para> - </listitem> - - <listitem> - <para> - Fix SQL grammar to allow subscripting or field selection from a - sub-SELECT result (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Protect against race conditions when scanning - <structname>pg_tablespace</> (Stephen Frost, Tom Lane) - </para> - - <para> - <command>CREATE DATABASE</> and <command>DROP DATABASE</> could - misbehave if there were concurrent updates of - <structname>pg_tablespace</> entries. - </para> - </listitem> - - <listitem> - <para> - Prevent <command>DROP OWNED</> from trying to drop whole databases or - tablespaces (Álvaro Herrera) - </para> - - <para> - For safety, ownership of these objects must be reassigned, not dropped. - </para> - </listitem> - - <listitem> - <para> - Fix error in <link - linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link> - implementation (Andres Freund) - </para> - - <para> - In installations that have existed for more than <link - linkend="guc-vacuum-freeze-min-age"><varname>vacuum_freeze_min_age</></link> - transactions, this mistake prevented autovacuum from using partial-table - scans, so that a full-table scan would always happen instead. - </para> - </listitem> - - <listitem> - <para> - Prevent misbehavior when a <symbol>RowExpr</> or <symbol>XmlExpr</> - is parse-analyzed twice (Andres Freund, Tom Lane) - </para> - - <para> - This mistake could be user-visible in contexts such as - <literal>CREATE TABLE LIKE INCLUDING INDEXES</>. - </para> - </listitem> - - <listitem> - <para> - Improve defenses against integer overflow in hashtable sizing - calculations (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Reject out-of-range dates in <function>to_date()</> (Hitoshi Harada) - </para> - </listitem> - - <listitem> - <para> - Ensure that non-ASCII prompt strings are translated to the correct - code page on Windows (Alexander Law, Noah Misch) - </para> - - <para> - This bug affected <application>psql</> and some other client programs. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash in <application>psql</>'s <command>\?</> command - when not connected to a database (Meng Qingzhong) - </para> - </listitem> - - <listitem> - <para> - Fix one-byte buffer overrun in <application>libpq</>'s - <function>PQprintTuples</> (Xi Wang) - </para> - - <para> - This ancient function is not used anywhere by - <productname>PostgreSQL</> itself, but it might still be used by some - client code. - </para> - </listitem> - - <listitem> - <para> - Make <application>ecpglib</> use translated messages properly - (Chen Huajun) - </para> - </listitem> - - <listitem> - <para> - Properly install <application>ecpg_compat</> and - <application>pgtypes</> libraries on MSVC (Jiang Guiqing) - </para> - </listitem> - - <listitem> - <para> - Rearrange configure's tests for supplied functions so it is not - fooled by bogus exports from libedit/libreadline (Christoph Berg) - </para> - </listitem> - - <listitem> - <para> - Ensure Windows build number increases over time (Magnus Hagander) - </para> - </listitem> - - <listitem> - <para> - Make <application>pgxs</> build executables with the right - <literal>.exe</> suffix when cross-compiling for Windows - (Zoltan Boszormenyi) - </para> - </listitem> - - <listitem> - <para> - Add new timezone abbreviation <literal>FET</> (Tom Lane) - </para> - - <para> - This is now used in some eastern-European time zones. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-15"> - <title>Release 8.4.15</title> - - <formalpara> - <title>Release date:</title> - <para>2012-12-06</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.14. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.15</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.4.10, - see <xref linkend="release-8-4-10">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix multiple bugs associated with <command>CREATE INDEX - CONCURRENTLY</> (Andres Freund, Tom Lane) - </para> - - <para> - Fix <command>CREATE INDEX CONCURRENTLY</> to use - in-place updates when changing the state of an index's - <structname>pg_index</> row. This prevents race conditions that could - cause concurrent sessions to miss updating the target index, thus - resulting in corrupt concurrently-created indexes. - </para> - - <para> - Also, fix various other operations to ensure that they ignore - invalid indexes resulting from a failed <command>CREATE INDEX - CONCURRENTLY</> command. The most important of these is - <command>VACUUM</>, because an auto-vacuum could easily be launched - on the table before corrective action can be taken to fix or remove - the invalid index. - </para> - </listitem> - - <listitem> - <para> - Avoid corruption of internal hash tables when out of memory - (Hitoshi Harada) - </para> - </listitem> - - <listitem> - <para> - Fix planning of non-strict equivalence clauses above outer joins - (Tom Lane) - </para> - - <para> - The planner could derive incorrect constraints from a clause equating - a non-strict construct to something else, for example - <literal>WHERE COALESCE(foo, 0) = 0</> - when <literal>foo</> is coming from the nullable side of an outer join. - </para> - </listitem> - - <listitem> - <para> - Improve planner's ability to prove exclusion constraints from - equivalence classes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix partial-row matching in hashed subplans to handle cross-type cases - correctly (Tom Lane) - </para> - - <para> - This affects multicolumn <literal>NOT IN</> subplans, such as - <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</> - when for instance <literal>b</> and <literal>y</> are <type>int4</> - and <type>int8</> respectively. This mistake led to wrong answers - or crashes depending on the specific datatypes involved. - </para> - </listitem> - - <listitem> - <para> - Acquire buffer lock when re-fetching the old tuple for an - <literal>AFTER ROW UPDATE/DELETE</> trigger (Andres Freund) - </para> - - <para> - In very unusual circumstances, this oversight could result in passing - incorrect data to the precheck logic for a foreign-key enforcement - trigger. That could result in a crash, or in an incorrect decision - about whether to fire the trigger. - </para> - </listitem> - - <listitem> - <para> - Fix <command>ALTER COLUMN TYPE</> to handle inherited check - constraints properly (Pavan Deolasee) - </para> - - <para> - This worked correctly in pre-8.4 releases, and now works correctly - in 8.4 and later. - </para> - </listitem> - - <listitem> - <para> - Fix <command>REASSIGN OWNED</> to handle grants on tablespaces - (Álvaro Herrera) - </para> - </listitem> - - <listitem> - <para> - Ignore incorrect <structname>pg_attribute</> entries for system - columns for views (Tom Lane) - </para> - - <para> - Views do not have any system columns. However, we forgot to - remove such entries when converting a table to a view. That's fixed - properly for 9.3 and later, but in previous branches we need to defend - against existing mis-converted views. - </para> - </listitem> - - <listitem> - <para> - Fix rule printing to dump <literal>INSERT INTO <replaceable>table</> - DEFAULT VALUES</literal> correctly (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Guard against stack overflow when there are too many - <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> clauses - in a query (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Prevent platform-dependent failures when dividing the minimum possible - integer value by -1 (Xi Wang, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible access past end of string in date parsing - (Hitoshi Harada) - </para> - </listitem> - - <listitem> - <para> - Produce an understandable error message if the length of the path name - for a Unix-domain socket exceeds the platform-specific limit - (Tom Lane, Andrew Dunstan) - </para> - - <para> - Formerly, this would result in something quite unhelpful, such as - <quote>Non-recoverable failure in name resolution</>. - </para> - </listitem> - - <listitem> - <para> - Fix memory leaks when sending composite column values to the client - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Make <application>pg_ctl</> more robust about reading the - <filename>postmaster.pid</> file (Heikki Linnakangas) - </para> - - <para> - Fix race conditions and possible file descriptor leakage. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash in <application>psql</> if incorrectly-encoded data - is presented and the <varname>client_encoding</> setting is a - client-only encoding, such as SJIS (Jiang Guiqing) - </para> - </listitem> - - <listitem> - <para> - Fix bugs in the <filename>restore.sql</> script emitted by - <application>pg_dump</> in <literal>tar</> output format (Tom Lane) - </para> - - <para> - The script would fail outright on tables whose names include - upper-case characters. Also, make the script capable of restoring - data in <option>--inserts</> mode as well as the regular COPY mode. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</> to accept POSIX-conformant - <literal>tar</> files (Brian Weaver, Tom Lane) - </para> - - <para> - The original coding of <application>pg_dump</>'s <literal>tar</> - output mode produced files that are not fully conformant with the - POSIX standard. This has been corrected for version 9.3. This - patch updates previous branches so that they will accept both the - incorrect and the corrected formats, in hopes of avoiding - compatibility problems when 9.3 comes out. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_resetxlog</> to locate <filename>postmaster.pid</> - correctly when given a relative path to the data directory (Tom Lane) - </para> - - <para> - This mistake could lead to <application>pg_resetxlog</> not noticing - that there is an active postmaster using the data directory. - </para> - </listitem> - - <listitem> - <para> - Fix <application>libpq</>'s <function>lo_import()</> and - <function>lo_export()</> functions to report file I/O errors properly - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</>'s processing of nested structure pointer - variables (Muhammad Usama) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/pageinspect</>'s btree page inspection - functions take buffer locks while examining pages (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pgxs</> support for building loadable modules on AIX - (Tom Lane) - </para> - - <para> - Building modules outside the original source tree didn't work on AIX. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2012j - for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western - Samoa, and portions of Brazil. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-14"> - <title>Release 8.4.14</title> - - <formalpara> - <title>Release date:</title> - <para>2012-09-24</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.13. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.14</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.4.10, - see <xref linkend="release-8-4-10">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix planner's assignment of executor parameters, and fix executor's - rescan logic for CTE plan nodes (Tom Lane) - </para> - - <para> - These errors could result in wrong answers from queries that scan the - same <literal>WITH</> subquery multiple times. - </para> - </listitem> - - <listitem> - <para> - Improve page-splitting decisions in GiST indexes (Alexander Korotkov, - Robert Haas, Tom Lane) - </para> - - <para> - Multi-column GiST indexes might suffer unexpected bloat due to this - error. - </para> - </listitem> - - <listitem> - <para> - Fix cascading privilege revoke to stop if privileges are still held - (Tom Lane) - </para> - - <para> - If we revoke a grant option from some role <replaceable>X</>, but - <replaceable>X</> still holds that option via a grant from someone - else, we should not recursively revoke the corresponding privilege - from role(s) <replaceable>Y</> that <replaceable>X</> had granted it - to. - </para> - </listitem> - - <listitem> - <para> - Fix handling of <literal>SIGFPE</> when PL/Perl is in use (Andres Freund) - </para> - - <para> - Perl resets the process's <literal>SIGFPE</> handler to - <literal>SIG_IGN</>, which could result in crashes later on. Restore - the normal Postgres signal handler after initializing PL/Perl. - </para> - </listitem> - - <listitem> - <para> - Prevent PL/Perl from crashing if a recursive PL/Perl function is - redefined while being executed (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Work around possible misoptimization in PL/Perl (Tom Lane) - </para> - - <para> - Some Linux distributions contain an incorrect version of - <filename>pthread.h</> that results in incorrect compiled code in - PL/Perl, leading to crashes if a PL/Perl function calls another one - that throws an error. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2012f - for DST law changes in Fiji - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-13"> - <title>Release 8.4.13</title> - - <formalpara> - <title>Release date:</title> - <para>2012-08-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.12. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.13</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.4.10, - see <xref linkend="release-8-4-10">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent access to external files/URLs via XML entity references - (Noah Misch, Tom Lane) - </para> - - <para> - <function>xml_parse()</> would attempt to fetch external files or - URLs as needed to resolve DTD and entity references in an XML value, - thus allowing unprivileged database users to attempt to fetch data - with the privileges of the database server. While the external data - wouldn't get returned directly to the user, portions of it could be - exposed in error messages if the data didn't parse as valid XML; and - in any case the mere ability to check existence of a file might be - useful to an attacker. (CVE-2012-3489) - </para> - </listitem> - - <listitem> - <para> - Prevent access to external files/URLs via <filename>contrib/xml2</>'s - <function>xslt_process()</> (Peter Eisentraut) - </para> - - <para> - <application>libxslt</> offers the ability to read and write both - files and URLs through stylesheet commands, thus allowing - unprivileged database users to both read and write data with the - privileges of the database server. Disable that through proper use - of <application>libxslt</>'s security options. (CVE-2012-3488) - </para> - - <para> - Also, remove <function>xslt_process()</>'s ability to fetch documents - and stylesheets from external files/URLs. While this was a - documented <quote>feature</>, it was long regarded as a bad idea. - The fix for CVE-2012-3489 broke that capability, and rather than - expend effort on trying to fix it, we're just going to summarily - remove it. - </para> - </listitem> - - <listitem> - <para> - Prevent too-early recycling of btree index pages (Noah Misch) - </para> - - <para> - When we allowed read-only transactions to skip assigning XIDs, we - introduced the possibility that a deleted btree page could be - recycled while a read-only transaction was still in flight to it. - This would result in incorrect index search results. The probability - of such an error occurring in the field seems very low because of the - timing requirements, but nonetheless it should be fixed. - </para> - </listitem> - - <listitem> - <para> - Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) - </para> - - <para> - If <command>ALTER SEQUENCE</> was executed on a freshly created or - reset sequence, and then precisely one <function>nextval()</> call - was made on it, and then the server crashed, WAL replay would restore - the sequence to a state in which it appeared that no - <function>nextval()</> had been done, thus allowing the first - sequence value to be returned again by the next - <function>nextval()</> call. In particular this could manifest for - <type>serial</> columns, since creation of a serial column's sequence - includes an <command>ALTER SEQUENCE OWNED BY</> step. - </para> - </listitem> - - <listitem> - <para> - Ensure the <filename>backup_label</> file is fsync'd after - <function>pg_start_backup()</> (Dave Kerr) - </para> - </listitem> - - <listitem> - <para> - Back-patch 9.1 improvement to compress the fsync request queue - (Robert Haas) - </para> - - <para> - This improves performance during checkpoints. The 9.1 change - has now seen enough field testing to seem safe to back-patch. - </para> - </listitem> - - <listitem> - <para> - Only allow autovacuum to be auto-canceled by a directly blocked - process (Tom Lane) - </para> - - <para> - The original coding could allow inconsistent behavior in some cases; - in particular, an autovacuum could get canceled after less than - <literal>deadlock_timeout</> grace period. - </para> - </listitem> - - <listitem> - <para> - Improve logging of autovacuum cancels (Robert Haas) - </para> - </listitem> - - <listitem> - <para> - Fix log collector so that <literal>log_truncate_on_rotation</> works - during the very first log rotation after server start (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>WITH</> attached to a nested set operation - (<literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</>) - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Ensure that a whole-row reference to a subquery doesn't include any - extra <literal>GROUP BY</> or <literal>ORDER BY</> columns (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Disallow copying whole-row references in <literal>CHECK</> - constraints and index definitions during <command>CREATE TABLE</> - (Tom Lane) - </para> - - <para> - This situation can arise in <command>CREATE TABLE</> with - <literal>LIKE</> or <literal>INHERITS</>. The copied whole-row - variable was incorrectly labeled with the row type of the original - table not the new one. Rejecting the case seems reasonable for - <literal>LIKE</>, since the row types might well diverge later. For - <literal>INHERITS</> we should ideally allow it, with an implicit - coercion to the parent table's row type; but that will require more - work than seems safe to back-patch. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in <literal>ARRAY(SELECT ...)</> subqueries (Heikki - Linnakangas, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix extraction of common prefixes from regular expressions (Tom Lane) - </para> - - <para> - The code could get confused by quantified parenthesized - subexpressions, such as <literal>^(foo)?bar</>. This would lead to - incorrect index optimization of searches for such patterns. - </para> - </listitem> - - <listitem> - <para> - Fix bugs with parsing signed - <replaceable>hh</><literal>:</><replaceable>mm</> and - <replaceable>hh</><literal>:</><replaceable>mm</><literal>:</><replaceable>ss</> - fields in <type>interval</> constants (Amit Kapila, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Report errors properly in <filename>contrib/xml2</>'s - <function>xslt_process()</> (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2012e - for DST law changes in Morocco and Tokelau - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-12"> - <title>Release 8.4.12</title> - - <formalpara> - <title>Release date:</title> - <para>2012-06-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.11. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.12</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.4.10, - see <xref linkend="release-8-4-10">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix incorrect password transformation in - <filename>contrib/pgcrypto</>'s DES <function>crypt()</> function - (Solar Designer) - </para> - - <para> - If a password string contained the byte value <literal>0x80</>, the - remainder of the password was ignored, causing the password to be much - weaker than it appeared. With this fix, the rest of the string is - properly included in the DES hash. Any stored password values that are - affected by this bug will thus no longer match, so the stored values may - need to be updated. (CVE-2012-2143) - </para> - </listitem> - - <listitem> - <para> - Ignore <literal>SECURITY DEFINER</> and <literal>SET</> attributes for - a procedural language's call handler (Tom Lane) - </para> - - <para> - Applying such attributes to a call handler could crash the server. - (CVE-2012-2655) - </para> - </listitem> - - <listitem> - <para> - Allow numeric timezone offsets in <type>timestamp</> input to be up to - 16 hours away from UTC (Tom Lane) - </para> - - <para> - Some historical time zones have offsets larger than 15 hours, the - previous limit. This could result in dumped data values being rejected - during reload. - </para> - </listitem> - - <listitem> - <para> - Fix timestamp conversion to cope when the given time is exactly the - last DST transition time for the current timezone (Tom Lane) - </para> - - <para> - This oversight has been there a long time, but was not noticed - previously because most DST-using zones are presumed to have an - indefinite sequence of future DST transitions. - </para> - </listitem> - - <listitem> - <para> - Fix <type>text</> to <type>name</> and <type>char</> to <type>name</> - casts to perform string truncation correctly in multibyte encodings - (Karl Schnaitter) - </para> - </listitem> - - <listitem> - <para> - Fix memory copying bug in <function>to_tsquery()</> (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix planner's handling of outer PlaceHolderVars within subqueries (Tom - Lane) - </para> - - <para> - This bug concerns sub-SELECTs that reference variables coming from the - nullable side of an outer join of the surrounding query. - In 9.1, queries affected by this bug would fail with <quote>ERROR: - Upper-level PlaceHolderVar found where not expected</>. But in 9.0 and - 8.4, you'd silently get possibly-wrong answers, since the value - transmitted into the subquery wouldn't go to null when it should. - </para> - </listitem> - - <listitem> - <para> - Fix slow session startup when <structname>pg_attribute</> is very large - (Tom Lane) - </para> - - <para> - If <structname>pg_attribute</> exceeds one-fourth of - <varname>shared_buffers</>, cache rebuilding code that is sometimes - needed during session start would trigger the synchronized-scan logic, - causing it to take many times longer than normal. The problem was - particularly acute if many new sessions were starting at once. - </para> - </listitem> - - <listitem> - <para> - Ensure sequential scans check for query cancel reasonably often (Merlin - Moncure) - </para> - - <para> - A scan encountering many consecutive pages that contain no live tuples - would not respond to interrupts meanwhile. - </para> - </listitem> - - <listitem> - <para> - Ensure the Windows implementation of <function>PGSemaphoreLock()</> - clears <varname>ImmediateInterruptOK</> before returning (Tom Lane) - </para> - - <para> - This oversight meant that a query-cancel interrupt received later - in the same query could be accepted at an unsafe time, with - unpredictable but not good consequences. - </para> - </listitem> - - <listitem> - <para> - Show whole-row variables safely when printing views or rules - (Abbas Butt, Tom Lane) - </para> - - <para> - Corner cases involving ambiguous names (that is, the name could be - either a table or column name of the query) were printed in an - ambiguous way, risking that the view or rule would be interpreted - differently after dump and reload. Avoid the ambiguous case by - attaching a no-op cast. - </para> - </listitem> - - <listitem> - <para> - Fix <command>COPY FROM</> to properly handle null marker strings that - correspond to invalid encoding (Tom Lane) - </para> - - <para> - A null marker string such as <literal>E'\\0'</> should work, and did - work in the past, but the case got broken in 8.4. - </para> - </listitem> - - <listitem> - <para> - Ensure autovacuum worker processes perform stack depth checking - properly (Heikki Linnakangas) - </para> - - <para> - Previously, infinite recursion in a function invoked by - auto-<command>ANALYZE</> could crash worker processes. - </para> - </listitem> - - <listitem> - <para> - Fix logging collector to not lose log coherency under high load (Andrew - Dunstan) - </para> - - <para> - The collector previously could fail to reassemble large messages if it - got too busy. - </para> - </listitem> - - <listitem> - <para> - Fix logging collector to ensure it will restart file rotation - after receiving <systemitem>SIGHUP</> (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix WAL replay logic for GIN indexes to not fail if the index was - subsequently dropped (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in PL/pgSQL's <command>RETURN NEXT</> command (Joe - Conway) - </para> - </listitem> - - <listitem> - <para> - Fix PL/pgSQL's <command>GET DIAGNOSTICS</> command when the target - is the function's first variable (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix potential access off the end of memory in <application>psql</>'s - expanded display (<command>\x</>) mode (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Fix several performance problems in <application>pg_dump</> when - the database contains many objects (Jeff Janes, Tom Lane) - </para> - - <para> - <application>pg_dump</> could get very slow if the database contained - many schemas, or if many objects are in dependency loops, or if there - are many owned sequences. - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</>'s <function>dblink_exec()</> to not leak - temporary database connections upon error (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</> to report the correct connection name in - error messages (Kyotaro Horiguchi) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2012c - for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland - Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; - also historical corrections for Canada. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-11"> - <title>Release 8.4.11</title> - - <formalpara> - <title>Release date:</title> - <para>2012-02-27</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.10. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.11</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.4.10, - see <xref linkend="release-8-4-10">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Require execute permission on the trigger function for - <command>CREATE TRIGGER</> (Robert Haas) - </para> - - <para> - This missing check could allow another user to execute a trigger - function with forged input data, by installing it on a table he owns. - This is only of significance for trigger functions marked - <literal>SECURITY DEFINER</>, since otherwise trigger functions run - as the table owner anyway. (CVE-2012-0866) - </para> - </listitem> - - <listitem> - <para> - Remove arbitrary limitation on length of common name in SSL - certificates (Heikki Linnakangas) - </para> - - <para> - Both <application>libpq</> and the server truncated the common name - extracted from an SSL certificate at 32 bytes. Normally this would - cause nothing worse than an unexpected verification failure, but there - are some rather-implausible scenarios in which it might allow one - certificate holder to impersonate another. The victim would have to - have a common name exactly 32 bytes long, and the attacker would have - to persuade a trusted CA to issue a certificate in which the common - name has that string as a prefix. Impersonating a server would also - require some additional exploit to redirect client connections. - (CVE-2012-0867) - </para> - </listitem> - - <listitem> - <para> - Convert newlines to spaces in names written in <application>pg_dump</> - comments (Robert Haas) - </para> - - <para> - <application>pg_dump</> was incautious about sanitizing object names - that are emitted within SQL comments in its output script. A name - containing a newline would at least render the script syntactically - incorrect. Maliciously crafted object names could present a SQL - injection risk when the script is reloaded. (CVE-2012-0868) - </para> - </listitem> - - <listitem> - <para> - Fix btree index corruption from insertions concurrent with vacuuming - (Tom Lane) - </para> - - <para> - An index page split caused by an insertion could sometimes cause a - concurrently-running <command>VACUUM</> to miss removing index entries - that it should remove. After the corresponding table rows are removed, - the dangling index entries would cause errors (such as <quote>could not - read block N in file ...</>) or worse, silently wrong query results - after unrelated rows are re-inserted at the now-free table locations. - This bug has been present since release 8.2, but occurs so infrequently - that it was not diagnosed until now. If you have reason to suspect - that it has happened in your database, reindexing the affected index - will fix things. - </para> - </listitem> - - <listitem> - <para> - Update per-column permissions, not only per-table permissions, when - changing table owner (Tom Lane) - </para> - - <para> - Failure to do this meant that any previously granted column permissions - were still shown as having been granted by the old owner. This meant - that neither the new owner nor a superuser could revoke the - now-untraceable-to-table-owner permissions. - </para> - </listitem> - - <listitem> - <para> - Allow non-existent values for some settings in <command>ALTER - USER/DATABASE SET</> (Heikki Linnakangas) - </para> - - <para> - Allow <varname>default_text_search_config</>, - <varname>default_tablespace</>, and <varname>temp_tablespaces</> to be - set to names that are not known. This is because they might be known - in another database where the setting is intended to be used, or for the - tablespace cases because the tablespace might not be created yet. The - same issue was previously recognized for <varname>search_path</>, and - these settings now act like that one. - </para> - </listitem> - - <listitem> - <para> - Avoid crashing when we have problems deleting table files post-commit - (Tom Lane) - </para> - - <para> - Dropping a table should lead to deleting the underlying disk files only - after the transaction commits. In event of failure then (for instance, - because of wrong file permissions) the code is supposed to just emit a - warning message and go on, since it's too late to abort the - transaction. This logic got broken as of release 8.4, causing such - situations to result in a PANIC and an unrestartable database. - </para> - </listitem> - - <listitem> - <para> - Track the OID counter correctly during WAL replay, even when it wraps - around (Tom Lane) - </para> - - <para> - Previously the OID counter would remain stuck at a high value until the - system exited replay mode. The practical consequences of that are - usually nil, but there are scenarios wherein a standby server that's - been promoted to master might take a long time to advance the OID - counter to a reasonable value once values are needed. - </para> - </listitem> - - <listitem> - <para> - Fix regular expression back-references with <literal>*</> attached - (Tom Lane) - </para> - - <para> - Rather than enforcing an exact string match, the code would effectively - accept any string that satisfies the pattern sub-expression referenced - by the back-reference symbol. - </para> - - <para> - A similar problem still afflicts back-references that are embedded in a - larger quantified expression, rather than being the immediate subject - of the quantifier. This will be addressed in a future - <productname>PostgreSQL</> release. - </para> - </listitem> - - <listitem> - <para> - Fix recently-introduced memory leak in processing of - <type>inet</>/<type>cidr</> values (Heikki Linnakangas) - </para> - - <para> - A patch in the December 2011 releases of <productname>PostgreSQL</> - caused memory leakage in these operations, which could be significant - in scenarios such as building a btree index on such a column. - </para> - </listitem> - - <listitem> - <para> - Fix dangling pointer after <command>CREATE TABLE AS</>/<command>SELECT - INTO</> in a SQL-language function (Tom Lane) - </para> - - <para> - In most cases this only led to an assertion failure in assert-enabled - builds, but worse consequences seem possible. - </para> - </listitem> - - <listitem> - <para> - Avoid double close of file handle in syslogger on Windows (MauMau) - </para> - - <para> - Ordinarily this error was invisible, but it would cause an exception - when running on a debug version of Windows. - </para> - </listitem> - - <listitem> - <para> - Fix I/O-conversion-related memory leaks in plpgsql - (Andres Freund, Jan Urbanski, Tom Lane) - </para> - - <para> - Certain operations would leak memory until the end of the current - function. - </para> - </listitem> - - <listitem> - <para> - Improve <application>pg_dump</>'s handling of inherited table columns - (Tom Lane) - </para> - - <para> - <application>pg_dump</> mishandled situations where a child column has - a different default expression than its parent column. If the default - is textually identical to the parent's default, but not actually the - same (for instance, because of schema search path differences) it would - not be recognized as different, so that after dump and restore the - child would be allowed to inherit the parent's default. Child columns - that are <literal>NOT NULL</> where their parent is not could also be - restored subtly incorrectly. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</>'s direct-to-database mode for - INSERT-style table data (Tom Lane) - </para> - - <para> - Direct-to-database restores from archive files made with - <option>--inserts</> or <option>--column-inserts</> options fail when - using <application>pg_restore</> from a release dated September or - December 2011, as a result of an oversight in a fix for another - problem. The archive file itself is not at fault, and text-mode - output is okay. - </para> - </listitem> - - <listitem> - <para> - Allow <literal>AT</> option in <application>ecpg</> - <literal>DEALLOCATE</> statements (Michael Meskes) - </para> - - <para> - The infrastructure to support this has been there for awhile, but - through an oversight there was still an error check rejecting the case. - </para> - </listitem> - - <listitem> - <para> - Fix error in <filename>contrib/intarray</>'s <literal>int[] & - int[]</> operator (Guillaume Lelarge) - </para> - - <para> - If the smallest integer the two input arrays have in common is 1, - and there are smaller values in either array, then 1 would be - incorrectly omitted from the result. - </para> - </listitem> - - <listitem> - <para> - Fix error detection in <filename>contrib/pgcrypto</>'s - <function>encrypt_iv()</> and <function>decrypt_iv()</> - (Marko Kreen) - </para> - - <para> - These functions failed to report certain types of invalid-input errors, - and would instead return random garbage values for incorrect input. - </para> - </listitem> - - <listitem> - <para> - Fix one-byte buffer overrun in <filename>contrib/test_parser</> - (Paul Guyot) - </para> - - <para> - The code would try to read one more byte than it should, which would - crash in corner cases. - Since <filename>contrib/test_parser</> is only example code, this is - not a security issue in itself, but bad example code is still bad. - </para> - </listitem> - - <listitem> - <para> - Use <function>__sync_lock_test_and_set()</> for spinlocks on ARM, if - available (Martin Pitt) - </para> - - <para> - This function replaces our previous use of the <literal>SWPB</> - instruction, which is deprecated and not available on ARMv6 and later. - Reports suggest that the old code doesn't fail in an obvious way on - recent ARM boards, but simply doesn't interlock concurrent accesses, - leading to bizarre failures in multiprocess operation. - </para> - </listitem> - - <listitem> - <para> - Use <option>-fexcess-precision=standard</> option when building with - gcc versions that accept it (Andrew Dunstan) - </para> - - <para> - This prevents assorted scenarios wherein recent versions of gcc will - produce creative results. - </para> - </listitem> - - <listitem> - <para> - Allow use of threaded Python on FreeBSD (Chris Rees) - </para> - - <para> - Our configure script previously believed that this combination wouldn't - work; but FreeBSD fixed the problem, so remove that error check. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-10"> - <title>Release 8.4.10</title> - - <formalpara> - <title>Release date:</title> - <para>2011-12-05</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.9. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.10</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, a longstanding error was discovered in the definition of the - <literal>information_schema.referential_constraints</> view. If you - rely on correct results from that view, you should replace its - definition as explained in the first changelog item below. - </para> - - <para> - Also, if you are upgrading from a version earlier than 8.4.8, - see <xref linkend="release-8-4-8">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix bugs in <literal>information_schema.referential_constraints</> view - (Tom Lane) - </para> - - <para> - This view was being insufficiently careful about matching the - foreign-key constraint to the depended-on primary or unique key - constraint. That could result in failure to show a foreign key - constraint at all, or showing it multiple times, or claiming that it - depends on a different constraint than the one it really does. - </para> - - <para> - Since the view definition is installed by <application>initdb</>, - merely upgrading will not fix the problem. If you need to fix this - in an existing installation, you can (as a superuser) drop the - <literal>information_schema</> schema then re-create it by sourcing - <filename><replaceable>SHAREDIR</>/information_schema.sql</filename>. - (Run <literal>pg_config --sharedir</> if you're uncertain where - <replaceable>SHAREDIR</> is.) This must be repeated in each database - to be fixed. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect replay of WAL records for GIN index updates - (Tom Lane) - </para> - - <para> - This could result in transiently failing to find index entries after - a crash, or on a hot-standby server. The problem would be repaired - by the next <command>VACUUM</> of the index, however. - </para> - </listitem> - - <listitem> - <para> - Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS - SELECT * FROM src</> or <literal>INSERT INTO dest SELECT * FROM src</> - (Tom Lane) - </para> - - <para> - If a table has been modified by <command>ALTER TABLE ADD COLUMN</>, - attempts to copy its data verbatim to another table could produce - corrupt results in certain corner cases. - The problem can only manifest in this precise form in 8.4 and later, - but we patched earlier versions as well in case there are other code - paths that could trigger the same bug. - </para> - </listitem> - - <listitem> - <para> - Fix race condition during toast table access from stale syscache entries - (Tom Lane) - </para> - - <para> - The typical symptom was transient errors like <quote>missing chunk - number 0 for toast value NNNNN in pg_toast_2619</>, where the cited - toast table would always belong to a system catalog. - </para> - </listitem> - - <listitem> - <para> - Track dependencies of functions on items used in parameter default - expressions (Tom Lane) - </para> - - <para> - Previously, a referenced object could be dropped without having dropped - or modified the function, leading to misbehavior when the function was - used. Note that merely installing this update will not fix the missing - dependency entries; to do that, you'd need to <command>CREATE OR - REPLACE</> each such function afterwards. If you have functions whose - defaults depend on non-built-in objects, doing so is recommended. - </para> - </listitem> - - <listitem> - <para> - Allow inlining of set-returning SQL functions with multiple OUT - parameters (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Make <function>DatumGetInetP()</> unpack inet datums that have a 1-byte - header, and add a new macro, <function>DatumGetInetPP()</>, that does - not (Heikki Linnakangas) - </para> - - <para> - This change affects no core code, but might prevent crashes in add-on - code that expects <function>DatumGetInetP()</> to produce an unpacked - datum as per usual convention. - </para> - </listitem> - - <listitem> - <para> - Improve locale support in <type>money</> type's input and output - (Tom Lane) - </para> - - <para> - Aside from not supporting all standard - <link linkend="guc-lc-monetary"><varname>lc_monetary</></link> - formatting options, the input and output functions were inconsistent, - meaning there were locales in which dumped <type>money</> values could - not be re-read. - </para> - </listitem> - - <listitem> - <para> - Don't let <link - linkend="guc-transform-null-equals"><varname>transform_null_equals</></link> - affect <literal>CASE foo WHEN NULL ...</> constructs - (Heikki Linnakangas) - </para> - - <para> - <varname>transform_null_equals</> is only supposed to affect - <literal>foo = NULL</> expressions written directly by the user, not - equality checks generated internally by this form of <literal>CASE</>. - </para> - </listitem> - - <listitem> - <para> - Change foreign-key trigger creation order to better support - self-referential foreign keys (Tom Lane) - </para> - - <para> - For a cascading foreign key that references its own table, a row update - will fire both the <literal>ON UPDATE</> trigger and the - <literal>CHECK</> trigger as one event. The <literal>ON UPDATE</> - trigger must execute first, else the <literal>CHECK</> will check a - non-final state of the row and possibly throw an inappropriate error. - However, the firing order of these triggers is determined by their - names, which generally sort in creation order since the triggers have - auto-generated names following the convention - <quote>RI_ConstraintTrigger_NNNN</>. A proper fix would require - modifying that convention, which we will do in 9.2, but it seems risky - to change it in existing releases. So this patch just changes the - creation order of the triggers. Users encountering this type of error - should drop and re-create the foreign key constraint to get its - triggers into the right order. - </para> - </listitem> - - <listitem> - <para> - Avoid floating-point underflow while tracking buffer allocation rate - (Greg Matthews) - </para> - - <para> - While harmless in itself, on certain platforms this would result in - annoying kernel log messages. - </para> - </listitem> - - <listitem> - <para> - Preserve configuration file name and line number values when starting - child processes under Windows (Tom Lane) - </para> - - <para> - Formerly, these would not be displayed correctly in the - <structname>pg_settings</> view. - </para> - </listitem> - - <listitem> - <para> - Preserve blank lines within commands in <application>psql</>'s command - history (Robert Haas) - </para> - - <para> - The former behavior could cause problems if an empty line was removed - from within a string literal, for example. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_dump</> to dump user-defined casts between - auto-generated types, such as table rowtypes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Use the preferred version of <application>xsubpp</> to build PL/Perl, - not necessarily the operating system's main copy - (David Wheeler and Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect coding in <filename>contrib/dict_int</> and - <filename>contrib/dict_xsyn</> (Tom Lane) - </para> - - <para> - Some functions incorrectly assumed that memory returned by - <function>palloc()</> is guaranteed zeroed. - </para> - </listitem> - - <listitem> - <para> - Honor query cancel interrupts promptly in <function>pgstatindex()</> - (Robert Haas) - </para> - </listitem> - - <listitem> - <para> - Ensure VPATH builds properly install all server header files - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Shorten file names reported in verbose error messages (Peter Eisentraut) - </para> - - <para> - Regular builds have always reported just the name of the C file - containing the error message call, but VPATH builds formerly - reported an absolute path name. - </para> - </listitem> - - <listitem> - <para> - Fix interpretation of Windows timezone names for Central America - (Tom Lane) - </para> - - <para> - Map <quote>Central America Standard Time</> to <literal>CST6</>, not - <literal>CST6CDT</>, because DST is generally not observed anywhere in - Central America. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2011n - for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; - also historical corrections for Alaska and British East Africa. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-9"> - <title>Release 8.4.9</title> - - <formalpara> - <title>Release date:</title> - <para>2011-09-26</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.8. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.9</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, if you are upgrading from a version earlier than 8.4.8, - see <xref linkend="release-8-4-8">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane) - </para> - - <para> - These bugs could result in index corruption after reindexing a system - catalog. They are not believed to affect user indexes. - </para> - </listitem> - - <listitem> - <para> - Fix multiple bugs in GiST index page split processing (Heikki - Linnakangas) - </para> - - <para> - The probability of occurrence was low, but these could lead to index - corruption. - </para> - </listitem> - - <listitem> - <para> - Fix possible buffer overrun in <function>tsvector_concat()</> - (Tom Lane) - </para> - - <para> - The function could underestimate the amount of memory needed for its - result, leading to server crashes. - </para> - </listitem> - - <listitem> - <para> - Fix crash in <function>xml_recv</> when processing a - <quote>standalone</> parameter (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Make <function>pg_options_to_table</> return NULL for an option with no - value (Tom Lane) - </para> - - <para> - Previously such cases would result in a server crash. - </para> - </listitem> - - <listitem> - <para> - Avoid possibly accessing off the end of memory in <command>ANALYZE</> - and in SJIS-2004 encoding conversion (Noah Misch) - </para> - - <para> - This fixes some very-low-probability server crash scenarios. - </para> - </listitem> - - <listitem> - <para> - Prevent intermittent hang in interactions of startup process with - bgwriter process (Simon Riggs) - </para> - - <para> - This affected recovery in non-hot-standby cases. - </para> - </listitem> - - <listitem> - <para> - Fix race condition in relcache init file invalidation (Tom Lane) - </para> - - <para> - There was a window wherein a new backend process could read a stale init - file but miss the inval messages that would tell it the data is stale. - The result would be bizarre failures in catalog accesses, typically - <quote>could not read block 0 in file ...</> later during startup. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak at end of a GiST index scan (Tom Lane) - </para> - - <para> - Commands that perform many separate GiST index scans, such as - verification of a new GiST-based exclusion constraint on a table - already containing many rows, could transiently require large amounts of - memory due to this leak. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect memory accounting (leading to possible memory bloat) in - tuplestores supporting holdable cursors and plpgsql's <literal>RETURN - NEXT</> command (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix performance problem when constructing a large, lossy bitmap - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix join selectivity estimation for unique columns (Tom Lane) - </para> - - <para> - This fixes an erroneous planner heuristic that could lead to poor - estimates of the result size of a join. - </para> - </listitem> - - <listitem> - <para> - Fix nested PlaceHolderVar expressions that appear only in sub-select - target lists (Tom Lane) - </para> - - <para> - This mistake could result in outputs of an outer join incorrectly - appearing as NULL. - </para> - </listitem> - - <listitem> - <para> - Allow nested <literal>EXISTS</> queries to be optimized properly (Tom - Lane) - </para> - </listitem> - - <listitem> - <para> - Fix array- and path-creating functions to ensure padding bytes are - zeroes (Tom Lane) - </para> - - <para> - This avoids some situations where the planner will think that - semantically-equal constants are not equal, resulting in poor - optimization. - </para> - </listitem> - - <listitem> - <para> - Fix <command>EXPLAIN</> to handle gating Result nodes within - inner-indexscan subplans (Tom Lane) - </para> - - <para> - The usual symptom of this oversight was <quote>bogus varno</> errors. - </para> - </listitem> - - <listitem> - <para> - Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane) - </para> - - <para> - This could lead to loss of committed transactions after a server crash. - </para> - </listitem> - - <listitem> - <para> - Fix dump bug for <literal>VALUES</> in a view (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Disallow <literal>SELECT FOR UPDATE/SHARE</> on sequences (Tom Lane) - </para> - - <para> - This operation doesn't work as expected and can lead to failures. - </para> - </listitem> - - <listitem> - <para> - Fix <command>VACUUM</> so that it always updates - <literal>pg_class</>.<literal>reltuples</>/<literal>relpages</> (Tom - Lane) - </para> - - <para> - This fixes some scenarios where autovacuum could make increasingly poor - decisions about when to vacuum tables. - </para> - </listitem> - - <listitem> - <para> - Defend against integer overflow when computing size of a hash table (Tom - Lane) - </para> - </listitem> - - <listitem> - <para> - Fix cases where <command>CLUSTER</> might attempt to access - already-removed TOAST data (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix portability bugs in use of credentials control messages for - <quote>peer</> authentication (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari, - Magnus Hagander) - </para> - - <para> - The typical symptom of this problem was <quote>The function requested is - not supported</> errors during SSPI login. - </para> - </listitem> - - <listitem> - <para> - Throw an error if <filename>pg_hba.conf</> contains <literal>hostssl</> - but SSL is disabled (Tom Lane) - </para> - - <para> - This was concluded to be more user-friendly than the previous behavior - of silently ignoring such lines. - </para> - </listitem> - - <listitem> - <para> - Fix typo in <function>pg_srand48</> seed initialization (Andres Freund) - </para> - - <para> - This led to failure to use all bits of the provided seed. This function - is not used on most platforms (only those without <function>srandom</>), - and the potential security exposure from a less-random-than-expected - seed seems minimal in any case. - </para> - </listitem> - - <listitem> - <para> - Avoid integer overflow when the sum of <literal>LIMIT</> and - <literal>OFFSET</> values exceeds 2^63 (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Add overflow checks to <type>int4</> and <type>int8</> versions of - <function>generate_series()</> (Robert Haas) - </para> - </listitem> - - <listitem> - <para> - Fix trailing-zero removal in <function>to_char()</> (Marti Raudsepp) - </para> - - <para> - In a format with <literal>FM</> and no digit positions - after the decimal point, zeroes to the left of the decimal point could - be removed incorrectly. - </para> - </listitem> - - <listitem> - <para> - Fix <function>pg_size_pretty()</> to avoid overflow for inputs close to - 2^63 (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Weaken plpgsql's check for typmod matching in record values (Tom Lane) - </para> - - <para> - An overly enthusiastic check could lead to discarding length modifiers - that should have been kept. - </para> - </listitem> - - <listitem> - <para> - Correctly handle quotes in locale names during <application>initdb</> - (Heikki Linnakangas) - </para> - - <para> - The case can arise with some Windows locales, such as <quote>People's - Republic of China</>. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_upgrade</> to preserve toast tables' relfrozenxids - during an upgrade from 8.3 (Bruce Momjian) - </para> - - <para> - Failure to do this could lead to <filename>pg_clog</> files being - removed too soon after the upgrade. - </para> - </listitem> - - <listitem> - <para> - In <application>pg_ctl</>, support silent mode for service registrations - on Windows (MauMau) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s counting of script file line numbers during - <literal>COPY</> from a different file (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</>'s direct-to-database mode for - <varname>standard_conforming_strings</> (Tom Lane) - </para> - - <para> - <application>pg_restore</> could emit incorrect commands when restoring - directly to a database server from an archive file that had been made - with <varname>standard_conforming_strings</> set to <literal>on</>. - </para> - </listitem> - - <listitem> - <para> - Be more user-friendly about unsupported cases for parallel - <application>pg_restore</> (Tom Lane) - </para> - - <para> - This change ensures that such cases are detected and reported before - any restore actions have been taken. - </para> - </listitem> - - <listitem> - <para> - Fix write-past-buffer-end and memory leak in <application>libpq</>'s - LDAP service lookup code (Albe Laurenz) - </para> - </listitem> - - <listitem> - <para> - In <application>libpq</>, avoid failures when using nonblocking I/O - and an SSL connection (Martin Pihlak, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Improve libpq's handling of failures during connection startup - (Tom Lane) - </para> - - <para> - In particular, the response to a server report of <function>fork()</> - failure during SSL connection startup is now saner. - </para> - </listitem> - - <listitem> - <para> - Improve <application>libpq</>'s error reporting for SSL failures (Tom - Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <function>PQsetvalue()</> to avoid possible crash when adding a new - tuple to a <structname>PGresult</> originally obtained from a server - query (Andrew Chernow) - </para> - </listitem> - - <listitem> - <para> - Make <application>ecpglib</> write <type>double</> values with 15 digits - precision (Akira Kurosawa) - </para> - </listitem> - - <listitem> - <para> - In <application>ecpglib</>, be sure <literal>LC_NUMERIC</> setting is - restored after an error (Michael Meskes) - </para> - </listitem> - - <listitem> - <para> - Apply upstream fix for blowfish signed-character bug (CVE-2011-2483) - (Tom Lane) - </para> - - <para> - <filename>contrib/pg_crypto</>'s blowfish encryption code could give - wrong results on platforms where char is signed (which is most), - leading to encrypted passwords being weaker than they should be. - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in <filename>contrib/seg</> (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix <function>pgstatindex()</> to give consistent results for empty - indexes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Allow building with perl 5.14 (Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Update configure script's method for probing existence of system - functions (Tom Lane) - </para> - - <para> - The version of autoconf we used in 8.3 and 8.2 could be fooled by - compilers that perform link-time optimization. - </para> - </listitem> - - <listitem> - <para> - Fix assorted issues with build and install file paths containing spaces - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2011i - for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-8"> - <title>Release 8.4.8</title> - - <formalpara> - <title>Release date:</title> - <para>2011-04-18</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.7. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.8</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - <para> - However, if your installation was upgraded from a previous major - release by running <application>pg_upgrade</>, you should take - action to prevent possible data loss due to a now-fixed bug in - <application>pg_upgrade</>. The recommended solution is to run - <command>VACUUM FREEZE</> on all TOAST tables. - More information is available at <ulink - url="http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix"> - http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix</ulink>. - </para> - - <para> - Also, if you are upgrading from a version earlier than 8.4.2, - see <xref linkend="release-8-4-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix <application>pg_upgrade</>'s handling of TOAST tables - (Bruce Momjian) - </para> - - <para> - The <structname>pg_class</>.<structfield>relfrozenxid</> value for - TOAST tables was not correctly copied into the new installation - during <application>pg_upgrade</>. This could later result in - <literal>pg_clog</> files being discarded while they were still - needed to validate tuples in the TOAST tables, leading to - <quote>could not access status of transaction</> failures. - </para> - - <para> - This error poses a significant risk of data loss for installations - that have been upgraded with <application>pg_upgrade</>. This patch - corrects the problem for future uses of <application>pg_upgrade</>, - but does not in itself cure the issue in installations that have been - processed with a buggy version of <application>pg_upgrade</>. - </para> - </listitem> - - <listitem> - <para> - Suppress incorrect <quote>PD_ALL_VISIBLE flag was incorrectly set</> - warning (Heikki Linnakangas) - </para> - - <para> - <command>VACUUM</> would sometimes issue this warning in cases that - are actually valid. - </para> - </listitem> - - <listitem> - <para> - Disallow including a composite type in itself (Tom Lane) - </para> - - <para> - This prevents scenarios wherein the server could recurse infinitely - while processing the composite type. While there are some possible - uses for such a structure, they don't seem compelling enough to - justify the effort required to make sure it always works safely. - </para> - </listitem> - - <listitem> - <para> - Avoid potential deadlock during catalog cache initialization - (Nikhil Sontakke) - </para> - - <para> - In some cases the cache loading code would acquire share lock on a - system index before locking the index's catalog. This could deadlock - against processes trying to acquire exclusive locks in the other, - more standard order. - </para> - </listitem> - - <listitem> - <para> - Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</> trigger - handling when there was a concurrent update to the target tuple - (Tom Lane) - </para> - - <para> - This bug has been observed to result in intermittent <quote>cannot - extract system attribute from virtual tuple</> failures while trying to - do <literal>UPDATE RETURNING ctid</>. There is a very small probability - of more serious errors, such as generating incorrect index entries for - the updated tuple. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>DROP TABLE</> when there are pending deferred trigger - events for the table (Tom Lane) - </para> - - <para> - Formerly the <command>DROP</> would go through, leading to - <quote>could not open relation with OID nnn</> errors when the - triggers were eventually fired. - </para> - </listitem> - - <listitem> - <para> - Prevent crash triggered by constant-false WHERE conditions during - GEQO optimization (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Improve planner's handling of semi-join and anti-join cases - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix selectivity estimation for text search to account for NULLs - (Jesper Krogh) - </para> - </listitem> - - <listitem> - <para> - Improve PL/pgSQL's ability to handle row types with dropped columns - (Pavel Stehule) - </para> - - <para> - This is a back-patch of fixes previously made in 9.0. - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python memory leak involving array slices (Daniel Popowich) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</> to cope with long lines (over 1KB) in - TOC files (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Put in more safeguards against crashing due to division-by-zero - with overly enthusiastic compiler optimization (Aurelien Jarno) - </para> - </listitem> - - <listitem> - <para> - Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane) - </para> - - <para> - There was a hard-wired assumption that this system function was not - available on MIPS hardware on these systems. Use a compile-time test - instead, since more recent versions have it. - </para> - </listitem> - - <listitem> - <para> - Fix compilation failures on HP-UX (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix version-incompatibility problem with <application>libintl</> on - Windows (Hiroshi Inoue) - </para> - </listitem> - - <listitem> - <para> - Fix usage of <application>xcopy</> in Windows build scripts to - work correctly under Windows 7 (Andrew Dunstan) - </para> - - <para> - This affects the build scripts only, not installation or usage. - </para> - </listitem> - - <listitem> - <para> - Fix path separator used by <application>pg_regress</> on Cygwin - (Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2011f - for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa, - and Turkey; also historical corrections for South Australia, Alaska, - and Hawaii. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-7"> - <title>Release 8.4.7</title> - - <formalpara> - <title>Release date:</title> - <para>2011-01-31</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.6. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.7</title> - - <para> - A dump/restore is not required for those running 8.4.X. - However, if you are upgrading from a version earlier than 8.4.2, - see <xref linkend="release-8-4-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Avoid failures when <command>EXPLAIN</> tries to display a simple-form - <literal>CASE</> expression (Tom Lane) - </para> - - <para> - If the <literal>CASE</>'s test expression was a constant, the planner - could simplify the <literal>CASE</> into a form that confused the - expression-display code, resulting in <quote>unexpected CASE WHEN - clause</> errors. - </para> - </listitem> - - <listitem> - <para> - Fix assignment to an array slice that is before the existing range - of subscripts (Tom Lane) - </para> - - <para> - If there was a gap between the newly added subscripts and the first - pre-existing subscript, the code miscalculated how many entries needed - to be copied from the old array's null bitmap, potentially leading to - data corruption or crash. - </para> - </listitem> - - <listitem> - <para> - Avoid unexpected conversion overflow in planner for very distant date - values (Tom Lane) - </para> - - <para> - The <type>date</> type supports a wider range of dates than can be - represented by the <type>timestamp</> types, but the planner assumed it - could always convert a date to timestamp with impunity. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_restore</>'s text output for large objects (BLOBs) - when <varname>standard_conforming_strings</> is on (Tom Lane) - </para> - - <para> - Although restoring directly to a database worked correctly, string - escaping was incorrect if <application>pg_restore</> was asked for - SQL text output and <varname>standard_conforming_strings</> had been - enabled in the source database. - </para> - </listitem> - - <listitem> - <para> - Fix erroneous parsing of <type>tsquery</> values containing - <literal>... & !(subexpression) | ...</literal> (Tom Lane) - </para> - - <para> - Queries containing this combination of operators were not executed - correctly. The same error existed in <filename>contrib/intarray</>'s - <type>query_int</> type and <filename>contrib/ltree</>'s - <type>ltxtquery</> type. - </para> - </listitem> - - <listitem> - <para> - Fix buffer overrun in <filename>contrib/intarray</>'s input function - for the <type>query_int</> type (Apple) - </para> - - <para> - This bug is a security risk since the function's return address could - be overwritten. Thanks to Apple Inc's security team for reporting this - issue and supplying the fix. (CVE-2010-4015) - </para> - </listitem> - - <listitem> - <para> - Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm - (Alexander Korotkov) - </para> - - <para> - This could result in considerable inefficiency, though not actually - incorrect answers, in a GiST index on a <type>seg</> column. - If you have such an index, consider <command>REINDEX</>ing it after - installing this update. (This is identical to the bug that was fixed in - <filename>contrib/cube</> in the previous update.) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-6"> - <title>Release 8.4.6</title> - - <formalpara> - <title>Release date:</title> - <para>2010-12-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.5. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.6</title> - - <para> - A dump/restore is not required for those running 8.4.X. - However, if you are upgrading from a version earlier than 8.4.2, - see <xref linkend="release-8-4-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Force the default - <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link> - to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp) - </para> - - <para> - The default on Linux has actually been <literal>fdatasync</> for many - years, but recent kernel changes caused <productname>PostgreSQL</> to - choose <literal>open_datasync</> instead. This choice did not result - in any performance improvement, and caused outright failures on - certain filesystems, notably <literal>ext4</> with the - <literal>data=journal</> mount option. - </para> - </listitem> - - <listitem> - <para> - Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane) - </para> - - <para> - This could result in <quote>bad buffer id: 0</> failures or - corruption of index contents during replication. - </para> - </listitem> - - <listitem> - <para> - Fix recovery from base backup when the starting checkpoint WAL record - is not in the same WAL segment as its redo point (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Fix persistent slowdown of autovacuum workers when multiple workers - remain active for a long time (Tom Lane) - </para> - - <para> - The effective <varname>vacuum_cost_limit</> for an autovacuum worker - could drop to nearly zero if it processed enough tables, causing it - to run extremely slowly. - </para> - </listitem> - - <listitem> - <para> - Add support for detecting register-stack overrun on <literal>IA64</> - (Tom Lane) - </para> - - <para> - The <literal>IA64</> architecture has two hardware stacks. Full - prevention of stack-overrun failures requires checking both. - </para> - </listitem> - - <listitem> - <para> - Add a check for stack overflow in <function>copyObject()</> (Tom Lane) - </para> - - <para> - Certain code paths could crash due to stack overflow given a - sufficiently complex query. - </para> - </listitem> - - <listitem> - <para> - Fix detection of page splits in temporary GiST indexes (Heikki - Linnakangas) - </para> - - <para> - It is possible to have a <quote>concurrent</> page split in a - temporary index, if for example there is an open cursor scanning the - index when an insertion is done. GiST failed to detect this case and - hence could deliver wrong results when execution of the cursor - continued. - </para> - </listitem> - - <listitem> - <para> - Fix error checking during early connection processing (Tom Lane) - </para> - - <para> - The check for too many child processes was skipped in some cases, - possibly leading to postmaster crash when attempting to add the new - child process to fixed-size arrays. - </para> - </listitem> - - <listitem> - <para> - Improve efficiency of window functions (Tom Lane) - </para> - - <para> - Certain cases where a large number of tuples needed to be read in - advance, but <varname>work_mem</> was large enough to allow them all - to be held in memory, were unexpectedly slow. - <function>percent_rank()</>, <function>cume_dist()</> and - <function>ntile()</> in particular were subject to this problem. - </para> - </listitem> - - <listitem> - <para> - Avoid memory leakage while <command>ANALYZE</>'ing complex index - expressions (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Ensure an index that uses a whole-row Var still depends on its table - (Tom Lane) - </para> - - <para> - An index declared like <literal>create index i on t (foo(t.*))</> - would not automatically get dropped when its table was dropped. - </para> - </listitem> - - <listitem> - <para> - Do not <quote>inline</> a SQL function with multiple <literal>OUT</> - parameters (Tom Lane) - </para> - - <para> - This avoids a possible crash due to loss of information about the - expected result rowtype. - </para> - </listitem> - - <listitem> - <para> - Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>, - <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the - <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane) - </para> - - <para> - The planner would sometimes attempt to evaluate sub-expressions that - in fact could never be reached, possibly leading to unexpected errors. - </para> - </listitem> - - <listitem> - <para> - Fix postmaster crash when connection acceptance - (<function>accept()</> or one of the calls made immediately after it) - fails, and the postmaster was compiled with GSSAPI support (Alexander - Chernikov) - </para> - </listitem> - - <listitem> - <para> - Fix missed unlink of temporary files when <varname>log_temp_files</> - is active (Tom Lane) - </para> - - <para> - If an error occurred while attempting to emit the log message, the - unlink was not done, resulting in accumulation of temp files. - </para> - </listitem> - - <listitem> - <para> - Add print functionality for <structname>InhRelation</> nodes (Tom Lane) - </para> - - <para> - This avoids a failure when <varname>debug_print_parse</> is enabled - and certain types of query are executed. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect calculation of distance from a point to a horizontal - line segment (Tom Lane) - </para> - - <para> - This bug affected several different geometric distance-measurement - operators. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect calculation of transaction status in - <application>ecpg</> (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix <application>PL/pgSQL</>'s handling of <quote>simple</> - expressions to not fail in recursion or error-recovery cases (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <application>PL/Python</>'s handling of set-returning functions - (Jan Urbanski) - </para> - - <para> - Attempts to call SPI functions within the iterator generating a set - result would fail. - </para> - </listitem> - - <listitem> - <para> - Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm - (Alexander Korotkov) - </para> - - <para> - This could result in considerable inefficiency, though not actually - incorrect answers, in a GiST index on a <type>cube</> column. - If you have such an index, consider <command>REINDEX</>ing it after - installing this update. - </para> - </listitem> - - <listitem> - <para> - Don't emit <quote>identifier will be truncated</> notices in - <filename>contrib/dblink</> except when creating new connections - (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix potential coredump on missing public key in - <filename>contrib/pgcrypto</> (Marti Raudsepp) - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in <filename>contrib/xml2</>'s XPath query functions - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010o - for DST law changes in Fiji and Samoa; - also historical corrections for Hong Kong. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-5"> - <title>Release 8.4.5</title> - - <formalpara> - <title>Release date:</title> - <para>2010-10-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.4. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.5</title> - - <para> - A dump/restore is not required for those running 8.4.X. - However, if you are upgrading from a version earlier than 8.4.2, - see <xref linkend="release-8-4-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Use a separate interpreter for each calling SQL userid in PL/Perl and - PL/Tcl (Tom Lane) - </para> - - <para> - This change prevents security problems that can be caused by subverting - Perl or Tcl code that will be executed later in the same session under - another SQL user identity (for example, within a <literal>SECURITY - DEFINER</> function). Most scripting languages offer numerous ways that - that might be done, such as redefining standard functions or operators - called by the target function. Without this change, any SQL user with - Perl or Tcl language usage rights can do essentially anything with the - SQL privileges of the target function's owner. - </para> - - <para> - The cost of this change is that intentional communication among Perl - and Tcl functions becomes more difficult. To provide an escape hatch, - PL/PerlU and PL/TclU functions continue to use only one interpreter - per session. This is not considered a security issue since all such - functions execute at the trust level of a database superuser already. - </para> - - <para> - It is likely that third-party procedural languages that claim to offer - trusted execution have similar security issues. We advise contacting - the authors of any PL you are depending on for security-critical - purposes. - </para> - - <para> - Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433). - </para> - </listitem> - - <listitem> - <para> - Prevent possible crashes in <function>pg_get_expr()</> by disallowing - it from being called with an argument that is not one of the system - catalog columns it's intended to be used with - (Heikki Linnakangas, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on - Windows (Magnus Hagander) - </para> - - <para> - Under high load, Windows processes will sometimes fail at startup with - this error code. Formerly the postmaster treated this as a panic - condition and restarted the whole database, but that seems to be - an overreaction. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect placement of placeholder evaluation (Tom Lane) - </para> - - <para> - This bug could result in query outputs being non-null when they - should be null, in cases where the inner side of an outer join - is a sub-select with non-strict expressions in its output list. - </para> - </listitem> - - <listitem> - <para> - Fix possible duplicate scans of <literal>UNION ALL</> member relations - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane) - </para> - - <para> - This occurred when a sub-select contains a join alias reference that - expands into an expression containing another sub-select. - </para> - </listitem> - - <listitem> - <para> - Fix mishandling of whole-row Vars that reference a view or sub-select - and appear within a nested sub-select (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix mishandling of cross-type <literal>IN</> comparisons (Tom Lane) - </para> - - <para> - This could result in failures if the planner tried to implement an - <literal>IN</> join with a sort-then-unique-then-plain-join plan. - </para> - </listitem> - - <listitem> - <para> - Fix computation of <command>ANALYZE</> statistics for <type>tsvector</> - columns (Jan Urbanski) - </para> - - <para> - The original coding could produce incorrect statistics, leading to - poor plan choices later. - </para> - </listitem> - - <listitem> - <para> - Improve planner's estimate of memory used by <function>array_agg()</>, - <function>string_agg()</>, and similar aggregate functions - (Hitoshi Harada) - </para> - - <para> - The previous drastic underestimate could lead to out-of-memory failures - due to inappropriate choice of a hash-aggregation plan. - </para> - </listitem> - - <listitem> - <para> - Fix failure to mark cached plans as transient (Tom Lane) - </para> - - <para> - If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</> is - in progress for one of the referenced tables, it is supposed to be - re-planned once the index is ready for use. This was not happening - reliably. - </para> - </listitem> - - <listitem> - <para> - Reduce PANIC to ERROR in some occasionally-reported btree failure cases, - and provide additional detail in the resulting error messages - (Tom Lane) - </para> - - <para> - This should improve the system's robustness with corrupted indexes. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect search logic for partial-match queries with GIN indexes - (Tom Lane) - </para> - - <para> - Cases involving AND/OR combination of several GIN index conditions - didn't always give the right answer, and were sometimes much slower - than necessary. - </para> - </listitem> - - <listitem> - <para> - Prevent show_session_authorization() from crashing within autovacuum - processes (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Defend against functions returning setof record where not all the - returned rows are actually of the same rowtype (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible corruption of pending trigger event lists during - subtransaction rollback (Tom Lane) - </para> - - <para> - This could lead to a crash or incorrect firing of triggers. - </para> - </listitem> - - <listitem> - <para> - Fix possible failure when hashing a pass-by-reference function result - (Tao Ma, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Improve merge join's handling of NULLs in the join columns (Tom Lane) - </para> - - <para> - A merge join can now stop entirely upon reaching the first NULL, - if the sort order is such that NULLs sort high. - </para> - </listitem> - - <listitem> - <para> - Take care to fsync the contents of lockfiles (both - <filename>postmaster.pid</> and the socket lockfile) while writing them - (Tom Lane) - </para> - - <para> - This omission could result in corrupted lockfile contents if the - machine crashes shortly after postmaster start. That could in turn - prevent subsequent attempts to start the postmaster from succeeding, - until the lockfile is manually removed. - </para> - </listitem> - - <listitem> - <para> - Avoid recursion while assigning XIDs to heavily-nested - subtransactions (Andres Freund, Robert Haas) - </para> - - <para> - The original coding could result in a crash if there was limited - stack space. - </para> - </listitem> - - <listitem> - <para> - Avoid holding open old WAL segments in the walwriter process - (Magnus Hagander, Heikki Linnakangas) - </para> - - <para> - The previous coding would prevent removal of no-longer-needed segments. - </para> - </listitem> - - <listitem> - <para> - Fix <varname>log_line_prefix</>'s <literal>%i</> escape, - which could produce junk early in backend startup (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Prevent misinterpretation of partially-specified relation options - for TOAST tables (Itagaki Takahiro) - </para> - - <para> - In particular, <literal>fillfactor</> would be read as zero if any - other reloption had been set for the table, leading to serious bloat. - </para> - </listitem> - - <listitem> - <para> - Fix inheritance count tracking in <command>ALTER TABLE ... ADD - CONSTRAINT</> (Robert Haas) - </para> - </listitem> - - <listitem> - <para> - Fix possible data corruption in <command>ALTER TABLE ... SET - TABLESPACE</> when archiving is enabled (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET - TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge) - </para> - </listitem> - - <listitem> - <para> - Improve <command>CREATE INDEX</>'s checking of whether proposed index - expressions are immutable (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <command>REASSIGN OWNED</> to handle operator classes and families - (Asko Tiidumaa) - </para> - </listitem> - - <listitem> - <para> - Fix possible core dump when comparing two empty <type>tsquery</> values - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>LIKE</>'s handling of patterns containing <literal>%</> - followed by <literal>_</> (Tom Lane) - </para> - - <para> - We've fixed this before, but there were still some incorrectly-handled - cases. - </para> - </listitem> - - <listitem> - <para> - Re-allow input of Julian dates prior to 0001-01-01 AD (Tom Lane) - </para> - - <para> - Input such as <literal>'J100000'::date</> worked before 8.4, - but was unintentionally broken by added error-checking. - </para> - </listitem> - - <listitem> - <para> - Fix PL/pgSQL to throw an error, not crash, if a cursor is closed within - a <literal>FOR</> loop that is iterating over that cursor - (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - In PL/Python, defend against null pointer results from - <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</> - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - In <application>libpq</>, fix full SSL certificate verification for the - case where both <literal>host</> and <literal>hostaddr</> are specified - (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Make psql recognize <command>DISCARD ALL</> as a command that should - not be encased in a transaction block in autocommit-off mode - (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix some issues in <application>pg_dump</>'s handling of SQL/MED objects - (Tom Lane) - </para> - - <para> - Notably, <application>pg_dump</> would always fail if run by a - non-superuser, which was not intended. - </para> - </listitem> - - <listitem> - <para> - Improve <application>pg_dump</> and <application>pg_restore</>'s - handling of non-seekable archive files (Tom Lane, Robert Haas) - </para> - - <para> - This is important for proper functioning of parallel restore. - </para> - </listitem> - - <listitem> - <para> - Improve parallel pg_restore's ability to cope with selective restore - (<literal>-L</> option) (Tom Lane) - </para> - - <para> - The original code tended to fail if the <literal>-L</> file commanded - a non-default restore ordering. - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</> to process data from <literal>RETURNING</> - clauses correctly (Michael Meskes) - </para> - </listitem> - - <listitem> - <para> - Fix some memory leaks in <application>ecpg</> (Zoltan Boszormenyi) - </para> - </listitem> - - <listitem> - <para> - Improve <filename>contrib/dblink</>'s handling of tables containing - dropped columns (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix connection leak after <quote>duplicate connection name</quote> - errors in <filename>contrib/dblink</> (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</> to handle connection names longer than - 62 bytes correctly (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Add <function>hstore(text, text)</> - function to <filename>contrib/hstore</> (Robert Haas) - </para> - - <para> - This function is the recommended substitute for the now-deprecated - <literal>=></> operator. It was back-patched so that future-proofed - code can be used with older server versions. Note that the patch will - be effective only after <filename>contrib/hstore</> is installed or - reinstalled in a particular database. Users might prefer to execute - the <command>CREATE FUNCTION</> command by hand, instead. - </para> - </listitem> - - <listitem> - <para> - Update build infrastructure and documentation to reflect the source code - repository's move from CVS to Git (Magnus Hagander and others) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010l - for DST law changes in Egypt and Palestine; also historical corrections - for Finland. - </para> - - <para> - This change also adds new names for two Micronesian timezones: - Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred - abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over - Pacific/Ponape. - </para> - </listitem> - - <listitem> - <para> - Make Windows' <quote>N. Central Asia Standard Time</> timezone map to - Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander) - </para> - - <para> - Microsoft changed the DST behavior of this zone in the timezone update - from KB976098. Asia/Novosibirsk is a better match to its new behavior. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-4"> - <title>Release 8.4.4</title> - - <formalpara> - <title>Release date:</title> - <para>2010-05-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.3. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.4</title> - - <para> - A dump/restore is not required for those running 8.4.X. - However, if you are upgrading from a version earlier than 8.4.2, - see <xref linkend="release-8-4-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Enforce restrictions in <literal>plperl</> using an opmask applied to - the whole interpreter, instead of using <filename>Safe.pm</> - (Tim Bunce, Andrew Dunstan) - </para> - - <para> - Recent developments have convinced us that <filename>Safe.pm</> is too - insecure to rely on for making <literal>plperl</> trustable. This - change removes use of <filename>Safe.pm</> altogether, in favor of using - a separate interpreter with an opcode mask that is always applied. - Pleasant side effects of the change include that it is now possible to - use Perl's <literal>strict</> pragma in a natural way in - <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</> - variables work as expected in sort routines, and that function - compilation is significantly faster. (CVE-2010-1169) - </para> - </listitem> - - <listitem> - <para> - Prevent PL/Tcl from executing untrustworthy code from - <structname>pltcl_modules</> (Tom) - </para> - - <para> - PL/Tcl's feature for autoloading Tcl code from a database table - could be exploited for trojan-horse attacks, because there was no - restriction on who could create or insert into that table. This change - disables the feature unless <structname>pltcl_modules</> is owned by a - superuser. (However, the permissions on the table are not checked, so - installations that really need a less-than-secure modules table can - still grant suitable privileges to trusted non-superusers.) Also, - prevent loading code into the unrestricted <quote>normal</> Tcl - interpreter unless we are really going to execute a <literal>pltclu</> - function. (CVE-2010-1170) - </para> - </listitem> - - <listitem> - <para> - Fix data corruption during WAL replay of - <literal>ALTER ... SET TABLESPACE</> (Tom) - </para> - - <para> - When <varname>archive_mode</> is on, <literal>ALTER ... SET TABLESPACE</> - generates a WAL record whose replay logic was incorrect. It could write - the data to the wrong place, leading to possibly-unrecoverable data - corruption. Data corruption would be observed on standby slaves, and - could occur on the master as well if a database crash and recovery - occurred after committing the <literal>ALTER</> and before the next - checkpoint. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash if a cache reset message is received during - rebuild of a relcache entry (Heikki) - </para> - - <para> - This error was introduced in 8.4.3 while fixing a related failure. - </para> - </listitem> - - <listitem> - <para> - Apply per-function GUC settings while running the language validator - for the function (Itagaki Takahiro) - </para> - - <para> - This avoids failures if the function's code is invalid without the - setting; an example is that SQL functions may not parse if the - <varname>search_path</> is not correct. - </para> - </listitem> - - <listitem> - <para> - Do constraint exclusion for inherited <command>UPDATE</> and - <command>DELETE</> target tables when - <varname>constraint_exclusion</> = <literal>partition</> (Tom) - </para> - - <para> - Due to an oversight, this setting previously only caused constraint - exclusion to be checked in <command>SELECT</> commands. - </para> - </listitem> - - <listitem> - <para> - Do not allow an unprivileged user to reset superuser-only parameter - settings (Alvaro) - </para> - - <para> - Previously, if an unprivileged user ran <literal>ALTER USER ... RESET - ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for - a database he owns, this would remove all special parameter settings - for the user or database, even ones that are only supposed to be - changeable by a superuser. Now, the <command>ALTER</> will only - remove the parameters that the user has permission to change. - </para> - </listitem> - - <listitem> - <para> - Avoid possible crash during backend shutdown if shutdown occurs - when a <literal>CONTEXT</> addition would be made to log entries (Tom) - </para> - - <para> - In some cases the context-printing function would fail because the - current transaction had already been rolled back when it came time - to print a log message. - </para> - </listitem> - - <listitem> - <para> - Fix erroneous handling of <literal>%r</> parameter in - <varname>recovery_end_command</> (Heikki) - </para> - - <para> - The value always came out zero. - </para> - </listitem> - - <listitem> - <para> - Ensure the archiver process responds to changes in - <varname>archive_command</> as soon as possible (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix pl/pgsql's <literal>CASE</> statement to not fail when the - case expression is a query that returns no rows (Tom) - </para> - </listitem> - - <listitem> - <para> - Update pl/perl's <filename>ppport.h</> for modern Perl versions - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix assorted memory leaks in pl/python (Andreas Freund, Tom) - </para> - </listitem> - - <listitem> - <para> - Handle empty-string connect parameters properly in ecpg (Michael) - </para> - </listitem> - - <listitem> - <para> - Prevent infinite recursion in <application>psql</> when expanding - a variable that refers to itself (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s <literal>\copy</> to not add spaces around - a dot within <literal>\copy (select ...)</> (Tom) - </para> - - <para> - Addition of spaces around the decimal point in a numeric literal would - result in a syntax error. - </para> - </listitem> - - <listitem> - <para> - Avoid formatting failure in <application>psql</> when running in a - locale context that doesn't match the <varname>client_encoding</> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix unnecessary <quote>GIN indexes do not support whole-index scans</> - errors for unsatisfiable queries using <filename>contrib/intarray</> - operators (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure that <filename>contrib/pgstattuple</> functions respond to cancel - interrupts promptly (Tatsuhito Kasahara) - </para> - </listitem> - - <listitem> - <para> - Make server startup deal properly with the case that - <function>shmget()</> returns <literal>EINVAL</> for an existing - shared memory segment (Tom) - </para> - - <para> - This behavior has been observed on BSD-derived kernels including OS X. - It resulted in an entirely-misleading startup failure complaining that - the shared memory request size was too large. - </para> - </listitem> - - <listitem> - <para> - Avoid possible crashes in syslogger process on Windows (Heikki) - </para> - </listitem> - - <listitem> - <para> - Deal more robustly with incomplete time zone information in the - Windows registry (Magnus) - </para> - </listitem> - - <listitem> - <para> - Update the set of known Windows time zone names (Magnus) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010j - for DST law changes in Argentina, Australian Antarctic, Bangladesh, - Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; - also historical corrections for Taiwan. - </para> - - <para> - Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of - timezone abbreviations. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-3"> - <title>Release 8.4.3</title> - - <formalpara> - <title>Release date:</title> - <para>2010-03-15</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.2. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.3</title> - - <para> - A dump/restore is not required for those running 8.4.X. - However, if you are upgrading from a version earlier than 8.4.2, - see <xref linkend="release-8-4-2">. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Add new configuration parameter <varname>ssl_renegotiation_limit</> to - control how often we do session key renegotiation for an SSL connection - (Magnus) - </para> - - <para> - This can be set to zero to disable renegotiation completely, which may - be required if a broken SSL library is used. In particular, some - vendors are shipping stopgap patches for CVE-2009-3555 that cause - renegotiation attempts to fail. - </para> - </listitem> - - <listitem> - <para> - Fix possible deadlock during backend startup (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes due to not handling errors during relcache reload - cleanly (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to use of dangling pointer to a cached plan - (Tatsuo) - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to overenthusiastic invalidation of cached - plan for <command>ROLLBACK</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes when trying to recover from a failure in - subtransaction start (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix server memory leak associated with use of savepoints and a client - encoding different from server's encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST - index page split (Yoichi Hirai) - </para> - - <para> - This would result in index corruption, or even more likely an error - during WAL replay, if we were unlucky enough to crash during - end-of-recovery cleanup after having completed an incomplete GIST - insertion. - </para> - </listitem> - - <listitem> - <para> - Fix bug in WAL redo cleanup method for GIN indexes (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect comparison of scan key in GIN index search (Teodor) - </para> - </listitem> - - <listitem> - <para> - Make <function>substring()</> for <type>bit</> types treat any negative - length as meaning <quote>all the rest of the string</> (Tom) - </para> - - <para> - The previous coding treated only -1 that way, and would produce an - invalid result value for other negative values, possibly leading to - a crash (CVE-2010-0442). - </para> - </listitem> - - <listitem> - <para> - Fix integer-to-bit-string conversions to handle the first fractional - byte correctly when the output bit width is wider than the given - integer by something other than a multiple of 8 bits (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix some cases of pathologically slow regular expression matching (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug occurring when trying to inline a SQL function that returns - a set of a composite type that contains dropped columns (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug with trying to update a field of an element of a - composite-type array column (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid failure when <command>EXPLAIN</> has to print a FieldStore or - assignment ArrayRef expression (Tom) - </para> - - <para> - These cases can arise now that <command>EXPLAIN VERBOSE</> tries to - print plan node target lists. - </para> - </listitem> - - <listitem> - <para> - Avoid an unnecessary coercion failure in some cases where an undecorated - literal string appears in a subquery within - <command>UNION</>/<command>INTERSECT</>/<command>EXCEPT</> (Tom) - </para> - - <para> - This fixes a regression for some cases that worked before 8.4. - </para> - </listitem> - - <listitem> - <para> - Avoid undesirable rowtype compatibility check failures in some cases - where a whole-row Var has a rowtype that contains dropped columns (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix the <literal>STOP WAL LOCATION</> entry in backup history files to - report the next WAL segment's name when the end location is exactly at a - segment boundary (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Always pass the catalog ID to an option validator function specified in - <command>CREATE FOREIGN DATA WRAPPER</> (Martin Pihlak) - </para> - </listitem> - - <listitem> - <para> - Fix some more cases of temporary-file leakage (Heikki) - </para> - - <para> - This corrects a problem introduced in the previous minor release. - One case that failed is when a plpgsql function returning set is - called within another function's exception handler. - </para> - </listitem> - - <listitem> - <para> - Add support for doing <literal>FULL JOIN ON FALSE</> (Tom) - </para> - - <para> - This prevents a regression from pre-8.4 releases for some queries that - can now be simplified to a constant-false join condition. - </para> - </listitem> - - <listitem> - <para> - Improve constraint exclusion processing of boolean-variable cases, - in particular make it possible to exclude a partition that has a - <quote>bool_column = false</> constraint (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent treating an <literal>INOUT</> cast as representing binary - compatibility (Heikki) - </para> - </listitem> - - <listitem> - <para> - Include column name in the message when warning about inability to - grant or revoke column-level privileges (Stephen Frost) - </para> - - <para> - This is more useful than before and helps to prevent confusion when - a <command>REVOKE</> generates multiple messages, which formerly - appeared to be duplicates. - </para> - </listitem> - - <listitem> - <para> - When reading <filename>pg_hba.conf</> and related files, do not treat - <literal>@something</> as a file inclusion request if the <literal>@</> - appears inside quote marks; also, never treat <literal>@</> by itself - as a file inclusion request (Tom) - </para> - - <para> - This prevents erratic behavior if a role or database name starts with - <literal>@</>. If you need to include a file whose path name - contains spaces, you can still do so, but you must write - <literal>@"/path to/file"</> rather than putting the quotes around - the whole construct. - </para> - </listitem> - - <listitem> - <para> - Prevent infinite loop on some platforms if a directory is named as - an inclusion target in <filename>pg_hba.conf</> and related files - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible infinite loop if <function>SSL_read</> or - <function>SSL_write</> fails without setting <varname>errno</> (Tom) - </para> - - <para> - This is reportedly possible with some Windows versions of - <application>openssl</>. - </para> - </listitem> - - <listitem> - <para> - Disallow <acronym>GSSAPI</> authentication on local connections, - since it requires a hostname to function correctly (Magnus) - </para> - </listitem> - - <listitem> - <para> - Protect <application>ecpg</> against applications freeing strings - unexpectedly (Michael) - </para> - </listitem> - - <listitem> - <para> - Make <application>ecpg</> report the proper SQLSTATE if the connection - disappears (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix translation of cell contents in <application>psql</> <literal>\d</> - output (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix <application>psql</>'s <literal>numericlocale</> option to not - format strings it shouldn't in latex and troff output formats (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix a small per-query memory leak in <application>psql</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <application>psql</> return the correct exit status (3) when - <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are - both specified and an error occurs during the implied <command>COMMIT</> - (Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_dump</>'s output of permissions for foreign servers - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix possible crash in parallel <application>pg_restore</> due to - out-of-range dependency IDs (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix plpgsql failure in one case where a composite column is set to NULL - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible failure when calling PL/Perl functions from PL/PerlU - or vice versa (Tim Bunce) - </para> - </listitem> - - <listitem> - <para> - Add <literal>volatile</> markings in PL/Python to avoid possible - compiler-specific misbehavior (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Ensure PL/Tcl initializes the Tcl interpreter fully (Tom) - </para> - - <para> - The only known symptom of this oversight is that the Tcl - <literal>clock</> command misbehaves if using Tcl 8.5 or later. - </para> - </listitem> - - <listitem> - <para> - Prevent <function>ExecutorEnd</> from being run on portals created - within a failed transaction or subtransaction (Tom) - </para> - - <para> - This is known to cause issues when using - <filename>contrib/auto_explain</>. - </para> - </listitem> - - <listitem> - <para> - Prevent crash in <filename>contrib/dblink</> when too many key - columns are specified to a <function>dblink_build_sql_*</> function - (Rushabh Lathia, Joe Conway) - </para> - </listitem> - - <listitem> - <para> - Allow zero-dimensional arrays in <filename>contrib/ltree</> operations - (Tom) - </para> - - <para> - This case was formerly rejected as an error, but it's more convenient to - treat it the same as a zero-element array. In particular this avoids - unnecessary failures when an <type>ltree</> operation is applied to the - result of <literal>ARRAY(SELECT ...)</> and the sub-select returns no - rows. - </para> - </listitem> - - <listitem> - <para> - Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy - memory management (Tom) - </para> - </listitem> - - <listitem> - <para> - Make building of <filename>contrib/xml2</> more robust on Windows - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix race condition in Windows signal handling (Radu Ilie) - </para> - - <para> - One known symptom of this bug is that rows in <structname>pg_listener</> - could be dropped under heavy load. - </para> - </listitem> - - <listitem> - <para> - Make the configure script report failure if the C compiler does - not provide a working 64-bit integer datatype (Tom) - </para> - - <para> - This case has been broken for some time, and no longer seems worth - supporting, so just reject it at configure time instead. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2010e - for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-2"> - <title>Release 8.4.2</title> - - <formalpara> - <title>Release date:</title> - <para>2009-12-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4.1. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.2</title> - - <para> - A dump/restore is not required for those running 8.4.X. - However, if you have any hash indexes, - you should <command>REINDEX</> them after updating to 8.4.2, - to repair possible damage. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Protect against indirect security threats caused by index functions - changing session-local state (Gurjeet Singh, Tom) - </para> - - <para> - This change prevents allegedly-immutable index functions from possibly - subverting a superuser's session (CVE-2009-4136). - </para> - </listitem> - - <listitem> - <para> - Reject SSL certificates containing an embedded null byte in the common - name (CN) field (Magnus) - </para> - - <para> - This prevents unintended matching of a certificate to a server or client - name during SSL validation (CVE-2009-4034). - </para> - </listitem> - - <listitem> - <para> - Fix hash index corruption (Tom) - </para> - - <para> - The 8.4 change that made hash indexes keep entries sorted by hash value - failed to update the bucket splitting and compaction routines to - preserve the ordering. So application of either of those operations - could lead to permanent corruption of an index, in the sense that - searches might fail to find entries that are present. To deal with - this, it is recommended to <literal>REINDEX</> any hash indexes you may - have after installing this update. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash during backend-startup-time cache initialization (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid crash on empty thesaurus dictionary (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent signals from interrupting <literal>VACUUM</> at unsafe times - (Alvaro) - </para> - - <para> - This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled - after it's already committed its tuple movements, as well as transient - errors if a plain <literal>VACUUM</> is interrupted after having - truncated the table. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to integer overflow in hash table size - calculation (Tom) - </para> - - <para> - This could occur with extremely large planner estimates for the size of - a hashjoin's result. - </para> - </listitem> - - <listitem> - <para> - Fix crash if a <literal>DROP</> is attempted on an internally-dependent - object (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris - Mikkelson) - </para> - </listitem> - - <listitem> - <para> - Ensure that shared tuple-level locks held by prepared transactions are - not ignored (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix premature drop of temporary files used for a cursor that is accessed - within a subtransaction (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in syslogger process when rotating to a new CSV logfile - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix memory leak in postmaster when re-parsing <filename>pg_hba.conf</> - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix Windows permission-downgrade logic (Jesse Morris) - </para> - - <para> - This fixes some cases where the database failed to start on Windows, - often with misleading error messages such as <quote>could not locate - matching postgres executable</quote>. - </para> - </listitem> - - <listitem> - <para> - Make <literal>FOR UPDATE/SHARE</> in the primary query not propagate - into <literal>WITH</> queries (Tom) - </para> - - <para> - For example, in -<programlisting> -WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE -</programlisting> - the <literal>FOR UPDATE</> will now affect <literal>bar</> but not - <literal>foo</>. This is more useful and consistent than the original - 8.4 behavior, which tried to propagate <literal>FOR UPDATE</> into the - <literal>WITH</> query but always failed due to assorted implementation - restrictions. It also follows the design rule that <literal>WITH</> - queries are executed as if independent of the main query. - </para> - </listitem> - - <listitem> - <para> - Fix bug with a <literal>WITH RECURSIVE</> query immediately inside - another one (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix concurrency bug in hash indexes (Tom) - </para> - - <para> - Concurrent insertions could cause index scans to transiently report - wrong results. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect logic for GiST index page splits, when the split depends - on a non-first column of the index (Paul Ramsey) - </para> - </listitem> - - <listitem> - <para> - Fix wrong search results for a multi-column GIN index with - <literal>fastupdate</> enabled (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix bugs in WAL entry creation for GIN indexes (Tom) - </para> - - <para> - These bugs were masked when <varname>full_page_writes</> was on, but - with it off a WAL replay failure was certain if a crash occurred before - the next checkpoint. - </para> - </listitem> - - <listitem> - <para> - Don't error out if recycling or removing an old WAL file fails at the - end of checkpoint (Heikki) - </para> - - <para> - It's better to treat the problem as non-fatal and allow the checkpoint - to complete. Future checkpoints will retry the removal. Such problems - are not expected in normal operation, but have been seen to be - caused by misdesigned Windows anti-virus and backup software. - </para> - </listitem> - - <listitem> - <para> - Ensure WAL files aren't repeatedly archived on Windows (Heikki) - </para> - - <para> - This is another symptom that could happen if some other process - interfered with deletion of a no-longer-needed file. - </para> - </listitem> - - <listitem> - <para> - Fix PAM password processing to be more robust (Tom) - </para> - - <para> - The previous code is known to fail with the combination of the Linux - <literal>pam_krb5</> PAM module with Microsoft Active Directory as the - domain controller. It might have problems elsewhere too, since it was - making unjustified assumptions about what arguments the PAM stack would - pass to it. - </para> - </listitem> - - <listitem> - <para> - Raise the maximum authentication token (Kerberos ticket) size in GSSAPI - and SSPI authentication methods (Ian Turner) - </para> - - <para> - While the old 2000-byte limit was more than enough for Unix Kerberos - implementations, tickets issued by Windows Domain Controllers can be - much larger. - </para> - </listitem> - - <listitem> - <para> - Ensure that domain constraints are enforced in constructs like - <literal>ARRAY[...]::domain</>, where the domain is over an array type - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix foreign-key logic for some cases involving composite-type columns - as foreign keys (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure that a cursor's snapshot is not modified after it is created - (Alvaro) - </para> - - <para> - This could lead to a cursor delivering wrong results if later operations - in the same transaction modify the data the cursor is supposed to return. - </para> - </listitem> - - <listitem> - <para> - Fix <literal>CREATE TABLE</> to properly merge default expressions - coming from different inheritance parent tables (Tom) - </para> - - <para> - This used to work but was broken in 8.4. - </para> - </listitem> - - <listitem> - <para> - Re-enable collection of access statistics for sequences (Akira Kurosawa) - </para> - - <para> - This used to work but was broken in 8.3. - </para> - </listitem> - - <listitem> - <para> - Fix processing of ownership dependencies during <literal>CREATE OR - REPLACE FUNCTION</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect handling of <literal>WHERE</> - <replaceable>x</>=<replaceable>x</> conditions (Tom) - </para> - - <para> - In some cases these could get ignored as redundant, but they aren't - — they're equivalent to <replaceable>x</> <literal>IS NOT NULL</>. - </para> - </listitem> - - <listitem> - <para> - Fix incorrect plan construction when using hash aggregation to implement - <literal>DISTINCT</> for textually identical volatile expressions (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix Assert failure for a volatile <literal>SELECT DISTINCT ON</> - expression (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <function>ts_stat()</> to not fail on an empty <type>tsvector</> - value (Tom) - </para> - </listitem> - - <listitem> - <para> - Make text search parser accept underscores in XML attributes (Peter) - </para> - </listitem> - - <listitem> - <para> - Fix encoding handling in <type>xml</> binary input (Heikki) - </para> - - <para> - If the XML header doesn't specify an encoding, we now assume UTF-8 by - default; the previous handling was inconsistent. - </para> - </listitem> - - <listitem> - <para> - Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice - versa (Tom) - </para> - - <para> - An error exit from the inner function could result in crashes due to - failure to re-select the correct Perl interpreter for the outer function. - </para> - </listitem> - - <listitem> - <para> - Fix session-lifespan memory leak when a PL/Perl function is redefined - (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure that Perl arrays are properly converted to - <productname>PostgreSQL</> arrays when returned by a set-returning - PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen) - </para> - - <para> - This worked correctly already for non-set-returning functions. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash in exception processing in PL/Python (Peter) - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</> problem with comments in <literal>DECLARE - CURSOR</> statements (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</> to not treat recently-added keywords as - reserved words (Tom) - </para> - - <para> - This affected the keywords <literal>CALLED</>, <literal>CATALOG</>, - <literal>DEFINER</>, <literal>ENUM</>, <literal>FOLLOWING</>, - <literal>INVOKER</>, <literal>OPTIONS</>, <literal>PARTITION</>, - <literal>PRECEDING</>, <literal>RANGE</>, <literal>SECURITY</>, - <literal>SERVER</>, <literal>UNBOUNDED</>, and <literal>WRAPPER</>. - </para> - </listitem> - - <listitem> - <para> - Re-allow regular expression special characters in <application>psql</>'s - <literal>\df</> function name parameter (Tom) - </para> - </listitem> - - <listitem> - <para> - In <filename>contrib/fuzzystrmatch</>, correct the calculation of - <function>levenshtein</> distances with non-default costs (Marcin Mank) - </para> - </listitem> - - <listitem> - <para> - In <filename>contrib/pg_standby</>, disable triggering failover with a - signal on Windows (Fujii Masao) - </para> - - <para> - This never did anything useful, because Windows doesn't have Unix-style - signals, but recent changes made it actually crash. - </para> - </listitem> - - <listitem> - <para> - Put <literal>FREEZE</> and <literal>VERBOSE</> options in the right - order in the <literal>VACUUM</> command that - <filename>contrib/vacuumdb</> produces (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix possible leak of connections when <filename>contrib/dblink</> - encounters an error (Tatsuhito Kasahara) - </para> - </listitem> - - <listitem> - <para> - Ensure <application>psql</>'s flex module is compiled with the correct - system header definitions (Tom) - </para> - - <para> - This fixes build failures on platforms where - <literal>--enable-largefile</> causes incompatible changes in the - generated code. - </para> - </listitem> - - <listitem> - <para> - Make the postmaster ignore any <literal>application_name</> parameter in - connection request packets, to improve compatibility with future libpq - versions (Tom) - </para> - </listitem> - - <listitem> - <para> - Update the timezone abbreviation files to match current reality (Joachim - Wieland) - </para> - - <para> - This includes adding <literal>IDT</> to the default - timezone abbreviation set. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009s - for DST law changes in Antarctica, Argentina, Bangladesh, Fiji, - Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical - corrections for Hong Kong. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4-1"> - <title>Release 8.4.1</title> - - <formalpara> - <title>Release date:</title> - <para>2009-09-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.4. - For information about new features in the 8.4 major release, see - <xref linkend="release-8-4">. - </para> - - <sect2> - <title>Migration to Version 8.4.1</title> - - <para> - A dump/restore is not required for those running 8.4.X. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix WAL page header initialization at the end of archive recovery - (Heikki) - </para> - - <para> - This could lead to failure to process the WAL in a subsequent - archive recovery. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>cannot make new WAL entries during recovery</> error (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix problem that could make expired rows visible after a crash (Tom) - </para> - - <para> - This bug involved a page status bit potentially not being set - correctly after a server crash. - </para> - </listitem> - - <listitem> - <para> - Disallow <command>RESET ROLE</> and <command>RESET SESSION - AUTHORIZATION</> inside security-definer functions (Tom, Heikki) - </para> - - <para> - This covers a case that was missed in the previous patch that - disallowed <command>SET ROLE</> and <command>SET SESSION - AUTHORIZATION</> inside security-definer functions. - (See CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Make <command>LOAD</> of an already-loaded loadable module - into a no-op (Tom) - </para> - - <para> - Formerly, <command>LOAD</> would attempt to unload and re-load the - module, but this is unsafe and not all that useful. - </para> - </listitem> - - <listitem> - <para> - Make window function <literal>PARTITION BY</> and <literal>ORDER BY</> - items always be interpreted as simple expressions (Tom) - </para> - - <para> - In 8.4.0 these lists were parsed following the rules used for - top-level <literal>GROUP BY</> and <literal>ORDER BY</> lists. - But this was not correct per the SQL standard, and it led to possible - circularity. - </para> - </listitem> - - <listitem> - <para> - Fix several errors in planning of semi-joins (Tom) - </para> - - <para> - These led to wrong query results in some cases where <literal>IN</> - or <literal>EXISTS</> was used together with another join. - </para> - </listitem> - - <listitem> - <para> - Fix handling of whole-row references to subqueries that are within - an outer join (Tom) - </para> - - <para> - An example is - <literal>SELECT COUNT(ss.*) FROM ... LEFT JOIN (SELECT ...) ss ON ...</>. - Here, <literal>ss.*</> would be treated as <literal>ROW(NULL,NULL,...)</> - for null-extended join rows, which is not the same as a simple NULL. - Now it is treated as a simple NULL. - </para> - </listitem> - - <listitem> - <para> - Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus) - </para> - - <para> - This bug led to the often-reported <quote>could not reattach - to shared memory</> error message. - </para> - </listitem> - - <listitem> - <para> - Fix locale handling with plperl (Heikki) - </para> - - <para> - This bug could cause the server's locale setting to change when a - plperl function is called, leading to data corruption. - </para> - </listitem> - - <listitem> - <para> - Fix handling of reloptions to ensure setting one option doesn't - force default values for others (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Ensure that a <quote>fast shutdown</> request will forcibly terminate - open sessions, even if a <quote>smart shutdown</> was already in progress - (Fujii Masao) - </para> - </listitem> - - <listitem> - <para> - Avoid memory leak for <function>array_agg()</> in <literal>GROUP BY</> - queries (Tom) - </para> - </listitem> - - <listitem> - <para> - Treat <function>to_char(..., 'TH')</> as an uppercase ordinal - suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki) - </para> - - <para> - It was previously handled as <literal>'th'</> (lowercase). - </para> - </listitem> - - <listitem> - <para> - Include the fractional part in the result of - <function>EXTRACT(second)</> and - <function>EXTRACT(milliseconds)</> for - <type>time</> and <type>time with time zone</> inputs (Tom) - </para> - - <para> - This has always worked for floating-point datetime configurations, - but was broken in the integer datetime code. - </para> - </listitem> - - <listitem> - <para> - Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal> - when <replaceable>x</> is more than 2 million and integer - datetimes are in use (Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Improve performance when processing toasted values in index scans (Tom) - </para> - - <para> - This is particularly useful for <ulink - url="http://postgis.net/">PostGIS</ulink>. - </para> - </listitem> - - <listitem> - <para> - Fix a typo that disabled <varname>commit_delay</> (Jeff Janes) - </para> - </listitem> - - <listitem> - <para> - Output early-startup messages to <filename>postmaster.log</> if the - server is started in silent mode (Tom) - </para> - - <para> - Previously such error messages were discarded, leading to - difficulty in debugging. - </para> - </listitem> - - <listitem> - <para> - Remove translated FAQs (Peter) - </para> - - <para> - They are now on the <ulink - url="http://wiki.postgresql.org/wiki/FAQ">wiki</ulink>. The - main FAQ was moved to the wiki some time ago. - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</> to not go into an infinite loop if - <filename>postgresql.conf</> is empty (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Fix several errors in <application>pg_dump</>'s - <literal>--binary-upgrade</> mode (Bruce, Tom) - </para> - - <para> - <literal>pg_dump --binary-upgrade</> is used by pg_migrator. - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to - properly handle the maximum number of parameters (twenty) (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve robustness of <application>libpq</>'s code to recover - from errors during <command>COPY FROM STDIN</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid including conflicting readline and editline header files - when both libraries are installed (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Work around gcc bug that causes <quote>floating-point exception</> - instead of <quote>division by zero</> on some platforms (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</> release 2009l - for DST law changes in Bangladesh, Egypt, Mauritius. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-4"> - <title>Release 8.4</title> - - <formalpara> - <title>Release date:</title> - <para>2009-07-01</para> - </formalpara> - - <sect2> - <title>Overview</title> - - <para> - After many years of development, <productname>PostgreSQL</> has - become feature-complete in many areas. This release shows a - targeted approach to adding features (e.g., authentication, - monitoring, space reuse), and adds capabilities defined in the - later SQL standards. The major areas of enhancement are: - </para> - - <itemizedlist> - - <!-- This list duplicates items below, but without authors or details--> - - <listitem> - <para> - Windowing Functions - </para> - </listitem> - - <listitem> - <para> - Common Table Expressions and Recursive Queries - </para> - </listitem> - - <listitem> - <para> - Default and variadic parameters for functions - </para> - </listitem> - - <listitem> - <para> - Parallel Restore - </para> - </listitem> - - <listitem> - <para> - Column Permissions - </para> - </listitem> - - <listitem> - <para> - Per-database locale settings - </para> - </listitem> - - <listitem> - <para> - Improved hash indexes - </para> - </listitem> - - <listitem> - <para> - Improved join performance for <literal>EXISTS</> and <literal>NOT EXISTS</> queries - </para> - </listitem> - - <listitem> - <para> - Easier-to-use Warm Standby - </para> - </listitem> - - <listitem> - <para> - Automatic sizing of the Free Space Map - </para> - </listitem> - - <listitem> - <para> - Visibility Map (greatly reduces vacuum overhead for slowly-changing tables) - </para> - </listitem> - - <listitem> - <para> - Version-aware psql (backslash commands work against older servers) - </para> - </listitem> - - <listitem> - <para> - Support SSL certificates for user authentication - </para> - </listitem> - - <listitem> - <para> - Per-function runtime statistics - </para> - </listitem> - - <listitem> - <para> - Easy editing of functions in psql - </para> - </listitem> - - <listitem> - <para> - New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin - </para> - </listitem> - - </itemizedlist> - - <para> - The above items are explained in more detail in the sections below. - </para> - - </sect2> - - <sect2> - <title>Migration to Version 8.4</title> - - <para> - A dump/restore using <application>pg_dump</application> is - required for those wishing to migrate data from any previous - release. - </para> - - <para> - Observe the following incompatibilities: - </para> - - <sect3> - <title>General</title> - <itemizedlist> - - <listitem> - <para> - Use 64-bit integer datetimes by default (Neil Conway) - </para> - - <para> - Previously this was selected by <application>configure</>'s - <option>--enable-integer-datetimes</> option. To retain - the old behavior, build with <option>--disable-integer-datetimes</>. - </para> - </listitem> - - <listitem> - <para> - Remove <application>ipcclean</> utility command (Bruce) - </para> - - <para> - The utility only worked on a few platforms. Users should use - their operating system tools instead. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Server Settings</title> - <itemizedlist> - - <listitem> - <para> - Change default setting for - <literal>log_min_messages</> to <literal>warning</> (previously - it was <literal>notice</>) to reduce log file volume (Tom) - </para> - </listitem> - - <listitem> - <para> - Change default setting for <literal>max_prepared_transactions</> to - zero (previously it was 5) (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <literal>debug_print_parse</>, <literal>debug_print_rewritten</>, - and <literal>debug_print_plan</> - output appear at <literal>LOG</> message level, not - <literal>DEBUG1</> as formerly (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <literal>debug_pretty_print</> default to <literal>on</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Remove <varname>explain_pretty_print</> parameter (no longer needed) (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <varname>log_temp_files</> settable by superusers only, like other - logging options (Simon Riggs) - </para> - </listitem> - - <listitem> - <para> - Remove automatic appending of the epoch timestamp when no <literal>%</> - escapes are present in <literal>log_filename</> (Robert Haas) - </para> - - <para> - This change was made because some users wanted a fixed log filename, - for use with an external log rotation tool. - </para> - </listitem> - - <listitem> - <para> - Remove <varname>log_restartpoints</> from <filename>recovery.conf</>; - instead use <varname>log_checkpoints</> (Simon) - </para> - </listitem> - - <listitem> - <para> - Remove <varname>krb_realm</> and <varname>krb_server_hostname</>; - these are now set in <filename>pg_hba.conf</> instead (Magnus) - </para> - </listitem> - - <listitem> - <para> - There are also significant changes in <link - linkend="release-8-4-pg-hba-conf"><filename>pg_hba.conf</></link>, - as described below. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Queries</title> - - <itemizedlist> - - <listitem> - <para> - Change <command>TRUNCATE</> and <command>LOCK</> to - apply to child tables of the specified table(s) (Peter) - </para> - - <para> - These commands now accept an <literal>ONLY</> option that prevents - processing child tables; this option must be used if the old - behavior is needed. - </para> - </listitem> - - <listitem> - <para> - <command>SELECT DISTINCT</> and - <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> - no longer always produce sorted output (Tom) - </para> - - <para> - Previously, these types of queries always removed duplicate rows - by means of Sort/Unique processing (i.e., sort then remove adjacent - duplicates). Now they can be implemented by hashing, which will not - produce sorted output. If an application relied on the output being - in sorted order, the recommended fix is to add an <literal>ORDER BY</> - clause. As a short-term workaround, the previous behavior can be - restored by disabling <literal>enable_hashagg</>, but that is a very - performance-expensive fix. <literal>SELECT DISTINCT ON</> never uses - hashing, however, so its behavior is unchanged. - </para> - </listitem> - - <listitem> - <para> - Force child tables to inherit <literal>CHECK</> constraints from parents - (Alex Hunsaker, Nikhil Sontakke, Tom) - </para> - - <para> - Formerly it was possible to drop such a constraint from a child - table, allowing rows that violate the constraint to be visible - when scanning the parent table. This was deemed inconsistent, - as well as contrary to SQL standard. - </para> - </listitem> - - <listitem> - <para> - Disallow negative <literal>LIMIT</> or <literal>OFFSET</> - values, rather than treating them as zero (Simon) - </para> - </listitem> - - <listitem> - <para> - Disallow <command>LOCK TABLE</> outside a transaction block - (Tom) - </para> - - <para> - Such an operation is useless because the lock would be released - immediately. - </para> - </listitem> - - <listitem> - <para> - Sequences now contain an additional <structfield>start_value</> column - (Zoltan Boszormenyi) - </para> - - <para> - This supports <command>ALTER SEQUENCE ... RESTART</>. - </para> - </listitem> - - </itemizedlist> - - </sect3> - - - <sect3> - <title>Functions and Operators</title> - - <itemizedlist> - - <listitem> - <para> - Make <type>numeric</> zero raised to a fractional power return - <literal>0</>, rather than throwing an error, and make - <type>numeric</> zero raised to the zero power return <literal>1</>, - rather than error (Bruce) - </para> - - <para> - This matches the longstanding <type>float8</> behavior. - </para> - </listitem> - - <listitem> - <para> - Allow unary minus of floating-point values to produce minus zero (Tom) - </para> - - <para> - The changed behavior is more <acronym>IEEE</>-standard - compliant. - </para> - </listitem> - - <listitem> - <para> - Throw an error if an escape character is the last character in - a <literal>LIKE</> pattern (i.e., it has nothing to escape) (Tom) - </para> - - <para> - Previously, such an escape character was silently ignored, - thus possibly masking application logic errors. - </para> - </listitem> - - <listitem> - <para> - Remove <literal>~=~</> and <literal>~<>~</> operators - formerly used for <literal>LIKE</> index comparisons (Tom) - </para> - - <para> - Pattern indexes now use the regular equality operator. - </para> - </listitem> - - <listitem> - <para> - <function>xpath()</> now passes its arguments to <application>libxml</> - without any changes (Andrew) - </para> - - <para> - This means that the XML argument must be a well-formed XML document. - The previous coding attempted to allow XML fragments, but it did not - work well. - </para> - </listitem> - - <listitem> - <para> - Make <function>xmlelement()</> format attribute values just like - content values (Peter) - </para> - - <para> - Previously, attribute values were formatted according to the - normal SQL output behavior, which is sometimes at odds with - XML rules. - </para> - </listitem> - - <listitem> - <para> - Rewrite memory management for <application>libxml</>-using functions - (Tom) - </para> - - <para> - This change should avoid some compatibility problems with use of - <application>libxml</> in PL/Perl and other add-on code. - </para> - </listitem> - - <listitem> - <para> - Adopt a faster algorithm for hash functions (Kenneth Marshall, - based on work of Bob Jenkins) - </para> - - <para> - Many of the built-in hash functions now deliver different results on - little-endian and big-endian platforms. - </para> - </listitem> - - </itemizedlist> - - <sect4> - <title>Temporal Functions and Operators</title> - - <itemizedlist> - - <listitem> - <para> - <varname>DateStyle</> no longer controls <type>interval</> output - formatting; instead there is a new variable <varname>IntervalStyle</> - (Ron Mayer) - </para> - </listitem> - - <listitem> - <para> - Improve consistency of handling of fractional seconds in - <type>timestamp</> and <type>interval</> output (Ron Mayer) - </para> - - <para> - This may result in displaying a different number of fractional - digits than before, or rounding instead of truncating. - </para> - </listitem> - - <listitem> - <para> - Make <function>to_char()</>'s localized month/day names depend - on <varname>LC_TIME</>, not <varname>LC_MESSAGES</> (Euler - Taveira de Oliveira) - </para> - </listitem> - - <listitem> - <para> - Cause <function>to_date()</> and <function>to_timestamp()</> - to more consistently report errors for invalid input (Brendan - Jurd) - </para> - - <para> - Previous versions would often ignore or silently misread input - that did not match the format string. Such cases will now - result in an error. - </para> - </listitem> - - <listitem> - <para> - Fix <function>to_timestamp()</> to not require upper/lower case - matching for meridian (<literal>AM</>/<literal>PM</>) and era - (<literal>BC</>/<literal>AD</>) format designations (Brendan - Jurd) - </para> - - <para> - For example, input value <literal>ad</> now matches the format - string <literal>AD</>. - </para> - </listitem> - - </itemizedlist> - - </sect4> - - </sect3> - - </sect2> - - <sect2> - <title>Changes</title> - - <para> - Below you will find a detailed account of the changes between - <productname>PostgreSQL</productname> 8.4 and the previous major - release. - </para> - - <sect3> - <title>Performance</title> - <itemizedlist> - - <listitem> - <para> - Improve optimizer statistics calculations (Jan Urbanski, Tom) - </para> - - <para> - In particular, estimates for full-text-search operators are - greatly improved. - </para> - </listitem> - - <listitem> - <para> - Allow <command>SELECT DISTINCT</> and - <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> to - use hashing (Tom) - </para> - - <para> - This means that these types of queries no longer automatically - produce sorted output. - </para> - </listitem> - - <listitem> - <para> - Create explicit concepts of semi-joins and anti-joins (Tom) - </para> - - <para> - This work formalizes our previous ad-hoc treatment of <literal>IN - (SELECT ...)</> clauses, and extends it to <literal>EXISTS</> and - <literal>NOT EXISTS</> clauses. It should result in significantly - better planning of <literal>EXISTS</> and <literal>NOT EXISTS</> - queries. In general, logically equivalent <literal>IN</> and - <literal>EXISTS</> clauses should now have similar performance, - whereas previously <literal>IN</> often won. - </para> - </listitem> - - <listitem> - <para> - Improve optimization of sub-selects beneath outer joins (Tom) - </para> - - <para> - Formerly, a sub-select or view could not be optimized very well if it - appeared within the nullable side of an outer join and contained - non-strict expressions (for instance, constants) in its result list. - </para> - </listitem> - - <listitem> - <para> - Improve the performance of <function>text_position()</> and - related functions by using Boyer-Moore-Horspool searching (David - Rowley) - </para> - - <para> - This is particularly helpful for long search patterns. - </para> - </listitem> - - <listitem> - <para> - Reduce I/O load of writing the statistics collection file - by writing the file only when requested (Martin Pihlak) - </para> - </listitem> - - <listitem> - <para> - Improve performance for bulk inserts (Robert Haas, Simon) - </para> - </listitem> - - <listitem> - <para> - Increase the default value of <varname>default_statistics_target</> - from <literal>10</> to <literal>100</> (Greg Sabino Mullane, - Tom) - </para> - - <para> - The maximum value was also increased from <literal>1000</> to - <literal>10000</>. - </para> - </listitem> - - <listitem> - <para> - Perform <varname>constraint_exclusion</> checking by default - in queries involving inheritance or <literal>UNION ALL</> (Tom) - </para> - - <para> - A new <varname>constraint_exclusion</> setting, - <literal>partition</>, was added to specify this behavior. - </para> - </listitem> - - <listitem> - <para> - Allow I/O read-ahead for bitmap index scans (Greg Stark) - </para> - - <para> - The amount of read-ahead is controlled by - <varname>effective_io_concurrency</>. This feature is available only - if the kernel has <function>posix_fadvise()</> support. - </para> - </listitem> - - <listitem> - <para> - Inline simple set-returning <acronym>SQL</> functions in - <literal>FROM</> clauses (Richard Rowell) - </para> - </listitem> - - <listitem> - <para> - Improve performance of multi-batch hash joins by providing a special - case for join key values that are especially common in the outer - relation (Bryce Cutt, Ramon Lawrence) - </para> - </listitem> - - <listitem> - <para> - Reduce volume of temporary data in multi-batch hash joins - by suppressing <quote>physical tlist</> optimization (Michael - Henderson, Ramon Lawrence) - </para> - </listitem> - - <listitem> - <para> - Avoid waiting for idle-in-transaction sessions during - <command>CREATE INDEX CONCURRENTLY</> (Simon) - </para> - </listitem> - - <listitem> - <para> - Improve performance of shared cache invalidation (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect3> - - <sect3> - <title>Server</title> - - <sect4> - <title>Settings</title> - - <itemizedlist> - - <listitem> - <para> - Convert many <filename>postgresql.conf</> settings to enumerated - values so that <literal>pg_settings</> can display the valid - values (Magnus) - </para> - </listitem> - - <listitem> - <para> - Add <varname>cursor_tuple_fraction</> parameter to control the - fraction of a cursor's rows that the planner assumes will be - fetched (Robert Hell) - </para> - </listitem> - - <listitem> - <para> - Allow underscores in the names of custom variable - classes in <filename>postgresql.conf</> (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect4> - - <sect4> - <title>Authentication and security</title> - <itemizedlist> - - <listitem> - <para> - Remove support for the (insecure) <literal>crypt</> authentication method - (Magnus) - </para> - - <para> - This effectively obsoletes pre-<productname>PostgreSQL</> 7.2 client - libraries, as there is no longer any non-plaintext password method that - they can use. - </para> - </listitem> - - <listitem> - <para> - Support regular expressions in <filename>pg_ident.conf</> - (Magnus) - </para> - </listitem> - - <listitem> - <para> - Allow <productname>Kerberos</>/<acronym>GSSAPI</> parameters - to be changed without restarting the postmaster (Magnus) - </para> - </listitem> - - <listitem> - <para> - Support <acronym>SSL</> certificate chains in server certificate - file (Andrew Gierth) - </para> - - <para> - Including the full certificate chain makes the client able - to verify the certificate without having all intermediate CA - certificates present in the local store, which is often the case for - commercial CAs. - </para> - </listitem> - - <listitem> - <para> - Report appropriate error message for combination of <literal>MD5</> - authentication and <varname>db_user_namespace</> enabled (Bruce) - </para> - </listitem> - </itemizedlist> - - </sect4> - - <sect4 id="release-8-4-pg-hba-conf"> - <title><filename>pg_hba.conf</></title> - <itemizedlist> - - <listitem> - <para> - Change all authentication options to use <literal>name=value</> - syntax (Magnus) - </para> - - <para> - This makes incompatible changes to the <literal>ldap</>, - <literal>pam</> and <literal>ident</> authentication methods. All - <filename>pg_hba.conf</> entries with these methods need to be - rewritten using the new format. - </para> - </listitem> - - <listitem> - <para> - Remove the <literal>ident sameuser</> option, instead making that - behavior the default if no usermap is specified (Magnus) - </para> - </listitem> - - <listitem> - <para> - Allow a usermap parameter for all external authentication methods - (Magnus) - </para> - - <para> - Previously a usermap was only supported for <literal>ident</> - authentication. - </para> - </listitem> - - <listitem> - <para> - Add <literal>clientcert</> option to control requesting of a - client certificate (Magnus) - </para> - - <para> - Previously this was controlled by the presence of a root - certificate file in the server's data directory. - </para> - </listitem> - - <listitem> - <para> - Add <literal>cert</> authentication method to allow - <emphasis>user</> authentication via <acronym>SSL</> certificates - (Magnus) - </para> - - <para> - Previously <acronym>SSL</> certificates could only verify that - the client had access to a certificate, not authenticate a - user. - </para> - </listitem> - - <listitem> - <para> - Allow <literal>krb5</>, <literal>gssapi</> and <literal>sspi</> - realm and <literal>krb5</> host settings to be specified in - <filename>pg_hba.conf</> (Magnus) - </para> - - <para> - These override the settings in <filename>postgresql.conf</>. - </para> - </listitem> - - <listitem> - <para> - Add <varname>include_realm</> parameter for <literal>krb5</>, - <literal>gssapi</>, and <literal>sspi</> methods (Magnus) - </para> - - <para> - This allows identical usernames from different realms to be - authenticated as different database users using usermaps. - </para> - </listitem> - - <listitem> - <para> - Parse <filename>pg_hba.conf</> fully when it is loaded, - so that errors are reported immediately (Magnus) - </para> - - <para> - Previously, most errors in the file wouldn't be detected until clients - tried to connect, so an erroneous file could render the system - unusable. With the new behavior, if an error is detected during - reload then the bad file is rejected and the postmaster continues - to use its old copy. - </para> - </listitem> - - <listitem> - <para> - Show all parsing errors in <filename>pg_hba.conf</> instead of - aborting after the first one (Selena Deckelmann) - </para> - </listitem> - - <listitem> - <para> - Support <literal>ident</> authentication over Unix-domain sockets - on <productname>Solaris</> (Garick Hamlin) - </para> - </listitem> - - </itemizedlist> - - </sect4> - - <sect4> - <title>Continuous Archiving</title> - <itemizedlist> - - <listitem> - <para> - Provide an option to <function>pg_start_backup()</> to force its - implied checkpoint to finish as quickly as possible (Tom) - </para> - - <para> - The default behavior avoids excess I/O consumption, but that is - pointless if no concurrent query activity is going on. - </para> - </listitem> - - <listitem> - <para> - Make <function>pg_stop_backup()</> wait for modified <acronym>WAL</> - files to be archived (Simon) - </para> - - <para> - This guarantees that the backup is valid at the time - <function>pg_stop_backup()</> completes. - </para> - </listitem> - - <listitem> - <para> - When archiving is enabled, rotate the last WAL segment at shutdown - so that all transactions can be archived immediately - (Guillaume Smet, Heikki) - </para> - </listitem> - - <listitem> - <para> - Delay <quote>smart</> shutdown while a continuous archiving base backup - is in progress (Laurenz Albe) - </para> - </listitem> - - <listitem> - <para> - Cancel a continuous archiving base backup if <quote>fast</> shutdown - is requested (Laurenz Albe) - </para> - </listitem> - - <listitem> - <para> - Allow <filename>recovery.conf</> boolean variables to take the - same range of string values as <filename>postgresql.conf</> - boolean variables - (Bruce) - </para> - </listitem> - - </itemizedlist> - - </sect4> - - <sect4> - <title>Monitoring</title> - <itemizedlist> - - <listitem> - <para> - Add <function>pg_conf_load_time()</> to report when - the <productname>PostgreSQL</> configuration files were last loaded - (George Gensure) - </para> - </listitem> - - <listitem> - <para> - Add <function>pg_terminate_backend()</> to safely terminate a - backend (the <literal>SIGTERM</> signal works also) (Tom, Bruce) - </para> - - <para> - While it's always been possible to <literal>SIGTERM</> a single - backend, this was previously considered unsupported; and testing - of the case found some bugs that are now fixed. - </para> - </listitem> - - <listitem> - <para> - Add ability to track user-defined functions' call counts and - runtimes (Martin Pihlak) - </para> - - <para> - Function statistics appear in a new system view, - <literal>pg_stat_user_functions</>. Tracking is controlled - by the new parameter <varname>track_functions</>. - </para> - </listitem> - - <listitem> - <para> - Allow specification of the maximum query string size in - <literal>pg_stat_activity</> via new - <varname>track_activity_query_size</> parameter (Thomas Lee) - </para> - </listitem> - - <listitem> - <para> - Increase the maximum line length sent to <application>syslog</>, in - hopes of improving performance (Tom) - </para> - </listitem> - - <listitem> - <para> - Add read-only configuration variables <varname>segment_size</>, - <varname>wal_block_size</>, and <varname>wal_segment_size</> - (Bernd Helmle) - </para> - </listitem> - - <listitem> - <para> - When reporting a deadlock, report the text of all queries involved - in the deadlock to the server log (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Add <function>pg_stat_get_activity(pid)</> function to return - information about a specific process id (Magnus) - </para> - </listitem> - - <listitem> - <para> - Allow the location of the server's statistics file to be specified - via <varname>stats_temp_directory</> (Magnus) - </para> - - <para> - This allows the statistics file to be placed in a - <acronym>RAM</>-resident directory to reduce I/O requirements. - On startup/shutdown, the file is copied to its traditional location - (<literal>$PGDATA/global/</>) so it is preserved across restarts. - </para> - </listitem> - - </itemizedlist> - - </sect4> - - </sect3> - - <sect3> - <title>Queries</title> - <itemizedlist> - - <listitem> - <para> - Add support for <literal>WINDOW</> functions (Hitoshi Harada) - </para> - </listitem> - - <listitem> - <para> - Add support for <literal>WITH</> clauses (CTEs), including <literal>WITH - RECURSIVE</> (Yoshiyuki Asaba, Tatsuo Ishii, Tom) - </para> - </listitem> - - <listitem> - <para> - Add <command>TABLE</> command (Peter) - </para> - - <para> - <literal>TABLE tablename</> is a SQL standard short-hand for - <literal>SELECT * FROM tablename</>. - </para> - </listitem> - - <listitem> - <para> - Allow <literal>AS</> to be optional when specifying a - <command>SELECT</> (or <literal>RETURNING</>) column output - label (Hiroshi Saito) - </para> - - <para> - This works so long as the column label is not any - <productname>PostgreSQL</> keyword; otherwise <literal>AS</> is still - needed. - </para> - </listitem> - - <listitem> - <para> - Support set-returning functions in <command>SELECT</> result lists - even for functions that return their result via a tuplestore (Tom) - </para> - - <para> - In particular, this means that functions written in PL/pgSQL - and other PL languages can now be called this way. - </para> - </listitem> - - <listitem> - <para> - Support set-returning functions in the output of aggregation - and grouping queries (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow <command>SELECT FOR UPDATE</>/<literal>SHARE</> to work - on inheritance trees (Tom) - </para> - </listitem> - - <listitem> - <para> - Add infrastructure for <acronym>SQL/MED</> (Martin Pihlak, - Peter) - </para> - - <para> - There are no remote or external <acronym>SQL/MED</> capabilities - yet, but this change provides a standardized and future-proof - system for managing connection information for modules like - <filename>dblink</> and <filename>plproxy</>. - </para> - </listitem> - - <listitem> - <para> - Invalidate cached plans when referenced schemas, functions, operators, - or operator classes are modified (Martin Pihlak, Tom) - </para> - - <para> - This improves the system's ability to respond to on-the-fly - DDL changes. - </para> - </listitem> - <listitem> - <para> - Allow comparison of composite types and allow arrays of - anonymous composite types (Tom) - </para> - - <para> - This allows constructs such as - <literal>row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)])</>. - This is particularly useful in recursive queries. - </para> - </listitem> - - <listitem> - <para> - Add support for Unicode string literal and identifier specifications - using code points, e.g. <literal>U&'d\0061t\+000061'</> - (Peter) - </para> - </listitem> - - <listitem> - <para> - Reject <literal>\000</> in string literals and <command>COPY</> data - (Tom) - </para> - - <para> - Previously, this was accepted but had the effect of terminating - the string contents. - </para> - </listitem> - - <listitem> - <para> - Improve the parser's ability to report error locations (Tom) - </para> - - <para> - An error location is now reported for many semantic errors, - such as mismatched datatypes, that previously could not be localized. - </para> - </listitem> - - </itemizedlist> - - <sect4> - <title><command>TRUNCATE</></title> - <itemizedlist> - - <listitem> - <para> - Support statement-level <literal>ON TRUNCATE</> triggers (Simon) - </para> - </listitem> - - <listitem> - <para> - Add <literal>RESTART</>/<literal>CONTINUE IDENTITY</> options - for <command>TRUNCATE TABLE</> - (Zoltan Boszormenyi) - </para> - - <para> - The start value of a sequence can be changed by <command>ALTER - SEQUENCE START WITH</>. - </para> - </listitem> - - <listitem> - <para> - Allow <command>TRUNCATE tab1, tab1</> to succeed (Bruce) - </para> - </listitem> - - <listitem> - <para> - Add a separate <command>TRUNCATE</> permission (Robert Haas) - </para> - </listitem> - - </itemizedlist> - - </sect4> - - <sect4> - <title><command>EXPLAIN</></title> - <itemizedlist> - - <listitem> - <para> - Make <command>EXPLAIN VERBOSE</> show the output columns of each - plan node (Tom) - </para> - - <para> - Previously <command>EXPLAIN VERBOSE</> output an internal - representation of the query plan. (That behavior is now - available via <varname>debug_print_plan</>.) - </para> - </listitem> - - <listitem> - <para> - Make <command>EXPLAIN</> identify subplans and initplans with - individual labels (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow <command>EXPLAIN</> on <command>CREATE TABLE AS</> (Peter) - </para> - </listitem> - - </itemizedlist> - - </sect4> - - <sect4> - <title><literal>LIMIT</>/<literal>OFFSET</></title> - <itemizedlist> - - <listitem> - <para> - Allow sub-selects in <literal>LIMIT</> and <literal>OFFSET</> (Tom) - </para> - </listitem> - - <listitem> - <para> - Add <acronym>SQL</>-standard syntax for - <literal>LIMIT</>/<literal>OFFSET</> capabilities (Peter) - </para> - - <para> - To wit, - <literal>OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS} - ONLY</>. - </para> - </listitem> - - </itemizedlist> - - </sect4> - - </sect3> - - <sect3> - <title>Object Manipulation</title> - <itemizedlist> - - <listitem> - <para> - Add support for column-level privileges (Stephen Frost, KaiGai - Kohei) - </para> - </listitem> - - <listitem> - <para> - Refactor multi-object <command>DROP</> operations to reduce the - need for <literal>CASCADE</> (Alex Hunsaker) - </para> - - <para> - For example, if table <literal>B</> has a dependency on table - <literal>A</>, the command <literal>DROP TABLE A, B</> no longer - requires the <literal>CASCADE</> option. - </para> - </listitem> - - <listitem> - <para> - Fix various problems with concurrent <command>DROP</> commands - by ensuring that locks are taken before we begin to drop dependencies - of an object (Tom) |
