diff options
Diffstat (limited to 'doc/src/sgml/release-8.0.sgml')
-rw-r--r-- | doc/src/sgml/release-8.0.sgml | 5421 |
1 files changed, 0 insertions, 5421 deletions
diff --git a/doc/src/sgml/release-8.0.sgml b/doc/src/sgml/release-8.0.sgml deleted file mode 100644 index 6171e0d1eee..00000000000 --- a/doc/src/sgml/release-8.0.sgml +++ /dev/null @@ -1,5421 +0,0 @@ -<!-- doc/src/sgml/release-8.0.sgml --> -<!-- See header comment in release.sgml about typical markup --> - - <sect1 id="release-8-0-26"> - <title>Release 8.0.26</title> - - <formalpara> - <title>Release date:</title> - <para>2010-10-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.25. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <para> - This is expected to be the last <productname>PostgreSQL</productname> release - in the 8.0.X series. Users are encouraged to update to a newer - release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.0.26</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.22, - see <xref linkend="release-8-0-22"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Use a separate interpreter for each calling SQL userid in PL/Perl and - PL/Tcl (Tom Lane) - </para> - - <para> - This change prevents security problems that can be caused by subverting - Perl or Tcl code that will be executed later in the same session under - another SQL user identity (for example, within a <literal>SECURITY - DEFINER</literal> function). Most scripting languages offer numerous ways that - that might be done, such as redefining standard functions or operators - called by the target function. Without this change, any SQL user with - Perl or Tcl language usage rights can do essentially anything with the - SQL privileges of the target function's owner. - </para> - - <para> - The cost of this change is that intentional communication among Perl - and Tcl functions becomes more difficult. To provide an escape hatch, - PL/PerlU and PL/TclU functions continue to use only one interpreter - per session. This is not considered a security issue since all such - functions execute at the trust level of a database superuser already. - </para> - - <para> - It is likely that third-party procedural languages that claim to offer - trusted execution have similar security issues. We advise contacting - the authors of any PL you are depending on for security-critical - purposes. - </para> - - <para> - Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433). - </para> - </listitem> - - <listitem> - <para> - Prevent possible crashes in <function>pg_get_expr()</function> by disallowing - it from being called with an argument that is not one of the system - catalog columns it's intended to be used with - (Heikki Linnakangas, Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane) - </para> - - <para> - This occurred when a sub-select contains a join alias reference that - expands into an expression containing another sub-select. - </para> - </listitem> - - <listitem> - <para> - Defend against functions returning setof record where not all the - returned rows are actually of the same rowtype (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Take care to fsync the contents of lockfiles (both - <filename>postmaster.pid</filename> and the socket lockfile) while writing them - (Tom Lane) - </para> - - <para> - This omission could result in corrupted lockfile contents if the - machine crashes shortly after postmaster start. That could in turn - prevent subsequent attempts to start the postmaster from succeeding, - until the lockfile is manually removed. - </para> - </listitem> - - <listitem> - <para> - Avoid recursion while assigning XIDs to heavily-nested - subtransactions (Andres Freund, Robert Haas) - </para> - - <para> - The original coding could result in a crash if there was limited - stack space. - </para> - </listitem> - - <listitem> - <para> - Fix <varname>log_line_prefix</varname>'s <literal>%i</literal> escape, - which could produce junk early in backend startup (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix possible data corruption in <command>ALTER TABLE ... SET - TABLESPACE</command> when archiving is enabled (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Allow <command>CREATE DATABASE</command> and <command>ALTER DATABASE ... SET - TABLESPACE</command> to be interrupted by query-cancel (Guillaume Lelarge) - </para> - </listitem> - - <listitem> - <para> - In PL/Python, defend against null pointer results from - <function>PyCObject_AsVoidPtr</function> and <function>PyCObject_FromVoidPtr</function> - (Peter Eisentraut) - </para> - </listitem> - - <listitem> - <para> - Improve <filename>contrib/dblink</filename>'s handling of tables containing - dropped columns (Tom Lane) - </para> - </listitem> - - <listitem> - <para> - Fix connection leak after <quote>duplicate connection name</quote> - errors in <filename>contrib/dblink</filename> (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/dblink</filename> to handle connection names longer than - 62 bytes correctly (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Update build infrastructure and documentation to reflect the source code - repository's move from CVS to Git (Magnus Hagander and others) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2010l - for DST law changes in Egypt and Palestine; also historical corrections - for Finland. - </para> - - <para> - This change also adds new names for two Micronesian timezones: - Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred - abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over - Pacific/Ponape. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-25"> - <title>Release 8.0.25</title> - - <formalpara> - <title>Release date:</title> - <para>2010-05-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.24. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <para> - The <productname>PostgreSQL</productname> community will stop releasing updates - for the 8.0.X release series in July 2010. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.0.25</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.22, - see <xref linkend="release-8-0-22"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Enforce restrictions in <literal>plperl</literal> using an opmask applied to - the whole interpreter, instead of using <filename>Safe.pm</filename> - (Tim Bunce, Andrew Dunstan) - </para> - - <para> - Recent developments have convinced us that <filename>Safe.pm</filename> is too - insecure to rely on for making <literal>plperl</literal> trustable. This - change removes use of <filename>Safe.pm</filename> altogether, in favor of using - a separate interpreter with an opcode mask that is always applied. - Pleasant side effects of the change include that it is now possible to - use Perl's <literal>strict</literal> pragma in a natural way in - <literal>plperl</literal>, and that Perl's <literal>$a</literal> and <literal>$b</literal> - variables work as expected in sort routines, and that function - compilation is significantly faster. (CVE-2010-1169) - </para> - </listitem> - - <listitem> - <para> - Prevent PL/Tcl from executing untrustworthy code from - <structname>pltcl_modules</structname> (Tom) - </para> - - <para> - PL/Tcl's feature for autoloading Tcl code from a database table - could be exploited for trojan-horse attacks, because there was no - restriction on who could create or insert into that table. This change - disables the feature unless <structname>pltcl_modules</structname> is owned by a - superuser. (However, the permissions on the table are not checked, so - installations that really need a less-than-secure modules table can - still grant suitable privileges to trusted non-superusers.) Also, - prevent loading code into the unrestricted <quote>normal</quote> Tcl - interpreter unless we are really going to execute a <literal>pltclu</literal> - function. (CVE-2010-1170) - </para> - </listitem> - - <listitem> - <para> - Do not allow an unprivileged user to reset superuser-only parameter - settings (Alvaro) - </para> - - <para> - Previously, if an unprivileged user ran <literal>ALTER USER ... RESET - ALL</literal> for himself, or <literal>ALTER DATABASE ... RESET ALL</literal> for - a database he owns, this would remove all special parameter settings - for the user or database, even ones that are only supposed to be - changeable by a superuser. Now, the <command>ALTER</command> will only - remove the parameters that the user has permission to change. - </para> - </listitem> - - <listitem> - <para> - Avoid possible crash during backend shutdown if shutdown occurs - when a <literal>CONTEXT</literal> addition would be made to log entries (Tom) - </para> - - <para> - In some cases the context-printing function would fail because the - current transaction had already been rolled back when it came time - to print a log message. - </para> - </listitem> - - <listitem> - <para> - Update PL/Perl's <filename>ppport.h</filename> for modern Perl versions - (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix assorted memory leaks in PL/Python (Andreas Freund, Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent infinite recursion in <application>psql</application> when expanding - a variable that refers to itself (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure that <filename>contrib/pgstattuple</filename> functions respond to cancel - interrupts promptly (Tatsuhito Kasahara) - </para> - </listitem> - - <listitem> - <para> - Make server startup deal properly with the case that - <function>shmget()</function> returns <literal>EINVAL</literal> for an existing - shared memory segment (Tom) - </para> - - <para> - This behavior has been observed on BSD-derived kernels including macOS. - It resulted in an entirely-misleading startup failure complaining that - the shared memory request size was too large. - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2010j - for DST law changes in Argentina, Australian Antarctic, Bangladesh, - Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; - also historical corrections for Taiwan. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-24"> - <title>Release 8.0.24</title> - - <formalpara> - <title>Release date:</title> - <para>2010-03-15</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.23. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <para> - The <productname>PostgreSQL</productname> community will stop releasing updates - for the 8.0.X release series in July 2010. - Users are encouraged to update to a newer release branch soon. - </para> - - <sect2> - <title>Migration to Version 8.0.24</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.22, - see <xref linkend="release-8-0-22"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Add new configuration parameter <varname>ssl_renegotiation_limit</varname> to - control how often we do session key renegotiation for an SSL connection - (Magnus) - </para> - - <para> - This can be set to zero to disable renegotiation completely, which may - be required if a broken SSL library is used. In particular, some - vendors are shipping stopgap patches for CVE-2009-3555 that cause - renegotiation attempts to fail. - </para> - </listitem> - - <listitem> - <para> - Fix possible crashes when trying to recover from a failure in - subtransaction start (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix server memory leak associated with use of savepoints and a client - encoding different from server's encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <function>substring()</function> for <type>bit</type> types treat any negative - length as meaning <quote>all the rest of the string</quote> (Tom) - </para> - - <para> - The previous coding treated only -1 that way, and would produce an - invalid result value for other negative values, possibly leading to - a crash (CVE-2010-0442). - </para> - </listitem> - - <listitem> - <para> - Fix integer-to-bit-string conversions to handle the first fractional - byte correctly when the output bit width is wider than the given - integer by something other than a multiple of 8 bits (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix some cases of pathologically slow regular expression matching (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix the <literal>STOP WAL LOCATION</literal> entry in backup history files to - report the next WAL segment's name when the end location is exactly at a - segment boundary (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - When reading <filename>pg_hba.conf</filename> and related files, do not treat - <literal>@something</literal> as a file inclusion request if the <literal>@</literal> - appears inside quote marks; also, never treat <literal>@</literal> by itself - as a file inclusion request (Tom) - </para> - - <para> - This prevents erratic behavior if a role or database name starts with - <literal>@</literal>. If you need to include a file whose path name - contains spaces, you can still do so, but you must write - <literal>@"/path to/file"</literal> rather than putting the quotes around - the whole construct. - </para> - </listitem> - - <listitem> - <para> - Prevent infinite loop on some platforms if a directory is named as - an inclusion target in <filename>pg_hba.conf</filename> and related files - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix plpgsql failure in one case where a composite column is set to NULL - (Tom) - </para> - </listitem> - - <listitem> - <para> - Add <literal>volatile</literal> markings in PL/Python to avoid possible - compiler-specific misbehavior (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Ensure PL/Tcl initializes the Tcl interpreter fully (Tom) - </para> - - <para> - The only known symptom of this oversight is that the Tcl - <literal>clock</literal> command misbehaves if using Tcl 8.5 or later. - </para> - </listitem> - - <listitem> - <para> - Prevent crash in <filename>contrib/dblink</filename> when too many key - columns are specified to a <function>dblink_build_sql_*</function> function - (Rushabh Lathia, Joe Conway) - </para> - </listitem> - - <listitem> - <para> - Fix assorted crashes in <filename>contrib/xml2</filename> caused by sloppy - memory management (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2010e - for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-23"> - <title>Release 8.0.23</title> - - <formalpara> - <title>Release date:</title> - <para>2009-12-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.22. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.23</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.22, - see <xref linkend="release-8-0-22"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Protect against indirect security threats caused by index functions - changing session-local state (Gurjeet Singh, Tom) - </para> - - <para> - This change prevents allegedly-immutable index functions from possibly - subverting a superuser's session (CVE-2009-4136). - </para> - </listitem> - - <listitem> - <para> - Reject SSL certificates containing an embedded null byte in the common - name (CN) field (Magnus) - </para> - - <para> - This prevents unintended matching of a certificate to a server or client - name during SSL validation (CVE-2009-4034). - </para> - </listitem> - - <listitem> - <para> - Fix possible crash during backend-startup-time cache initialization (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent signals from interrupting <literal>VACUUM</literal> at unsafe times - (Alvaro) - </para> - - <para> - This fix prevents a PANIC if a <literal>VACUUM FULL</literal> is canceled - after it's already committed its tuple movements, as well as transient - errors if a plain <literal>VACUUM</literal> is interrupted after having - truncated the table. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash due to integer overflow in hash table size - calculation (Tom) - </para> - - <para> - This could occur with extremely large planner estimates for the size of - a hashjoin's result. - </para> - </listitem> - - <listitem> - <para> - Fix very rare crash in <type>inet</type>/<type>cidr</type> comparisons (Chris - Mikkelson) - </para> - </listitem> - - <listitem> - <para> - Fix premature drop of temporary files used for a cursor that is accessed - within a subtransaction (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix PAM password processing to be more robust (Tom) - </para> - - <para> - The previous code is known to fail with the combination of the Linux - <literal>pam_krb5</literal> PAM module with Microsoft Active Directory as the - domain controller. It might have problems elsewhere too, since it was - making unjustified assumptions about what arguments the PAM stack would - pass to it. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash in exception processing in PL/Python (Peter) - </para> - </listitem> - - <listitem> - <para> - Ensure <application>psql</application>'s flex module is compiled with the correct - system header definitions (Tom) - </para> - - <para> - This fixes build failures on platforms where - <literal>--enable-largefile</literal> causes incompatible changes in the - generated code. - </para> - </listitem> - - <listitem> - <para> - Make the postmaster ignore any <literal>application_name</literal> parameter in - connection request packets, to improve compatibility with future libpq - versions (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2009s - for DST law changes in Antarctica, Argentina, Bangladesh, Fiji, - Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical - corrections for Hong Kong. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-22"> - <title>Release 8.0.22</title> - - <formalpara> - <title>Release date:</title> - <para>2009-09-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.21. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.22</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you have any hash indexes on <type>interval</type> columns, - you must <command>REINDEX</command> them after updating to 8.0.22. - Also, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Disallow <command>RESET ROLE</command> and <command>RESET SESSION - AUTHORIZATION</command> inside security-definer functions (Tom, Heikki) - </para> - - <para> - This covers a case that was missed in the previous patch that - disallowed <command>SET ROLE</command> and <command>SET SESSION - AUTHORIZATION</command> inside security-definer functions. - (See CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Fix handling of sub-SELECTs appearing in the arguments of - an outer-level aggregate function (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix hash calculation for data type <type>interval</type> (Tom) - </para> - - <para> - This corrects wrong results for hash joins on interval values. - It also changes the contents of hash indexes on interval columns. - If you have any such indexes, you must <command>REINDEX</command> them - after updating. - </para> - </listitem> - - <listitem> - <para> - Treat <function>to_char(..., 'TH')</function> as an uppercase ordinal - suffix with <literal>'HH'</literal>/<literal>'HH12'</literal> (Heikki) - </para> - - <para> - It was previously handled as <literal>'th'</literal> (lowercase). - </para> - </listitem> - - <listitem> - <para> - Fix overflow for <literal>INTERVAL '<replaceable>x</replaceable> ms'</literal> - when <replaceable>x</replaceable> is more than 2 million and integer - datetimes are in use (Alex Hunsaker) - </para> - </listitem> - - <listitem> - <para> - Fix calculation of distance between a point and a line segment (Tom) - </para> - - <para> - This led to incorrect results from a number of geometric operators. - </para> - </listitem> - - <listitem> - <para> - Fix <type>money</type> data type to work in locales where currency - amounts have no fractional digits, e.g. Japan (Itagaki Takahiro) - </para> - </listitem> - - <listitem> - <para> - Properly round datetime input like - <literal>00:12:57.9999999999999999999999999999</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix poor choice of page split point in GiST R-tree operator classes - (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix portability issues in plperl initialization (Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</application> to not go into an infinite loop if - <filename>postgresql.conf</filename> is empty (Jeff Davis) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</filename>'s <function>xslt_process()</function> to - properly handle the maximum number of parameters (twenty) (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve robustness of <application>libpq</application>'s code to recover - from errors during <command>COPY FROM STDIN</command> (Tom) - </para> - </listitem> - - <listitem> - <para> - Avoid including conflicting readline and editline header files - when both libraries are installed (Zdenek Kotala) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2009l - for DST law changes in Bangladesh, Egypt, Jordan, Pakistan, - Argentina/San_Luis, Cuba, Jordan (historical correction only), - Mauritius, Morocco, Palestine, Syria, Tunisia. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-21"> - <title>Release 8.0.21</title> - - <formalpara> - <title>Release date:</title> - <para>2009-03-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.20. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.21</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent error recursion crashes when encoding conversion fails (Tom) - </para> - - <para> - This change extends fixes made in the last two minor releases for - related failure scenarios. The previous fixes were narrowly tailored - for the original problem reports, but we have now recognized that - <emphasis>any</emphasis> error thrown by an encoding conversion function could - potentially lead to infinite recursion while trying to report the - error. The solution therefore is to disable translation and encoding - conversion and report the plain-ASCII form of any error message, - if we find we have gotten into a recursive error reporting situation. - (CVE-2009-0922) - </para> - </listitem> - - <listitem> - <para> - Disallow <command>CREATE CONVERSION</command> with the wrong encodings - for the specified conversion function (Heikki) - </para> - - <para> - This prevents one possible scenario for encoding conversion failure. - The previous change is a backstop to guard against other kinds of - failures in the same area. - </para> - </listitem> - - <listitem> - <para> - Fix core dump when <function>to_char()</function> is given format codes that - are inappropriate for the type of the data argument (Tom) - </para> - </listitem> - - <listitem> - <para> - Add <literal>MUST</literal> (Mauritius Island Summer Time) to the default list - of known timezone abbreviations (Xavier Bugaud) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-20"> - <title>Release 8.0.20</title> - - <formalpara> - <title>Release date:</title> - <para>2009-02-02</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.19. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.20</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Improve handling of URLs in <function>headline()</function> function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Improve handling of overlength headlines in <function>headline()</function> - function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Prevent possible Assert failure or misconversion if an encoding - conversion is created with the wrong conversion function for the - specified pair of encodings (Tom, Heikki) - </para> - </listitem> - - <listitem> - <para> - Avoid unnecessary locking of small tables in <command>VACUUM</command> - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix uninitialized variables in <filename>contrib/tsearch2</filename>'s - <function>get_covers()</function> function (Teodor) - </para> - </listitem> - - <listitem> - <para> - Make all documentation reference <literal>pgsql-bugs</literal> and/or - <literal>pgsql-hackers</literal> as appropriate, instead of the - now-decommissioned <literal>pgsql-ports</literal> and <literal>pgsql-patches</literal> - mailing lists (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2009a (for - Kathmandu and historical DST corrections in Switzerland, Cuba) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-19"> - <title>Release 8.0.19</title> - - <formalpara> - <title>Release date:</title> - <para>2008-11-03</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.18. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.19</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix backend crash when the client encoding cannot represent a localized - error message (Tom) - </para> - - <para> - We have addressed similar issues before, but it would still fail if - the <quote>character has no equivalent</quote> message itself couldn't - be converted. The fix is to disable localization and send the plain - ASCII error message when we detect such a situation. - </para> - </listitem> - - <listitem> - <para> - Fix possible crash when deeply nested functions are invoked from - a trigger (Tom) - </para> - </listitem> - - <listitem> - <para> - Ensure an error is reported when a newly-defined PL/pgSQL trigger - function is invoked as a normal function (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect tsearch2 headline generation when single query - item matches first word of text (Sushant Sinha) - </para> - </listitem> - - <listitem> - <para> - Fix improper display of fractional seconds in interval values when - using a non-ISO datestyle in an <option>--enable-integer-datetimes</option> - build (Ron Mayer) - </para> - </listitem> - - <listitem> - <para> - Ensure <function>SPI_getvalue</function> and <function>SPI_getbinval</function> - behave correctly when the passed tuple and tuple descriptor have - different numbers of columns (Tom) - </para> - - <para> - This situation is normal when a table has had columns added or removed, - but these two functions didn't handle it properly. - The only likely consequence is an incorrect error indication. - </para> - </listitem> - - <listitem> - <para> - Fix <application>ecpg</application>'s parsing of <command>CREATE USER</command> (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix recent breakage of <literal>pg_ctl restart</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2008i (for - DST law changes in Argentina, Brazil, Mauritius, Syria) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-18"> - <title>Release 8.0.18</title> - - <formalpara> - <title>Release date:</title> - <para>2008-09-22</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.17. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.18</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Widen local lock counters from 32 to 64 bits (Tom) - </para> - - <para> - This responds to reports that the counters could overflow in - sufficiently long transactions, leading to unexpected <quote>lock is - already held</quote> errors. - </para> - </listitem> - - <listitem> - <para> - Add checks in executor startup to ensure that the tuples produced by an - <command>INSERT</command> or <command>UPDATE</command> will match the target table's - current rowtype (Tom) - </para> - - <para> - <command>ALTER COLUMN TYPE</command>, followed by re-use of a previously - cached plan, could produce this type of situation. The check protects - against data corruption and/or crashes that could ensue. - </para> - </listitem> - - <listitem> - <para> - Fix datetime input functions to correctly detect integer overflow when - running on a 64-bit platform (Tom) - </para> - </listitem> - - <listitem> - <para> - Improve performance of writing very long log messages to syslog (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT - ON</literal> query (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner to estimate that <literal>GROUP BY</literal> expressions yielding - boolean results always result in two groups, regardless of the - expressions' contents (Tom) - </para> - - <para> - This is very substantially more accurate than the regular <literal>GROUP - BY</literal> estimate for certain boolean tests like <replaceable>col</replaceable> - <literal>IS NULL</literal>. - </para> - </listitem> - - <listitem> - <para> - Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful - about the encoding of data sent to or from Tcl (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python to work with Python 2.5 - </para> - - <para> - This is a back-port of fixes made during the 8.2 development cycle. - </para> - </listitem> - - <listitem> - <para> - Improve <application>pg_dump</application> and <application>pg_restore</application>'s - error reporting after failure to send a SQL command (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</application> to properly preserve postmaster - command-line arguments across a <literal>restart</literal> (Bruce) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2008f (for - DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, - Pakistan, Palestine, and Paraguay) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-17"> - <title>Release 8.0.17</title> - - <formalpara> - <title>Release date:</title> - <para>2008-06-12</para> - </formalpara> - - <para> - This release contains one serious bug fix over 8.0.16. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.17</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Make <function>pg_get_ruledef()</function> parenthesize negative constants (Tom) - </para> - - <para> - Before this fix, a negative constant in a view or rule might be dumped - as, say, <literal>-42::integer</literal>, which is subtly incorrect: it should - be <literal>(-42)::integer</literal> due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - <productname>PostgreSQL</productname> to reject what had been a valid - <command>SELECT DISTINCT</command> view query. Since this could result in - <application>pg_dump</application> output failing to reload, it is being treated - as a high-priority fix. The only released versions in which dump - output is actually incorrect are 8.3.1 and 8.2.7. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-16"> - <title>Release 8.0.16</title> - - <formalpara> - <title>Release date:</title> - <para>never released</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.15. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.16</title> - - <para> - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</command> so that the new - column is correctly checked to see if it's been initialized to all - non-nulls (Brendan Jurd) - </para> - - <para> - Previous versions neglected to check this requirement at all. - </para> - </listitem> - - <listitem> - <para> - Fix possible <command>CREATE TABLE</command> failure when inheriting the - <quote>same</quote> constraint from multiple parent relations that - inherited that constraint from a common ancestor (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix conversions between ISO-8859-5 and other encodings to handle - Cyrillic <quote>Yo</quote> characters (<literal>e</literal> and <literal>E</literal> with - two dots) (Sergey Burladyan) - </para> - </listitem> - - <listitem> - <para> - Fix a few datatype input functions - that were allowing unused bytes in their results to contain - uninitialized, unpredictable values (Tom) - </para> - - <para> - This could lead to failures in which two apparently identical literal - values were not seen as equal, resulting in the parser complaining - about unmatched <literal>ORDER BY</literal> and <literal>DISTINCT</literal> - expressions. - </para> - </listitem> - - <listitem> - <para> - Fix a corner case in regular-expression substring matching - (<literal>substring(<replaceable>string</replaceable> from - <replaceable>pattern</replaceable>)</literal>) (Tom) - </para> - - <para> - The problem occurs when there is a match to the pattern overall but - the user has specified a parenthesized subexpression and that - subexpression hasn't got a match. An example is - <literal>substring('foo' from 'foo(bar)?')</literal>. - This should return NULL, since <literal>(bar)</literal> isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - <literal>foo</literal>). - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2008c (for - DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, - Argentina/San_Luis, and Chile) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect result from <application>ecpg</application>'s - <function>PGTYPEStimestamp_sub()</function> function (Michael) - </para> - </listitem> - - <listitem> - <para> - Fix core dump in <filename>contrib/xml2</filename>'s - <function>xpath_table()</function> function when the input query returns a - NULL value (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <filename>contrib/xml2</filename>'s makefile to not override - <literal>CFLAGS</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <literal>DatumGetBool</literal> macro to not fail with <application>gcc</application> - 4.3 (Tom) - </para> - - <para> - This problem affects <quote>old style</quote> (V0) C functions that - return boolean. The fix is already in 8.3, but the need to - back-patch it was not realized at the time. - </para> - </listitem> - - <listitem> - <para> - Fix longstanding <command>LISTEN</command>/<command>NOTIFY</command> - race condition (Tom) - </para> - - <para> - In rare cases a session that had just executed a - <command>LISTEN</command> might not get a notification, even though - one would be expected because the concurrent transaction executing - <command>NOTIFY</command> was observed to commit later. - </para> - - <para> - A side effect of the fix is that a transaction that has executed - a not-yet-committed <command>LISTEN</command> command will not see any - row in <structname>pg_listener</structname> for the <command>LISTEN</command>, - should it choose to look; formerly it would have. This behavior - was never documented one way or the other, but it is possible that - some applications depend on the old behavior. - </para> - </listitem> - - <listitem> - <para> - Fix rare crash when an error occurs during a query using a hash index - (Heikki) - </para> - </listitem> - - <listitem> - <para> - Fix input of datetime values for February 29 in years BC (Tom) - </para> - - <para> - The former coding was mistaken about which years were leap years. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>unrecognized node type</quote> error in some variants of - <command>ALTER OWNER</command> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_ctl</application> to correctly extract the postmaster's port - number from command-line options (Itagaki Takahiro, Tom) - </para> - - <para> - Previously, <literal>pg_ctl start -w</literal> could try to contact the - postmaster on the wrong port, leading to bogus reports of startup - failure. - </para> - </listitem> - - <listitem> - <para> - Use <option>-fwrapv</option> to defend against possible misoptimization - in recent <application>gcc</application> versions (Tom) - </para> - - <para> - This is known to be necessary when building <productname>PostgreSQL</productname> - with <application>gcc</application> 4.3 or later. - </para> - </listitem> - - <listitem> - <para> - Fix display of constant expressions in <literal>ORDER BY</literal> - and <literal>GROUP BY</literal> (Tom) - </para> - - <para> - An explicitly casted constant would be shown incorrectly. This could - for example lead to corruption of a view definition during - dump and reload. - </para> - </listitem> - - <listitem> - <para> - Fix <application>libpq</application> to handle NOTICE messages correctly - during COPY OUT (Tom) - </para> - - <para> - This failure has only been observed to occur when a user-defined - datatype's output routine issues a NOTICE, but there is no - guarantee it couldn't happen due to other causes. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-15"> - <title>Release 8.0.15</title> - - <formalpara> - <title>Release date:</title> - <para>2008-01-07</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.14, - including fixes for significant security issues. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <para> - This is the last 8.0.X release for which the <productname>PostgreSQL</productname> - community will produce binary packages for <productname>Windows</productname>. - Windows users are encouraged to move to 8.2.X or later, - since there are Windows-specific fixes in 8.2.X that - are impractical to back-port. 8.0.X will continue to - be supported on other platforms. - </para> - - <sect2> - <title>Migration to Version 8.0.15</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent functions in indexes from executing with the privileges of - the user running <command>VACUUM</command>, <command>ANALYZE</command>, etc (Tom) - </para> - - <para> - Functions used in index expressions and partial-index - predicates are evaluated whenever a new table entry is made. It has - long been understood that this poses a risk of trojan-horse code - execution if one modifies a table owned by an untrustworthy user. - (Note that triggers, defaults, check constraints, etc. pose the - same type of risk.) But functions in indexes pose extra danger - because they will be executed by routine maintenance operations - such as <command>VACUUM FULL</command>, which are commonly performed - automatically under a superuser account. For example, a nefarious user - can execute code with superuser privileges by setting up a - trojan-horse index definition and waiting for the next routine vacuum. - The fix arranges for standard maintenance operations - (including <command>VACUUM</command>, <command>ANALYZE</command>, <command>REINDEX</command>, - and <command>CLUSTER</command>) to execute as the table owner rather than - the calling user, using the same privilege-switching mechanism already - used for <literal>SECURITY DEFINER</literal> functions. To prevent bypassing - this security measure, execution of <command>SET SESSION - AUTHORIZATION</command> and <command>SET ROLE</command> is now forbidden within a - <literal>SECURITY DEFINER</literal> context. (CVE-2007-6600) - </para> - </listitem> - - <listitem> - <para> - Repair assorted bugs in the regular-expression package (Tom, Will Drewry) - </para> - - <para> - Suitably crafted regular-expression patterns could cause crashes, - infinite or near-infinite looping, and/or massive memory consumption, - all of which pose denial-of-service hazards for applications that - accept regex search patterns from untrustworthy sources. - (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</filename> to use only - password authentication, as a security measure (Joe) - </para> - - <para> - The fix that appeared for this in 8.0.14 was incomplete, as it plugged - the hole for only some <filename>dblink</filename> functions. (CVE-2007-6601, - CVE-2007-3278) - </para> - </listitem> - - <listitem> - <para> - Update time zone data files to <application>tzdata</application> release 2007k - (in particular, recent Argentina changes) (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix planner failure in some cases of <literal>WHERE false AND var IN - (SELECT ...)</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Preserve the tablespace of indexes that are - rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</command> (Tom) - </para> - </listitem> - - <listitem> - <para> - Make archive recovery always start a new WAL timeline, rather than only - when a recovery stop time was used (Simon) - </para> - - <para> - This avoids a corner-case risk of trying to overwrite an existing - archived copy of the last WAL segment, and seems simpler and cleaner - than the original definition. - </para> - </listitem> - - <listitem> - <para> - Make <command>VACUUM</command> not use all of <varname>maintenance_work_mem</varname> - when the table is too small for it to be useful (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Fix potential crash in <function>translate()</function> when using a multibyte - database encoding (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix PL/Perl to cope when platform's Perl defines type <literal>bool</literal> - as <literal>int</literal> rather than <literal>char</literal> (Tom) - </para> - - <para> - While this could theoretically happen anywhere, no standard build of - Perl did things this way ... until <productname>macOS</productname> 10.5. - </para> - </listitem> - - <listitem> - <para> - Fix PL/Python to not crash on long exception messages (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Fix <application>pg_dump</application> to correctly handle inheritance child tables - that have default expressions different from their parent's (Tom) - </para> - </listitem> - - <listitem> - <para> - <application>ecpg</application> parser fixes (Michael) - </para> - </listitem> - - <listitem> - <para> - Make <filename>contrib/tablefunc</filename>'s <function>crosstab()</function> handle - NULL rowid as a category in its own right, rather than crashing (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix <type>tsvector</type> and <type>tsquery</type> output routines to - escape backslashes correctly (Teodor, Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix crash of <function>to_tsvector()</function> on huge input strings (Teodor) - </para> - </listitem> - - <listitem> - <para> - Require a specific version of <productname>Autoconf</productname> to be used - when re-generating the <command>configure</command> script (Peter) - </para> - - <para> - This affects developers and packagers only. The change was made - to prevent accidental use of untested combinations of - <productname>Autoconf</productname> and <productname>PostgreSQL</productname> versions. - You can remove the version check if you really want to use a - different <productname>Autoconf</productname> version, but it's - your responsibility whether the result works or not. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-14"> - <title>Release 8.0.14</title> - - <formalpara> - <title>Release date:</title> - <para>2007-09-17</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.13. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.14</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Prevent index corruption when a transaction inserts rows and - then aborts close to the end of a concurrent <command>VACUUM</command> - on the same table (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <command>CREATE DOMAIN ... DEFAULT NULL</command> work properly (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix excessive logging of <acronym>SSL</acronym> error messages (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix logging so that log messages are never interleaved when using - the syslogger process (Andrew) - </para> - </listitem> - - <listitem> - <para> - Fix crash when <varname>log_min_error_statement</varname> logging runs out - of memory (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix incorrect handling of some foreign-key corner cases (Tom) - </para> - </listitem> - - <listitem> - <para> - Prevent <command>CLUSTER</command> from failing - due to attempting to process temporary tables of other sessions (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Update the time zone database rules, particularly New Zealand's upcoming changes (Tom) - </para> - </listitem> - - <listitem> - <para> - Windows socket improvements (Magnus) - </para> - </listitem> - - <listitem> - <para> - Suppress timezone name (<literal>%Z</literal>) in log timestamps on Windows - because of possible encoding mismatches (Tom) - </para> - </listitem> - - <listitem> - <para> - Require non-superusers who use <filename>/contrib/dblink</filename> to use only - password authentication, as a security measure (Joe) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-13"> - <title>Release 8.0.13</title> - - <formalpara> - <title>Release date:</title> - <para>2007-04-23</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.12, - including a security fix. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.13</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Support explicit placement of the temporary-table schema within - <varname>search_path</varname>, and disable searching it for functions - and operators (Tom) - </para> - <para> - This is needed to allow a security-definer function to set a - truly secure value of <varname>search_path</varname>. Without it, - an unprivileged SQL user can use temporary objects to execute code - with the privileges of the security-definer function (CVE-2007-2138). - See <command>CREATE FUNCTION</command> for more information. - </para> - </listitem> - - <listitem> - <para> - <filename>/contrib/tsearch2</filename> crash fixes (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix potential-data-corruption bug in how <command>VACUUM FULL</command> handles - <command>UPDATE</command> chains (Tom, Pavan Deolasee) - </para> - </listitem> - - <listitem> - <para> - Fix PANIC during enlargement of a hash index (bug introduced in 8.0.10) - (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix POSIX-style timezone specs to follow new USA DST rules (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-12"> - <title>Release 8.0.12</title> - - <formalpara> - <title>Release date:</title> - <para>2007-02-07</para> - </formalpara> - - <para> - This release contains one fix from 8.0.11. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.12</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Remove overly-restrictive check for type length in constraints and - functional indexes(Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-11"> - <title>Release 8.0.11</title> - - <formalpara> - <title>Release date:</title> - <para>2007-02-05</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.10, including - a security fix. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.11</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Remove security vulnerabilities that allowed connected users - to read backend memory (Tom) - </para> - <para> - The vulnerabilities involve suppressing the normal check that a SQL - function returns the data type it's declared to, and changing the - data type of a table column (CVE-2007-0555, CVE-2007-0556). These - errors can easily be exploited to cause a backend crash, and in - principle might be used to read database content that the user - should not be able to access. - </para> - </listitem> - - <listitem> - <para> - Fix rare bug wherein btree index page splits could fail - due to choosing an infeasible split point (Heikki Linnakangas) - </para> - </listitem> - - <listitem> - <para> - Fix for rare Assert() crash triggered by <literal>UNION</literal> (Tom) - </para> - </listitem> - - <listitem> - <para> - Tighten security of multi-byte character processing for UTF8 sequences - over three bytes long (Tom) - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-10"> - <title>Release 8.0.10</title> - - <formalpara> - <title>Release date:</title> - <para>2007-01-08</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.9. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.10</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - - <itemizedlist> - - <listitem> - <para> - Improve handling of <function>getaddrinfo()</function> on AIX (Tom) - </para> - - <para> - This fixes a problem with starting the statistics collector, - among other things. - </para> - </listitem> - - <listitem> - <para> - Fix <quote>failed to re-find parent key</quote> errors in - <command>VACUUM</command> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix race condition for truncation of a large relation across a - gigabyte boundary by <command>VACUUM</command> (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix bugs affecting multi-gigabyte hash indexes (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix possible deadlock in Windows signal handling (Teodor) - </para> - </listitem> - - <listitem> - <para> - Fix error when constructing an <literal>ARRAY[]</literal> made up of multiple - empty elements (Tom) - </para> - </listitem> - - <listitem> - <para> - Fix ecpg memory leak during connection (Michael) - </para> - </listitem> - - <listitem> - <para> - <function>to_number()</function> and <function>to_char(numeric)</function> - are now <literal>STABLE</literal>, not <literal>IMMUTABLE</literal>, for - new <application>initdb</application> installs (Tom) - </para> - - <para> - This is because <varname>lc_numeric</varname> can potentially - change the output of these functions. - </para> - </listitem> - - <listitem> - <para> - Improve index usage of regular expressions that use parentheses (Tom) - </para> - - <para> - This improves <application>psql</application> <literal>\d</literal> performance also. - </para> - </listitem> - - <listitem> - <para> - Update timezone database - </para> - - <para> - This affects Australian and Canadian daylight-savings rules in - particular. - </para> - </listitem> - - </itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-9"> - <title>Release 8.0.9</title> - - <formalpara> - <title>Release date:</title> - <para>2006-10-16</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.8. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.9</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Fix crash when referencing <literal>NEW</literal> row -values in rule WHERE expressions (Tom)</para></listitem> -<listitem><para>Fix core dump when an untyped literal is taken as -ANYARRAY</para></listitem> -<listitem><para>Fix mishandling of AFTER triggers when query contains a SQL -function returning multiple rows (Tom)</para></listitem> -<listitem><para>Fix <command>ALTER TABLE ... TYPE</command> to recheck -<literal>NOT NULL</literal> for <literal>USING</literal> clause (Tom)</para></listitem> -<listitem><para>Fix <function>string_to_array()</function> to handle overlapping - matches for the separator string</para> -<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</literal>. -</para></listitem> -<listitem><para>Fix corner cases in pattern matching for - <application>psql</application>'s <literal>\d</literal> commands</para></listitem> -<listitem><para>Fix index-corrupting bugs in /contrib/ltree - (Teodor)</para></listitem> -<listitem><para>Numerous robustness fixes in <application>ecpg</application> (Joachim -Wieland)</para></listitem> -<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem> -<listitem><para>Fix instability of statistics collection on Win32 (Tom, Andrew)</para></listitem> -<listitem><para>Fixes for <systemitem class="osname">AIX</systemitem> and -<productname>Intel</productname> compilers (Tom)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-8"> - <title>Release 8.0.8</title> - - <formalpara> - <title>Release date:</title> - <para>2006-05-23</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.7, - including patches for extremely serious security issues. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.8</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - - <para> - Full security against the SQL-injection attacks described in - CVE-2006-2313 and CVE-2006-2314 might require changes in application - code. If you have applications that embed untrustworthy strings - into SQL commands, you should examine them as soon as possible to - ensure that they are using recommended escaping techniques. In - most cases, applications should be using subroutines provided by - libraries or drivers (such as <application>libpq</application>'s - <function>PQescapeStringConn()</function>) to perform string escaping, - rather than relying on <foreignphrase>ad hoc</foreignphrase> code to do it. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Change the server to reject invalidly-encoded multibyte -characters in all cases (Tatsuo, Tom)</para> -<para>While <productname>PostgreSQL</productname> has been moving in this direction for -some time, the checks are now applied uniformly to all encodings and all -textual input, and are now always errors not merely warnings. This change -defends against SQL-injection attacks of the type described in CVE-2006-2313. -</para></listitem> - -<listitem><para>Reject unsafe uses of <literal>\'</literal> in string literals</para> -<para>As a server-side defense against SQL-injection attacks of the type -described in CVE-2006-2314, the server now only accepts <literal>''</literal> and not -<literal>\'</literal> as a representation of ASCII single quote in SQL string -literals. By default, <literal>\'</literal> is rejected only when -<varname>client_encoding</varname> is set to a client-only encoding (SJIS, BIG5, GBK, -GB18030, or UHC), which is the scenario in which SQL injection is possible. -A new configuration parameter <varname>backslash_quote</varname> is available to -adjust this behavior when needed. Note that full security against -CVE-2006-2314 might require client-side changes; the purpose of -<varname>backslash_quote</varname> is in part to make it obvious that insecure -clients are insecure. -</para></listitem> - -<listitem><para>Modify <application>libpq</application>'s string-escaping routines to be -aware of encoding considerations and -<varname>standard_conforming_strings</varname></para> -<para>This fixes <application>libpq</application>-using applications for the security -issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs -them against the planned changeover to SQL-standard string literal syntax. -Applications that use multiple <productname>PostgreSQL</productname> connections -concurrently should migrate to <function>PQescapeStringConn()</function> and -<function>PQescapeByteaConn()</function> to ensure that escaping is done correctly -for the settings in use in each database connection. Applications that -do string escaping <quote>by hand</quote> should be modified to rely on library -routines instead. -</para></listitem> - -<listitem><para>Fix some incorrect encoding conversion functions</para> -<para><function>win1251_to_iso</function>, <function>alt_to_iso</function>, -<function>euc_tw_to_big5</function>, <function>euc_tw_to_mic</function>, -<function>mic_to_euc_tw</function> were all broken to varying -extents. -</para></listitem> - -<listitem><para>Clean up stray remaining uses of <literal>\'</literal> in strings -(Bruce, Jan)</para></listitem> - -<listitem><para>Fix bug that sometimes caused OR'd index scans to -miss rows they should have returned</para></listitem> - -<listitem><para>Fix WAL replay for case where a btree index has been -truncated</para></listitem> - -<listitem><para>Fix <literal>SIMILAR TO</literal> for patterns involving -<literal>|</literal> (Tom)</para></listitem> - -<listitem><para>Fix <command>SELECT INTO</command> and <command>CREATE TABLE AS</command> to -create tables in the default tablespace, not the base directory (Kris -Jurka)</para></listitem> - -<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael -Fuhr)</para></listitem> - -<listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)</para></listitem> - -<listitem><para>Fix various minor memory leaks</para></listitem> - -<listitem><para>Fix problem with password prompting on some Win32 systems -(Robert Kinberg)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-7"> - <title>Release 8.0.7</title> - - <formalpara> - <title>Release date:</title> - <para>2006-02-14</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.6. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.7</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, - see <xref linkend="release-8-0-6"/>. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> - -<listitem><para>Fix potential crash in <command>SET -SESSION AUTHORIZATION</command> (CVE-2006-0553)</para> -<para>An unprivileged user could crash the server process, resulting in -momentary denial of service to other users, if the server has been compiled -with Asserts enabled (which is not the default). -Thanks to Akio Ishida for reporting this problem. -</para></listitem> - -<listitem><para>Fix bug with row visibility logic in self-inserted -rows (Tom)</para> -<para>Under rare circumstances a row inserted by the current command -could be seen as already valid, when it should not be. Repairs bug -created in 8.0.4, 7.4.9, and 7.3.11 releases. -</para></listitem> - -<listitem><para>Fix race condition that could lead to <quote>file already -exists</quote> errors during pg_clog and pg_subtrans file creation -(Tom)</para></listitem> - -<listitem><para>Fix cases that could lead to crashes if a cache-invalidation -message arrives at just the wrong time (Tom)</para></listitem> - -<listitem><para>Properly check <literal>DOMAIN</literal> constraints for -<literal>UNKNOWN</literal> parameters in prepared statements -(Neil)</para></listitem> - -<listitem><para>Ensure <command>ALTER COLUMN TYPE</command> will process -<literal>FOREIGN KEY</literal>, <literal>UNIQUE</literal>, and <literal>PRIMARY KEY</literal> -constraints in the proper order (Nakano Yoshihisa)</para></listitem> - -<listitem><para>Fixes to allow restoring dumps that have cross-schema -references to custom operators or operator classes (Tom)</para></listitem> - -<listitem><para>Allow <application>pg_restore</application> to continue properly after a -<command>COPY</command> failure; formerly it tried to treat the remaining -<command>COPY</command> data as SQL commands (Stephen Frost)</para></listitem> - -<listitem><para>Fix <application>pg_ctl</application> <literal>unregister</literal> crash -when the data directory is not specified (Magnus)</para></listitem> - -<listitem><para>Fix <application>ecpg</application> crash on AMD64 and PPC -(Neil)</para></listitem> - -<listitem><para>Recover properly if error occurs during argument passing -in <application>PL/Python</application> (Neil)</para></listitem> - -<listitem><para>Fix <application>PL/Perl</application>'s handling of locales on -Win32 to match the backend (Andrew)</para></listitem> - -<listitem><para>Fix crash when <literal>log_min_messages</literal> is set to -<literal>DEBUG3</literal> or above in <filename>postgresql.conf</filename> on Win32 -(Bruce)</para></listitem> - -<listitem><para>Fix <application>pgxs</application> <literal>-L</literal> library path -specification for Win32, Cygwin, macOS, AIX (Bruce)</para></listitem> - -<listitem><para>Check that SID is enabled while checking for Win32 admin -privileges (Magnus)</para></listitem> - -<listitem><para>Properly reject out-of-range date inputs (Kris -Jurka)</para></listitem> - -<listitem><para>Portability fix for testing presence of <function>finite</function> -and <function>isinf</function> during configure (Tom)</para></listitem> - -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-6"> - <title>Release 8.0.6</title> - - <formalpara> - <title>Release date:</title> - <para>2006-01-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.5. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.6</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, - see <xref linkend="release-8-0-3"/>. - Also, you might need to <command>REINDEX</command> indexes on textual - columns after updating, if you are affected by the locale or - <application>plperl</application> issues described below. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> - -<listitem><para>Fix Windows code so that postmaster will continue rather -than exit if there is no more room in ShmemBackendArray (Magnus)</para> -<para>The previous behavior could lead to a denial-of-service situation if too -many connection requests arrive close together. This applies -<emphasis>only</emphasis> to the Windows port.</para></listitem> - -<listitem><para>Fix bug introduced in 8.0 that could allow ReadBuffer -to return an already-used page as new, potentially causing loss of -recently-committed data (Tom)</para></listitem> - -<listitem><para>Fix for protocol-level Describe messages issued -outside a transaction or in a failed transaction (Tom)</para></listitem> - -<listitem><para>Fix character string comparison for locales that consider -different character combinations as equal, such as Hungarian (Tom)</para> -<para>This might require <command>REINDEX</command> to fix existing indexes on -textual columns.</para></listitem> - -<listitem><para>Set locale environment variables during postmaster startup -to ensure that <application>plperl</application> won't change the locale later</para> -<para>This fixes a problem that occurred if the <application>postmaster</application> was -started with environment variables specifying a different locale than what -<application>initdb</application> had been told. Under these conditions, any use of -<application>plperl</application> was likely to lead to corrupt indexes. You might need -<command>REINDEX</command> to fix existing indexes on -textual columns if this has happened to you.</para></listitem> - -<listitem><para>Allow more flexible relocation of installation -directories (Tom)</para> -<para>Previous releases supported relocation only if all installation -directory paths were the same except for the last component.</para></listitem> - -<listitem><para>Fix longstanding bug in strpos() and regular expression -handling in certain rarely used Asian multi-byte character sets (Tatsuo) -</para></listitem> - -<listitem><para>Various fixes for functions returning <literal>RECORD</literal>s -(Tom) </para></listitem> - -<listitem><para>Fix bug in <filename>/contrib/pgcrypto</filename> gen_salt, -which caused it not to use all available salt space for MD5 and -XDES algorithms (Marko Kreen, Solar Designer)</para> -<para>Salts for Blowfish and standard DES are unaffected.</para></listitem> - -<listitem><para>Fix <filename>/contrib/dblink</filename> to throw an error, -rather than crashing, when the number of columns specified is different from -what's actually returned by the query (Joe)</para></listitem> - -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-5"> - <title>Release 8.0.5</title> - - <formalpara> - <title>Release date:</title> - <para>2005-12-12</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.4. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.5</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, - see <xref linkend="release-8-0-3"/>. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> - -<listitem><para>Fix race condition in transaction log management</para> -<para>There was a narrow window in which an I/O operation could be initiated -for the wrong page, leading to an Assert failure or data -corruption.</para> -</listitem> - -<listitem><para>Fix bgwriter problems after recovering from errors -(Tom)</para> -<para> -The background writer was found to leak buffer pins after write errors. -While not fatal in itself, this might lead to mysterious blockages of -later VACUUM commands. -</para> -</listitem> - -<listitem><para>Prevent failure if client sends Bind protocol message -when current transaction is already aborted</para></listitem> - -<listitem><para><filename>/contrib/ltree</filename> fixes (Teodor)</para></listitem> - -<listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem> - -<listitem><para>Retry file reads and writes after Windows -NO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem> - -<listitem><para>Fix intermittent failure when <varname>log_line_prefix</varname> -includes <literal>%i</literal></para></listitem> - -<listitem><para>Fix <application>psql</application> performance issue with long scripts -on Windows (Merlin Moncure)</para></listitem> - -<listitem><para>Fix missing updates of <filename>pg_group</filename> flat -file</para></listitem> - -<listitem><para>Fix longstanding planning error for outer joins</para> -<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is -only supported with merge-joinable join conditions</quote>.</para></listitem> - -<listitem><para>Postpone timezone initialization until after -<filename>postmaster.pid</filename> is created</para> -<para>This avoids confusing startup scripts that expect the pid file to appear -quickly.</para></listitem> - -<listitem><para>Prevent core dump in <application>pg_autovacuum</application> when a -table has been dropped</para></listitem> - -<listitem><para>Fix problems with whole-row references (<literal>foo.*</literal>) -to subquery results</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-4"> - <title>Release 8.0.4</title> - - <formalpara> - <title>Release date:</title> - <para>2005-10-04</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.3. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.4</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, - see <xref linkend="release-8-0-3"/>. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Fix error that allowed <command>VACUUM</command> to remove -<literal>ctid</literal> chains too soon, and add more checking in code that follows -<literal>ctid</literal> links</para> -<para>This fixes a long-standing problem that could cause crashes in very rare -circumstances.</para></listitem> -<listitem><para>Fix <type>CHAR()</type> to properly pad spaces to the specified -length when using a multiple-byte character set (Yoshiyuki Asaba)</para> -<para>In prior releases, the padding of <type>CHAR()</type> was incorrect -because it only padded to the specified number of bytes without -considering how many characters were stored.</para></listitem> -<listitem><para>Force a checkpoint before committing <command>CREATE -DATABASE</command></para> -<para>This should fix recent reports of <quote>index is not a btree</quote> -failures when a crash occurs shortly after <command>CREATE -DATABASE</command>.</para></listitem> -<listitem><para>Fix the sense of the test for read-only transaction -in <command>COPY</command></para> -<para>The code formerly prohibited <command>COPY TO</command>, where it should -prohibit <command>COPY FROM</command>. -</para></listitem> -<listitem><para>Handle consecutive embedded newlines in <command>COPY</command> -CSV-mode input</para></listitem> -<listitem><para>Fix <function>date_trunc(week)</function> for dates near year -end</para></listitem> -<listitem><para>Fix planning problem with outer-join ON clauses that reference -only the inner-side relation</para></listitem> -<listitem><para>Further fixes for <literal>x FULL JOIN y ON true</literal> corner -cases</para></listitem> -<listitem><para>Fix overenthusiastic optimization of <literal>x IN (SELECT -DISTINCT ...)</literal> and related cases</para></listitem> -<listitem><para>Fix mis-planning of queries with small <literal>LIMIT</literal> -values due to poorly thought out <quote>fuzzy</quote> cost -comparison</para></listitem> -<listitem><para>Make <function>array_in</function> and <function>array_recv</function> more -paranoid about validating their OID parameter</para></listitem> -<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE -a...</literal> with GiST index on column <literal>a</literal></para></listitem> -<listitem><para>Improve robustness of datetime parsing</para></listitem> -<listitem><para>Improve checking for partially-written WAL -pages</para></listitem> -<listitem><para>Improve robustness of signal handling when SSL is -enabled</para></listitem> -<listitem><para>Improve MIPS and M68K spinlock code</para></listitem> -<listitem><para>Don't try to open more than <literal>max_files_per_process</literal> -files during postmaster startup</para></listitem> -<listitem><para>Various memory leakage fixes</para></listitem> -<listitem><para>Various portability improvements</para></listitem> -<listitem><para>Update timezone data files</para></listitem> -<listitem><para>Improve handling of DLL load failures on Windows</para></listitem> -<listitem><para>Improve random-number generation on Windows</para></listitem> -<listitem><para>Make <literal>psql -f filename</literal> return a nonzero exit code -when opening the file fails</para></listitem> -<listitem><para>Change <application>pg_dump</application> to handle inherited check -constraints more reliably</para></listitem> -<listitem><para>Fix password prompting in <application>pg_restore</application> on -Windows</para></listitem> -<listitem><para>Fix PL/pgSQL to handle <literal>var := var</literal> correctly when -the variable is of pass-by-reference type</para></listitem> -<listitem><para>Fix PL/Perl <literal>%_SHARED</literal> so it's actually -shared</para></listitem> -<listitem><para>Fix <filename>contrib/pg_autovacuum</filename> to allow sleep -intervals over 2000 sec</para></listitem> -<listitem><para>Update <filename>contrib/tsearch2</filename> to use current Snowball -code</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-3"> - <title>Release 8.0.3</title> - - <formalpara> - <title>Release date:</title> - <para>2005-05-09</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.2, including several - security-related issues. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.3</title> - - <para> - A dump/restore is not required for those running 8.0.X. However, - it is one possible way of handling two significant security problems - that have been found in the initial contents of 8.0.X system - catalogs. A dump/initdb/reload sequence using 8.0.3's initdb will - automatically correct these problems. - </para> - - <para> - The larger security problem is that the built-in character set encoding - conversion functions can be invoked from SQL commands by unprivileged - users, but the functions were not designed for such use and are not - secure against malicious choices of arguments. The fix involves changing - the declared parameter list of these functions so that they can no longer - be invoked from SQL commands. (This does not affect their normal use - by the encoding conversion machinery.) - </para> - - <para> - The lesser problem is that the <filename>contrib/tsearch2</filename> module - creates several functions that are improperly declared to return - <type>internal</type> when they do not accept <type>internal</type> arguments. - This breaks type safety for all functions using <type>internal</type> - arguments. - </para> - - <para> - It is strongly recommended that all installations repair these errors, - either by initdb or by following the manual repair procedure given - below. The errors at least allow unprivileged database users to crash - their server process, and might allow unprivileged users to gain the - privileges of a database superuser. - </para> - - <para> - If you wish not to do an initdb, perform the same manual repair - procedures shown in the <link linkend="release-7-4-8">7.4.8 release - notes</link>. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Change encoding function signature to prevent -misuse</para></listitem> -<listitem><para>Change <filename>contrib/tsearch2</filename> to avoid unsafe use of -<type>INTERNAL</type> function results</para></listitem> -<listitem><para>Guard against incorrect second parameter to -<function>record_out</function></para></listitem> -<listitem><para>Repair ancient race condition that allowed a transaction to be -seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner -than for other purposes</para> -<para>This is an extremely serious bug since it could lead to apparent -data inconsistencies being briefly visible to applications.</para></listitem> -<listitem><para>Repair race condition between relation extension and -VACUUM</para> -<para>This could theoretically have caused loss of a page's worth of -freshly-inserted data, although the scenario seems of very low probability. -There are no known cases of it having caused more than an Assert failure. -</para></listitem> -<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</type> values</para> -<para> -The comparison code was wrong in the case where the -<literal>--enable-integer-datetimes</literal> configuration switch had been used. -NOTE: if you have an index on a <type>TIME WITH TIME ZONE</type> column, -it will need to be <command>REINDEX</command>ed after installing this update, because -the fix corrects the sort order of column values. -</para></listitem> -<listitem><para>Fix <function>EXTRACT(EPOCH)</function> for -<type>TIME WITH TIME ZONE</type> values</para></listitem> -<listitem><para>Fix mis-display of negative fractional seconds in -<type>INTERVAL</type> values</para> -<para> -This error only occurred when the -<literal>--enable-integer-datetimes</literal> configuration switch had been used. -</para></listitem> -<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</literal> -correctly (Neil)</para></listitem> -<listitem><para>Still more 64-bit fixes for -<filename>contrib/intagg</filename></para></listitem> -<listitem><para>Prevent incorrect optimization of functions returning -<type>RECORD</type></para></listitem> -<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</literal></para></listitem> -<listitem><para>Fix Borland makefile for libpq</para></listitem> -<listitem><para>Fix <filename>contrib/btree_gist</filename> for <type>timetz</type> type -(Teodor)</para></listitem> -<listitem><para>Make <command>pg_ctl</command> check the PID found in -<filename>postmaster.pid</filename> to see if it is still a live -process</para></listitem> -<listitem><para>Fix <command>pg_dump</command>/<command>pg_restore</command> problems caused -by addition of dump timestamps</para></listitem> -<listitem><para>Fix interaction between materializing holdable cursors and -firing deferred triggers during transaction commit</para></listitem> -<listitem><para>Fix memory leak in SQL functions returning pass-by-reference -data types</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-2"> - <title>Release 8.0.2</title> - - <formalpara> - <title>Release date:</title> - <para>2005-04-07</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.1. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.2</title> - - <para> - A dump/restore is not required for those running 8.0.*. - This release updates the major version number of the - <productname>PostgreSQL</productname> libraries, so it might be - necessary to re-link some user applications if they cannot - find the properly-numbered shared library. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Increment the major version number of all interface -libraries (Bruce)</para> -<para> -This should have been done in 8.0.0. It is required so 7.4.X versions -of PostgreSQL client applications, like <application>psql</application>, -can be used on the same machine as 8.0.X applications. This might require -re-linking user applications that use these libraries. -</para></listitem> -<listitem><para>Add Windows-only <varname>wal_sync_method</varname> setting of -<option>fsync_writethrough</option> (Magnus, Bruce)</para> -<para> -This setting causes <productname>PostgreSQL</productname> to write through -any disk-drive write cache when writing to WAL. -This behavior was formerly called <option>fsync</option>, but was -renamed because it acts quite differently from <option>fsync</option> on other -platforms. -</para> -</listitem> -<listitem><para>Enable the <varname>wal_sync_method</varname> setting of -<option>open_datasync</option> on Windows, and make it the default for that - platform (Magnus, Bruce)</para> -<para> -Because the default is no longer <option>fsync_writethrough</option>, -data loss is possible during a power failure if the disk drive has -write caching enabled. To turn off the write cache on Windows, -from the <application>Device Manager</application>, choose the drive properties, -then <literal>Policies</literal>. -</para> -</listitem> -<listitem><para>New cache management algorithm <acronym>2Q</acronym> replaces -<acronym>ARC</acronym> (Tom)</para> -<para> -This was done to avoid a pending US patent on <acronym>ARC</acronym>. The -<acronym>2Q</acronym> code might be a few percentage points slower than -<acronym>ARC</acronym> for some work loads. A better cache management algorithm -will appear in 8.1. -</para></listitem> -<listitem><para>Planner adjustments to improve behavior on freshly-created -tables (Tom)</para></listitem> -<listitem><para>Allow plpgsql to assign to an element of an array that is -initially <literal>NULL</literal> (Tom)</para> -<para> -Formerly the array would remain <literal>NULL</literal>, but now it becomes a -single-element array. The main SQL engine was changed to handle -<command>UPDATE</command> of a null array value this way in 8.0, but the similar -case in plpgsql was overlooked. -</para> -</listitem> -<listitem><para>Convert <literal>\r\n</literal> and <literal>\r</literal> to <literal>\n</literal> -in plpython function bodies (Michael Fuhr)</para> -<para> - This prevents syntax errors when plpython code is written on a Windows or - Mac client. -</para> -</listitem> -<listitem><para>Allow SPI cursors to handle utility commands that return rows, -such as <command>EXPLAIN</command> (Tom)</para></listitem> -<listitem><para>Fix <command>CLUSTER</command> failure after <command>ALTER TABLE -SET WITHOUT OIDS</command> (Tom)</para></listitem> -<listitem><para>Reduce memory usage of <command>ALTER TABLE ADD COLUMN</command> -(Neil)</para></listitem> -<listitem><para>Fix <command>ALTER LANGUAGE RENAME</command> (Tom)</para></listitem> -<listitem><para>Document the Windows-only <literal>register</literal> and -<literal>unregister</literal> options of <application>pg_ctl</application> (Magnus)</para></listitem> -<listitem><para>Ensure operations done during backend shutdown are counted by -statistics collector</para> -<para> -This is expected to resolve reports of <application>pg_autovacuum</application> -not vacuuming the system catalogs often enough — it was not being -told about catalog deletions caused by temporary table removal during -backend exit. -</para></listitem> -<listitem><para>Change the Windows default for configuration parameter -<varname>log_destination</varname> to <option>eventlog</option> (Magnus)</para> -<para> -By default, a server running on Windows will now send log output to the -Windows event logger rather than standard error. -</para></listitem> -<listitem><para>Make Kerberos authentication work on Windows (Magnus)</para></listitem> -<listitem><para>Allow <command>ALTER DATABASE RENAME</command> by superusers -who aren't flagged as having CREATEDB privilege (Tom)</para></listitem> -<listitem><para>Modify WAL log entries for <command>CREATE</command> and -<command>DROP DATABASE</command> to not specify absolute paths (Tom)</para> -<para>This allows point-in-time recovery on a different machine with possibly -different database location. Note that <command>CREATE TABLESPACE</command> still -poses a hazard in such situations. -</para></listitem> -<listitem><para>Fix crash from a backend exiting with an open transaction -that created a table and opened a cursor on it (Tom)</para></listitem> -<listitem><para>Fix <function>array_map()</function> so it can call PL functions -(Tom)</para></listitem> -<listitem><para>Several <filename>contrib/tsearch2</filename> and -<filename>contrib/btree_gist</filename> fixes (Teodor) -</para></listitem> -<listitem><para>Fix crash of some <filename>contrib/pgcrypto</filename> -functions on some platforms (Marko Kreen)</para></listitem> -<listitem><para>Fix <filename>contrib/intagg</filename> for 64-bit platforms -(Tom)</para></listitem> -<listitem><para>Fix ecpg bugs in parsing of <command>CREATE</command> statement -(Michael)</para></listitem> -<listitem><para>Work around gcc bug on powerpc and amd64 causing problems in -ecpg (Christof Petig)</para></listitem> -<listitem><para>Do not use locale-aware versions of <function>upper()</function>, -<function>lower()</function>, and <function>initcap()</function> when the locale is -<literal>C</literal> (Bruce)</para> -<para> - This allows these functions to work on platforms that generate errors - for non-7-bit data when the locale is <literal>C</literal>. -</para></listitem> -<listitem><para>Fix <function>quote_ident()</function> to quote names that match keywords (Tom)</para></listitem> -<listitem><para>Fix <function>to_date()</function> to behave reasonably when -<literal>CC</literal> and <literal>YY</literal> fields are both used (Karel)</para></listitem> -<listitem><para>Prevent <function>to_char(interval)</function> from failing -when given a zero-month interval (Tom)</para></listitem> -<listitem><para>Fix wrong week returned by <function>date_trunc('week')</function> -(Bruce)</para> -<para> -<function>date_trunc('week')</function> -returned the wrong year for the first few days of January in some years. -</para></listitem> -<listitem><para>Use the correct default mask length for class <literal>D</literal> -addresses in <type>INET</type> data types (Tom)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0-1"> - <title>Release 8.0.1</title> - - <formalpara> - <title>Release date:</title> - <para>2005-01-31</para> - </formalpara> - - <para> - This release contains a variety of fixes from 8.0.0, including several - security-related issues. - For information about new features in the 8.0 major release, see - <xref linkend="release-8-0"/>. - </para> - - <sect2> - <title>Migration to Version 8.0.1</title> - - <para> - A dump/restore is not required for those running 8.0.0. - </para> - </sect2> - - <sect2> - <title>Changes</title> - -<itemizedlist> -<listitem><para>Disallow <command>LOAD</command> to non-superusers</para> -<para> -On platforms that will automatically execute initialization functions of a -shared library (this includes at least Windows and ELF-based Unixen), -<command>LOAD</command> can be used to make the server execute arbitrary code. -Thanks to NGS Software for reporting this.</para></listitem> -<listitem><para>Check that creator of an aggregate function has the right to -execute the specified transition functions</para> -<para> -This oversight made it possible to bypass denial of EXECUTE -permission on a function.</para></listitem> -<listitem><para>Fix security and 64-bit issues in -contrib/intagg</para></listitem> -<listitem><para>Add needed STRICT marking to some contrib functions (Kris -Jurka)</para></listitem> -<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too -many parameters (Neil)</para></listitem> -<listitem><para>Make <command>ALTER TABLE ADD COLUMN</command> enforce domain -constraints in all cases</para></listitem> -<listitem><para>Fix planning error for FULL and RIGHT outer joins</para> -<para> -The result of the join was mistakenly supposed to be sorted the same as the -left input. This could not only deliver mis-sorted output to the user, but -in case of nested merge joins could give outright wrong answers. -</para></listitem> -<listitem><para>Improve planning of grouped aggregate queries</para></listitem> -<listitem><para><command>ROLLBACK TO <replaceable>savepoint</replaceable></command> -closes cursors created since the savepoint</para></listitem> -<listitem><para>Fix inadequate backend stack size on Windows</para></listitem> -<listitem><para>Avoid SHGetSpecialFolderPath() on Windows -(Magnus)</para></listitem> -<listitem><para>Fix some problems in running pg_autovacuum as a Windows -service (Dave Page)</para></listitem> -<listitem><para>Multiple minor bug fixes in -pg_dump/pg_restore</para></listitem> -<listitem><para>Fix ecpg segfault with named structs used in -typedefs (Michael)</para></listitem> -</itemizedlist> - - </sect2> - </sect1> - - <sect1 id="release-8-0"> - <title>Release 8.0</title> - - <formalpara> - <title>Release date:</title> - <para>2005-01-19</para> - </formalpara> - - <sect2> - <title>Overview</title> - - <para> - Major changes in this release: - </para> - - <variablelist> - <varlistentry> - <term> - Microsoft Windows Native Server - </term> - - <listitem> - <para> - This is the first <productname>PostgreSQL</productname> release - to run natively on <trademark class="registered">Microsoft Windows</trademark> as - a server. It can run as a <productname>Windows</productname> service. This - release supports NT-based Windows releases like - <productname>Windows 2000 SP4</productname>, <productname>Windows XP</productname>, and - <productname>Windows 2003</productname>. Older releases like - <productname>Windows 95</productname>, <productname>Windows 98</productname>, and - <productname>Windows ME</productname> are not supported because these operating - systems do not have the infrastructure to support - <productname>PostgreSQL</productname>. A separate installer - project has been created to ease installation on - <productname>Windows</productname> — see <ulink - url="http://www.postgresql.org/ftp/win32/"></ulink>. - </para> - - <para> - Although tested throughout our release cycle, the Windows port - does not have the benefit of years of use in production - environments that <productname>PostgreSQL</productname> has on - Unix platforms. Therefore it should be treated with the same - level of caution as you would a new product. - </para> - - <para> - Previous releases required the Unix emulation toolkit - <productname>Cygwin</productname> in order to run the server on Windows - operating systems. <productname>PostgreSQL</productname> has - supported native clients on Windows for many years. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Savepoints - </term> - - <listitem> - <para> - Savepoints allow specific parts of a transaction to be aborted - without affecting the remainder of the transaction. Prior - releases had no such capability; there was no way to recover - from a statement failure within a transaction except by - aborting the whole transaction. This feature is valuable for - application writers who require error recovery within a - complex transaction. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Point-In-Time Recovery - </term> - - <listitem> - <para> - In previous releases there was no way to recover from disk - drive failure except to restore from a previous backup or use - a standby replication server. Point-in-time recovery allows - continuous backup of the server. You can recover either to - the point of failure or to some transaction in the past. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Tablespaces - </term> - - <listitem> - <para> - Tablespaces allow administrators to select different file systems - for storage of individual tables, indexes, and databases. - This improves performance and control over disk space - usage. Prior releases used <application>initlocation</application> and - manual symlink management for such tasks. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Improved Buffer Management, <command>CHECKPOINT</command>, - <command>VACUUM</command> - </term> - - <listitem> - <para> - This release has a more intelligent buffer replacement strategy, - which will make better use of available shared buffers and - improve performance. The performance impact of vacuum and - checkpoints is also lessened. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Change Column Types - </term> - - <listitem> - <para> - A column's data type can now be changed with <command>ALTER - TABLE</command>. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - New Perl Server-Side Language - </term> - - <listitem> - <para> - A new version of the <application>plperl</application> server-side language now - supports a persistent shared storage area, triggers, returning records - and arrays of records, and SPI calls to access the database. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Comma-separated-value (CSV) support in <command>COPY</command> - </term> - - <listitem> - <para> - <command>COPY</command> can now read and write - comma-separated-value files. It has the flexibility to - interpret nonstandard quoting and separation characters too. - </para> - </listitem> - </varlistentry> - - </variablelist> - </sect2> - - <sect2> - <title>Migration to Version 8.0</title> - - <para> - A dump/restore using <application>pg_dump</application> is - required for those wishing to migrate data from any previous - release. - </para> - - <para> - Observe the following incompatibilities: - </para> - - <itemizedlist> - - <listitem> - <para> - In <option>READ COMMITTED</option> serialization mode, volatile functions - now see the results of concurrent transactions committed up to the - beginning of each statement within the function, rather than up to the - beginning of the interactive command that called the function. - </para> - </listitem> - - <listitem> - <para> - Functions declared <option>STABLE</option> or <option>IMMUTABLE</option> always - use the snapshot of the calling query, and therefore do not see the - effects of actions taken after the calling query starts, whether in - their own transaction or other transactions. Such a function must be - read-only, too, meaning that it cannot use any SQL commands other than - <command>SELECT</command>. - </para> - </listitem> - - <listitem> - <para> - Nondeferred <option>AFTER</option> triggers are now fired immediately - after completion of the triggering query, rather than upon - finishing the current interactive command. This makes a - difference when the triggering query occurred within a function: - the trigger is invoked before the function proceeds to its next - operation. - </para> - </listitem> - - <listitem> - <para> - Server configuration parameters <varname>virtual_host</varname> and - <varname>tcpip_socket</varname> have been replaced with a more general - parameter <varname>listen_addresses</varname>. Also, the server now listens on - <literal>localhost</literal> by default, which eliminates the need for the - <literal>-i</literal> postmaster switch in many scenarios. - </para> - </listitem> - - <listitem> - <para> - Server configuration parameters <varname>SortMem</varname> and - <varname>VacuumMem</varname> have been renamed to <varname>work_mem</varname> - and <varname>maintenance_work_mem</varname> to better reflect their - use. The original names are still supported in - <command>SET</command> and <command>SHOW</command>. - </para> - </listitem> - - <listitem> - <para> - Server configuration parameters <varname>log_pid</varname>, - <varname>log_timestamp</varname>, and <varname>log_source_port</varname> have been - replaced with a more general parameter <varname>log_line_prefix</varname>. - </para> - </listitem> - - <listitem> - <para> - Server configuration parameter <varname>syslog</varname> has been - replaced with a more logical <varname>log_destination</varname> variable to - control the log output destination. - </para> - </listitem> - - <listitem> - <para> - Server configuration parameter <varname>log_statement</varname> has been - changed so it can selectively log just database modification or - data definition statements. Server configuration parameter - <varname>log_duration</varname> now prints only when <varname>log_statement</varname> - prints the query. - </para> - </listitem> - - <listitem> - <para> - Server configuration parameter <varname>max_expr_depth</varname> parameter has - been replaced with <varname>max_stack_depth</varname> which measures the - physical stack size rather than the expression nesting depth. This - helps prevent session termination due to stack overflow caused by - recursive functions. - </para> - </listitem> - - <listitem> - <para> - The <function>length()</function> function no longer counts trailing spaces in - <type>CHAR(n)</type> values. - </para> - </listitem> - - <listitem> - <para> - Casting an integer to <type>BIT(N)</type> selects the rightmost N bits of the - integer, not the leftmost N bits as before. - </para> - </listitem> - - <listitem> - <para> - Updating an element or slice of a NULL array value now produces - a nonnull array result, namely an array containing - just the assigned-to positions. - </para> - </listitem> - - <listitem> - <para> - Syntax checking of array input values has been tightened up - considerably. Junk that was previously allowed in odd places with - odd results now causes an error. Empty-string element values - must now be written as <literal>""</literal>, rather than writing nothing. - Also changed behavior with respect to whitespace surrounding - array elements: trailing whitespace is now ignored, for symmetry - with leading whitespace (which has always been ignored). - </para> - </listitem> - - <listitem> - <para> - Overflow in integer arithmetic operations is now detected and - reported as an error. - </para> - </listitem> - - <listitem> - <para> - The arithmetic operators associated with the single-byte - <type>"char"</type> data type have been removed. - </para> - </listitem> - - <listitem> - <para> - The <function>extract()</function> function (also called - <function>date_part</function>) now returns the proper year for BC dates. - It previously returned one less than the correct year. The - function now also returns the proper values for millennium and - century. - </para> - </listitem> - - <listitem> - <para> - <type>CIDR</type> values now must have their nonmasked bits be zero. - For example, we no longer allow - <literal>204.248.199.1/31</literal> as a <type>CIDR</type> value. Such - values should never have been accepted by - <productname>PostgreSQL</productname> and will now be rejected. - </para> - </listitem> - - <listitem> - <para> - <command>EXECUTE</command> now returns a completion tag that - matches the executed statement. - </para> - </listitem> - - <listitem> - <para> - <application>psql</application>'s <command>\copy</command> command now reads or - writes to the query's <literal>stdin/stdout</literal>, rather than - <application>psql</application>'s <literal>stdin/stdout</literal>. The previous - behavior can be accessed via new - <option>pstdin</option>/<option>pstdout</option> parameters. - </para> - </listitem> - - <listitem> - <para> - The JDBC client interface has been removed from the core - distribution, and is now hosted at <ulink url= - "http://jdbc.postgresql.org"></ulink>. - </para> - </listitem> - - <listitem> - <para> - The Tcl client interface has also been removed. There are several - Tcl interfaces now hosted at <ulink url= - "http://gborg.postgresql.org"></ulink>. - </para> - </listitem> - - <listitem> - <para> - The server now uses its own time zone database, rather than the - one supplied by the operating system. This will provide consistent - behavior across all platforms. In most cases, there should be - little noticeable difference in time zone behavior, except that - the time zone names used by <command>SET</command>/<command>SHOW</command> - <varname>TimeZone</varname> might be different from what your platform provides. - </para> - </listitem> - - <listitem> - <para> - <application>Configure</application>'s threading option no longer requires - users to run tests or edit configuration files; threading options - are now detected automatically. - </para> - </listitem> - - <listitem> - <para> - Now that tablespaces have been implemented, - <application>initlocation</application> has been removed. - </para> - </listitem> - - <listitem> - <para> - The API for user-defined GiST indexes has been changed. The - Union and PickSplit methods are now passed a pointer to a - special <structname>GistEntryVector</structname> structure, - rather than a <type>bytea</type>. - </para> - </listitem> - - </itemizedlist> - </sect2> - - <sect2> - <title>Deprecated Features</title> - - <para> - Some aspects of <productname>PostgreSQL</productname>'s behavior - have been determined to be suboptimal. For the sake of backward - compatibility these have not been removed in 8.0, but they are - considered deprecated and will be removed in the next major - release. - </para> - - <itemizedlist> - <listitem> - <para> - The 8.1 release will remove the <function>to_char()</function> function - for intervals. - </para> - </listitem> - - <listitem> - <para> - The server now warns of empty strings passed to - <type>oid</type>/<type>float4</type>/<type>float8</type> data - types, but continues to interpret them as zeroes as before. - In the next major release, empty strings will be considered - invalid input for these data types. - </para> - </listitem> - - <listitem> - <para> - By default, tables in <productname>PostgreSQL</productname> 8.0 - and earlier are created with <type>OID</type>s. In the next release, - this will <emphasis>not</emphasis> be the case: to create a table - that contains <type>OID</type>s, the <option>WITH OIDS</option> clause must - be specified or the <varname>default_with_oids</varname> - configuration parameter must be set. Users are encouraged to - explicitly specify <option>WITH OIDS</option> if their tables - require OIDs for compatibility with future releases of - <productname>PostgreSQL</productname>. - </para> - </listitem> - - </itemizedlist> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - Below you will find a detailed account of the changes between - release 8.0 and the previous major release. - </para> - - <sect3> - <title>Performance Improvements</title> - <itemizedlist> - - <listitem> - <para> - Support cross-data-type index usage (Tom) - </para> - <para> - Before this change, many queries would not use an index if the data - types did not match exactly. This improvement makes index usage more - intuitive and consistent. - </para> - </listitem> - - <listitem> - <para> - New buffer replacement strategy that improves caching (Jan) - </para> - <para> - Prior releases used a least-recently-used (LRU) cache to keep - recently referenced pages in memory. The LRU algorithm - did not consider the number of times a specific cache entry was - accessed, so large table scans could force out useful cache pages. - The new cache algorithm uses four separate lists to track most - recently used and most frequently used cache pages and dynamically - optimize their replacement based on the work load. This should - lead to much more efficient use of the shared buffer cache. - Administrators who have tested shared buffer sizes in the past - should retest with this new cache replacement policy. - </para> - </listitem> - - <listitem> - <para> - Add subprocess to write dirty buffers periodically to reduce - checkpoint writes (Jan) - </para> - <para> - In previous releases, the checkpoint process, which runs every few - minutes, would write all dirty buffers to the operating system's - buffer cache then flush all dirty operating system buffers to - disk. This resulted in a periodic spike in disk usage that often - hurt performance. The new code uses a background writer to trickle - disk writes at a steady pace so checkpoints have far fewer dirty - pages to write to disk. Also, the new code does not issue a global - <function>sync()</function> call, but instead <function>fsync()</function>s just - the files written since the last checkpoint. This should improve - performance and minimize degradation during checkpoints. - </para> - </listitem> - - <listitem> - <para> - Add ability to prolong vacuum to reduce performance impact (Jan) - </para> - <para> - On busy systems, <command>VACUUM</command> performs many I/O - requests which can hurt performance for other users. This - release allows you to slow down <command>VACUUM</command> to - reduce its impact on other users, though this increases the - total duration of <command>VACUUM</command>. - </para> - </listitem> - - <listitem> - <para> - Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom) - </para> - <para> - This improves the way indexes are scanned when many duplicate - values exist in the index. - </para> - </listitem> - - <listitem> - <para> - Use dynamically-generated table size estimates while planning (Tom) - </para> - <para> - Formerly the planner estimated table sizes using the values seen - by the last <command>VACUUM</command> or <command>ANALYZE</command>, - both as to physical table size (number of pages) and number of rows. - Now, the current physical table size is obtained from the kernel, - and the number of rows is estimated by multiplying the table size - by the row density (rows per page) seen by the last - <command>VACUUM</command> or <command>ANALYZE</command>. This should - produce more reliable estimates in cases where the table size has - changed significantly since the last housekeeping command. - </para> - </listitem> - - <listitem> - <para> - Improved index usage with <literal>OR</literal> clauses (Tom) - </para> - <para> - This allows the optimizer to use indexes in statements with many OR - clauses that would not have been indexed in the past. It can also use - multi-column indexes where the first column is specified and the second - column is part of an <literal>OR</literal> clause. - </para> - </listitem> - - <listitem> - <para> - Improve matching of partial index clauses (Tom) - </para> - <para> - The server is now smarter about using partial indexes in queries - involving complex <option>WHERE</option> clauses. - </para> - </listitem> - - <listitem> - <para> - Improve performance of the GEQO optimizer (Tom) - </para> - <para> - The GEQO optimizer is used to plan queries involving many tables (by - default, twelve or more). This release speeds up the way queries are - analyzed to decrease time spent in optimization. - </para> - </listitem> - - <listitem> - <para> - Miscellaneous optimizer improvements - </para> - <para> - There is not room here to list all the minor improvements made, but - numerous special cases work better than in prior releases. - </para> - </listitem> - - <listitem> - <para> - Improve lookup speed for C functions (Tom) - </para> - <para> - This release uses a hash table to lookup information for dynamically - loaded C functions. This improves their speed so they perform nearly as - quickly as functions that are built into the server executable. - </para> - </listitem> - - <listitem> - <para> - Add type-specific <command>ANALYZE</command> statistics - capability (Mark Cave-Ayland) - </para> - <para> - This feature allows more flexibility in generating statistics - for nonstandard data types. - </para> - </listitem> - - <listitem> - <para> - <command>ANALYZE</command> now collects statistics for - expression indexes (Tom) - </para> - <para> - Expression indexes (also called functional indexes) allow users to - index not just columns but the results of expressions and function - calls. With this release, the optimizer can gather and use statistics - about the contents of expression indexes. This will greatly improve - the quality of planning for queries in which an expression index is - relevant. - </para> - </listitem> - - <listitem> - <para> - New two-stage sampling method for <command>ANALYZE</command> - (Manfred Koizar) - </para> - <para> - This gives better statistics when the density of valid rows is very - different in different regions of a table. - </para> - </listitem> - - <listitem> - <para> - Speed up <command>TRUNCATE</command> (Tom) - </para> - <para> - This buys back some of the performance loss observed in 7.4, while still - keeping <command>TRUNCATE</command> transaction-safe. - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Server Changes</title> - <itemizedlist> - - <listitem> - <para> - Add WAL file archiving and point-in-time recovery (Simon Riggs) - </para> - </listitem> - - <listitem> - <para> - Add tablespaces so admins can control disk layout (Gavin) - </para> - </listitem> - - <listitem> - <para> - Add a built-in log rotation program (Andreas Pflug) - </para> - <para> - It is now possible to log server messages conveniently without - relying on either <application>syslog</application> or an external log - rotation program. - </para> - </listitem> - - <listitem> - <para> - Add new read-only server configuration parameters to show server - compile-time settings: <varname>block_size</varname>, - <varname>integer_datetimes</varname>, <varname>max_function_args</varname>, - <varname>max_identifier_length</varname>, <varname>max_index_keys</varname> (Joe) - </para> - </listitem> - - <listitem> - <para> - Make quoting of <literal>sameuser</literal>, <literal>samegroup</literal>, and - <literal>all</literal> remove special meaning of these terms in - <filename>pg_hba.conf</filename> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Use clearer IPv6 name <literal>::1/128</literal> for - <literal>localhost</literal> in default <filename>pg_hba.conf</filename> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Use CIDR format in <filename>pg_hba.conf</filename> examples (Andrew) - </para> - </listitem> - - <listitem> - <para> - Rename server configuration parameters <varname>SortMem</varname> and - <varname>VacuumMem</varname> to <varname>work_mem</varname> and - <varname>maintenance_work_mem</varname> (Old names still supported) (Tom) - </para> - <para> - This change was made to clarify that bulk operations such as index and - foreign key creation use <varname>maintenance_work_mem</varname>, while - <varname>work_mem</varname> is for workspaces used during query execution. - </para> - </listitem> - - <listitem> - <para> - Allow logging of session disconnections using server configuration - <varname>log_disconnections</varname> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Add new server configuration parameter <varname>log_line_prefix</varname> to - allow control of information emitted in each log line (Andrew) - </para> - <para> - Available information includes user name, database name, remote IP - address, and session start time. - </para> - </listitem> - - <listitem> - <para> - Remove server configuration parameters <varname>log_pid</varname>, - <varname>log_timestamp</varname>, <varname>log_source_port</varname>; functionality - superseded by <varname>log_line_prefix</varname> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Replace the <varname>virtual_host</varname> and <varname>tcpip_socket</varname> - parameters with a unified <varname>listen_addresses</varname> parameter - (Andrew, Tom) - </para> - <para> - <varname>virtual_host</varname> could only specify a single IP address to - listen on. <varname>listen_addresses</varname> allows multiple addresses - to be specified. - </para> - </listitem> - - <listitem> - <para> - Listen on localhost by default, which eliminates the need for the - <option>-i</option> postmaster switch in many scenarios (Andrew) - </para> - <para> - Listening on localhost (<literal>127.0.0.1</literal>) opens no new - security holes but allows configurations like Windows and JDBC, - which do not support local sockets, to work without special - adjustments. - </para> - </listitem> - - <listitem> - <para> - Remove <varname>syslog</varname> server configuration parameter, and add more - logical <varname>log_destination</varname> variable to control log output - location (Magnus) - </para> - </listitem> - - <listitem> - <para> - Change server configuration parameter <varname>log_statement</varname> to take - values <varname>all</varname>, <varname>mod</varname>, <varname>ddl</varname>, or - <varname>none</varname> to select which queries are logged (Bruce) - </para> - <para> - This allows administrators to log only data definition changes or - only data modification statements. - </para> - </listitem> - - <listitem> - <para> - Some logging-related configuration parameters could formerly be adjusted - by ordinary users, but only in the <quote>more verbose</quote> direction. - They are now treated more strictly: only superusers can set them. - However, a superuser can use <command>ALTER USER</command> to provide per-user - settings of these values for non-superusers. Also, it is now possible - for superusers to set values of superuser-only configuration parameters - via <literal>PGOPTIONS</literal>. - </para> - </listitem> - - <listitem> - <para> - Allow configuration files to be placed outside the data directory (mlw) - </para> - <para> - By default, configuration files are kept in the cluster's top directory. - With this addition, configuration files can be placed outside the - data directory, easing administration. - </para> - </listitem> - - <listitem> - <para> - Plan prepared queries only when first executed so constants can be - used for statistics (Oliver Jowett) - </para> - <para> - Prepared statements plan queries once and execute them many - times. While prepared queries avoid the overhead of re-planning - on each use, the quality of the plan suffers from not knowing the exact - parameters to be used in the query. In this release, planning of - unnamed prepared statements is delayed until the first execution, - and the actual parameter values of that execution are used as - optimization hints. This allows use of out-of-line parameter passing - without incurring a performance penalty. - </para> - </listitem> - - <listitem> - <para> - Allow <command>DECLARE CURSOR</command> to take parameters - (Oliver Jowett) - </para> - <para> - It is now useful to issue <command>DECLARE CURSOR</command> in a - <function>Parse</function> message with parameters. The parameter values - sent at <function>Bind</function> time will be substituted into the - execution of the cursor's query. - </para> - </listitem> - - <listitem> - <para> - Fix hash joins and aggregates of <type>inet</type> and - <type>cidr</type> data types (Tom) - </para> - <para> - Release 7.4 handled hashing of mixed <type>inet</type> and - <type>cidr</type> values incorrectly. (This bug did not exist - in prior releases because they wouldn't try to hash either - data type.) - </para> - </listitem> - - <listitem> - <para> - Make <varname>log_duration</varname> print only when <varname>log_statement</varname> - prints the query (Ed L.) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Query Changes</title> - <itemizedlist> - - <listitem> - <para> - Add savepoints (nested transactions) (Alvaro) - </para> - </listitem> - - <listitem> - <para> - Unsupported isolation levels are now accepted and promoted to the - nearest supported level (Peter) - </para> - <para> - The SQL specification states that if a database doesn't support a - specific isolation level, it should use the next more restrictive level. - This change complies with that recommendation. - </para> - </listitem> - - <listitem> - <para> - Allow <command>BEGIN WORK</command> to specify transaction - isolation levels like <command>START TRANSACTION</command> does - (Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix table permission checking for cases in which rules generate - a query type different from the originally submitted query (Tom) - </para> - </listitem> - - <listitem> - <para> - Implement dollar quoting to simplify single-quote usage (Andrew, Tom, - David Fetter) - </para> - <para> - In previous releases, because single quotes had to be used to - quote a function's body, the use of single quotes inside the - function text required use of two single quotes or other error-prone - notations. With this release we add the ability to use "dollar - quoting" to quote a block of text. The ability to use different - quoting delimiters at different nesting levels greatly simplifies - the task of quoting correctly, especially in complex functions. - Dollar quoting can be used anywhere quoted text is needed. - </para> - </listitem> - - <listitem> - <para> - Make <literal>CASE val WHEN compval1 THEN ...</literal> evaluate <literal>val</literal> only once (Tom) - </para> - <para> - <option>CASE</option> no longer evaluates the tested expression multiple - times. This has benefits when the expression is complex or is - volatile. - </para> - </listitem> - - <listitem> - <para> - Test <option>HAVING</option> before computing target list of an - aggregate query (Tom) - </para> - <para> - Fixes improper failure of cases such as <literal>SELECT SUM(win)/SUM(lose) - ... GROUP BY ... HAVING SUM(lose) > 0</literal>. This should work but formerly - could fail with divide-by-zero. - </para> - </listitem> - - <listitem> - <para> - Replace <varname>max_expr_depth</varname> parameter with - <varname>max_stack_depth</varname> parameter, measured in kilobytes of stack - size (Tom) - </para> - <para> - This gives us a fairly bulletproof defense against crashing due to - runaway recursive functions. Instead of measuring the depth of expression - nesting, we now directly measure the size of the execution stack. - </para> - </listitem> - - <listitem> - <para> - Allow arbitrary row expressions (Tom) - </para> - <para> - This release allows SQL expressions to contain arbitrary composite - types, that is, row values. It also allows functions to more easily - take rows as arguments and return row values. - </para> - </listitem> - - <listitem> - <para> - Allow <option>LIKE</option>/<option>ILIKE</option> to be used as the operator - in row and subselect comparisons (Fabien Coelho) - </para> - </listitem> - - <listitem> - <para> - Avoid locale-specific case conversion of basic ASCII letters in - identifiers and keywords (Tom) - </para> - <para> - This solves the <quote>Turkish problem</quote> with mangling of words - containing <literal>I</literal> and <literal>i</literal>. Folding of characters - outside the 7-bit-ASCII set is still locale-aware. - </para> - </listitem> - - <listitem> - <para> - Improve syntax error reporting (Fabien, Tom) - </para> - <para> - Syntax error reports are more useful than before. - </para> - </listitem> - - <listitem> - <para> - Change <command>EXECUTE</command> to return a completion tag - matching the executed statement (Kris Jurka) - </para> - <para> - Previous releases return an <command>EXECUTE</command> tag for - any <command>EXECUTE</command> call. In this release, the tag - returned will reflect the command executed. - </para> - </listitem> - - <listitem> - <para> - Avoid emitting <option>NATURAL CROSS JOIN</option> in rule listings (Tom) - </para> - <para> - Such a clause makes no logical sense, but in some cases the rule - decompiler formerly produced this syntax. - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Object Manipulation Changes</title> - <itemizedlist> - - <listitem> - <para> - Add <command>COMMENT ON</command> for casts, conversions, languages, - operator classes, and large objects (Christopher) - </para> - </listitem> - - <listitem> - <para> - Add new server configuration parameter <varname>default_with_oids</varname> to - control whether tables are created with <type>OID</type>s by default (Neil) - </para> - <para> - This allows administrators to control whether <command>CREATE - TABLE</command> commands create tables with or without <type>OID</type> - columns by default. (Note: the current factory default setting for - <varname>default_with_oids</varname> is <literal>TRUE</literal>, but the default - will become <literal>FALSE</literal> in future releases.) - </para> - </listitem> - - <listitem> - <para> - Add <option>WITH</option> / <option>WITHOUT OIDS</option> clause to - <command>CREATE TABLE AS</command> (Neil) - </para> - </listitem> - - <listitem> - <para> - Allow <command>ALTER TABLE DROP COLUMN</command> to drop an <type>OID</type> - column (<command>ALTER TABLE SET WITHOUT OIDS</command> still works) - (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow composite types as table columns (Tom) - </para> - </listitem> - - <listitem> - <para> - Allow <command>ALTER ... ADD COLUMN</command> with defaults and - <option>NOT NULL</option> constraints; works per SQL spec (Rod) - </para> - <para> - It is now possible for <option>ADD COLUMN</option> to create a column - that is not initially filled with NULLs, but with a specified - default value. - </para> - </listitem> - - <listitem> - <para> - Add <command>ALTER COLUMN TYPE</command> to change column's type (Rod) - </para> - <para> - It is now possible to alter a column's data type without dropping - and re-adding the column. - </para> - </listitem> - - <listitem> - <para> - Allow multiple <command>ALTER</command> actions in a single <command>ALTER - TABLE</command> command (Rod) - </para> - <para> - This is particularly useful for <command>ALTER</command> commands that - rewrite the table (which include <option>ALTER COLUMN TYPE</option> and - <option>ADD COLUMN</option> with a default). By grouping - <command>ALTER</command> commands together, the table need be rewritten - only once. - </para> - </listitem> - - <listitem> - <para> - Allow <command>ALTER TABLE</command> to add <type>SERIAL</type> - columns (Tom) - </para> - <para> - This falls out from the new capability of specifying defaults for new - columns. - </para> - </listitem> - - <listitem> - <para> - Allow changing the owners of aggregates, conversions, databases, - functions, operators, operator classes, schemas, types, and tablespaces - (Christopher, Euler Taveira de Oliveira) - </para> - <para> - Previously this required modifying the system tables directly. - </para> - </listitem> - - <listitem> - <para> - Allow temporary object creation to be limited to <option>SECURITY - DEFINER</option> functions (Sean Chittenden) - </para> - </listitem> - - <listitem> - <para> - Add <option>ALTER TABLE ... SET WITHOUT CLUSTER</option> (Christopher) - </para> - <para> - Prior to this release, there was no way to clear an auto-cluster - specification except to modify the system tables. - </para> - </listitem> - - <listitem> - <para> - Constraint/Index/<type>SERIAL</type> names are now - <replaceable>table_column_type</replaceable> - with numbers appended to guarantee uniqueness within the schema - (Tom) - </para> - <para> - The SQL specification states that such names should be unique - within a schema. - </para> - </listitem> - - <listitem> - <para> - Add <function>pg_get_serial_sequence()</function> to return a - <type>SERIAL</type> column's sequence name (Christopher) - </para> - <para> - This allows automated scripts to reliably find the <type>SERIAL</type> - sequence name. - </para> - </listitem> - - <listitem> - <para> - Warn when primary/foreign key data type mismatch requires costly lookup - </para> - </listitem> - - <listitem> - <para> - New <command>ALTER INDEX</command> command to allow moving of indexes - between tablespaces (Gavin) - </para> - </listitem> - - <listitem> - <para> - Make <command>ALTER TABLE OWNER</command> change dependent sequence - ownership too (Alvaro) - </para> - </listitem> - - - </itemizedlist> - </sect3> - - - <sect3> - <title>Utility Command Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow <command>CREATE SCHEMA</command> to create triggers, - indexes, and sequences (Neil) - </para> - </listitem> - - <listitem> - <para> - Add <option>ALSO</option> keyword to <command>CREATE RULE</command> (Fabien - Coelho) - </para> - <para> - This allows <option>ALSO</option> to be added to rule creation to contrast it with - <option>INSTEAD</option> rules. - </para> - </listitem> - - <listitem> - <para> - Add <option>NOWAIT</option> option to <command>LOCK</command> (Tatsuo) - </para> - <para> - This allows the <command>LOCK</command> command to fail if it - would have to wait for the requested lock. - </para> - </listitem> - - <listitem> - <para> - Allow <command>COPY</command> to read and write - comma-separated-value (CSV) files (Andrew, Bruce) - </para> - </listitem> - - <listitem> - <para> - Generate error if the <command>COPY</command> delimiter and NULL - string conflict (Bruce) - </para> - </listitem> - - <listitem> - <para> - <command>GRANT</command>/<command>REVOKE</command> behavior - follows the SQL spec more closely - </para> - </listitem> - - <listitem> - <para> - Avoid locking conflict between <command>CREATE INDEX</command> - and <command>CHECKPOINT</command> (Tom) - </para> - <para> - In 7.3 and 7.4, a long-running B-tree index build could block concurrent - <command>CHECKPOINT</command>s from completing, thereby causing WAL bloat because the - WAL log could not be recycled. - </para> - </listitem> - - <listitem> - <para> - Database-wide <command>ANALYZE</command> does not hold locks - across tables (Tom) - </para> - <para> - This reduces the potential for deadlocks against other backends - that want exclusive locks on tables. To get the benefit of this - change, do not execute database-wide <command>ANALYZE</command> - inside a transaction block (<command>BEGIN</command> block); it - must be able to commit and start a new transaction for each - table. - </para> - </listitem> - - <listitem> - <para> - <command>REINDEX</command> does not exclusively lock the index's - parent table anymore - </para> - <para> - The index itself is still exclusively locked, but readers of the - table can continue if they are not using the particular index - being rebuilt. - </para> - </listitem> - - <listitem> - <para> - Erase MD5 user passwords when a user is renamed (Bruce) - </para> - <para> - <productname>PostgreSQL</productname> uses the user name as salt - when encrypting passwords via MD5. When a user's name is changed, - the salt will no longer match the stored MD5 password, so the - stored password becomes useless. In this release a notice is - generated and the password is cleared. A new password must then - be assigned if the user is to be able to log in with a password. - </para> - </listitem> - - <listitem> - <para> - New <application>pg_ctl</application> <option>kill</option> option for Windows (Andrew) - </para> - <para> - Windows does not have a <literal>kill</literal> command to send signals to - backends so this capability was added to <application>pg_ctl</application>. - </para> - </listitem> - - <listitem> - <para> - Information schema improvements - </para> - </listitem> - - <listitem> - <para> - Add <option>--pwfile</option> option to - <application>initdb</application> so the initial password can be - set by GUI tools (Magnus) - </para> - </listitem> - - <listitem> - <para> - Detect locale/encoding mismatch in - <application>initdb</application> (Peter) - </para> - </listitem> - - <listitem> - <para> - Add <option>register</option> command to <application>pg_ctl</application> to - register Windows operating system service (Dave Page) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Data Type and Function Changes</title> - <itemizedlist> - - <listitem> - <para> - More complete support for composite types (row types) (Tom) - </para> - <para> - Composite values can be used in many places where only scalar values - worked before. - </para> - </listitem> - - <listitem> - <para> - Reject nonrectangular array values as erroneous (Joe) - </para> - <para> - Formerly, <function>array_in</function> would silently build a - surprising result. - </para> - </listitem> - - <listitem> - <para> - Overflow in integer arithmetic operations is now detected (Tom) - </para> - </listitem> - - <listitem> - <para> - The arithmetic operators associated with the single-byte - <type>"char"</type> data type have been removed. - </para> - <para> - Formerly, the parser would select these operators in many situations - where an <quote>unable to select an operator</quote> error would be more - appropriate, such as <literal>null * null</literal>. If you actually want - to do arithmetic on a <type>"char"</type> column, you can cast it to - integer explicitly. - </para> - </listitem> - - <listitem> - <para> - Syntax checking of array input values considerably tightened up (Joe) - </para> - <para> - Junk that was previously allowed in odd places with odd results - now causes an <literal>ERROR</literal>, for example, non-whitespace - after the closing right brace. - </para> - </listitem> - - <listitem> - <para> - Empty-string array element values must now be written as - <literal>""</literal>, rather than writing nothing (Joe) - </para> - <para> - Formerly, both ways of writing an empty-string element value were - allowed, but now a quoted empty string is required. The case where - nothing at all appears will probably be considered to be a NULL - element value in some future release. - </para> - </listitem> - - <listitem> - <para> - Array element trailing whitespace is now ignored (Joe) - </para> - <para> - Formerly leading whitespace was ignored, but trailing whitespace - between an element value and the delimiter or right brace was - significant. Now trailing whitespace is also ignored. - </para> - </listitem> - - <listitem> - <para> - Emit array values with explicit array bounds when lower bound is not one - (Joe) - </para> - </listitem> - - <listitem> - <para> - Accept <literal>YYYY-monthname-DD</literal> as a date string (Tom) - </para> - </listitem> - - <listitem> - <para> - Make <function>netmask</function> and <function>hostmask</function> functions - return maximum-length mask length (Tom) - </para> - </listitem> - - <listitem> - <para> - Change factorial function to return <type>numeric</type> (Gavin) - </para> - <para> - Returning <type>numeric</type> allows the factorial function to - work for a wider range of input values. - </para> - </listitem> - - <listitem> - <para> - <function>to_char</function>/<function>to_date()</function> date conversion - improvements (Kurt Roeckx, Fabien Coelho) - </para> - </listitem> - - <listitem> - <para> - Make <function>length()</function> disregard trailing spaces in - <type>CHAR(n)</type> (Gavin) - </para> - <para> - This change was made to improve consistency: trailing spaces are - semantically insignificant in <type>CHAR(n)</type> data, so they - should not be counted by <function>length()</function>. - </para> - </listitem> - - <listitem> - <para> - Warn about empty string being passed to - <type>OID</type>/<type>float4</type>/<type>float8</type> data types (Neil) - </para> - <para> - 8.1 will throw an error instead. - </para> - </listitem> - - <listitem> - <para> - Allow leading or trailing whitespace in - <type>int2</type>/<type>int4</type>/<type>int8</type>/<type>float4</type>/<type>float8</type> - input routines - (Neil) - </para> - </listitem> - - <listitem> - <para> - Better support for IEEE <literal>Infinity</literal> and <literal>NaN</literal> - values in <type>float4</type>/<type>float8</type> (Neil) - </para> - <para> - These should now work on all platforms that support IEEE-compliant - floating point arithmetic. - </para> - </listitem> - - <listitem> - <para> - Add <option>week</option> option to <function>date_trunc()</function> (Robert Creager) - </para> - </listitem> - - <listitem> - <para> - Fix <function>to_char</function> for <literal>1 BC</literal> - (previously it returned <literal>1 AD</literal>) (Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix <function>date_part(year)</function> for BC dates (previously it - returned one less than the correct year) (Bruce) - </para> - </listitem> - - <listitem> - <para> - Fix <function>date_part()</function> to return the proper millennium and - century (Fabien Coelho) - </para> - <para> - In previous versions, the century and millennium results had a wrong - number and started in the wrong year, as compared to standard - reckoning of such things. - </para> - </listitem> - - <listitem> - <para> - Add <function>ceiling()</function> as an alias for <function>ceil()</function>, - and <function>power()</function> as an alias for <function>pow()</function> for - standards compliance (Neil) - </para> - </listitem> - - <listitem> - <para> - Change <function>ln()</function>, <function>log()</function>, - <function>power()</function>, and <function>sqrt()</function> to emit the correct - <literal>SQLSTATE</literal> error codes for certain error conditions, as - specified by SQL:2003 (Neil) - </para> - </listitem> - - <listitem> - <para> - Add <function>width_bucket()</function> function as defined by SQL:2003 (Neil) - </para> - </listitem> - - <listitem> - <para> - Add <function>generate_series()</function> functions to simplify working - with numeric sets (Joe) - </para> - </listitem> - - <listitem> - <para> - Fix <function>upper/lower/initcap()</function> functions to work with - multibyte encodings (Tom) - </para> - </listitem> - - <listitem> - <para> - Add boolean and bitwise integer <option>AND</option>/<option>OR</option> - aggregates (Fabien Coelho) - </para> - </listitem> - - <listitem> - <para> - New session information functions to return network addresses for client - and server (Sean Chittenden) - </para> - </listitem> - - <listitem> - <para> - Add function to determine the area of a closed path (Sean Chittenden) - </para> - </listitem> - - <listitem> - <para> - Add function to send cancel request to other backends (Magnus) - </para> - </listitem> - - <listitem> - <para> - Add <type>interval</type> plus <type>datetime</type> operators (Tom) - </para> - <para> - The reverse ordering, <type>datetime</type> plus <type>interval</type>, - was already supported, but both are required by the SQL standard. - </para> - </listitem> - - <listitem> - <para> - Casting an integer to <type>BIT(N)</type> selects the rightmost N bits - of the integer - (Tom) - </para> - <para> - In prior releases, the leftmost N bits were selected, but this was - deemed unhelpful, not to mention inconsistent with casting from bit - to int. - </para> - </listitem> - - <listitem> - <para> - Require <type>CIDR</type> values to have all nonmasked bits be zero - (Kevin Brintnall) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Server-Side Language Changes</title> - <itemizedlist> - - <listitem> - <para> - In <literal>READ COMMITTED</literal> serialization mode, volatile functions - now see the results of concurrent transactions committed up to the - beginning of each statement within the function, rather than up to the - beginning of the interactive command that called the function. - </para> - </listitem> - - <listitem> - <para> - Functions declared <literal>STABLE</literal> or <literal>IMMUTABLE</literal> always - use the snapshot of the calling query, and therefore do not see the - effects of actions taken after the calling query starts, whether in - their own transaction or other transactions. Such a function must be - read-only, too, meaning that it cannot use any SQL commands other than - <command>SELECT</command>. There is a considerable performance gain from - declaring a function <literal>STABLE</literal> or <literal>IMMUTABLE</literal> - rather than <literal>VOLATILE</literal>. - </para> - </listitem> - - <listitem> - <para> - Nondeferred <option>AFTER</option> triggers are now fired immediately - after completion of the triggering query, rather than upon - finishing the current interactive command. This makes a difference - when the triggering query occurred within a function: the trigger - is invoked before the function proceeds to its next operation. For - example, if a function inserts a new row into a table, any - nondeferred foreign key checks occur before proceeding with the - function. - </para> - </listitem> - - <listitem> - <para> - Allow function parameters to be declared with names (Dennis Björklund) - </para> - <para> - This allows better documentation of functions. Whether the names - actually do anything depends on the specific function language - being used. - </para> - </listitem> - - <listitem> - <para> - Allow PL/pgSQL parameter names to be referenced in the function (Dennis Björklund) - </para> - <para> - This basically creates an automatic alias for each named parameter. - </para> - </listitem> - - <listitem> - <para> - Do minimal syntax checking of PL/pgSQL functions at creation time (Tom) - </para> - <para> - This allows us to catch simple syntax errors sooner. - </para> - </listitem> - - <listitem> - <para> - More support for composite types (row and record variables) in PL/pgSQL - </para> - <para> - For example, it now works to pass a rowtype variable to another function - as a single variable. - </para> - </listitem> - - <listitem> - <para> - Default values for PL/pgSQL variables can now reference previously - declared variables - </para> - </listitem> - - <listitem> - <para> - Improve parsing of PL/pgSQL FOR loops (Tom) - </para> - <para> - Parsing is now driven by presence of <literal>".."</literal> rather than - data type of <option>FOR</option> variable. This makes no difference for - correct functions, but should result in more understandable error - messages when a mistake is made. - </para> - </listitem> - - <listitem> - <para> - Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan) - </para> - </listitem> - - <listitem> - <para> - In PL/Tcl, SPI commands are now run in subtransactions. If an error - occurs, the subtransaction is cleaned up and the error is reported - as an ordinary Tcl error, which can be trapped with <literal>catch</literal>. - Formerly, it was not possible to catch such errors. - </para> - </listitem> - - <listitem> - <para> - Accept <command>ELSEIF</command> in PL/pgSQL (Neil) - </para> - <para> - Previously PL/pgSQL only allowed <command>ELSIF</command>, but many people - are accustomed to spelling this keyword <command>ELSEIF</command>. - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title><application>psql</application> Changes</title> - <itemizedlist> - - <listitem> - <para> - Improve <application>psql</application> information display about database - objects (Christopher) - </para> - </listitem> - - <listitem> - <para> - Allow <application>psql</application> to display group membership in - <command>\du</command> and <command>\dg</command> (Markus Bertheau) - </para> - </listitem> - - <listitem> - <para> - Prevent <application>psql</application> <command>\dn</command> from showing - temporary schemas (Bruce) - </para> - </listitem> - - <listitem> - <para> - Allow <application>psql</application> to handle tilde user expansion for file - names (Zach Irmen) - </para> - </listitem> - - <listitem> - <para> - Allow <application>psql</application> to display fancy prompts, including - color, via <application>readline</application> (Reece Hart, Chet Ramey) - </para> - </listitem> - - <listitem> - <para> - Make <application>psql</application> <command>\copy</command> match <command>COPY</command> command syntax - fully (Tom) - </para> - </listitem> - - <listitem> - <para> - Show the location of syntax errors (Fabien Coelho, Tom) - </para> - </listitem> - - <listitem> - <para> - Add <command>CLUSTER</command> information to <application>psql</application> - <command>\d</command> display - (Bruce) - </para> - </listitem> - - <listitem> - <para> - Change <application>psql</application> <command>\copy stdin/stdout</command> to read - from command input/output (Bruce) - </para> - </listitem> - - <listitem> - <para> - Add <option>pstdin</option>/<option>pstdout</option> to read from - <application>psql</application>'s <literal>stdin</literal>/<literal>stdout</literal> (Mark - Feit) - </para> - </listitem> - - <listitem> - <para> - Add global <application>psql</application> configuration file, <filename>psqlrc.sample</filename> - (Bruce) - </para> - <para> - This allows a central file where global <application>psql</application> startup commands can - be stored. - </para> - </listitem> - - <listitem> - <para> - Have <application>psql</application> <command>\d+</command> indicate if the table - has an <type>OID</type> column (Neil) - </para> - </listitem> - - <listitem> - <para> - On Windows, use binary mode in <application>psql</application> when reading files so control-Z - is not seen as end-of-file - </para> - </listitem> - - <listitem> - <para> - Have <command>\dn+</command> show permissions and description for schemas (Dennis - Björklund) - </para> - </listitem> - - <listitem> - <para> - Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane) - </para> - </listitem> - - <listitem> - <para> - Allow boolean settings to be set using upper or lower case (Michael Paesold) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title><application>pg_dump</application> Changes</title> - <itemizedlist> - - <listitem> - <para> - Use dependency information to improve the reliability of - <application>pg_dump</application> (Tom) - </para> - <para> - This should solve the longstanding problems with related objects - sometimes being dumped in the wrong order. - </para> - </listitem> - - <listitem> - <para> - Have <application>pg_dump</application> output objects in alphabetical order if possible (Tom) - </para> - <para> - This should make it easier to identify changes between - dump files. - </para> - </listitem> - - <listitem> - <para> - Allow <application>pg_restore</application> to ignore some SQL errors (Fabien Coelho) - </para> - <para> - This makes <application>pg_restore</application>'s behavior similar to the - results of feeding a <application>pg_dump</application> output script to - <application>psql</application>. In most cases, ignoring errors and plowing - ahead is the most useful thing to do. Also added was a pg_restore - option to give the old behavior of exiting on an error. - </para> - </listitem> - - <listitem> - <para> - <application>pg_restore</application> <option>-l</option> display now includes - objects' schema names - </para> - </listitem> - - <listitem> - <para> - New begin/end markers in <application>pg_dump</application> text output (Bruce) - </para> - </listitem> - - <listitem> - <para> - Add start/stop times for - <application>pg_dump</application>/<application>pg_dumpall</application> in verbose mode - (Bruce) - </para> - </listitem> - - <listitem> - <para> - Allow most <application>pg_dump</application> options in - <application>pg_dumpall</application> (Christopher) - </para> - </listitem> - - <listitem> - <para> - Have <application>pg_dump</application> use <command>ALTER OWNER</command> rather - than <command>SET SESSION AUTHORIZATION</command> by default - (Christopher) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>libpq Changes</title> - <itemizedlist> - - <listitem> - <para> - Make libpq's <option>SIGPIPE</option> handling thread-safe (Bruce) - </para> - </listitem> - - <listitem> - <para> - Add <function>PQmbdsplen()</function> which returns the display length - of a character (Tatsuo) - </para> - </listitem> - - <listitem> - <para> - Add thread locking to <application>SSL</application> and - <application>Kerberos</application> connections (Manfred Spraul) - </para> - </listitem> - - <listitem> - <para> - Allow <function>PQoidValue()</function>, <function>PQcmdTuples()</function>, and - <function>PQoidStatus()</function> to work on <command>EXECUTE</command> - commands (Neil) - </para> - </listitem> - - <listitem> - <para> - Add <function>PQserverVersion()</function> to provide more convenient - access to the server version number (Greg Sabino Mullane) - </para> - </listitem> - - <listitem> - <para> - Add <function>PQprepare/PQsendPrepared()</function> functions to support - preparing statements without necessarily specifying the data types - of their parameters (Abhijit Menon-Sen) - </para> - </listitem> - - <listitem> - <para> - Many ECPG improvements, including <command>SET DESCRIPTOR</command> (Michael) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Source Code Changes</title> - <itemizedlist> - - <listitem> - <para> - Allow the database server to run natively on Windows (Claudio, Magnus, Andrew) - </para> - </listitem> - - <listitem> - <para> - Shell script commands converted to C versions for Windows support (Andrew) - </para> - </listitem> - - <listitem> - <para> - Create an extension makefile framework (Fabien Coelho, Peter) - </para> - <para> - This simplifies the task of building extensions outside the original - source tree. - </para> - </listitem> - - <listitem> - <para> - Support relocatable installations (Bruce) - </para> - <para> - Directory paths for installed files (such as the - <filename>/share</filename> directory) are now computed relative to the - actual location of the executables, so that an installation tree - can be moved to another place without reconfiguring and - rebuilding. - </para> - </listitem> - - <listitem> - <para> - Use <option>--with-docdir</option> to choose installation location of documentation; also - allow <option>--infodir</option> (Peter) - </para> - </listitem> - - <listitem> - <para> - Add <option>--without-docdir</option> to prevent installation of documentation (Peter) - </para> - </listitem> - - <listitem> - <para> - Upgrade to <application>DocBook</application> V4.2 SGML (Peter) - </para> - </listitem> - - <listitem> - <para> - New <literal>PostgreSQL</literal> <application>CVS</application> tag (Marc) - </para> - <para> - This was done to make it easier for organizations to manage their - own copies of the <productname>PostgreSQL</productname> - <application>CVS</application> repository. File version stamps from the master - repository will not get munged by checking into or out of a copied - repository. - </para> - </listitem> - - <listitem> - <para> - Clarify locking code (Manfred Koizar) - </para> - </listitem> - - <listitem> - <para> - Buffer manager cleanup (Neil) - </para> - </listitem> - - <listitem> - <para> - Decouple platform tests from CPU spinlock code (Bruce, Tom) - </para> - </listitem> - - <listitem> - <para> - Add inlined test-and-set code on PA-RISC for <application>gcc</application> - (ViSolve, Tom) - </para> - </listitem> - - <listitem> - <para> - Improve i386 spinlock code (Manfred Spraul) - </para> - </listitem> - - <listitem> - <para> - Clean up spinlock assembly code to avoid warnings from newer - <application>gcc</application> releases (Tom) - </para> - </listitem> - - <listitem> - <para> - Remove JDBC from source tree; now a separate project - </para> - </listitem> - - <listitem> - <para> - Remove the libpgtcl client interface; now a separate project - </para> - </listitem> - - <listitem> - <para> - More accurately estimate memory and file descriptor usage (Tom) - </para> - </listitem> - - <listitem> - <para> - Improvements to the macOS startup scripts (Ray A.) - </para> - </listitem> - - <listitem> - <para> - New <function>fsync()</function> test program (Bruce) - </para> - </listitem> - - <listitem> - <para> - Major documentation improvements (Neil, Peter) - </para> - </listitem> - - <listitem> - <para> - Remove <application>pg_encoding</application>; not needed - anymore - </para> - </listitem> - - <listitem> - <para> - Remove <application>pg_id</application>; not needed anymore - </para> - </listitem> - - <listitem> - <para> - Remove <application>initlocation</application>; not needed - anymore - </para> - </listitem> - - <listitem> - <para> - Auto-detect thread flags (no more manual testing) (Bruce) - </para> - </listitem> - - <listitem> - <para> - Use Olson's public domain <application>timezone</application> library (Magnus) - </para> - </listitem> - - <listitem> - <para> - With threading enabled, use thread flags on Unixware for - backend executables too (Bruce) - </para> - <para> - Unixware cannot mix threaded and nonthreaded object files in the - same executable, so everything must be compiled as threaded. - </para> - </listitem> - - <listitem> - <para> - <application>psql</application> now uses a <application>flex</application>-generated - lexical analyzer to process command strings - </para> - </listitem> - - <listitem> - <para> - Reimplement the linked list data structure used throughout the - backend (Neil) - </para> - <para> - This improves performance by allowing list append and length - operations to be more efficient. - </para> - </listitem> - - <listitem> - <para> - Allow dynamically loaded modules to create their own server configuration - parameters (Thomas Hallgren) - </para> - </listitem> - - <listitem> - <para> - New Brazilian version of FAQ (Euler Taveira de Oliveira) - </para> - </listitem> - - <listitem> - <para> - Add French FAQ (Guillaume Lelarge) - </para> - </listitem> - - <listitem> - <para> - New <application>pgevent</application> for Windows logging - </para> - </listitem> - - <listitem> - <para> - Make libpq and ECPG build as proper shared libraries on macOS (Tom) - </para> - </listitem> - - </itemizedlist> - </sect3> - - - <sect3> - <title>Contrib Changes</title> - <itemizedlist> - - <listitem> - <para> - Overhaul of <filename>contrib/dblink</filename> (Joe) - </para> - </listitem> - - <listitem> - <para> - <filename>contrib/dbmirror</filename> improvements (Steven Singer) - </para> - </listitem> - - <listitem> - <para> - New <filename>contrib/xml2</filename> (John Gray, Torchbox) - </para> - </listitem> - - <listitem> - <para> - Updated <filename>contrib/mysql</filename> - </para> - </listitem> - - <listitem> - <para> - New version of <filename>contrib/btree_gist</filename> (Teodor) - </para> - </listitem> - - <listitem> - <para> - New <filename>contrib/trgm</filename>, trigram matching for - <productname>PostgreSQL</productname> (Teodor) - </para> - </listitem> - - <listitem> - <para> - Many <filename>contrib/tsearch2</filename> improvements (Teodor) - </para> - </listitem> - - <listitem> - <para> - Add double metaphone to <filename>contrib/fuzzystrmatch</filename> (Andrew) - </para> - </listitem> - - <listitem> - <para> - Allow <filename>contrib/pg_autovacuum</filename> to run as a Windows service (Dave Page) - </para> - </listitem> - - <listitem> - <para> - Add functions to <filename>contrib/dbsize</filename> (Andreas Pflug) - </para> - </listitem> - - <listitem> - <para> - Removed <filename>contrib/pg_logger</filename>: obsoleted by integrated logging - subprocess - </para> - </listitem> - - <listitem> - <para> - Removed <filename>contrib/rserv</filename>: obsoleted by various separate projects - </para> - </listitem> - - </itemizedlist> - </sect3> - - </sect2> - </sect1> |