--- /dev/null
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release-7.4.sgml,v 1.1.10.1 2009/05/02 20:18:21 tgl Exp $ -->
+<!-- See header comment in release.sgml about typical markup -->
+
+ <sect1 id="release-7-4-25">
+ <title>Release 7.4.25</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2009-03-16</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.24.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.25</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X.
+ However, if you are upgrading from a version earlier than 7.4.11,
+ see the release notes for 7.4.11.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Prevent error recursion crashes when encoding conversion fails (Tom)
+ </para>
+
+ <para>
+ This change extends fixes made in the last two minor releases for
+ related failure scenarios. The previous fixes were narrowly tailored
+ for the original problem reports, but we have now recognized that
+ <emphasis>any</> error thrown by an encoding conversion function could
+ potentially lead to infinite recursion while trying to report the
+ error. The solution therefore is to disable translation and encoding
+ conversion and report the plain-ASCII form of any error message,
+ if we find we have gotten into a recursive error reporting situation.
+ (CVE-2009-0922)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Disallow <command>CREATE CONVERSION</> with the wrong encodings
+ for the specified conversion function (Heikki)
+ </para>
+
+ <para>
+ This prevents one possible scenario for encoding conversion failure.
+ The previous change is a backstop to guard against other kinds of
+ failures in the same area.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix core dump when <function>to_char()</> is given format codes that
+ are inappropriate for the type of the data argument (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
+ of known timezone abbreviations (Xavier Bugaud)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-24">
+ <title>Release 7.4.24</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2009-02-02</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.23.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.24</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X.
+ However, if you are upgrading from a version earlier than 7.4.11,
+ see the release notes for 7.4.11.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Improve handling of URLs in <function>headline()</> function (Teodor)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve handling of overlength headlines in <function>headline()</>
+ function (Teodor)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Prevent possible Assert failure or misconversion if an encoding
+ conversion is created with the wrong conversion function for the
+ specified pair of encodings (Tom, Heikki)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Avoid unnecessary locking of small tables in <command>VACUUM</>
+ (Heikki)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix uninitialized variables in <filename>contrib/tsearch2</>'s
+ <function>get_covers()</> function (Teodor)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix bug in <function>to_char()</>'s handling of <literal>TH</>
+ format codes (Andreas Scherbaum)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make all documentation reference <literal>pgsql-bugs</> and/or
+ <literal>pgsql-hackers</> as appropriate, instead of the
+ now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
+ mailing lists (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-23">
+ <title>Release 7.4.23</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2008-11-03</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.22.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.23</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X.
+ However, if you are upgrading from a version earlier than 7.4.11,
+ see the release notes for 7.4.11.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Fix backend crash when the client encoding cannot represent a localized
+ error message (Tom)
+ </para>
+
+ <para>
+ We have addressed similar issues before, but it would still fail if
+ the <quote>character has no equivalent</> message itself couldn't
+ be converted. The fix is to disable localization and send the plain
+ ASCII error message when we detect such a situation.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix incorrect tsearch2 headline generation when single query
+ item matches first word of text (Sushant Sinha)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix improper display of fractional seconds in interval values when
+ using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
+ build (Ron Mayer)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
+ behave correctly when the passed tuple and tuple descriptor have
+ different numbers of columns (Tom)
+ </para>
+
+ <para>
+ This situation is normal when a table has had columns added or removed,
+ but these two functions didn't handle it properly.
+ The only likely consequence is an incorrect error indication.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <application>ecpg</>'s parsing of <command>CREATE USER</> (Michael)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-22">
+ <title>Release 7.4.22</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2008-09-22</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.21.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.22</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X.
+ However, if you are upgrading from a version earlier than 7.4.11,
+ see the release notes for 7.4.11.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Fix datetime input functions to correctly detect integer overflow when
+ running on a 64-bit platform (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve performance of writing very long log messages to syslog (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
+ ON</> query (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix planner to estimate that <literal>GROUP BY</> expressions yielding
+ boolean results always result in two groups, regardless of the
+ expressions' contents (Tom)
+ </para>
+
+ <para>
+ This is very substantially more accurate than the regular <literal>GROUP
+ BY</> estimate for certain boolean tests like <replaceable>col</>
+ <literal>IS NULL</>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve <application>pg_dump</> and <application>pg_restore</>'s
+ error reporting after failure to send a SQL command (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-21">
+ <title>Release 7.4.21</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2008-06-12</simpara>
+ </note>
+
+ <para>
+ This release contains one serious bug fix over 7.4.20.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.21</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X.
+ However, if you are upgrading from a version earlier than 7.4.11,
+ see the release notes for 7.4.11.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
+ </para>
+
+ <para>
+ Before this fix, a negative constant in a view or rule might be dumped
+ as, say, <literal>-42::integer</>, which is subtly incorrect: it should
+ be <literal>(-42)::integer</> due to operator precedence rules.
+ Usually this would make little difference, but it could interact with
+ another recent patch to cause
+ <productname>PostgreSQL</> to reject what had been a valid
+ <command>SELECT DISTINCT</> view query. Since this could result in
+ <application>pg_dump</> output failing to reload, it is being treated
+ as a high-priority fix. The only released versions in which dump
+ output is actually incorrect are 8.3.1 and 8.2.7.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-20">
+ <title>Release 7.4.20</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>never released</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.19.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.20</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X.
+ However, if you are upgrading from a version earlier than 7.4.11,
+ see the release notes for 7.4.11.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Fix conversions between ISO-8859-5 and other encodings to handle
+ Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
+ two dots) (Sergey Burladyan)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix a few datatype input functions
+ that were allowing unused bytes in their results to contain
+ uninitialized, unpredictable values (Tom)
+ </para>
+
+ <para>
+ This could lead to failures in which two apparently identical literal
+ values were not seen as equal, resulting in the parser complaining
+ about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
+ expressions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix a corner case in regular-expression substring matching
+ (<literal>substring(<replaceable>string</> from
+ <replaceable>pattern</>)</literal>) (Tom)
+ </para>
+
+ <para>
+ The problem occurs when there is a match to the pattern overall but
+ the user has specified a parenthesized subexpression and that
+ subexpression hasn't got a match. An example is
+ <literal>substring('foo' from 'foo(bar)?')</>.
+ This should return NULL, since <literal>(bar)</> isn't matched, but
+ it was mistakenly returning the whole-pattern match instead (ie,
+ <literal>foo</>).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix incorrect result from <application>ecpg</>'s
+ <function>PGTYPEStimestamp_sub()</> function (Michael)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</>
+ 4.3 (Tom)
+ </para>
+
+ <para>
+ This problem affects <quote>old style</> (V0) C functions that
+ return boolean. The fix is already in 8.3, but the need to
+ back-patch it was not realized at the time.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
+ race condition (Tom)
+ </para>
+
+ <para>
+ In rare cases a session that had just executed a
+ <command>LISTEN</> might not get a notification, even though
+ one would be expected because the concurrent transaction executing
+ <command>NOTIFY</> was observed to commit later.
+ </para>
+
+ <para>
+ A side effect of the fix is that a transaction that has executed
+ a not-yet-committed <command>LISTEN</> command will not see any
+ row in <structname>pg_listener</> for the <command>LISTEN</>,
+ should it choose to look; formerly it would have. This behavior
+ was never documented one way or the other, but it is possible that
+ some applications depend on the old behavior.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix display of constant expressions in <literal>ORDER BY</>
+ and <literal>GROUP BY</> (Tom)
+ </para>
+
+ <para>
+ An explictly casted constant would be shown incorrectly. This could
+ for example lead to corruption of a view definition during
+ dump and reload.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <application>libpq</> to handle NOTICE messages correctly
+ during COPY OUT (Tom)
+ </para>
+
+ <para>
+ This failure has only been observed to occur when a user-defined
+ datatype's output routine issues a NOTICE, but there is no
+ guarantee it couldn't happen due to other causes.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-19">
+ <title>Release 7.4.19</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2008-01-07</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.18,
+ including fixes for significant security issues.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.19</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ if you are upgrading from a version earlier than 7.4.11, see the release
+ notes for 7.4.11.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Prevent functions in indexes from executing with the privileges of
+ the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom)
+ </para>
+
+ <para>
+ Functions used in index expressions and partial-index
+ predicates are evaluated whenever a new table entry is made. It has
+ long been understood that this poses a risk of trojan-horse code
+ execution if one modifies a table owned by an untrustworthy user.
+ (Note that triggers, defaults, check constraints, etc. pose the
+ same type of risk.) But functions in indexes pose extra danger
+ because they will be executed by routine maintenance operations
+ such as <command>VACUUM FULL</>, which are commonly performed
+ automatically under a superuser account. For example, a nefarious user
+ can execute code with superuser privileges by setting up a
+ trojan-horse index definition and waiting for the next routine vacuum.
+ The fix arranges for standard maintenance operations
+ (including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>,
+ and <command>CLUSTER</>) to execute as the table owner rather than
+ the calling user, using the same privilege-switching mechanism already
+ used for <literal>SECURITY DEFINER</> functions. To prevent bypassing
+ this security measure, execution of <command>SET SESSION
+ AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a
+ <literal>SECURITY DEFINER</> context. (CVE-2007-6600)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
+ </para>
+
+ <para>
+ Suitably crafted regular-expression patterns could cause crashes,
+ infinite or near-infinite looping, and/or massive memory consumption,
+ all of which pose denial-of-service hazards for applications that
+ accept regex search patterns from untrustworthy sources.
+ (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require non-superusers who use <filename>/contrib/dblink</> to use only
+ password authentication, as a security measure (Joe)
+ </para>
+
+ <para>
+ The fix that appeared for this in 7.4.18 was incomplete, as it plugged
+ the hole for only some <filename>dblink</> functions. (CVE-2007-6601,
+ CVE-2007-3278)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix planner failure in some cases of <literal>WHERE false AND var IN
+ (SELECT ...)</> (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix potential crash in <function>translate()</> when using a multibyte
+ database encoding (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix PL/Python to not crash on long exception messages (Alvaro)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <application>ecpg</> parser fixes (Michael)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle
+ NULL rowid as a category in its own right, rather than crashing (Joe)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <type>tsvector</> and <type>tsquery</> output routines to
+ escape backslashes correctly (Teodor, Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix crash of <function>to_tsvector()</> on huge input strings (Teodor)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require a specific version of <productname>Autoconf</> to be used
+ when re-generating the <command>configure</> script (Peter)
+ </para>
+
+ <para>
+ This affects developers and packagers only. The change was made
+ to prevent accidental use of untested combinations of
+ <productname>Autoconf</> and <productname>PostgreSQL</> versions.
+ You can remove the version check if you really want to use a
+ different <productname>Autoconf</> version, but it's
+ your responsibility whether the result works or not.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-18">
+ <title>Release 7.4.18</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2007-09-17</simpara>
+ </note>
+
+ <para>
+ This release contains fixes from 7.4.17.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.18</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ if you are upgrading from a version earlier than 7.4.11, see the release
+ notes for 7.4.11.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Prevent index corruption when a transaction inserts rows and
+ then aborts close to the end of a concurrent <command>VACUUM</>
+ on the same table (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix excessive logging of <acronym>SSL</> error messages (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix crash when <varname>log_min_error_statement</> logging runs out
+ of memory (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Prevent <command>CLUSTER</> from failing
+ due to attempting to process temporary tables of other sessions (Alvaro)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require non-superusers who use <filename>/contrib/dblink</> to use only
+ password authentication, as a security measure (Joe)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-17">
+ <title>Release 7.4.17</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2007-04-23</simpara>
+ </note>
+
+ <para>
+ This release contains fixes from 7.4.16,
+ including a security fix.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.17</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ if you are upgrading from a version earlier than 7.4.11, see the release
+ notes for 7.4.11.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Support explicit placement of the temporary-table schema within
+ <varname>search_path</>, and disable searching it for functions
+ and operators (Tom)
+ </para>
+ <para>
+ This is needed to allow a security-definer function to set a
+ truly secure value of <varname>search_path</>. Without it,
+ an unprivileged SQL user can use temporary objects to execute code
+ with the privileges of the security-definer function (CVE-2007-2138).
+ See <command>CREATE FUNCTION</> for more information.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <filename>/contrib/tsearch2</> crash fixes (Teodor)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
+ <command>UPDATE</> chains (Tom, Pavan Deolasee)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix PANIC during enlargement of a hash index (bug introduced in 7.4.15)
+ (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-16">
+ <title>Release 7.4.16</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2007-02-05</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.15, including
+ a security fix.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.16</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ if you are upgrading from a version earlier than 7.4.11, see the release
+ notes for 7.4.11.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Remove security vulnerability that allowed connected users
+ to read backend memory (Tom)
+ </para>
+ <para>
+ The vulnerability involves suppressing the normal check that a SQL
+ function returns the data type it's declared to, or changing the
+ data type of a table column used in a SQL function (CVE-2007-0555).
+ This error can easily be exploited to cause a backend crash, and in
+ principle might be used to read database content that the user
+ should not be able to access.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix rare bug wherein btree index page splits could fail
+ due to choosing an infeasible split point (Heikki Linnakangas)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Tighten security of multi-byte character processing for UTF8 sequences
+ over three bytes long (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-15">
+ <title>Release 7.4.15</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2007-01-08</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.14.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.15</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ if you are upgrading from a version earlier than 7.4.11, see the release
+ notes for 7.4.11.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Improve handling of <function>getaddrinfo()</> on AIX (Tom)
+ </para>
+
+ <para>
+ This fixes a problem with starting the statistics collector,
+ among other things.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <quote>failed to re-find parent key</> errors in
+ <command>VACUUM</> (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix bugs affecting multi-gigabyte hash indexes (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix error when constructing an <literal>ARRAY[]</> made up of multiple
+ empty elements (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <function>to_number()</> and <function>to_char(numeric)</>
+ are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
+ new <application>initdb</> installs (Tom)
+ </para>
+
+ <para>
+ This is because <varname>lc_numeric</> can potentially
+ change the output of these functions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve index usage of regular expressions that use parentheses (Tom)
+ </para>
+
+ <para>
+ This improves <application>psql</> <literal>\d</> performance also.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-14">
+ <title>Release 7.4.14</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2006-10-16</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.13.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.14</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ if you are upgrading from a version earlier than 7.4.11, see the release
+ notes for 7.4.11.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Fix core dump when an untyped literal is taken as
+ANYARRAY</para></listitem>
+<listitem><para>Fix <function>string_to_array()</> to handle overlapping
+ matches for the separator string</para>
+<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>.
+</para></listitem>
+<listitem><para>Fix corner cases in pattern matching for
+ <application>psql</>'s <literal>\d</> commands</para></listitem>
+<listitem><para>Fix index-corrupting bugs in /contrib/ltree
+ (Teodor)</para></listitem>
+<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
+<listitem><para>Adjust regression tests for recent changes in US DST laws
+</para> </listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-13">
+ <title>Release 7.4.13</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2006-05-23</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.12,
+ including patches for extremely serious security issues.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.13</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ if you are upgrading from a version earlier than 7.4.11, see the release
+ notes for 7.4.11.
+ </para>
+
+ <para>
+ Full security against the SQL-injection attacks described in
+ CVE-2006-2313 and CVE-2006-2314 might require changes in application
+ code. If you have applications that embed untrustworthy strings
+ into SQL commands, you should examine them as soon as possible to
+ ensure that they are using recommended escaping techniques. In
+ most cases, applications should be using subroutines provided by
+ libraries or drivers (such as <application>libpq</>'s
+ <function>PQescapeStringConn()</>) to perform string escaping,
+ rather than relying on <foreignphrase>ad hoc</> code to do it.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Change the server to reject invalidly-encoded multibyte
+characters in all cases (Tatsuo, Tom)</para>
+<para>While <productname>PostgreSQL</> has been moving in this direction for
+some time, the checks are now applied uniformly to all encodings and all
+textual input, and are now always errors not merely warnings. This change
+defends against SQL-injection attacks of the type described in CVE-2006-2313.
+</para></listitem>
+
+<listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
+<para>As a server-side defense against SQL-injection attacks of the type
+described in CVE-2006-2314, the server now only accepts <literal>''</> and not
+<literal>\'</> as a representation of ASCII single quote in SQL string
+literals. By default, <literal>\'</> is rejected only when
+<varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
+GB18030, or UHC), which is the scenario in which SQL injection is possible.
+A new configuration parameter <varname>backslash_quote</> is available to
+adjust this behavior when needed. Note that full security against
+CVE-2006-2314 might require client-side changes; the purpose of
+<varname>backslash_quote</> is in part to make it obvious that insecure
+clients are insecure.
+</para></listitem>
+
+<listitem><para>Modify <application>libpq</>'s string-escaping routines to be
+aware of encoding considerations and
+<varname>standard_conforming_strings</></para>
+<para>This fixes <application>libpq</>-using applications for the security
+issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
+them against the planned changeover to SQL-standard string literal syntax.
+Applications that use multiple <productname>PostgreSQL</> connections
+concurrently should migrate to <function>PQescapeStringConn()</> and
+<function>PQescapeByteaConn()</> to ensure that escaping is done correctly
+for the settings in use in each database connection. Applications that
+do string escaping <quote>by hand</> should be modified to rely on library
+routines instead.
+</para></listitem>
+
+<listitem><para>Fix some incorrect encoding conversion functions</para>
+<para><function>win1251_to_iso</>, <function>alt_to_iso</>,
+<function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
+<function>mic_to_euc_tw</> were all broken to varying
+extents.
+</para></listitem>
+
+<listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
+(Bruce, Jan)</para></listitem>
+
+<listitem><para>Fix bug that sometimes caused OR'd index scans to
+miss rows they should have returned</para></listitem>
+
+<listitem><para>Fix WAL replay for case where a btree index has been
+truncated</para></listitem>
+
+<listitem><para>Fix <literal>SIMILAR TO</> for patterns involving
+<literal>|</> (Tom)</para></listitem>
+
+<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
+Fuhr)</para></listitem>
+
+<listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)</para></listitem>
+
+<listitem><para>Fix various minor memory leaks</para></listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-12">
+ <title>Release 7.4.12</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2006-02-14</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.11.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.12</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ if you are upgrading from a version earlier than 7.4.11, see the release
+ notes for 7.4.11.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+
+<listitem><para>Fix potential crash in <command>SET
+SESSION AUTHORIZATION</> (CVE-2006-0553)</para>
+<para>An unprivileged user could crash the server process, resulting in
+momentary denial of service to other users, if the server has been compiled
+with Asserts enabled (which is not the default).
+Thanks to Akio Ishida for reporting this problem.
+</para></listitem>
+
+<listitem><para>Fix bug with row visibility logic in self-inserted
+rows (Tom)</para>
+<para>Under rare circumstances a row inserted by the current command
+could be seen as already valid, when it should not be. Repairs bug
+created in 7.4.9 and 7.3.11 releases.
+</para></listitem>
+
+<listitem><para>Fix race condition that could lead to <quote>file already
+exists</> errors during pg_clog file creation
+(Tom)</para></listitem>
+
+<listitem><para>Properly check <literal>DOMAIN</> constraints for
+<literal>UNKNOWN</> parameters in prepared statements
+(Neil)</para></listitem>
+
+<listitem><para>Fix to allow restoring dumps that have cross-schema
+references to custom operators (Tom)</para></listitem>
+
+<listitem><para>Portability fix for testing presence of <function>finite</>
+and <function>isinf</> during configure (Tom)</para></listitem>
+
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-11">
+ <title>Release 7.4.11</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2006-01-09</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.10.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.11</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ if you are upgrading from a version earlier than 7.4.8, see the release
+ notes for 7.4.8.
+ Also, you might need to <command>REINDEX</> indexes on textual
+ columns after updating, if you are affected by the locale or
+ <application>plperl</> issues described below.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+
+<listitem><para>Fix for protocol-level Describe messages issued
+outside a transaction or in a failed transaction (Tom)</para></listitem>
+
+<listitem><para>Fix character string comparison for locales that consider
+different character combinations as equal, such as Hungarian (Tom)</para>
+<para>This might require <command>REINDEX</> to fix existing indexes on
+textual columns.</para></listitem>
+
+<listitem><para>Set locale environment variables during postmaster startup
+to ensure that <application>plperl</> won't change the locale later</para>
+<para>This fixes a problem that occurred if the <application>postmaster</> was
+started with environment variables specifying a different locale than what
+<application>initdb</> had been told. Under these conditions, any use of
+<application>plperl</> was likely to lead to corrupt indexes. You might need
+<command>REINDEX</> to fix existing indexes on
+textual columns if this has happened to you.</para></listitem>
+
+<listitem><para>Fix longstanding bug in strpos() and regular expression
+handling in certain rarely used Asian multi-byte character sets (Tatsuo)
+</para></listitem>
+
+<listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
+which caused it not to use all available salt space for MD5 and
+XDES algorithms (Marko Kreen, Solar Designer)</para>
+<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
+
+<listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
+rather than crashing, when the number of columns specified is different from
+what's actually returned by the query (Joe)</para></listitem>
+
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-10">
+ <title>Release 7.4.10</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2005-12-12</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.9.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.10</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ if you are upgrading from a version earlier than 7.4.8, see the release
+ notes for 7.4.8.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+
+<listitem><para>Fix race condition in transaction log management</para>
+<para>There was a narrow window in which an I/O operation could be initiated
+for the wrong page, leading to an Assert failure or data
+corruption.</para>
+</listitem>
+
+<listitem><para>Prevent failure if client sends Bind protocol message
+when current transaction is already aborted</para></listitem>
+
+<listitem><para><filename>/contrib/ltree</> fixes (Teodor)</para></listitem>
+
+<listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem>
+
+<listitem><para>Fix longstanding planning error for outer joins</para>
+<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
+only supported with merge-joinable join conditions</>.</para></listitem>
+
+<listitem><para>Prevent core dump in <application>pg_autovacuum</> when a
+table has been dropped</para></listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-9">
+ <title>Release 7.4.9</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2005-10-04</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.8.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.9</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ if you are upgrading from a version earlier than 7.4.8, see the release
+ notes for 7.4.8.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Fix error that allowed <command>VACUUM</> to remove
+<literal>ctid</> chains too soon, and add more checking in code that follows
+<literal>ctid</> links</para>
+<para>This fixes a long-standing problem that could cause crashes in very rare
+circumstances.</para></listitem>
+<listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified
+length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
+<para>In prior releases, the padding of <type>CHAR()</> was incorrect
+because it only padded to the specified number of bytes without
+considering how many characters were stored.</para></listitem>
+<listitem><para>Fix the sense of the test for read-only transaction
+in <command>COPY</></para>
+<para>The code formerly prohibited <command>COPY TO</>, where it should
+prohibit <command>COPY FROM</>.
+</para></listitem>
+<listitem><para>Fix planning problem with outer-join ON clauses that reference
+only the inner-side relation</para></listitem>
+<listitem><para>Further fixes for <literal>x FULL JOIN y ON true</> corner
+cases</para></listitem>
+<listitem><para>Make <function>array_in</> and <function>array_recv</> more
+paranoid about validating their OID parameter</para></listitem>
+<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
+a...</> with GiST index on column <literal>a</></para></listitem>
+<listitem><para>Improve robustness of datetime parsing</para></listitem>
+<listitem><para>Improve checking for partially-written WAL
+pages</para></listitem>
+<listitem><para>Improve robustness of signal handling when SSL is
+enabled</para></listitem>
+<listitem><para>Don't try to open more than <literal>max_files_per_process</>
+files during postmaster startup</para></listitem>
+<listitem><para>Various memory leakage fixes</para></listitem>
+<listitem><para>Various portability improvements</para></listitem>
+<listitem><para>Fix PL/PgSQL to handle <literal>var := var</> correctly when
+the variable is of pass-by-reference type</para></listitem>
+<listitem><para>Update <filename>contrib/tsearch2</> to use current Snowball
+code</para></listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-8">
+ <title>Release 7.4.8</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2005-05-09</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.7, including several
+ security-related issues.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.8</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ it is one possible way of handling two significant security problems
+ that have been found in the initial contents of 7.4.X system
+ catalogs. A dump/initdb/reload sequence using 7.4.8's initdb will
+ automatically correct these problems.
+ </para>
+
+ <para>
+ The larger security problem is that the built-in character set encoding
+ conversion functions can be invoked from SQL commands by unprivileged
+ users, but the functions were not designed for such use and are not
+ secure against malicious choices of arguments. The fix involves changing
+ the declared parameter list of these functions so that they can no longer
+ be invoked from SQL commands. (This does not affect their normal use
+ by the encoding conversion machinery.)
+ </para>
+
+ <para>
+ The lesser problem is that the <filename>contrib/tsearch2</> module
+ creates several functions that are misdeclared to return
+ <type>internal</> when they do not accept <type>internal</> arguments.
+ This breaks type safety for all functions using <type>internal</>
+ arguments.
+ </para>
+
+ <para>
+ It is strongly recommended that all installations repair these errors,
+ either by initdb or by following the manual repair procedures given
+ below. The errors at least allow unprivileged database users to crash
+ their server process, and might allow unprivileged users to gain the
+ privileges of a database superuser.
+ </para>
+
+ <para>
+ If you wish not to do an initdb, perform the following procedures instead.
+ As the database superuser, do:
+
+<programlisting>
+BEGIN;
+UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
+WHERE pronamespace = 11 AND pronargs = 5
+ AND proargtypes[2] = 'cstring'::regtype;
+-- The command should report having updated 90 rows;
+-- if not, rollback and investigate instead of committing!
+COMMIT;
+</programlisting>
+
+ Next, if you have installed <filename>contrib/tsearch2</>, do:
+
+<programlisting>
+BEGIN;
+UPDATE pg_proc SET proargtypes[0] = 'internal'::regtype
+WHERE oid IN (
+ 'dex_init(text)'::regprocedure,
+ 'snb_en_init(text)'::regprocedure,
+ 'snb_ru_init(text)'::regprocedure,
+ 'spell_init(text)'::regprocedure,
+ 'syn_init(text)'::regprocedure
+);
+-- The command should report having updated 5 rows;
+-- if not, rollback and investigate instead of committing!
+COMMIT;
+</programlisting>
+
+ If this command fails with a message like <quote>function
+ "dex_init(text)" does not exist</>, then either <filename>tsearch2</>
+ is not installed in this database, or you already did the update.
+ </para>
+
+ <para>
+ The above procedures must be carried out in <emphasis>each</> database
+ of an installation, including <literal>template1</>, and ideally
+ including <literal>template0</> as well. If you do not fix the
+ template databases then any subsequently created databases will contain
+ the same errors. <literal>template1</> can be fixed in the same way
+ as any other database, but fixing <literal>template0</> requires
+ additional steps. First, from any database issue:
+<programlisting>
+UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
+</programlisting>
+ Next connect to <literal>template0</> and perform the above repair
+ procedures. Finally, do:
+<programlisting>
+-- re-freeze template0:
+VACUUM FREEZE;
+-- and protect it against future alterations:
+UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
+</programlisting>
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Change encoding function signature to prevent
+misuse</para></listitem>
+<listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of
+<type>INTERNAL</> function results</para></listitem>
+<listitem><para>Repair ancient race condition that allowed a transaction to be
+seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
+than for other purposes</para>
+<para>This is an extremely serious bug since it could lead to apparent
+data inconsistencies being briefly visible to applications.</para></listitem>
+<listitem><para>Repair race condition between relation extension and
+VACUUM</para>
+<para>This could theoretically have caused loss of a page's worth of
+freshly-inserted data, although the scenario seems of very low probability.
+There are no known cases of it having caused more than an Assert failure.
+</para></listitem>
+<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
+<para>
+The comparison code was wrong in the case where the
+<literal>--enable-integer-datetimes</> configuration switch had been used.
+NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
+it will need to be <command>REINDEX</>ed after installing this update, because
+the fix corrects the sort order of column values.
+</para></listitem>
+<listitem><para>Fix <function>EXTRACT(EPOCH)</> for
+<type>TIME WITH TIME ZONE</> values</para></listitem>
+<listitem><para>Fix mis-display of negative fractional seconds in
+<type>INTERVAL</> values</para>
+<para>
+This error only occurred when the
+<literal>--enable-integer-datetimes</> configuration switch had been used.
+</para></listitem>
+<listitem><para>Ensure operations done during backend shutdown are counted by
+statistics collector</para>
+<para>
+This is expected to resolve reports of <application>pg_autovacuum</>
+not vacuuming the system catalogs often enough — it was not being
+told about catalog deletions caused by temporary table removal during
+backend exit.
+</para></listitem>
+<listitem><para>Additional buffer overrun checks in plpgsql
+(Neil)</para></listitem>
+<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
+correctly (Neil)</para></listitem>
+<listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
+(Marko Kreen)</para></listitem>
+<listitem><para>Still more 64-bit fixes for
+<filename>contrib/intagg</></para></listitem>
+<listitem><para>Prevent incorrect optimization of functions returning
+<type>RECORD</></para></listitem>
+<listitem><para>Prevent <function>to_char(interval)</> from dumping core for
+month-related formats</para></listitem>
+<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem>
+<listitem><para>Fix <function>array_map</> to call PL functions correctly</para></listitem>
+<listitem><para>Fix permission checking in <command>ALTER DATABASE RENAME</></para></listitem>
+<listitem><para>Fix <command>ALTER LANGUAGE RENAME</></para></listitem>
+<listitem><para>Make <function>RemoveFromWaitQueue</> clean up after itself</para>
+<para>
+This fixes a lock management error that would only be visible if a transaction
+was kicked out of a wait for a lock (typically by query cancel) and then the
+holder of the lock released it within a very narrow window.
+</para></listitem>
+<listitem><para>Fix problem with untyped parameter appearing in
+<command>INSERT ... SELECT</></para></listitem>
+<listitem><para>Fix <command>CLUSTER</> failure after
+<command>ALTER TABLE SET WITHOUT OIDS</></para></listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-7">
+ <title>Release 7.4.7</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2005-01-31</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.6, including several
+ security-related issues.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.4.7</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Disallow <command>LOAD</> to non-superusers</para>
+<para>
+On platforms that will automatically execute initialization functions of a
+shared library (this includes at least Windows and ELF-based Unixen),
+<command>LOAD</> can be used to make the server execute arbitrary code.
+Thanks to NGS Software for reporting this.</para></listitem>
+<listitem><para>Check that creator of an aggregate function has the right to
+execute the specified transition functions</para>
+<para>
+This oversight made it possible to bypass denial of EXECUTE
+permission on a function.</para></listitem>
+<listitem><para>Fix security and 64-bit issues in
+contrib/intagg</para></listitem>
+<listitem><para>Add needed STRICT marking to some contrib functions (Kris
+Jurka)</para></listitem>
+<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
+many parameters (Neil)</para></listitem>
+<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
+<para>
+The result of the join was mistakenly supposed to be sorted the same as the
+left input. This could not only deliver mis-sorted output to the user, but
+in case of nested merge joins could give outright wrong answers.
+</para></listitem>
+<listitem><para>Fix plperl for quote marks in tuple fields</para></listitem>
+<listitem><para>Fix display of negative intervals in SQL and GERMAN
+datestyles</para></listitem>
+<listitem><para>Make age(timestamptz) do calculation in local timezone not
+GMT</para></listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-6">
+ <title>Release 7.4.6</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2004-10-22</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.5.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.4.6</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Repair possible failure to update hint bits on disk</para>
+<para>
+Under rare circumstances this oversight could lead to
+<quote>could not access transaction status</> failures, which qualifies
+it as a potential-data-loss bug.
+</para></listitem>
+<listitem><para>Ensure that hashed outer join does not miss tuples</para>
+<para>
+Very large left joins using a hash join plan could fail to output unmatched
+left-side rows given just the right data distribution.
+</para></listitem>
+<listitem><para>Disallow running <application>pg_ctl</> as root</para>
+<para>
+This is to guard against any possible security issues.
+</para></listitem>
+<listitem><para>Avoid using temp files in <filename>/tmp</> in <command>make_oidjoins_check</command></para>
+<para>
+This has been reported as a security issue, though it's hardly worthy of
+concern since there is no reason for non-developers to use this script anyway.
+</para></listitem>
+<listitem><para>Prevent forced backend shutdown from re-emitting prior command
+result</para>
+<para>
+In rare cases, a client might think that its last command had succeeded when
+it really had been aborted by forced database shutdown.
+</para></listitem>
+<listitem><para>Repair bug in <function>pg_stat_get_backend_idset</function></para>
+<para>
+This could lead to misbehavior in some of the system-statistics views.
+</para></listitem>
+<listitem><para>Fix small memory leak in postmaster</para></listitem>
+<listitem><para>Fix <quote>expected both swapped tables to have TOAST
+tables</> bug</para>
+<para>
+This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN.
+</para></listitem>
+<listitem><para>Prevent <literal>pg_ctl restart</> from adding <literal>-D</> multiple times</para></listitem>
+<listitem><para>Fix problem with NULL values in GiST indexes</para></listitem>
+<listitem><para><literal>::</> is no longer interpreted as a variable in an
+ECPG prepare statement</para></listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-5">
+ <title>Release 7.4.5</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2004-08-18</simpara>
+ </note>
+
+ <para>
+ This release contains one serious bug fix over 7.4.4.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.4.5</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Repair possible crash during concurrent B-tree index insertions</para>
+<para>
+This patch fixes a rare case in which concurrent insertions into a B-tree index
+could result in a server panic. No permanent damage would result, but it's
+still worth a re-release. The bug does not exist in pre-7.4 releases.
+</para></listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-4">
+ <title>Release 7.4.4</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2004-08-16</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.3.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.4.4</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Prevent possible loss of committed transactions during crash</para>
+<para>
+Due to insufficient interlocking between transaction commit and checkpointing,
+it was possible for transactions committed just before the most recent
+checkpoint to be lost, in whole or in part, following a database crash and
+restart. This is a serious bug that has existed
+since <productname>PostgreSQL</productname> 7.1.
+</para></listitem>
+<listitem><para>Check HAVING restriction before evaluating result list of an
+aggregate plan</para></listitem>
+<listitem><para>Avoid crash when session's current user ID is deleted</para></listitem>
+<listitem><para>Fix hashed crosstab for zero-rows case (Joe)</para></listitem>
+<listitem><para>Force cache update after renaming a column in a foreign key</para></listitem>
+<listitem><para>Pretty-print UNION queries correctly</para></listitem>
+<listitem><para>Make psql handle <literal>\r\n</> newlines properly in COPY IN</para></listitem>
+<listitem><para><application>pg_dump</> handled ACLs with grant options incorrectly</para></listitem>
+<listitem><para>Fix thread support for OS X and Solaris</para></listitem>
+<listitem><para>Updated JDBC driver (build 215) with various fixes</para></listitem>
+<listitem><para>ECPG fixes</para></listitem>
+<listitem><para>Translation updates (various contributors)</para></listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-3">
+ <title>Release 7.4.3</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2004-06-14</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.2.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.4.3</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Fix temporary memory leak when using non-hashed aggregates (Tom)</para></listitem>
+<listitem><para>ECPG fixes, including some for Informix compatibility (Michael)</para></listitem>
+<listitem><para>Fixes for compiling with thread-safety, particularly Solaris (Bruce)</para></listitem>
+<listitem><para>Fix error in COPY IN termination when using the old network protocol (ljb)</para></listitem>
+<listitem><para>Several important fixes in pg_autovacuum, including fixes for
+large tables, unsigned oids, stability, temp tables, and debug mode
+(Matthew T. O'Connor)</para></listitem>
+<listitem><para>Fix problem with reading tar-format dumps on NetBSD and BSD/OS (Bruce)</para></listitem>
+<listitem><para>Several JDBC fixes</para></listitem>
+<listitem><para>Fix ALTER SEQUENCE RESTART where last_value equals the restart value (Tom)</para></listitem>
+<listitem><para>Repair failure to recalculate nested sub-selects (Tom)</para></listitem>
+<listitem><para>Fix problems with non-constant expressions in LIMIT/OFFSET</para></listitem>
+<listitem><para>Support FULL JOIN with no join clause, such as X FULL JOIN Y ON TRUE (Tom)</para></listitem>
+<listitem><para>Fix another zero-column table bug (Tom)</para></listitem>
+<listitem><para>Improve handling of non-qualified identifiers in GROUP BY clauses in sub-selects (Tom)</para>
+<para>
+Select-list aliases within the sub-select will now take precedence over
+names from outer query levels.
+</para></listitem>
+<listitem><para>Do not generate <quote>NATURAL CROSS JOIN</> when decompiling rules (Tom)</para></listitem>
+<listitem><para>Add checks for invalid field length in binary COPY (Tom)</para>
+<para>
+ This fixes a difficult-to-exploit security hole.
+</para></listitem>
+<listitem><para>Avoid locking conflict between <command>ANALYZE</command> and <command>LISTEN</command>/<command>NOTIFY</command></para></listitem>
+<listitem><para>Numerous translation updates (various contributors)</para></listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-2">
+ <title>Release 7.4.2</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2004-03-08</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.1.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.4.2</title>
+
+ <para>
+ A dump/restore is not required for those running 7.4.X. However,
+ it might be advisable as the easiest method of incorporating fixes for
+ two errors that have been found in the initial contents of 7.4.X system
+ catalogs. A dump/initdb/reload sequence using 7.4.2's initdb will
+ automatically correct these problems.
+ </para>
+
+ <para>
+ The more severe of the two errors is that data type <type>anyarray</>
+ has the wrong alignment label; this is a problem because the
+ <structname>pg_statistic</> system catalog uses <type>anyarray</>
+ columns. The mislabeling can cause planner misestimations and even
+ crashes when planning queries that involve <literal>WHERE</> clauses on
+ double-aligned columns (such as <type>float8</> and <type>timestamp</>).
+ It is strongly recommended that all installations repair this error,
+ either by initdb or by following the manual repair procedure given
+ below.
+ </para>
+
+ <para>
+ The lesser error is that the system view <structname>pg_settings</>
+ ought to be marked as having public update access, to allow
+ <literal>UPDATE pg_settings</> to be used as a substitute for
+ <command>SET</>. This can also be fixed either by initdb or manually,
+ but it is not necessary to fix unless you want to use <literal>UPDATE
+ pg_settings</>.
+ </para>
+
+ <para>
+ If you wish not to do an initdb, the following procedure will work
+ for fixing <structname>pg_statistic</>. As the database superuser,
+ do:
+
+<programlisting>
+-- clear out old data in pg_statistic:
+DELETE FROM pg_statistic;
+VACUUM pg_statistic;
+-- this should update 1 row:
+UPDATE pg_type SET typalign = 'd' WHERE oid = 2277;
+-- this should update 6 rows:
+UPDATE pg_attribute SET attalign = 'd' WHERE atttypid = 2277;
+--
+-- At this point you MUST start a fresh backend to avoid a crash!
+--
+-- repopulate pg_statistic:
+ANALYZE;
+</programlisting>
+
+ This can be done in a live database, but beware that all backends
+ running in the altered database must be restarted before it is safe to
+ repopulate <structname>pg_statistic</>.
+ </para>
+
+ <para>
+ To repair the <structname>pg_settings</> error, simply do:
+<programlisting>
+GRANT SELECT, UPDATE ON pg_settings TO PUBLIC;
+</programlisting>
+ </para>
+
+ <para>
+ The above procedures must be carried out in <emphasis>each</> database
+ of an installation, including <literal>template1</>, and ideally
+ including <literal>template0</> as well. If you do not fix the
+ template databases then any subsequently created databases will contain
+ the same errors. <literal>template1</> can be fixed in the same way
+ as any other database, but fixing <literal>template0</> requires
+ additional steps. First, from any database issue:
+<programlisting>
+UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
+</programlisting>
+ Next connect to <literal>template0</> and perform the above repair
+ procedures. Finally, do:
+<programlisting>
+-- re-freeze template0:
+VACUUM FREEZE;
+-- and protect it against future alterations:
+UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
+</programlisting>
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<para>
+ Release 7.4.2 incorporates all the fixes included in release 7.3.6,
+ plus the following fixes:
+</para>
+
+<itemizedlist>
+<listitem><para>Fix <structname>pg_statistics</> alignment bug that could crash optimizer</para>
+<para>See above for details about this problem.</para></listitem>
+<listitem><para>Allow non-super users to update <structname>pg_settings</></para></listitem>
+<listitem><para>Fix several optimizer bugs, most of which led to
+<quote>variable not found in subplan target lists</> errors</para></listitem>
+<listitem><para>Avoid out-of-memory failure during startup of large multiple
+index scan</para></listitem>
+<listitem><para>Fix multibyte problem that could lead to <quote>out of
+memory</> error during <command>COPY IN</></para></listitem>
+<listitem><para>Fix problems with <command>SELECT INTO</> / <command>CREATE
+TABLE AS</> from tables without OIDs</para></listitem>
+<listitem><para>Fix problems with <filename>alter_table</> regression test
+during parallel testing</para></listitem>
+<listitem><para>Fix problems with hitting open file limit, especially on OS X (Tom)</para></listitem>
+<listitem><para>Partial fix for Turkish-locale issues</para>
+<para>initdb will succeed now in Turkish locale, but there are still some
+inconveniences associated with the <literal>i/I</> problem.</para></listitem>
+<listitem><para>Make pg_dump set client encoding on restore</para></listitem>
+<listitem><para>Other minor pg_dump fixes</para></listitem>
+<listitem><para>Allow ecpg to again use C keywords as column names (Michael)</para></listitem>
+<listitem><para>Added ecpg <literal>WHENEVER NOT_FOUND</> to
+<literal>SELECT/INSERT/UPDATE/DELETE</> (Michael)</para></listitem>
+<listitem><para>Fix ecpg crash for queries calling set-returning functions (Michael)</para></listitem>
+<listitem><para>Various other ecpg fixes (Michael)</para></listitem>
+<listitem><para>Fixes for Borland compiler</para></listitem>
+<listitem><para>Thread build improvements (Bruce)</para></listitem>
+<listitem><para>Various other build fixes</para></listitem>
+<listitem><para>Various JDBC fixes</para></listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-4-1">
+ <title>Release 7.4.1</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2003-12-22</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.4.
+ For information about new features in the 7.4 major release, see
+ <xref linkend="release-7-4">.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.4.1</title>
+
+ <para>
+ A dump/restore is <emphasis>not</emphasis> required for those
+ running 7.4.
+ </para>
+
+ <para>
+ If you want to install the fixes in the information schema
+ you need to reload it into the database.
+ This is either accomplished by initializing a new cluster
+ by running <command>initdb</command>, or by running the following
+ sequence of SQL commands in each database (ideally including
+ <literal>template1</literal>) as a superuser in
+ <application>psql</application>, after installing the new release:
+<programlisting>
+DROP SCHEMA information_schema CASCADE;
+\i /usr/local/pgsql/share/information_schema.sql
+</programlisting>
+ Substitute your installation path in the second command.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Fixed bug in <command>CREATE SCHEMA</command> parsing in ECPG (Michael)</para></listitem>
+<listitem><para>Fix compile error when <option>--enable-thread-safety</option> and <option>--with-perl</option> are used together (Peter)</para></listitem>
+<listitem><para>Fix for subqueries that used hash joins (Tom)</para>
+<para>
+ Certain subqueries that used hash joins would crash because of
+ improperly shared structures.
+</para></listitem>
+<listitem><para>Fix free space map compaction bug (Tom)</para>
+<para>
+ This fixes a bug where compaction of the free space map could lead
+ to a database server shutdown.
+</para>
+</listitem>
+<listitem><para>Fix for Borland compiler build of libpq (Bruce)</para></listitem>
+<listitem><para>Fix <function>netmask()</function> and <function>hostmask()</function> to return the maximum-length masklen (Tom)</para>
+<para>
+ Fix these functions to return values consistent with pre-7.4
+ releases.
+</para>
+</listitem>
+<listitem><para>Several <filename>contrib/pg_autovacuum</filename> fixes</para>
+<para>
+ Fixes include improper variable initialization, missing vacuum after
+ <command>TRUNCATE</command>, and duration computation overflow for long vacuums.
+</para>
+</listitem>
+<listitem><para>Allow compile of <filename>contrib/cube</filename> under Cygwin (Jason Tishler)</para></listitem>
+<listitem><para>Fix Solaris use of password file when no passwords are defined (Tom)</para>
+<para>
+ Fix crash on Solaris caused by use of any type of password
+ authentication when no passwords were defined.
+</para>
+</listitem>
+<listitem><para>JDBC fix for thread problems, other fixes</para></listitem>
+<listitem><para>Fix for <type>bytea</type> index lookups (Joe)</para></listitem>
+<listitem><para>Fix information schema for bit data types (Peter)</para></listitem>
+<listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem>
+<listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem>
+<listitem><para>Make <function>PQescapeBytea</function> and <function>byteaout</function> consistent with each other (Joe)</para></listitem>
+<listitem><para>Escape <type>bytea</type> output for bytes > 0x7e(Joe)</para>
+<para>
+ If different client encodings are used for <type>bytea</type> output and input, it
+ is possible for <type>bytea</type> values to be corrupted by the differing
+ encodings. This fix escapes all bytes that might be affected.
+</para>
+</listitem>
+<listitem><para>Added missing <function>SPI_finish()</function> calls to dblink's <function>get_tuple_of_interest()</function> (Joe)</para></listitem>
+<listitem><para>New Czech FAQ</para></listitem>
+<listitem><para>Fix information schema view <literal>constraint_column_usage</literal> for foreign keys (Peter)</para></listitem>
+<listitem><para>ECPG fixes (Michael)</para></listitem>
+<listitem><para>Fix bug with multiple <literal>IN</literal> subqueries and joins in the subqueries (Tom)</para></listitem>
+<listitem><para>Allow <literal>COUNT('x')</literal> to work (Tom)</para></listitem>
+<listitem><para>Install ECPG include files for Informix compatibility into separate directory (Peter)</para>
+<para>
+ Some names of ECPG include files for Informix compatibility conflicted with operating system include files.
+ By installing them in their own directory, name conflicts have been reduced.
+</para>
+</listitem>
+<listitem><para>Fix SSL memory leak (Neil)</para>
+<para>
+ This release fixes a bug in 7.4 where SSL didn't free all memory it allocated.
+</para>
+</listitem>
+<listitem><para>Prevent <filename>pg_service.conf</filename> from using service name as default dbname (Bruce)</para></listitem>
+<listitem><para>Fix local ident authentication on FreeBSD (Tom)</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+<sect1 id="release-7-4">
+ <title>Release 7.4</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2003-11-17</simpara>
+ </note>
+
+ <sect2>
+ <title>Overview</title>
+
+ <para>
+ Major changes in this release:
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <literal>IN</literal> / <literal>NOT IN</literal> subqueries are
+ now much more efficient
+ </term>
+
+ <listitem>
+ <para>
+ In previous releases, <literal>IN</literal>/<literal>NOT
+ IN</literal> subqueries were joined to the upper query by
+ sequentially scanning the subquery looking for a match. The
+ 7.4 code uses the same sophisticated techniques used by
+ ordinary joins and so is much faster. An
+ <literal>IN</literal> will now usually be as fast as or faster
+ than an equivalent <literal>EXISTS</literal> subquery; this
+ reverses the conventional wisdom that applied to previous
+ releases.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Improved <literal>GROUP BY</literal> processing by using hash buckets
+ </term>
+
+ <listitem>
+ <para>
+ In previous releases, rows to be grouped had to be sorted
+ first. The 7.4 code can do <literal>GROUP BY</literal>
+ without sorting, by accumulating results into a hash table
+ with one entry per group. It will still use the sort
+ technique, however, if the hash table is estimated to be too
+ large to fit in <varname>sort_mem</>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ New multikey hash join capability
+ </term>
+
+ <listitem>
+ <para>
+ In previous releases, hash joins could only occur on single
+ keys. This release allows multicolumn hash joins.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Queries using the explicit <literal>JOIN</literal> syntax are
+ now better optimized
+ </term>
+
+ <listitem>
+ <para>
+ Prior releases evaluated queries using the explicit
+ <literal>JOIN</literal> syntax only in the order implied by
+ the syntax. 7.4 allows full optimization of these queries,
+ meaning the optimizer considers all possible join orderings
+ and chooses the most efficient. Outer joins, however, must
+ still follow the declared ordering.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Faster and more powerful regular expression code
+ </term>
+
+ <listitem>
+ <para>
+ The entire regular expression module has been replaced with a
+ new version by Henry Spencer, originally written for Tcl. The
+ code greatly improves performance and supports several flavors
+ of regular expressions.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Function-inlining for simple SQL functions
+ </term>
+
+ <listitem>
+ <para>
+ Simple SQL functions can now be inlined by including their SQL
+ in the main query. This improves performance by eliminating
+ per-call overhead. That means simple SQL functions now
+ behave like macros.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Full support for IPv6 connections and IPv6 address data types
+ </term>
+
+ <listitem>
+ <para>
+ Previous releases allowed only IPv4 connections, and the IP
+ data types only supported IPv4 addresses. This release adds
+ full IPv6 support in both of these areas.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Major improvements in SSL performance and reliability
+ </term>
+
+ <listitem>
+ <para>
+ Several people very familiar with the SSL API have overhauled
+ our SSL code to improve SSL key negotiation and error
+ recovery.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Make free space map efficiently reuse empty index pages,
+ and other free space management improvements
+ </term>
+
+ <listitem>
+ <para>
+ In previous releases, B-tree index pages that were left empty
+ because of deleted rows could only be reused by rows with
+ index values similar to the rows originally indexed on that
+ page. In 7.4, <command>VACUUM</command> records empty index
+ pages and allows them to be reused for any future index rows.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ SQL-standard information schema
+ </term>
+
+ <listitem>
+ <para>
+ The information schema provides a standardized and stable way
+ to access information about the schema objects defined in a
+ database.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Cursors conform more closely to the SQL standard
+ </term>
+
+ <listitem>
+ <para>
+ The commands <command>FETCH</command> and
+ <command>MOVE</command> have been overhauled to conform more
+ closely to the SQL standard.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Cursors can exist outside transactions
+ </term>
+
+ <listitem>
+ <para>
+ These cursors are also called holdable cursors.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ New client-to-server protocol
+ </term>
+
+ <listitem>
+ <para>
+ The new protocol adds error codes, more status information,
+ faster startup, better support for binary data transmission,
+ parameter values separated from SQL commands, prepared
+ statements available at the protocol level, and cleaner
+ recovery from <command>COPY</command> failures. The older
+ protocol is still supported by both server and clients.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <application>libpq</application> and
+ <application>ECPG</application> applications are now fully
+ thread-safe
+ </term>
+
+ <listitem>
+ <para>
+ While previous <application>libpq</application> releases
+ already supported threads, this release improves thread safety
+ by fixing some non-thread-safe code that was used during
+ database connection startup. The <command>configure</command>
+ option <option>--enable-thread-safety</option> must be used to
+ enable this feature.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ New version of full-text indexing
+ </term>
+
+ <listitem>
+ <para>
+ A new full-text indexing suite is available in
+ <filename>contrib/tsearch2</filename>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ New autovacuum tool
+ </term>
+
+ <listitem>
+ <para>
+ The new autovacuum tool in
+ <filename>contrib/autovacuum</filename> monitors the database
+ statistics tables for
+ <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
+ activity and automatically vacuums tables when needed.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ Array handling has been improved and moved into the server core
+ </term>
+
+ <listitem>
+ <para>
+ Many array limitations have been removed, and arrays behave
+ more like fully-supported data types.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect2>
+
+ <sect2>
+ <title>Migration to Version 7.4</title>
+
+ <para>
+ A dump/restore using <application>pg_dump</application> is
+ required for those wishing to migrate data from any previous
+ release.
+ </para>
+
+ <para>
+ Observe the following incompatibilities:
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ The server-side autocommit setting was removed and
+ reimplemented in client applications and languages.
+ Server-side autocommit was causing too many problems with
+ languages and applications that wanted to control their own
+ autocommit behavior, so autocommit was removed from the server
+ and added to individual client APIs as appropriate.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Error message wording has changed substantially in this
+ release. Significant effort was invested to make the messages
+ more consistent and user-oriented. If your applications try to
+ detect different error conditions by parsing the error message,
+ you are strongly encouraged to use the new error code facility instead.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Inner joins using the explicit <literal>JOIN</literal> syntax
+ might behave differently because they are now better
+ optimized.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A number of server configuration parameters have been renamed
+ for clarity, primarily those related to
+ logging.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>FETCH 0</literal> or <literal>MOVE 0</literal> now
+ does nothing. In prior releases, <literal>FETCH 0</literal>
+ would fetch all remaining rows, and <literal>MOVE 0</literal>
+ would move to the end of the cursor.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>FETCH</command> and <command>MOVE</command> now return
+ the actual number of rows fetched/moved, or zero if at the
+ beginning/end of the cursor. Prior releases would return the
+ row count passed to the command, not the number of rows
+ actually fetched or moved.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>COPY</command> now can process files that use
+ carriage-return or carriage-return/line-feed end-of-line
+ sequences. Literal carriage-returns and line-feeds are no
+ longer accepted in data values; use <literal>\r</literal> and
+ <literal>\n</literal> instead.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Trailing spaces are now trimmed when converting from type
+ <type>char(<replaceable>n</>)</type> to
+ <type>varchar(<replaceable>n</>)</type> or <type>text</type>.
+ This is what most people always expected to happen anyway.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The data type <type>float(<replaceable>p</>)</type> now
+ measures <replaceable>p</> in binary digits, not decimal
+ digits. The new behavior follows the SQL standard.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Ambiguous date values now must match the ordering specified by
+ the <varname>datestyle</varname> setting. In prior releases, a
+ date specification of <literal>10/20/03</> was interpreted as a
+ date in October even if <varname>datestyle</> specified that
+ the day should be first. 7.4 will throw an error if a date
+ specification is invalid for the current setting of
+ <varname>datestyle</>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The functions <function>oidrand</function>,
+ <function>oidsrand</function>, and
+ <function>userfntest</function> have been removed. These
+ functions were determined to be no longer useful.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ String literals specifying time-varying date/time values, such
+ as <literal>'now'</literal> or <literal>'today'</literal> will
+ no longer work as expected in column default expressions; they
+ now cause the time of the table creation to be the default, not
+ the time of the insertion. Functions such as
+ <function>now()</>, <function>current_timestamp</>, or
+ <function>current_date</function> should be used instead.
+ </para>
+
+ <para>
+ In previous releases, there was special code so that strings
+ such as <literal>'now'</literal> were interpreted at
+ <command>INSERT</> time and not at table creation time, but
+ this work around didn't cover all cases. Release 7.4 now
+ requires that defaults be defined properly using functions such
+ as <function>now()</> or <function>current_timestamp</>. These
+ will work in all situations.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The dollar sign (<literal>$</>) is no longer allowed in
+ operator names. It can instead be a non-first character in
+ identifiers. This was done to improve compatibility with other
+ database systems, and to avoid syntax problems when parameter
+ placeholders (<literal>$<replaceable>n</></>) are written
+ adjacent to operators.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <para>
+ Below you will find a detailed account of the changes between
+ release 7.4 and the previous major release.
+ </para>
+
+ <sect3>
+ <title>Server Operation Changes</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ Allow IPv6 server connections (Nigel Kukard, Johan Jordaan,
+ Bruce, Tom, Kurt Roeckx, Andrew Dunstan)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix SSL to handle errors cleanly (Nathan Mueller)
+ </para>
+ <para>
+ In prior releases, certain SSL API error reports were not
+ handled correctly. This release fixes those problems.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ SSL protocol security and performance improvements (Sean Chittenden)
+ </para>
+ <para>
+ SSL key renegotiation was happening too frequently, causing poor
+ SSL performance. Also, initial key handling was improved.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Print lock information when a deadlock is detected (Tom)
+ </para>
+ <para>
+ This allows easier debugging of deadlock situations.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Update <filename>/tmp</filename> socket modification times
+ regularly to avoid their removal (Tom)
+ </para>
+ <para>
+ This should help prevent <filename>/tmp</filename> directory
+ cleaner administration scripts from removing server socket
+ files.
+ </para>
+ </listitem>
+
+ <listitem><para>Enable PAM for Mac OS X (Aaron Hillegass)</para></listitem>
+
+ <listitem>
+ <para>Make B-tree indexes fully WAL-safe (Tom)</para>
+ <para>
+ In prior releases, under certain rare cases, a server crash
+ could cause B-tree indexes to become corrupt. This release
+ removes those last few rare cases.
+ </para>
+ </listitem>
+
+ <listitem><para>Allow B-tree index compaction and empty page reuse (Tom)</para></listitem>
+
+ <listitem>
+ <para>
+ Fix inconsistent index lookups during split of first root page (Tom)
+ </para>
+ <para>
+ In prior releases, when a single-page index split into two
+ pages, there was a brief period when another database session
+ could miss seeing an index entry. This release fixes that rare
+ failure case.
+ </para>
+ </listitem>
+
+ <listitem><para>Improve free space map allocation logic (Tom)</para></listitem>
+
+ <listitem>
+ <para>Preserve free space information between server restarts (Tom)</para>
+ <para>
+ In prior releases, the free space map was not saved when the
+ postmaster was stopped, so newly started servers had no free
+ space information. This release saves the free space map, and
+ reloads it when the server is restarted.
+ </para>
+ </listitem>
+
+ <listitem><para>Add start time to <literal>pg_stat_activity</literal> (Neil)</para></listitem>
+ <listitem><para>New code to detect corrupt disk pages; erase with <varname>zero_damaged_pages</varname> (Tom)</para></listitem>
+ <listitem><para>New client/server protocol: faster, no username length limit, allow clean exit from <command>COPY</command> (Tom)</para></listitem>
+ <listitem><para>Add transaction status, table ID, column ID to client/server protocol (Tom)</para></listitem>
+ <listitem><para>Add binary I/O to client/server protocol (Tom)</para></listitem>
+ <listitem><para>Remove autocommit server setting; move to client applications (Tom)</para></listitem>
+ <listitem><para>New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter)</para></listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Performance Improvements</title>
+
+ <itemizedlist>
+ <listitem><para>Add hashing for <literal>GROUP BY</literal> aggregates (Tom)</para></listitem>
+ <listitem><para>Make nested-loop joins be smarter about multicolumn indexes (Tom)</para></listitem>
+ <listitem><para>Allow multikey hash joins (Tom)</para></listitem>
+ <listitem><para>Improve constant folding (Tom)</para></listitem>
+ <listitem><para>Add ability to inline simple SQL functions (Tom)</para></listitem>
+
+ <listitem>
+ <para>Reduce memory usage for queries using complex functions (Tom)</para>
+ <para>
+ In prior releases, functions returning allocated memory would
+ not free it until the query completed. This release allows the
+ freeing of function-allocated memory when the function call
+ completes, reducing the total memory used by functions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Improve GEQO optimizer performance (Tom)</para>
+ <para>
+ This release fixes several inefficiencies in the way the GEQO optimizer
+ manages potential query paths.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow <literal>IN</>/<literal>NOT IN</> to be handled via hash
+ tables (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve <literal>NOT IN (<replaceable>subquery</>)</literal>
+ performance (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow most <literal>IN</literal> subqueries to be processed as
+ joins (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Pattern matching operations can use indexes regardless of
+ locale (Peter)
+ </para>
+ <para>
+ There is no way for non-ASCII locales to use the standard
+ indexes for <literal>LIKE</literal> comparisons. This release
+ adds a way to create a special index for
+ <literal>LIKE</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Allow the postmaster to preload libraries using <varname>preload_libraries</varname> (Joe)</para>
+ <para>
+ For shared libraries that require a long time to load, this
+ option is available so the library can be preloaded in the
+ postmaster and inherited by all database sessions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve optimizer cost computations, particularly for subqueries (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Avoid sort when subquery <literal>ORDER BY</literal> matches upper query (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Deduce that <literal>WHERE a.x = b.y AND b.y = 42</literal> also
+ means <literal>a.x = 42</literal> (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow hash/merge joins on complex joins (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow hash joins for more data types (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow join optimization of explicit inner joins, disable with
+ <varname>join_collapse_limit</varname> (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add parameter <varname>from_collapse_limit</varname> to control
+ conversion of subqueries to joins (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use faster and more powerful regular expression code from Tcl
+ (Henry Spencer, Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use bit-mapped relation sets in the optimizer (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Improve connection startup time (Tom)</para>
+ <para>
+ The new client/server protocol requires fewer network packets to
+ start a database session.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve trigger/constraint performance (Stephan)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve speed of <literal>col IN (const, const, const, ...)</literal> (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix hash indexes which were broken in rare cases (Tom)
+ </para>
+ </listitem>
+
+ <listitem><para>Improve hash index concurrency and speed (Tom)</para>
+ <para>
+ Prior releases suffered from poor hash index performance,
+ particularly for high concurrency situations. This release fixes
+ that, and the development group is interested in reports
+ comparing B-tree and hash index performance.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)</para>
+ <para>
+ Certain CPU's perform faster data copies when addresses are
+ 32-byte aligned.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Data type <type>numeric</type> reimplemented for better performance (Tom)</para>
+ <para>
+ <type>numeric</type> used to be stored in base 100. The new code
+ uses base 10000, for significantly better performance.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Server Configuration Changes</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Rename server parameter <varname>server_min_messages</> to <varname>log_min_messages</> (Bruce)</para>
+ <para>
+ This was done so most parameters that control the server logs
+ begin with <literal>log_</>.
+ </para>
+ </listitem>
+
+ <listitem><para>Rename <varname>show_*_stats</> to <varname>log_*_stats</> (Bruce)</para></listitem>
+ <listitem><para>Rename <varname>show_source_port</> to <varname>log_source_port</> (Bruce)</para></listitem>
+ <listitem><para>Rename <varname>hostname_lookup</> to <varname>log_hostname</> (Bruce)</para></listitem>
+
+ <listitem>
+ <para>Add <varname>checkpoint_warning</> to warn of excessive checkpointing (Bruce)</para>
+ <para>
+ In prior releases, it was difficult to determine if checkpoint
+ was happening too frequently. This feature adds a warning to the
+ server logs when excessive checkpointing happens.
+ </para>
+ </listitem>
+
+ <listitem><para>New read-only server parameters for localization (Tom)</para></listitem>
+
+ <listitem>
+ <para>
+ Change debug server log messages to output as <literal>DEBUG</>
+ rather than <literal>LOG</> (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Prevent server log variables from being turned off by non-superusers (Bruce)</para>
+ <para>
+ This is a security feature so non-superusers cannot disable
+ logging that was enabled by the administrator.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <varname>log_min_messages</>/<varname>client_min_messages</> now
+ controls <varname>debug_*</> output (Bruce)
+ </para>
+ <para>
+ This centralizes client debug information so all debug output
+ can be sent to either the client or server logs.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Add Mac OS X Rendezvous server support (Chris Campbell)</para>
+ <para>
+ This allows Mac OS X hosts to query the network for available
+ <productname>PostgreSQL</productname> servers.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add ability to print only slow statements using
+ <varname>log_min_duration_statement</varname>
+ (Christopher)
+ </para>
+ <para>
+ This is an often requested debugging feature that allows
+ administrators to see only slow queries in their server logs.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Allow <filename>pg_hba.conf</filename> to accept netmasks in CIDR format (Andrew Dunstan)</para>
+ <para>
+ This allows administrators to merge the host IP address and
+ netmask fields into a single CIDR field in <filename>pg_hba.conf</filename>.
+ </para>
+ </listitem>
+
+ <listitem><para>New read-only parameter <varname>is_superuser</varname> (Tom)</para></listitem>
+
+ <listitem>
+ <para>New parameter <varname>log_error_verbosity</varname> to control error detail (Tom)</para>
+ <para>
+ This works with the new error reporting feature to supply
+ additional error information like hints, file names and line
+ numbers.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>postgres --describe-config</literal> now dumps server config variables (Aizaz Ahmed, Peter)</para>
+ <para>
+ This option is useful for administration tools that need to know
+ the configuration variable names and their minimums, maximums,
+ defaults, and descriptions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add new columns in <literal>pg_settings</literal>:
+ <literal>context</>, <literal>type</>, <literal>source</>,
+ <literal>min_val</>, <literal>max_val</> (Joe)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make default <varname>shared_buffers</> 1000 and
+ <varname>max_connections</> 100, if possible (Tom)
+ </para>
+ <para>
+ Prior versions defaulted to 64 shared buffers so <productname>PostgreSQL</productname>
+ would start on even very old systems. This release tests the
+ amount of shared memory allowed by the platform and selects more
+ reasonable default values if possible. Of course, users are
+ still encouraged to evaluate their resource load and size
+ <varname>shared_buffers</varname> accordingly.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ New <filename>pg_hba.conf</filename> record type
+ <literal>hostnossl</> to prevent SSL connections (Jon
+ Jensen)
+ </para>
+ <para>
+ In prior releases, there was no way to prevent SSL connections
+ if both the client and server supported SSL. This option allows
+ that capability.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Remove parameter <varname>geqo_random_seed</varname>
+ (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add server parameter <varname>regex_flavor</varname> to control regular expression processing (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <command>pg_ctl</command> better handle nonstandard ports (Greg)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Query Changes</title>
+
+ <itemizedlist>
+ <listitem><para>New SQL-standard information schema (Peter)</para></listitem>
+ <listitem><para>Add read-only transactions (Peter)</para></listitem>
+ <listitem><para>Print key name and value in foreign-key violation messages (Dmitry Tkach)</para></listitem>
+
+ <listitem>
+ <para>Allow users to see their own queries in <literal>pg_stat_activity</literal> (Kevin Brown)</para>
+ <para>
+ In prior releases, only the superuser could see query strings
+ using <literal>pg_stat_activity</literal>. Now ordinary users
+ can see their own query strings.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Fix aggregates in subqueries to match SQL standard (Tom)</para>
+ <para>
+ The SQL standard says that an aggregate function appearing
+ within a nested subquery belongs to the outer query if its
+ argument contains only outer-query variables. Prior
+ <productname>PostgreSQL</productname> releases did not handle
+ this fine point correctly.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews)</para>
+ <para>
+ By default, tables mentioned in the query are automatically
+ added to the <literal>FROM</> clause if they are not already
+ there. This is compatible with historic
+ <productname>POSTGRES</productname> behavior but is contrary to
+ the SQL standard. This option allows selecting
+ standard-compatible behavior.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Allow <literal>UPDATE ... SET col = DEFAULT</literal> (Rod)</para>
+ <para>
+ This allows <command>UPDATE</command> to set a column to its
+ declared default value.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Allow expressions to be used in <literal>LIMIT</>/<literal>OFFSET</> (Tom)</para>
+ <para>
+ In prior releases, <literal>LIMIT</>/<literal>OFFSET</> could
+ only use constants, not expressions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Implement <literal>CREATE TABLE AS EXECUTE</literal> (Neil, Peter)</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Object Manipulation Changes</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Make <command>CREATE SEQUENCE</command> grammar more conforming to SQL:2003 (Neil)</para>
+ </listitem>
+
+ <listitem>
+ <para>Add statement-level triggers (Neil)</para>
+ <para>
+ While this allows a trigger to fire at the end of a statement,
+ it does not allow the trigger to access all rows modified by the
+ statement. This capability is planned for a future release.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Add check constraints for domains (Rod)</para>
+ <para>
+ This greatly increases the usefulness of domains by allowing
+ them to use check constraints.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Add <command>ALTER DOMAIN</command> (Rod)</para>
+ <para>
+ This allows manipulation of existing domains.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Fix several zero-column table bugs (Tom)</para>
+ <para>
+ <productname>PostgreSQL</productname> supports zero-column tables. This fixes various bugs
+ that occur when using such tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Have <literal>ALTER TABLE ... ADD PRIMARY KEY</literal> add not-null constraint (Rod)</para>
+ <para>
+ In prior releases, <literal>ALTER TABLE ... ADD
+ PRIMARY</literal> would add a unique index, but not a not-null
+ constraint. That is fixed in this release.
+ </para>
+ </listitem>
+
+ <listitem><para>Add <literal>ALTER TABLE ... WITHOUT OIDS</literal> (Rod)</para>
+ <para>
+ This allows control over whether new and updated rows will have
+ an OID column. This is most useful for saving storage space.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>ALTER SEQUENCE</literal> to modify minimum, maximum,
+ increment, cache, cycle values (Rod)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Add <literal>ALTER TABLE ... CLUSTER ON</literal> (Alvaro Herrera)</para>
+ <para>
+ This command is used by <command>pg_dump</command> to record the
+ cluster column for each table previously clustered. This
+ information is used by database-wide cluster to cluster all
+ previously clustered tables.
+ </para>
+ </listitem>
+
+ <listitem><para>Improve automatic type casting for domains (Rod, Tom)</para></listitem>
+ <listitem><para>Allow dollar signs in identifiers, except as first character (Tom)</para></listitem>
+ <listitem><para>Disallow dollar signs in operator names, so <literal>x=$1</> works (Tom)</para></listitem>
+
+ <listitem>
+ <para>
+ Allow copying table schema using <literal>LIKE
+ <replaceable>subtable</replaceable></literal>, also SQL:2003
+ feature <literal>INCLUDING DEFAULTS</literal> (Rod)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add <literal>WITH GRANT OPTION</literal> clause to
+ <command>GRANT</command> (Peter)
+ </para>
+ <para>
+ This enabled <command>GRANT</command> to give other users the
+ ability to grant privileges on a object.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Utility Command Changes</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Add <literal>ON COMMIT</literal> clause to <command>CREATE TABLE</command> for temporary tables (Gavin)</para>
+ <para>
+ This adds the ability for a table to be dropped or all rows
+ deleted on transaction commit.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Allow cursors outside transactions using <literal>WITH HOLD</literal> (Neil)</para>
+ <para>
+ In previous releases, cursors were removed at the end of the
+ transaction that created them. Cursors can now be created with
+ the <literal>WITH HOLD</literal> option, which allows them to
+ continue to be accessed after the creating transaction has
+ committed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>FETCH 0</literal> and <literal>MOVE 0 </literal> now do nothing (Bruce)</para>
+ <para>
+ In previous releases, <literal>FETCH 0</literal> fetched all
+ remaining rows, and <literal>MOVE 0</literal> moved to the end
+ of the cursor.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Cause <command>FETCH</command> and <command>MOVE</command> to
+ return the number of rows fetched/moved, or zero if at the
+ beginning/end of cursor, per SQL standard (Bruce)
+ </para>
+ <para>
+ In prior releases, the row count returned by
+ <command>FETCH</command> and <command>MOVE</command> did not
+ accurately reflect the number of rows processed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Properly handle <literal>SCROLL</literal> with cursors, or
+ report an error (Neil)</para>
+ <para>
+ Allowing random access (both forward and backward scrolling) to
+ some kinds of queries cannot be done without some additional
+ work. If <literal>SCROLL</literal> is specified when the cursor
+ is created, this additional work will be performed. Furthermore,
+ if the cursor has been created with <literal>NO SCROLL</literal>,
+ no random access is allowed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Implement SQL-compatible options <literal>FIRST</>,
+ <literal>LAST</>, <literal>ABSOLUTE <replaceable>n</></>,
+ <literal>RELATIVE <replaceable>n</></> for
+ <command>FETCH</command> and <command>MOVE</command> (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Allow <command>EXPLAIN</command> on <command>DECLARE CURSOR</command> (Tom)</para>
+ </listitem>
+
+ <listitem>
+ <para>Allow <command>CLUSTER</command> to use index marked as pre-clustered by default (Alvaro Herrera)</para>
+ </listitem>
+
+ <listitem>
+ <para>Allow <command>CLUSTER</command> to cluster all tables (Alvaro Herrera)</para>
+ <para>
+ This allows all previously clustered tables in a database to be
+ reclustered with a single command.
+ </para>
+ </listitem>
+
+ <listitem><para>Prevent <command>CLUSTER</command> on partial indexes (Tom)</para></listitem>
+
+ <listitem><para>Allow DOS and Mac line-endings in <command>COPY</> files (Bruce)</para></listitem>
+
+ <listitem>
+ <para>
+ Disallow literal carriage return as a data value,
+ backslash-carriage-return and <literal>\r</> are still allowed
+ (Bruce)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><command>COPY</> changes (binary, <literal>\.</>) (Tom)</para>
+ </listitem>
+
+ <listitem>
+ <para>Recover from <command>COPY</command> failure cleanly (Tom)</para>
+ </listitem>
+
+ <listitem>
+ <para>Prevent possible memory leaks in <command>COPY</command> (Tom)</para>
+ </listitem>
+
+ <listitem>
+ <para>Make <command>TRUNCATE</command> transaction-safe (Rod)</para>
+ <para>
+ <command>TRUNCATE</command> can now be used inside a
+ transaction. If the transaction aborts, the changes made by the
+ <command>TRUNCATE</command> are automatically rolled back.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow prepare/bind of utility commands like
+ <command>FETCH</command> and <command>EXPLAIN</command> (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Add <command>EXPLAIN EXECUTE</command> (Neil)</para>
+ </listitem>
+
+ <listitem>
+ <para>Improve <command>VACUUM</command> performance on indexes by reducing WAL traffic (Tom)</para>
+ </listitem>
+
+ <listitem>
+ <para>Functional indexes have been generalized into indexes on expressions (Tom)</para>
+ <para>
+ In prior releases, functional indexes only supported a simple
+ function applied to one or more column names. This release
+ allows any type of scalar expression.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have <command>SHOW TRANSACTION ISOLATION</command> match input
+ to <command>SET TRANSACTION ISOLATION</command>
+ (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have <command>COMMENT ON DATABASE</command> on nonlocal
+ database generate a warning, rather than an error (Rod)
+ </para>
+
+ <para>
+ Database comments are stored in database-local tables so
+ comments on a database have to be stored in each database.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve reliability of <command>LISTEN</>/<command>NOTIFY</> (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Allow <command>REINDEX</command> to reliably reindex nonshared system catalog indexes (Tom)</para>
+ <para>
+ This allows system tables to be reindexed without the
+ requirement of a standalone session, which was necessary in
+ previous releases. The only tables that now require a standalone
+ session for reindexing are the global system tables
+ <literal>pg_database</>, <literal>pg_shadow</>, and
+ <literal>pg_group</>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Data Type and Function Changes</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ New server parameter <varname>extra_float_digits</varname> to
+ control precision display of floating-point numbers (Pedro
+ Ferreira, Tom)
+ </para>
+ <para>
+ This controls output precision which was causing regression
+ testing problems.
+ </para>
+ </listitem>
+
+ <listitem><para>Allow <literal>+1300</literal> as a numeric time-zone specifier, for FJST (Tom)</para></listitem>
+
+ <listitem>
+ <para>
+ Remove rarely used functions <function>oidrand</>,
+ <function>oidsrand</>, and <function>userfntest</> functions
+ (Neil)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Add <function>md5()</> function to main server, already in <filename>contrib/pgcrypto</filename> (Joe)</para>
+ <para>
+ An MD5 function was frequently requested. For more complex
+ encryption capabilities, use
+ <filename>contrib/pgcrypto</filename>.
+ </para>
+ </listitem>
+
+ <listitem><para>Increase date range of <type>timestamp</type> (John Cochran)</para></listitem>
+
+ <listitem>
+ <para>
+ Change <literal>EXTRACT(EPOCH FROM timestamp)</literal> so
+ <type>timestamp without time zone</type> is assumed to be in
+ local time, not GMT (Tom)
+ </para>
+ </listitem>
+
+ <listitem><para>Trap division by zero in case the operating system doesn't prevent it (Tom)</para></listitem>
+ <listitem><para>Change the <type>numeric</type> data type internally to base 10000 (Tom)</para></listitem>
+ <listitem><para>New <function>hostmask()</function> function (Greg Wickham)</para></listitem>
+ <listitem><para>Fixes for <function>to_char()</function> and <function>to_timestamp()</function> (Karel)</para></listitem>
+
+ <listitem>
+ <para>
+ Allow functions that can take any argument data type and return
+ any data type, using <type>anyelement</type> and
+ <type>anyarray</type> (Joe)
+ </para>
+ <para>
+ This allows the creation of functions that can work with any
+ data type.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Arrays can now be specified as <literal>ARRAY[1,2,3]</literal>,
+ <literal>ARRAY[['a','b'],['c','d']]</literal>, or
+ <literal>ARRAY[ARRAY[ARRAY[2]]]</literal> (Joe)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow proper comparisons for arrays, including <literal>ORDER
+ BY</literal> and <literal>DISTINCT</literal> support
+ (Joe)
+ </para>
+ </listitem>
+
+ <listitem><para>Allow indexes on array columns (Joe)</para></listitem>
+ <listitem><para>Allow array concatenation with <literal>||</literal> (Joe)</para></listitem>
+
+ <listitem>
+ <para>
+ Allow <literal>WHERE</literal> qualification
+ <literal><replaceable>expr</> <replaceable>op</> ANY/SOME/ALL
+ (<replaceable>array_expr</>)</literal> (Joe)
+ </para>
+ <para>
+ This allows arrays to behave like a list of values, for purposes
+ like <literal>SELECT * FROM tab WHERE col IN
+ (array_val)</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ New array functions <function>array_append</>,
+ <function>array_cat</>, <function>array_lower</>,
+ <function>array_prepend</>, <function>array_to_string</>,
+ <function>array_upper</>, <function>string_to_array</> (Joe)
+ </para>
+ </listitem>
+
+ <listitem><para>Allow user defined aggregates to use polymorphic functions (Joe)</para></listitem>
+ <listitem><para>Allow assignments to empty arrays (Joe)</para></listitem>
+
+ <listitem>
+ <para>
+ Allow 60 in seconds fields of <type>time</type>,
+ <type>timestamp</type>, and <type>interval</type> input values
+ (Tom)
+ </para>
+ <para>
+ Sixty-second values are needed for leap seconds.
+ </para>
+ </listitem>
+
+ <listitem><para>Allow <type>cidr</type> data type to be cast to <type>text</type> (Tom)</para></listitem>
+
+ <listitem><para>Disallow invalid time zone names in SET TIMEZONE</para></listitem>
+
+ <listitem>
+ <para>
+ Trim trailing spaces when <type>char</type> is cast to
+ <type>varchar</> or <type>text</> (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <type>float(<replaceable>p</>)</> measure the precision
+ <replaceable>p</> in binary digits, not decimal digits
+ (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Add IPv6 support to the <type>inet</type> and <type>cidr</type> data types (Michael Graff)</para>
+ </listitem>
+
+ <listitem>
+ <para>Add <function>family()</function> function to report whether address is IPv4 or IPv6 (Michael Graff)</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Have <literal>SHOW datestyle</literal> generate output similar
+ to that used by <literal>SET datestyle</literal> (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <literal>EXTRACT(TIMEZONE)</literal> and <literal>SET/SHOW
+ TIME ZONE</literal> follow the SQL convention for the sign of
+ time zone offsets, i.e., positive is east from UTC (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Fix <literal>date_trunc('quarter', ...)</literal> (Böjthe Zoltán)</para>
+ <para>
+ Prior releases returned an incorrect value for this function call.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Make <function>initcap()</function> more compatible with Oracle (Mike Nolan)</para>
+ <para>
+ <function>initcap()</function> now uppercases a letter appearing
+ after any non-alphanumeric character, rather than only after
+ whitespace.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Allow only <varname>datestyle</varname> field order for date values not in ISO-8601 format (Greg)</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add new <varname>datestyle</varname> values <literal>MDY</>,
+ <literal>DMY</>, and <literal>YMD</> to set input field order;
+ honor <literal>US</> and <literal>European</> for backward
+ compatibility (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ String literals like <literal>'now'</literal> or
+ <literal>'today'</literal> will no longer work as a column
+ default. Use functions such as <function>now()</function>,
+ <function>current_timestamp</function> instead. (change
+ required for prepared statements) (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Treat NaN as larger than any other value in <function>min()</>/<function>max()</> (Tom)</para>
+ <para>
+ NaN was already sorted after ordinary numeric values for most
+ purposes, but <function>min()</> and <function>max()</> didn't
+ get this right.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Prevent interval from suppressing <literal>:00</literal>
+ seconds display</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ New functions <function>pg_get_triggerdef(prettyprint)</function>
+ and <function>pg_conversion_is_visible()</function> (Christopher)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Allow time to be specified as <literal>040506</> or <literal>0405</> (Tom)</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Input date order must now be <literal>YYYY-MM-DD</literal> (with 4-digit year) or
+ match <varname>datestyle</varname>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <function>pg_get_constraintdef</function> support
+ unique, primary-key, and check constraints (Christopher)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Server-Side Language Changes</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ Prevent PL/pgSQL crash when <literal>RETURN NEXT</literal> is
+ used on a zero-row record variable (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make PL/Python's <function>spi_execute</function> interface
+ handle null values properly (Andrew Bosma)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Allow PL/pgSQL to declare variables of composite types without <literal>%ROWTYPE</literal> (Tom)</para>
+ </listitem>
+
+ <listitem>
+ <para>Fix PL/Python's <function>_quote()</function> function to handle big integers</para>
+ </listitem>
+
+ <listitem>
+ <para>Make PL/Python an untrusted language, now called <literal>plpythonu</literal> (Kevin Jacobs, Tom)</para>
+ <para>
+ The Python language no longer supports a restricted execution
+ environment, so the trusted version of PL/Python was removed. If
+ this situation changes, a version of PL/Python that can be used
+ by non-superusers will be readded.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Allow polymorphic PL/pgSQL functions (Joe, Tom)</para>
+ </listitem>
+
+ <listitem>
+ <para>Allow polymorphic SQL functions (Joe)</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improved compiled function caching mechanism in PL/pgSQL with
+ full support for polymorphism (Joe)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Add new parameter <literal>$0</> in PL/pgSQL representing the
+ function's actual return type (Joe)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fixed PL/Tcl's <function>spi_prepare</function> to accept fully
+ qualified type names in the parameter type list
+ (Jan)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>psql Changes</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Add <literal>\pset pager always</literal> to always use pager (Greg)</para>
+ <para>
+ This forces the pager to be used even if the number of rows is
+ less than the screen height. This is valuable for rows that
+ wrap across several screen rows.
+ </para>
+ </listitem>
+
+ <listitem><para>Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)</para></listitem>
+ <listitem><para>Reorder <literal>\?</> help into groupings (Harald Armin Massa, Bruce)</para></listitem>
+ <listitem><para>Add backslash commands for listing schemas, casts, and conversions (Christopher)</para></listitem>
+
+ <listitem>
+ <para>
+ <command>\encoding</> now changes based on the server parameter
+ <varname>client_encoding</varname> (Tom)
+ </para>
+ <para>
+ In previous versions, <command>\encoding</command> was not aware
+ of encoding changes made using <literal>SET
+ client_encoding</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Save editor buffer into readline history (Ross)</para>
+ <para>
+ When <command>\e</> is used to edit a query, the result is saved
+ in the readline history for retrieval using the up arrow.
+ </para>
+ </listitem>
+
+ <listitem><para>Improve <command>\d</command> display (Christopher)</para></listitem>
+ <listitem><para>Enhance HTML mode to be more standards-conforming (Greg)</para></listitem>
+
+ <listitem>
+ <para>New <command>\set AUTOCOMMIT off</command> capability (Tom)</para>
+ <para>
+ This takes the place of the removed server parameter <varname>autocommit</varname>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>New <command>\set VERBOSITY</command> to control error detail (Tom)</para>
+ <para>
+ This controls the new error reporting details.
+ </para>
+ </listitem>
+
+ <listitem><para>New prompt escape sequence <literal>%x</literal> to show transaction status (Tom)</para></listitem>
+ <listitem><para>Long options for <application>psql</application> are now available on all platforms</para></listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>pg_dump Changes</title>
+
+ <itemizedlist>
+ <listitem><para>Multiple pg_dump fixes, including tar format and large objects</para></listitem>
+ <listitem><para>Allow pg_dump to dump specific schemas (Neil)</para></listitem>
+
+ <listitem>
+ <para>Make pg_dump preserve column storage characteristics (Christopher)</para>
+ <para>
+ This preserves <literal>ALTER TABLE ... SET STORAGE</literal> information.
+ </para>
+ </listitem>
+
+ <listitem><para>Make pg_dump preserve <command>CLUSTER</command> characteristics (Christopher)</para></listitem>
+
+ <listitem>
+ <para>
+ Have pg_dumpall use <command>GRANT</>/<command>REVOKE</> to dump database-level privileges (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow pg_dumpall to support the options <option>-a</>,
+ <option>-s</>, <option>-x</> of pg_dump (Tom)
+ </para>
+ </listitem>
+
+ <listitem><para>Prevent pg_dump from lowercasing identifiers specified on the command line (Tom)</para></listitem>
+
+ <listitem>
+ <para>
+ pg_dump options <option>--use-set-session-authorization</option>
+ and <option>--no-reconnect</option> now do nothing, all dumps
+ use <command>SET SESSION AUTHORIZATION</command>
+ </para>
+ <para>
+ pg_dump no longer reconnects to switch users, but instead always
+ uses <command>SET SESSION AUTHORIZATION</command>. This will
+ reduce password prompting during restores.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Long options for <application>pg_dump</application> are now available on all platforms</para>
+ <para>
+ <productname>PostgreSQL</productname> now includes its own
+ long-option processing routines.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>libpq Changes</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ Add function <function>PQfreemem</function> for freeing memory on
+ Windows, suggested for <command>NOTIFY</command> (Bruce)
+ </para>
+ <para>
+ Windows requires that memory allocated in a library be freed by
+ a function in the same library, hence
+ <function>free()</function> doesn't work for freeing memory
+ allocated by libpq. <function>PQfreemem</function> is the proper
+ way to free libpq memory, especially on Windows, and is
+ recommended for other platforms as well.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Document service capability, and add sample file (Bruce)</para>
+ <para>
+ This allows clients to look up connection information in a
+ central file on the client machine.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <function>PQsetdbLogin</function> have the same defaults as
+ <function>PQconnectdb</function> (Tom)
+ </para>
+ </listitem>
+
+ <listitem><para>Allow libpq to cleanly fail when result sets are too large (Tom)</para></listitem>
+
+ <listitem>
+ <para>
+ Improve performance of function <function>PQunescapeBytea</function> (Ben Lamb)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow thread-safe libpq with <filename>configure</filename>
+ option <option>--enable-thread-safety</option> (Lee Kindness,
+ Philip Yarra)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow function <function>pqInternalNotice</function> to accept a
+ format string and arguments instead of just a preformatted
+ message (Tom, Sean Chittenden)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Control SSL negotiation with <literal>sslmode</literal> values
+ <literal>disable</literal>, <literal>allow</literal>,
+ <literal>prefer</literal>, and <literal>require</literal> (Jon
+ Jensen)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Allow new error codes and levels of text (Tom)</para>
+ </listitem>
+
+ <listitem>
+ <para>Allow access to the underlying table and column of a query result (Tom)</para>
+ <para>
+ This is helpful for query-builder applications that want to know
+ the underlying table and column names associated with a specific
+ result set.
+ </para>
+ </listitem>
+
+ <listitem><para>Allow access to the current transaction status (Tom)</para></listitem>
+ <listitem><para>Add ability to pass binary data directly to the server (Tom)</para></listitem>
+
+ <listitem>
+ <para>
+ Add function <function>PQexecPrepared</function> and
+ <function>PQsendQueryPrepared</function> functions which perform
+ bind/execute of previously prepared statements (Tom)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>JDBC Changes</title>
+
+ <itemizedlist>
+ <listitem><para>Allow <function>setNull</function> on updateable result sets</para></listitem>
+ <listitem><para>Allow <function>executeBatch</function> on a prepared statement (Barry)</para></listitem>
+ <listitem><para>Support SSL connections (Barry)</para></listitem>
+ <listitem><para>Handle schema names in result sets (Paul Sorenson)</para></listitem>
+ <listitem><para>Add refcursor support (Nic Ferrier)</para></listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Miscellaneous Interface Changes</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)</para>
+ </listitem>
+ <listitem>
+ <para>Add Informix compatibility to ECPG (Michael)</para>
+ <para>
+ This allows ECPG to process embedded C programs that were
+ written using certain Informix extensions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Add type <type>decimal</type> to ECPG that is fixed length, for Informix (Michael)</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Allow thread-safe embedded SQL programs with
+ <filename>configure</filename> option
+ <option>--enable-thread-safety</option> (Lee Kindness, Bruce)
+ </para>
+ <para>
+ This allows multiple threads to access the database at the same
+ time.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Moved Python client PyGreSQL to <ulink url="http://www.pygresql.org"></ulink> (Marc)</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Source Code Changes</title>
+
+ <itemizedlist>
+ <listitem><para>Prevent need for separate platform geometry regression result files (Tom)</para></listitem>
+ <listitem><para>Improved PPC locking primitive (Reinhard Max)</para></listitem>
+ <listitem><para>New function <function>palloc0</function> to allocate and clear memory (Bruce)</para></listitem>
+ <listitem><para>Fix locking code for s390x CPU (64-bit) (Tom)</para></listitem>
+ <listitem><para>Allow OpenBSD to use local ident credentials (William Ahern)</para></listitem>
+ <listitem><para>Make query plan trees read-only to executor (Tom)</para></listitem>
+ <listitem><para>Add Darwin startup scripts (David Wheeler)</para></listitem>
+ <listitem><para>Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek)</para></listitem>
+ <listitem><para>Use our own version of <function>getopt_long()</function> if needed (Peter)</para></listitem>
+ <listitem><para>Convert administration scripts to C (Peter)</para></listitem>
+ <listitem><para> Bison >= 1.85 is now required to build the <productname>PostgreSQL</> grammar, if building from CVS</para></listitem>
+ <listitem><para>Merge documentation into one book (Peter)</para></listitem>
+ <listitem><para>Add Windows compatibility functions (Bruce)</para></listitem>
+ <listitem><para>Allow client interfaces to compile under MinGW (Bruce)</para></listitem>
+ <listitem><para>New <function>ereport()</function> function for error reporting (Tom)</para></listitem>
+ <listitem><para>Support Intel compiler on Linux (Peter)</para></listitem>
+ <listitem><para>Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)</para></listitem>
+ <listitem><para>Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)</para></listitem>
+ <listitem>
+ <para>Remove <option>--enable-recode</option> option from <command>configure</command></para>
+ <para>
+ This was no longer needed now that we have <command>CREATE CONVERSION</command>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>Generate a compile error if spinlock code is not found (Bruce)</para>
+ <para>
+ Platforms without spinlock code will now fail to compile, rather
+ than silently using semaphores. This failure can be disabled
+ with a new <command>configure</command> option.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Contrib Changes</title>
+
+ <itemizedlist>
+ <listitem><para>Change dbmirror license to BSD</para></listitem>
+ <listitem><para>Improve earthdistance (Bruno Wolff III)</para></listitem>
+ <listitem><para>Portability improvements to pgcrypto (Marko Kreen)</para></listitem>
+ <listitem><para>Prevent crash in xml (John Gray, Michael Richards)</para></listitem>
+ <listitem><para>Update oracle</para></listitem>
+ <listitem><para>Update mysql</para></listitem>
+ <listitem><para>Update cube (Bruno Wolff III)</para></listitem>
+ <listitem><para>Update earthdistance to use cube (Bruno Wolff III)</para></listitem>
+ <listitem><para>Update btree_gist (Oleg)</para></listitem>
+ <listitem><para>New tsearch2 full-text search module (Oleg, Teodor)</para></listitem>
+ <listitem><para>Add hash-based crosstab function to tablefuncs (Joe)</para></listitem>
+ <listitem><para>Add serial column to order <function>connectby()</> siblings in tablefuncs (Nabil Sayegh,Joe)</para></listitem>
+ <listitem><para>Add named persistent connections to dblink (Shridhar Daithanka)</para></listitem>
+ <listitem><para>New pg_autovacuum allows automatic <command>VACUUM</command> (Matthew T. O'Connor)</para></listitem>
+ <listitem><para>Make pgbench honor environment variables <envar>PGHOST</>, <envar>PGPORT</>, <envar>PGUSER</> (Tatsuo)</para></listitem>
+ <listitem><para>Improve intarray (Teodor Sigaev)</para></listitem>
+ <listitem><para>Improve pgstattuple (Rod)</para></listitem>
+ <listitem><para>Fix bug in <function>metaphone()</function> in fuzzystrmatch</para></listitem>
+ <listitem><para>Improve adddepend (Rod)</para></listitem>
+ <listitem><para>Update spi/timetravel (Böjthe Zoltán)</para></listitem>
+ <listitem><para>Fix dbase <option>-s</> option and improve non-ASCII handling (Thomas Behr, Márcio Smiderle)</para></listitem>
+ <listitem><para>Remove array module because features now included by default (Joe)</para></listitem>
+ </itemizedlist>
+ </sect3>
+ </sect2>
+</sect1>
--- /dev/null
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release-old.sgml,v 1.1.10.1 2009/05/02 20:18:21 tgl Exp $ -->
+<!-- See header comment in release.sgml about typical markup -->
+
+ <sect1 id="release-7-3-21">
+ <title>Release 7.3.21</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2008-01-07</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.20,
+ including fixes for significant security issues.
+ </para>
+
+ <para>
+ This is expected to be the last <productname>PostgreSQL</> release
+ in the 7.3.X series. Users are encouraged to update to a newer
+ release branch soon.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.21</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X. However,
+ if you are upgrading from a version earlier than 7.3.13, see the release
+ notes for 7.3.13.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Prevent functions in indexes from executing with the privileges of
+ the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom)
+ </para>
+
+ <para>
+ Functions used in index expressions and partial-index
+ predicates are evaluated whenever a new table entry is made. It has
+ long been understood that this poses a risk of trojan-horse code
+ execution if one modifies a table owned by an untrustworthy user.
+ (Note that triggers, defaults, check constraints, etc. pose the
+ same type of risk.) But functions in indexes pose extra danger
+ because they will be executed by routine maintenance operations
+ such as <command>VACUUM FULL</>, which are commonly performed
+ automatically under a superuser account. For example, a nefarious user
+ can execute code with superuser privileges by setting up a
+ trojan-horse index definition and waiting for the next routine vacuum.
+ The fix arranges for standard maintenance operations
+ (including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>,
+ and <command>CLUSTER</>) to execute as the table owner rather than
+ the calling user, using the same privilege-switching mechanism already
+ used for <literal>SECURITY DEFINER</> functions. To prevent bypassing
+ this security measure, execution of <command>SET SESSION
+ AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a
+ <literal>SECURITY DEFINER</> context. (CVE-2007-6600)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require non-superusers who use <filename>/contrib/dblink</> to use only
+ password authentication, as a security measure (Joe)
+ </para>
+
+ <para>
+ The fix that appeared for this in 7.3.20 was incomplete, as it plugged
+ the hole for only some <filename>dblink</> functions. (CVE-2007-6601,
+ CVE-2007-3278)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix potential crash in <function>translate()</> when using a multibyte
+ database encoding (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle
+ NULL rowid as a category in its own right, rather than crashing (Joe)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require a specific version of <productname>Autoconf</> to be used
+ when re-generating the <command>configure</> script (Peter)
+ </para>
+
+ <para>
+ This affects developers and packagers only. The change was made
+ to prevent accidental use of untested combinations of
+ <productname>Autoconf</> and <productname>PostgreSQL</> versions.
+ You can remove the version check if you really want to use a
+ different <productname>Autoconf</> version, but it's
+ your responsibility whether the result works or not.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-20">
+ <title>Release 7.3.20</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2007-09-17</simpara>
+ </note>
+
+ <para>
+ This release contains fixes from 7.3.19.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.20</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X. However,
+ if you are upgrading from a version earlier than 7.3.13, see the release
+ notes for 7.3.13.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Prevent index corruption when a transaction inserts rows and
+ then aborts close to the end of a concurrent <command>VACUUM</>
+ on the same table (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix crash when <varname>log_min_error_statement</> logging runs out
+ of memory (Tom)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Require non-superusers who use <filename>/contrib/dblink</> to use only
+ password authentication, as a security measure (Joe)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-19">
+ <title>Release 7.3.19</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2007-04-23</simpara>
+ </note>
+
+ <para>
+ This release contains fixes from 7.3.18,
+ including a security fix.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.19</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X. However,
+ if you are upgrading from a version earlier than 7.3.13, see the release
+ notes for 7.3.13.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Support explicit placement of the temporary-table schema within
+ <varname>search_path</>, and disable searching it for functions
+ and operators (Tom)
+ </para>
+ <para>
+ This is needed to allow a security-definer function to set a
+ truly secure value of <varname>search_path</>. Without it,
+ an unprivileged SQL user can use temporary objects to execute code
+ with the privileges of the security-definer function (CVE-2007-2138).
+ See <command>CREATE FUNCTION</> for more information.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
+ <command>UPDATE</> chains (Tom, Pavan Deolasee)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-18">
+ <title>Release 7.3.18</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2007-02-05</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.17, including
+ a security fix.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.18</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X. However,
+ if you are upgrading from a version earlier than 7.3.13, see the release
+ notes for 7.3.13.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Remove security vulnerability that allowed connected users
+ to read backend memory (Tom)
+ </para>
+ <para>
+ The vulnerability involves changing the
+ data type of a table column used in a SQL function (CVE-2007-0555).
+ This error can easily be exploited to cause a backend crash, and in
+ principle might be used to read database content that the user
+ should not be able to access.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix rare bug wherein btree index page splits could fail
+ due to choosing an infeasible split point (Heikki Linnakangas)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Tighten security of multi-byte character processing for UTF8 sequences
+ over three bytes long (Tom)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-17">
+ <title>Release 7.3.17</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2007-01-08</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.16.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.17</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X. However,
+ if you are upgrading from a version earlier than 7.3.13, see the release
+ notes for 7.3.13.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <function>to_number()</> and <function>to_char(numeric)</>
+ are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
+ new <application>initdb</> installs (Tom)
+ </para>
+
+ <para>
+ This is because <varname>lc_numeric</> can potentially
+ change the output of these functions.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Improve index usage of regular expressions that use parentheses (Tom)
+ </para>
+
+ <para>
+ This improves <application>psql</> <literal>\d</> performance also.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-16">
+ <title>Release 7.3.16</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2006-10-16</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.15.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.16</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X. However,
+ if you are upgrading from a version earlier than 7.3.13, see the release
+ notes for 7.3.13.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Fix corner cases in pattern matching for
+ <application>psql</>'s <literal>\d</> commands</para></listitem>
+<listitem><para>Fix index-corrupting bugs in /contrib/ltree
+ (Teodor)</para></listitem>
+<listitem><para>Back-port 7.4 spinlock code to improve performance and support
+64-bit architectures better</para> </listitem>
+<listitem><para>Fix SSL-related memory leak in libpq</para> </listitem>
+<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
+<listitem><para>Adjust regression tests for recent changes in US DST laws
+</para> </listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-15">
+ <title>Release 7.3.15</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2006-05-23</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.14,
+ including patches for extremely serious security issues.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.15</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X. However,
+ if you are upgrading from a version earlier than 7.3.13, see the release
+ notes for 7.3.13.
+ </para>
+
+ <para>
+ Full security against the SQL-injection attacks described in
+ CVE-2006-2313 and CVE-2006-2314 might require changes in application
+ code. If you have applications that embed untrustworthy strings
+ into SQL commands, you should examine them as soon as possible to
+ ensure that they are using recommended escaping techniques. In
+ most cases, applications should be using subroutines provided by
+ libraries or drivers (such as <application>libpq</>'s
+ <function>PQescapeStringConn()</>) to perform string escaping,
+ rather than relying on <foreignphrase>ad hoc</> code to do it.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Change the server to reject invalidly-encoded multibyte
+characters in all cases (Tatsuo, Tom)</para>
+<para>While <productname>PostgreSQL</> has been moving in this direction for
+some time, the checks are now applied uniformly to all encodings and all
+textual input, and are now always errors not merely warnings. This change
+defends against SQL-injection attacks of the type described in CVE-2006-2313.
+</para></listitem>
+
+<listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
+<para>As a server-side defense against SQL-injection attacks of the type
+described in CVE-2006-2314, the server now only accepts <literal>''</> and not
+<literal>\'</> as a representation of ASCII single quote in SQL string
+literals. By default, <literal>\'</> is rejected only when
+<varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
+GB18030, or UHC), which is the scenario in which SQL injection is possible.
+A new configuration parameter <varname>backslash_quote</> is available to
+adjust this behavior when needed. Note that full security against
+CVE-2006-2314 might require client-side changes; the purpose of
+<varname>backslash_quote</> is in part to make it obvious that insecure
+clients are insecure.
+</para></listitem>
+
+<listitem><para>Modify <application>libpq</>'s string-escaping routines to be
+aware of encoding considerations</para>
+<para>This fixes <application>libpq</>-using applications for the security
+issues described in CVE-2006-2313 and CVE-2006-2314.
+Applications that use multiple <productname>PostgreSQL</> connections
+concurrently should migrate to <function>PQescapeStringConn()</> and
+<function>PQescapeByteaConn()</> to ensure that escaping is done correctly
+for the settings in use in each database connection. Applications that
+do string escaping <quote>by hand</> should be modified to rely on library
+routines instead.
+</para></listitem>
+
+<listitem><para>Fix some incorrect encoding conversion functions</para>
+<para><function>win1251_to_iso</>, <function>alt_to_iso</>,
+<function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
+<function>mic_to_euc_tw</> were all broken to varying
+extents.
+</para></listitem>
+
+<listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
+(Bruce, Jan)</para></listitem>
+
+<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
+Fuhr)</para></listitem>
+
+<listitem><para>Fix various minor memory leaks</para></listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-14">
+ <title>Release 7.3.14</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2006-02-14</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.13.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.14</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X. However,
+ if you are upgrading from a version earlier than 7.3.13, see the release
+ notes for 7.3.13.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+
+<listitem><para>Fix potential crash in <command>SET
+SESSION AUTHORIZATION</> (CVE-2006-0553)</para>
+<para>An unprivileged user could crash the server process, resulting in
+momentary denial of service to other users, if the server has been compiled
+with Asserts enabled (which is not the default).
+Thanks to Akio Ishida for reporting this problem.
+</para></listitem>
+
+<listitem><para>Fix bug with row visibility logic in self-inserted
+rows (Tom)</para>
+<para>Under rare circumstances a row inserted by the current command
+could be seen as already valid, when it should not be. Repairs bug
+created in 7.3.11 release.
+</para></listitem>
+
+<listitem><para>Fix race condition that could lead to <quote>file already
+exists</> errors during pg_clog file creation
+(Tom)</para></listitem>
+
+<listitem><para>Fix to allow restoring dumps that have cross-schema
+references to custom operators (Tom)</para></listitem>
+
+<listitem><para>Portability fix for testing presence of <function>finite</>
+and <function>isinf</> during configure (Tom)</para></listitem>
+
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-13">
+ <title>Release 7.3.13</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2006-01-09</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.12.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.13</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X. However,
+ if you are upgrading from a version earlier than 7.3.10, see the release
+ notes for 7.3.10.
+ Also, you might need to <command>REINDEX</> indexes on textual
+ columns after updating, if you are affected by the locale or
+ <application>plperl</> issues described below.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+
+<listitem><para>Fix character string comparison for locales that consider
+different character combinations as equal, such as Hungarian (Tom)</para>
+<para>This might require <command>REINDEX</> to fix existing indexes on
+textual columns.</para></listitem>
+
+<listitem><para>Set locale environment variables during postmaster startup
+to ensure that <application>plperl</> won't change the locale later</para>
+<para>This fixes a problem that occurred if the <application>postmaster</> was
+started with environment variables specifying a different locale than what
+<application>initdb</> had been told. Under these conditions, any use of
+<application>plperl</> was likely to lead to corrupt indexes. You might need
+<command>REINDEX</> to fix existing indexes on
+textual columns if this has happened to you.</para></listitem>
+
+<listitem><para>Fix longstanding bug in strpos() and regular expression
+handling in certain rarely used Asian multi-byte character sets (Tatsuo)
+</para></listitem>
+
+<listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
+which caused it not to use all available salt space for MD5 and
+XDES algorithms (Marko Kreen, Solar Designer)</para>
+<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
+
+<listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
+rather than crashing, when the number of columns specified is different from
+what's actually returned by the query (Joe)</para></listitem>
+
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-12">
+ <title>Release 7.3.12</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2005-12-12</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.11.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.12</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X. However,
+ if you are upgrading from a version earlier than 7.3.10, see the release
+ notes for 7.3.10.
+ </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><filename>/contrib/ltree</> fixes (Teodor)</para></listitem>
+
+<listitem><para>Fix longstanding planning error for outer joins</para>
+<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
+only supported with merge-joinable join conditions</>.</para></listitem>
+
+<listitem><para>Prevent core dump in <application>pg_autovacuum</> when a
+table has been dropped</para></listitem>
+
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-11">
+ <title>Release 7.3.11</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2005-10-04</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.10.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.11</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X. However,
+ if you are upgrading from a version earlier than 7.3.10, see the release
+ notes for 7.3.10.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Fix error that allowed <command>VACUUM</> to remove
+<literal>ctid</> chains too soon, and add more checking in code that follows
+<literal>ctid</> links</para>
+<para>This fixes a long-standing problem that could cause crashes in very rare
+circumstances.</para></listitem>
+<listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified
+length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
+<para>In prior releases, the padding of <type>CHAR()</> was incorrect
+because it only padded to the specified number of bytes without
+considering how many characters were stored.</para></listitem>
+<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
+a...</> with GiST index on column <literal>a</></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>Various memory leakage fixes</para></listitem>
+<listitem><para>Various portability improvements</para></listitem>
+<listitem><para>Fix PL/PgSQL to handle <literal>var := var</> correctly when
+the variable is of pass-by-reference type</para></listitem>
+</itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-10">
+ <title>Release 7.3.10</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2005-05-09</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.9, including several
+ security-related issues.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.10</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X. However,
+ it is one possible way of handling a significant security problem
+ that has been found in the initial contents of 7.3.X system
+ catalogs. A dump/initdb/reload sequence using 7.3.10's initdb will
+ automatically correct this problem.
+ </para>
+
+ <para>
+ The 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.)
+ It is strongly recommended that all installations repair this error,
+ either by initdb or by following the manual repair procedure given
+ below. The error at least allows unprivileged database users to crash
+ their server process, and might allow unprivileged users to gain the
+ privileges of a database superuser.
+ </para>
+
+ <para>
+ If you wish not to do an initdb, perform the following procedure instead.
+ As the database superuser, do:
+
+<programlisting>
+BEGIN;
+UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
+WHERE pronamespace = 11 AND pronargs = 5
+ AND proargtypes[2] = 'cstring'::regtype;
+-- The command should report having updated 90 rows;
+-- if not, rollback and investigate instead of committing!
+COMMIT;
+</programlisting>
+ </para>
+
+ <para>
+ The above procedure must be carried out in <emphasis>each</> database
+ of an installation, including <literal>template1</>, and ideally
+ including <literal>template0</> as well. If you do not fix the
+ template databases then any subsequently created databases will contain
+ the same error. <literal>template1</> can be fixed in the same way
+ as any other database, but fixing <literal>template0</> requires
+ additional steps. First, from any database issue:
+<programlisting>
+UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
+</programlisting>
+ Next connect to <literal>template0</> and perform the above repair
+ procedure. Finally, do:
+<programlisting>
+-- re-freeze template0:
+VACUUM FREEZE;
+-- and protect it against future alterations:
+UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
+</programlisting>
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Change encoding function signature to prevent
+misuse</para></listitem>
+<listitem><para>Repair ancient race condition that allowed a transaction to be
+seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
+than for other purposes</para>
+<para>This is an extremely serious bug since it could lead to apparent
+data inconsistencies being briefly visible to applications.</para></listitem>
+<listitem><para>Repair race condition between relation extension and
+VACUUM</para>
+<para>This could theoretically have caused loss of a page's worth of
+freshly-inserted data, although the scenario seems of very low probability.
+There are no known cases of it having caused more than an Assert failure.
+</para></listitem>
+<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
+<para>
+The comparison code was wrong in the case where the
+<literal>--enable-integer-datetimes</> configuration switch had been used.
+NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
+it will need to be <command>REINDEX</>ed after installing this update, because
+the fix corrects the sort order of column values.
+</para></listitem>
+<listitem><para>Fix <function>EXTRACT(EPOCH)</> for
+<type>TIME WITH TIME ZONE</> values</para></listitem>
+<listitem><para>Fix mis-display of negative fractional seconds in
+<type>INTERVAL</> values</para>
+<para>
+This error only occurred when the
+<literal>--enable-integer-datetimes</> configuration switch had been used.
+</para></listitem>
+<listitem><para>Additional buffer overrun checks in plpgsql
+(Neil)</para></listitem>
+<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
+correctly (Neil)</para></listitem>
+<listitem><para>Prevent <function>to_char(interval)</> from dumping core for
+month-related formats</para></listitem>
+<listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
+(Marko Kreen)</para></listitem>
+<listitem><para>Still more 64-bit fixes for
+<filename>contrib/intagg</></para></listitem>
+<listitem><para>Prevent incorrect optimization of functions returning
+<type>RECORD</></para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-3-9">
+ <title>Release 7.3.9</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2005-01-31</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.8, including several
+ security-related issues.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.9</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Disallow <command>LOAD</> to non-superusers</para>
+<para>
+On platforms that will automatically execute initialization functions of a
+shared library (this includes at least Windows and ELF-based Unixen),
+<command>LOAD</> can be used to make the server execute arbitrary code.
+Thanks to NGS Software for reporting this.</para></listitem>
+<listitem><para>Check that creator of an aggregate function has the right to
+execute the specified transition functions</para>
+<para>
+This oversight made it possible to bypass denial of EXECUTE
+permission on a function.</para></listitem>
+<listitem><para>Fix security and 64-bit issues in
+contrib/intagg</para></listitem>
+<listitem><para>Add needed STRICT marking to some contrib functions (Kris
+Jurka)</para></listitem>
+<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
+many parameters (Neil)</para></listitem>
+<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
+<para>
+The result of the join was mistakenly supposed to be sorted the same as the
+left input. This could not only deliver mis-sorted output to the user, but
+in case of nested merge joins could give outright wrong answers.
+</para></listitem>
+<listitem><para>Fix plperl for quote marks in tuple fields</para></listitem>
+<listitem><para>Fix display of negative intervals in SQL and GERMAN
+datestyles</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-3-8">
+ <title>Release 7.3.8</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2004-10-22</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.7.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.3.8</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Repair possible failure to update hint bits on disk</para>
+<para>
+Under rare circumstances this oversight could lead to
+<quote>could not access transaction status</> failures, which qualifies
+it as a potential-data-loss bug.
+</para></listitem>
+<listitem><para>Ensure that hashed outer join does not miss tuples</para>
+<para>
+Very large left joins using a hash join plan could fail to output unmatched
+left-side rows given just the right data distribution.
+</para></listitem>
+<listitem><para>Disallow running pg_ctl as root</para>
+<para>
+This is to guard against any possible security issues.
+</para></listitem>
+<listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</para>
+<para>
+This has been reported as a security issue, though it's hardly worthy of
+concern since there is no reason for non-developers to use this script anyway.
+</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-3-7">
+ <title>Release 7.3.7</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2004-08-16</simpara>
+ </note>
+
+ <para>
+ This release contains one critical fix over 7.3.6, and some minor items.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.3.7</title>
+
+ <para>
+ A dump/restore is not required for those running 7.3.X.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Prevent possible loss of committed transactions during crash</para>
+<para>
+Due to insufficient interlocking between transaction commit and checkpointing,
+it was possible for transactions committed just before the most recent
+checkpoint to be lost, in whole or in part, following a database crash and
+restart. This is a serious bug that has existed
+since <productname>PostgreSQL</productname> 7.1.
+</para></listitem>
+<listitem><para>Remove asymmetrical word processing in tsearch (Teodor)</para></listitem>
+<listitem><para>Properly schema-qualify function names when pg_dump'ing a CAST</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-3-6">
+ <title>Release 7.3.6</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2004-03-02</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.3.5.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.3.6</title>
+
+ <para>
+ A dump/restore is <emphasis>not</emphasis> required for those
+ running 7.3.*.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Revert erroneous changes in rule permissions checking</para>
+<para>A patch applied in 7.3.3 to fix a corner case in rule permissions checks
+turns out to have disabled rule-related permissions checks in many
+not-so-corner cases. This would for example allow users to insert into views
+they weren't supposed to have permission to insert into. We have therefore
+reverted the 7.3.3 patch. The original bug will be fixed in 8.0.
+</para></listitem>
+<listitem><para>Repair incorrect order of operations in
+GetNewTransactionId()</para>
+<para>
+This bug could result in failure under out-of-disk-space conditions, including
+inability to restart even after disk space is freed.
+</para></listitem>
+<listitem><para>Ensure configure selects -fno-strict-aliasing even when
+an external value for CFLAGS is supplied</para>
+<para>
+On some platforms, building with -fstrict-aliasing causes bugs.
+</para></listitem>
+<listitem><para>Make pg_restore handle 64-bit off_t correctly</para>
+<para>
+This bug prevented proper restoration from archive files exceeding 4 GB.
+</para></listitem>
+<listitem><para>Make contrib/dblink not assume that local and remote type OIDs
+match (Joe)</para></listitem>
+<listitem><para>Quote connectby()'s start_with argument properly (Joe)</para></listitem>
+<listitem><para>Don't crash when a rowtype argument to a plpgsql function is
+NULL</para></listitem>
+<listitem><para>Avoid generating invalid character encoding sequences in
+corner cases when planning LIKE operations</para></listitem>
+<listitem><para>Ensure text_position() cannot scan past end of source string
+in multibyte cases (Korea PostgreSQL Users' Group)</para></listitem>
+<listitem><para>Fix index optimization and selectivity estimates for LIKE
+operations on bytea columns (Joe)</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-3-5">
+ <title>Release 7.3.5</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2003-12-03</simpara>
+ </note>
+
+ <para>
+ This has a variety of fixes from 7.3.4.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.3.5</title>
+
+ <para>
+ A dump/restore is <emphasis>not</emphasis> required for those
+ running 7.3.*.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem>
+<listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem>
+<listitem><para>Force stats processes to detach from shared memory, ensuring cleaner shutdown</para></listitem>
+<listitem><para>Make PQescapeBytea and byteaout consistent with each other (Joe)</para></listitem>
+<listitem><para>Added missing SPI_finish() calls to dblink's get_tuple_of_interest() (Joe)</para></listitem>
+<listitem><para>Fix for possible foreign key violation when rule rewrites INSERT (Jan)</para></listitem>
+<listitem><para>Support qualified type names in PL/Tcl's spi_prepare command (Jan)</para></listitem>
+<listitem><para>Make pg_dump handle a procedural language handler located in pg_catalog</para></listitem>
+<listitem><para>Make pg_dump handle cases where a custom opclass is in another schema</para></listitem>
+<listitem><para>Make pg_dump dump binary-compatible casts correctly (Jan)</para></listitem>
+<listitem><para>Fix insertion of expressions containing subqueries into rule bodies</para></listitem>
+<listitem><para>Fix incorrect argument processing in clusterdb script (Anand Ranganathan)</para></listitem>
+<listitem><para>Fix problems with dropped columns in plpython triggers</para></listitem>
+<listitem><para>Repair problems with to_char() reading past end of its input string (Karel)</para></listitem>
+<listitem><para>Fix GB18030 mapping errors (Tatsuo)</para></listitem>
+<listitem><para>Fix several problems with SSL error handling and asynchronous SSL I/O</para></listitem>
+<listitem><para>Remove ability to bind a list of values to a single parameter in JDBC
+(prevents possible SQL-injection attacks)</para></listitem>
+<listitem><para>Fix some errors in HAVE_INT64_TIMESTAMP code paths</para></listitem>
+<listitem><para>Fix corner case for btree search in parallel with first root page split</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-3-4">
+ <title>Release 7.3.4</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2003-07-24</simpara>
+ </note>
+
+ <para>
+ This has a variety of fixes from 7.3.3.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.3.4</title>
+
+ <para>
+ A dump/restore is <emphasis>not</emphasis> required for those
+ running 7.3.*.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Repair breakage in timestamp-to-date conversion for dates before 2000</para></listitem>
+<listitem><para>Prevent rare possibility of server startup failure (Tom)</para></listitem>
+<listitem><para>Fix bugs in interval-to-time conversion (Tom)</para></listitem>
+<listitem><para>Add constraint names in a few places in pg_dump (Rod)</para></listitem>
+<listitem><para>Improve performance of functions with many parameters (Tom)</para></listitem>
+<listitem><para>Fix to_ascii() buffer overruns (Tom)</para></listitem>
+<listitem><para>Prevent restore of database comments from throwing an error (Tom)</para></listitem>
+<listitem><para>Work around buggy strxfrm() present in some Solaris releases (Tom)</para></listitem>
+<listitem><para>Properly escape jdbc setObject() strings to improve security (Barry)</para></listitem>
+</itemizedlist>
+ </sect2>
+ </sect1>
+
+
+<sect1 id="release-7-3-3">
+ <title>Release 7.3.3</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2003-05-22</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes for version 7.3.2.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.3.3</title>
+
+ <para>
+ A dump/restore is <emphasis>not</emphasis> required for those
+ running version 7.3.*.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Repair sometimes-incorrect computation of StartUpID after a crash</para></listitem>
+<listitem><para>Avoid slowness with lots of deferred triggers in one transaction (Stephan)</para></listitem>
+<listitem><para>Don't lock referenced row when <command>UPDATE</command> doesn't change foreign key's value (Jan)</para></listitem>
+<listitem><para>Use <command>-fPIC</command> not <command>-fpic</command> on Sparc (Tom Callaway)</para></listitem>
+<listitem><para>Repair lack of schema-awareness in contrib/reindexdb</para></listitem>
+<listitem><para>Fix contrib/intarray error for zero-element result array (Teodor)</para></listitem>
+<listitem><para>Ensure createuser script will exit on control-C (Oliver)</para></listitem>
+<listitem><para>Fix errors when the type of a dropped column has itself been dropped</para></listitem>
+<listitem><para><command>CHECKPOINT</command> does not cause database panic on failure in noncritical steps</para></listitem>
+<listitem><para>Accept 60 in seconds fields of timestamp, time, interval input values</para></listitem>
+<listitem><para>Issue notice, not error, if <type>TIMESTAMP</type>,
+<type> TIME</type>, or <type>INTERVAL</type> precision too large</para></listitem>
+<listitem><para>Fix <function>abstime-to-time</function> cast function (fix is
+ not applied unless you <application>initdb</application>)</para></listitem>
+<listitem><para>Fix <application>pg_proc</application> entry for
+ <type>timestampt_izone</type> (fix is not applied unless you
+ <application>initdb</application>)</para></listitem>
+<listitem><para>Make <function>EXTRACT(EPOCH FROM timestamp without time zone)</function> treat input as local time</para></listitem>
+<listitem><para><command>'now'::timestamptz</command> gave wrong answer if timezone changed earlier in transaction</para></listitem>
+<listitem><para><envar>HAVE_INT64_TIMESTAMP</envar> code for time with timezone overwrote its input</para></listitem>
+<listitem><para>Accept <command>GLOBAL TEMP/TEMPORARY</command> as a
+ synonym for <command>TEMPORARY</command></para></listitem>
+<listitem><para>Avoid improper schema-privilege-check failure in foreign-key triggers</para></listitem>
+<listitem><para>Fix bugs in foreign-key triggers for <command>SET DEFAULT</command> action</para></listitem>
+<listitem><para>Fix incorrect time-qual check in row fetch for
+ <command>UPDATE</command> and <command>DELETE</command> triggers</para></listitem>
+<listitem><para>Foreign-key clauses were parsed but ignored in
+ <command>ALTER TABLE ADD COLUMN</command></para></listitem>
+<listitem><para>Fix createlang script breakage for case where handler function already exists</para></listitem>
+<listitem><para>Fix misbehavior on zero-column tables in <application>pg_dump</application>, COPY, ANALYZE, other places</para></listitem>
+<listitem><para>Fix misbehavior of <function>func_error()</function> on type names containing '%'</para></listitem>
+<listitem><para>Fix misbehavior of <function>replace()</function> on strings containing '%'</para></listitem>
+<listitem><para>Regular-expression patterns containing certain multibyte characters failed</para></listitem>
+<listitem><para>Account correctly for <command>NULL</command>s in more cases in join size estimation</para></listitem>
+<listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
+<listitem><para>Fix failure to convert large code point values in EUC_TW conversions (Tatsuo)</para></listitem>
+<listitem><para>Fix error recovery for <function>SSL_read</function>/<function>SSL_write</function> calls</para></listitem>
+<listitem><para>Don't do early constant-folding of type coercion expressions</para></listitem>
+<listitem><para>Validate page header fields immediately after reading in any page</para></listitem>
+<listitem><para>Repair incorrect check for ungrouped variables in unnamed joins</para></listitem>
+<listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
+<listitem><para>contrib/ltree fixes (Teodor)</para></listitem>
+<listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
+<listitem><para>Avoid running out of buffers in many-way indexscan (bug introduced in 7.3)</para></listitem>
+<listitem><para>Fix planner's selectivity estimation functions to handle domains properly</para></listitem>
+<listitem><para>Fix <application>dbmirror</application> memory-allocation bug (Steven Singer)</para></listitem>
+<listitem><para>Prevent infinite loop in <function>ln(numeric)</function> due to roundoff error</para></listitem>
+<listitem><para><command>GROUP BY</command> got confused if there were multiple equal GROUP BY items</para></listitem>
+<listitem><para>Fix bad plan when inherited <command>UPDATE</command>/<command>DELETE</command> references another inherited table</para></listitem>
+<listitem><para>Prevent clustering on incomplete (partial or non-NULL-storing) indexes</para></listitem>
+<listitem><para>Service shutdown request at proper time if it arrives while still starting up</para></listitem>
+<listitem><para>Fix left-links in temporary indexes (could make backwards scans miss entries)</para></listitem>
+<listitem><para>Fix incorrect handling of client_encoding setting in postgresql.conf (Tatsuo)</para></listitem>
+<listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
+<listitem><para>Fix SPI for case where rule contains multiple statements of the same type</para></listitem>
+<listitem><para>Fix problem with checking for wrong type of access privilege in rule query</para></listitem>
+<listitem><para>Fix problem with <command>EXCEPT</command> in <command>CREATE RULE</command></para></listitem>
+<listitem><para>Prevent problem with dropping temp tables having serial columns</para></listitem>
+<listitem><para>Fix replace_vars_with_subplan_refs failure in complex views</para></listitem>
+<listitem><para>Fix regexp slowness in single-byte encodings (Tatsuo)</para></listitem>
+<listitem><para>Allow qualified type names in <command>CREATE CAST</command>
+ and <command> DROP CAST</command></para></listitem>
+<listitem><para>Accept <function>SETOF type[]</function>, which formerly had to
+ be written <function>SETOF _type</function></para></listitem>
+<listitem><para>Fix <application>pg_dump</application> core dump in some cases with procedural languages</para></listitem>
+<listitem><para>Force ISO datestyle in <application>pg_dump</application> output, for portability (Oliver)</para></listitem>
+<listitem><para><application>pg_dump</application> failed to handle error return
+ from <function>lo_read</function> (Oleg Drokin)</para></listitem>
+<listitem><para><application>pg_dumpall</application> failed with groups having no members (Nick Eskelinen)</para></listitem>
+<listitem><para><application>pg_dumpall</application> failed to recognize --globals-only switch</para></listitem>
+<listitem><para>pg_restore failed to restore blobs if -X disable-triggers is specified</para></listitem>
+<listitem><para>Repair intrafunction memory leak in plpgsql</para></listitem>
+<listitem><para>pltcl's <command>elog</command> command dumped core if given wrong parameters (Ian Harding)</para></listitem>
+<listitem><para>plpython used wrong value of <envar>atttypmod</envar> (Brad McLean)</para></listitem>
+<listitem><para>Fix improper quoting of boolean values in Python interface (D'Arcy)</para></listitem>
+<listitem><para>Added <function>addDataType()</function> method to PGConnection interface for JDBC</para></listitem>
+<listitem><para>Fixed various problems with updateable ResultSets for JDBC (Shawn Green)</para></listitem>
+<listitem><para>Fixed various problems with DatabaseMetaData for JDBC (Kris Jurka, Peter Royal)</para></listitem>
+<listitem><para>Fixed problem with parsing table ACLs in JDBC</para></listitem>
+<listitem><para>Better error message for character set conversion problems in JDBC</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-3-2">
+ <title>Release 7.3.2</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2003-02-04</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes for version 7.3.1.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.3.2</title>
+
+ <para>
+ A dump/restore is <emphasis>not</emphasis> required for those
+ running version 7.3.*.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Restore creation of OID column in CREATE TABLE AS / SELECT INTO</para></listitem>
+<listitem><para>Fix <application>pg_dump</> core dump when dumping views having comments</para></listitem>
+<listitem><para>Dump DEFERRABLE/INITIALLY DEFERRED constraints properly</para></listitem>
+<listitem><para>Fix UPDATE when child table's column numbering differs from parent</para></listitem>
+<listitem><para>Increase default value of max_fsm_relations</para></listitem>
+<listitem><para>Fix problem when fetching backwards in a cursor for a single-row query</para></listitem>
+<listitem><para>Make backward fetch work properly with cursor on SELECT DISTINCT query</para></listitem>
+<listitem><para>Fix problems with loading <application>pg_dump</> files containing contrib/lo usage</para></listitem>
+<listitem><para>Fix problem with all-numeric user names</para></listitem>
+<listitem><para>Fix possible memory leak and core dump during disconnect in libpgtcl</para></listitem>
+<listitem><para>Make plpython's spi_execute command handle nulls properly (Andrew Bosma)</para></listitem>
+<listitem><para>Adjust plpython error reporting so that its regression test passes again</para></listitem>
+<listitem><para>Work with bison 1.875</para></listitem>
+<listitem><para>Handle mixed-case names properly in plpgsql's %type (Neil)</para></listitem>
+<listitem><para>Fix core dump in pltcl when executing a query rewritten by a rule</para></listitem>
+<listitem><para>Repair array subscript overruns (per report from Yichen Xie)</para></listitem>
+<listitem><para>Reduce MAX_TIME_PRECISION from 13 to 10 in floating-point case</para></listitem>
+<listitem><para>Correctly case-fold variable names in per-database and per-user settings</para></listitem>
+<listitem><para>Fix coredump in plpgsql's RETURN NEXT when SELECT into record returns no rows</para></listitem>
+<listitem><para>Fix outdated use of pg_type.typprtlen in python client interface</para></listitem>
+<listitem><para>Correctly handle fractional seconds in timestamps in JDBC driver</para></listitem>
+<listitem><para>Improve performance of getImportedKeys() in JDBC</para></listitem>
+<listitem><para>Make shared-library symlinks work standardly on HPUX (Giles)</para></listitem>
+<listitem><para>Repair inconsistent rounding behavior for timestamp, time, interval</para></listitem>
+<listitem><para>SSL negotiation fixes (Nathan Mueller)</para></listitem>
+<listitem><para>Make libpq's ~/.pgpass feature work when connecting with PQconnectDB</para></listitem>
+<listitem><para>Update my2pg, ora2pg</para></listitem>
+<listitem><para>Translation updates</para></listitem>
+<listitem><para>Add casts between types lo and oid in contrib/lo</para></listitem>
+<listitem><para>fastpath code now checks for privilege to call function</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-3-1">
+ <title>Release 7.3.1</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2002-12-18</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes for version 7.3.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.3.1</title>
+
+ <para>
+ A dump/restore is <emphasis>not</emphasis> required for those
+ running version 7.3. However, it should be noted that the main
+ <productname>PostgreSQL</productname> interface library, libpq,
+ has a new major version number for this release, which might require
+ recompilation of client code in certain cases.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Fix a core dump of COPY TO when client/server encodings don't match (Tom)</para></listitem>
+<listitem><para>Allow <application>pg_dump</> to work with pre-7.2 servers (Philip)</para></listitem>
+<listitem><para>contrib/adddepend fixes (Tom)</para></listitem>
+<listitem><para>Fix problem with deletion of per-user/per-database config settings (Tom)</para></listitem>
+<listitem><para>contrib/vacuumlo fix (Tom)</para></listitem>
+<listitem><para>Allow 'password' encryption even when pg_shadow contains MD5 passwords (Bruce)</para></listitem>
+<listitem><para>contrib/dbmirror fix (Steven Singer)</para></listitem>
+<listitem><para>Optimizer fixes (Tom)</para></listitem>
+<listitem><para>contrib/tsearch fixes (Teodor Sigaev, Magnus)</para></listitem>
+<listitem><para>Allow locale names to be mixed case (Nicolai Tufar)</para></listitem>
+<listitem><para>Increment libpq library's major version number (Bruce)</para></listitem>
+<listitem><para>pg_hba.conf error reporting fixes (Bruce, Neil)</para></listitem>
+<listitem><para>Add SCO Openserver 5.0.4 as a supported platform (Bruce)</para></listitem>
+<listitem><para>Prevent EXPLAIN from crashing server (Tom)</para></listitem>
+<listitem><para>SSL fixes (Nathan Mueller)</para></listitem>
+<listitem><para>Prevent composite column creation via ALTER TABLE (Tom)</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-3">
+ <title>Release 7.3</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2002-11-27</simpara>
+ </note>
+
+ <sect2>
+ <title>Overview</title>
+
+ <para>
+ Major changes in this release:
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term>Schemas</term>
+ <listitem>
+ <para>
+ Schemas allow users to create objects in separate namespaces,
+ so two people or applications can have tables with the same
+ name. There is also a public schema for shared tables.
+ Table/index creation can be restricted by removing privileges
+ on the public schema.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Drop Column</term>
+ <listitem>
+ <para>
+ <productname>PostgreSQL</productname> now supports the
+ <literal>ALTER TABLE ... DROP COLUMN</literal> functionality.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Table Functions</term>
+ <listitem>
+ <para>
+ Functions returning multiple rows and/or multiple columns are
+ now much easier to use than before. You can call such a
+ <quote>table function</quote> in the <literal>SELECT</literal>
+ <literal>FROM</literal> clause, treating its output like a
+ table. Also, <application>PL/pgSQL</application> functions can
+ now return sets.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Prepared Queries</term>
+ <listitem>
+ <para>
+ <productname>PostgreSQL</productname> now supports prepared
+ queries, for improved performance.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Dependency Tracking</term>
+ <listitem>
+ <para>
+ <productname>PostgreSQL</productname> now records object
+ dependencies, which allows improvements in many areas.
+ <command>DROP</command> statements now take either
+ <literal>CASCADE</> or <literal>RESTRICT</> to control whether
+ dependent objects are also dropped.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Privileges</term>
+ <listitem>
+ <para>
+ Functions and procedural languages now have privileges, and
+ functions can be defined to run with the privileges of their
+ creator.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Internationalization</term>
+ <listitem>
+ <para>
+ Both multibyte and locale support are now always enabled.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Logging</term>
+ <listitem>
+ <para>
+ A variety of logging options have been enhanced.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Interfaces</term>
+ <listitem>
+ <para>
+ A large number of interfaces have been moved to <ulink
+ url="http://gborg.postgresql.org">http://gborg.postgresql.org</>
+ where they can be developed and released independently.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Functions/Identifiers</term>
+ <listitem>
+ <para>
+ By default, functions can now take up to 32 parameters, and
+ identifiers can be up to 63 bytes long. Also, <literal>OPAQUE</>
+ is now deprecated: there are specific <quote>pseudo-datatypes</>
+ to represent each of the former meanings of <literal>OPAQUE</>
+ in function argument and result types.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect2>
+
+ <sect2>
+ <title>Migration to Version 7.3</title>
+
+ <para>
+ A dump/restore using <application>pg_dump</> is required for those
+ wishing to migrate data from any previous release. If your
+ application examines the system catalogs, additional changes will
+ be required due to the introduction of schemas in 7.3; for more
+ information, see: <ulink
+ url="http://developer.postgresql.org/~momjian/upgrade_tips_7.3"></>.
+ </para>
+
+ <para>
+ Observe the following incompatibilities:
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ Pre-6.3 clients are no longer supported.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <filename>pg_hba.conf</filename> now has a column for the user
+ name and additional features. Existing files need to be
+ adjusted.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Several <filename>postgresql.conf</filename> logging parameters
+ have been renamed.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>LIMIT #,#</literal> has been disabled; use
+ <literal>LIMIT # OFFSET #</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>INSERT</command> statements with column lists must
+ specify a value for each specified column. For example,
+ <literal>INSERT INTO tab (col1, col2) VALUES ('val1')</literal>
+ is now invalid. It's still allowed to supply fewer columns than
+ expected if the <command>INSERT</command> does not have a column list.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <type>serial</type> columns are no longer automatically
+ <literal>UNIQUE</>; thus, an index will not automatically be
+ created.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A <command>SET</command> command inside an aborted transaction
+ is now rolled back.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>COPY</command> no longer considers missing trailing
+ columns to be null. All columns need to be specified.
+ (However, one can achieve a similar effect by specifying a
+ column list in the <command>COPY</command> command.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The data type <type>timestamp</type> is now equivalent to
+ <type>timestamp without time zone</type>, instead of
+ <type>timestamp with time zone</type>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Pre-7.3 databases loaded into 7.3 will not have the new object
+ dependencies for <type>serial</type> columns, unique
+ constraints, and foreign keys. See the directory
+ <filename>contrib/adddepend/</filename> for a detailed
+ description and a script that will add such dependencies.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ An empty string (<literal>''</literal>) is no longer allowed as
+ the input into an integer field. Formerly, it was silently
+ interpreted as 0.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <sect3>
+ <title>Server Operation</title>
+<itemizedlist>
+<listitem><para>Add pg_locks view to show locks (Neil)</para></listitem>
+<listitem><para>Security fixes for password negotiation memory allocation (Neil)</para></listitem>
+<listitem><para>Remove support for version 0 FE/BE protocol (<productname>PostgreSQL</productname> 6.2 and earlier) (Tom)</para></listitem>
+<listitem><para>Reserve the last few backend slots for superusers, add parameter superuser_reserved_connections to control this (Nigel J. Andrews)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Performance</title>
+<itemizedlist>
+<listitem><para>Improve startup by calling localtime() only once (Tom)</para></listitem>
+<listitem><para>Cache system catalog information in flat files for faster startup (Tom)</para></listitem>
+<listitem><para>Improve caching of index information (Tom)</para></listitem>
+<listitem><para>Optimizer improvements (Tom, Fernando Nasser)</para></listitem>
+<listitem><para>Catalog caches now store failed lookups (Tom)</para></listitem>
+<listitem><para>Hash function improvements (Neil)</para></listitem>
+<listitem><para>Improve performance of query tokenization and network handling (Peter)</para></listitem>
+<listitem><para>Speed improvement for large object restore (Mario Weilguni)</para></listitem>
+<listitem><para>Mark expired index entries on first lookup, saving later heap fetches (Tom)</para></listitem>
+<listitem><para>Avoid excessive NULL bitmap padding (Manfred Koizar)</para></listitem>
+<listitem><para>Add BSD-licensed qsort() for Solaris, for performance (Bruce)</para></listitem>
+<listitem><para>Reduce per-row overhead by four bytes (Manfred Koizar)</para></listitem>
+<listitem><para>Fix GEQO optimizer bug (Neil Conway)</para></listitem>
+<listitem><para>Make WITHOUT OID actually save four bytes per row (Manfred Koizar)</para></listitem>
+<listitem><para>Add default_statistics_target variable to specify ANALYZE buckets (Neil)</para></listitem>
+<listitem><para>Use local buffer cache for temporary tables so no WAL overhead (Tom)</para></listitem>
+<listitem><para>Improve free space map performance on large tables (Stephen Marshall, Tom)</para></listitem>
+<listitem><para>Improved WAL write concurrency (Tom)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Privileges</title>
+<itemizedlist>
+<listitem><para>Add privileges on functions and procedural languages (Peter)</para></listitem>
+<listitem><para>Add OWNER to CREATE DATABASE so superusers can create databases on behalf of unprivileged users (Gavin Sherry, Tom)</para></listitem>
+<listitem><para>Add new object privilege bits EXECUTE and USAGE (Tom)</para></listitem>
+<listitem><para>Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION (Tom)</para></listitem>
+<listitem><para>Allow functions to be executed with the privilege of the function owner (Peter)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Server Configuration</title>
+<itemizedlist>
+<listitem><para>Server log messages now tagged with LOG, not DEBUG (Bruce)</para></listitem>
+<listitem><para>Add user column to pg_hba.conf (Bruce)</para></listitem>
+<listitem><para>Have log_connections output two lines in log file (Tom)</para></listitem>
+<listitem><para>Remove debug_level from postgresql.conf, now server_min_messages (Bruce)</para></listitem>
+<listitem><para>New ALTER DATABASE/USER ... SET command for per-user/database initialization (Peter)</para></listitem>
+<listitem><para>New parameters server_min_messages and client_min_messages to control which messages are sent to the server logs or client applications (Bruce)</para></listitem>
+<listitem><para>Allow pg_hba.conf to specify lists of users/databases separated by commas, group names prepended with +, and file names prepended with @ (Bruce)</para></listitem>
+<listitem><para>Remove secondary password file capability and pg_password utility (Bruce)</para></listitem>
+<listitem><para>Add variable db_user_namespace for database-local user names (Bruce)</para></listitem>
+<listitem><para>SSL improvements (Bear Giles)</para></listitem>
+<listitem><para>Make encryption of stored passwords the default (Bruce)</para></listitem>
+<listitem><para>Allow pg_statistics to be reset by calling pg_stat_reset() (Christopher)</para></listitem>
+<listitem><para>Add log_duration parameter (Bruce)</para></listitem>
+<listitem><para>Rename debug_print_query to log_statement (Bruce)</para></listitem>
+<listitem><para>Rename show_query_stats to show_statement_stats (Bruce)</para></listitem>
+<listitem><para>Add param log_min_error_statement to print commands to logs on error (Gavin)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Queries</title>
+<itemizedlist>
+<listitem><para>Make cursors insensitive, meaning their contents do not change (Tom)</para></listitem>
+<listitem><para>Disable LIMIT #,# syntax; now only LIMIT # OFFSET # supported (Bruce)</para></listitem>
+<listitem><para>Increase identifier length to 63 (Neil, Bruce)</para></listitem>
+<listitem><para>UNION fixes for merging >= 3 columns of different lengths (Tom)</para></listitem>
+<listitem><para>Add DEFAULT key word to INSERT, e.g., INSERT ... (..., DEFAULT, ...) (Rod)</para></listitem>
+<listitem><para>Allow views to have default values using ALTER COLUMN ... SET DEFAULT (Neil)</para></listitem>
+<listitem><para>Fail on INSERTs with column lists that don't supply all column values, e.g., INSERT INTO tab (col1, col2) VALUES ('val1'); (Rod)</para></listitem>
+<listitem><para>Fix for join aliases (Tom)</para></listitem>
+<listitem><para>Fix for FULL OUTER JOINs (Tom)</para></listitem>
+<listitem><para>Improve reporting of invalid identifier and location (Tom, Gavin)</para></listitem>
+<listitem><para>Fix OPEN cursor(args) (Tom)</para></listitem>
+<listitem><para>Allow 'ctid' to be used in a view and currtid(viewname) (Hiroshi)</para></listitem>
+<listitem><para>Fix for CREATE TABLE AS with UNION (Tom)</para></listitem>
+<listitem><para>SQL99 syntax improvements (Thomas)</para></listitem>
+<listitem><para>Add statement_timeout variable to cancel queries (Bruce)</para></listitem>
+<listitem><para>Allow prepared queries with PREPARE/EXECUTE (Neil)</para></listitem>
+<listitem><para>Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce)</para></listitem>
+<listitem><para>Add variable autocommit (Tom, David Van Wie)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Object Manipulation</title>
+<itemizedlist>
+<listitem><para>Make equals signs optional in CREATE DATABASE (Gavin Sherry)</para></listitem>
+<listitem><para>Make ALTER TABLE OWNER change index ownership too (Neil)</para></listitem>
+<listitem><para>New ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls TOAST storage, compression (John Gray)</para></listitem>
+<listitem><para>Add schema support, CREATE/DROP SCHEMA (Tom)</para></listitem>
+<listitem><para>Create schema for temporary tables (Tom)</para></listitem>
+<listitem><para>Add variable search_path for schema search (Tom)</para></listitem>
+<listitem><para>Add ALTER TABLE SET/DROP NOT NULL (Christopher)</para></listitem>
+<listitem><para>New CREATE FUNCTION volatility levels (Tom)</para></listitem>
+<listitem><para>Make rule names unique only per table (Tom)</para></listitem>
+<listitem><para>Add 'ON tablename' clause to DROP RULE and COMMENT ON RULE (Tom)</para></listitem>
+<listitem><para>Add ALTER TRIGGER RENAME (Joe)</para></listitem>
+<listitem><para>New current_schema() and current_schemas() inquiry functions (Tom)</para></listitem>
+<listitem><para>Allow functions to return multiple rows (table functions) (Joe)</para></listitem>
+<listitem><para>Make WITH optional in CREATE DATABASE, for consistency (Bruce)</para></listitem>
+<listitem><para>Add object dependency tracking (Rod, Tom)</para></listitem>
+<listitem><para>Add RESTRICT/CASCADE to DROP commands (Rod)</para></listitem>
+<listitem><para>Add ALTER TABLE DROP for non-CHECK CONSTRAINT (Rod)</para></listitem>
+<listitem><para>Autodestroy sequence on DROP of table with SERIAL (Rod)</para></listitem>
+<listitem><para>Prevent column dropping if column is used by foreign key (Rod)</para></listitem>
+<listitem><para>Automatically drop constraints/functions when object is dropped (Rod)</para></listitem>
+<listitem><para>Add CREATE/DROP OPERATOR CLASS (Bill Studenmund, Tom)</para></listitem>
+<listitem><para>Add ALTER TABLE DROP COLUMN (Christopher, Tom, Hiroshi)</para></listitem>
+<listitem><para>Prevent inherited columns from being removed or renamed (Alvaro Herrera)</para></listitem>
+<listitem><para>Fix foreign key constraints to not error on intermediate database states (Stephan)</para></listitem>
+<listitem><para>Propagate column or table renaming to foreign key constraints</para></listitem>
+<listitem><para>Add CREATE OR REPLACE VIEW (Gavin, Neil, Tom)</para></listitem>
+<listitem><para>Add CREATE OR REPLACE RULE (Gavin, Neil, Tom)</para></listitem>
+<listitem><para>Have rules execute alphabetically, returning more predictable values (Tom)</para></listitem>
+<listitem><para>Triggers are now fired in alphabetical order (Tom)</para></listitem>
+<listitem><para>Add /contrib/adddepend to handle pre-7.3 object dependencies (Rod)</para></listitem>
+<listitem><para>Allow better casting when inserting/updating values (Tom)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Utility Commands</title>
+<itemizedlist>
+<listitem><para>Have COPY TO output embedded carriage returns and newlines as \r and \n (Tom)</para></listitem>
+<listitem><para>Allow DELIMITER in COPY FROM to be 8-bit clean (Tatsuo)</para></listitem>
+<listitem><para>Make <application>pg_dump</> use ALTER TABLE ADD PRIMARY KEY, for performance (Neil)</para></listitem>
+<listitem><para>Disable brackets in multistatement rules (Bruce)</para></listitem>
+<listitem><para>Disable VACUUM from being called inside a function (Bruce)</para></listitem>
+<listitem><para>Allow dropdb and other scripts to use identifiers with spaces (Bruce)</para></listitem>
+<listitem><para>Restrict database comment changes to the current database</para></listitem>
+<listitem><para>Allow comments on operators, independent of the underlying function (Rod)</para></listitem>
+<listitem><para>Rollback SET commands in aborted transactions (Tom)</para></listitem>
+<listitem><para>EXPLAIN now outputs as a query (Tom)</para></listitem>
+<listitem><para>Display condition expressions and sort keys in EXPLAIN (Tom)</para></listitem>
+<listitem><para>Add 'SET LOCAL var = value' to set configuration variables for a single transaction (Tom)</para></listitem>
+<listitem><para>Allow ANALYZE to run in a transaction (Bruce)</para></listitem>
+<listitem><para>Improve COPY syntax using new WITH clauses, keep backward compatibility (Bruce)</para></listitem>
+<listitem><para>Fix <application>pg_dump</> to consistently output tags in non-ASCII dumps (Bruce)</para></listitem>
+<listitem><para>Make foreign key constraints clearer in dump file (Rod)</para></listitem>
+<listitem><para>Add COMMENT ON CONSTRAINT (Rod)</para></listitem>
+<listitem><para>Allow COPY TO/FROM to specify column names (Brent Verner)</para></listitem>
+<listitem><para>Dump UNIQUE and PRIMARY KEY constraints as ALTER TABLE (Rod)</para></listitem>
+<listitem><para>Have SHOW output a query result (Joe)</para></listitem>
+<listitem><para>Generate failure on short COPY lines rather than pad NULLs (Neil)</para></listitem>
+<listitem><para>Fix CLUSTER to preserve all table attributes (Alvaro Herrera)</para></listitem>
+<listitem><para>New pg_settings table to view/modify GUC settings (Joe)</para></listitem>
+<listitem><para>Add smart quoting, portability improvements to <application>pg_dump</> output (Peter)</para></listitem>
+<listitem><para>Dump serial columns out as SERIAL (Tom)</para></listitem>
+<listitem><para>Enable large file support, >2G for <application>pg_dump</> (Peter, Philip Warner, Bruce)</para></listitem>
+<listitem><para>Disallow TRUNCATE on tables that are involved in referential constraints (Rod)</para></listitem>
+<listitem><para>Have TRUNCATE also auto-truncate the toast table of the relation (Tom)</para></listitem>
+<listitem><para>Add clusterdb utility that will auto-cluster an entire database based on previous CLUSTER operations (Alvaro Herrera)</para></listitem>
+<listitem><para>Overhaul pg_dumpall (Peter)</para></listitem>
+<listitem><para>Allow REINDEX of TOAST tables (Tom)</para></listitem>
+<listitem><para>Implemented START TRANSACTION, per SQL99 (Neil)</para></listitem>
+<listitem><para>Fix rare index corruption when a page split affects bulk delete (Tom)</para></listitem>
+<listitem><para>Fix ALTER TABLE ... ADD COLUMN for inheritance (Alvaro Herrera)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Data Types and Functions</title>
+<itemizedlist>
+<listitem><para>Fix factorial(0) to return 1 (Bruce)</para></listitem>
+<listitem><para>Date/time/timezone improvements (Thomas)</para></listitem>
+<listitem><para>Fix for array slice extraction (Tom)</para></listitem>
+<listitem><para>Fix extract/date_part to report proper microseconds for timestamp (Tatsuo)</para></listitem>
+<listitem><para>Allow text_substr() and bytea_substr() to read TOAST values more efficiently (John Gray)</para></listitem>
+<listitem><para>Add domain support (Rod)</para></listitem>
+<listitem><para>Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types (Thomas)</para></listitem>
+<listitem><para>Allow alternate storage scheme of 64-bit integers for date/time types using --enable-integer-datetimes in configure (Thomas)</para></listitem>
+<listitem><para>Make timezone(timestamptz) return timestamp rather than a string (Thomas)</para></listitem>
+<listitem><para>Allow fractional seconds in date/time types for dates prior to 1BC (Thomas)</para></listitem>
+<listitem><para>Limit timestamp data types to 6 decimal places of precision (Thomas)</para></listitem>
+<listitem><para>Change timezone conversion functions from timetz() to timezone() (Thomas)</para></listitem>
+<listitem><para>Add configuration variables datestyle and timezone (Tom)</para></listitem>
+<listitem><para>Add OVERLAY(), which allows substitution of a substring in a string (Thomas)</para></listitem>
+<listitem><para>Add SIMILAR TO (Thomas, Tom)</para></listitem>
+<listitem><para>Add regular expression SUBSTRING(string FROM pat FOR escape) (Thomas)</para></listitem>
+<listitem><para>Add LOCALTIME and LOCALTIMESTAMP functions (Thomas)</para></listitem>
+<listitem><para>Add named composite types using CREATE TYPE typename AS (column) (Joe)</para></listitem>
+<listitem><para>Allow composite type definition in the table alias clause (Joe)</para></listitem>
+<listitem><para>Add new API to simplify creation of C language table functions (Joe)</para></listitem>
+<listitem><para>Remove ODBC-compatible empty parentheses from calls to SQL99 functions for which these parentheses do not match the standard (Thomas)</para></listitem>
+<listitem><para>Allow macaddr data type to accept 12 hex digits with no separators (Mike Wyer)</para></listitem>
+<listitem><para>Add CREATE/DROP CAST (Peter)</para></listitem>
+<listitem><para>Add IS DISTINCT FROM operator (Thomas)</para></listitem>
+<listitem><para>Add SQL99 TREAT() function, synonym for CAST() (Thomas)</para></listitem>
+<listitem><para>Add pg_backend_pid() to output backend pid (Bruce)</para></listitem>
+<listitem><para>Add IS OF / IS NOT OF type predicate (Thomas)</para></listitem>
+<listitem><para>Allow bit string constants without fully-specified length (Thomas)</para></listitem>
+<listitem><para>Allow conversion between 8-byte integers and bit strings (Thomas)</para></listitem>
+<listitem><para>Implement hex literal conversion to bit string literal (Thomas)</para></listitem>
+<listitem><para>Allow table functions to appear in the FROM clause (Joe)</para></listitem>
+<listitem><para>Increase maximum number of function parameters to 32 (Bruce)</para></listitem>
+<listitem><para>No longer automatically create index for SERIAL column (Tom)</para></listitem>
+<listitem><para>Add current_database() (Rod)</para></listitem>
+<listitem><para>Fix cash_words() to not overflow buffer (Tom)</para></listitem>
+<listitem><para>Add functions replace(), split_part(), to_hex() (Joe)</para></listitem>
+<listitem><para>Fix LIKE for bytea as a right-hand argument (Joe)</para></listitem>
+<listitem><para>Prevent crashes caused by SELECT cash_out(2) (Tom)</para></listitem>
+<listitem><para>Fix to_char(1,'FM999.99') to return a period (Karel)</para></listitem>
+<listitem><para>Fix trigger/type/language functions returning OPAQUE to return proper type (Tom)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Internationalization</title>
+<itemizedlist>
+<listitem><para>Add additional encodings: Korean (JOHAB), Thai (WIN874), Vietnamese (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC) (Eiji Tokuya)</para></listitem>
+<listitem><para>Enable locale support by default (Peter)</para></listitem>
+<listitem><para>Add locale variables (Peter)</para></listitem>
+<listitem><para>Escape byes >= 0x7f for multibyte in PQescapeBytea/PQunescapeBytea (Tatsuo)</para></listitem>
+<listitem><para>Add locale awareness to regular expression character classes</para></listitem>
+<listitem><para>Enable multibyte support by default (Tatsuo)</para></listitem>
+<listitem><para>Add GB18030 multibyte support (Bill Huang)</para></listitem>
+<listitem><para>Add CREATE/DROP CONVERSION, allowing loadable encodings (Tatsuo, Kaori)</para></listitem>
+<listitem><para>Add pg_conversion table (Tatsuo)</para></listitem>
+<listitem><para>Add SQL99 CONVERT() function (Tatsuo)</para></listitem>
+<listitem><para>pg_dumpall, pg_controldata, and pg_resetxlog now national-language aware (Peter)</para></listitem>
+<listitem><para>New and updated translations</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Server-side Languages</title>
+<itemizedlist>
+<listitem><para>Allow recursive SQL function (Peter)</para></listitem>
+<listitem><para>Change PL/Tcl build to use configured compiler and Makefile.shlib (Peter)</para></listitem>
+<listitem><para>Overhaul the PL/pgSQL FOUND variable to be more Oracle-compatible (Neil, Tom)</para></listitem>
+<listitem><para>Allow PL/pgSQL to handle quoted identifiers (Tom)</para></listitem>
+<listitem><para>Allow set-returning PL/pgSQL functions (Neil)</para></listitem>
+<listitem><para>Make PL/pgSQL schema-aware (Joe)</para></listitem>
+<listitem><para>Remove some memory leaks (Nigel J. Andrews, Tom)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>psql</title>
+<itemizedlist>
+<listitem><para>Don't lowercase psql \connect database name for 7.2.0 compatibility (Tom)</para></listitem>
+<listitem><para>Add psql \timing to time user queries (Greg Sabino Mullane)</para></listitem>
+<listitem><para>Have psql \d show index information (Greg Sabino Mullane)</para></listitem>
+<listitem><para>New psql \dD shows domains (Jonathan Eisler)</para></listitem>
+<listitem><para>Allow psql to show rules on views (Paul ?)</para></listitem>
+<listitem><para>Fix for psql variable substitution (Tom)</para></listitem>
+<listitem><para>Allow psql \d to show temporary table structure (Tom)</para></listitem>
+<listitem><para>Allow psql \d to show foreign keys (Rod)</para></listitem>
+<listitem><para>Fix \? to honor \pset pager (Bruce)</para></listitem>
+<listitem><para>Have psql reports its version number on startup (Tom)</para></listitem>
+<listitem><para>Allow \copy to specify column names (Tom)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>libpq</title>
+<itemizedlist>
+<listitem><para>Add ~/.pgpass to store host/user password combinations (Alvaro Herrera)</para></listitem>
+<listitem><para>Add PQunescapeBytea() function to libpq (Patrick Welche)</para></listitem>
+<listitem><para>Fix for sending large queries over non-blocking connections (Bernhard Herzog)</para></listitem>
+<listitem><para>Fix for libpq using timers on Win9X (David Ford)</para></listitem>
+<listitem><para>Allow libpq notify to handle servers with different-length identifiers (Tom)</para></listitem>
+<listitem><para>Add libpq PQescapeString() and PQescapeBytea() to Windows (Bruce)</para></listitem>
+<listitem><para>Fix for SSL with non-blocking connections (Jack Bates)</para></listitem>
+<listitem><para>Add libpq connection timeout parameter (Denis A Ustimenko)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>JDBC</title>
+<itemizedlist>
+<listitem><para>Allow JDBC to compile with JDK 1.4 (Dave)</para></listitem>
+<listitem><para>Add JDBC 3 support (Barry)</para></listitem>
+<listitem><para>Allows JDBC to set loglevel by adding ?loglevel=X to the connection URL (Barry)</para></listitem>
+<listitem><para>Add Driver.info() message that prints out the version number (Barry)</para></listitem>
+<listitem><para>Add updateable result sets (Raghu Nidagal, Dave)</para></listitem>
+<listitem><para>Add support for callable statements (Paul Bethe)</para></listitem>
+<listitem><para>Add query cancel capability</para></listitem>
+<listitem><para>Add refresh row (Dave)</para></listitem>
+<listitem><para>Fix MD5 encryption handling for multibyte servers (Jun Kawai)</para></listitem>
+<listitem><para>Add support for prepared statements (Barry)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Miscellaneous Interfaces</title>
+<itemizedlist>
+<listitem><para>Fixed ECPG bug concerning octal numbers in single quotes (Michael)</para></listitem>
+<listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
+<listitem><para>Improve Python interface (Elliot Lee, Andrew Johnson, Greg Copeland)</para></listitem>
+<listitem><para>Add libpgtcl connection close event (Gerhard Hintermayer)</para></listitem>
+<listitem><para>Move src/interfaces/libpq++ to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
+<listitem><para>Move src/interfaces/odbc to http://gborg.postgresql.org (Marc)</para></listitem>
+<listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
+<listitem><para>Move src/interfaces/perl5 to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
+<listitem><para>Remove src/bin/pgaccess from main tree, now at http://www.pgaccess.org (Bruce)</para></listitem>
+<listitem><para>Add pg_on_connection_loss command to libpgtcl (Gerhard Hintermayer, Tom)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Source Code</title>
+<itemizedlist>
+<listitem><para>Fix for parallel make (Peter)</para></listitem>
+<listitem><para>AIX fixes for linking Tcl (Andreas Zeugswetter)</para></listitem>
+<listitem><para>Allow PL/Perl to build under Cygwin (Jason Tishler)</para></listitem>
+<listitem><para>Improve MIPS compiles (Peter, Oliver Elphick)</para></listitem>
+<listitem><para>Require Autoconf version 2.53 (Peter)</para></listitem>
+<listitem><para>Require readline and zlib by default in configure (Peter)</para></listitem>
+<listitem><para>Allow Solaris to use Intimate Shared Memory (ISM), for performance (Scott Brunza, P.J. Josh Rovero)</para></listitem>
+<listitem><para>Always enable syslog in compile, remove --enable-syslog option (Tatsuo)</para></listitem>
+<listitem><para>Always enable multibyte in compile, remove --enable-multibyte option (Tatsuo)</para></listitem>
+<listitem><para>Always enable locale in compile, remove --enable-locale option (Peter)</para></listitem>
+<listitem><para>Fix for Win9x DLL creation (Magnus Naeslund)</para></listitem>
+<listitem><para>Fix for link() usage by WAL code on Windows, BeOS (Jason Tishler)</para></listitem>
+<listitem><para>Add sys/types.h to c.h, remove from main files (Peter, Bruce)</para></listitem>
+<listitem><para>Fix AIX hang on SMP machines (Tomoyuki Niijima)</para></listitem>
+<listitem><para>AIX SMP hang fix (Tomoyuki Niijima)</para></listitem>
+<listitem><para>Fix pre-1970 date handling on newer glibc libraries (Tom)</para></listitem>
+<listitem><para>Fix PowerPC SMP locking (Tom)</para></listitem>
+<listitem><para>Prevent gcc -ffast-math from being used (Peter, Tom)</para></listitem>
+<listitem><para>Bison >= 1.50 now required for developer builds</para></listitem>
+<listitem><para>Kerberos 5 support now builds with Heimdal (Peter)</para></listitem>
+<listitem><para>Add appendix in the User's Guide which lists SQL features (Thomas)</para></listitem>
+<listitem><para>Improve loadable module linking to use RTLD_NOW (Tom)</para></listitem>
+<listitem><para>New error levels WARNING, INFO, LOG, DEBUG[1-5] (Bruce)</para></listitem>
+<listitem><para>New src/port directory holds replaced libc functions (Peter, Bruce)</para></listitem>
+<listitem><para>New pg_namespace system catalog for schemas (Tom)</para></listitem>
+<listitem><para>Add pg_class.relnamespace for schemas (Tom)</para></listitem>
+<listitem><para>Add pg_type.typnamespace for schemas (Tom)</para></listitem>
+<listitem><para>Add pg_proc.pronamespace for schemas (Tom)</para></listitem>
+<listitem><para>Restructure aggregates to have pg_proc entries (Tom)</para></listitem>
+<listitem><para>System relations now have their own namespace, pg_* test not required (Fernando Nasser)</para></listitem>
+<listitem><para>Rename TOAST index names to be *_index rather than *_idx (Neil)</para></listitem>
+<listitem><para>Add namespaces for operators, opclasses (Tom)</para></listitem>
+<listitem><para>Add additional checks to server control file (Thomas)</para></listitem>
+<listitem><para>New Polish FAQ (Marcin Mazurek)</para></listitem>
+<listitem><para>Add Posix semaphore support (Tom)</para></listitem>
+<listitem><para>Document need for reindex (Bruce)</para></listitem>
+<listitem><para>Rename some internal identifiers to simplify Windows compile (Jan, Katherine Ward)</para></listitem>
+<listitem><para>Add documentation on computing disk space (Bruce)</para></listitem>
+<listitem><para>Remove KSQO from GUC (Bruce)</para></listitem>
+<listitem><para>Fix memory leak in rtree (Kenneth Been)</para></listitem>
+<listitem><para>Modify a few error messages for consistency (Bruce)</para></listitem>
+<listitem><para>Remove unused system table columns (Peter)</para></listitem>
+<listitem><para>Make system columns NOT NULL where appropriate (Tom)</para></listitem>
+<listitem><para>Clean up use of sprintf in favor of snprintf() (Neil, Jukka Holappa)</para></listitem>
+<listitem><para>Remove OPAQUE and create specific subtypes (Tom)</para></listitem>
+<listitem><para>Cleanups in array internal handling (Joe, Tom)</para></listitem>
+<listitem><para>Disallow pg_atoi('') (Bruce)</para></listitem>
+<listitem><para>Remove parameter wal_files because WAL files are now recycled (Bruce)</para></listitem>
+<listitem><para>Add version numbers to heap pages (Tom)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ <sect3>
+ <title>Contrib</title>
+<itemizedlist>
+<listitem><para>Allow inet arrays in /contrib/array (Neil)</para></listitem>
+<listitem><para>GiST fixes (Teodor Sigaev, Neil)</para></listitem>
+<listitem><para>Upgrade /contrib/mysql</para></listitem>
+<listitem><para>Add /contrib/dbsize which shows table sizes without vacuum (Peter)</para></listitem>
+<listitem><para>Add /contrib/intagg, integer aggregator routines (mlw)</para></listitem>
+<listitem><para>Improve /contrib/oid2name (Neil, Bruce)</para></listitem>
+<listitem><para>Improve /contrib/tsearch (Oleg, Teodor Sigaev)</para></listitem>
+<listitem><para>Cleanups of /contrib/rserver (Alexey V. Borzov)</para></listitem>
+<listitem><para>Update /contrib/oracle conversion utility (Gilles Darold)</para></listitem>
+<listitem><para>Update /contrib/dblink (Joe)</para></listitem>
+<listitem><para>Improve options supported by /contrib/vacuumlo (Mario Weilguni)</para></listitem>
+<listitem><para>Improvements to /contrib/intarray (Oleg, Teodor Sigaev, Andrey Oktyabrski)</para></listitem>
+<listitem><para>Add /contrib/reindexdb utility (Shaun Thomas)</para></listitem>
+<listitem><para>Add indexing to /contrib/isbn_issn (Dan Weston)</para></listitem>
+<listitem><para>Add /contrib/dbmirror (Steven Singer)</para></listitem>
+<listitem><para>Improve /contrib/pgbench (Neil)</para></listitem>
+<listitem><para>Add /contrib/tablefunc table function examples (Joe)</para></listitem>
+<listitem><para>Add /contrib/ltree data type for tree structures (Teodor Sigaev, Oleg Bartunov)</para></listitem>
+<listitem><para>Move /contrib/pg_controldata, pg_resetxlog into main tree (Bruce)</para></listitem>
+<listitem><para>Fixes to /contrib/cube (Bruno Wolff)</para></listitem>
+<listitem><para>Improve /contrib/fulltextindex (Christopher)</para></listitem>
+</itemizedlist>
+ </sect3>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-2-8">
+ <title>Release 7.2.8</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2005-05-09</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.2.7, including one
+ security-related issue.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.2.8</title>
+
+ <para>
+ A dump/restore is not required for those running 7.2.X.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<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 <function>EXTRACT(EPOCH)</> for
+<type>TIME WITH TIME ZONE</> values</para></listitem>
+<listitem><para>Additional buffer overrun checks in plpgsql
+(Neil)</para></listitem>
+<listitem><para>Fix pg_dump to dump index names and trigger names containing
+<literal>%</> correctly (Neil)</para></listitem>
+<listitem><para>Prevent <function>to_char(interval)</> from dumping core for
+month-related formats</para></listitem>
+<listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
+(Marko Kreen)</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-2-7">
+ <title>Release 7.2.7</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2005-01-31</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.2.6, including several
+ security-related issues.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.2.7</title>
+
+ <para>
+ A dump/restore is not required for those running 7.2.X.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Disallow <command>LOAD</> to non-superusers</para>
+<para>
+On platforms that will automatically execute initialization functions of a
+shared library (this includes at least Windows and ELF-based Unixen),
+<command>LOAD</> can be used to make the server execute arbitrary code.
+Thanks to NGS Software for reporting this.</para></listitem>
+<listitem><para>Add needed STRICT marking to some contrib functions (Kris
+Jurka)</para></listitem>
+<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
+many parameters (Neil)</para></listitem>
+<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
+<para>
+The result of the join was mistakenly supposed to be sorted the same as the
+left input. This could not only deliver mis-sorted output to the user, but
+in case of nested merge joins could give outright wrong answers.
+</para></listitem>
+<listitem><para>Fix display of negative intervals in SQL and GERMAN
+datestyles</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-2-6">
+ <title>Release 7.2.6</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2004-10-22</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.2.5.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.2.6</title>
+
+ <para>
+ A dump/restore is not required for those running 7.2.X.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Repair possible failure to update hint bits on disk</para>
+<para>
+Under rare circumstances this oversight could lead to
+<quote>could not access transaction status</> failures, which qualifies
+it as a potential-data-loss bug.
+</para></listitem>
+<listitem><para>Ensure that hashed outer join does not miss tuples</para>
+<para>
+Very large left joins using a hash join plan could fail to output unmatched
+left-side rows given just the right data distribution.
+</para></listitem>
+<listitem><para>Disallow running pg_ctl as root</para>
+<para>
+This is to guard against any possible security issues.
+</para></listitem>
+<listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</para>
+<para>
+This has been reported as a security issue, though it's hardly worthy of
+concern since there is no reason for non-developers to use this script anyway.
+</para></listitem>
+<listitem><para>Update to newer versions of Bison</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-2-5">
+ <title>Release 7.2.5</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2004-08-16</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 7.2.4.
+ </para>
+
+
+ <sect2>
+ <title>Migration to Version 7.2.5</title>
+
+ <para>
+ A dump/restore is not required for those running 7.2.X.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Prevent possible loss of committed transactions during crash</para>
+<para>
+Due to insufficient interlocking between transaction commit and checkpointing,
+it was possible for transactions committed just before the most recent
+checkpoint to be lost, in whole or in part, following a database crash and
+restart. This is a serious bug that has existed
+since <productname>PostgreSQL</productname> 7.1.
+</para></listitem>
+<listitem><para>Fix corner case for btree search in parallel with first root page split</para></listitem>
+<listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
+<listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
+<listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
+<listitem><para>Repair memory leaks in pg_dump</para></listitem>
+<listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+<sect1 id="release-7-2-4">
+ <title>Release 7.2.4</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2003-01-30</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes for version 7.2.3,
+ including fixes to prevent possible data loss.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.2.4</title>
+
+ <para>
+ A dump/restore is <emphasis>not</emphasis> required for those
+ running version 7.2.*.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Fix some additional cases of VACUUM "No one parent tuple was found" error</para></listitem>
+<listitem><para>Prevent VACUUM from being called inside a function (Bruce)</para></listitem>
+<listitem><para>Ensure pg_clog updates are sync'd to disk before marking checkpoint complete</para></listitem>
+<listitem><para>Avoid integer overflow during large hash joins</para></listitem>
+<listitem><para>Make GROUP commands work when pg_group.grolist is large enough to be toasted</para></listitem>
+<listitem><para>Fix errors in datetime tables; some timezone names weren't being recognized</para></listitem>
+<listitem><para>Fix integer overflows in circle_poly(), path_encode(), path_add() (Neil)</para></listitem>
+<listitem><para>Repair long-standing logic errors in lseg_eq(), lseg_ne(), lseg_center()</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-2-3">
+ <title>Release 7.2.3</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2002-10-01</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes for version 7.2.2,
+ including fixes to prevent possible data loss.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.2.3</title>
+
+ <para>
+ A dump/restore is <emphasis>not</emphasis> required for those
+ running version 7.2.*.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Prevent possible compressed transaction log loss (Tom)</para></listitem>
+<listitem><para>Prevent non-superuser from increasing most recent vacuum info (Tom)</para></listitem>
+<listitem><para>Handle pre-1970 date values in newer versions of glibc (Tom)</para></listitem>
+<listitem><para>Fix possible hang during server shutdown</para></listitem>
+<listitem><para>Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima)</para></listitem>
+<listitem><para>Fix <application>pg_dump</> to properly dump FULL JOIN USING (Tom)</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-2-2">
+ <title>Release 7.2.2</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2002-08-23</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes for version 7.2.1.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.2.2</title>
+
+ <para>
+ A dump/restore is <emphasis>not</emphasis> required for those
+ running version 7.2.*.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
+<listitem><para>Fix for compressed transaction log id wraparound (Tom)</para></listitem>
+<listitem><para>Fix PQescapeBytea/PQunescapeBytea so that they handle bytes > 0x7f (Tatsuo)</para></listitem>
+<listitem><para>Fix for psql and <application>pg_dump</> crashing when invoked with non-existent long options (Tatsuo)</para></listitem>
+<listitem><para>Fix crash when invoking geometric operators (Tom)</para></listitem>
+<listitem><para>Allow OPEN cursor(args) (Tom)</para></listitem>
+<listitem><para>Fix for rtree_gist index build (Teodor)</para></listitem>
+<listitem><para>Fix for dumping user-defined aggregates (Tom)</para></listitem>
+<listitem><para>contrib/intarray fixes (Oleg)</para></listitem>
+<listitem><para>Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom)</para></listitem>
+<listitem><para>Fix to pg_convert (Tatsuo)</para></listitem>
+<listitem><para>Fix for crash with long DATA strings (Thomas, Neil)</para></listitem>
+<listitem><para>Fix for repeat(), lpad(), rpad() and long strings (Neil)</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-2-1">
+ <title>Release 7.2.1</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2002-03-21</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes for version 7.2.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 7.2.1</title>
+
+ <para>
+ A dump/restore is <emphasis>not</emphasis> required for those
+ running version 7.2.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Ensure that sequence counters do not go backwards after a crash (Tom)</para></listitem>
+<listitem><para>Fix pgaccess kanji-conversion key binding (Tatsuo)</para></listitem>
+<listitem><para>Optimizer improvements (Tom)</para></listitem>
+<listitem><para>Cash I/O improvements (Tom)</para></listitem>
+<listitem><para>New Russian FAQ</para></listitem>
+<listitem><para>Compile fix for missing AuthBlockSig (Heiko)</para></listitem>
+<listitem><para>Additional time zones and time zone fixes (Thomas)</para></listitem>
+<listitem><para>Allow psql \connect to handle mixed case database and user names (Tom)</para></listitem>
+<listitem><para>Return proper OID on command completion even with ON INSERT rules (Tom)</para></listitem>
+<listitem><para>Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo)</para></listitem>
+<listitem><para>Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo)</para></listitem>
+<listitem><para>Improve handling of multiple UNIONs with different lengths (Tom)</para></listitem>
+<listitem><para>contrib/btree_gist improvements (Teodor Sigaev)</para></listitem>
+<listitem><para>contrib/tsearch dictionary improvements, see README.tsearch for an additional installation step (Thomas T. Thai, Teodor Sigaev)</para></listitem>
+<listitem><para>Fix for array subscripts handling (Tom)</para></listitem>
+<listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-2">
+ <title>Release 7.2</title>
+
+ <note>
+ <title>Release date</title>
+ <simpara>2002-02-04</simpara>
+ </note>
+
+ <sect2>
+ <title>Overview</title>
+
+ <para>
+ This release improves <productname>PostgreSQL</> for use in
+ high-volume applications.
+ </para>
+
+ <para>
+ Major changes in this release:
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term>VACUUM</term>
+ <listitem>
+ <para>
+ Vacuuming no longer locks tables, thus allowing normal user
+ access during the vacuum. A new <command>VACUUM FULL</>
+ command does old-style vacuum by locking the table and
+ shrinking the on-disk copy of the table.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Transactions</term>
+ <listitem>
+ <para>
+ There is no longer a problem with installations that exceed
+ four billion transactions.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>OIDs</term>
+ <listitem>
+ <para>
+ OIDs are now optional. Users can now create tables without
+ OIDs for cases where OID usage is excessive.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Optimizer</term>
+ <listitem>
+ <para>
+ The system now computes histogram column statistics during
+ <command>ANALYZE</>, allowing much better optimizer choices.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Security</term>
+ <listitem>
+ <para>
+ A new MD5 encryption option allows more secure storage and
+ transfer of passwords. A new Unix-domain socket
+ authentication option is available on Linux and BSD systems.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Statistics</term>
+ <listitem>
+ <para>
+ &nbs