diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2009-05-02 20:18:21 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2009-05-02 20:18:21 +0000 |
commit | f16cd6ec38851feeb4982b2588388ff975e28fcf (patch) | |
tree | 816c1da71cf21f1d1e28381f2169ccd81941a2ac | |
parent | 2a0f7d1b31b5b5d84488f18424406f980d43e535 (diff) | |
download | postgresql-f16cd6ec38851feeb4982b2588388ff975e28fcf.tar.gz postgresql-f16cd6ec38851feeb4982b2588388ff975e28fcf.zip |
Split the release notes into a separate file for each (active) major branch,
as per my recent proposal. release.sgml itself is now just a stub that should
change rarely; ideally, only once per major release to add a new include line.
Most editing work will occur in the release-N.N.sgml files. To update a back
branch for a minor release, just copy the appropriate release-N.N.sgml
file(s) into the back branch.
This commit doesn't change the end-product documentation at all, only the
source layout. However, it makes it easy to start omitting ancient information
from newer branches' documentation, should we ever decide to do that.
-rw-r--r-- | doc/src/sgml/Makefile | 7 | ||||
-rw-r--r-- | doc/src/sgml/filelist.sgml | 5 | ||||
-rw-r--r-- | doc/src/sgml/generate_history.pl | 58 | ||||
-rw-r--r-- | doc/src/sgml/release-7.4.sgml | 3975 | ||||
-rw-r--r-- | doc/src/sgml/release-old.sgml | 6657 | ||||
-rw-r--r-- | doc/src/sgml/release.sgml | 10644 |
6 files changed, 10711 insertions, 10635 deletions
diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile index c71cd5067bd..02e69fbfede 100644 --- a/doc/src/sgml/Makefile +++ b/doc/src/sgml/Makefile @@ -2,7 +2,7 @@ # # PostgreSQL documentation makefile # -# $Header: /cvsroot/pgsql/doc/src/sgml/Makefile,v 1.59.2.3 2004/03/09 20:10:19 momjian Exp $ +# $Header: /cvsroot/pgsql/doc/src/sgml/Makefile,v 1.59.2.4 2009/05/02 20:18:21 tgl Exp $ # #---------------------------------------------------------------------------- @@ -173,9 +173,8 @@ INSTALL HISTORY regress_README: % : %.html INSTALL.html: standalone-install.sgml installation.sgml version.sgml $(JADE.text) -V nochunks standalone-install.sgml installation.sgml >$@ -HISTORY.html: release.sgml - ( echo '<!doctype appendix PUBLIC "-//OASIS//DTD DocBook V3.1//EN">'; \ - cat $< ) >tempfile_HISTORY.sgml +HISTORY.html: generate_history.pl $(wildcard $(srcdir)/release*.sgml) + $(PERL) $< "$(srcdir)" release.sgml >tempfile_HISTORY.sgml $(JADE.text) -V nochunks tempfile_HISTORY.sgml >$@ rm tempfile_HISTORY.sgml diff --git a/doc/src/sgml/filelist.sgml b/doc/src/sgml/filelist.sgml index 23b51ca6a5a..48e6f2653a1 100644 --- a/doc/src/sgml/filelist.sgml +++ b/doc/src/sgml/filelist.sgml @@ -1,4 +1,4 @@ -<!-- $Header: /cvsroot/pgsql/doc/src/sgml/filelist.sgml,v 1.33 2003/10/23 13:58:43 tgl Exp $ --> +<!-- $Header: /cvsroot/pgsql/doc/src/sgml/filelist.sgml,v 1.33.2.1 2009/05/02 20:18:21 tgl Exp $ --> <!entity history SYSTEM "history.sgml"> <!entity info SYSTEM "info.sgml"> @@ -94,7 +94,10 @@ <!entity errcodes SYSTEM "errcodes.sgml"> <!entity features SYSTEM "features.sgml"> <!entity keywords SYSTEM "keywords.sgml"> + <!entity release SYSTEM "release.sgml"> +<!entity release-7.4 SYSTEM "release-7.4.sgml"> +<!entity release-old SYSTEM "release-old.sgml"> <!entity features-supported SYSTEM "features-supported.sgml"> <!entity features-unsupported SYSTEM "features-unsupported.sgml"> diff --git a/doc/src/sgml/generate_history.pl b/doc/src/sgml/generate_history.pl new file mode 100644 index 00000000000..6fa7c791d12 --- /dev/null +++ b/doc/src/sgml/generate_history.pl @@ -0,0 +1,58 @@ +#! /usr/bin/perl -w + +# generate_history.pl -- flatten release notes for use as HISTORY file +# +# Usage: generate_history.pl srcdir release.sgml >output.sgml +# +# The main point of this script is to strip out <link> references, which +# generally point into the rest of the documentation and so can't be used +# in a standalone build of the release notes. To make sure this is done +# everywhere, we have to fold in the sub-files of the release notes. +# +# $PostgreSQL: pgsql/doc/src/sgml/generate_history.pl,v 1.1.10.1 2009/05/02 20:18:21 tgl Exp $ + +use strict; + +my($srcdir) = shift; +defined($srcdir) || die "$0: missing required argument: srcdir\n"; +my($infile) = shift; +defined($infile) || die "$0: missing required argument: inputfile\n"; + +# Emit DOCTYPE header so that the output is a self-contained SGML document +print "<!DOCTYPE appendix PUBLIC \"-//OASIS//DTD DocBook V3.1//EN\">\n"; + +process_file($infile); + +exit 0; + +sub process_file { + my($filename) = @_; + + local *FILE; # need a local filehandle so we can recurse + + my($f) = $srcdir . '/' . $filename; + open(FILE, $f) || die "could not read $f: $!\n"; + + while (<FILE>) { + # Recursively expand sub-files of the release notes + if (m/^&(release-.*);$/) { + process_file($1 . ".sgml"); + next; + } + + # Remove <link ...> tags, which might span multiple lines + while (m/<link/) { + if (s/<link\s+linkend[^>]*>//) { + next; + } + # incomplete tag, so slurp another line + $_ .= <FILE>; + } + + # Remove </link> too + s|</link>||g; + + print; + } + close(FILE); +} diff --git a/doc/src/sgml/release-7.4.sgml b/doc/src/sgml/release-7.4.sgml new file mode 100644 index 00000000000..73037b4732e --- /dev/null +++ b/doc/src/sgml/release-7.4.sgml @@ -0,0 +1,3975 @@ +<!-- $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> diff --git a/doc/src/sgml/release-old.sgml b/doc/src/sgml/release-old.sgml new file mode 100644 index 00000000000..ee073847517 --- /dev/null +++ b/doc/src/sgml/release-old.sgml @@ -0,0 +1,6657 @@ +<!-- $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> + Administrators can use the new table access statistics module + to get fine-grained information about table and index usage. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Internationalization</term> + <listitem> + <para> + Program and library messages can now be displayed in several + languages. + </para> + </listitem> + </varlistentry> + + </variablelist> + </sect2> + + <sect2> + <title>Migration to Version 7.2</title> + + <para> + A dump/restore using <command>pg_dump</command> is required for + those wishing to migrate data from any previous release. + </para> + + <para> + Observe the following incompatibilities: + </para> + + <itemizedlist> + <listitem> + <para> + The semantics of the <command>VACUUM</command> command have + changed in this release. You might wish to update your + maintenance procedures accordingly. + </para> + </listitem> + + <listitem> + <para> + In this release, comparisons using <literal>= NULL</literal> + will always return false (or NULL, more precisely). Previous + releases automatically transformed this syntax to <literal>IS + NULL</literal>. The old behavior can be re-enabled using a + <filename>postgresql.conf</filename> parameter. + </para> + </listitem> + + <listitem> + <para> + The <filename>pg_hba.conf</> and <filename>pg_ident.conf</> + configuration is now only reloaded after receiving a + <systemitem>SIGHUP</> signal, not with each connection. + </para> + </listitem> + + <listitem> + <para> + The function <filename>octet_length()</> now returns the uncompressed data length. + </para> + </listitem> + + <listitem> + <para> + The date/time value <literal>'current'</literal> is no longer + available. You will need to rewrite your applications. + </para> + </listitem> + + <listitem> + <para> + The <literal>timestamp()</literal>, <literal>time()</literal>, + and <literal>interval()</literal> functions are no longer + available. Instead of <literal>timestamp()</literal>, use + <literal>timestamp 'string'</literal> or <literal>CAST</literal>. + </para> + </listitem> + + </itemizedlist> + + <para> + The <literal>SELECT ... LIMIT #,#</literal> syntax will be removed + in the next release. You should change your queries to use + separate LIMIT and OFFSET clauses, e.g. <literal>LIMIT 10 OFFSET + 20</literal>. + </para> + </sect2> + + <sect2> + <title>Changes</title> + + <sect3> + <title>Server Operation</title> +<itemizedlist> +<listitem><para>Create temporary files in a separate directory (Bruce)</para></listitem> +<listitem><para>Delete orphaned temporary files on postmaster startup (Bruce)</para></listitem> +<listitem><para>Added unique indexes to some system tables (Tom)</para></listitem> +<listitem><para>System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem> +<listitem><para>Renamed pg_log to pg_clog (Tom)</para></listitem> +<listitem><para>Enable SIGTERM, SIGQUIT to kill backends (Jan)</para></listitem> +<listitem><para>Removed compile-time limit on number of backends (Tom)</para></listitem> +<listitem><para>Better cleanup for semaphore resource failure (Tatsuo, Tom)</para></listitem> +<listitem><para>Allow safe transaction ID wraparound (Tom)</para></listitem> +<listitem><para>Removed OIDs from some system tables (Tom)</para></listitem> +<listitem><para>Removed "triggered data change violation" error check (Tom)</para></listitem> +<listitem><para>SPI portal creation of prepared/saved plans (Jan)</para></listitem> +<listitem><para>Allow SPI column functions to work for system columns (Tom)</para></listitem> +<listitem><para>Long value compression improvement (Tom)</para></listitem> +<listitem><para>Statistics collector for table, index access (Jan)</para></listitem> +<listitem><para>Truncate extra-long sequence names to a reasonable value (Tom)</para></listitem> +<listitem><para>Measure transaction times in milliseconds (Thomas)</para></listitem> +<listitem><para>Fix TID sequential scans (Hiroshi)</para></listitem> +<listitem><para>Superuser ID now fixed at 1 (Peter E)</para></listitem> +<listitem><para>New pg_ctl "reload" option (Tom)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Performance</title> +<itemizedlist> +<listitem><para>Optimizer improvements (Tom)</para></listitem> +<listitem><para>New histogram column statistics for optimizer (Tom)</para></listitem> +<listitem><para>Reuse write-ahead log files rather than discarding them (Tom)</para></listitem> +<listitem><para>Cache improvements (Tom)</para></listitem> +<listitem><para>IS NULL, IS NOT NULL optimizer improvement (Tom)</para></listitem> +<listitem><para>Improve lock manager to reduce lock contention (Tom)</para></listitem> +<listitem><para>Keep relcache entries for index access support functions (Tom)</para></listitem> +<listitem><para>Allow better selectivity with NaN and infinities in NUMERIC (Tom)</para></listitem> +<listitem><para>R-tree performance improvements (Kenneth Been)</para></listitem> +<listitem><para>B-tree splits more efficient (Tom)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Privileges</title> +<itemizedlist> +<listitem><para>Change UPDATE, DELETE privileges to be distinct (Peter E)</para></listitem> +<listitem><para>New REFERENCES, TRIGGER privileges (Peter E)</para></listitem> +<listitem><para>Allow GRANT/REVOKE to/from more than one user at a time (Peter E)</para></listitem> +<listitem><para>New has_table_privilege() function (Joe Conway)</para></listitem> +<listitem><para>Allow non-superuser to vacuum database (Tom)</para></listitem> +<listitem><para>New SET SESSION AUTHORIZATION command (Peter E)</para></listitem> +<listitem><para>Fix bug in privilege modifications on newly created tables (Tom)</para></listitem> +<listitem><para>Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Client Authentication</title> +<itemizedlist> +<listitem><para>Fork postmaster before doing authentication to prevent hangs (Peter E)</para></listitem> +<listitem><para>Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)</para></listitem> +<listitem><para>Add a password authentication method that uses MD5 encryption (Bruce)</para></listitem> +<listitem><para>Allow encryption of stored passwords using MD5 (Bruce)</para></listitem> +<listitem><para>PAM authentication (Dominic J. Eidson)</para></listitem> +<listitem><para>Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Server Configuration</title> +<itemizedlist> +<listitem><para>Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)</para></listitem> +<listitem><para>New parameter to set default transaction isolation level (Peter E)</para></listitem> +<listitem><para>New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)</para></listitem> +<listitem><para>New parameter to control memory usage by VACUUM (Tom)</para></listitem> +<listitem><para>New parameter to set client authentication timeout (Tom)</para></listitem> +<listitem><para>New parameter to set maximum number of open files (Tom)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Queries</title> +<itemizedlist> +<listitem><para>Statements added by INSERT rules now execute after the INSERT (Jan)</para></listitem> +<listitem><para>Prevent unadorned relation names in target list (Bruce)</para></listitem> +<listitem><para>NULLs now sort after all normal values in ORDER BY (Tom)</para></listitem> +<listitem><para>New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)</para></listitem> +<listitem><para>New SHARE UPDATE EXCLUSIVE lock mode (Tom)</para></listitem> +<listitem><para>New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)</para></listitem> +<listitem><para>Fix problem with LIMIT and subqueries (Tom)</para></listitem> +<listitem><para>Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)</para></listitem> +<listitem><para>Fix nested EXCEPT/INTERSECT (Tom)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Schema Manipulation</title> +<itemizedlist> +<listitem><para>Fix SERIAL in temporary tables (Bruce)</para></listitem> +<listitem><para>Allow temporary sequences (Bruce)</para></listitem> +<listitem><para>Sequences now use int8 internally (Tom)</para></listitem> +<listitem><para>New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)</para></listitem> +<listitem><para>Make OIDs optional using WITHOUT OIDS (Tom)</para></listitem> +<listitem><para>Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)</para></listitem> +<listitem><para>Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)</para></listitem> +<listitem><para>New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)</para></listitem> +<listitem><para>Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)</para></listitem> +<listitem><para>Allow column renaming in views</para></listitem> +<listitem><para>Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)</para></listitem> +<listitem><para>Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)</para></listitem> +<listitem><para>ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)</para></listitem> +<listitem><para>DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)</para></listitem> +<listitem><para>Add automatic return type data casting for SQL functions (Tom)</para></listitem> +<listitem><para>Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem> +<listitem><para>Enable partial indexes (Martijn van Oosterhout)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Utility Commands</title> +<itemizedlist> +<listitem><para>Add RESET ALL, SHOW ALL (Marko Kreen)</para></listitem> +<listitem><para>CREATE/ALTER USER/GROUP now allow options in any order (Vince)</para></listitem> +<listitem><para>Add LOCK A, B, C functionality (Neil Padgett)</para></listitem> +<listitem><para>New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)</para></listitem> +<listitem><para>New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)</para></listitem> +<listitem><para>Disable COPY TO/FROM on views (Bruce)</para></listitem> +<listitem><para>COPY DELIMITERS string must be exactly one character (Tom)</para></listitem> +<listitem><para>VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)</para></listitem> +<listitem><para>Fix privilege checks for CREATE INDEX (Tom)</para></listitem> +<listitem><para>Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Data Types and Functions</title> +<itemizedlist> +<listitem><para>SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)</para></listitem> +<listitem><para>Add convert(), convert2() (Tatsuo)</para></listitem> +<listitem><para>New function bit_length() (Peter E)</para></listitem> +<listitem><para>Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)</para></listitem> +<listitem><para>CHAR(), VARCHAR() now reject strings that are too long (Peter E)</para></listitem> +<listitem><para>BIT VARYING now rejects bit strings that are too long (Peter E)</para></listitem> +<listitem><para>BIT now rejects bit strings that do not match declared size (Peter E)</para></listitem> +<listitem><para>INET, CIDR text conversion functions (Alex Pilosov)</para></listitem> +<listitem><para>INET, CIDR operators << and <<= indexable (Alex Pilosov)</para></listitem> +<listitem><para>Bytea \### now requires valid three digit octal number</para></listitem> +<listitem><para>Bytea comparison improvements, now supports =, <>, >, >=, <, and <=</para></listitem> +<listitem><para>Bytea now supports B-tree indexes</para></listitem> +<listitem><para>Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE</para></listitem> +<listitem><para>Bytea now supports concatenation</para></listitem> +<listitem><para>New bytea functions: position, substring, trim, btrim, and length</para></listitem> +<listitem><para>New encode() function mode, "escaped", converts minimally escaped bytea to/from text</para></listitem> +<listitem><para>Add pg_database_encoding_max_length() (Tatsuo)</para></listitem> +<listitem><para>Add pg_client_encoding() function (Tatsuo)</para></listitem> +<listitem><para>now() returns time with millisecond precision (Thomas)</para></listitem> +<listitem><para>New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)</para></listitem> +<listitem><para>Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)</para></listitem> +<listitem><para>New xid/int comparison functions (Hiroshi)</para></listitem> +<listitem><para>Add precision to TIME, TIMESTAMP, and INTERVAL data types (Thomas)</para></listitem> +<listitem><para>Modify type coercion logic to attempt binary-compatible functions first (Tom)</para></listitem> +<listitem><para>New encode() function installed by default (Marko Kreen)</para></listitem> +<listitem><para>Improved to_*() conversion functions (Karel Zak)</para></listitem> +<listitem><para>Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)</para></listitem> +<listitem><para>New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)</para></listitem> +<listitem><para>Correct description of translate() function (Bruce)</para></listitem> +<listitem><para>Add INTERVAL argument for SET TIME ZONE (Thomas)</para></listitem> +<listitem><para>Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)</para></listitem> +<listitem><para>Optimize length functions when using single-byte encodings (Tatsuo)</para></listitem> +<listitem><para>Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)</para></listitem> +<listitem><para>octet_length(text) now returns non-compressed length (Tatsuo, Bruce)</para></listitem> +<listitem><para>Handle "July" full name in date/time literals (Greg Sabino Mullane)</para></listitem> +<listitem><para>Some datatype() function calls now evaluated differently</para></listitem> +<listitem><para>Add support for Julian and ISO time specifications (Thomas)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Internationalization</title> +<itemizedlist> +<listitem><para>National language support in psql, <application>pg_dump</>, libpq, and server (Peter E)</para></listitem> +<listitem><para>Message translations in Chinese (simplified, traditional), Czech, French, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, Karel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)</para></listitem> +<listitem><para>Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)</para></listitem> +<listitem><para>Add LATIN5,6,7,8,9,10 support (Tatsuo)</para></listitem> +<listitem><para>Add ISO 8859-5,6,7,8 support (Tatsuo)</para></listitem> +<listitem><para>Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)</para></listitem> +<listitem><para>Make mic2ascii() non-ASCII aware (Tatsuo)</para></listitem> +<listitem><para>Reject invalid multibyte character sequences (Tatsuo)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title><application>PL/pgSQL</></title> +<itemizedlist> +<listitem><para>Now uses portals for SELECT loops, allowing huge result sets (Jan)</para></listitem> +<listitem><para>CURSOR and REFCURSOR support (Jan)</para></listitem> +<listitem><para>Can now return open cursors (Jan)</para></listitem> +<listitem><para>Add ELSEIF (Klaus Reger)</para></listitem> +<listitem><para>Improve PL/pgSQL error reporting, including location of error (Tom)</para></listitem> +<listitem><para>Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)</para></listitem> +<listitem><para>Fix for SELECT ... FOR UPDATE (Tom)</para></listitem> +<listitem><para>Fix for PERFORM returning multiple rows (Tom)</para></listitem> +<listitem><para>Make PL/pgSQL use the server's type coercion code (Tom)</para></listitem> +<listitem><para>Memory leak fix (Jan, Tom)</para></listitem> +<listitem><para>Make trailing semicolon optional (Tom)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>PL/Perl</title> +<itemizedlist> +<listitem><para>New untrusted PL/Perl (Alex Pilosov)</para></listitem> +<listitem><para>PL/Perl is now built on some platforms even if libperl is not shared (Peter E)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>PL/Tcl</title> +<itemizedlist> +<listitem><para>Now reports errorInfo (Vsevolod Lobko)</para></listitem> +<listitem><para>Add spi_lastoid function (bob@redivi.com)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>PL/Python</title> +<itemizedlist> +<listitem><para>...is new (Andrew Bosma)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title><application>psql</></title> +<itemizedlist> +<listitem><para>\d displays indexes in unique, primary groupings (Christopher Kings-Lynne)</para></listitem> +<listitem><para>Allow trailing semicolons in backslash commands (Greg Sabino Mullane)</para></listitem> +<listitem><para>Read password from /dev/tty if possible</para></listitem> +<listitem><para>Force new password prompt when changing user and database (Tatsuo, Tom)</para></listitem> +<listitem><para>Format the correct number of columns for Unicode (Patrice)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title><application>libpq</></title> +<itemizedlist> +<listitem><para>New function PQescapeString() to escape quotes in command strings (Florian Weimer)</para></listitem> +<listitem><para>New function PQescapeBytea() escapes binary strings for use as SQL string literals</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>JDBC</title> +<itemizedlist> +<listitem><para>Return OID of INSERT (Ken K)</para></listitem> +<listitem><para>Handle more data types (Ken K)</para></listitem> +<listitem><para>Handle single quotes and newlines in strings (Ken K)</para></listitem> +<listitem><para>Handle NULL variables (Ken K)</para></listitem> +<listitem><para>Fix for time zone handling (Barry Lind)</para></listitem> +<listitem><para>Improved Druid support</para></listitem> +<listitem><para>Allow eight-bit characters with non-multibyte server (Barry Lind)</para></listitem> +<listitem><para>Support BIT, BINARY types (Ned Wolpert)</para></listitem> +<listitem><para>Reduce memory usage (Michael Stephens, Dave Cramer)</para></listitem> +<listitem><para>Update DatabaseMetaData (Peter E)</para></listitem> +<listitem><para>Add DatabaseMetaData.getCatalogs() (Peter E)</para></listitem> +<listitem><para>Encoding fixes (Anders Bengtsson)</para></listitem> +<listitem><para>Get/setCatalog methods (Jason Davies)</para></listitem> +<listitem><para>DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)</para></listitem> +<listitem><para>DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)</para></listitem> +<listitem><para>Some JDBC1 and JDBC2 merging (Anders Bengtsson)</para></listitem> +<listitem><para>Transaction performance improvements (Barry Lind)</para></listitem> +<listitem><para>Array fixes (Greg Zoller)</para></listitem> +<listitem><para>Serialize addition </para></listitem> +<listitem><para>Fix batch processing (Rene Pijlman)</para></listitem> +<listitem><para>ExecSQL method reorganization (Anders Bengtsson)</para></listitem> +<listitem><para>GetColumn() fixes (Jeroen van Vianen)</para></listitem> +<listitem><para>Fix isWriteable() function (Rene Pijlman)</para></listitem> +<listitem><para>Improved passage of JDBC2 conformance tests (Rene Pijlman)</para></listitem> +<listitem><para>Add bytea type capability (Barry Lind)</para></listitem> +<listitem><para>Add isNullable() (Rene Pijlman)</para></listitem> +<listitem><para>JDBC date/time test suite fixes (Liam Stewart)</para></listitem> +<listitem><para>Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)</para></listitem> +<listitem><para>Fix DatabaseMetaData to show precision properly (Mark Lillywhite)</para></listitem> +<listitem><para>New getImported/getExported keys (Jason Davies)</para></listitem> +<listitem><para>MD5 password encryption support (Jeremy Wohl)</para></listitem> +<listitem><para>Fix to actually use type cache (Ned Wolpert)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>ODBC</title> +<itemizedlist> +<listitem><para>Remove query size limit (Hiroshi)</para></listitem> +<listitem><para>Remove text field size limit (Hiroshi)</para></listitem> +<listitem><para>Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)</para></listitem> +<listitem><para>Allow ODBC procedure calls (Hiroshi)</para></listitem> +<listitem><para>Improve boolean handing (Aidan Mountford)</para></listitem> +<listitem><para>Most configuration options now settable via DSN (Hiroshi)</para></listitem> +<listitem><para>Multibyte, performance fixes (Hiroshi)</para></listitem> +<listitem><para>Allow driver to be used with iODBC or unixODBC (Peter E)</para></listitem> +<listitem><para>MD5 password encryption support (Bruce)</para></listitem> +<listitem><para>Add more compatibility functions to odbc.sql (Peter E)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title><application>ECPG</></title> +<itemizedlist> +<listitem><para>EXECUTE ... INTO implemented (Christof Petig)</para></listitem> +<listitem><para>Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)</para></listitem> +<listitem><para>Fix for GRANT parameters (Lee Kindness)</para></listitem> +<listitem><para>Fix INITIALLY DEFERRED bug</para></listitem> +<listitem><para>Various bug fixes (Michael, Christof Petig)</para></listitem> +<listitem><para>Auto allocation for indicator variable arrays (int *ind_p=NULL)</para></listitem> +<listitem><para>Auto allocation for string arrays (char **foo_pp=NULL)</para></listitem> +<listitem><para>ECPGfree_auto_mem fixed</para></listitem> +<listitem><para>All function names with external linkage are now prefixed by ECPG</para></listitem> +<listitem><para>Fixes for arrays of structures (Michael)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Misc. Interfaces</title> +<itemizedlist> +<listitem><para>Python fix fetchone() (Gerhard Haring)</para></listitem> +<listitem><para>Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)</para></listitem> +<listitem><para>Add Tcl COPY TO/FROM (ljb)</para></listitem> +<listitem><para>Prevent output of default index op class in <application>pg_dump</> (Tom)</para></listitem> +<listitem><para>Fix libpgeasy memory leak (Bruce)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Build and Install</title> +<itemizedlist> +<listitem><para>Configure, dynamic loader, and shared library fixes (Peter E)</para></listitem> +<listitem><para>Fixes in QNX 4 port (Bernd Tegge)</para></listitem> +<listitem><para>Fixes in Cygwin and Windows ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)</para></listitem> +<listitem><para>Fix for Windows socket communication failures (Magnus, Mikhail Terekhov)</para></listitem> +<listitem><para>Hurd compile fix (Oliver Elphick)</para></listitem> +<listitem><para>BeOS fixes (Cyril Velter)</para></listitem> +<listitem><para>Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)</para></listitem> +<listitem><para>AIX fixes (Tatsuo, Andreas)</para></listitem> +<listitem><para>Fix parallel make (Peter E)</para></listitem> +<listitem><para>Install SQL language manual pages into OS-specific directories (Peter E)</para></listitem> +<listitem><para>Rename config.h to pg_config.h (Peter E)</para></listitem> +<listitem><para>Reorganize installation layout of header files (Peter E)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Source Code</title> +<itemizedlist> +<listitem><para>Remove SEP_CHAR (Bruce)</para></listitem> +<listitem><para>New GUC hooks (Tom)</para></listitem> +<listitem><para>Merge GUC and command line handling (Marko Kreen)</para></listitem> +<listitem><para>Remove EXTEND INDEX (Martijn van Oosterhout, Tom)</para></listitem> +<listitem><para>New pgjindent utility to indent java code (Bruce)</para></listitem> +<listitem><para>Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)</para></listitem> +<listitem><para>pgindent fixes (Bruce, Tom)</para></listitem> +<listitem><para>Replace strcasecmp() with strcmp() where appropriate (Peter E)</para></listitem> +<listitem><para>Dynahash portability improvements (Tom)</para></listitem> +<listitem><para>Add 'volatile' usage in spinlock structures</para></listitem> +<listitem><para>Improve signal handling logic (Tom)</para></listitem> +</itemizedlist> + </sect3> + + <sect3> + <title>Contrib</title> +<itemizedlist> +<listitem><para>New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)</para></listitem> +<listitem><para>New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)</para></listitem> +<listitem><para>Add contrib/dblink for remote database access (Joe Conway)</para></listitem> +<listitem><para>contrib/ora2pg Oracle conversion utility (Gilles Darold)</para></listitem> +<listitem><para>contrib/xml XML conversion utility (John Gray)</para></listitem> +<listitem><para>contrib/fulltextindex fixes (Christopher Kings-Lynne)</para></listitem> +<listitem><para>New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)</para></listitem> +<listitem><para>Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)</para></listitem> +<listitem><para>New pg_upgrade utility (Bruce)</para></listitem> +<listitem><para>Add new pg_resetxlog options (Bruce, Tom)</para></listitem> +</itemizedlist> + </sect3> + </sect2> +</sect1> + + + <sect1 id="release-7-1-3"> + <title>Release 7.1.3</title> + + <note> + <title>Release date</title> + <simpara>2001-08-15</simpara> + </note> + + <sect2> + <title>Migration to Version 7.1.3</title> + + <para> + A dump/restore is <emphasis>not</emphasis> required for those running + 7.1.X. + </para> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Remove unused WAL segments of large transactions (Tom) +Multiaction rule fix (Tom) +PL/pgSQL memory allocation fix (Jan) +VACUUM buffer fix (Tom) +Regression test fixes (Tom) +pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom) +Fix subselects with DISTINCT ON or LIMIT (Tom) +BeOS fix +Disable COPY TO/FROM a view (Tom) +Cygwin build (Jason Tishler) + </programlisting> + </para> + </sect2> + </sect1> + + + <sect1 id="release-7-1-2"> + <title>Release 7.1.2</title> + + <note> + <title>Release date</title> + <simpara>2001-05-11</simpara> + </note> + + <para> + This has one fix from 7.1.1. + </para> + + + <sect2> + <title>Migration to Version 7.1.2</title> + + <para> + A dump/restore is <emphasis>not</emphasis> required for those running + 7.1.X. + </para> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Fix PL/pgSQL SELECTs when returning no rows +Fix for psql backslash core dump +Referential integrity privilege fix +Optimizer fixes +pg_dump cleanups + </programlisting> + </para> + </sect2> + </sect1> + + + <sect1 id="release-7-1-1"> + <title>Release 7.1.1</title> + + <note> + <title>Release date</title> + <simpara>2001-05-05</simpara> + </note> + + <para> + This has a variety of fixes from 7.1. + </para> + + + <sect2> + <title>Migration to Version 7.1.1</title> + + <para> + A dump/restore is <emphasis>not</emphasis> required for those running + 7.1. + </para> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Fix for numeric MODULO operator (Tom) +pg_dump fixes (Philip) +pg_dump can dump 7.0 databases (Philip) +readline 4.2 fixes (Peter E) +JOIN fixes (Tom) +AIX, MSWIN, VAX, N32K fixes (Tom) +Multibytes fixes (Tom) +Unicode fixes (Tatsuo) +Optimizer improvements (Tom) +Fix for whole rows in functions (Tom) +Fix for pg_ctl and option strings with spaces (Peter E) +ODBC fixes (Hiroshi) +EXTRACT can now take string argument (Thomas) +Python fixes (Darcy) + </programlisting> + </para> + </sect2> + </sect1> + + + <sect1 id="release-7-1"> + <title>Release 7.1</title> + + <note> + <title>Release date</title> + <simpara>2001-04-13</simpara> + </note> + + <para> + This release focuses on removing limitations that have existed in the + <productname>PostgreSQL</productname> code for many years. + </para> + + <para> + Major changes in this release: + </para> + + <variablelist> + <varlistentry> + <term> + Write-ahead Log (WAL) + </term> + <listitem> + <para> +To maintain database consistency in case of an operating system crash, +previous releases of <productname>PostgreSQL</productname> have forced +all data modifications to disk before each transaction commit. With +WAL, only one log file must be flushed to disk, greatly improving +performance. If you have been using -F in previous releases to +disable disk flushes, you might want to consider discontinuing its use. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + TOAST + </term> + <listitem> + <para> + TOAST - Previous releases had a compiled-in row length limit, +typically 8k - 32k. This limit made storage of long text fields +difficult. With TOAST, long rows of any length can be stored with good +performance. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Outer Joins + </term> + <listitem> + <para> +We now support outer joins. The UNION/NOT IN +workaround for outer joins is no longer required. We use the SQL92 +outer join syntax. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Function Manager + </term> + <listitem> + <para> +The previous C function manager did not +handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha). The new +function manager does. You can continue using your old custom +functions, but you might want to rewrite them in the future to use the new +function manager call interface. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Complex Queries + </term> + <listitem> + <para> +A large number of complex queries that were +unsupported in previous releases now work. Many combinations of views, +aggregates, UNION, LIMIT, cursors, subqueries, and inherited tables +now work properly. Inherited tables are now accessed by default. +Subqueries in FROM are now supported. + </para> + </listitem> + </varlistentry> + + </variablelist> + + <sect2> + <title>Migration to Version 7.1</title> + + <para> + A dump/restore using pg_dump is required for those wishing to migrate + data from any previous release. + </para> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Bug Fixes +--------- +Many multibyte/Unicode/locale fixes (Tatsuo and others) +More reliable ALTER TABLE RENAME (Tom) +Kerberos V fixes (David Wragg) +Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom) +Prompt username/password on standard error (Bruce) +Large objects inv_read/inv_write fixes (Tom) +Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel, + Daniel Baldoni) +Prevent query expressions from leaking memory (Tom) +Allow UPDATE of arrays elements (Tom) +Wake up lock waiters during cancel (Hiroshi) +Fix rare cursor crash when using hash join (Tom) +Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi) +Fix psql crash from \l+ if MULTIBYTE enabled (Peter E) +Fix truncation of rule names during CREATE VIEW (Ross Reedstrom) +Fix PL/perl (Alex Kapranoff) +Disallow LOCK on views (Mark Hollomon) +Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon) +Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon) +Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo) +Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom) +Fix rare failure with TRUNCATE command (Tom) +Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views, + DISTINCT, ORDER BY, SELECT...INTO (Tom) +Fix parser failures during aborted transactions (Tom) +Allow temporary relations to properly clean up indexes (Bruce) +Fix VACUUM problem with moving rows in same page (Tom) +Modify pg_dump to better handle user-defined items in template1 (Philip) +Allow LIMIT in VIEW (Tom) +Require cursor FETCH to honor LIMIT (Tom) +Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan) +Allow ORDER BY, LIMIT in subqueries (Tom) +Allow UNION in CREATE RULE (Tom) +Make ALTER/DROP TABLE rollback-able (Vadim, Tom) +Store initdb collation in pg_control so collation cannot be changed (Tom) +Fix INSERT...SELECT with rules (Tom) +Fix FOR UPDATE inside views and subselects (Tom) +Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom) +Fix lpad() and rpad() to handle length less than input string (Tom) +Fix use of NOTIFY in some rules (Tom) +Overhaul btree code (Tom) +Fix NOT NULL use in Pl/pgSQL variables (Tom) +Overhaul GIST code (Oleg) +Fix CLUSTER to preserve constraints and column default (Tom) +Improved deadlock detection handling (Tom) +Allow multiple SERIAL columns in a table (Tom) +Prevent occasional index corruption (Vadim) + +Enhancements +------------ +Add OUTER JOINs (Tom) +Function manager overhaul (Tom) +Allow ALTER TABLE RENAME on indexes (Tom) +Improve CLUSTER (Tom) +Improve ps status display for more platforms (Peter E, Marc) +Improve CREATE FUNCTION failure message (Ross) +JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber, + Gunnar) +Grand Unified Configuration scheme/GUC. Many options can now be set in + data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E) +Improved handling of file descriptor cache (Tom) +New warning code about auto-created table alias entries (Bruce) +Overhaul initdb process (Tom, Peter E) +Overhaul of inherited tables; inherited tables now accessed by default; + new ONLY key word prevents it (Chris Bitmead, Tom) +ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs, + Michael Fork) +Allow renaming of temp tables (Tom) +Overhaul memory manager contexts (Tom) +pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E) +Overhaul pg_dump (Philip Warner) +Allow pg_hba.conf secondary password file to specify only username (Peter E) +Allow TEMPORARY or TEMP key word when creating temporary tables (Bruce) +New memory leak checker (Karel) +New SET SESSION CHARACTERISTICS (Thomas) +Allow nested block comments (Thomas) +Add WITHOUT TIME ZONE type qualifier (Thomas) +New ALTER TABLE ADD CONSTRAINT (Stephan) +Use NUMERIC accumulators for INTEGER aggregates (Tom) +Overhaul aggregate code (Tom) +New VARIANCE and STDDEV() aggregates +Improve dependency ordering of pg_dump (Philip) +New pg_restore command (Philip) +New pg_dump tar output option (Philip) +New pg_dump of large objects (Philip) +New ESCAPE option to LIKE (Thomas) +New case-insensitive LIKE - ILIKE (Thomas) +Allow functional indexes to use binary-compatible type (Tom) +Allow SQL functions to be used in more contexts (Tom) +New pg_config utility (Peter E) +New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements + (Jan) +New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan) +New quote_identifiers() and quote_literal() functions (Jan) +New ALTER TABLE table OWNER TO user command (Mark Hollomon) +Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom) +Update PyGreSQL to version 3.1 (D'Arcy) +Store tables as files named by OID (Vadim) +New SQL function setval(seq,val,bool) for use in pg_dump (Philip) +Require DROP VIEW to remove views, no DROP TABLE (Mark) +Allow DROP VIEW view1, view2 (Mark) +Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom) +Allow automatic conversion to/from Unicode (Tatsuo, Eiji) +New /contrib/pgcrypto hashing functions (Marko Kreen) +New pg_dumpall --globals-only option (Peter E) +New CHECKPOINT command for WAL which creates new WAL log file (Vadim) +New AT TIME ZONE syntax (Thomas) +Allow location of Unix domain socket to be configurable (David J. MacKenzie) +Allow postmaster to listen on a specific IP address (David J. MacKenzie) +Allow socket path name to be specified in hostname by using leading slash + (David J. MacKenzie) +Allow CREATE DATABASE to specify template database (Tom) +New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas) +New /contrib/rserv replication toolkit (Vadim) +New file format for COPY BINARY (Tom) +New /contrib/oid2name to map numeric files to table names (B Palmer) +New "idle in transaction" ps status message (Marc) +Update to pgaccess 0.98.7 (Constantin Teodorescu) +pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option +Add rudimentary dependency checking to pg_dump (Philip) + +Types +----- +Fix INET/CIDR type ordering and add new functions (Tom) +Make OID behave as an unsigned type (Tom) +Allow BIGINT as synonym for INT8 (Peter E) +New int2 and int8 comparison operators (Tom) +New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E) +CHAR() no longer faster than VARCHAR() because of TOAST (Tom) +New GIST seg/cube examples (Gene Selkov) +Improved round(numeric) handling (Tom) +Fix CIDR output formatting (Tom) +New CIDR abbrev() function (Tom) + +Performance +----------- +Write-Ahead Log (WAL) to provide crash recovery with less performance + overhead (Vadim) +ANALYZE stage of VACUUM no longer exclusively locks table (Bruce) +Reduced file seeks (Denis Perchine) +Improve BTREE code for duplicate keys (Tom) +Store all large objects in a single table (Denis Perchine, Tom) +Improve memory allocation performance (Karel, Tom) + +Source Code +----------- +New function manager call conventions (Tom) +SGI portability fixes (David Kaelbling) +New configure --enable-syslog option (Peter E) +New BSDI README (Bruce) +configure script moved to top level, not /src (Peter E) +Makefile/configuration/compilation overhaul (Peter E) +New configure --with-python option (Peter E) +Solaris cleanups (Peter E) +Overhaul /contrib Makefiles (Karel) +New OpenSSL configuration option (Magnus, Peter E) +AIX fixes (Andreas) +QNX fixes (Maurizio) +New heap_open(), heap_openr() API (Tom) +Remove colon and semi-colon operators (Thomas) +New pg_class.relkind value for views (Mark Hollomon) +Rename ichar() to chr() (Karel) +New documentation for btrim(), ascii(), chr(), repeat() (Karel) +Fixes for NT/Cygwin (Pete Forman) +AIX port fixes (Andreas) +New BeOS port (David Reid, Cyril Velter) +Add proofreader's changes to docs (Addison-Wesley, Bruce) +New Alpha spinlock code (Adriaan Joubert, Compaq) +UnixWare port overhaul (Peter E) +New Darwin/MacOS X port (Peter Bierman, Bruce Hartzler) +New FreeBSD Alpha port (Alfred) +Overhaul shared memory segments (Tom) +Add IBM S/390 support (Neale Ferguson) +Moved macmanuf to /contrib (Larry Rosenman) +Syslog improvements (Larry Rosenman) +New template0 database that contains no user additions (Tom) +New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov) +Allow NetBSD's libedit instead of readline (Peter) +Improved assembly language source code format (Bruce) +New contrib/pg_logger +New --template option to createdb +New contrib/pg_control utility (Oliver) +New FreeBSD tools ipc_check, start-scripts/freebsd + </programlisting> + </para> + </sect2> + </sect1> + + + <sect1 id="release-7-0-3"> + <title>Release 7.0.3</title> + + <note> + <title>Release date</title> + <simpara>2000-11-11</simpara> + </note> + + <para> + This has a variety of fixes from 7.0.2. + </para> + + + <sect2> + <title>Migration to Version 7.0.3</title> + + <para> + A dump/restore is <emphasis>not</emphasis> required for those running + 7.0.*. + </para> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Jdbc fixes (Peter) +Large object fix (Tom) +Fix lean in COPY WITH OIDS leak (Tom) +Fix backwards-index-scan (Tom) +Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi) +Add --enable-syslog to configure (Marc) +Fix abort transaction at backend exit in rare cases (Tom) +Fix for psql \l+ when multibyte enabled (Tatsuo) +Allow PL/pgSQL to accept non ascii identifiers (Tatsuo) +Make vacuum always flush buffers (Tom) +Fix to allow cancel while waiting for a lock (Hiroshi) +Fix for memory allocation problem in user authentication code (Tom) +Remove bogus use of int4out() (Tom) +Fixes for multiple subqueries in COALESCE or BETWEEN (Tom) +Fix for failure of triggers on heap open in certain cases (Jeroen van + Vianen) +Fix for erroneous selectivity of not-equals (Tom) +Fix for erroneous use of strcmp() (Tom) +Fix for bug where storage manager accesses items beyond end of file + (Tom) +Fix to include kernel errno message in all smgr elog messages (Tom) +Fix for '.' not in PATH at build time (SL Baur) +Fix for out-of-file-descriptors error (Tom) +Fix to make pg_dump dump 'iscachable' flag for functions (Tom) +Fix for subselect in targetlist of Append node (Tom) +Fix for mergejoin plans (Tom) +Fix TRUNCATE failure on relations with indexes (Tom) +Avoid database-wide restart on write error (Hiroshi) +Fix nodeMaterial to honor chgParam by recomputing its output (Tom) +Fix VACUUM problem with moving chain of update row versions when source + and destination of a row version lie on the same page (Tom) +Fix user.c CommandCounterIncrement (Tom) +Fix for AM/PM boundary problem in to_char() (Karel Zak) +Fix TIME aggregate handling (Tom) +Fix to_char() to avoid coredump on NULL input (Tom) +Buffer fix (Tom) +Fix for inserting/copying longer multibyte strings into char() data + types (Tatsuo) +Fix for crash of backend, on abort (Tom) + </programlisting> + </para> + </sect2> + </sect1> + + + <sect1 id="release-7-0-2"> + <title>Release 7.0.2</title> + + <note> + <title>Release date</title> + <simpara>2000-06-05</simpara> + </note> + + <para> + This is a repackaging of 7.0.1 with added documentation. + </para> + + + <sect2> + <title>Migration to Version 7.0.2</title> + + <para> + A dump/restore is <emphasis>not</emphasis> required for those running + 7.*. + </para> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Added documentation to tarball. + </programlisting> + </para> + </sect2> + </sect1> + + + <sect1 id="release-7-0-1"> + <title>Release 7.0.1</title> + + <note> + <title>Release date</title> + <simpara>2000-06-01</simpara> + </note> + + <para> + This is a cleanup release for 7.0. + </para> + + <sect2> + <title>Migration to Version 7.0.1</title> + + <para> + A dump/restore is <emphasis>not</emphasis> required for those running + 7.0. + </para> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Fix many CLUSTER failures (Tom) +Allow ALTER TABLE RENAME works on indexes (Tom) +Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce) +New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce) +Fix the off by one errors in ResultSet from 6.5.3, and more. +jdbc ResultSet fixes (Joseph Shraibman) +optimizer tunings (Tom) +Fix create user for pgaccess +Fix for UNLISTEN failure +IRIX fixes (David Kaelbling) +QNX fixes (Andreas Kardos) +Reduce COPY IN lock level (Tom) +Change libpqeasy to use PQconnectdb() style parameters (Bruce) +Fix pg_dump to handle OID indexes (Tom) +Fix small memory leak (Tom) +Solaris fix for createdb/dropdb (Tatsuo) +Fix for non-blocking connections (Alfred Perlstein) +Fix improper recovery after RENAME TABLE failures (Tom) +Copy pg_ident.conf.sample into /lib directory in install (Bruce) +Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya) +Fix too long syslog message (Tatsuo) +Fix problem with quoted indexes that are too long (Tom) +JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu) +ecpg changes (Michael) + </programlisting> + </para> + </sect2> + </sect1> + + <sect1 id="release-7-0"> + <title>Release 7.0</title> + + <note> + <title>Release date</title> + <simpara>2000-05-08</simpara> + </note> + + <para> + This release contains improvements in many areas, demonstrating + the continued growth of <productname>PostgreSQL</productname>. + There are more improvements and fixes in 7.0 than in any previous + release. The developers have confidence that this is the best + release yet; we do our best to put out only solid releases, and + this one is no exception. + </para> + + <para> + Major changes in this release: + </para> + + <variablelist> + <varlistentry> + <term> + Foreign Keys + </term> + <listitem> + <para> + Foreign keys are now implemented, with the exception of PARTIAL MATCH + foreign keys. Many users have been asking for this feature, and we are + pleased to offer it. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Optimizer Overhaul + </term> + <listitem> + <para> + Continuing on work started a year ago, the optimizer has been + improved, allowing better query plan selection and faster performance + with less memory usage. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Updated <application>psql</application> + </term> + <listitem> + <para> + <application>psql</application>, our interactive terminal monitor, has been + updated with a variety of new features. See the <application>psql</application> manual page for details. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Join Syntax + </term> + <listitem> + <para> + SQL92 join syntax is now supported, though only as + <literal>INNER JOIN</> for this release. <literal>JOIN</>, + <literal>NATURAL JOIN</>, <literal>JOIN</>/<literal>USING</>, + and <literal>JOIN</>/<literal>ON</> are available, as are + column correlation names. + </para> + </listitem> + + </varlistentry> + </variablelist> + + <sect2> + <title>Migration to Version 7.0</title> + + <para> + A dump/restore using <application>pg_dump</application> + is required for those wishing to migrate data from any + previous release of <productname>PostgreSQL</productname>. + For those upgrading from 6.5.*, you can instead use + <application>pg_upgrade</application> to upgrade to this + release; however, a full dump/reload installation is always the + most robust method for upgrades. + </para> + + <para> + Interface and compatibility issues to consider for the new + release include: + </para> + + <itemizedlist> + <listitem> + <para> + The date/time types <type>datetime</type> and + <type>timespan</type> have been superseded by the + SQL92-defined types <type>timestamp</type> and + <type>interval</type>. Although there has been some effort to + ease the transition by allowing + <productname>PostgreSQL</productname> to recognize + the deprecated type names and translate them to the new type + names, this mechanism cannot be completely transparent to + your existing application. + </para> + </listitem> + + <listitem> + <para> + The optimizer has been substantially improved in the area of + query cost estimation. In some cases, this will result in + decreased query times as the optimizer makes a better choice + for the preferred plan. However, in a small number of cases, + usually involving pathological distributions of data, your + query times might go up. If you are dealing with large amounts + of data, you might want to check your queries to verify + performance. + </para> + </listitem> + + <listitem> + <para> + The <acronym>JDBC</acronym> and <acronym>ODBC</acronym> + interfaces have been upgraded and extended. + </para> + </listitem> + + <listitem> + <para> + The string function <function>CHAR_LENGTH</function> is now a + native function. Previous versions translated this into a call + to <function>LENGTH</function>, which could result in + ambiguity with other types implementing + <function>LENGTH</function> such as the geometric types. + </para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Bug Fixes +--------- +Prevent function calls exceeding maximum number of arguments (Tom) +Improve CASE construct (Tom) +Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom) +Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom) +Fix GROUP BY scan bug (Tom) +Improvements in SQL grammar processing (Tom) +Fix for views involved in INSERT ... SELECT ... (Tom) +Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom) +Fix for subselects in INSERT ... SELECT (Tom) +Prevent INSERT ... SELECT ... ORDER BY (Tom) +Fixes for relations greater than 2GB, including vacuum +Improve propagating system table changes to other backends (Tom) +Improve propagating user table changes to other backends (Tom) +Fix handling of temp tables in complex situations (Bruce, Tom) +Allow table locking at table open, improving concurrent reliability (Tom) +Properly quote sequence names in pg_dump (Ross J. Reedstrom) +Prevent DROP DATABASE while others accessing +Prevent any rows from being returned by GROUP BY if no rows processed (Tom) +Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom) +Fix pg_upgrade so it works for MVCC (Tom) +Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom) +Fix for "f1 datetime DEFAULT 'now'" (Tom) +Fix problems with CURRENT_DATE used in DEFAULT (Tom) +Allow comment-only lines, and ;;; lines too. (Tom) +Improve recovery after failed disk writes, disk full (Hiroshi) +Fix cases where table is mentioned in FROM but not joined (Tom) +Allow HAVING clause without aggregate functions (Tom) +Fix for "--" comment and no trailing newline, as seen in perl interface +Improve pg_dump failure error reports (Bruce) +Allow sorts and hashes to exceed 2GB file sizes (Tom) +Fix for pg_dump dumping of inherited rules (Tom) +Fix for NULL handling comparisons (Tom) +Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi) +Fix for dbname with dash +Prevent DROP INDEX from interfering with other backends (Tom) +Fix file descriptor leak in verify_password() +Fix for "Unable to identify an operator =$" problem +Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann) +Fix for recursive exit call (Massimo) +Fix for extra-long timezones (Jeroen van Vianen) +Make pg_dump preserve primary key information (Peter E) +Prevent databases with single quotes (Peter E) +Prevent DROP DATABASE inside transaction (Peter E) +ecpg memory leak fixes (Stephen Birch) +Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom) +Y2K timestamp fix (Massimo) +Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom) +Fix for views with tables/columns containing spaces (Tom) +Prevent privileges on indexes (Peter E) +Fix for spinlock stuck problem when error is generated (Hiroshi) +Fix ipcclean on Linux +Fix handling of NULL constraint conditions (Tom) +Fix memory leak in odbc driver (Nick Gorham) +Fix for privilege check on UNION tables (Tom) +Fix to allow SELECT 'a' LIKE 'a' (Tom) +Fix for SELECT 1 + NULL (Tom) +Fixes to CHAR +Fix log() on numeric type (Tom) +Deprecate ':' and ';' operators +Allow vacuum of temporary tables +Disallow inherited columns with the same name as new columns +Recover or force failure when disk space is exhausted (Hiroshi) +Fix INSERT INTO ... SELECT with AS columns matching result columns +Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom) +Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom) +Fix UNION with LIMIT +Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2 +Fix CREATE TABLE test(col char(2) DEFAULT user) +Fix mismatched types in CREATE TABLE ... DEFAULT +Fix SELECT * FROM pg_class where oid in (0,-1) +Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12 +Prevent user who can create databases can modifying pg_database table (Peter E) +Fix btree to give a useful elog when key > 1/2 (page - overhead) (Tom) +Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom) + +Enhancements +------------ +New CLI interface include file sqlcli.h, based on SQL3/SQL98 +Remove all limits on query length, row length limit still exists (Tom) +Update jdbc protocol to 2.0 (Jens Glaser <email>jens@jens.de</email>) +Add TRUNCATE command to quickly truncate relation (Mike Mascari) +Fix to give super user and createdb user proper update catalog rights (Peter E) +Allow ecpg bool variables to have NULL values (Christof) +Issue ecpg error if NULL value for variable with no NULL indicator (Christof) +Allow ^C to cancel COPY command (Massimo) +Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo) +Function name overloading for dynamically-loaded C functions (Frankpitt) +Add CmdTuples() to libpq++(Vince) +New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan) +Allow CREATE FUNCTION/WITH clause to be used for all language types +configure --enable-debug adds -g (Peter E) +configure --disable-debug removes -g (Peter E) +Allow more complex default expressions (Tom) +First real FOREIGN KEY constraint trigger functionality (Jan) +Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan) +Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus) +Allow WHERE restriction on ctid (physical heap location) (Hiroshi) +Move pginterface from contrib to interface directory, rename to pgeasy (Bruce) +Change pgeasy connectdb() parameter ordering (Bruce) +Require SELECT DISTINCT target list to have all ORDER BY columns (Tom) +Add Oracle's COMMENT ON command (Mike Mascari <email>mascarim@yahoo.com</email>) +libpq's PQsetNoticeProcessor function now returns previous hook(Peter E) +Prevent PQsetNoticeProcessor from being set to NULL (Peter E) +Make USING in COPY optional (Bruce) +Allow subselects in the target list (Tom) +Allow subselects on the left side of comparison operators (Tom) +New parallel regression test (Jan) +Change backend-side COPY to write files with permissions 644 not 666 (Tom) +Force permissions on PGDATA directory to be secure, even if it exists (Tom) +Added psql LASTOID variable to return last inserted oid (Peter E) +Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom) +Add privilege check for vacuum (Peter E) +New libpq functions to allow asynchronous connections: PQconnectStart(), + PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(), + PQsetenvPoll(), PQsetenvAbort (Ewan Mellor) +New libpq PQsetenv() function (Ewan Mellor) +create/alter user extension (Peter E) +New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo) +New scripts for create/drop user/db (Peter E) +Major psql overhaul (Peter E) +Add const to libpq interface (Peter E) +New libpq function PQoidValue (Peter E) +Show specific non-aggregate causing problem with GROUP BY (Tom) +Make changes to pg_shadow recreate pg_pwd file (Peter E) +Add aggregate(DISTINCT ...) (Tom) +Allow flag to control COPY input/output of NULLs (Peter E) +Make postgres user have a password by default (Peter E) +Add CREATE/ALTER/DROP GROUP (Peter E) +All administration scripts now support --long options (Peter E, Karel) +Vacuumdb script now supports --all option (Peter E) +ecpg new portable FETCH syntax +Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF + and EXEC SQL ENDIF directives +Add pg_ctl script to control backend start-up (Tatsuo) +Add postmaster.opts.default file to store start-up flags (Tatsuo) +Allow --with-mb=SQL_ASCII +Increase maximum number of index keys to 16 (Bruce) +Increase maximum number of function arguments to 16 (Bruce) +Allow configuration of maximum number of index keys and arguments (Bruce) +Allow unprivileged users to change their passwords (Peter E) +Password authentication enabled; required for new users (Peter E) +Disallow dropping a user who owns a database (Peter E) +Change initdb option --with-mb to --enable-multibyte +Add option for initdb to prompts for superuser password (Peter E) +Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom) +Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E) +New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo) +libpq non-blocking mode (Alfred Perlstein) +Improve conversion of types in casts that don't specify a length +New plperl internal programming language (Mark Hollomon) +Allow COPY IN to read file that do not end with a newline (Tom) +Indicate when long identifiers are truncated (Tom) +Allow aggregates to use type equivalency (Peter E) +Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number() + conversion functions (Karel Zak <zakkr@zf.jcu.cz>) +Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom) +Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom) +Add NUMERIC and int8 types to ODBC +Improve EXPLAIN results for Append, Group, Agg, Unique (Tom) +Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo) +Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi) +Enable backward sequential scan even after reaching EOF (Hiroshi) +Add btree indexing of boolean values, >= and <= (Don Baccus) +Print current line number when COPY FROM fails (Massimo) +Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas) +Add DEC as synonym for DECIMAL (Thomas) +Add SESSION_USER as SQL92 key word, same as CURRENT_USER (Thomas) +Implement SQL92 column aliases (aka correlation names) (Thomas) +Implement SQL92 join syntax (Thomas) +Make INTERVAL reserved word allowed as a column identifier (Thomas) +Implement REINDEX command (Hiroshi) +Accept ALL in aggregate function SUM(ALL col) (Tom) +Prevent GROUP BY from using column aliases (Tom) +New psql \encoding option (Tatsuo) +Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi) +Allow negation of a negative number in all cases +Add ecpg descriptors (Christof, Michael) +Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl +Allow casts with length, like foo::char(8) +New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo) +Add support for SJIS user defined characters (Tatsuo) +Larger views/rules supported +Make libpq's PQconndefaults() thread-safe (Tom) +Disable // as comment to be ANSI conforming, should use -- (Tom) +Allow column aliases on views CREATE VIEW name (collist) +Fixes for views with subqueries (Tom) +Allow UPDATE table SET fld = (SELECT ...) (Tom) +SET command options no longer require quotes +Update pgaccess to 0.98.6 +New SET SEED command +New pg_options.sample file +New SET FSYNC command (Massimo) +Allow pg_descriptions when creating tables +Allow pg_descriptions when creating types, columns, and functions +Allow psql \copy to allow delimiters (Peter E) +Allow psql to print nulls as distinct from "" [null] (Peter E) + +Types +----- +Many array fixes (Tom) +Allow bare column names to be subscripted as arrays (Tom) +Improve type casting of int and float constants (Tom) +Cleanups for int8 inputs, range checking, and type conversion (Tom) +Fix for SELECT timespan('21:11:26'::time) (Tom) +netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko) +Add btree index on NUMERIC (Jan) +Perl fix for large objects containing NUL characters (Douglas Thomson) +ODBC fix for large objects (free) +Fix indexing of cidr data type +Fix for Ethernet MAC addresses (macaddr type) comparisons +Fix for date/time types when overflows happened in computations (Tom) +Allow array on int8 (Peter E) +Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom) +Allow NUMERIC arrays +Fix bugs in NUMERIC ceil() and floor() functions (Tom) +Make char_length()/octet_length including trailing blanks (Tom) +Made abstime/reltime use int4 instead of time_t (Peter E) +New lztext data type for compressed text fields +Revise code to handle coercion of int and float constants (Tom) +Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert) +NUMERIC now accepts scientific notation (Tom) +NUMERIC to int4 rounds (Tom) +Convert float4/8 to NUMERIC properly (Tom) +Allow type conversion with NUMERIC (Thomas) +Make ISO date style (2000-02-16 09:33) the default (Thomas) +Add NATIONAL CHAR [ VARYING ] (Thomas) +Allow NUMERIC round and trunc to accept negative scales (Tom) +New TIME WITH TIME ZONE type (Thomas) +Add MAX()/MIN() on time type (Thomas) +Add abs(), mod(), fac() for int8 (Thomas) +Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas) +Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas) +Add exp() and ln() for NUMERIC type +Rename NUMERIC power() to pow() (Thomas) +Improved TRANSLATE() function (Edwin Ramirez, Tom) +Allow X=-Y operators (Tom) +Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom) +Allow LOCALE to use indexes in regular expression searches (Tom) +Allow creation of functional indexes to use default types + +Performance +----------- +Prevent exponential space consumption with many AND's and OR's (Tom) +Collect attribute selectivity values for system columns (Tom) +Reduce memory usage of aggregates (Tom) +Fix for LIKE optimization to use indexes with multibyte encodings (Tom) +Fix r-tree index optimizer selectivity (Thomas) +Improve optimizer selectivity computations and functions (Tom) +Optimize btree searching for cases where many equal keys exist (Tom) +Enable fast LIKE index processing only if index present (Tom) +Re-use free space on index pages with duplicates (Tom) +Improve hash join processing (Tom) +Prevent descending sort if result is already sorted(Hiroshi) +Allow commuting of index scan query qualifications (Tom) +Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom) +Allocate large memory requests in fix-sized chunks for performance (Tom) +Fix vacuum's performance by reducing memory allocation requests (Tom) +Implement constant-expression simplification (Bernard Frankpitt, Tom) +Use secondary columns to be used to determine start of index scan (Hiroshi) +Prevent quadruple use of disk space when doing internal sorting (Tom) +Faster sorting by calling fewer functions (Tom) +Create system indexes to match all system caches (Bruce, Hiroshi) +Make system caches use system indexes (Bruce) +Make all system indexes unique (Bruce) +Improve pg_statistics management for VACUUM speed improvement (Tom) +Flush backend cache less frequently (Tom, Hiroshi) +COPY now reuses previous memory allocation, improving performance (Tom) +Improve optimization cost estimation (Tom) +Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom) +Use DNF instead of CNF where appropriate (Tom, Taral) +Further cleanup for OR-of-AND WHERE-clauses (Tom) +Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom) +Smarter optimizer computations for random index page access (Tom) +New SET variable to control optimizer costs (Tom) +Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom) +Reduce optimizer internal housekeeping of join paths for speedup (Tom) +Major subquery speedup (Tom) +Fewer fsync writes when fsync is not disabled (Tom) +Improved LIKE optimizer estimates (Tom) +Prevent fsync in SELECT-only queries (Vadim) +Make index creation use psort code, because it is now faster (Tom) +Allow creation of sort temp tables > 1 Gig + +Source Tree Changes +------------------- +Fix for linux PPC compile +New generic expression-tree-walker subroutine (Tom) +Change form() to varargform() to prevent portability problems +Improved range checking for large integers on Alphas +Clean up #include in /include directory (Bruce) +Add scripts for checking includes (Bruce) +Remove un-needed #include's from *.c files (Bruce) +Change #include's to use <> and "" as appropriate (Bruce) +Enable Windows compilation of libpq +Alpha spinlock fix from Uncle George <email>gatgul@voicenet.com</email> +Overhaul of optimizer data structures (Tom) +Fix to cygipc library (Yutaka Tanida) +Allow pgsql to work on newer Cygwin snapshots (Dan) +New catalog version number (Tom) +Add Linux ARM +Rename heap_replace to heap_update +Update for QNX (Dr. Andreas Kardos) +New platform-specific regression handling (Tom) +Rename oid8 -> oidvector and int28 -> int2vector (Bruce) +Included all yacc and lex files into the distribution (Peter E.) +Remove lextest, no longer needed (Peter E) +Fix for libpq and psql on Windows (Magnus) +Internally change datetime and timespan into timestamp and interval (Thomas) +Fix for plpgsql on BSD/OS +Add SQL_ASCII test case to the regression test (Tatsuo) +configure --with-mb now deprecated (Tatsuo) +NT fixes +NetBSD fixes (Johnny C. Lam <email>lamj@stat.cmu.edu</email>) +Fixes for Alpha compiles +New multibyte encodings + </programlisting> + </para> + </sect2> + </sect1> + + <sect1 id="release-6-5-3"> + <title>Release 6.5.3</title> + + <note> + <title>Release date</title> + <simpara>1999-10-13</simpara> + </note> + + <para> + This is basically a cleanup release for 6.5.2. We have added a new + <application>PgAccess</> that was missing in 6.5.2, and installed an NT-specific fix. + </para> + + + <sect2> + <title>Migration to Version 6.5.3</title> + + <para> + A dump/restore is <emphasis>not</emphasis> required for those running + 6.5.*. + </para> + </sect2> + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Updated version of pgaccess 0.98 +NT-specific patch +Fix dumping rules on inherited tables + </programlisting> + </para> + </sect2> + </sect1> + + + <sect1 id="release-6-5-2"> + <title>Release 6.5.2</title> + + <note> + <title>Release date</title> + <simpara>1999-09-15</simpara> + </note> + + <para> + This is basically a cleanup release for 6.5.1. We have fixed a variety of + problems reported by 6.5.1 users. + </para> + + + <sect2> + <title>Migration to Version 6.5.2</title> + + <para> + A dump/restore is <emphasis>not</emphasis> required for those running + 6.5.*. + </para> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +subselect+CASE fixes(Tom) +Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik) +Fixes for CASE in WHERE join clauses(Tom) +Fix BTScan abort(Tom) +Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas) +Improve it so that it checks for multicolumn constraints(Thomas) +Fix for Windows making problem with MB enabled(Hiroki Kataoka) +Allow BSD yacc and bison to compile pl code(Bruce) +Fix SET NAMES working +int8 fixes(Thomas) +Fix vacuum's memory consumption(Hiroshi,Tatsuo) +Reduce the total memory consumption of vacuum(Tom) +Fix for timestamp(datetime) +Rule deparsing bugfixes(Tom) +Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom) +This is to re-use space on index pages freed by vacuum(Vadim) +document -x for pg_dump(Bruce) +Fix for unary operators in rule deparser(Tom) +Comment out FileUnlink of excess segments during mdtruncate()(Tom) +IRIX linking fix from Yu Cao >yucao@falcon.kla-tencor.com< +Repair logic error in LIKE: should not return LIKE_ABORT + when reach end of pattern before end of text(Tom) +Repair incorrect cleanup of heap memory allocation during transaction abort(Tom) +Updated version of pgaccess 0.98 + </programlisting> + </para> + </sect2> + </sect1> + + <sect1 id="release-6-5-1"> + <title>Release 6.5.1</title> + + <note> + <title>Release date</title> + <simpara>1999-07-15</simpara> + </note> + + <para> + This is basically a cleanup release for 6.5. We have fixed a variety of + problems reported by 6.5 users. + </para> + + <sect2> + <title>Migration to Version 6.5.1</title> + + <para> + A dump/restore is <emphasis>not</emphasis> required for those running + 6.5. + </para> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Add NT README file +Portability fixes for linux_ppc, IRIX, linux_alpha, OpenBSD, alpha +Remove QUERY_LIMIT, use SELECT...LIMIT +Fix for EXPLAIN on inheritance(Tom) +Patch to allow vacuum on multisegment tables(Hiroshi) +R-Tree optimizer selectivity fix(Tom) +ACL file descriptor leak fix(Atsushi Ogawa) +New expression subtree code(Tom) +Avoid disk writes for read-only transactions(Vadim) +Fix for removal of temp tables if last transaction was aborted(Bruce) +Fix to prevent too large row from being created(Bruce) +plpgsql fixes +Allow port numbers 32k - 64k(Bruce) +Add ^ precedence(Bruce) +Rename sort files called pg_temp to pg_sorttemp(Bruce) +Fix for microseconds in time values(Tom) +Tutorial source cleanup +New linux_m68k port +Fix for sorting of NULL's in some cases(Tom) +Shared library dependencies fixed (Tom) +Fixed glitches affecting GROUP BY in subselects(Tom) +Fix some compiler warnings (Tomoaki Nishiyama) +Add Win1250 (Czech) support (Pavel Behal) + </programlisting> + </para> + </sect2> + </sect1> + + <sect1 id="release-6-5"> + <title>Release 6.5</title> + + <note> + <title>Release date</title> + <simpara>1999-06-09</simpara> + </note> + + <para> + This release marks a major step in the development team's mastery of the source + code we inherited from Berkeley. You will see we are now easily adding + major features, thanks to the increasing size and experience of our + world-wide development team. + </para> + + <para> + Here is a brief summary of the more notable changes: + + <variablelist> + <varlistentry> + <term> + Multiversion concurrency control(MVCC) + </term> + <listitem> + <para> + This removes our old table-level locking, and replaces it with + a locking system that is superior to most commercial database + systems. In a traditional system, each row that is modified + is locked until committed, preventing reads by other users. + MVCC uses the natural multiversion nature of + <productname>PostgreSQL</productname> to allow readers to + continue reading consistent data during writer activity. + Writers continue to use the compact pg_log transaction system. + This is all performed without having to allocate a lock for + every row like traditional database systems. So, basically, + we no longer are restricted by simple table-level locking; we + have something better than row-level locking. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Hot backups from <application>pg_dump</application> + </term> + <listitem> + <para> + <application>pg_dump</application> takes advantage of the new + MVCC features to give a consistent database dump/backup while + the database stays online and available for queries. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Numeric data type + </term> + <listitem> + <para> + We now have a true numeric data type, with + user-specified precision. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Temporary tables + </term> + <listitem> + <para> + Temporary tables are guaranteed to have unique names + within a database session, and are destroyed on session exit. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + New SQL features + </term> + <listitem> + <para> + We now have CASE, INTERSECT, and EXCEPT statement + support. We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL, + SELECT ... FOR UPDATE, and an improved LOCK TABLE command. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Speedups + </term> + <listitem> + <para> + We continue to speed up <productname>PostgreSQL</productname>, + thanks to the variety of talents within our team. We have + sped up memory allocation, optimization, table joins, and row + transfer routines. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Ports + </term> + <listitem> + <para> + We continue to expand our port list, this time including + <systemitem class="osname">Windows NT</>/<systemitem>ix86</> and <systemitem class="osname">NetBSD</>/<systemitem>arm32</>. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Interfaces + </term> + <listitem> + <para> + Most interfaces have new versions, and existing functionality + has been improved. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + Documentation + </term> + <listitem> + <para> + New and updated material is present throughout the + documentation. New <acronym>FAQ</acronym>s have been + contributed for <systemitem class="osname">SGI</> and <systemitem class="osname">AIX</> platforms. + The <citetitle>Tutorial</citetitle> has introductory information + on <acronym>SQL</acronym> from Stefan Simkovics. + For the <citetitle>User's Guide</citetitle>, there are + reference pages covering the postmaster and more utility + programs, and a new appendix + contains details on date/time behavior. + The <citetitle>Administrator's Guide</citetitle> has a new + chapter on troubleshooting from Tom Lane. + And the <citetitle>Programmer's Guide</citetitle> has a + description of query processing, also from Stefan, and details + on obtaining the <productname>PostgreSQL</productname> source + tree via anonymous <productname>CVS</productname> and + <productname>CVSup</productname>. + </para> + </listitem> + </varlistentry> + </variablelist> + </para> + + <sect2> + <title>Migration to Version 6.5</title> + + <para> + A dump/restore using <application>pg_dump</application> + is required for those wishing to migrate data from any + previous release of <productname>PostgreSQL</productname>. + <application>pg_upgrade</application> can <emphasis>not</emphasis> + be used to upgrade to this release because the on-disk structure + of the tables has changed compared to previous releases. + </para> + + <para> + The new Multiversion Concurrency Control (MVCC) features can + give somewhat different behaviors in multiuser + environments. <emphasis>Read and understand the following section + to ensure that your existing applications will give you the + behavior you need.</emphasis> + </para> + + <sect3> + <title>Multiversion Concurrency Control</title> + + <para> + Because readers in 6.5 don't lock data, regardless of transaction + isolation level, data read by one transaction can be overwritten by + another. In other words, if a row is returned by + <command>SELECT</command> it doesn't mean that this row really exists + at the time it is returned (i.e. sometime after the statement or + transaction began) nor that the row is protected from being deleted or + updated by concurrent transactions before the current transaction does + a commit or rollback. + </para> + + <para> + To ensure the actual existence of a row and protect it against + concurrent updates one must use <command>SELECT FOR UPDATE</command> or + an appropriate <command>LOCK TABLE</command> statement. This should be + taken into account when porting applications from previous releases of + <productname>PostgreSQL</productname> and other environments. + </para> + + <para> + Keep the above in mind if you are using + <filename>contrib/refint.*</filename> triggers for + referential integrity. Additional techniques are required now. One way is + to use <command>LOCK parent_table IN SHARE ROW EXCLUSIVE MODE</command> + command if a transaction is going to update/delete a primary key and + use <command>LOCK parent_table IN SHARE MODE</command> command if a + transaction is going to update/insert a foreign key. + + <note> + <para> + Note that if you run a transaction in SERIALIZABLE mode then you must + execute the <command>LOCK</command> commands above before execution of any + <acronym>DML</acronym> statement + (<command>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</command>) in the + transaction. + </para> + </note> + </para> + + <para> + These inconveniences will disappear in the future + when the ability to read dirty + (uncommitted) data (regardless of isolation level) and true referential + integrity will be implemented. + </para> + </sect3> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Bug Fixes +--------- +Fix text<->float8 and text<->float4 conversion functions(Thomas) +Fix for creating tables with mixed-case constraints(Billy) +Change exp()/pow() behavior to generate error on underflow/overflow(Jan) +Fix bug in pg_dump -z +Memory overrun cleanups(Tatsuo) +Fix for lo_import crash(Tatsuo) +Adjust handling of data type names to suppress double quotes(Thomas) +Use type coercion for matching columns and DEFAULT(Thomas) +Fix deadlock so it only checks once after one second of sleep(Bruce) +Fixes for aggregates and PL/pgsql(Hiroshi) +Fix for subquery crash(Vadim) +Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo) +Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo) +Fix for pg_dump -d or -D and quote special characters in INSERT +Repair serious problems with dynahash(Tom) +Fix INET/CIDR portability problems +Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce) +Fix executor so mergejoin of different column types works(Tom) +Fix for Alpha OR selectivity bug +Fix OR index selectivity problem(Bruce) +Fix so \d shows proper length for char()/varchar()(Ryan) +Fix tutorial code(Clark) +Improve destroyuser checking(Oliver) +Fix for Kerberos(Rodney McDuff) +Fix for dropping database while dirty buffers(Bruce) +Fix so sequence nextval() can be case-sensitive(Bruce) +Fix !!= operator +Drop buffers before destroying database files(Bruce) +Fix case where executor evaluates functions twice(Tatsuo) +Allow sequence nextval actions to be case-sensitive(Bruce) +Fix optimizer indexing not working for negative numbers(Bruce) +Fix for memory leak in executor with fjIsNull +Fix for aggregate memory leaks(Erik Riedel) +Allow user name containing a dash to grant privileges +Cleanup of NULL in inet types +Clean up system table bugs(Tom) +Fix problems of PAGER and \? command(Masaaki Sakaida) +Reduce default multisegment file size limit to 1GB(Peter) +Fix for dumping of CREATE OPERATOR(Tom) +Fix for backward scanning of cursors(Hiroshi Inoue) +Fix for COPY FROM STDIN when using \i(Tom) +Fix for subselect is compared inside an expression(Jan) +Fix handling of error reporting while returning rows(Tom) +Fix problems with reference to array types(Tom,Jan) +Prevent UPDATE SET oid(Jan) +Fix pg_dump so -t option can handle case-sensitive tablenames +Fixes for GROUP BY in special cases(Tom, Jan) +Fix for memory leak in failed queries(Tom) +DEFAULT now supports mixed-case identifiers(Tom) +Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde) +Disable use of pg_dump with both -o and -d options(Bruce) +Allow pg_dump to properly dump group privileges(Bruce) +Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan) +Fix for computations in views(Jan) +Fix for aggregates on array indexes(Tom) +Fix for DEFAULT handles single quotes in value requiring too many quotes +Fix security problem with non-super users importing/exporting large objects(Tom) +Rollback of transaction that creates table cleaned up properly(Tom) +Fix to allow long table and column names to generate proper serial names(Tom) + +Enhancements +------------ +Add "vacuumdb" utility +Speed up libpq by allocating memory better(Tom) +EXPLAIN all indexes used(Tom) +Implement CASE, COALESCE, NULLIF expression(Thomas) +New pg_dump table output format(Constantin) +Add string min()/max() functions(Thomas) +Extend new type coercion techniques to aggregates(Thomas) +New moddatetime contrib(Terry) +Update to pgaccess 0.96(Constantin) +Add routines for single-byte "char" type(Thomas) +Improved substr() function(Thomas) +Improved multibyte handling(Tatsuo) +Multiversion concurrency control/MVCC(Vadim) +New Serialized mode(Vadim) +Fix for tables over 2gigs(Peter) +New SET TRANSACTION ISOLATION LEVEL(Vadim) +New LOCK TABLE IN ... MODE(Vadim) +Update ODBC driver(Byron) +New NUMERIC data type(Jan) +New SELECT FOR UPDATE(Vadim) +Handle "NaN" and "Infinity" for input values(Jan) +Improved date/year handling(Thomas) +Improved handling of backend connections(Magnus) +New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo) +New TCL_ARRAYS option(Massimo) +New INTERSECT and EXCEPT(Stefan) +New pg_index.indisprimary for primary key tracking(D'Arcy) +New pg_dump option to allow dropping of tables before creation(Brook) +Speedup of row output routines(Tom) +New READ COMMITTED isolation level(Vadim) +New TEMP tables/indexes(Bruce) +Prevent sorting if result is already sorted(Jan) +New memory allocation optimization(Jan) +Allow psql to do \p\g(Bruce) +Allow multiple rule actions(Jan) +Added LIMIT/OFFSET functionality(Jan) +Improve optimizer when joining a large number of tables(Bruce) +New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas) +New intro to backend processing from S. Simkovics' Master's Thesis (Stefan) +Improved int8 support(Ryan Bradetich, Thomas, Tom) +New routines to convert between int8 and text/varchar types(Thomas) +New bushy plans, where meta-tables are joined(Bruce) +Enable right-hand queries by default(Bruce) +Allow reliable maximum number of backends to be set at configure time + (--with-maxbackends and postmaster switch (-N backends))(Tom) +GEQO default now 10 tables because of optimizer speedups(Tom) +Allow NULL=Var for MS-SQL portability(Michael, Bruce) +Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand) +Allow psql \d on a view show query(Ryan) +Speedup for LIKE(Bruce) +Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael) +JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter) +Make % operator have precedence like /(Bruce) +Add new postgres -O option to allow system table structure changes(Bruce) +Update contrib/pginterface/findoidjoins script(Tom) +Major speedup in vacuum of deleted rows with indexes(Vadim) +Allow non-SQL functions to run different versions based on arguments(Tom) +Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida) +Add version number in start-up banners for psql(Masaaki Sakaida) +New contrib/vacuumlo removes large objects not referenced(Peter) +New initialization for table sizes so non-vacuumed tables perform better(Tom) +Improve error messages when a connection is rejected(Tom) +Support for arrays of char() and varchar() fields(Massimo) +Overhaul of hash code to increase reliability and performance(Tom) +Update to PyGreSQL 2.4(D'Arcy) +Changed debug options so -d4 and -d5 produce different node displays(Jan) +New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan) +Better optimization statistics for system table access(Tom) +Better handling of non-default block sizes(Massimo) +Improve GEQO optimizer memory consumption(Tom) +UNION now supports ORDER BY of columns not in target list(Jan) +Major libpq++ improvements(Vince Vielhaber) +pg_dump now uses -z(ACL's) as default(Bruce) +backend cache, memory speedups(Tom) +have pg_dump do everything in one snapshot transaction(Vadim) +fix for large object memory leakage, fix for pg_dumping(Tom) +INET type now respects netmask for comparisons +Make VACUUM ANALYZE only use a readlock(Vadim) +Allow VIEWs on UNIONS(Jan) +pg_dump now can generate consistent snapshots on active databases(Vadim) + +Source Tree Changes +------------------- +Improve port matching(Tom) +Portability fixes for SunOS +Add Windows NT backend port and enable dynamic loading(Magnus and Daniel Horak) +New port to Cobalt Qube(Mips) running Linux(Tatsuo) +Port to NetBSD/m68k(Mr. Mutsuki Nakajima) +Port to NetBSD/sun3(Mr. Mutsuki Nakajima) +Port to NetBSD/macppc(Toshimi Aoki) +Fix for tcl/tk configuration(Vince) +Removed CURRENT key word for rule queries(Jan) +NT dynamic loading now works(Daniel Horak) +Add ARM32 support(Andrew McMurry) +Better support for HP-UX 11 and UnixWare +Improve file handling to be more uniform, prevent file descriptor leak(Tom) +New install commands for plpgsql(Jan) + </programlisting> + </para> + </sect2> + </sect1> + + +<sect1 id="release-6-4-2"> +<title>Release 6.4.2</title> + + <note> + <title>Release date</title> + <simpara>1998-12-20</simpara> + </note> + +<para> +The 6.4.1 release was improperly packaged. This also has one additional +bug fix. +</para> + + +<sect2> +<title>Migration to Version 6.4.2</title> + +<para> +A dump/restore is <emphasis>not</emphasis> required for those running +6.4.*. +</para> +</sect2> +<sect2> +<title>Changes</title> + +<para> +<programlisting> +Fix for datetime constant problem on some platforms(Thomas) +</programlisting> +</para> +</sect2> +</sect1> + + + +<sect1 id="release-6-4-1"> +<title>Release 6.4.1</title> + + <note> + <title>Release date</title> + <simpara>1998-12-18</simpara> + </note> + +<para> +This is basically a cleanup release for 6.4. We have fixed a variety of +problems reported by 6.4 users. +</para> + + +<sect2> +<title>Migration to Version 6.4.1</title> + +<para> +A dump/restore is <emphasis>not</emphasis> required for those running +6.4. +</para> +</sect2> +<sect2> +<title>Changes</title> + +<para> +<programlisting> +Add pg_dump -N flag to force double quotes around identifiers. This is + the default(Thomas) +Fix for NOT in where clause causing crash(Bruce) +EXPLAIN VERBOSE coredump fix(Vadim) +Fix shared-library problems on Linux +Fix test for table existence to allow mixed-case and whitespace in + the table name(Thomas) +Fix a couple of pg_dump bugs +Configure matches template/.similar entries better(Tom) +Change builtin function names from SPI_* to spi_* +OR WHERE clause fix(Vadim) +Fixes for mixed-case table names(Billy) +contrib/linux/postgres.init.csh/sh fix(Thomas) +libpq memory overrun fix +SunOS fixes(Tom) +Change exp() behavior to generate error on underflow(Thomas) +pg_dump fixes for memory leak, inheritance constraints, layout change +update pgaccess to 0.93 +Fix prototype for 64-bit platforms +Multibyte fixes(Tatsuo) +New ecpg man page +Fix memory overruns(Tatsuo) +Fix for lo_import() crash(Bruce) +Better search for install program(Tom) +Timezone fixes(Tom) +HP-UX fixes(Tom) +Use implicit type coercion for matching DEFAULT values(Thomas) +Add routines to help with single-byte (internal) character type(Thomas) +Compilation of libpq for Windows fixes(Magnus) +Upgrade to PyGreSQL 2.2(D'Arcy) +</programlisting> +</para> +</sect2> +</sect1> + + + +<sect1 id="release-6-4"> +<title>Release 6.4</title> + + <note> + <title>Release date</title> + <simpara>1998-10-30</simpara> + </note> + +<para> +There are <emphasis>many</emphasis> new features and improvements in this release. +Thanks to our developers and maintainers, nearly every aspect of the system +has received some attention since the previous release. +Here is a brief, incomplete summary: + +<itemizedlist> +<listitem> +<para> +Views and rules are now functional thanks to extensive new code in the +rewrite rules system from Jan Wieck. He also wrote a chapter on it +for the <citetitle>Programmer's Guide</citetitle>. +</para> +</listitem> +<listitem> +<para> +Jan also contributed a second procedural language, <application>PL/pgSQL</application>, to go with the +original <application>PL/pgTCL</application> procedural language he contributed last release. +</para> +</listitem> + +<listitem> +<para> +We have optional multiple-byte character set support from Tatsuo Ishii +to complement our existing locale support. +</para> +</listitem> + +<listitem> +<para> +Client/server communications has been cleaned up, with better support for +asynchronous messages and interrupts thanks to Tom Lane. +</para> +</listitem> + +<listitem> +<para> +The parser will now perform automatic type coercion to match arguments +to available operators and functions, and to match columns and expressions +with target columns. This uses a generic mechanism which supports +the type extensibility features of <productname>PostgreSQL</productname>. +There is a new chapter in the <citetitle>User's Guide</citetitle> +which covers this topic. +</para> +</listitem> + +<listitem> +<para> +Three new data types have been added. +Two types, <type>inet</type> and <type>cidr</type>, support various forms +of IP network, subnet, and machine addressing. There is now an 8-byte integer +type available on some platforms. See the chapter on data types +in the <citetitle>User's Guide</citetitle> for details. +A fourth type, <type>serial</type>, is now supported by the parser as an +amalgam of the <type>int4</type> type, a sequence, and a unique index. +</para> +</listitem> + +<listitem> +<para> +Several more <acronym>SQL92</acronym>-compatible syntax features have been +added, including <command>INSERT DEFAULT VALUES</command> +</para> +</listitem> + +<listitem> +<para> +The automatic configuration and installation system has received some +attention, and should be more robust for more platforms than it has ever +been. +</para> +</listitem> + +</itemizedlist> +</para> + +<sect2> +<title>Migration to Version 6.4</title> + +<para> +A dump/restore using <application>pg_dump</application> +or <application>pg_dumpall</application> +is required for those wishing to migrate data from any +previous release of <productname>PostgreSQL</productname>. +</para> +</sect2> + + <sect2> +<title>Changes</title> + + <para> + <programlisting> +Bug Fixes +--------- +Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan) +Remove char2-16 data types, use char/varchar(Darren) +Pqfn not handles a NOTICE message(Anders) +Reduced busywaiting overhead for spinlocks with many backends (dg) +Stuck spinlock detection (dg) +Fix up "ISO-style" timespan decoding and encoding(Thomas) +Fix problem with table drop after rollback of transaction(Vadim) +Change error message and remove non-functional update message(Vadim) +Fix for COPY array checking +Fix for SELECT 1 UNION SELECT NULL +Fix for buffer leaks in large object calls(Pascal) +Change owner from oid to int4 type(Bruce) +Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim() +Fix for shared invalidation cache overflow(Massimo) +Prevent file descriptor leaks in failed COPY's(Bruce) +Fix memory leak in libpgtcl's pg_select(Constantin) +Fix problems with username/passwords over 8 characters(Tom) +Fix problems with handling of asynchronous NOTIFY in backend(Tom) +Fix of many bad system table entries(Tom) + +Enhancements +------------ +Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael) +Show the index used in an EXPLAIN(Zeugswetter) +EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan) +Multibyte awareness of many data types and functions, via configure(Tatsuo) +New configure --with-mb option(Tatsuo) +New initdb --pgencoding option(Tatsuo) +New createdb -E multibyte option(Tatsuo) +Select version(); now returns PostgreSQL version(Jeroen) +libpq now allows asynchronous clients(Tom) +Allow cancel from client of backend query(Tom) +psql now cancels query with Control-C(Tom) +libpq users need not issue dummy queries to get NOTIFY messages(Tom) +NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom) +PGresult struct now includes associated error message, if any(Tom) +Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas) +Add routines to convert between varchar and bpchar(Thomas) +Add routines to allow sizing of varchar and bpchar into target columns(Thomas) +Add bit flags to support timezonehour and minute in data retrieval(Thomas) +Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas) +Fixes for unary minus parsing with leading spaces(Thomas) +Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas) +Check for and properly ignore FOREIGN KEY column constraints(Thomas) +Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas) +Enable HAVING clause but no fixes elsewhere yet. +Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas) +Save string type if specified for DEFAULT clause handling(Thomas) +Coerce operations involving different data types(Thomas) +Allow some index use for columns of different types(Thomas) +Add capabilities for automatic type conversion(Thomas) +Cleanups for large objects, so file is truncated on open(Peter) +Readline cleanups(Tom) +Allow psql \f \ to make spaces as delimiter(Bruce) +Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce) +Msql compatibility library in /contrib(Aldrin) +Remove the requirement that ORDER/GROUP BY clause identifiers be +included in the target list(David) +Convert columns to match columns in UNION clauses(Thomas) +Remove fork()/exec() and only do fork()(Bruce) +Jdbc cleanups(Peter) +Show backend status on ps command line(only works on some platforms)(Bruce) +Pg_hba.conf now has a sameuser option in the database field +Make lo_unlink take oid param, not int4 +New DISABLE_COMPLEX_MACRO for compilers that cannot handle our macros(Bruce) +Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom) +libpgtcl cleanups(Tom) +Add -error option to libpgtcl's pg_result command(Tom) +New locale patch, see docs/README/locale(Oleg) +Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb) +New contrib/lo code for large object orphan removal(Peter) +New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes +feature, see /doc/README.mb(Tatsuo) +contrib/noupdate code to revoke update permission on a column +libpq can now be compiled on Windows(Magnus) +Add PQsetdbLogin() in libpq +New 8-byte integer type, checked by configure for OS support(Thomas) +Better support for quoted table/column names(Thomas) +Surround table and column names with double-quotes in pg_dump(Thomas) +PQreset() now works with passwords(Tom) +Handle case of GROUP BY target list column number out of range(David) +Allow UNION in subselects +Add auto-size to screen to \d? commands(Bruce) +Use UNION to show all \d? results in one query(Bruce) +Add \d? field search feature(Bruce) +Pg_dump issues fewer \connect requests(Tom) +Make pg_dump -z flag work better, document it in manual page(Tom) +Add HAVING clause with full support for subselects and unions(Stephan) +Full text indexing routines in contrib/fulltextindex(Maarten) +Transaction ids now stored in shared memory(Vadim) +New PGCLIENTENCODING when issuing COPY command(Tatsuo) +Support for SQL92 syntax "SET NAMES"(Tatsuo) +Support for LATIN2-5(Tatsuo) +Add UNICODE regression test case(Tatsuo) +Lock manager cleanup, new locking modes for LLL(Vadim) +Allow index use with OR clauses(Bruce) +Allows "SELECT NULL ORDER BY 1;" +Explain VERBOSE prints the plan, and now pretty-prints the plan to +the postmaster log file(Bruce) +Add indexes display to \d command(Bruce) +Allow GROUP BY on functions(David) +New pg_class.relkind for large objects(Bruce) +New way to send libpq NOTICE messages to a different location(Tom) +New \w write command to psql(Bruce) +New /contrib/findoidjoins scans oid columns to find join relationships(Bruce) +Allow binary-compatible indexes to be considered when checking for valid +Indexes for restriction clauses containing a constant(Thomas) +New ISBN/ISSN code in /contrib/isbn_issn +Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas) +New rewrite system fixes many problems with rules and views(Jan) + * Rules on relations work + * Event qualifications on insert/update/delete work + * New OLD variable to reference CURRENT, CURRENT will be remove in future + * Update rules can reference NEW and OLD in rule qualifications/actions + * Insert/update/delete rules on views work + * Multiple rule actions are now supported, surrounded by parentheses + * Regular users can create views/rules on tables they have RULE permits + * Rules and views inherit the privileges of the creator + * No rules at the column level + * No UPDATE NEW/OLD rules + * New pg_tables, pg_indexes, pg_rules and pg_views system views + * Only a single action on SELECT rules + * Total rewrite overhaul, perhaps for 6.5 + * handle subselects + * handle aggregates on views + * handle insert into select from view works +System indexes are now multikey(Bruce) +Oidint2, oidint4, and oidname types are removed(Bruce) +Use system cache for more system table lookups(Bruce) +New backend programming language PL/pgSQL in backend/pl(Jan) +New SERIAL data type, auto-creates sequence/index(Thomas) +Enable assert checking without a recompile(Massimo) +User lock enhancements(Massimo) +New setval() command to set sequence value(Massimo) +Auto-remove unix socket file on start-up if no postmaster running(Massimo) +Conditional trace package(Massimo) +New UNLISTEN command(Massimo) +psql and libpq now compile under Windows using win32.mak(Magnus) +Lo_read no longer stores trailing NULL(Bruce) +Identifiers are now truncated to 31 characters internally(Bruce) +Createuser options now available on the command line +Code for 64-bit integer supported added, configure tested, int8 type(Thomas) +Prevent file descriptor leaf from failed COPY(Bruce) +New pg_upgrade command(Bruce) +Updated /contrib directories(Massimo) +New CREATE TABLE DEFAULT VALUES statement available(Thomas) +New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas) +New DECLARE and FETCH feature(Thomas) +libpq's internal structures now not exported(Tom) +Allow up to 8 key indexes(Bruce) +Remove ARCHIVE key word, that is no longer used(Thomas) +pg_dump -n flag to suppress quotes around indentifiers +disable system columns for views(Jan) +new INET and CIDR types for network addresses(TomH, Paul) +no more double quotes in psql output +pg_dump now dumps views(Terry) +new SET QUERY_LIMIT(Tatsuo,Jan) + +Source Tree Changes +------------------- +/contrib cleanup(Jun) +Inline some small functions called for every row(Bruce) +Alpha/linux fixes +HP-UX cleanups(Tom) +Multibyte regression tests(Soonmyung.) +Remove --disabled options from configure +Define PGDOC to use POSTGRESDIR by default +Make regression optional +Remove extra braces code to pgindent(Bruce) +Add bsdi shared library support(Bruce) +New --without-CXX support configure option(Brook) +New FAQ_CVS +Update backend flowchart in tools/backend(Bruce) +Change atttypmod from int16 to int32(Bruce, Tom) +Getrusage() fix for platforms that do not have it(Tom) +Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page +NS32K platform fixes(Phil Nelson, John Buller) +SCO 7/UnixWare 2.x fixes(Billy,others) +Sparc/Solaris 2.5 fixes(Ryan) +Pgbuiltin.3 is obsolete, move to doc files(Thomas) +Even more documentation(Thomas) +Nextstep support(Jacek) +Aix support(David) +pginterface manual page(Bruce) +shared libraries all have version numbers +merged all OS-specific shared library defines into one file +smarter TCL/TK configuration checking(Billy) +smarter perl configuration(Brook) +configure uses supplied install-sh if no install script found(Tom) +new Makefile.shlib for shared library configuration(Tom) +</programlisting> +</para> +</sect2> +</sect1> + +<sect1 id="release-6-3-2"> +<title>Release 6.3.2</title> + + <note> + <title>Release date</title> + <simpara>1998-04-07</simpara> + </note> + +<para> +This is a bug-fix release for 6.3.x. +Refer to the release notes for version 6.3 for a more complete summary of new features. +</para> +<para> +Summary: + +<itemizedlist> +<listitem> +<para> +Repairs automatic configuration support for some platforms, including Linux, +from breakage inadvertently introduced in version 6.3.1. +</para> +</listitem> + +<listitem> +<para> +Correctly handles function calls on the left side of BETWEEN and LIKE clauses. +</para> +</listitem> + +</itemizedlist> +</para> +<para> +A dump/restore is NOT required for those running 6.3 or 6.3.1. A +<literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required. +This last step should be performed while the postmaster is not running. +You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries. +</para> +<para> +For upgrades from pre-6.3 installations, +refer to the installation and migration instructions for version 6.3. +</para> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Configure detection improvements for tcl/tk(Brook Milligan, Alvin) +Manual page improvements(Bruce) +BETWEEN and LIKE fix(Thomas) +fix for psql \connect used by pg_dump(Oliver Elphick) +New odbc driver +pgaccess, version 0.86 +qsort removed, now uses libc version, cleanups(Jeroen) +fix for buffer over-runs detected(Maurice Gittens) +fix for buffer overrun in libpgtcl(Randy Kunkee) +fix for UNION with DISTINCT or ORDER BY(Bruce) +gettimeofday configure check(Doug Winterburn) +Fix "indexes not used" bug(Vadim) +docs additions(Thomas) +Fix for backend memory leak(Bruce) +libreadline cleanup(Erwan MAS) +Remove DISTDIR(Bruce) +Makefile dependency cleanup(Jeroen van Vianen) +ASSERT fixes(Bruce) + </programlisting> + </para> + </sect2> + </sect1> + + <sect1 id="release-6-3-1"> + <title>Release 6.3.1</title> + + <note> + <title>Release date</title> + <simpara>1998-03-23</simpara> + </note> + + <para> + Summary: + +<itemizedlist> +<listitem> +<para> +Additional support for multibyte character sets. +</para> +</listitem> + +<listitem> +<para> +Repair byte ordering for mixed-endian clients and servers. +</para> +</listitem> + +<listitem> +<para> +Minor updates to allowed SQL syntax. +</para> +</listitem> + +<listitem> +<para> +Improvements to the configuration autodetection for installation. +</para> +</listitem> + +</itemizedlist> +</para> +<para> +A dump/restore is NOT required for those running 6.3. A +<literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required. +This last step should be performed while the postmaster is not running. +You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries. +</para> +<para> +For upgrades from pre-6.3 installations, +refer to the installation and migration instructions for version 6.3. +</para> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +ecpg cleanup/fixes, now version 1.1(Michael Meskes) +pg_user cleanup(Bruce) +large object fix for pg_dump and tclsh (alvin) +LIKE fix for multiple adjacent underscores +fix for redefining builtin functions(Thomas) +ultrix4 cleanup +upgrade to pg_access 0.83 +updated CLUSTER manual page +multibyte character set support, see doc/README.mb(Tatsuo) +configure --with-pgport fix +pg_ident fix +big-endian fix for backend communications(Kataoka) +SUBSTR() and substring() fix(Jan) +several jdbc fixes(Peter) +libpgtcl improvements, see libptcl/README(Randy Kunkee) +Fix for "Datasize = 0" error(Vadim) +Prevent \do from wrapping(Bruce) +Remove duplicate Russian character set entries +Sunos4 cleanup +Allow optional TABLE key word in LOCK and SELECT INTO(Thomas) +CREATE SEQUENCE options to allow a negative integer(Thomas) +Add "PASSWORD" as an allowed column identifier(Thomas) +Add checks for UNION target fields(Bruce) +Fix Alpha port(Dwayne Bailey) +Fix for text arrays containing quotes(Doug Gibson) +Solaris compile fix(Albert Chin-A-Young) +Better identify tcl and tk libs and includes(Bruce) + </programlisting> + </para> + </sect2> + </sect1> + + <sect1 id="release-6-3"> + <title>Release 6.3</title> + + <note> + <title>Release date</title> + <simpara>1998-03-01</simpara> + </note> + + <para> + There are <emphasis>many</emphasis> new features and improvements in this release. + Here is a brief, incomplete summary: + + <itemizedlist> + <listitem> + <para> + Many new SQL features, including + full <acronym>SQL92</acronym> subselect capability + (everything is here but target-list subselects). + </para> + </listitem> + + <listitem> + <para> + Support for client-side environment variables to specify time zone and date style. + </para> + </listitem> + + <listitem> + <para> + Socket interface for client/server connection. This is the default now + so you might need to start <application>postmaster</application> with the + <option>-i</option> flag. + </para> + </listitem> + + <listitem> + <para> + Better password authorization mechanisms. Default table privileges have changed. + </para> + </listitem> + + <listitem> + <para> + Old-style <firstterm>time travel</firstterm> + has been removed. Performance has been improved. + </para> + </listitem> + </itemizedlist> + </para> + + <note> + <para> + Bruce Momjian wrote the following notes to introduce the new release. + </para> + </note> + + <para> + There are some general 6.3 issues that I want to mention. These are + only the big items that cannot be described in one sentence. A review + of the detailed changes list is still needed. + </para> + <para> + First, we now have subselects. Now that we have them, I would like to + mention that without subselects, SQL is a very limited language. + Subselects are a major feature, and you should review your code for + places where subselects provide a better solution for your queries. I + think you will find that there are more uses for subselects than you might + think. Vadim has put us on the big SQL map with subselects, and fully + functional ones too. The only thing you cannot do with subselects is to + use them in the target list. + </para> + <para> + Second, 6.3 uses Unix domain sockets rather than TCP/IP by default. To + enable connections from other machines, you have to use the new + postmaster -i option, and of course edit <filename>pg_hba.conf</filename>. Also, for this + reason, the format of <filename>pg_hba.conf</filename> has changed. + </para> + <para> + Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or + <type>text</type>. Specifically, the <type>text</> and <type>varchar()</type> have a penalty for access to + any columns after the first column of this type. <type>char()</type> used to also + have this access penalty, but it no longer does. This might suggest that + you redesign some of your tables, especially if you have short character + columns that you have defined as <type>varchar()</type> or <type>text</type>. This and other + changes make 6.3 even faster than earlier releases. + </para> + <para> + We now have passwords definable independent of any Unix file. There are + new SQL USER commands. + See the <citetitle>Administrator's Guide</citetitle> for more + information. There is a new table, pg_shadow, which is used to store + user information and user passwords, and it by default only SELECT-able + by the <systemitem>postgres</systemitem> super-user. pg_user is now a view of pg_shadow, and is + SELECT-able by PUBLIC. You should keep using pg_user in your + application without changes. + </para> + <para> + User-created tables now no longer have SELECT privilege to PUBLIC by + default. This was done because the ANSI standard requires it. You can + of course GRANT any privileges you want after the table is created. + System tables continue to be SELECT-able by PUBLIC. + </para> + <para> + We also have real deadlock detection code. No more sixty-second + timeouts. And the new locking code implements a <acronym>FIFO</acronym> better, so there + should be less resource starvation during heavy use. + </para> + <para> + Many complaints have been made about inadequate documentation in previous + releases. Thomas has put much effort into many new manuals for this + release. Check out the doc/ directory. + </para> + <para> + For performance reasons, time travel is gone, but can be implemented + using triggers (see <filename>pgsql/contrib/spi/README</filename>). Please check out the new + \d command for types, operators, etc. Also, views have their own + privileges now, not based on the underlying tables, so privileges on + them have to be set separately. Check <filename>/pgsql/interfaces</filename> for some new + ways to talk to <productname>PostgreSQL</productname>. + </para> + <para> + This is the first release that really required an explanation for + existing users. In many ways, this was necessary because the new + release removes many limitations, and the work-arounds people were using + are no longer needed. + </para> + + <sect2> + <title>Migration to Version 6.3</title> + + <para> + A dump/restore using <application>pg_dump</application> + or <application>pg_dumpall</application> + is required for those wishing to migrate data from any + previous release of <productname>PostgreSQL</productname>. + </para> + </sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Bug Fixes +--------- +Fix binary cursors broken by MOVE implementation(Vadim) +Fix for tcl library crash(Jan) +Fix for array handling, from Gerhard Hintermayer +Fix acl error, and remove duplicate pqtrace(Bruce) +Fix psql \e for empty file(Bruce) +Fix for textcat on varchar() fields(Bruce) +Fix for DBT Sendproc (Zeugswetter Andres) +Fix vacuum analyze syntax problem(Bruce) +Fix for international identifiers(Tatsuo) +Fix aggregates on inherited tables(Bruce) +Fix substr() for out-of-bounds data +Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce) +Fix notty output to show status result. -q option still turns it off(Bruce) +Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce) +Fix cluster(Bruce) +Fix for PQtrace start/stop several times(Bruce) +Fix a variety of locking problems like newer lock waiters getting + lock before older waiters, and having readlock people not share + locks if a writer is waiting for a lock, and waiting writers not + getting priority over waiting readers(Bruce) +Fix crashes in psql when executing queries from external files(James) +Fix problem with multiple order by columns, with the first one having + NULL values(Jeroen) +Use correct hash table support functions for float8 and int4(Thomas) +Re-enable JOIN= option in CREATE OPERATOR statement (Thomas) +Change precedence for boolean operators to match expected behavior(Thomas) +Generate elog(ERROR) on over-large integer(Bruce) +Allow multiple-argument functions in constraint clauses(Thomas) +Check boolean input literals for 'true','false','yes','no','1','0' + and throw elog(ERROR) if unrecognized(Thomas) +Major large objects fix +Fix for GROUP BY showing duplicates(Vadim) +Fix for index scans in MergeJoin(Vadim) + +Enhancements +------------ +Subselects with EXISTS, IN, ALL, ANY key words (Vadim, Bruce, Thomas) +New User Manual(Thomas, others) +Speedup by inlining some frequently-called functions +Real deadlock detection, no more timeouts(Bruce) +Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, + CURRENT_USER(Thomas) +Modify constraint syntax to be SQL92-compliant(Thomas) +Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas) +Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas) +Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas) +Allow PostgreSQL-style casting ("::") of non-constants(Thomas) +Add support for SQL3 TRUE and FALSE boolean constants(Thomas) +Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas) +Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas) +Allow SQL92 delimited identifiers(Thomas) +Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas) +Support SQL92 syntax for type coercion of literal strings + (e.g. "DATETIME 'now'")(Thomas) +Add conversions for int2, int4, and OID types to and from text(Thomas) +Use shared lock when building indexes(Vadim) +Free memory allocated for an user query inside transaction block after + this query is done, was turned off in <= 6.2.1(Vadim) +New SQL statement CREATE PROCEDURAL LANGUAGE(Jan) +New <productname>PostgreSQL</productname> Procedural Language (PL) backend interface(Jan) +Rename pg_dump -H option to -h(Bruce) +Add Java support for passwords, European dates(Peter) +Use indexes for LIKE and ~, !~ operations(Bruce) +Add hash functions for datetime and timespan(Thomas) +Time Travel removed(Vadim, Bruce) +Add paging for \d and \z, and fix \i(Bruce) +Add Unix domain socket support to backend and to frontend library(Goran) +Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas) +Allow more SQL92 and/or <productname>PostgreSQL</productname> reserved words as column identifiers(Thomas) +Augment support for SQL92 SET TIME ZONE...(Thomas) +SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas) +Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas) +Enable SET TIME ZONE using TZ environment variable(Thomas) +Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas) +Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO + frontend library initialization environment variables(Thomas) +Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas) +Add pg_description table for info on tables, columns, operators, types, and + aggregates(Bruce) +Increase 16 char limit on system table/index names to 32 characters(Bruce) +Rename system indexes(Bruce) +Add 'GERMAN' option to SET DATESTYLE(Thomas) +Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas) +Allow fractional values for delta times (e.g. '2.5 days')(Thomas) +Validate numeric input more carefully for delta times(Thomas) +Implement day of year as possible input to date_part()(Thomas) +Define timespan_finite() and text_timespan() functions(Thomas) +Remove archive stuff(Bruce) +Allow for a pg_password authentication database that is separate from + the system password file(Todd) +Dump ACLs, GRANT, REVOKE privileges(Matt) +Define text, varchar, and bpchar string length functions(Thomas) +Fix Query handling for inheritance, and cost computations(Bruce) +Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas) +Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas) +Implement UNIONs for SELECT(Bruce) +Add UNION, GROUP, DISTINCT to INSERT(Bruce) +varchar() stores only necessary bytes on disk(Bruce) +Fix for BLOBs(Peter) +Mega-Patch for JDBC...see README_6.3 for list of changes(Peter) +Remove unused "option" from PQconnectdb() +New LOCK command and lock manual page describing deadlocks(Bruce) +Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce) +Enhance psql \z to show sequences(Bruce) +Show NOT NULL and DEFAULT in psql \d table(Bruce) +New psql .psqlrc file start-up(Andrew) +Modify sample start-up script in contrib/linux to show syslog(Thomas) +New types for IP and MAC addresses in contrib/ip_and_mac(TomH) +Unix system time conversions with date/time types in contrib/unixdate(Thomas) +Update of contrib stuff(Massimo) +Add Unix socket support to DBD::Pg(Goran) +New python interface (PyGreSQL 2.0)(D'Arcy) +New frontend/backend protocol has a version number, network byte order(Phil) +Security features in pg_hba.conf enhanced and documented, many cleanups(Phil) +CHAR() now faster access than VARCHAR() or TEXT +ecpg embedded SQL preprocessor +Reduce system column overhead(Vadmin) +Remove pg_time table(Vadim) +Add pg_type attribute to identify types that need length (bpchar, varchar) +Add report of offending line when COPY command fails +Allow VIEW privileges to be set separately from the underlying tables. + For security, use GRANT/REVOKE on views as appropriate(Jan) +Tables now have no default GRANT SELECT TO PUBLIC. You must + explicitly grant such privileges. +Clean up tutorial examples(Darren) + +Source Tree Changes +------------------- +Add new html development tools, and flow chart in /tools/backend +Fix for SCO compiles +Stratus computer port Robert Gillies +Added support for shlib for BSD44_derived & i386_solaris +Make configure more automated(Brook) +Add script to check regression test results +Break parser functions into smaller files, group together(Bruce) +Rename heap_create to heap_create_and_catalog, rename heap_creatr + to heap_create()(Bruce) +Sparc/Linux patch for locking(TomS) +Remove PORTNAME and reorganize port-specific stuff(Marc) +Add optimizer README file(Bruce) +Remove some recursion in optimizer and clean up some code there(Bruce) +Fix for NetBSD locking(Henry) +Fix for libptcl make(Tatsuo) +AIX patch(Darren) +Change IS TRUE, IS FALSE, ... to expressions using "=" rather than + function calls to istrue() or isfalse() to allow optimization(Thomas) +Various fixes NetBSD/Sparc related(TomH) +Alpha linux locking(Travis,Ryan) +Change elog(WARN) to elog(ERROR)(Bruce) +FAQ for FreeBSD(Marc) +Bring in the PostODBC source tree as part of our standard distribution(Marc) +A minor patch for HP/UX 10 vs 9(Stan) +New pg_attribute.atttypmod for type-specific info like varchar length(Bruce) +UnixWare patches(Billy) +New i386 'lock' for spinlock asm(Billy) +Support for multiplexed backends is removed +Start an OpenBSD port +Start an AUX port +Start a Cygnus port +Add string functions to regression suite(Thomas) +Expand a few function names formerly truncated to 16 characters(Thomas) +Remove un-needed malloc() calls and replace with palloc()(Bruce) +</programlisting> +</para> +</sect2> +</sect1> + +<sect1 id="release-6-2-1"> +<title>Release 6.2.1</title> + + <note> + <title>Release date</title> + <simpara>1997-10-17</simpara> + </note> + +<para> +6.2.1 is a bug-fix and usability release on 6.2. +</para> +<para> +Summary: + +<itemizedlist> +<listitem> +<para> +Allow strings to span lines, per <acronym>SQL92</acronym>. +</para> +</listitem> + +<listitem> +<para> +Include example trigger function for inserting user names on table updates. +</para> +</listitem> + +</itemizedlist> +</para> +<para> +This is a minor bug-fix release on 6.2. +For upgrades from pre-6.2 systems, a full dump/reload is required. +Refer to the 6.2 release notes for instructions. +</para> + +<sect2> +<title>Migration from version 6.2 to version 6.2.1</title> + +<para> +This is a minor bug-fix release. A dump/reload is not required from version 6.2, +but is required from any release prior to 6.2. +</para> +<para> +In upgrading from version 6.2, if you choose to dump/reload you will find that +avg(money) is now calculated correctly. All other bug fixes take effect +upon updating the executables. +</para> +<para> +Another way to avoid dump/reload is to use the following SQL command +from <command>psql</command> to update the existing system table: + +<programlisting> + update pg_aggregate set aggfinalfn = 'cash_div_flt8' + where aggname = 'avg' and aggbasetype = 790; +</programlisting> +</para> +<para> +This will need to be done to every existing database, including template1. +</para> +</sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Allow TIME and TYPE column names(Thomas) +Allow larger range of true/false as boolean values(Thomas) +Support output of "now" and "current"(Thomas) +Handle DEFAULT with INSERT of NULL properly(Vadim) +Fix for relation reference counts problem in buffer manager(Vadim) +Allow strings to span lines, like ANSI(Thomas) +Fix for backward cursor with ORDER BY(Vadim) +Fix avg(cash) computation(Thomas) +Fix for specifying a column twice in ORDER/GROUP BY(Vadim) +Documented new libpq function to return affected rows, PQcmdTuples(Bruce) +Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan) + </programlisting> + </para> + </sect2> + </sect1> + +<sect1 id="release-6-2"> +<title>Release 6.2</title> + + <note> + <title>Release date</title> + <simpara>1997-10-02</simpara> + </note> + +<para> +A dump/restore is required for those wishing to migrate data from +previous releases of <productname>PostgreSQL</productname>. +</para> + +<sect2> +<title>Migration from version 6.1 to version 6.2</title> + +<para> +This migration requires a complete dump of the 6.1 database and a +restore of the database in 6.2. +</para> +<para> +Note that the <command>pg_dump</command> and <command>pg_dumpall</command> utility from 6.2 should be used +to dump the 6.1 database. +</para> +</sect2> + +<sect2> +<title>Migration from version 1.<replaceable>x</> to version 6.2</title> + +<para> +Those migrating from earlier 1.* releases should first upgrade to 1.09 +because the COPY output format was improved from the 1.02 release. +</para> +</sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Bug Fixes +--------- +Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce) +Fix compile errors on overflow due to shifts, unsigned, and bad prototypes + from Solaris(Diab Jerius) +Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas) +Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas) +Catch non-functional delete attempts(Vadim) +Change time function names to be more consistent(Michael Reifenberg) +Check for zero divides(Michael Reifenberg) +Fix very old bug which made rows changed/inserted by a command + visible to the command itself (so we had multiple update of + updated rows, etc.)(Vadim) +Fix for SELECT null, 'fail' FROM pg_am (Patrick) +SELECT NULL as EMPTY_FIELD now allowed(Patrick) +Remove un-needed signal stuff from contrib/pginterface +Fix OR (where x != 1 or x isnull didn't return rows with x NULL) (Vadim) +Fix time_cmp function (Vadim) +Fix handling of functions with non-attribute first argument in + WHERE clauses (Vadim) +Fix GROUP BY when order of entries is different from order + in target list (Vadim) +Fix pg_dump for aggregates without sfunc1 (Vadim) + +Enhancements +------------ +Default genetic optimizer GEQO parameter is now 8(Bruce) +Allow use parameters in target list having aggregates in functions(Vadim) +Added JDBC driver as an interface(Adrian & Peter) +pg_password utility +Return number of rows inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim) +Triggers implemented with CREATE TRIGGER (SQL3)(Vadim) +SPI (Server Programming Interface) allows execution of queries inside + C-functions (Vadim) +NOT NULL implemented (SQL92)(Robson Paniago de Miranda) +Include reserved words for string handling, outer joins, and unions(Thomas) +Implement extended comments ("/* ... */") using exclusive states(Thomas) +Add "//" single-line comments(Bruce) +Remove some restrictions on characters in operator names(Thomas) +DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas) +Add text concatenation operator and function (SQL92)(Thomas) +Support WITH TIME ZONE syntax (SQL92)(Thomas) +Support INTERVAL unit TO unit syntax (SQL92)(Thomas) +Define types DOUBLE PRECISION, INTERVAL, CHARACTER, + and CHARACTER VARYING (SQL92)(Thomas) +Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas) +Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas) +Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas) +Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas) +Add more reserved words, mostly for SQL92 compliance(Thomas) +Allow hh:mm:ss time entry for timespan/reltime types(Thomas) +Add center() routines for lseg, path, polygon(Thomas) +Add distance() routines for circle-polygon, polygon-polygon(Thomas) +Check explicitly for points and polygons contained within polygons + using an axis-crossing algorithm(Thomas) +Add routine to convert circle-box(Thomas) +Merge conflicting operators for different geometric data types(Thomas) +Replace distance operator "<===>" with "<->"(Thomas) +Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas) +Add routines for text trimming on both ends, substring, and string position(Thomas) +Added conversion routines circle(box) and poly(circle)(Thomas) +Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim) +Allow functions and operators on internally-identical types to succeed(Bruce) +Speed up backend start-up after profiling analysis(Bruce) +Inline frequently called functions for performance(Bruce) +Reduce open() calls(Bruce) +psql: Add PAGER for \h and \?,\C fix +Fix for psql pager when no tty(Bruce) +New entab utility(Bruce) +General trigger functions for referential integrity (Vadim) +General trigger functions for time travel (Vadim) +General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim) +MOVE implementation (Vadim) + +Source Tree Changes +------------------- +HP-UX 10 patches (Vladimir Turin) +Added SCO support, (Daniel Harris) +MkLinux patches (Tatsuo Ishii) +Change geometric box terminology from "length" to "width"(Thomas) +Deprecate temporary unstored slope fields in geometric code(Thomas) +Remove restart instructions from INSTALL(Bruce) +Look in /usr/ucb first for install(Bruce) +Fix c++ copy example code(Thomas) +Add -o to psql manual page(Bruce) +Prevent relname unallocated string length from being copied into database(Bruce) +Cleanup for NAMEDATALEN use(Bruce) +Fix pg_proc names over 15 chars in output(Bruce) +Add strNcpy() function(Bruce) +remove some (void) casts that are unnecessary(Bruce) +new interfaces directory(Marc) +Replace fopen() calls with calls to fd.c functions(Bruce) +Make functions static where possible(Bruce) +enclose unused functions in #ifdef NOT_USED(Bruce) +Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas) +Changes for Digital Unix +Portability fix for pg_dumpall(Bruce) +Rename pg_attribute.attnvals to attdispersion(Bruce) +"intro/unix" manual page now "pgintro"(Bruce) +"built-in" manual page now "pgbuiltin"(Bruce) +"drop" manual page now "drop_table"(Bruce) +Add "create_trigger", "drop_trigger" manual pages(Thomas) +Add constraints regression test(Vadim & Thomas) +Add comments syntax regression test(Thomas) +Add PGINDENT and support program(Bruce) +Massive commit to run PGINDENT on all *.c and *.h files(Bruce) +Files moved to /src/tools directory(Bruce) +SPI and Trigger programming guides (Vadim & D'Arcy) +</programlisting> +</para> +</sect2> +</sect1> + +<sect1 id="release-6-1-1"> +<title>Release 6.1.1</title> + + <note> + <title>Release date</title> + <simpara>1997-07-22</simpara> + </note> + +<sect2> +<title>Migration from version 6.1 to version 6.1.1</title> + +<para> +This is a minor bug-fix release. A dump/reload is not required from version 6.1, +but is required from any release prior to 6.1. +Refer to the release notes for 6.1 for more details. +</para> +</sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +fix for SET with options (Thomas) +allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce) +new psql \connect option allows changing usernames without changing databases +fix for initdb --debug option(Yoshihiko Ichikawa)) +lextest cleanup(Bruce) +hash fixes(Vadim) +fix date/time month boundary arithmetic(Thomas) +fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo) +timestamp overhauled to use standard functions(Thomas) +other code cleanup in date/time routines(Thomas) +psql's \d now case-insensitive(Bruce) +psql's backslash commands can now have trailing semicolon(Bruce) +fix memory leak in psql when using \g(Bruce) +major fix for endian handling of communication to server(Thomas, Tatsuo) +Fix for Solaris assembler and include files(Yoshihiko Ichikawa) +allow underscores in usernames(Bruce) +pg_dumpall now returns proper status, portability fix(Bruce) + </programlisting> + </para> + </sect2> + </sect1> + +<sect1 id="release-6-1"> +<title>Release 6.1</title> + + <note> + <title>Release date</title> + <simpara>1997-06-08</simpara> + </note> + +<para> + The regression tests have been adapted and extensively modified for the + 6.1 release of <productname>PostgreSQL</productname>. +</para> + +<para> + Three new data types (<type>datetime</type>, <type>timespan</type>, and <type>circle</type>) have been added to + the native set of <productname>PostgreSQL</productname> types. Points, boxes, paths, and polygons + have had their output formats made consistent across the data types. + The polygon output in misc.out has only been spot-checked for correctness + relative to the original regression output. +</para> + +<para> + <productname>PostgreSQL</productname> 6.1 introduces a new, alternate +optimizer which uses <firstterm>genetic</firstterm> + algorithms. These algorithms introduce a random behavior in the ordering + of query results when the query contains multiple qualifiers or multiple + tables (giving the optimizer a choice on order of evaluation). Several + regression tests have been modified to explicitly order the results, and + hence are insensitive to optimizer choices. A few regression tests are + for data types which are inherently unordered (e.g. points and time + intervals) and tests involving those types are explicitly bracketed with + <command>set geqo to 'off'</command> and <command>reset geqo</command>. +</para> + +<para> + The interpretation of array specifiers (the curly braces around atomic + values) appears to have changed sometime after the original regression + tests were generated. The current <filename>./expected/*.out</filename> files reflect this + new interpretation, which might not be correct! +</para> + +<para> + The float8 regression test fails on at least some platforms. This is due + to differences in implementations of <function>pow()</function> and <function>exp()</function> and the signaling + mechanisms used for overflow and underflow conditions. +</para> + +<para> + The <quote>random</> results in the random test should cause the + <quote>random</quote> test to be <quote>failed</quote>, since the + regression tests are evaluated using a simple diff. However, + <quote>random</> does not seem to produce random results on my test + machine (Linux/<application>gcc</>/i686). +</para> + +<sect2> +<title>Migration to Version 6.1</title> + +<para> +This migration requires a complete dump of the 6.0 database and a +restore of the database in 6.1. +</para> +<para> +Those migrating from earlier 1.* releases should first upgrade to 1.09 +because the COPY output format was improved from the 1.02 release. +</para> +</sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Bug Fixes +--------- +packet length checking in library routines +lock manager priority patch +check for under/over flow of float8(Bruce) +multitable join fix(Vadim) +SIGPIPE crash fix(Darren) +large object fixes(Sven) +allow btree indexes to handle NULLs(Vadim) +timezone fixes(D'Arcy) +select SUM(x) can return NULL on no rows(Thomas) +internal optimizer, executor bug fixes(Vadim) +fix problem where inner loop in < or <= has no rows(Vadim) +prevent re-commuting join index clauses(Vadim) +fix join clauses for multiple tables(Vadim) +fix hash, hashjoin for arrays(Vadim) +fix btree for abstime type(Vadim) +large object fixes(Raymond) +fix buffer leak in hash indexes (Vadim) +fix rtree for use in inner scan (Vadim) +fix gist for use in inner scan, cleanups (Vadim, Andrea) +avoid unnecessary local buffers allocation (Vadim, Massimo) +fix local buffers leak in transaction aborts (Vadim) +fix file manager memmory leaks, cleanups (Vadim, Massimo) +fix storage manager memmory leaks (Vadim) +fix btree duplicates handling (Vadim) +fix deleted rows reincarnation caused by vacuum (Vadim) +fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce) +many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor) + +Enhancements +------------ +attribute optimization statistics(Bruce) +much faster new btree bulk load code(Paul) +BTREE UNIQUE added to bulk load code(Vadim) +new lock debug code(Massimo) +massive changes to libpg++(Leo) +new GEQO optimizer speeds table multitable optimization(Martin) +new WARN message for non-unique insert into unique key(Marc) +update x=-3, no spaces, now valid(Bruce) +remove case-sensitive identifier handling(Bruce,Thomas,Dan) +debug backend now pretty-prints tree(Darren) +new Oracle character functions(Edmund) +new plaintext password functions(Dan) +no such class or insufficient privilege changed to distinct messages(Dan) +new ANSI timestamp function(Dan) +new ANSI Time and Date types (Thomas) +move large chunks of data in backend(Martin) +multicolumn btree indexes(Vadim) +new SET var TO value command(Martin) +update transaction status on reads(Dan) +new locale settings for character types(Oleg) +new SEQUENCE serial number generator(Vadim) +GROUP BY function now possible(Vadim) +re-organize regression test(Thomas,Marc) +new optimizer operation weights(Vadim) +new psql \z grant/permit option(Marc) +new MONEY data type(D'Arcy,Thomas) +tcp socket communication speed improved(Vadim) +new VACUUM option for attribute statistics, and for certain columns (Vadim) +many geometric type improvements(Thomas,Keith) +additional regression tests(Thomas) +new datestyle variable(Thomas,Vadim,Martin) +more comparison operators for sorting types(Thomas) +new conversion functions(Thomas) +new more compact btree format(Vadim) +allow pg_dumpall to preserve database ownership(Bruce) +new SET GEQO=# and R_PLANS variable(Vadim) +old (!GEQO) optimizer can use right-sided plans (Vadim) +typechecking improvement in SQL parser(Bruce) +new SET, SHOW, RESET commands(Thomas,Vadim) +new \connect database USER option +new destroydb -i option (Igor) +new \dt and \di psql commands (Darren) +SELECT "\n" now escapes newline (A. Duursma) +new geometry conversion functions from old format (Thomas) + +Source tree changes +------------------- +new configuration script(Marc) +readline configuration option added(Marc) +OS-specific configuration options removed(Marc) +new OS-specific template files(Marc) +no more need to edit Makefile.global(Marc) +re-arrange include files(Marc) +nextstep patches (Gregor Hoffleit) +removed Windows-specific code(Bruce) +removed postmaster -e option, now only postgres -e option (Bruce) +merge duplicate library code in front/backends(Martin) +now works with eBones, international Kerberos(Jun) +more shared library support +c++ include file cleanup(Bruce) +warn about buggy flex(Bruce) +DG/UX, Ultrix, IRIX, AIX portability fixes +</programlisting> +</para> +</sect2> +</sect1> + +<sect1 id="release-6-0"> +<title>Release 6.0</title> + + <note> + <title>Release date</title> + <simpara>1997-01-29</simpara> + </note> + +<para> +A dump/restore is required for those wishing to migrate data from +previous releases of <productname>PostgreSQL</productname>. +</para> + +<sect2> +<title>Migration from version 1.09 to version 6.0</title> + +<para> +This migration requires a complete dump of the 1.09 database and a +restore of the database in 6.0. +</para> +</sect2> + +<sect2> +<title>Migration from pre-1.09 to version 6.0</title> + +<para> +Those migrating from earlier 1.* releases should first upgrade to 1.09 +because the COPY output format was improved from the 1.02 release. +</para> +</sect2> + + <sect2> + <title>Changes</title> + + <para> + <programlisting> +Bug Fixes +--------- +ALTER TABLE bug - running postgres process needs to re-read table definition +Allow vacuum to be run on one table or entire database(Bruce) +Array fixes +Fix array over-runs of memory writes(Kurt) +Fix elusive btree range/non-range bug(Dan) +Fix for hash indexes on some types like time and date +Fix for pg_log size explosion +Fix permissions on lo_export()(Bruce) +Fix uninitialized reads of memory(Kurt) +Fixed ALTER TABLE ... char(3) bug(Bruce) +Fixed a few small memory leaks +Fixed EXPLAIN handling of options and changed full_path option name +Fixed output of group acl privileges +Memory leaks (hunt and destroy with tools like Purify(Kurt) +Minor improvements to rules system +NOTIFY fixes +New asserts for run-checking +Overhauled parser/analyze code to properly report errors and increase speed +Pg_dump -d now handles NULL's properly(Bruce) +Prevent SELECT NULL from crashing server (Bruce) +Properly report errors when INSERT ... SELECT columns did not match +Properly report errors when insert column names were not correct +psql \g filename now works(Bruce) +psql fixed problem with multiple statements on one line with multiple outputs +Removed duplicate system OIDs +SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce) +Several fixes for queries that crashed the backend +Starting quote in insert string errors(Bruce) +Submitting an empty query now returns empty status, not just " " query(Bruce) + +Enhancements +------------ +Add EXPLAIN manual page(Bruce) +Add UNIQUE index capability(Dan) +Add hostname/user level access control rather than just hostname and user +Add synonym of != for <>(Bruce) +Allow "select oid,* from table" +Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce) +Allow COPY from the frontend(Bryan) +Allow GROUP BY to use alias column name(Bruce) +Allow actual compression, not just reuse on the same page(Vadim) +Allow installation-configuration option to auto-add all local users(Bryan) +Allow libpq to distinguish between text value '' and null(Bruce) +Allow non-postgres users with createdb privs to destroydb's +Allow restriction on who can create C functions(Bryan) +Allow restriction on who can do backend COPY(Bryan) +Can shrink tables, pg_time and pg_log(Vadim & Erich) +Change debug level 2 to print queries only, changed debug heading layout(Bruce) +Change default decimal constant representation from float4 to float8(Bruce) +European date format now set when postmaster is started +Execute lowercase function names if not found with exact case +Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z' +Gist now included in the distribution(Marc) +Idend authentication of local users(Bryan) +Implement BETWEEN qualifier(Bruce) +Implement IN qualifier(Bruce) +libpq has PQgetisnull()(Bruce) +libpq++ improvements +New options to initdb(Bryan) +Pg_dump allow dump of OIDs(Bruce) +Pg_dump create indexes after tables are loaded for speed(Bruce) +Pg_dumpall dumps all databases, and the user table +Pginterface additions for NULL values(Bruce) +Prevent postmaster from being run as root +psql \h and \? is now readable(Bruce) +psql allow backslashed, semicolons anywhere on the line(Bruce) +psql changed command prompt for lines in query or in quotes(Bruce) +psql char(3) now displays as (bp)char in \d output(Bruce) +psql return code now more accurate(Bryan?) +psql updated help syntax(Bruce) +Re-visit and fix vacuum(Vadim) +Reduce size of regression diffs, remove timezone name difference(Bruce) +Remove compile-time parameters to enable binary distributions(Bryan) +Reverse meaning of HBA masks(Bryan) +Secure Authentication of local users(Bryan) +Speed up vacuum(Vadim) +Vacuum now had VERBOSE option(Bruce) + +Source tree changes +------------------- +All functions now have prototypes that are compared against the calls +Allow asserts to be disabled easily from Makefile.global(Bruce) +Change oid constants used in code to #define names +Decoupled sparc and solaris defines(Kurt) +Gcc -Wall compiles cleanly with warnings only from unfixable constructs +Major include file reorganization/reduction(Marc) +Make now stops on compile failure(Bryan) +Makefile restructuring(Bryan, Marc) +Merge bsdi_2_1 to bsdi(Bruce) +Monitor program removed +Name change from Postgres95 to PostgreSQL +New config.h file(Marc, Bryan) +PG_VERSION now set to 6.0 and used by postmaster +Portability additions, including Ultrix, DG/UX, AIX, and Solaris +Reduced the number of #define's, centralized #define's +Remove duplicate OIDS in system tables(Dan) +Remove duplicate system catalog info or report mismatches(Dan) +Removed many os-specific #define's +Restructured object file generation/location(Bryan, Marc) +Restructured port-specific file locations(Bryan, Marc) +Unused/uninitialized variables corrected +</programlisting> +</para> +</sect2> +</sect1> + +<sect1 id="release-1-09"> +<title>Release 1.09</title> + + <note> + <title>Release date</title> + <simpara>1996-11-04</simpara> + </note> + +<para> +Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of +the changes listed in 6.0 were actually included in the 1.02.1 to 1.09 +releases. +</para> +</sect1> + +<sect1 id="release-1-02"> +<title>Release 1.02</title> + + <note> + <title>Release date</title> + <simpara>1996-08-01</simpara> + </note> + +<sect2> +<title>Migration from version 1.02 to version 1.02.1</title> + +<para> +Here is a new migration file for 1.02.1. It includes the 'copy' change +and a script to convert old <acronym>ASCII</acronym> files. +</para> +<note> +<para> +The following notes are for the benefit of users who want to migrate +databases from <productname>Postgres95</> 1.01 and 1.02 to <productname>Postgres95</> 1.02.1. +</para> +<para> +If you are starting afresh with <productname>Postgres95</> 1.02.1 and do not need +to migrate old databases, you do not need to read any further. +</para> +</note> + +<para> +In order to upgrade older <productname>Postgres95</> version 1.01 or 1.02 databases to +version 1.02.1, the following steps are required: +</para> +<procedure> +<step> +<para> +Start up a new 1.02.1 postmaster +</para> +</step> +<step> +<para> +Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02 + databases. This is done by running the new 1.02.1 server against + your own 1.01 or 1.02 database and applying the queries attached at + the end of the file. This can be done easily through <command>psql</>. If your + 1.01 or 1.02 database is named <literal>testdb</literal> and you have cut the commands + from the end of this file and saved them in <filename>addfunc.sql</filename>: +<programlisting> + % psql testdb -f addfunc.sql +</programlisting> + +Those upgrading 1.02 databases will get a warning when executing the +last two statements in the file because they are already present in 1.02. This is +not a cause for concern. +</para> +</step> +</procedure> +</sect2> + +<sect2> +<title>Dump/Reload Procedure</title> + +<para> +If you are trying to reload a pg_dump or text-mode, <literal>copy tablename to +stdout</literal> generated with a previous version, you will need to run the +attached <command>sed</command> script on the ASCII file before loading it into the +database. The old format used '.' as end-of-data, while '\.' is now the +end-of-data marker. Also, empty strings are now loaded in as '' rather +than NULL. See the copy manual page for full details. + +<programlisting> + sed 's/^\.$/\\./g' <in_file >out_file +</programlisting> +</para> +<para> +If you are loading an older binary copy or non-<systemitem>stdout</> copy, there is no +end-of-data character, and hence no conversion necessary. + +<programlisting> +-- following lines added by agc to reflect the case-insensitive +-- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1) +create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq); +create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne); +create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq); +create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne); +</programlisting> +</para> +</sect2> + +<sect2> +<title>Changes</title> + +<para> +<programlisting> +Source code maintenance and development + * worldwide team of volunteers + * the source tree now in CVS at ftp.ki.net + +Enhancements + * psql (and underlying libpq library) now has many more options for + formatting output, including HTML + * pg_dump now output the schema and/or the data, with many fixes to + enhance completeness. + * psql used in place of monitor in administration shell scripts. + monitor to be deprecated in next release. + * date/time functions enhanced + * NULL insert/update/comparison fixed/enhanced + * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1 + +Bug Fixes (almost too numerous to mention) + * indexes + * storage management + * check for NULL pointer before dereferencing + * Makefile fixes + +New Ports + * added SolarisX86 port + * added BSD/OS 2.1 port + * added DG/UX port +</programlisting> +</para> +<!-- +Contributors (apologies to any missed) + * Kurt J. Lidl <lidl@va.pubnix.com> + (missed in first run, but no less important) + * Erich Stamberger <eberger@gewi.kfunigraz.ac.at> + * Jason Wright <jason@shiloh.vnet.net> + * Cees de Groot <C.deGroot@inter.NL.net> + * ernst.molitor@uni-bonn.de + * michael.siebenborn@ae3.Hypo.DE (Michael Siebenborn (6929)) + * Brian E. Gallew <geek+@cmu.edu> + * Vadim B. Mikheev <vadim@sable.krasnoyarsk.su> + * Adam Sussman <myddryn@vidya.com> + * Chris Dunlop <chris@onthe.net.au> + * Marc G. Fournier <scrappy@ki.net> + * Dan McGuirk <mcguirk@indirect.com> + * Dr_George_D_Detlefsen <drgeorge@ilt.com> + * Erich Stamberger <eberger@gewi.kfunigraz.ac.at> + * Massimo Dal Zotto <dz@cs.unitn.it> + * Randy Kunkee <kunkee@Starbase.NeoSoft.COM> + * Rick Weldon <rick@wisetech.com> + * Thomas van Reimersdahl <reimersd@dali.techinfo.rwth-aachen.de> + * david bennett <dave@bensoft.com> + * ernst.molitor@uni-bonn.de + * Julian Assange <proff@suburbia.net> + * Bruce Momjian <pgman@candle.pha.pa.us> + * Paul "Shag" Walmsley <ccshag@cclabs.missouri.edu> + * "Alistair G. Crooks" <azcb0@sde.uts.amdahl.com> +--> +</sect2> +</sect1> + +<sect1 id="release-1-01"> +<title>Release 1.01</title> + + <note> + <title>Release date</title> + <simpara>1996-02-23</simpara> + </note> + + +<sect2> +<title>Migration from version 1.0 to version 1.01</title> + +<para> +The following notes are for the benefit of users who want to migrate +databases from <productname>Postgres95</> 1.0 to <productname>Postgres95</> 1.01. +</para> +<para> +If you are starting afresh with <productname>Postgres95</> 1.01 and do not need +to migrate old databases, you do not need to read any further. +</para> +<para> +In order to <productname>Postgres95</> version 1.01 with databases created with +<productname>Postgres95</> version 1.0, the following steps are required: +</para> +<procedure> +<step> +<para> +Set the definition of <symbol>NAMEDATALEN</symbol> in <filename>src/Makefile.global</filename> to 16 + and <symbol>OIDNAMELEN</symbol> to 20. +</para> +</step> +<step> +<para> +Decide whether you want to use Host based authentication. +</para> +<substeps> +<step> +<para> +If you do, you must create a file name <literal>pg_hba</literal> in your top-level data + directory (typically the value of your <envar>$PGDATA</envar>). <filename>src/libpq/pg_hba</filename> + shows an example syntax. +</para> +</step> +<step> +<para> +If you do not want host-based authentication, you can comment out + the line: +<programlisting> + HBA = 1 +</programlisting> + in <filename>src/Makefile.global</filename> +</para> +<para> + Note that host-based authentication is turned on by default, and if + you do not take steps A or B above, the out-of-the-box 1.01 will + not allow you to connect to 1.0 databases. +</para> +</step> +</substeps> +</step> + +<step> +<para> +Compile and install 1.01, but DO NOT do the <command>initdb</command> step. +</para> +</step> +<step> +<para> +Before doing anything else, terminate your 1.0 postmaster, and + backup your existing <envar>$PGDATA</envar> directory. +</para> +</step> +<step> +<para> +Set your <envar>PGDATA</envar> environment variable to your 1.0 databases, but set up + path up so that 1.01 binaries are being used. +</para> +</step> +<step> +<para> +Modify the file <filename><envar>$PGDATA</envar>/PG_VERSION</filename> from 5.0 to 5.1 +</para> +</step> +<step> +<para> +Start up a new 1.01 postmaster +</para> +</step> +<step> +<para> +Add the new built-in functions and operators of 1.01 to 1.0 + databases. This is done by running the new 1.01 server against + your own 1.0 database and applying the queries attached and saving + in the file 1.0_to_1.01.sql. This can be done easily through <command>psql</command>. + If your 1.0 database is name <literal>testdb</literal>: + +<programlisting> + % psql testdb -f 1.0_to_1.01.sql +</programlisting> + +and then execute the following commands (cut and paste from here): + +<programlisting> +-- add builtin functions that are new to 1.01 + +create function int4eqoid (int4, oid) returns bool as 'foo' +language 'internal'; +create function oideqint4 (oid, int4) returns bool as 'foo' +language 'internal'; +create function char2icregexeq (char2, text) returns bool as 'foo' +language 'internal'; +create function char2icregexne (char2, text) returns bool as 'foo' +language 'internal'; +create function char4icregexeq (char4, text) returns bool as 'foo' +language 'internal'; +create function char4icregexne (char4, text) returns bool as 'foo' +language 'internal'; +create function char8icregexeq (char8, text) returns bool as 'foo' +language 'internal'; +create function char8icregexne (char8, text) returns bool as 'foo' +language 'internal'; +create function char16icregexeq (char16, text) returns bool as 'foo' +language 'internal'; +create function char16icregexne (char16, text) returns bool as 'foo' +language 'internal'; +create function texticregexeq (text, text) returns bool as 'foo' +language 'internal'; +create function texticregexne (text, text) returns bool as 'foo' +language 'internal'; + +-- add builtin functions that are new to 1.01 + +create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid); +create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4); +create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq); +create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne); +create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq); +create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne); +create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq); +create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne); +create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq); +create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne); +create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq); +create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne); +</programlisting> +</para> +</step> +</procedure> +</sect2> + +<sect2> +<title>Changes</title> + +<para> +<programlisting> +Incompatibilities: + * 1.01 is backwards compatible with 1.0 database provided the user + follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file. + If those steps are not taken, 1.01 is not compatible with 1.0 database. + +Enhancements: + * added PQdisplayTuples() to libpq and changed monitor and psql to use it + * added NeXT port (requires SysVIPC implementation) + * added CAST .. AS ... syntax + * added ASC and DESC key words + * added 'internal' as a possible language for CREATE FUNCTION + internal functions are C functions which have been statically linked + into the postgres backend. + * a new type "name" has been added for system identifiers (table names, + attribute names, etc.) This replaces the old char16 type. The + of name is set by the NAMEDATALEN #define in src/Makefile.global + * a readable reference manual that describes the query language. + * added host-based access control. A configuration file ($PGDATA/pg_hba) + is used to hold the configuration data. If host-based access control + is not desired, comment out HBA=1 in src/Makefile.global. + * changed regex handling to be uniform use of Henry Spencer's regex code + regardless of platform. The regex code is included in the distribution + * added functions and operators for case-insensitive regular expressions. + The operators are ~* and !~*. + * pg_dump uses COPY instead of SELECT loop for better performance + +Bug fixes: + * fixed an optimizer bug that was causing core dumps when + functions calls were used in comparisons in the WHERE clause + * changed all uses of getuid to geteuid so that effective uids are used + * psql now returns non-zero status on errors when using -c + * applied public patches 1-14 +</programlisting> +</para> +</sect2> +</sect1> + +<sect1 id="release-1-0"> +<title>Release 1.0</title> + + <note> + <title>Release date</title> + <simpara>1995-09-05</simpara> + </note> + +<sect2> +<title>Changes</title> + +<para> +<programlisting> +Copyright change: + * The copyright of <productname>Postgres</productname> 1.0 has been loosened to be freely modifiable + and modifiable for any purpose. Please read the COPYRIGHT file. + Thanks to Professor Michael Stonebraker for making this possible. + +Incompatibilities: + * date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using + EUROPEAN STYLE). This follows SQL-92 specs. + * "delimiters" is now a key word + +Enhancements: + * sql LIKE syntax has been added + * copy command now takes an optional USING DELIMITER specification. + delimiters can be any single-character string. + * IRIX 5.3 port has been added. + Thanks to Paul Walmsley and others. + * updated pg_dump to work with new libpq + * \d has been added psql + Thanks to Keith Parks + * regexp performance for architectures that use POSIX regex has been + improved due to caching of precompiled patterns. + Thanks to Alistair Crooks + * a new version of libpq++ + Thanks to William Wanders + +Bug fixes: + * arbitrary userids can be specified in the createuser script + * \c to connect to other databases in psql now works. + * bad pg_proc entry for float4inc() is fixed + * users with usecreatedb field set can now create databases without + having to be usesuper + * remove access control entries when the entry no longer has any + privileges + * fixed non-portable datetimes implementation + * added kerberos flags to the src/backend/Makefile + * libpq now works with kerberos + * typographic errors in the user manual have been corrected. + * btrees with multiple index never worked, now we tell you they don't + work when you try to use them +</programlisting> +</para> +</sect2> +</sect1> + +<sect1 id="release-0-03"> +<title><productname>Postgres95</productname> Release 0.03</title> + + <note> + <title>Release date</title> + <simpara>1995-07-21</simpara> + </note> + +<sect2> +<title>Changes</title> +<para> +<programlisting> +Incompatible changes: + * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS + (due to system catalog changes and indexing structure changes). + * double-quote (") is deprecated as a quoting character for string literals; + you need to convert them to single quotes ('). <!-- " --> + * name of aggregates (eg. int4sum) are renamed in accordance with the + SQL standard (eg. sum). + * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax. + * float literals (eg. 3.14) are now of type float4 (instead of float8 in + previous releases); you might have to do typecasting if you depend on it + being of type float8. If you neglect to do the typecasting and you assign + a float literal to a field of type float8, you might get incorrect values + stored! + * LIBPQ has been totally revamped so that frontend applications + can connect to multiple backends + * the usesysid field in pg_user has been changed from int2 to int4 to + allow wider range of Unix user ids. + * the netbsd/freebsd/bsd o/s ports have been consolidated into a + single BSD44_derived port. (thanks to Alistair Crooks) + +SQL standard-compliance (the following details changes that makes postgres95 +more compliant to the SQL-92 standard): + * the following SQL types are now built-in: smallint, int(eger), float, real, + char(N), varchar(N), date and time. + + The following are aliases to existing postgres types: + smallint -> int2 + integer, int -> int4 + float, real -> float4 + char(N) and varchar(N) are implemented as truncated text types. In + addition, char(N) does blank-padding. + * single-quote (') is used for quoting string literals; '' (in addition to + \') is supported as means of inserting a single quote in a string + * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used + (Also, aggregates can now be overloaded, i.e. you can define your + own MAX aggregate to take in a user-defined type.) + * CHANGE ACL removed. GRANT/REVOKE syntax added. + - Privileges can be given to a group using the "GROUP" key word. + For example: + GRANT SELECT ON foobar TO GROUP my_group; + The key word 'PUBLIC' is also supported to mean all users. + + Privileges can only be granted or revoked to one user or group + at a time. + + "WITH GRANT OPTION" is not supported. Only class owners can change + access control + - The default access control is to grant users readonly access. + You must explicitly grant insert/update access to users. To change + this, modify the line in + src/backend/utils/acl.h + that defines ACL_WORLD_DEFAULT + +Bug fixes: + * the bug where aggregates of empty tables were not run has been fixed. Now, + aggregates run on empty tables will return the initial conditions of the + aggregates. Thus, COUNT of an empty table will now properly return 0. + MAX/MIN of an empty table will return a row of value NULL. + * allow the use of \; inside the monitor + * the LISTEN/NOTIFY asynchronous notification mechanism now work + * NOTIFY in rule action bodies now work + * hash indexes work, and access methods in general should perform better. + creation of large btree indexes should be much faster. (thanks to Paul + Aoki) + +Other changes and enhancements: + * addition of an EXPLAIN statement used for explaining the query execution + plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for + the query). + * WARN and NOTICE messages no longer have timestamps on them. To turn on + timestamps of error messages, uncomment the line in + src/backend/utils/elog.h: + /* define ELOG_TIMESTAMPS */ + * On an access control violation, the message + "Either no such class or insufficient privilege" + will be given. This is the same message that is returned when + a class is not found. This dissuades non-privileged users from + guessing the existence of privileged classes. + * some additional system catalog changes have been made that are not + visible to the user. + +libpgtcl changes: + * The -oid option has been added to the "pg_result" tcl command. + pg_result -oid returns oid of the last row inserted. If the + last command was not an INSERT, then pg_result -oid returns "". + * the large object interface is available as pg_lo* tcl commands: + pg_lo_open, pg_lo_close, pg_lo_creat, etc. + +Portability enhancements and New Ports: + * flex/lex problems have been cleared up. Now, you should be able to use + flex instead of lex on any platforms. We no longer make assumptions of + what lexer you use based on the platform you use. + * The Linux-ELF port is now supported. Various configuration have been + tested: The following configuration is known to work: + kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24 + with everything in ELF format, + +New utilities: + * ipcclean added to the distribution + ipcclean usually does not need to be run, but if your backend crashes + and leaves shared memory segments hanging around, ipcclean will + clean them up for you. + +New documentation: + * the user manual has been revised and libpq documentation added. +</programlisting> +</para> +</sect2> +</sect1> + +<sect1 id="release-0-02"> +<title><productname>Postgres95</productname> Release 0.02</title> + + <note> + <title>Release date</title> + <simpara>1995-05-25</simpara> + </note> + +<sect2> +<title>Changes</title> + +<para> +<programlisting> +Incompatible changes: + * The SQL statement for creating a database is 'CREATE DATABASE' instead + of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead + of 'DESTROYDB'. However, the names of the executables 'createdb' and + 'destroydb' remain the same. + +New tools: + * pgperl - a Perl (4.036) interface to Postgres95 + * pg_dump - a utility for dumping out a postgres database into a + script file containing query commands. The script files are in a ASCII + format and can be used to reconstruct the database, even on other + machines and other architectures. (Also good for converting + a Postgres 4.2 database to Postgres95 database.) + +The following ports have been incorporated into postgres95-beta-0.02: + * the NetBSD port by Alistair Crooks + * the AIX port by Mike Tung + * the Windows NT port by Jon Forrest (more stuff but not done yet) + * the Linux ELF port by Brian Gallew + +The following bugs have been fixed in postgres95-beta-0.02: + * new lines not escaped in COPY OUT and problem with COPY OUT when first + attribute is a '.' + * cannot type return to use the default user id in createuser + * SELECT DISTINCT on big tables crashes + * Linux installation problems + * monitor doesn't allow use of 'localhost' as PGHOST + * psql core dumps when doing \c or \l + * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile + * libpgtcl has a hard-wired default port number + * SELECT DISTINCT INTO TABLE hangs + * CREATE TYPE doesn't accept 'variable' as the internallength + * wrong result using more than 1 aggregate in a SELECT +</programlisting> +</para> +</sect2> +</sect1> + +<sect1 id="release-0-01"> +<title><productname>Postgres95</productname> Release 0.01</title> + + <note> + <title>Release date</title> + <simpara>1995-05-01</simpara> + </note> + +<para> +Initial release. +</para> +</sect1> + +<![IGNORE[ + <sect1 id="timing-results"> + <title>Timing Results</title> + + <para> + These timing results are from running the regression test with the commands + + <programlisting> +% cd src/test/regress +% make all +% time make runtest + </programlisting> + </para> + <para> + Timing under Linux 2.0.27 seems to have a roughly 5% variation from run + to run, presumably due to the scheduling vagaries of multitasking systems. + </para> + + <sect2> + <title>Version 6.5</title> + + <para> + As has been the case for previous releases, timing between + releases is not directly comparable since new regression tests + have been added. In general, 6.5 is faster than previous + releases. + </para> + + <para> + Timing with <function>fsync()</function> disabled: + + <programlisting> + Time System + 02:00 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486 + 04:38 Sparc Ultra 1 143MHz, 64MB, Solaris 2.6 + </programlisting> + </para> + + <para> + Timing with <function>fsync()</function> enabled: + + <programlisting> + Time System + 04:21 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486 + </programlisting> + + For the <systemitem class="osname">Linux</systemitem> system above, using <acronym>UW-SCSI</acronym> disks rather than (older) <acronym>IDE</acronym> + disks leads to a 50% improvement in speed on the regression test. + </para> + </sect2> + +<sect2> +<title>Version 6.4beta</title> + +<para> +The times for this release are not directly comparable to those for previous releases +since some additional regression tests have been included. +In general, however, 6.4 should be slightly faster than the previous release (thanks, Bruce!). +</para> +<para> +<programlisting> + Time System + 02:26 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486 +</programlisting> +</para> +</sect2> + +<sect2> +<title>Version 6.3</title> + +<para> +The times for this release are not directly comparable to those for previous releases +since some additional regression tests have been included and some obsolete tests involving +time travel have been removed. +In general, however, 6.3 is substantially faster than previous releases (thanks, Bruce!). +</para> +<para> +<programlisting> + Time System + 02:30 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486 + 04:12 Dual Pentium Pro 180, 96MB, EIDE, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486 +</programlisting> +</para> +</sect2> + +<sect2> +<title>Version 6.1</title> + +<para> +<programlisting> + Time System + 06:12 Pentium Pro 180, 32MB, EIDE, Linux 2.0.30, gcc 2.7.2 -O2 -m486 + 12:06 P-100, 48MB, Linux 2.0.29, gcc + 39:58 Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O -g +</programlisting> +</para> +</sect2> +</sect1> +]]> diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 52e91fedc0e..12b25c3a132 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,15 +1,16 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.235.2.67 2009/03/12 22:36:46 tgl Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.235.2.68 2009/05/02 20:18:21 tgl Exp $ --> <!-- Typical markup: &<> use & escapes +PostgreSQL <productname> +postgresql.conf, pg_hba.conf <filename> [A-Z][A-Z ]+[A-Z] <command> [A-Za-z_][A-Za-z0-9_]+() <function> [A-Za-z_]/[A-Za-z_]+ <filename> -PostgreSQL <productname> pg_[A-Za-z0-9_] <application> -[A-Z][A-Z] <type>, <envar>, <literal> +[A-Z][A-Z][A-Z_ ]* <type>, <envar>, <literal> non-ASCII characters convert to HTML4 entity (&) escapes @@ -26,9 +27,8 @@ non-ASCII characters convert to HTML4 entity (&) escapes wrap long lines For new features, add links to the documentation sections. Use </link> -so that Perl can remove it so HISTORY.html can be created with no -links to the main documentation. This was added only in 8.2, so don't -do it for earlier branch release files. +not just </> so that generate_history.pl can remove it, so HISTORY.html +can be created without links to the main documentation. --> @@ -47,7 +47,7 @@ do it for earlier branch release files. <para> A complete list of changes for each release can be obtained by - viewing the CVS logs for each release. + viewing the <link linkend="cvs">CVS</link> logs for each release. The <ulink url="http://archives.postgresql.org/pgsql-committers/">pgsql-committers email list</ulink> records all source code changes as well. There is also @@ -63,10630 +63,14 @@ do it for earlier branch release files. review, so each item is truly a community effort. </para> - <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. - </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> - - <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> - Administrators can use the new table access statistics module - to get fine-grained information about table and index usage. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>Internationalization</term> - <listitem> - <para> - Program and library messages can now be displayed in several - languages. - </para> - </listitem> - </varlistentry> - - </variablelist> - </sect2> - - <sect2> - <title>Migration to Version 7.2</title> - - <para> - A dump/restore using <command>pg_dump</command> is required for - those wishing to migrate data from any previous release. - </para> - - <para> - Observe the following incompatibilities: - </para> - - <itemizedlist> - <listitem> - <para> - The semantics of the <command>VACUUM</command> command have - changed in this release. You might wish to update your - maintenance procedures accordingly. - </para> - </listitem> - - <listitem> - <para> - In this release, comparisons using <literal>= NULL</literal> - will always return false (or NULL, more precisely). Previous - releases automatically transformed this syntax to <literal>IS - NULL</literal>. The old behavior can be re-enabled using a - <filename>postgresql.conf</filename> parameter. - </para> - </listitem> - - <listitem> - <para> - The <filename>pg_hba.conf</> and <filename>pg_ident.conf</> - configuration is now only reloaded after receiving a - <systemitem>SIGHUP</> signal, not with each connection. - </para> - </listitem> - - <listitem> - <para> - The function <filename>octet_length()</> now returns the uncompressed data length. - </para> - </listitem> - - <listitem> - <para> - The date/time value <literal>'current'</literal> is no longer - available. You will need to rewrite your applications. - </para> - </listitem> - - <listitem> - <para> - The <literal>timestamp()</literal>, <literal>time()</literal>, - and <literal>interval()</literal> functions are no longer - available. Instead of <literal>timestamp()</literal>, use - <literal>timestamp 'string'</literal> or <literal>CAST</literal>. - </para> - </listitem> - - </itemizedlist> - - <para> - The <literal>SELECT ... LIMIT #,#</literal> syntax will be removed - in the next release. You should change your queries to use - separate LIMIT and OFFSET clauses, e.g. <literal>LIMIT 10 OFFSET - 20</literal>. - </para> - </sect2> - - <sect2> - <title>Changes</title> - - <sect3> - <title>Server Operation</title> -<itemizedlist> -<listitem><para>Create temporary files in a separate directory (Bruce)</para></listitem> -<listitem><para>Delete orphaned temporary files on postmaster startup (Bruce)</para></listitem> -<listitem><para>Added unique indexes to some system tables (Tom)</para></listitem> -<listitem><para>System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem> -<listitem><para>Renamed pg_log to pg_clog (Tom)</para></listitem> -<listitem><para>Enable SIGTERM, SIGQUIT to kill backends (Jan)</para></listitem> -<listitem><para>Removed compile-time limit on number of backends (Tom)</para></listitem> -<listitem><para>Better cleanup for semaphore resource failure (Tatsuo, Tom)</para></listitem> -<listitem><para>Allow safe transaction ID wraparound (Tom)</para></listitem> -<listitem><para>Removed OIDs from some system tables (Tom)</para></listitem> -<listitem><para>Removed "triggered data change violation" error check (Tom)</para></listitem> -<listitem><para>SPI portal creation of prepared/saved plans (Jan)</para></listitem> -<listitem><para>Allow SPI column functions to work for system columns (Tom)</para></listitem> -<listitem><para>Long value compression improvement (Tom)</para></listitem> -<listitem><para>Statistics collector for table, index access (Jan)</para></listitem> -<listitem><para>Truncate extra-long sequence names to a reasonable value (Tom)</para></listitem> -<listitem><para>Measure transaction times in milliseconds (Thomas)</para></listitem> -<listitem><para>Fix TID sequential scans (Hiroshi)</para></listitem> -<listitem><para>Superuser ID now fixed at 1 (Peter E)</para></listitem> -<listitem><para>New pg_ctl "reload" option (Tom)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Performance</title> -<itemizedlist> -<listitem><para>Optimizer improvements (Tom)</para></listitem> -<listitem><para>New histogram column statistics for optimizer (Tom)</para></listitem> -<listitem><para>Reuse write-ahead log files rather than discarding them (Tom)</para></listitem> -<listitem><para>Cache improvements (Tom)</para></listitem> -<listitem><para>IS NULL, IS NOT NULL optimizer improvement (Tom)</para></listitem> -<listitem><para>Improve lock manager to reduce lock contention (Tom)</para></listitem> -<listitem><para>Keep relcache entries for index access support functions (Tom)</para></listitem> -<listitem><para>Allow better selectivity with NaN and infinities in NUMERIC (Tom)</para></listitem> -<listitem><para>R-tree performance improvements (Kenneth Been)</para></listitem> -<listitem><para>B-tree splits more efficient (Tom)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Privileges</title> -<itemizedlist> -<listitem><para>Change UPDATE, DELETE privileges to be distinct (Peter E)</para></listitem> -<listitem><para>New REFERENCES, TRIGGER privileges (Peter E)</para></listitem> -<listitem><para>Allow GRANT/REVOKE to/from more than one user at a time (Peter E)</para></listitem> -<listitem><para>New has_table_privilege() function (Joe Conway)</para></listitem> -<listitem><para>Allow non-superuser to vacuum database (Tom)</para></listitem> -<listitem><para>New SET SESSION AUTHORIZATION command (Peter E)</para></listitem> -<listitem><para>Fix bug in privilege modifications on newly created tables (Tom)</para></listitem> -<listitem><para>Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Client Authentication</title> -<itemizedlist> -<listitem><para>Fork postmaster before doing authentication to prevent hangs (Peter E)</para></listitem> -<listitem><para>Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)</para></listitem> -<listitem><para>Add a password authentication method that uses MD5 encryption (Bruce)</para></listitem> -<listitem><para>Allow encryption of stored passwords using MD5 (Bruce)</para></listitem> -<listitem><para>PAM authentication (Dominic J. Eidson)</para></listitem> -<listitem><para>Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Server Configuration</title> -<itemizedlist> -<listitem><para>Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)</para></listitem> -<listitem><para>New parameter to set default transaction isolation level (Peter E)</para></listitem> -<listitem><para>New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)</para></listitem> -<listitem><para>New parameter to control memory usage by VACUUM (Tom)</para></listitem> -<listitem><para>New parameter to set client authentication timeout (Tom)</para></listitem> -<listitem><para>New parameter to set maximum number of open files (Tom)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Queries</title> -<itemizedlist> -<listitem><para>Statements added by INSERT rules now execute after the INSERT (Jan)</para></listitem> -<listitem><para>Prevent unadorned relation names in target list (Bruce)</para></listitem> -<listitem><para>NULLs now sort after all normal values in ORDER BY (Tom)</para></listitem> -<listitem><para>New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)</para></listitem> -<listitem><para>New SHARE UPDATE EXCLUSIVE lock mode (Tom)</para></listitem> -<listitem><para>New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)</para></listitem> -<listitem><para>Fix problem with LIMIT and subqueries (Tom)</para></listitem> -<listitem><para>Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)</para></listitem> -<listitem><para>Fix nested EXCEPT/INTERSECT (Tom)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Schema Manipulation</title> -<itemizedlist> -<listitem><para>Fix SERIAL in temporary tables (Bruce)</para></listitem> -<listitem><para>Allow temporary sequences (Bruce)</para></listitem> -<listitem><para>Sequences now use int8 internally (Tom)</para></listitem> -<listitem><para>New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)</para></listitem> -<listitem><para>Make OIDs optional using WITHOUT OIDS (Tom)</para></listitem> -<listitem><para>Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)</para></listitem> -<listitem><para>Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)</para></listitem> -<listitem><para>New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)</para></listitem> -<listitem><para>Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)</para></listitem> -<listitem><para>Allow column renaming in views</para></listitem> -<listitem><para>Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)</para></listitem> -<listitem><para>Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)</para></listitem> -<listitem><para>ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)</para></listitem> -<listitem><para>DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)</para></listitem> -<listitem><para>Add automatic return type data casting for SQL functions (Tom)</para></listitem> -<listitem><para>Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem> -<listitem><para>Enable partial indexes (Martijn van Oosterhout)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Utility Commands</title> -<itemizedlist> -<listitem><para>Add RESET ALL, SHOW ALL (Marko Kreen)</para></listitem> -<listitem><para>CREATE/ALTER USER/GROUP now allow options in any order (Vince)</para></listitem> -<listitem><para>Add LOCK A, B, C functionality (Neil Padgett)</para></listitem> -<listitem><para>New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)</para></listitem> -<listitem><para>New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)</para></listitem> -<listitem><para>Disable COPY TO/FROM on views (Bruce)</para></listitem> -<listitem><para>COPY DELIMITERS string must be exactly one character (Tom)</para></listitem> -<listitem><para>VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)</para></listitem> -<listitem><para>Fix privilege checks for CREATE INDEX (Tom)</para></listitem> -<listitem><para>Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Data Types and Functions</title> -<itemizedlist> -<listitem><para>SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)</para></listitem> -<listitem><para>Add convert(), convert2() (Tatsuo)</para></listitem> -<listitem><para>New function bit_length() (Peter E)</para></listitem> -<listitem><para>Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)</para></listitem> -<listitem><para>CHAR(), VARCHAR() now reject strings that are too long (Peter E)</para></listitem> -<listitem><para>BIT VARYING now rejects bit strings that are too long (Peter E)</para></listitem> -<listitem><para>BIT now rejects bit strings that do not match declared size (Peter E)</para></listitem> -<listitem><para>INET, CIDR text conversion functions (Alex Pilosov)</para></listitem> -<listitem><para>INET, CIDR operators << and <<= indexable (Alex Pilosov)</para></listitem> -<listitem><para>Bytea \### now requires valid three digit octal number</para></listitem> -<listitem><para>Bytea comparison improvements, now supports =, <>, >, >=, <, and <=</para></listitem> -<listitem><para>Bytea now supports B-tree indexes</para></listitem> -<listitem><para>Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE</para></listitem> -<listitem><para>Bytea now supports concatenation</para></listitem> -<listitem><para>New bytea functions: position, substring, trim, btrim, and length</para></listitem> -<listitem><para>New encode() function mode, "escaped", converts minimally escaped bytea to/from text</para></listitem> -<listitem><para>Add pg_database_encoding_max_length() (Tatsuo)</para></listitem> -<listitem><para>Add pg_client_encoding() function (Tatsuo)</para></listitem> -<listitem><para>now() returns time with millisecond precision (Thomas)</para></listitem> -<listitem><para>New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)</para></listitem> -<listitem><para>Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)</para></listitem> -<listitem><para>New xid/int comparison functions (Hiroshi)</para></listitem> -<listitem><para>Add precision to TIME, TIMESTAMP, and INTERVAL data types (Thomas)</para></listitem> -<listitem><para>Modify type coercion logic to attempt binary-compatible functions first (Tom)</para></listitem> -<listitem><para>New encode() function installed by default (Marko Kreen)</para></listitem> -<listitem><para>Improved to_*() conversion functions (Karel Zak)</para></listitem> -<listitem><para>Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)</para></listitem> -<listitem><para>New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)</para></listitem> -<listitem><para>Correct description of translate() function (Bruce)</para></listitem> -<listitem><para>Add INTERVAL argument for SET TIME ZONE (Thomas)</para></listitem> -<listitem><para>Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)</para></listitem> -<listitem><para>Optimize length functions when using single-byte encodings (Tatsuo)</para></listitem> -<listitem><para>Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)</para></listitem> -<listitem><para>octet_length(text) now returns non-compressed length (Tatsuo, Bruce)</para></listitem> -<listitem><para>Handle "July" full name in date/time literals (Greg Sabino Mullane)</para></listitem> -<listitem><para>Some datatype() function calls now evaluated differently</para></listitem> -<listitem><para>Add support for Julian and ISO time specifications (Thomas)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Internationalization</title> -<itemizedlist> -<listitem><para>National language support in psql, <application>pg_dump</>, libpq, and server (Peter E)</para></listitem> -<listitem><para>Message translations in Chinese (simplified, traditional), Czech, French, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, Karel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)</para></listitem> -<listitem><para>Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)</para></listitem> -<listitem><para>Add LATIN5,6,7,8,9,10 support (Tatsuo)</para></listitem> -<listitem><para>Add ISO 8859-5,6,7,8 support (Tatsuo)</para></listitem> -<listitem><para>Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)</para></listitem> -<listitem><para>Make mic2ascii() non-ASCII aware (Tatsuo)</para></listitem> -<listitem><para>Reject invalid multibyte character sequences (Tatsuo)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title><application>PL/pgSQL</></title> -<itemizedlist> -<listitem><para>Now uses portals for SELECT loops, allowing huge result sets (Jan)</para></listitem> -<listitem><para>CURSOR and REFCURSOR support (Jan)</para></listitem> -<listitem><para>Can now return open cursors (Jan)</para></listitem> -<listitem><para>Add ELSEIF (Klaus Reger)</para></listitem> -<listitem><para>Improve PL/pgSQL error reporting, including location of error (Tom)</para></listitem> -<listitem><para>Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)</para></listitem> -<listitem><para>Fix for SELECT ... FOR UPDATE (Tom)</para></listitem> -<listitem><para>Fix for PERFORM returning multiple rows (Tom)</para></listitem> -<listitem><para>Make PL/pgSQL use the server's type coercion code (Tom)</para></listitem> -<listitem><para>Memory leak fix (Jan, Tom)</para></listitem> -<listitem><para>Make trailing semicolon optional (Tom)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>PL/Perl</title> -<itemizedlist> -<listitem><para>New untrusted PL/Perl (Alex Pilosov)</para></listitem> -<listitem><para>PL/Perl is now built on some platforms even if libperl is not shared (Peter E)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>PL/Tcl</title> -<itemizedlist> -<listitem><para>Now reports errorInfo (Vsevolod Lobko)</para></listitem> -<listitem><para>Add spi_lastoid function (bob@redivi.com)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>PL/Python</title> -<itemizedlist> -<listitem><para>...is new (Andrew Bosma)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title><application>psql</></title> -<itemizedlist> -<listitem><para>\d displays indexes in unique, primary groupings (Christopher Kings-Lynne)</para></listitem> -<listitem><para>Allow trailing semicolons in backslash commands (Greg Sabino Mullane)</para></listitem> -<listitem><para>Read password from /dev/tty if possible</para></listitem> -<listitem><para>Force new password prompt when changing user and database (Tatsuo, Tom)</para></listitem> -<listitem><para>Format the correct number of columns for Unicode (Patrice)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title><application>libpq</></title> -<itemizedlist> -<listitem><para>New function PQescapeString() to escape quotes in command strings (Florian Weimer)</para></listitem> -<listitem><para>New function PQescapeBytea() escapes binary strings for use as SQL string literals</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>JDBC</title> -<itemizedlist> -<listitem><para>Return OID of INSERT (Ken K)</para></listitem> -<listitem><para>Handle more data types (Ken K)</para></listitem> -<listitem><para>Handle single quotes and newlines in strings (Ken K)</para></listitem> -<listitem><para>Handle NULL variables (Ken K)</para></listitem> -<listitem><para>Fix for time zone handling (Barry Lind)</para></listitem> -<listitem><para>Improved Druid support</para></listitem> -<listitem><para>Allow eight-bit characters with non-multibyte server (Barry Lind)</para></listitem> -<listitem><para>Support BIT, BINARY types (Ned Wolpert)</para></listitem> -<listitem><para>Reduce memory usage (Michael Stephens, Dave Cramer)</para></listitem> -<listitem><para>Update DatabaseMetaData (Peter E)</para></listitem> -<listitem><para>Add DatabaseMetaData.getCatalogs() (Peter E)</para></listitem> -<listitem><para>Encoding fixes (Anders Bengtsson)</para></listitem> -<listitem><para>Get/setCatalog methods (Jason Davies)</para></listitem> -<listitem><para>DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)</para></listitem> -<listitem><para>DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)</para></listitem> -<listitem><para>Some JDBC1 and JDBC2 merging (Anders Bengtsson)</para></listitem> -<listitem><para>Transaction performance improvements (Barry Lind)</para></listitem> -<listitem><para>Array fixes (Greg Zoller)</para></listitem> -<listitem><para>Serialize addition </para></listitem> -<listitem><para>Fix batch processing (Rene Pijlman)</para></listitem> -<listitem><para>ExecSQL method reorganization (Anders Bengtsson)</para></listitem> -<listitem><para>GetColumn() fixes (Jeroen van Vianen)</para></listitem> -<listitem><para>Fix isWriteable() function (Rene Pijlman)</para></listitem> -<listitem><para>Improved passage of JDBC2 conformance tests (Rene Pijlman)</para></listitem> -<listitem><para>Add bytea type capability (Barry Lind)</para></listitem> -<listitem><para>Add isNullable() (Rene Pijlman)</para></listitem> -<listitem><para>JDBC date/time test suite fixes (Liam Stewart)</para></listitem> -<listitem><para>Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)</para></listitem> -<listitem><para>Fix DatabaseMetaData to show precision properly (Mark Lillywhite)</para></listitem> -<listitem><para>New getImported/getExported keys (Jason Davies)</para></listitem> -<listitem><para>MD5 password encryption support (Jeremy Wohl)</para></listitem> -<listitem><para>Fix to actually use type cache (Ned Wolpert)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>ODBC</title> -<itemizedlist> -<listitem><para>Remove query size limit (Hiroshi)</para></listitem> -<listitem><para>Remove text field size limit (Hiroshi)</para></listitem> -<listitem><para>Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)</para></listitem> -<listitem><para>Allow ODBC procedure calls (Hiroshi)</para></listitem> -<listitem><para>Improve boolean handing (Aidan Mountford)</para></listitem> -<listitem><para>Most configuration options now settable via DSN (Hiroshi)</para></listitem> -<listitem><para>Multibyte, performance fixes (Hiroshi)</para></listitem> -<listitem><para>Allow driver to be used with iODBC or unixODBC (Peter E)</para></listitem> -<listitem><para>MD5 password encryption support (Bruce)</para></listitem> -<listitem><para>Add more compatibility functions to odbc.sql (Peter E)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title><application>ECPG</></title> -<itemizedlist> -<listitem><para>EXECUTE ... INTO implemented (Christof Petig)</para></listitem> -<listitem><para>Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)</para></listitem> -<listitem><para>Fix for GRANT parameters (Lee Kindness)</para></listitem> -<listitem><para>Fix INITIALLY DEFERRED bug</para></listitem> -<listitem><para>Various bug fixes (Michael, Christof Petig)</para></listitem> -<listitem><para>Auto allocation for indicator variable arrays (int *ind_p=NULL)</para></listitem> -<listitem><para>Auto allocation for string arrays (char **foo_pp=NULL)</para></listitem> -<listitem><para>ECPGfree_auto_mem fixed</para></listitem> -<listitem><para>All function names with external linkage are now prefixed by ECPG</para></listitem> -<listitem><para>Fixes for arrays of structures (Michael)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Misc. Interfaces</title> -<itemizedlist> -<listitem><para>Python fix fetchone() (Gerhard Haring)</para></listitem> -<listitem><para>Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)</para></listitem> -<listitem><para>Add Tcl COPY TO/FROM (ljb)</para></listitem> -<listitem><para>Prevent output of default index op class in <application>pg_dump</> (Tom)</para></listitem> -<listitem><para>Fix libpgeasy memory leak (Bruce)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Build and Install</title> -<itemizedlist> -<listitem><para>Configure, dynamic loader, and shared library fixes (Peter E)</para></listitem> -<listitem><para>Fixes in QNX 4 port (Bernd Tegge)</para></listitem> -<listitem><para>Fixes in Cygwin and Windows ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)</para></listitem> -<listitem><para>Fix for Windows socket communication failures (Magnus, Mikhail Terekhov)</para></listitem> -<listitem><para>Hurd compile fix (Oliver Elphick)</para></listitem> -<listitem><para>BeOS fixes (Cyril Velter)</para></listitem> -<listitem><para>Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)</para></listitem> -<listitem><para>AIX fixes (Tatsuo, Andreas)</para></listitem> -<listitem><para>Fix parallel make (Peter E)</para></listitem> -<listitem><para>Install SQL language manual pages into OS-specific directories (Peter E)</para></listitem> -<listitem><para>Rename config.h to pg_config.h (Peter E)</para></listitem> -<listitem><para>Reorganize installation layout of header files (Peter E)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Source Code</title> -<itemizedlist> -<listitem><para>Remove SEP_CHAR (Bruce)</para></listitem> -<listitem><para>New GUC hooks (Tom)</para></listitem> -<listitem><para>Merge GUC and command line handling (Marko Kreen)</para></listitem> -<listitem><para>Remove EXTEND INDEX (Martijn van Oosterhout, Tom)</para></listitem> -<listitem><para>New pgjindent utility to indent java code (Bruce)</para></listitem> -<listitem><para>Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)</para></listitem> -<listitem><para>pgindent fixes (Bruce, Tom)</para></listitem> -<listitem><para>Replace strcasecmp() with strcmp() where appropriate (Peter E)</para></listitem> -<listitem><para>Dynahash portability improvements (Tom)</para></listitem> -<listitem><para>Add 'volatile' usage in spinlock structures</para></listitem> -<listitem><para>Improve signal handling logic (Tom)</para></listitem> -</itemizedlist> - </sect3> - - <sect3> - <title>Contrib</title> -<itemizedlist> -<listitem><para>New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)</para></listitem> -<listitem><para>New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)</para></listitem> -<listitem><para>Add contrib/dblink for remote database access (Joe Conway)</para></listitem> -<listitem><para>contrib/ora2pg Oracle conversion utility (Gilles Darold)</para></listitem> -<listitem><para>contrib/xml XML conversion utility (John Gray)</para></listitem> -<listitem><para>contrib/fulltextindex fixes (Christopher Kings-Lynne)</para></listitem> -<listitem><para>New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)</para></listitem> -<listitem><para>Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)</para></listitem> -<listitem><para>New pg_upgrade utility (Bruce)</para></listitem> -<listitem><para>Add new pg_resetxlog options (Bruce, Tom)</para></listitem> -</itemizedlist> - </sect3> - </sect2> -</sect1> - - - <sect1 id="release-7-1-3"> - <title>Release 7.1.3</title> - - <note> - <title>Release date</title> - <simpara>2001-08-15</simpara> - </note> - - <sect2> - <title>Migration to Version 7.1.3</title> - - <para> - A dump/restore is <emphasis>not</emphasis> required for those running - 7.1.X. - </para> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Remove unused WAL segments of large transactions (Tom) -Multiaction rule fix (Tom) -PL/pgSQL memory allocation fix (Jan) -VACUUM buffer fix (Tom) -Regression test fixes (Tom) -pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom) -Fix subselects with DISTINCT ON or LIMIT (Tom) -BeOS fix -Disable COPY TO/FROM a view (Tom) -Cygwin build (Jason Tishler) - </programlisting> - </para> - </sect2> - </sect1> - - - <sect1 id="release-7-1-2"> - <title>Release 7.1.2</title> - - <note> - <title>Release date</title> - <simpara>2001-05-11</simpara> - </note> - - <para> - This has one fix from 7.1.1. - </para> - - - <sect2> - <title>Migration to Version 7.1.2</title> - - <para> - A dump/restore is <emphasis>not</emphasis> required for those running - 7.1.X. - </para> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Fix PL/pgSQL SELECTs when returning no rows -Fix for psql backslash core dump -Referential integrity privilege fix -Optimizer fixes -pg_dump cleanups - </programlisting> - </para> - </sect2> - </sect1> - - - <sect1 id="release-7-1-1"> - <title>Release 7.1.1</title> - - <note> - <title>Release date</title> - <simpara>2001-05-05</simpara> - </note> - - <para> - This has a variety of fixes from 7.1. - </para> - - - <sect2> - <title>Migration to Version 7.1.1</title> - - <para> - A dump/restore is <emphasis>not</emphasis> required for those running - 7.1. - </para> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Fix for numeric MODULO operator (Tom) -pg_dump fixes (Philip) -pg_dump can dump 7.0 databases (Philip) -readline 4.2 fixes (Peter E) -JOIN fixes (Tom) -AIX, MSWIN, VAX, N32K fixes (Tom) -Multibytes fixes (Tom) -Unicode fixes (Tatsuo) -Optimizer improvements (Tom) -Fix for whole rows in functions (Tom) -Fix for pg_ctl and option strings with spaces (Peter E) -ODBC fixes (Hiroshi) -EXTRACT can now take string argument (Thomas) -Python fixes (Darcy) - </programlisting> - </para> - </sect2> - </sect1> - - - <sect1 id="release-7-1"> - <title>Release 7.1</title> - - <note> - <title>Release date</title> - <simpara>2001-04-13</simpara> - </note> - - <para> - This release focuses on removing limitations that have existed in the - <productname>PostgreSQL</productname> code for many years. - </para> - - <para> - Major changes in this release: - </para> - - <variablelist> - <varlistentry> - <term> - Write-ahead Log (WAL) - </term> - <listitem> - <para> -To maintain database consistency in case of an operating system crash, -previous releases of <productname>PostgreSQL</productname> have forced -all data modifications to disk before each transaction commit. With -WAL, only one log file must be flushed to disk, greatly improving -performance. If you have been using -F in previous releases to -disable disk flushes, you might want to consider discontinuing its use. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - TOAST - </term> - <listitem> - <para> - TOAST - Previous releases had a compiled-in row length limit, -typically 8k - 32k. This limit made storage of long text fields -difficult. With TOAST, long rows of any length can be stored with good -performance. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Outer Joins - </term> - <listitem> - <para> -We now support outer joins. The UNION/NOT IN -workaround for outer joins is no longer required. We use the SQL92 -outer join syntax. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Function Manager - </term> - <listitem> - <para> -The previous C function manager did not -handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha). The new -function manager does. You can continue using your old custom -functions, but you might want to rewrite them in the future to use the new -function manager call interface. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Complex Queries - </term> - <listitem> - <para> -A large number of complex queries that were -unsupported in previous releases now work. Many combinations of views, -aggregates, UNION, LIMIT, cursors, subqueries, and inherited tables -now work properly. Inherited tables are now accessed by default. -Subqueries in FROM are now supported. - </para> - </listitem> - </varlistentry> - - </variablelist> - - <sect2> - <title>Migration to Version 7.1</title> - - <para> - A dump/restore using pg_dump is required for those wishing to migrate - data from any previous release. - </para> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Bug Fixes ---------- -Many multibyte/Unicode/locale fixes (Tatsuo and others) -More reliable ALTER TABLE RENAME (Tom) -Kerberos V fixes (David Wragg) -Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom) -Prompt username/password on standard error (Bruce) -Large objects inv_read/inv_write fixes (Tom) -Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel, - Daniel Baldoni) -Prevent query expressions from leaking memory (Tom) -Allow UPDATE of arrays elements (Tom) -Wake up lock waiters during cancel (Hiroshi) -Fix rare cursor crash when using hash join (Tom) -Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi) -Fix psql crash from \l+ if MULTIBYTE enabled (Peter E) -Fix truncation of rule names during CREATE VIEW (Ross Reedstrom) -Fix PL/perl (Alex Kapranoff) -Disallow LOCK on views (Mark Hollomon) -Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon) -Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon) -Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo) -Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom) -Fix rare failure with TRUNCATE command (Tom) -Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views, - DISTINCT, ORDER BY, SELECT...INTO (Tom) -Fix parser failures during aborted transactions (Tom) -Allow temporary relations to properly clean up indexes (Bruce) -Fix VACUUM problem with moving rows in same page (Tom) -Modify pg_dump to better handle user-defined items in template1 (Philip) -Allow LIMIT in VIEW (Tom) -Require cursor FETCH to honor LIMIT (Tom) -Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan) -Allow ORDER BY, LIMIT in subqueries (Tom) -Allow UNION in CREATE RULE (Tom) -Make ALTER/DROP TABLE rollback-able (Vadim, Tom) -Store initdb collation in pg_control so collation cannot be changed (Tom) -Fix INSERT...SELECT with rules (Tom) -Fix FOR UPDATE inside views and subselects (Tom) -Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom) -Fix lpad() and rpad() to handle length less than input string (Tom) -Fix use of NOTIFY in some rules (Tom) -Overhaul btree code (Tom) -Fix NOT NULL use in Pl/pgSQL variables (Tom) -Overhaul GIST code (Oleg) -Fix CLUSTER to preserve constraints and column default (Tom) -Improved deadlock detection handling (Tom) -Allow multiple SERIAL columns in a table (Tom) -Prevent occasional index corruption (Vadim) - -Enhancements ------------- -Add OUTER JOINs (Tom) -Function manager overhaul (Tom) -Allow ALTER TABLE RENAME on indexes (Tom) -Improve CLUSTER (Tom) -Improve ps status display for more platforms (Peter E, Marc) -Improve CREATE FUNCTION failure message (Ross) -JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber, - Gunnar) -Grand Unified Configuration scheme/GUC. Many options can now be set in - data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E) -Improved handling of file descriptor cache (Tom) -New warning code about auto-created table alias entries (Bruce) -Overhaul initdb process (Tom, Peter E) -Overhaul of inherited tables; inherited tables now accessed by default; - new ONLY key word prevents it (Chris Bitmead, Tom) -ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs, - Michael Fork) -Allow renaming of temp tables (Tom) -Overhaul memory manager contexts (Tom) -pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E) -Overhaul pg_dump (Philip Warner) -Allow pg_hba.conf secondary password file to specify only username (Peter E) -Allow TEMPORARY or TEMP key word when creating temporary tables (Bruce) -New memory leak checker (Karel) -New SET SESSION CHARACTERISTICS (Thomas) -Allow nested block comments (Thomas) -Add WITHOUT TIME ZONE type qualifier (Thomas) -New ALTER TABLE ADD CONSTRAINT (Stephan) -Use NUMERIC accumulators for INTEGER aggregates (Tom) -Overhaul aggregate code (Tom) -New VARIANCE and STDDEV() aggregates -Improve dependency ordering of pg_dump (Philip) -New pg_restore command (Philip) -New pg_dump tar output option (Philip) -New pg_dump of large objects (Philip) -New ESCAPE option to LIKE (Thomas) -New case-insensitive LIKE - ILIKE (Thomas) -Allow functional indexes to use binary-compatible type (Tom) -Allow SQL functions to be used in more contexts (Tom) -New pg_config utility (Peter E) -New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements - (Jan) -New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan) -New quote_identifiers() and quote_literal() functions (Jan) -New ALTER TABLE table OWNER TO user command (Mark Hollomon) -Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom) -Update PyGreSQL to version 3.1 (D'Arcy) -Store tables as files named by OID (Vadim) -New SQL function setval(seq,val,bool) for use in pg_dump (Philip) -Require DROP VIEW to remove views, no DROP TABLE (Mark) -Allow DROP VIEW view1, view2 (Mark) -Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom) -Allow automatic conversion to/from Unicode (Tatsuo, Eiji) -New /contrib/pgcrypto hashing functions (Marko Kreen) -New pg_dumpall --globals-only option (Peter E) -New CHECKPOINT command for WAL which creates new WAL log file (Vadim) -New AT TIME ZONE syntax (Thomas) -Allow location of Unix domain socket to be configurable (David J. MacKenzie) -Allow postmaster to listen on a specific IP address (David J. MacKenzie) -Allow socket path name to be specified in hostname by using leading slash - (David J. MacKenzie) -Allow CREATE DATABASE to specify template database (Tom) -New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas) -New /contrib/rserv replication toolkit (Vadim) -New file format for COPY BINARY (Tom) -New /contrib/oid2name to map numeric files to table names (B Palmer) -New "idle in transaction" ps status message (Marc) -Update to pgaccess 0.98.7 (Constantin Teodorescu) -pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option -Add rudimentary dependency checking to pg_dump (Philip) - -Types ------ -Fix INET/CIDR type ordering and add new functions (Tom) -Make OID behave as an unsigned type (Tom) -Allow BIGINT as synonym for INT8 (Peter E) -New int2 and int8 comparison operators (Tom) -New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E) -CHAR() no longer faster than VARCHAR() because of TOAST (Tom) -New GIST seg/cube examples (Gene Selkov) -Improved round(numeric) handling (Tom) -Fix CIDR output formatting (Tom) -New CIDR abbrev() function (Tom) - -Performance ------------ -Write-Ahead Log (WAL) to provide crash recovery with less performance - overhead (Vadim) -ANALYZE stage of VACUUM no longer exclusively locks table (Bruce) -Reduced file seeks (Denis Perchine) -Improve BTREE code for duplicate keys (Tom) -Store all large objects in a single table (Denis Perchine, Tom) -Improve memory allocation performance (Karel, Tom) - -Source Code ------------ -New function manager call conventions (Tom) -SGI portability fixes (David Kaelbling) -New configure --enable-syslog option (Peter E) -New BSDI README (Bruce) -configure script moved to top level, not /src (Peter E) -Makefile/configuration/compilation overhaul (Peter E) -New configure --with-python option (Peter E) -Solaris cleanups (Peter E) -Overhaul /contrib Makefiles (Karel) -New OpenSSL configuration option (Magnus, Peter E) -AIX fixes (Andreas) -QNX fixes (Maurizio) -New heap_open(), heap_openr() API (Tom) -Remove colon and semi-colon operators (Thomas) -New pg_class.relkind value for views (Mark Hollomon) -Rename ichar() to chr() (Karel) -New documentation for btrim(), ascii(), chr(), repeat() (Karel) -Fixes for NT/Cygwin (Pete Forman) -AIX port fixes (Andreas) -New BeOS port (David Reid, Cyril Velter) -Add proofreader's changes to docs (Addison-Wesley, Bruce) -New Alpha spinlock code (Adriaan Joubert, Compaq) -UnixWare port overhaul (Peter E) -New Darwin/MacOS X port (Peter Bierman, Bruce Hartzler) -New FreeBSD Alpha port (Alfred) -Overhaul shared memory segments (Tom) -Add IBM S/390 support (Neale Ferguson) -Moved macmanuf to /contrib (Larry Rosenman) -Syslog improvements (Larry Rosenman) -New template0 database that contains no user additions (Tom) -New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov) -Allow NetBSD's libedit instead of readline (Peter) -Improved assembly language source code format (Bruce) -New contrib/pg_logger -New --template option to createdb -New contrib/pg_control utility (Oliver) -New FreeBSD tools ipc_check, start-scripts/freebsd - </programlisting> - </para> - </sect2> - </sect1> - - - <sect1 id="release-7-0-3"> - <title>Release 7.0.3</title> - - <note> - <title>Release date</title> - <simpara>2000-11-11</simpara> - </note> - - <para> - This has a variety of fixes from 7.0.2. - </para> - - - <sect2> - <title>Migration to Version 7.0.3</title> - - <para> - A dump/restore is <emphasis>not</emphasis> required for those running - 7.0.*. - </para> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Jdbc fixes (Peter) -Large object fix (Tom) -Fix lean in COPY WITH OIDS leak (Tom) -Fix backwards-index-scan (Tom) -Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi) -Add --enable-syslog to configure (Marc) -Fix abort transaction at backend exit in rare cases (Tom) -Fix for psql \l+ when multibyte enabled (Tatsuo) -Allow PL/pgSQL to accept non ascii identifiers (Tatsuo) -Make vacuum always flush buffers (Tom) -Fix to allow cancel while waiting for a lock (Hiroshi) -Fix for memory allocation problem in user authentication code (Tom) -Remove bogus use of int4out() (Tom) -Fixes for multiple subqueries in COALESCE or BETWEEN (Tom) -Fix for failure of triggers on heap open in certain cases (Jeroen van - Vianen) -Fix for erroneous selectivity of not-equals (Tom) -Fix for erroneous use of strcmp() (Tom) -Fix for bug where storage manager accesses items beyond end of file - (Tom) -Fix to include kernel errno message in all smgr elog messages (Tom) -Fix for '.' not in PATH at build time (SL Baur) -Fix for out-of-file-descriptors error (Tom) -Fix to make pg_dump dump 'iscachable' flag for functions (Tom) -Fix for subselect in targetlist of Append node (Tom) -Fix for mergejoin plans (Tom) -Fix TRUNCATE failure on relations with indexes (Tom) -Avoid database-wide restart on write error (Hiroshi) -Fix nodeMaterial to honor chgParam by recomputing its output (Tom) -Fix VACUUM problem with moving chain of update row versions when source - and destination of a row version lie on the same page (Tom) -Fix user.c CommandCounterIncrement (Tom) -Fix for AM/PM boundary problem in to_char() (Karel Zak) -Fix TIME aggregate handling (Tom) -Fix to_char() to avoid coredump on NULL input (Tom) -Buffer fix (Tom) -Fix for inserting/copying longer multibyte strings into char() data - types (Tatsuo) -Fix for crash of backend, on abort (Tom) - </programlisting> - </para> - </sect2> - </sect1> - - - <sect1 id="release-7-0-2"> - <title>Release 7.0.2</title> - - <note> - <title>Release date</title> - <simpara>2000-06-05</simpara> - </note> - - <para> - This is a repackaging of 7.0.1 with added documentation. - </para> - - - <sect2> - <title>Migration to Version 7.0.2</title> - - <para> - A dump/restore is <emphasis>not</emphasis> required for those running - 7.*. - </para> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Added documentation to tarball. - </programlisting> - </para> - </sect2> - </sect1> - - - <sect1 id="release-7-0-1"> - <title>Release 7.0.1</title> - - <note> - <title>Release date</title> - <simpara>2000-06-01</simpara> - </note> - - <para> - This is a cleanup release for 7.0. - </para> - - <sect2> - <title>Migration to Version 7.0.1</title> - - <para> - A dump/restore is <emphasis>not</emphasis> required for those running - 7.0. - </para> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Fix many CLUSTER failures (Tom) -Allow ALTER TABLE RENAME works on indexes (Tom) -Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce) -New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce) -Fix the off by one errors in ResultSet from 6.5.3, and more. -jdbc ResultSet fixes (Joseph Shraibman) -optimizer tunings (Tom) -Fix create user for pgaccess -Fix for UNLISTEN failure -IRIX fixes (David Kaelbling) -QNX fixes (Andreas Kardos) -Reduce COPY IN lock level (Tom) -Change libpqeasy to use PQconnectdb() style parameters (Bruce) -Fix pg_dump to handle OID indexes (Tom) -Fix small memory leak (Tom) -Solaris fix for createdb/dropdb (Tatsuo) -Fix for non-blocking connections (Alfred Perlstein) -Fix improper recovery after RENAME TABLE failures (Tom) -Copy pg_ident.conf.sample into /lib directory in install (Bruce) -Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya) -Fix too long syslog message (Tatsuo) -Fix problem with quoted indexes that are too long (Tom) -JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu) -ecpg changes (Michael) - </programlisting> - </para> - </sect2> - </sect1> - - <sect1 id="release-7-0"> - <title>Release 7.0</title> - - <note> - <title>Release date</title> - <simpara>2000-05-08</simpara> - </note> - - <para> - This release contains improvements in many areas, demonstrating - the continued growth of <productname>PostgreSQL</productname>. - There are more improvements and fixes in 7.0 than in any previous - release. The developers have confidence that this is the best - release yet; we do our best to put out only solid releases, and - this one is no exception. - </para> - - <para> - Major changes in this release: - </para> - - <variablelist> - <varlistentry> - <term> - Foreign Keys - </term> - <listitem> - <para> - Foreign keys are now implemented, with the exception of PARTIAL MATCH - foreign keys. Many users have been asking for this feature, and we are - pleased to offer it. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Optimizer Overhaul - </term> - <listitem> - <para> - Continuing on work started a year ago, the optimizer has been - improved, allowing better query plan selection and faster performance - with less memory usage. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Updated <application>psql</application> - </term> - <listitem> - <para> - <application>psql</application>, our interactive terminal monitor, has been - updated with a variety of new features. See the <application>psql</application> manual page for details. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Join Syntax - </term> - <listitem> - <para> - SQL92 join syntax is now supported, though only as - <literal>INNER JOIN</> for this release. <literal>JOIN</>, - <literal>NATURAL JOIN</>, <literal>JOIN</>/<literal>USING</>, - and <literal>JOIN</>/<literal>ON</> are available, as are - column correlation names. - </para> - </listitem> - - </varlistentry> - </variablelist> - - <sect2> - <title>Migration to Version 7.0</title> - - <para> - A dump/restore using <application>pg_dump</application> - is required for those wishing to migrate data from any - previous release of <productname>PostgreSQL</productname>. - For those upgrading from 6.5.*, you can instead use - <application>pg_upgrade</application> to upgrade to this - release; however, a full dump/reload installation is always the - most robust method for upgrades. - </para> - - <para> - Interface and compatibility issues to consider for the new - release include: - </para> - - <itemizedlist> - <listitem> - <para> - The date/time types <type>datetime</type> and - <type>timespan</type> have been superseded by the - SQL92-defined types <type>timestamp</type> and - <type>interval</type>. Although there has been some effort to - ease the transition by allowing - <productname>PostgreSQL</productname> to recognize - the deprecated type names and translate them to the new type - names, this mechanism cannot be completely transparent to - your existing application. - </para> - </listitem> - - <listitem> - <para> - The optimizer has been substantially improved in the area of - query cost estimation. In some cases, this will result in - decreased query times as the optimizer makes a better choice - for the preferred plan. However, in a small number of cases, - usually involving pathological distributions of data, your - query times might go up. If you are dealing with large amounts - of data, you might want to check your queries to verify - performance. - </para> - </listitem> - - <listitem> - <para> - The <acronym>JDBC</acronym> and <acronym>ODBC</acronym> - interfaces have been upgraded and extended. - </para> - </listitem> - - <listitem> - <para> - The string function <function>CHAR_LENGTH</function> is now a - native function. Previous versions translated this into a call - to <function>LENGTH</function>, which could result in - ambiguity with other types implementing - <function>LENGTH</function> such as the geometric types. - </para> - </listitem> - </itemizedlist> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Bug Fixes ---------- -Prevent function calls exceeding maximum number of arguments (Tom) -Improve CASE construct (Tom) -Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom) -Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom) -Fix GROUP BY scan bug (Tom) -Improvements in SQL grammar processing (Tom) -Fix for views involved in INSERT ... SELECT ... (Tom) -Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom) -Fix for subselects in INSERT ... SELECT (Tom) -Prevent INSERT ... SELECT ... ORDER BY (Tom) -Fixes for relations greater than 2GB, including vacuum -Improve propagating system table changes to other backends (Tom) -Improve propagating user table changes to other backends (Tom) -Fix handling of temp tables in complex situations (Bruce, Tom) -Allow table locking at table open, improving concurrent reliability (Tom) -Properly quote sequence names in pg_dump (Ross J. Reedstrom) -Prevent DROP DATABASE while others accessing -Prevent any rows from being returned by GROUP BY if no rows processed (Tom) -Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom) -Fix pg_upgrade so it works for MVCC (Tom) -Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom) -Fix for "f1 datetime DEFAULT 'now'" (Tom) -Fix problems with CURRENT_DATE used in DEFAULT (Tom) -Allow comment-only lines, and ;;; lines too. (Tom) -Improve recovery after failed disk writes, disk full (Hiroshi) -Fix cases where table is mentioned in FROM but not joined (Tom) -Allow HAVING clause without aggregate functions (Tom) -Fix for "--" comment and no trailing newline, as seen in perl interface -Improve pg_dump failure error reports (Bruce) -Allow sorts and hashes to exceed 2GB file sizes (Tom) -Fix for pg_dump dumping of inherited rules (Tom) -Fix for NULL handling comparisons (Tom) -Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi) -Fix for dbname with dash -Prevent DROP INDEX from interfering with other backends (Tom) -Fix file descriptor leak in verify_password() -Fix for "Unable to identify an operator =$" problem -Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann) -Fix for recursive exit call (Massimo) -Fix for extra-long timezones (Jeroen van Vianen) -Make pg_dump preserve primary key information (Peter E) -Prevent databases with single quotes (Peter E) -Prevent DROP DATABASE inside transaction (Peter E) -ecpg memory leak fixes (Stephen Birch) -Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom) -Y2K timestamp fix (Massimo) -Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom) -Fix for views with tables/columns containing spaces (Tom) -Prevent privileges on indexes (Peter E) -Fix for spinlock stuck problem when error is generated (Hiroshi) -Fix ipcclean on Linux -Fix handling of NULL constraint conditions (Tom) -Fix memory leak in odbc driver (Nick Gorham) -Fix for privilege check on UNION tables (Tom) -Fix to allow SELECT 'a' LIKE 'a' (Tom) -Fix for SELECT 1 + NULL (Tom) -Fixes to CHAR -Fix log() on numeric type (Tom) -Deprecate ':' and ';' operators -Allow vacuum of temporary tables -Disallow inherited columns with the same name as new columns -Recover or force failure when disk space is exhausted (Hiroshi) -Fix INSERT INTO ... SELECT with AS columns matching result columns -Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom) -Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom) -Fix UNION with LIMIT -Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2 -Fix CREATE TABLE test(col char(2) DEFAULT user) -Fix mismatched types in CREATE TABLE ... DEFAULT -Fix SELECT * FROM pg_class where oid in (0,-1) -Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12 -Prevent user who can create databases can modifying pg_database table (Peter E) -Fix btree to give a useful elog when key > 1/2 (page - overhead) (Tom) -Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom) - -Enhancements ------------- -New CLI interface include file sqlcli.h, based on SQL3/SQL98 -Remove all limits on query length, row length limit still exists (Tom) -Update jdbc protocol to 2.0 (Jens Glaser <email>jens@jens.de</email>) -Add TRUNCATE command to quickly truncate relation (Mike Mascari) -Fix to give super user and createdb user proper update catalog rights (Peter E) -Allow ecpg bool variables to have NULL values (Christof) -Issue ecpg error if NULL value for variable with no NULL indicator (Christof) -Allow ^C to cancel COPY command (Massimo) -Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo) -Function name overloading for dynamically-loaded C functions (Frankpitt) -Add CmdTuples() to libpq++(Vince) -New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan) -Allow CREATE FUNCTION/WITH clause to be used for all language types -configure --enable-debug adds -g (Peter E) -configure --disable-debug removes -g (Peter E) -Allow more complex default expressions (Tom) -First real FOREIGN KEY constraint trigger functionality (Jan) -Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan) -Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus) -Allow WHERE restriction on ctid (physical heap location) (Hiroshi) -Move pginterface from contrib to interface directory, rename to pgeasy (Bruce) -Change pgeasy connectdb() parameter ordering (Bruce) -Require SELECT DISTINCT target list to have all ORDER BY columns (Tom) -Add Oracle's COMMENT ON command (Mike Mascari <email>mascarim@yahoo.com</email>) -libpq's PQsetNoticeProcessor function now returns previous hook(Peter E) -Prevent PQsetNoticeProcessor from being set to NULL (Peter E) -Make USING in COPY optional (Bruce) -Allow subselects in the target list (Tom) -Allow subselects on the left side of comparison operators (Tom) -New parallel regression test (Jan) -Change backend-side COPY to write files with permissions 644 not 666 (Tom) -Force permissions on PGDATA directory to be secure, even if it exists (Tom) -Added psql LASTOID variable to return last inserted oid (Peter E) -Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom) -Add privilege check for vacuum (Peter E) -New libpq functions to allow asynchronous connections: PQconnectStart(), - PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(), - PQsetenvPoll(), PQsetenvAbort (Ewan Mellor) -New libpq PQsetenv() function (Ewan Mellor) -create/alter user extension (Peter E) -New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo) -New scripts for create/drop user/db (Peter E) -Major psql overhaul (Peter E) -Add const to libpq interface (Peter E) -New libpq function PQoidValue (Peter E) -Show specific non-aggregate causing problem with GROUP BY (Tom) -Make changes to pg_shadow recreate pg_pwd file (Peter E) -Add aggregate(DISTINCT ...) (Tom) -Allow flag to control COPY input/output of NULLs (Peter E) -Make postgres user have a password by default (Peter E) -Add CREATE/ALTER/DROP GROUP (Peter E) -All administration scripts now support --long options (Peter E, Karel) -Vacuumdb script now supports --all option (Peter E) -ecpg new portable FETCH syntax -Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF - and EXEC SQL ENDIF directives -Add pg_ctl script to control backend start-up (Tatsuo) -Add postmaster.opts.default file to store start-up flags (Tatsuo) -Allow --with-mb=SQL_ASCII -Increase maximum number of index keys to 16 (Bruce) -Increase maximum number of function arguments to 16 (Bruce) -Allow configuration of maximum number of index keys and arguments (Bruce) -Allow unprivileged users to change their passwords (Peter E) -Password authentication enabled; required for new users (Peter E) -Disallow dropping a user who owns a database (Peter E) -Change initdb option --with-mb to --enable-multibyte -Add option for initdb to prompts for superuser password (Peter E) -Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom) -Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E) -New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo) -libpq non-blocking mode (Alfred Perlstein) -Improve conversion of types in casts that don't specify a length -New plperl internal programming language (Mark Hollomon) -Allow COPY IN to read file that do not end with a newline (Tom) -Indicate when long identifiers are truncated (Tom) -Allow aggregates to use type equivalency (Peter E) -Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number() - conversion functions (Karel Zak <zakkr@zf.jcu.cz>) -Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom) -Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom) -Add NUMERIC and int8 types to ODBC -Improve EXPLAIN results for Append, Group, Agg, Unique (Tom) -Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo) -Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi) -Enable backward sequential scan even after reaching EOF (Hiroshi) -Add btree indexing of boolean values, >= and <= (Don Baccus) -Print current line number when COPY FROM fails (Massimo) -Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas) -Add DEC as synonym for DECIMAL (Thomas) -Add SESSION_USER as SQL92 key word, same as CURRENT_USER (Thomas) -Implement SQL92 column aliases (aka correlation names) (Thomas) -Implement SQL92 join syntax (Thomas) -Make INTERVAL reserved word allowed as a column identifier (Thomas) -Implement REINDEX command (Hiroshi) -Accept ALL in aggregate function SUM(ALL col) (Tom) -Prevent GROUP BY from using column aliases (Tom) -New psql \encoding option (Tatsuo) -Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi) -Allow negation of a negative number in all cases -Add ecpg descriptors (Christof, Michael) -Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl -Allow casts with length, like foo::char(8) -New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo) -Add support for SJIS user defined characters (Tatsuo) -Larger views/rules supported -Make libpq's PQconndefaults() thread-safe (Tom) -Disable // as comment to be ANSI conforming, should use -- (Tom) -Allow column aliases on views CREATE VIEW name (collist) -Fixes for views with subqueries (Tom) -Allow UPDATE table SET fld = (SELECT ...) (Tom) -SET command options no longer require quotes -Update pgaccess to 0.98.6 -New SET SEED command -New pg_options.sample file -New SET FSYNC command (Massimo) -Allow pg_descriptions when creating tables -Allow pg_descriptions when creating types, columns, and functions -Allow psql \copy to allow delimiters (Peter E) -Allow psql to print nulls as distinct from "" [null] (Peter E) - -Types ------ -Many array fixes (Tom) -Allow bare column names to be subscripted as arrays (Tom) -Improve type casting of int and float constants (Tom) -Cleanups for int8 inputs, range checking, and type conversion (Tom) -Fix for SELECT timespan('21:11:26'::time) (Tom) -netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko) -Add btree index on NUMERIC (Jan) -Perl fix for large objects containing NUL characters (Douglas Thomson) -ODBC fix for large objects (free) -Fix indexing of cidr data type -Fix for Ethernet MAC addresses (macaddr type) comparisons -Fix for date/time types when overflows happened in computations (Tom) -Allow array on int8 (Peter E) -Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom) -Allow NUMERIC arrays -Fix bugs in NUMERIC ceil() and floor() functions (Tom) -Make char_length()/octet_length including trailing blanks (Tom) -Made abstime/reltime use int4 instead of time_t (Peter E) -New lztext data type for compressed text fields -Revise code to handle coercion of int and float constants (Tom) -Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert) -NUMERIC now accepts scientific notation (Tom) -NUMERIC to int4 rounds (Tom) -Convert float4/8 to NUMERIC properly (Tom) -Allow type conversion with NUMERIC (Thomas) -Make ISO date style (2000-02-16 09:33) the default (Thomas) -Add NATIONAL CHAR [ VARYING ] (Thomas) -Allow NUMERIC round and trunc to accept negative scales (Tom) -New TIME WITH TIME ZONE type (Thomas) -Add MAX()/MIN() on time type (Thomas) -Add abs(), mod(), fac() for int8 (Thomas) -Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas) -Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas) -Add exp() and ln() for NUMERIC type -Rename NUMERIC power() to pow() (Thomas) -Improved TRANSLATE() function (Edwin Ramirez, Tom) -Allow X=-Y operators (Tom) -Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom) -Allow LOCALE to use indexes in regular expression searches (Tom) -Allow creation of functional indexes to use default types - -Performance ------------ -Prevent exponential space consumption with many AND's and OR's (Tom) -Collect attribute selectivity values for system columns (Tom) -Reduce memory usage of aggregates (Tom) -Fix for LIKE optimization to use indexes with multibyte encodings (Tom) -Fix r-tree index optimizer selectivity (Thomas) -Improve optimizer selectivity computations and functions (Tom) -Optimize btree searching for cases where many equal keys exist (Tom) -Enable fast LIKE index processing only if index present (Tom) -Re-use free space on index pages with duplicates (Tom) -Improve hash join processing (Tom) -Prevent descending sort if result is already sorted(Hiroshi) -Allow commuting of index scan query qualifications (Tom) -Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom) -Allocate large memory requests in fix-sized chunks for performance (Tom) -Fix vacuum's performance by reducing memory allocation requests (Tom) -Implement constant-expression simplification (Bernard Frankpitt, Tom) -Use secondary columns to be used to determine start of index scan (Hiroshi) -Prevent quadruple use of disk space when doing internal sorting (Tom) -Faster sorting by calling fewer functions (Tom) -Create system indexes to match all system caches (Bruce, Hiroshi) -Make system caches use system indexes (Bruce) -Make all system indexes unique (Bruce) -Improve pg_statistics management for VACUUM speed improvement (Tom) -Flush backend cache less frequently (Tom, Hiroshi) -COPY now reuses previous memory allocation, improving performance (Tom) -Improve optimization cost estimation (Tom) -Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom) -Use DNF instead of CNF where appropriate (Tom, Taral) -Further cleanup for OR-of-AND WHERE-clauses (Tom) -Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom) -Smarter optimizer computations for random index page access (Tom) -New SET variable to control optimizer costs (Tom) -Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom) -Reduce optimizer internal housekeeping of join paths for speedup (Tom) -Major subquery speedup (Tom) -Fewer fsync writes when fsync is not disabled (Tom) -Improved LIKE optimizer estimates (Tom) -Prevent fsync in SELECT-only queries (Vadim) -Make index creation use psort code, because it is now faster (Tom) -Allow creation of sort temp tables > 1 Gig - -Source Tree Changes -------------------- -Fix for linux PPC compile -New generic expression-tree-walker subroutine (Tom) -Change form() to varargform() to prevent portability problems -Improved range checking for large integers on Alphas -Clean up #include in /include directory (Bruce) -Add scripts for checking includes (Bruce) -Remove un-needed #include's from *.c files (Bruce) -Change #include's to use <> and "" as appropriate (Bruce) -Enable Windows compilation of libpq -Alpha spinlock fix from Uncle George <email>gatgul@voicenet.com</email> -Overhaul of optimizer data structures (Tom) -Fix to cygipc library (Yutaka Tanida) -Allow pgsql to work on newer Cygwin snapshots (Dan) -New catalog version number (Tom) -Add Linux ARM -Rename heap_replace to heap_update -Update for QNX (Dr. Andreas Kardos) -New platform-specific regression handling (Tom) -Rename oid8 -> oidvector and int28 -> int2vector (Bruce) -Included all yacc and lex files into the distribution (Peter E.) -Remove lextest, no longer needed (Peter E) -Fix for libpq and psql on Windows (Magnus) -Internally change datetime and timespan into timestamp and interval (Thomas) -Fix for plpgsql on BSD/OS -Add SQL_ASCII test case to the regression test (Tatsuo) -configure --with-mb now deprecated (Tatsuo) -NT fixes -NetBSD fixes (Johnny C. Lam <email>lamj@stat.cmu.edu</email>) -Fixes for Alpha compiles -New multibyte encodings - </programlisting> - </para> - </sect2> - </sect1> - - <sect1 id="release-6-5-3"> - <title>Release 6.5.3</title> - - <note> - <title>Release date</title> - <simpara>1999-10-13</simpara> - </note> - - <para> - This is basically a cleanup release for 6.5.2. We have added a new - <application>PgAccess</> that was missing in 6.5.2, and installed an NT-specific fix. - </para> - - - <sect2> - <title>Migration to Version 6.5.3</title> - - <para> - A dump/restore is <emphasis>not</emphasis> required for those running - 6.5.*. - </para> - </sect2> - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Updated version of pgaccess 0.98 -NT-specific patch -Fix dumping rules on inherited tables - </programlisting> - </para> - </sect2> - </sect1> - - - <sect1 id="release-6-5-2"> - <title>Release 6.5.2</title> - - <note> - <title>Release date</title> - <simpara>1999-09-15</simpara> - </note> - - <para> - This is basically a cleanup release for 6.5.1. We have fixed a variety of - problems reported by 6.5.1 users. - </para> - - - <sect2> - <title>Migration to Version 6.5.2</title> - - <para> - A dump/restore is <emphasis>not</emphasis> required for those running - 6.5.*. - </para> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -subselect+CASE fixes(Tom) -Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik) -Fixes for CASE in WHERE join clauses(Tom) -Fix BTScan abort(Tom) -Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas) -Improve it so that it checks for multicolumn constraints(Thomas) -Fix for Windows making problem with MB enabled(Hiroki Kataoka) -Allow BSD yacc and bison to compile pl code(Bruce) -Fix SET NAMES working -int8 fixes(Thomas) -Fix vacuum's memory consumption(Hiroshi,Tatsuo) -Reduce the total memory consumption of vacuum(Tom) -Fix for timestamp(datetime) -Rule deparsing bugfixes(Tom) -Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom) -This is to re-use space on index pages freed by vacuum(Vadim) -document -x for pg_dump(Bruce) -Fix for unary operators in rule deparser(Tom) -Comment out FileUnlink of excess segments during mdtruncate()(Tom) -IRIX linking fix from Yu Cao >yucao@falcon.kla-tencor.com< -Repair logic error in LIKE: should not return LIKE_ABORT - when reach end of pattern before end of text(Tom) -Repair incorrect cleanup of heap memory allocation during transaction abort(Tom) -Updated version of pgaccess 0.98 - </programlisting> - </para> - </sect2> - </sect1> - - <sect1 id="release-6-5-1"> - <title>Release 6.5.1</title> - - <note> - <title>Release date</title> - <simpara>1999-07-15</simpara> - </note> - - <para> - This is basically a cleanup release for 6.5. We have fixed a variety of - problems reported by 6.5 users. - </para> - - <sect2> - <title>Migration to Version 6.5.1</title> - - <para> - A dump/restore is <emphasis>not</emphasis> required for those running - 6.5. - </para> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Add NT README file -Portability fixes for linux_ppc, IRIX, linux_alpha, OpenBSD, alpha -Remove QUERY_LIMIT, use SELECT...LIMIT -Fix for EXPLAIN on inheritance(Tom) -Patch to allow vacuum on multisegment tables(Hiroshi) -R-Tree optimizer selectivity fix(Tom) -ACL file descriptor leak fix(Atsushi Ogawa) -New expression subtree code(Tom) -Avoid disk writes for read-only transactions(Vadim) -Fix for removal of temp tables if last transaction was aborted(Bruce) -Fix to prevent too large row from being created(Bruce) -plpgsql fixes -Allow port numbers 32k - 64k(Bruce) -Add ^ precedence(Bruce) -Rename sort files called pg_temp to pg_sorttemp(Bruce) -Fix for microseconds in time values(Tom) -Tutorial source cleanup -New linux_m68k port -Fix for sorting of NULL's in some cases(Tom) -Shared library dependencies fixed (Tom) -Fixed glitches affecting GROUP BY in subselects(Tom) -Fix some compiler warnings (Tomoaki Nishiyama) -Add Win1250 (Czech) support (Pavel Behal) - </programlisting> - </para> - </sect2> - </sect1> - - <sect1 id="release-6-5"> - <title>Release 6.5</title> - - <note> - <title>Release date</title> - <simpara>1999-06-09</simpara> - </note> - - <para> - This release marks a major step in the development team's mastery of the source - code we inherited from Berkeley. You will see we are now easily adding - major features, thanks to the increasing size and experience of our - world-wide development team. - </para> - - <para> - Here is a brief summary of the more notable changes: - - <variablelist> - <varlistentry> - <term> - Multiversion concurrency control(MVCC) - </term> - <listitem> - <para> - This removes our old table-level locking, and replaces it with - a locking system that is superior to most commercial database - systems. In a traditional system, each row that is modified - is locked until committed, preventing reads by other users. - MVCC uses the natural multiversion nature of - <productname>PostgreSQL</productname> to allow readers to - continue reading consistent data during writer activity. - Writers continue to use the compact pg_log transaction system. - This is all performed without having to allocate a lock for - every row like traditional database systems. So, basically, - we no longer are restricted by simple table-level locking; we - have something better than row-level locking. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Hot backups from <application>pg_dump</application> - </term> - <listitem> - <para> - <application>pg_dump</application> takes advantage of the new - MVCC features to give a consistent database dump/backup while - the database stays online and available for queries. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Numeric data type - </term> - <listitem> - <para> - We now have a true numeric data type, with - user-specified precision. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Temporary tables - </term> - <listitem> - <para> - Temporary tables are guaranteed to have unique names - within a database session, and are destroyed on session exit. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - New SQL features - </term> - <listitem> - <para> - We now have CASE, INTERSECT, and EXCEPT statement - support. We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL, - SELECT ... FOR UPDATE, and an improved LOCK TABLE command. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Speedups - </term> - <listitem> - <para> - We continue to speed up <productname>PostgreSQL</productname>, - thanks to the variety of talents within our team. We have - sped up memory allocation, optimization, table joins, and row - transfer routines. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Ports - </term> - <listitem> - <para> - We continue to expand our port list, this time including - <systemitem class="osname">Windows NT</>/<systemitem>ix86</> and <systemitem class="osname">NetBSD</>/<systemitem>arm32</>. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Interfaces - </term> - <listitem> - <para> - Most interfaces have new versions, and existing functionality - has been improved. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term> - Documentation - </term> - <listitem> - <para> - New and updated material is present throughout the - documentation. New <acronym>FAQ</acronym>s have been - contributed for <systemitem class="osname">SGI</> and <systemitem class="osname">AIX</> platforms. - The <citetitle>Tutorial</citetitle> has introductory information - on <acronym>SQL</acronym> from Stefan Simkovics. - For the <citetitle>User's Guide</citetitle>, there are - reference pages covering the postmaster and more utility - programs, and a new appendix - contains details on date/time behavior. - The <citetitle>Administrator's Guide</citetitle> has a new - chapter on troubleshooting from Tom Lane. - And the <citetitle>Programmer's Guide</citetitle> has a - description of query processing, also from Stefan, and details - on obtaining the <productname>PostgreSQL</productname> source - tree via anonymous <productname>CVS</productname> and - <productname>CVSup</productname>. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - - <sect2> - <title>Migration to Version 6.5</title> - - <para> - A dump/restore using <application>pg_dump</application> - is required for those wishing to migrate data from any - previous release of <productname>PostgreSQL</productname>. - <application>pg_upgrade</application> can <emphasis>not</emphasis> - be used to upgrade to this release because the on-disk structure - of the tables has changed compared to previous releases. - </para> - - <para> - The new Multiversion Concurrency Control (MVCC) features can - give somewhat different behaviors in multiuser - environments. <emphasis>Read and understand the following section - to ensure that your existing applications will give you the - behavior you need.</emphasis> - </para> - - <sect3> - <title>Multiversion Concurrency Control</title> - - <para> - Because readers in 6.5 don't lock data, regardless of transaction - isolation level, data read by one transaction can be overwritten by - another. In other words, if a row is returned by - <command>SELECT</command> it doesn't mean that this row really exists - at the time it is returned (i.e. sometime after the statement or - transaction began) nor that the row is protected from being deleted or - updated by concurrent transactions before the current transaction does - a commit or rollback. - </para> - - <para> - To ensure the actual existence of a row and protect it against - concurrent updates one must use <command>SELECT FOR UPDATE</command> or - an appropriate <command>LOCK TABLE</command> statement. This should be - taken into account when porting applications from previous releases of - <productname>PostgreSQL</productname> and other environments. - </para> - - <para> - Keep the above in mind if you are using - <filename>contrib/refint.*</filename> triggers for - referential integrity. Additional techniques are required now. One way is - to use <command>LOCK parent_table IN SHARE ROW EXCLUSIVE MODE</command> - command if a transaction is going to update/delete a primary key and - use <command>LOCK parent_table IN SHARE MODE</command> command if a - transaction is going to update/insert a foreign key. - - <note> - <para> - Note that if you run a transaction in SERIALIZABLE mode then you must - execute the <command>LOCK</command> commands above before execution of any - <acronym>DML</acronym> statement - (<command>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</command>) in the - transaction. - </para> - </note> - </para> - - <para> - These inconveniences will disappear in the future - when the ability to read dirty - (uncommitted) data (regardless of isolation level) and true referential - integrity will be implemented. - </para> - </sect3> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Bug Fixes ---------- -Fix text<->float8 and text<->float4 conversion functions(Thomas) -Fix for creating tables with mixed-case constraints(Billy) -Change exp()/pow() behavior to generate error on underflow/overflow(Jan) -Fix bug in pg_dump -z -Memory overrun cleanups(Tatsuo) -Fix for lo_import crash(Tatsuo) -Adjust handling of data type names to suppress double quotes(Thomas) -Use type coercion for matching columns and DEFAULT(Thomas) -Fix deadlock so it only checks once after one second of sleep(Bruce) -Fixes for aggregates and PL/pgsql(Hiroshi) -Fix for subquery crash(Vadim) -Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo) -Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo) -Fix for pg_dump -d or -D and quote special characters in INSERT -Repair serious problems with dynahash(Tom) -Fix INET/CIDR portability problems -Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce) -Fix executor so mergejoin of different column types works(Tom) -Fix for Alpha OR selectivity bug -Fix OR index selectivity problem(Bruce) -Fix so \d shows proper length for char()/varchar()(Ryan) -Fix tutorial code(Clark) -Improve destroyuser checking(Oliver) -Fix for Kerberos(Rodney McDuff) -Fix for dropping database while dirty buffers(Bruce) -Fix so sequence nextval() can be case-sensitive(Bruce) -Fix !!= operator -Drop buffers before destroying database files(Bruce) -Fix case where executor evaluates functions twice(Tatsuo) -Allow sequence nextval actions to be case-sensitive(Bruce) -Fix optimizer indexing not working for negative numbers(Bruce) -Fix for memory leak in executor with fjIsNull -Fix for aggregate memory leaks(Erik Riedel) -Allow user name containing a dash to grant privileges -Cleanup of NULL in inet types -Clean up system table bugs(Tom) -Fix problems of PAGER and \? command(Masaaki Sakaida) -Reduce default multisegment file size limit to 1GB(Peter) -Fix for dumping of CREATE OPERATOR(Tom) -Fix for backward scanning of cursors(Hiroshi Inoue) -Fix for COPY FROM STDIN when using \i(Tom) -Fix for subselect is compared inside an expression(Jan) -Fix handling of error reporting while returning rows(Tom) -Fix problems with reference to array types(Tom,Jan) -Prevent UPDATE SET oid(Jan) -Fix pg_dump so -t option can handle case-sensitive tablenames -Fixes for GROUP BY in special cases(Tom, Jan) -Fix for memory leak in failed queries(Tom) -DEFAULT now supports mixed-case identifiers(Tom) -Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde) -Disable use of pg_dump with both -o and -d options(Bruce) -Allow pg_dump to properly dump group privileges(Bruce) -Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan) -Fix for computations in views(Jan) -Fix for aggregates on array indexes(Tom) -Fix for DEFAULT handles single quotes in value requiring too many quotes -Fix security problem with non-super users importing/exporting large objects(Tom) -Rollback of transaction that creates table cleaned up properly(Tom) -Fix to allow long table and column names to generate proper serial names(Tom) - -Enhancements ------------- -Add "vacuumdb" utility -Speed up libpq by allocating memory better(Tom) -EXPLAIN all indexes used(Tom) -Implement CASE, COALESCE, NULLIF expression(Thomas) -New pg_dump table output format(Constantin) -Add string min()/max() functions(Thomas) -Extend new type coercion techniques to aggregates(Thomas) -New moddatetime contrib(Terry) -Update to pgaccess 0.96(Constantin) -Add routines for single-byte "char" type(Thomas) -Improved substr() function(Thomas) -Improved multibyte handling(Tatsuo) -Multiversion concurrency control/MVCC(Vadim) -New Serialized mode(Vadim) -Fix for tables over 2gigs(Peter) -New SET TRANSACTION ISOLATION LEVEL(Vadim) -New LOCK TABLE IN ... MODE(Vadim) -Update ODBC driver(Byron) -New NUMERIC data type(Jan) -New SELECT FOR UPDATE(Vadim) -Handle "NaN" and "Infinity" for input values(Jan) -Improved date/year handling(Thomas) -Improved handling of backend connections(Magnus) -New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo) -New TCL_ARRAYS option(Massimo) -New INTERSECT and EXCEPT(Stefan) -New pg_index.indisprimary for primary key tracking(D'Arcy) -New pg_dump option to allow dropping of tables before creation(Brook) -Speedup of row output routines(Tom) -New READ COMMITTED isolation level(Vadim) -New TEMP tables/indexes(Bruce) -Prevent sorting if result is already sorted(Jan) -New memory allocation optimization(Jan) -Allow psql to do \p\g(Bruce) -Allow multiple rule actions(Jan) -Added LIMIT/OFFSET functionality(Jan) -Improve optimizer when joining a large number of tables(Bruce) -New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas) -New intro to backend processing from S. Simkovics' Master's Thesis (Stefan) -Improved int8 support(Ryan Bradetich, Thomas, Tom) -New routines to convert between int8 and text/varchar types(Thomas) -New bushy plans, where meta-tables are joined(Bruce) -Enable right-hand queries by default(Bruce) -Allow reliable maximum number of backends to be set at configure time - (--with-maxbackends and postmaster switch (-N backends))(Tom) -GEQO default now 10 tables because of optimizer speedups(Tom) -Allow NULL=Var for MS-SQL portability(Michael, Bruce) -Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand) -Allow psql \d on a view show query(Ryan) -Speedup for LIKE(Bruce) -Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael) -JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter) -Make % operator have precedence like /(Bruce) -Add new postgres -O option to allow system table structure changes(Bruce) -Update contrib/pginterface/findoidjoins script(Tom) -Major speedup in vacuum of deleted rows with indexes(Vadim) -Allow non-SQL functions to run different versions based on arguments(Tom) -Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida) -Add version number in start-up banners for psql(Masaaki Sakaida) -New contrib/vacuumlo removes large objects not referenced(Peter) -New initialization for table sizes so non-vacuumed tables perform better(Tom) -Improve error messages when a connection is rejected(Tom) -Support for arrays of char() and varchar() fields(Massimo) -Overhaul of hash code to increase reliability and performance(Tom) -Update to PyGreSQL 2.4(D'Arcy) -Changed debug options so -d4 and -d5 produce different node displays(Jan) -New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan) -Better optimization statistics for system table access(Tom) -Better handling of non-default block sizes(Massimo) -Improve GEQO optimizer memory consumption(Tom) -UNION now supports ORDER BY of columns not in target list(Jan) -Major libpq++ improvements(Vince Vielhaber) -pg_dump now uses -z(ACL's) as default(Bruce) -backend cache, memory speedups(Tom) -have pg_dump do everything in one snapshot transaction(Vadim) -fix for large object memory leakage, fix for pg_dumping(Tom) -INET type now respects netmask for comparisons -Make VACUUM ANALYZE only use a readlock(Vadim) -Allow VIEWs on UNIONS(Jan) -pg_dump now can generate consistent snapshots on active databases(Vadim) - -Source Tree Changes -------------------- -Improve port matching(Tom) -Portability fixes for SunOS -Add Windows NT backend port and enable dynamic loading(Magnus and Daniel Horak) -New port to Cobalt Qube(Mips) running Linux(Tatsuo) -Port to NetBSD/m68k(Mr. Mutsuki Nakajima) -Port to NetBSD/sun3(Mr. Mutsuki Nakajima) -Port to NetBSD/macppc(Toshimi Aoki) -Fix for tcl/tk configuration(Vince) -Removed CURRENT key word for rule queries(Jan) -NT dynamic loading now works(Daniel Horak) -Add ARM32 support(Andrew McMurry) -Better support for HP-UX 11 and UnixWare -Improve file handling to be more uniform, prevent file descriptor leak(Tom) -New install commands for plpgsql(Jan) - </programlisting> - </para> - </sect2> - </sect1> - - -<sect1 id="release-6-4-2"> -<title>Release 6.4.2</title> - - <note> - <title>Release date</title> - <simpara>1998-12-20</simpara> - </note> - -<para> -The 6.4.1 release was improperly packaged. This also has one additional -bug fix. -</para> - - -<sect2> -<title>Migration to Version 6.4.2</title> - -<para> -A dump/restore is <emphasis>not</emphasis> required for those running -6.4.*. -</para> -</sect2> -<sect2> -<title>Changes</title> - -<para> -<programlisting> -Fix for datetime constant problem on some platforms(Thomas) -</programlisting> -</para> -</sect2> -</sect1> - - - -<sect1 id="release-6-4-1"> -<title>Release 6.4.1</title> - - <note> - <title>Release date</title> - <simpara>1998-12-18</simpara> - </note> - -<para> -This is basically a cleanup release for 6.4. We have fixed a variety of -problems reported by 6.4 users. -</para> - - -<sect2> -<title>Migration to Version 6.4.1</title> - -<para> -A dump/restore is <emphasis>not</emphasis> required for those running -6.4. -</para> -</sect2> -<sect2> -<title>Changes</title> - -<para> -<programlisting> -Add pg_dump -N flag to force double quotes around identifiers. This is - the default(Thomas) -Fix for NOT in where clause causing crash(Bruce) -EXPLAIN VERBOSE coredump fix(Vadim) -Fix shared-library problems on Linux -Fix test for table existence to allow mixed-case and whitespace in - the table name(Thomas) -Fix a couple of pg_dump bugs -Configure matches template/.similar entries better(Tom) -Change builtin function names from SPI_* to spi_* -OR WHERE clause fix(Vadim) -Fixes for mixed-case table names(Billy) -contrib/linux/postgres.init.csh/sh fix(Thomas) -libpq memory overrun fix -SunOS fixes(Tom) -Change exp() behavior to generate error on underflow(Thomas) -pg_dump fixes for memory leak, inheritance constraints, layout change -update pgaccess to 0.93 -Fix prototype for 64-bit platforms -Multibyte fixes(Tatsuo) -New ecpg man page -Fix memory overruns(Tatsuo) -Fix for lo_import() crash(Bruce) -Better search for install program(Tom) -Timezone fixes(Tom) -HP-UX fixes(Tom) -Use implicit type coercion for matching DEFAULT values(Thomas) -Add routines to help with single-byte (internal) character type(Thomas) -Compilation of libpq for Windows fixes(Magnus) -Upgrade to PyGreSQL 2.2(D'Arcy) -</programlisting> -</para> -</sect2> -</sect1> - - - -<sect1 id="release-6-4"> -<title>Release 6.4</title> - - <note> - <title>Release date</title> - <simpara>1998-10-30</simpara> - </note> - -<para> -There are <emphasis>many</emphasis> new features and improvements in this release. -Thanks to our developers and maintainers, nearly every aspect of the system -has received some attention since the previous release. -Here is a brief, incomplete summary: - -<itemizedlist> -<listitem> -<para> -Views and rules are now functional thanks to extensive new code in the -rewrite rules system from Jan Wieck. He also wrote a chapter on it -for the <citetitle>Programmer's Guide</citetitle>. -</para> -</listitem> -<listitem> -<para> -Jan also contributed a second procedural language, <application>PL/pgSQL</application>, to go with the -original <application>PL/pgTCL</application> procedural language he contributed last release. -</para> -</listitem> - -<listitem> -<para> -We have optional multiple-byte character set support from Tatsuo Ishii -to complement our existing locale support. -</para> -</listitem> - -<listitem> -<para> -Client/server communications has been cleaned up, with better support for -asynchronous messages and interrupts thanks to Tom Lane. -</para> -</listitem> - -<listitem> -<para> -The parser will now perform automatic type coercion to match arguments -to available operators and functions, and to match columns and expressions -with target columns. This uses a generic mechanism which supports -the type extensibility features of <productname>PostgreSQL</productname>. -There is a new chapter in the <citetitle>User's Guide</citetitle> -which covers this topic. -</para> -</listitem> - -<listitem> -<para> -Three new data types have been added. -Two types, <type>inet</type> and <type>cidr</type>, support various forms -of IP network, subnet, and machine addressing. There is now an 8-byte integer -type available on some platforms. See the chapter on data types -in the <citetitle>User's Guide</citetitle> for details. -A fourth type, <type>serial</type>, is now supported by the parser as an -amalgam of the <type>int4</type> type, a sequence, and a unique index. -</para> -</listitem> - -<listitem> -<para> -Several more <acronym>SQL92</acronym>-compatible syntax features have been -added, including <command>INSERT DEFAULT VALUES</command> -</para> -</listitem> - -<listitem> -<para> -The automatic configuration and installation system has received some -attention, and should be more robust for more platforms than it has ever -been. -</para> -</listitem> - -</itemizedlist> -</para> - -<sect2> -<title>Migration to Version 6.4</title> - -<para> -A dump/restore using <application>pg_dump</application> -or <application>pg_dumpall</application> -is required for those wishing to migrate data from any -previous release of <productname>PostgreSQL</productname>. -</para> -</sect2> - - <sect2> -<title>Changes</title> - - <para> - <programlisting> -Bug Fixes ---------- -Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan) -Remove char2-16 data types, use char/varchar(Darren) -Pqfn not handles a NOTICE message(Anders) -Reduced busywaiting overhead for spinlocks with many backends (dg) -Stuck spinlock detection (dg) -Fix up "ISO-style" timespan decoding and encoding(Thomas) -Fix problem with table drop after rollback of transaction(Vadim) -Change error message and remove non-functional update message(Vadim) -Fix for COPY array checking -Fix for SELECT 1 UNION SELECT NULL -Fix for buffer leaks in large object calls(Pascal) -Change owner from oid to int4 type(Bruce) -Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim() -Fix for shared invalidation cache overflow(Massimo) -Prevent file descriptor leaks in failed COPY's(Bruce) -Fix memory leak in libpgtcl's pg_select(Constantin) -Fix problems with username/passwords over 8 characters(Tom) -Fix problems with handling of asynchronous NOTIFY in backend(Tom) -Fix of many bad system table entries(Tom) - -Enhancements ------------- -Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael) -Show the index used in an EXPLAIN(Zeugswetter) -EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan) -Multibyte awareness of many data types and functions, via configure(Tatsuo) -New configure --with-mb option(Tatsuo) -New initdb --pgencoding option(Tatsuo) -New createdb -E multibyte option(Tatsuo) -Select version(); now returns PostgreSQL version(Jeroen) -libpq now allows asynchronous clients(Tom) -Allow cancel from client of backend query(Tom) -psql now cancels query with Control-C(Tom) -libpq users need not issue dummy queries to get NOTIFY messages(Tom) -NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom) -PGresult struct now includes associated error message, if any(Tom) -Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas) -Add routines to convert between varchar and bpchar(Thomas) -Add routines to allow sizing of varchar and bpchar into target columns(Thomas) -Add bit flags to support timezonehour and minute in data retrieval(Thomas) -Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas) -Fixes for unary minus parsing with leading spaces(Thomas) -Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas) -Check for and properly ignore FOREIGN KEY column constraints(Thomas) -Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas) -Enable HAVING clause but no fixes elsewhere yet. -Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas) -Save string type if specified for DEFAULT clause handling(Thomas) -Coerce operations involving different data types(Thomas) -Allow some index use for columns of different types(Thomas) -Add capabilities for automatic type conversion(Thomas) -Cleanups for large objects, so file is truncated on open(Peter) -Readline cleanups(Tom) -Allow psql \f \ to make spaces as delimiter(Bruce) -Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce) -Msql compatibility library in /contrib(Aldrin) -Remove the requirement that ORDER/GROUP BY clause identifiers be -included in the target list(David) -Convert columns to match columns in UNION clauses(Thomas) -Remove fork()/exec() and only do fork()(Bruce) -Jdbc cleanups(Peter) -Show backend status on ps command line(only works on some platforms)(Bruce) -Pg_hba.conf now has a sameuser option in the database field -Make lo_unlink take oid param, not int4 -New DISABLE_COMPLEX_MACRO for compilers that cannot handle our macros(Bruce) -Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom) -libpgtcl cleanups(Tom) -Add -error option to libpgtcl's pg_result command(Tom) -New locale patch, see docs/README/locale(Oleg) -Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb) -New contrib/lo code for large object orphan removal(Peter) -New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes -feature, see /doc/README.mb(Tatsuo) -contrib/noupdate code to revoke update permission on a column -libpq can now be compiled on Windows(Magnus) -Add PQsetdbLogin() in libpq -New 8-byte integer type, checked by configure for OS support(Thomas) -Better support for quoted table/column names(Thomas) -Surround table and column names with double-quotes in pg_dump(Thomas) -PQreset() now works with passwords(Tom) -Handle case of GROUP BY target list column number out of range(David) -Allow UNION in subselects -Add auto-size to screen to \d? commands(Bruce) -Use UNION to show all \d? results in one query(Bruce) -Add \d? field search feature(Bruce) -Pg_dump issues fewer \connect requests(Tom) -Make pg_dump -z flag work better, document it in manual page(Tom) -Add HAVING clause with full support for subselects and unions(Stephan) -Full text indexing routines in contrib/fulltextindex(Maarten) -Transaction ids now stored in shared memory(Vadim) -New PGCLIENTENCODING when issuing COPY command(Tatsuo) -Support for SQL92 syntax "SET NAMES"(Tatsuo) -Support for LATIN2-5(Tatsuo) -Add UNICODE regression test case(Tatsuo) -Lock manager cleanup, new locking modes for LLL(Vadim) -Allow index use with OR clauses(Bruce) -Allows "SELECT NULL ORDER BY 1;" -Explain VERBOSE prints the plan, and now pretty-prints the plan to -the postmaster log file(Bruce) -Add indexes display to \d command(Bruce) -Allow GROUP BY on functions(David) -New pg_class.relkind for large objects(Bruce) -New way to send libpq NOTICE messages to a different location(Tom) -New \w write command to psql(Bruce) -New /contrib/findoidjoins scans oid columns to find join relationships(Bruce) -Allow binary-compatible indexes to be considered when checking for valid -Indexes for restriction clauses containing a constant(Thomas) -New ISBN/ISSN code in /contrib/isbn_issn -Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas) -New rewrite system fixes many problems with rules and views(Jan) - * Rules on relations work - * Event qualifications on insert/update/delete work - * New OLD variable to reference CURRENT, CURRENT will be remove in future - * Update rules can reference NEW and OLD in rule qualifications/actions - * Insert/update/delete rules on views work - * Multiple rule actions are now supported, surrounded by parentheses - * Regular users can create views/rules on tables they have RULE permits - * Rules and views inherit the privileges of the creator - * No rules at the column level - * No UPDATE NEW/OLD rules - * New pg_tables, pg_indexes, pg_rules and pg_views system views - * Only a single action on SELECT rules - * Total rewrite overhaul, perhaps for 6.5 - * handle subselects - * handle aggregates on views - * handle insert into select from view works -System indexes are now multikey(Bruce) -Oidint2, oidint4, and oidname types are removed(Bruce) -Use system cache for more system table lookups(Bruce) -New backend programming language PL/pgSQL in backend/pl(Jan) -New SERIAL data type, auto-creates sequence/index(Thomas) -Enable assert checking without a recompile(Massimo) -User lock enhancements(Massimo) -New setval() command to set sequence value(Massimo) -Auto-remove unix socket file on start-up if no postmaster running(Massimo) -Conditional trace package(Massimo) -New UNLISTEN command(Massimo) -psql and libpq now compile under Windows using win32.mak(Magnus) -Lo_read no longer stores trailing NULL(Bruce) -Identifiers are now truncated to 31 characters internally(Bruce) -Createuser options now available on the command line -Code for 64-bit integer supported added, configure tested, int8 type(Thomas) -Prevent file descriptor leaf from failed COPY(Bruce) -New pg_upgrade command(Bruce) -Updated /contrib directories(Massimo) -New CREATE TABLE DEFAULT VALUES statement available(Thomas) -New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas) -New DECLARE and FETCH feature(Thomas) -libpq's internal structures now not exported(Tom) -Allow up to 8 key indexes(Bruce) -Remove ARCHIVE key word, that is no longer used(Thomas) -pg_dump -n flag to suppress quotes around indentifiers -disable system columns for views(Jan) -new INET and CIDR types for network addresses(TomH, Paul) -no more double quotes in psql output -pg_dump now dumps views(Terry) -new SET QUERY_LIMIT(Tatsuo,Jan) - -Source Tree Changes -------------------- -/contrib cleanup(Jun) -Inline some small functions called for every row(Bruce) -Alpha/linux fixes -HP-UX cleanups(Tom) -Multibyte regression tests(Soonmyung.) -Remove --disabled options from configure -Define PGDOC to use POSTGRESDIR by default -Make regression optional -Remove extra braces code to pgindent(Bruce) -Add bsdi shared library support(Bruce) -New --without-CXX support configure option(Brook) -New FAQ_CVS -Update backend flowchart in tools/backend(Bruce) -Change atttypmod from int16 to int32(Bruce, Tom) -Getrusage() fix for platforms that do not have it(Tom) -Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page -NS32K platform fixes(Phil Nelson, John Buller) -SCO 7/UnixWare 2.x fixes(Billy,others) -Sparc/Solaris 2.5 fixes(Ryan) -Pgbuiltin.3 is obsolete, move to doc files(Thomas) -Even more documentation(Thomas) -Nextstep support(Jacek) -Aix support(David) -pginterface manual page(Bruce) -shared libraries all have version numbers -merged all OS-specific shared library defines into one file -smarter TCL/TK configuration checking(Billy) -smarter perl configuration(Brook) -configure uses supplied install-sh if no install script found(Tom) -new Makefile.shlib for shared library configuration(Tom) -</programlisting> -</para> -</sect2> -</sect1> - -<sect1 id="release-6-3-2"> -<title>Release 6.3.2</title> - - <note> - <title>Release date</title> - <simpara>1998-04-07</simpara> - </note> - -<para> -This is a bug-fix release for 6.3.x. -Refer to the release notes for version 6.3 for a more complete summary of new features. -</para> -<para> -Summary: - -<itemizedlist> -<listitem> -<para> -Repairs automatic configuration support for some platforms, including Linux, -from breakage inadvertently introduced in version 6.3.1. -</para> -</listitem> - -<listitem> -<para> -Correctly handles function calls on the left side of BETWEEN and LIKE clauses. -</para> -</listitem> - -</itemizedlist> -</para> -<para> -A dump/restore is NOT required for those running 6.3 or 6.3.1. A -<literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required. -This last step should be performed while the postmaster is not running. -You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries. -</para> -<para> -For upgrades from pre-6.3 installations, -refer to the installation and migration instructions for version 6.3. -</para> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Configure detection improvements for tcl/tk(Brook Milligan, Alvin) -Manual page improvements(Bruce) -BETWEEN and LIKE fix(Thomas) -fix for psql \connect used by pg_dump(Oliver Elphick) -New odbc driver -pgaccess, version 0.86 -qsort removed, now uses libc version, cleanups(Jeroen) -fix for buffer over-runs detected(Maurice Gittens) -fix for buffer overrun in libpgtcl(Randy Kunkee) -fix for UNION with DISTINCT or ORDER BY(Bruce) -gettimeofday configure check(Doug Winterburn) -Fix "indexes not used" bug(Vadim) -docs additions(Thomas) -Fix for backend memory leak(Bruce) -libreadline cleanup(Erwan MAS) -Remove DISTDIR(Bruce) -Makefile dependency cleanup(Jeroen van Vianen) -ASSERT fixes(Bruce) - </programlisting> - </para> - </sect2> - </sect1> - - <sect1 id="release-6-3-1"> - <title>Release 6.3.1</title> - - <note> - <title>Release date</title> - <simpara>1998-03-23</simpara> - </note> - - <para> - Summary: - -<itemizedlist> -<listitem> -<para> -Additional support for multibyte character sets. -</para> -</listitem> - -<listitem> -<para> -Repair byte ordering for mixed-endian clients and servers. -</para> -</listitem> - -<listitem> -<para> -Minor updates to allowed SQL syntax. -</para> -</listitem> - -<listitem> -<para> -Improvements to the configuration autodetection for installation. -</para> -</listitem> - -</itemizedlist> -</para> -<para> -A dump/restore is NOT required for those running 6.3. A -<literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required. -This last step should be performed while the postmaster is not running. -You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries. -</para> -<para> -For upgrades from pre-6.3 installations, -refer to the installation and migration instructions for version 6.3. -</para> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -ecpg cleanup/fixes, now version 1.1(Michael Meskes) -pg_user cleanup(Bruce) -large object fix for pg_dump and tclsh (alvin) -LIKE fix for multiple adjacent underscores -fix for redefining builtin functions(Thomas) -ultrix4 cleanup -upgrade to pg_access 0.83 -updated CLUSTER manual page -multibyte character set support, see doc/README.mb(Tatsuo) -configure --with-pgport fix -pg_ident fix -big-endian fix for backend communications(Kataoka) -SUBSTR() and substring() fix(Jan) -several jdbc fixes(Peter) -libpgtcl improvements, see libptcl/README(Randy Kunkee) -Fix for "Datasize = 0" error(Vadim) -Prevent \do from wrapping(Bruce) -Remove duplicate Russian character set entries -Sunos4 cleanup -Allow optional TABLE key word in LOCK and SELECT INTO(Thomas) -CREATE SEQUENCE options to allow a negative integer(Thomas) -Add "PASSWORD" as an allowed column identifier(Thomas) -Add checks for UNION target fields(Bruce) -Fix Alpha port(Dwayne Bailey) -Fix for text arrays containing quotes(Doug Gibson) -Solaris compile fix(Albert Chin-A-Young) -Better identify tcl and tk libs and includes(Bruce) - </programlisting> - </para> - </sect2> - </sect1> - - <sect1 id="release-6-3"> - <title>Release 6.3</title> - - <note> - <title>Release date</title> - <simpara>1998-03-01</simpara> - </note> - - <para> - There are <emphasis>many</emphasis> new features and improvements in this release. - Here is a brief, incomplete summary: - - <itemizedlist> - <listitem> - <para> - Many new SQL features, including - full <acronym>SQL92</acronym> subselect capability - (everything is here but target-list subselects). - </para> - </listitem> - - <listitem> - <para> - Support for client-side environment variables to specify time zone and date style. - </para> - </listitem> - - <listitem> - <para> - Socket interface for client/server connection. This is the default now - so you might need to start <application>postmaster</application> with the - <option>-i</option> flag. - </para> - </listitem> - - <listitem> - <para> - Better password authorization mechanisms. Default table privileges have changed. - </para> - </listitem> - - <listitem> - <para> - Old-style <firstterm>time travel</firstterm> - has been removed. Performance has been improved. - </para> - </listitem> - </itemizedlist> - </para> - - <note> - <para> - Bruce Momjian wrote the following notes to introduce the new release. - </para> - </note> - - <para> - There are some general 6.3 issues that I want to mention. These are - only the big items that cannot be described in one sentence. A review - of the detailed changes list is still needed. - </para> - <para> - First, we now have subselects. Now that we have them, I would like to - mention that without subselects, SQL is a very limited language. - Subselects are a major feature, and you should review your code for - places where subselects provide a better solution for your queries. I - think you will find that there are more uses for subselects than you might - think. Vadim has put us on the big SQL map with subselects, and fully - functional ones too. The only thing you cannot do with subselects is to - use them in the target list. - </para> - <para> - Second, 6.3 uses Unix domain sockets rather than TCP/IP by default. To - enable connections from other machines, you have to use the new - postmaster -i option, and of course edit <filename>pg_hba.conf</filename>. Also, for this - reason, the format of <filename>pg_hba.conf</filename> has changed. - </para> - <para> - Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or - <type>text</type>. Specifically, the <type>text</> and <type>varchar()</type> have a penalty for access to - any columns after the first column of this type. <type>char()</type> used to also - have this access penalty, but it no longer does. This might suggest that - you redesign some of your tables, especially if you have short character - columns that you have defined as <type>varchar()</type> or <type>text</type>. This and other - changes make 6.3 even faster than earlier releases. - </para> - <para> - We now have passwords definable independent of any Unix file. There are - new SQL USER commands. - See the <citetitle>Administrator's Guide</citetitle> for more - information. There is a new table, pg_shadow, which is used to store - user information and user passwords, and it by default only SELECT-able - by the <systemitem>postgres</systemitem> super-user. pg_user is now a view of pg_shadow, and is - SELECT-able by PUBLIC. You should keep using pg_user in your - application without changes. - </para> - <para> - User-created tables now no longer have SELECT privilege to PUBLIC by - default. This was done because the ANSI standard requires it. You can - of course GRANT any privileges you want after the table is created. - System tables continue to be SELECT-able by PUBLIC. - </para> - <para> - We also have real deadlock detection code. No more sixty-second - timeouts. And the new locking code implements a <acronym>FIFO</acronym> better, so there - should be less resource starvation during heavy use. - </para> - <para> - Many complaints have been made about inadequate documentation in previous - releases. Thomas has put much effort into many new manuals for this - release. Check out the doc/ directory. - </para> - <para> - For performance reasons, time travel is gone, but can be implemented - using triggers (see <filename>pgsql/contrib/spi/README</filename>). Please check out the new - \d command for types, operators, etc. Also, views have their own - privileges now, not based on the underlying tables, so privileges on - them have to be set separately. Check <filename>/pgsql/interfaces</filename> for some new - ways to talk to <productname>PostgreSQL</productname>. - </para> - <para> - This is the first release that really required an explanation for - existing users. In many ways, this was necessary because the new - release removes many limitations, and the work-arounds people were using - are no longer needed. - </para> - - <sect2> - <title>Migration to Version 6.3</title> - - <para> - A dump/restore using <application>pg_dump</application> - or <application>pg_dumpall</application> - is required for those wishing to migrate data from any - previous release of <productname>PostgreSQL</productname>. - </para> - </sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Bug Fixes ---------- -Fix binary cursors broken by MOVE implementation(Vadim) -Fix for tcl library crash(Jan) -Fix for array handling, from Gerhard Hintermayer -Fix acl error, and remove duplicate pqtrace(Bruce) -Fix psql \e for empty file(Bruce) -Fix for textcat on varchar() fields(Bruce) -Fix for DBT Sendproc (Zeugswetter Andres) -Fix vacuum analyze syntax problem(Bruce) -Fix for international identifiers(Tatsuo) -Fix aggregates on inherited tables(Bruce) -Fix substr() for out-of-bounds data -Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce) -Fix notty output to show status result. -q option still turns it off(Bruce) -Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce) -Fix cluster(Bruce) -Fix for PQtrace start/stop several times(Bruce) -Fix a variety of locking problems like newer lock waiters getting - lock before older waiters, and having readlock people not share - locks if a writer is waiting for a lock, and waiting writers not - getting priority over waiting readers(Bruce) -Fix crashes in psql when executing queries from external files(James) -Fix problem with multiple order by columns, with the first one having - NULL values(Jeroen) -Use correct hash table support functions for float8 and int4(Thomas) -Re-enable JOIN= option in CREATE OPERATOR statement (Thomas) -Change precedence for boolean operators to match expected behavior(Thomas) -Generate elog(ERROR) on over-large integer(Bruce) -Allow multiple-argument functions in constraint clauses(Thomas) -Check boolean input literals for 'true','false','yes','no','1','0' - and throw elog(ERROR) if unrecognized(Thomas) -Major large objects fix -Fix for GROUP BY showing duplicates(Vadim) -Fix for index scans in MergeJoin(Vadim) - -Enhancements ------------- -Subselects with EXISTS, IN, ALL, ANY key words (Vadim, Bruce, Thomas) -New User Manual(Thomas, others) -Speedup by inlining some frequently-called functions -Real deadlock detection, no more timeouts(Bruce) -Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, - CURRENT_USER(Thomas) -Modify constraint syntax to be SQL92-compliant(Thomas) -Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas) -Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas) -Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas) -Allow PostgreSQL-style casting ("::") of non-constants(Thomas) -Add support for SQL3 TRUE and FALSE boolean constants(Thomas) -Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas) -Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas) -Allow SQL92 delimited identifiers(Thomas) -Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas) -Support SQL92 syntax for type coercion of literal strings - (e.g. "DATETIME 'now'")(Thomas) -Add conversions for int2, int4, and OID types to and from text(Thomas) -Use shared lock when building indexes(Vadim) -Free memory allocated for an user query inside transaction block after - this query is done, was turned off in <= 6.2.1(Vadim) -New SQL statement CREATE PROCEDURAL LANGUAGE(Jan) -New <productname>PostgreSQL</productname> Procedural Language (PL) backend interface(Jan) -Rename pg_dump -H option to -h(Bruce) -Add Java support for passwords, European dates(Peter) -Use indexes for LIKE and ~, !~ operations(Bruce) -Add hash functions for datetime and timespan(Thomas) -Time Travel removed(Vadim, Bruce) -Add paging for \d and \z, and fix \i(Bruce) -Add Unix domain socket support to backend and to frontend library(Goran) -Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas) -Allow more SQL92 and/or <productname>PostgreSQL</productname> reserved words as column identifiers(Thomas) -Augment support for SQL92 SET TIME ZONE...(Thomas) -SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas) -Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas) -Enable SET TIME ZONE using TZ environment variable(Thomas) -Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas) -Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO - frontend library initialization environment variables(Thomas) -Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas) -Add pg_description table for info on tables, columns, operators, types, and - aggregates(Bruce) -Increase 16 char limit on system table/index names to 32 characters(Bruce) -Rename system indexes(Bruce) -Add 'GERMAN' option to SET DATESTYLE(Thomas) -Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas) -Allow fractional values for delta times (e.g. '2.5 days')(Thomas) -Validate numeric input more carefully for delta times(Thomas) -Implement day of year as possible input to date_part()(Thomas) -Define timespan_finite() and text_timespan() functions(Thomas) -Remove archive stuff(Bruce) -Allow for a pg_password authentication database that is separate from - the system password file(Todd) -Dump ACLs, GRANT, REVOKE privileges(Matt) -Define text, varchar, and bpchar string length functions(Thomas) -Fix Query handling for inheritance, and cost computations(Bruce) -Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas) -Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas) -Implement UNIONs for SELECT(Bruce) -Add UNION, GROUP, DISTINCT to INSERT(Bruce) -varchar() stores only necessary bytes on disk(Bruce) -Fix for BLOBs(Peter) -Mega-Patch for JDBC...see README_6.3 for list of changes(Peter) -Remove unused "option" from PQconnectdb() -New LOCK command and lock manual page describing deadlocks(Bruce) -Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce) -Enhance psql \z to show sequences(Bruce) -Show NOT NULL and DEFAULT in psql \d table(Bruce) -New psql .psqlrc file start-up(Andrew) -Modify sample start-up script in contrib/linux to show syslog(Thomas) -New types for IP and MAC addresses in contrib/ip_and_mac(TomH) -Unix system time conversions with date/time types in contrib/unixdate(Thomas) -Update of contrib stuff(Massimo) -Add Unix socket support to DBD::Pg(Goran) -New python interface (PyGreSQL 2.0)(D'Arcy) -New frontend/backend protocol has a version number, network byte order(Phil) -Security features in pg_hba.conf enhanced and documented, many cleanups(Phil) -CHAR() now faster access than VARCHAR() or TEXT -ecpg embedded SQL preprocessor -Reduce system column overhead(Vadmin) -Remove pg_time table(Vadim) -Add pg_type attribute to identify types that need length (bpchar, varchar) -Add report of offending line when COPY command fails -Allow VIEW privileges to be set separately from the underlying tables. - For security, use GRANT/REVOKE on views as appropriate(Jan) -Tables now have no default GRANT SELECT TO PUBLIC. You must - explicitly grant such privileges. -Clean up tutorial examples(Darren) - -Source Tree Changes -------------------- -Add new html development tools, and flow chart in /tools/backend -Fix for SCO compiles -Stratus computer port Robert Gillies -Added support for shlib for BSD44_derived & i386_solaris -Make configure more automated(Brook) -Add script to check regression test results -Break parser functions into smaller files, group together(Bruce) -Rename heap_create to heap_create_and_catalog, rename heap_creatr - to heap_create()(Bruce) -Sparc/Linux patch for locking(TomS) -Remove PORTNAME and reorganize port-specific stuff(Marc) -Add optimizer README file(Bruce) -Remove some recursion in optimizer and clean up some code there(Bruce) -Fix for NetBSD locking(Henry) -Fix for libptcl make(Tatsuo) -AIX patch(Darren) -Change IS TRUE, IS FALSE, ... to expressions using "=" rather than - function calls to istrue() or isfalse() to allow optimization(Thomas) -Various fixes NetBSD/Sparc related(TomH) -Alpha linux locking(Travis,Ryan) -Change elog(WARN) to elog(ERROR)(Bruce) -FAQ for FreeBSD(Marc) -Bring in the PostODBC source tree as part of our standard distribution(Marc) -A minor patch for HP/UX 10 vs 9(Stan) -New pg_attribute.atttypmod for type-specific info like varchar length(Bruce) -UnixWare patches(Billy) -New i386 'lock' for spinlock asm(Billy) -Support for multiplexed backends is removed -Start an OpenBSD port -Start an AUX port -Start a Cygnus port -Add string functions to regression suite(Thomas) -Expand a few function names formerly truncated to 16 characters(Thomas) -Remove un-needed malloc() calls and replace with palloc()(Bruce) -</programlisting> -</para> -</sect2> -</sect1> - -<sect1 id="release-6-2-1"> -<title>Release 6.2.1</title> - - <note> - <title>Release date</title> - <simpara>1997-10-17</simpara> - </note> - -<para> -6.2.1 is a bug-fix and usability release on 6.2. -</para> -<para> -Summary: - -<itemizedlist> -<listitem> -<para> -Allow strings to span lines, per <acronym>SQL92</acronym>. -</para> -</listitem> - -<listitem> -<para> -Include example trigger function for inserting user names on table updates. -</para> -</listitem> - -</itemizedlist> -</para> -<para> -This is a minor bug-fix release on 6.2. -For upgrades from pre-6.2 systems, a full dump/reload is required. -Refer to the 6.2 release notes for instructions. -</para> - -<sect2> -<title>Migration from version 6.2 to version 6.2.1</title> - -<para> -This is a minor bug-fix release. A dump/reload is not required from version 6.2, -but is required from any release prior to 6.2. -</para> -<para> -In upgrading from version 6.2, if you choose to dump/reload you will find that -avg(money) is now calculated correctly. All other bug fixes take effect -upon updating the executables. -</para> -<para> -Another way to avoid dump/reload is to use the following SQL command -from <command>psql</command> to update the existing system table: - -<programlisting> - update pg_aggregate set aggfinalfn = 'cash_div_flt8' - where aggname = 'avg' and aggbasetype = 790; -</programlisting> -</para> -<para> -This will need to be done to every existing database, including template1. -</para> -</sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Allow TIME and TYPE column names(Thomas) -Allow larger range of true/false as boolean values(Thomas) -Support output of "now" and "current"(Thomas) -Handle DEFAULT with INSERT of NULL properly(Vadim) -Fix for relation reference counts problem in buffer manager(Vadim) -Allow strings to span lines, like ANSI(Thomas) -Fix for backward cursor with ORDER BY(Vadim) -Fix avg(cash) computation(Thomas) -Fix for specifying a column twice in ORDER/GROUP BY(Vadim) -Documented new libpq function to return affected rows, PQcmdTuples(Bruce) -Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan) - </programlisting> - </para> - </sect2> - </sect1> - -<sect1 id="release-6-2"> -<title>Release 6.2</title> - - <note> - <title>Release date</title> - <simpara>1997-10-02</simpara> - </note> - -<para> -A dump/restore is required for those wishing to migrate data from -previous releases of <productname>PostgreSQL</productname>. -</para> - -<sect2> -<title>Migration from version 6.1 to version 6.2</title> - -<para> -This migration requires a complete dump of the 6.1 database and a -restore of the database in 6.2. -</para> -<para> -Note that the <command>pg_dump</command> and <command>pg_dumpall</command> utility from 6.2 should be used -to dump the 6.1 database. -</para> -</sect2> - -<sect2> -<title>Migration from version 1.<replaceable>x</> to version 6.2</title> - -<para> -Those migrating from earlier 1.* releases should first upgrade to 1.09 -because the COPY output format was improved from the 1.02 release. -</para> -</sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Bug Fixes ---------- -Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce) -Fix compile errors on overflow due to shifts, unsigned, and bad prototypes - from Solaris(Diab Jerius) -Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas) -Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas) -Catch non-functional delete attempts(Vadim) -Change time function names to be more consistent(Michael Reifenberg) -Check for zero divides(Michael Reifenberg) -Fix very old bug which made rows changed/inserted by a command - visible to the command itself (so we had multiple update of - updated rows, etc.)(Vadim) -Fix for SELECT null, 'fail' FROM pg_am (Patrick) -SELECT NULL as EMPTY_FIELD now allowed(Patrick) -Remove un-needed signal stuff from contrib/pginterface -Fix OR (where x != 1 or x isnull didn't return rows with x NULL) (Vadim) -Fix time_cmp function (Vadim) -Fix handling of functions with non-attribute first argument in - WHERE clauses (Vadim) -Fix GROUP BY when order of entries is different from order - in target list (Vadim) -Fix pg_dump for aggregates without sfunc1 (Vadim) - -Enhancements ------------- -Default genetic optimizer GEQO parameter is now 8(Bruce) -Allow use parameters in target list having aggregates in functions(Vadim) -Added JDBC driver as an interface(Adrian & Peter) -pg_password utility -Return number of rows inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim) -Triggers implemented with CREATE TRIGGER (SQL3)(Vadim) -SPI (Server Programming Interface) allows execution of queries inside - C-functions (Vadim) -NOT NULL implemented (SQL92)(Robson Paniago de Miranda) -Include reserved words for string handling, outer joins, and unions(Thomas) -Implement extended comments ("/* ... */") using exclusive states(Thomas) -Add "//" single-line comments(Bruce) -Remove some restrictions on characters in operator names(Thomas) -DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas) -Add text concatenation operator and function (SQL92)(Thomas) -Support WITH TIME ZONE syntax (SQL92)(Thomas) -Support INTERVAL unit TO unit syntax (SQL92)(Thomas) -Define types DOUBLE PRECISION, INTERVAL, CHARACTER, - and CHARACTER VARYING (SQL92)(Thomas) -Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas) -Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas) -Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas) -Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas) -Add more reserved words, mostly for SQL92 compliance(Thomas) -Allow hh:mm:ss time entry for timespan/reltime types(Thomas) -Add center() routines for lseg, path, polygon(Thomas) -Add distance() routines for circle-polygon, polygon-polygon(Thomas) -Check explicitly for points and polygons contained within polygons - using an axis-crossing algorithm(Thomas) -Add routine to convert circle-box(Thomas) -Merge conflicting operators for different geometric data types(Thomas) -Replace distance operator "<===>" with "<->"(Thomas) -Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas) -Add routines for text trimming on both ends, substring, and string position(Thomas) -Added conversion routines circle(box) and poly(circle)(Thomas) -Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim) -Allow functions and operators on internally-identical types to succeed(Bruce) -Speed up backend start-up after profiling analysis(Bruce) -Inline frequently called functions for performance(Bruce) -Reduce open() calls(Bruce) -psql: Add PAGER for \h and \?,\C fix -Fix for psql pager when no tty(Bruce) -New entab utility(Bruce) -General trigger functions for referential integrity (Vadim) -General trigger functions for time travel (Vadim) -General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim) -MOVE implementation (Vadim) - -Source Tree Changes -------------------- -HP-UX 10 patches (Vladimir Turin) -Added SCO support, (Daniel Harris) -MkLinux patches (Tatsuo Ishii) -Change geometric box terminology from "length" to "width"(Thomas) -Deprecate temporary unstored slope fields in geometric code(Thomas) -Remove restart instructions from INSTALL(Bruce) -Look in /usr/ucb first for install(Bruce) -Fix c++ copy example code(Thomas) -Add -o to psql manual page(Bruce) -Prevent relname unallocated string length from being copied into database(Bruce) -Cleanup for NAMEDATALEN use(Bruce) -Fix pg_proc names over 15 chars in output(Bruce) -Add strNcpy() function(Bruce) -remove some (void) casts that are unnecessary(Bruce) -new interfaces directory(Marc) -Replace fopen() calls with calls to fd.c functions(Bruce) -Make functions static where possible(Bruce) -enclose unused functions in #ifdef NOT_USED(Bruce) -Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas) -Changes for Digital Unix -Portability fix for pg_dumpall(Bruce) -Rename pg_attribute.attnvals to attdispersion(Bruce) -"intro/unix" manual page now "pgintro"(Bruce) -"built-in" manual page now "pgbuiltin"(Bruce) -"drop" manual page now "drop_table"(Bruce) -Add "create_trigger", "drop_trigger" manual pages(Thomas) -Add constraints regression test(Vadim & Thomas) -Add comments syntax regression test(Thomas) -Add PGINDENT and support program(Bruce) -Massive commit to run PGINDENT on all *.c and *.h files(Bruce) -Files moved to /src/tools directory(Bruce) -SPI and Trigger programming guides (Vadim & D'Arcy) -</programlisting> -</para> -</sect2> -</sect1> - -<sect1 id="release-6-1-1"> -<title>Release 6.1.1</title> - - <note> - <title>Release date</title> - <simpara>1997-07-22</simpara> - </note> - -<sect2> -<title>Migration from version 6.1 to version 6.1.1</title> - -<para> -This is a minor bug-fix release. A dump/reload is not required from version 6.1, -but is required from any release prior to 6.1. -Refer to the release notes for 6.1 for more details. -</para> -</sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -fix for SET with options (Thomas) -allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce) -new psql \connect option allows changing usernames without changing databases -fix for initdb --debug option(Yoshihiko Ichikawa)) -lextest cleanup(Bruce) -hash fixes(Vadim) -fix date/time month boundary arithmetic(Thomas) -fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo) -timestamp overhauled to use standard functions(Thomas) -other code cleanup in date/time routines(Thomas) -psql's \d now case-insensitive(Bruce) -psql's backslash commands can now have trailing semicolon(Bruce) -fix memory leak in psql when using \g(Bruce) -major fix for endian handling of communication to server(Thomas, Tatsuo) -Fix for Solaris assembler and include files(Yoshihiko Ichikawa) -allow underscores in usernames(Bruce) -pg_dumpall now returns proper status, portability fix(Bruce) - </programlisting> - </para> - </sect2> - </sect1> - -<sect1 id="release-6-1"> -<title>Release 6.1</title> - - <note> - <title>Release date</title> - <simpara>1997-06-08</simpara> - </note> - -<para> - The regression tests have been adapted and extensively modified for the - 6.1 release of <productname>PostgreSQL</productname>. -</para> - -<para> - Three new data types (<type>datetime</type>, <type>timespan</type>, and <type>circle</type>) have been added to - the native set of <productname>PostgreSQL</productname> types. Points, boxes, paths, and polygons - have had their output formats made consistent across the data types. - The polygon output in misc.out has only been spot-checked for correctness - relative to the original regression output. -</para> - -<para> - <productname>PostgreSQL</productname> 6.1 introduces a new, alternate -optimizer which uses <firstterm>genetic</firstterm> - algorithms. These algorithms introduce a random behavior in the ordering - of query results when the query contains multiple qualifiers or multiple - tables (giving the optimizer a choice on order of evaluation). Several - regression tests have been modified to explicitly order the results, and - hence are insensitive to optimizer choices. A few regression tests are - for data types which are inherently unordered (e.g. points and time - intervals) and tests involving those types are explicitly bracketed with - <command>set geqo to 'off'</command> and <command>reset geqo</command>. -</para> - -<para> - The interpretation of array specifiers (the curly braces around atomic - values) appears to have changed sometime after the original regression - tests were generated. The current <filename>./expected/*.out</filename> files reflect this - new interpretation, which might not be correct! -</para> - -<para> - The float8 regression test fails on at least some platforms. This is due - to differences in implementations of <function>pow()</function> and <function>exp()</function> and the signaling - mechanisms used for overflow and underflow conditions. -</para> - -<para> - The <quote>random</> results in the random test should cause the - <quote>random</quote> test to be <quote>failed</quote>, since the - regression tests are evaluated using a simple diff. However, - <quote>random</> does not seem to produce random results on my test - machine (Linux/<application>gcc</>/i686). -</para> - -<sect2> -<title>Migration to Version 6.1</title> - -<para> -This migration requires a complete dump of the 6.0 database and a -restore of the database in 6.1. -</para> -<para> -Those migrating from earlier 1.* releases should first upgrade to 1.09 -because the COPY output format was improved from the 1.02 release. -</para> -</sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Bug Fixes ---------- -packet length checking in library routines -lock manager priority patch -check for under/over flow of float8(Bruce) -multitable join fix(Vadim) -SIGPIPE crash fix(Darren) -large object fixes(Sven) -allow btree indexes to handle NULLs(Vadim) -timezone fixes(D'Arcy) -select SUM(x) can return NULL on no rows(Thomas) -internal optimizer, executor bug fixes(Vadim) -fix problem where inner loop in < or <= has no rows(Vadim) -prevent re-commuting join index clauses(Vadim) -fix join clauses for multiple tables(Vadim) -fix hash, hashjoin for arrays(Vadim) -fix btree for abstime type(Vadim) -large object fixes(Raymond) -fix buffer leak in hash indexes (Vadim) -fix rtree for use in inner scan (Vadim) -fix gist for use in inner scan, cleanups (Vadim, Andrea) -avoid unnecessary local buffers allocation (Vadim, Massimo) -fix local buffers leak in transaction aborts (Vadim) -fix file manager memmory leaks, cleanups (Vadim, Massimo) -fix storage manager memmory leaks (Vadim) -fix btree duplicates handling (Vadim) -fix deleted rows reincarnation caused by vacuum (Vadim) -fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce) -many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor) - -Enhancements ------------- -attribute optimization statistics(Bruce) -much faster new btree bulk load code(Paul) -BTREE UNIQUE added to bulk load code(Vadim) -new lock debug code(Massimo) -massive changes to libpg++(Leo) -new GEQO optimizer speeds table multitable optimization(Martin) -new WARN message for non-unique insert into unique key(Marc) -update x=-3, no spaces, now valid(Bruce) -remove case-sensitive identifier handling(Bruce,Thomas,Dan) -debug backend now pretty-prints tree(Darren) -new Oracle character functions(Edmund) -new plaintext password functions(Dan) -no such class or insufficient privilege changed to distinct messages(Dan) -new ANSI timestamp function(Dan) -new ANSI Time and Date types (Thomas) -move large chunks of data in backend(Martin) -multicolumn btree indexes(Vadim) -new SET var TO value command(Martin) -update transaction status on reads(Dan) -new locale settings for character types(Oleg) -new SEQUENCE serial number generator(Vadim) -GROUP BY function now possible(Vadim) -re-organize regression test(Thomas,Marc) -new optimizer operation weights(Vadim) -new psql \z grant/permit option(Marc) -new MONEY data type(D'Arcy,Thomas) -tcp socket communication speed improved(Vadim) -new VACUUM option for attribute statistics, and for certain columns (Vadim) -many geometric type improvements(Thomas,Keith) -additional regression tests(Thomas) -new datestyle variable(Thomas,Vadim,Martin) -more comparison operators for sorting types(Thomas) -new conversion functions(Thomas) -new more compact btree format(Vadim) -allow pg_dumpall to preserve database ownership(Bruce) -new SET GEQO=# and R_PLANS variable(Vadim) -old (!GEQO) optimizer can use right-sided plans (Vadim) -typechecking improvement in SQL parser(Bruce) -new SET, SHOW, RESET commands(Thomas,Vadim) -new \connect database USER option -new destroydb -i option (Igor) -new \dt and \di psql commands (Darren) -SELECT "\n" now escapes newline (A. Duursma) -new geometry conversion functions from old format (Thomas) - -Source tree changes -------------------- -new configuration script(Marc) -readline configuration option added(Marc) -OS-specific configuration options removed(Marc) -new OS-specific template files(Marc) -no more need to edit Makefile.global(Marc) -re-arrange include files(Marc) -nextstep patches (Gregor Hoffleit) -removed Windows-specific code(Bruce) -removed postmaster -e option, now only postgres -e option (Bruce) -merge duplicate library code in front/backends(Martin) -now works with eBones, international Kerberos(Jun) -more shared library support -c++ include file cleanup(Bruce) -warn about buggy flex(Bruce) -DG/UX, Ultrix, IRIX, AIX portability fixes -</programlisting> -</para> -</sect2> -</sect1> - -<sect1 id="release-6-0"> -<title>Release 6.0</title> - - <note> - <title>Release date</title> - <simpara>1997-01-29</simpara> - </note> - -<para> -A dump/restore is required for those wishing to migrate data from -previous releases of <productname>PostgreSQL</productname>. -</para> - -<sect2> -<title>Migration from version 1.09 to version 6.0</title> - -<para> -This migration requires a complete dump of the 1.09 database and a -restore of the database in 6.0. -</para> -</sect2> - -<sect2> -<title>Migration from pre-1.09 to version 6.0</title> - -<para> -Those migrating from earlier 1.* releases should first upgrade to 1.09 -because the COPY output format was improved from the 1.02 release. -</para> -</sect2> - - <sect2> - <title>Changes</title> - - <para> - <programlisting> -Bug Fixes ---------- -ALTER TABLE bug - running postgres process needs to re-read table definition -Allow vacuum to be run on one table or entire database(Bruce) -Array fixes -Fix array over-runs of memory writes(Kurt) -Fix elusive btree range/non-range bug(Dan) -Fix for hash indexes on some types like time and date -Fix for pg_log size explosion -Fix permissions on lo_export()(Bruce) -Fix uninitialized reads of memory(Kurt) -Fixed ALTER TABLE ... char(3) bug(Bruce) -Fixed a few small memory leaks -Fixed EXPLAIN handling of options and changed full_path option name -Fixed output of group acl privileges -Memory leaks (hunt and destroy with tools like Purify(Kurt) -Minor improvements to rules system -NOTIFY fixes -New asserts for run-checking -Overhauled parser/analyze code to properly report errors and increase speed -Pg_dump -d now handles NULL's properly(Bruce) -Prevent SELECT NULL from crashing server (Bruce) -Properly report errors when INSERT ... SELECT columns did not match -Properly report errors when insert column names were not correct -psql \g filename now works(Bruce) -psql fixed problem with multiple statements on one line with multiple outputs -Removed duplicate system OIDs -SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce) -Several fixes for queries that crashed the backend -Starting quote in insert string errors(Bruce) -Submitting an empty query now returns empty status, not just " " query(Bruce) - -Enhancements ------------- -Add EXPLAIN manual page(Bruce) -Add UNIQUE index capability(Dan) -Add hostname/user level access control rather than just hostname and user -Add synonym of != for <>(Bruce) -Allow "select oid,* from table" -Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce) -Allow COPY from the frontend(Bryan) -Allow GROUP BY to use alias column name(Bruce) -Allow actual compression, not just reuse on the same page(Vadim) -Allow installation-configuration option to auto-add all local users(Bryan) -Allow libpq to distinguish between text value '' and null(Bruce) -Allow non-postgres users with createdb privs to destroydb's -Allow restriction on who can create C functions(Bryan) -Allow restriction on who can do backend COPY(Bryan) -Can shrink tables, pg_time and pg_log(Vadim & Erich) -Change debug level 2 to print queries only, changed debug heading layout(Bruce) -Change default decimal constant representation from float4 to float8(Bruce) -European date format now set when postmaster is started -Execute lowercase function names if not found with exact case -Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z' -Gist now included in the distribution(Marc) -Idend authentication of local users(Bryan) -Implement BETWEEN qualifier(Bruce) -Implement IN qualifier(Bruce) -libpq has PQgetisnull()(Bruce) -libpq++ improvements -New options to initdb(Bryan) -Pg_dump allow dump of OIDs(Bruce) -Pg_dump create indexes after tables are loaded for speed(Bruce) -Pg_dumpall dumps all databases, and the user table -Pginterface additions for NULL values(Bruce) -Prevent postmaster from being run as root -psql \h and \? is now readable(Bruce) -psql allow backslashed, semicolons anywhere on the line(Bruce) -psql changed command prompt for lines in query or in quotes(Bruce) -psql char(3) now displays as (bp)char in \d output(Bruce) -psql return code now more accurate(Bryan?) -psql updated help syntax(Bruce) -Re-visit and fix vacuum(Vadim) -Reduce size of regression diffs, remove timezone name difference(Bruce) -Remove compile-time parameters to enable binary distributions(Bryan) -Reverse meaning of HBA masks(Bryan) -Secure Authentication of local users(Bryan) -Speed up vacuum(Vadim) -Vacuum now had VERBOSE option(Bruce) - -Source tree changes -------------------- -All functions now have prototypes that are compared against the calls -Allow asserts to be disabled easily from Makefile.global(Bruce) -Change oid constants used in code to #define names -Decoupled sparc and solaris defines(Kurt) -Gcc -Wall compiles cleanly with warnings only from unfixable constructs -Major include file reorganization/reduction(Marc) -Make now stops on compile failure(Bryan) -Makefile restructuring(Bryan, Marc) -Merge bsdi_2_1 to bsdi(Bruce) -Monitor program removed -Name change from Postgres95 to PostgreSQL -New config.h file(Marc, Bryan) -PG_VERSION now set to 6.0 and used by postmaster -Portability additions, including Ultrix, DG/UX, AIX, and Solaris -Reduced the number of #define's, centralized #define's -Remove duplicate OIDS in system tables(Dan) -Remove duplicate system catalog info or report mismatches(Dan) -Removed many os-specific #define's -Restructured object file generation/location(Bryan, Marc) -Restructured port-specific file locations(Bryan, Marc) -Unused/uninitialized variables corrected -</programlisting> -</para> -</sect2> -</sect1> - -<sect1 id="release-1-09"> -<title>Release 1.09</title> - - <note> - <title>Release date</title> - <simpara>1996-11-04</simpara> - </note> - -<para> -Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of -the changes listed in 6.0 were actually included in the 1.02.1 to 1.09 -releases. -</para> -</sect1> - -<sect1 id="release-1-02"> -<title>Release 1.02</title> - - <note> - <title>Release date</title> - <simpara>1996-08-01</simpara> - </note> - -<sect2> -<title>Migration from version 1.02 to version 1.02.1</title> - -<para> -Here is a new migration file for 1.02.1. It includes the 'copy' change -and a script to convert old <acronym>ASCII</acronym> files. -</para> -<note> -<para> -The following notes are for the benefit of users who want to migrate -databases from <productname>Postgres95</> 1.01 and 1.02 to <productname>Postgres95</> 1.02.1. -</para> -<para> -If you are starting afresh with <productname>Postgres95</> 1.02.1 and do not need -to migrate old databases, you do not need to read any further. -</para> -</note> - -<para> -In order to upgrade older <productname>Postgres95</> version 1.01 or 1.02 databases to -version 1.02.1, the following steps are required: -</para> -<procedure> -<step> -<para> -Start up a new 1.02.1 postmaster -</para> -</step> -<step> -<para> -Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02 - databases. This is done by running the new 1.02.1 server against - your own 1.01 or 1.02 database and applying the queries attached at - the end of the file. This can be done easily through <command>psql</>. If your - 1.01 or 1.02 database is named <literal>testdb</literal> and you have cut the commands - from the end of this file and saved them in <filename>addfunc.sql</filename>: -<programlisting> - % psql testdb -f addfunc.sql -</programlisting> - -Those upgrading 1.02 databases will get a warning when executing the -last two statements in the file because they are already present in 1.02. This is -not a cause for concern. -</para> -</step> -</procedure> -</sect2> - -<sect2> -<title>Dump/Reload Procedure</title> - -<para> -If you are trying to reload a pg_dump or text-mode, <literal>copy tablename to -stdout</literal> generated with a previous version, you will need to run the -attached <command>sed</command> script on the ASCII file before loading it into the -database. The old format used '.' as end-of-data, while '\.' is now the -end-of-data marker. Also, empty strings are now loaded in as '' rather -than NULL. See the copy manual page for full details. - -<programlisting> - sed 's/^\.$/\\./g' <in_file >out_file -</programlisting> -</para> -<para> -If you are loading an older binary copy or non-<systemitem>stdout</> copy, there is no -end-of-data character, and hence no conversion necessary. - -<programlisting> --- following lines added by agc to reflect the case-insensitive --- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1) -create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq); -create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne); -create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq); -create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne); -</programlisting> -</para> -</sect2> - -<sect2> -<title>Changes</title> - -<para> -<programlisting> -Source code maintenance and development - * worldwide team of volunteers - * the source tree now in CVS at ftp.ki.net - -Enhancements - * psql (and underlying libpq library) now has many more options for - formatting output, including HTML - * pg_dump now output the schema and/or the data, with many fixes to - enhance completeness. - * psql used in place of monitor in administration shell scripts. - monitor to be deprecated in next release. - * date/time functions enhanced - * NULL insert/update/comparison fixed/enhanced - * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1 - -Bug Fixes (almost too numerous to mention) - * indexes - * storage management - * check for NULL pointer before dereferencing - * Makefile fixes - -New Ports - * added SolarisX86 port - * added BSD/OS 2.1 port - * added DG/UX port -</programlisting> -</para> <!-- -Contributors (apologies to any missed) - * Kurt J. Lidl <lidl@va.pubnix.com> - (missed in first run, but no less important) - * Erich Stamberger <eberger@gewi.kfunigraz.ac.at> - * Jason Wright <jason@shiloh.vnet.net> - * Cees de Groot <C.deGroot@inter.NL.net> - * ernst.molitor@uni-bonn.de - * michael.siebenborn@ae3.Hypo.DE (Michael Siebenborn (6929)) - * Brian E. Gallew <geek+@cmu.edu> - * Vadim B. Mikheev <vadim@sable.krasnoyarsk.su> - * Adam Sussman <myddryn@vidya.com> - * Chris Dunlop <chris@onthe.net.au> - * Marc G. Fournier <scrappy@ki.net> - * Dan McGuirk <mcguirk@indirect.com> - * Dr_George_D_Detlefsen <drgeorge@ilt.com> - * Erich Stamberger <eberger@gewi.kfunigraz.ac.at> - * Massimo Dal Zotto <dz@cs.unitn.it> - * Randy Kunkee <kunkee@Starbase.NeoSoft.COM> - * Rick Weldon <rick@wisetech.com> - * Thomas van Reimersdahl <reimersd@dali.techinfo.rwth-aachen.de> - * david bennett <dave@bensoft.com> - * ernst.molitor@uni-bonn.de - * Julian Assange <proff@suburbia.net> - * Bruce Momjian <pgman@candle.pha.pa.us> - * Paul "Shag" Walmsley <ccshag@cclabs.missouri.edu> - * "Alistair G. Crooks" <azcb0@sde.uts.amdahl.com> ---> -</sect2> -</sect1> - -<sect1 id="release-1-01"> -<title>Release 1.01</title> - - <note> - <title>Release date</title> - <simpara>1996-02-23</simpara> - </note> - - -<sect2> -<title>Migration from version 1.0 to version 1.01</title> - -<para> -The following notes are for the benefit of users who want to migrate -databases from <productname>Postgres95</> 1.0 to <productname>Postgres95</> 1.01. -</para> -<para> -If you are starting afresh with <productname>Postgres95</> 1.01 and do not need -to migrate old databases, you do not need to read any further. -</para> -<para> -In order to <productname>Postgres95</> version 1.01 with databases created with -<productname>Postgres95</> version 1.0, the following steps are required: -</para> -<procedure> -<step> -<para> -Set the definition of <symbol>NAMEDATALEN</symbol> in <filename>src/Makefile.global</filename> to 16 - and <symbol>OIDNAMELEN</symbol> to 20. -</para> -</step> -<step> -<para> -Decide whether you want to use Host based authentication. -</para> -<substeps> -<step> -<para> -If you do, you must create a file name <literal>pg_hba</literal> in your top-level data - directory (typically the value of your <envar>$PGDATA</envar>). <filename>src/libpq/pg_hba</filename> - shows an example syntax. -</para> -</step> -<step> -<para> -If you do not want host-based authentication, you can comment out - the line: -<programlisting> - HBA = 1 -</programlisting> - in <filename>src/Makefile.global</filename> -</para> -<para> - Note that host-based authentication is turned on by default, and if - you do not take steps A or B above, the out-of-the-box 1.01 will - not allow you to connect to 1.0 databases. -</para> -</step> -</substeps> -</step> - -<step> -<para> -Compile and install 1.01, but DO NOT do the <command>initdb</command> step. -</para> -</step> -<step> -<para> -Before doing anything else, terminate your 1.0 postmaster, and - backup your existing <envar>$PGDATA</envar> directory. -</para> -</step> -<step> -<para> -Set your <envar>PGDATA</envar> environment variable to your 1.0 databases, but set up - path up so that 1.01 binaries are being used. -</para> -</step> -<step> -<para> -Modify the file <filename><envar>$PGDATA</envar>/PG_VERSION</filename> from 5.0 to 5.1 -</para> -</step> -<step> -<para> -Start up a new 1.01 postmaster -</para> -</step> -<step> -<para> -Add the new built-in functions and operators of 1.01 to 1.0 - databases. This is done by running the new 1.01 server against - your own 1.0 database and applying the queries attached and saving - in the file 1.0_to_1.01.sql. This can be done easily through <command>psql</command>. - If your 1.0 database is name <literal>testdb</literal>: - -<programlisting> - % psql testdb -f 1.0_to_1.01.sql -</programlisting> - -and then execute the following commands (cut and paste from here): - -<programlisting> --- add builtin functions that are new to 1.01 - -create function int4eqoid (int4, oid) returns bool as 'foo' -language 'internal'; -create function oideqint4 (oid, int4) returns bool as 'foo' -language 'internal'; -create function char2icregexeq (char2, text) returns bool as 'foo' -language 'internal'; -create function char2icregexne (char2, text) returns bool as 'foo' -language 'internal'; -create function char4icregexeq (char4, text) returns bool as 'foo' -language 'internal'; -create function char4icregexne (char4, text) returns bool as 'foo' -language 'internal'; -create function char8icregexeq (char8, text) returns bool as 'foo' -language 'internal'; -create function char8icregexne (char8, text) returns bool as 'foo' -language 'internal'; -create function char16icregexeq (char16, text) returns bool as 'foo' -language 'internal'; -create function char16icregexne (char16, text) returns bool as 'foo' -language 'internal'; -create function texticregexeq (text, text) returns bool as 'foo' -language 'internal'; -create function texticregexne (text, text) returns bool as 'foo' -language 'internal'; - --- add builtin functions that are new to 1.01 - -create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid); -create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4); -create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq); -create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne); -create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq); -create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne); -create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq); -create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne); -create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq); -create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne); -create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq); -create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne); -</programlisting> -</para> -</step> -</procedure> -</sect2> - -<sect2> -<title>Changes</title> + To add a new major-release series, add an entry here and in filelist.sgml. + Follow the naming convention, or you'll confuse generate_history.pl. -<para> -<programlisting> -Incompatibilities: - * 1.01 is backwards compatible with 1.0 database provided the user - follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file. - If those steps are not taken, 1.01 is not compatible with 1.0 database. - -Enhancements: - * added PQdisplayTuples() to libpq and changed monitor and psql to use it - * added NeXT port (requires SysVIPC implementation) - * added CAST .. AS ... syntax - * added ASC and DESC key words - * added 'internal' as a possible language for CREATE FUNCTION - internal functions are C functions which have been statically linked - into the postgres backend. - * a new type "name" has been added for system identifiers (table names, - attribute names, etc.) This replaces the old char16 type. The - of name is set by the NAMEDATALEN #define in src/Makefile.global - * a readable reference manual that describes the query language. - * added host-based access control. A configuration file ($PGDATA/pg_hba) - is used to hold the configuration data. If host-based access control - is not desired, comment out HBA=1 in src/Makefile.global. - * changed regex handling to be uniform use of Henry Spencer's regex code - regardless of platform. The regex code is included in the distribution - * added functions and operators for case-insensitive regular expressions. - The operators are ~* and !~*. - * pg_dump uses COPY instead of SELECT loop for better performance - -Bug fixes: - * fixed an optimizer bug that was causing core dumps when - functions calls were used in comparisons in the WHERE clause - * changed all uses of getuid to geteuid so that effective uids are used - * psql now returns non-zero status on errors when using -c - * applied public patches 1-14 -</programlisting> -</para> -</sect2> -</sect1> - -<sect1 id="release-1-0"> -<title>Release 1.0</title> - - <note> - <title>Release date</title> - <simpara>1995-09-05</simpara> - </note> - -<sect2> -<title>Changes</title> - -<para> -<programlisting> -Copyright change: - * The copyright of <productname>Postgres</productname> 1.0 has been loosened to be freely modifiable - and modifiable for any purpose. Please read the COPYRIGHT file. - Thanks to Professor Michael Stonebraker for making this possible. - -Incompatibilities: - * date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using - EUROPEAN STYLE). This follows SQL-92 specs. - * "delimiters" is now a key word - -Enhancements: - * sql LIKE syntax has been added - * copy command now takes an optional USING DELIMITER specification. - delimiters can be any single-character string. - * IRIX 5.3 port has been added. - Thanks to Paul Walmsley and others. - * updated pg_dump to work with new libpq - * \d has been added psql - Thanks to Keith Parks - * regexp performance for architectures that use POSIX regex has been - improved due to caching of precompiled patterns. - Thanks to Alistair Crooks - * a new version of libpq++ - Thanks to William Wanders - -Bug fixes: - * arbitrary userids can be specified in the createuser script - * \c to connect to other databases in psql now works. - * bad pg_proc entry for float4inc() is fixed - * users with usecreatedb field set can now create databases without - having to be usesuper - * remove access control entries when the entry no longer has any - privileges - * fixed non-portable datetimes implementation - * added kerberos flags to the src/backend/Makefile - * libpq now works with kerberos - * typographic errors in the user manual have been corrected. - * btrees with multiple index never worked, now we tell you they don't - work when you try to use them -</programlisting> -</para> -</sect2> -</sect1> - -<sect1 id="release-0-03"> -<title><productname>Postgres95</productname> Release 0.03</title> - - <note> - <title>Release date</title> - <simpara>1995-07-21</simpara> - </note> - -<sect2> -<title>Changes</title> -<para> -<programlisting> -Incompatible changes: - * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS - (due to system catalog changes and indexing structure changes). - * double-quote (") is deprecated as a quoting character for string literals; - you need to convert them to single quotes ('). <!-- " --> - * name of aggregates (eg. int4sum) are renamed in accordance with the - SQL standard (eg. sum). - * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax. - * float literals (eg. 3.14) are now of type float4 (instead of float8 in - previous releases); you might have to do typecasting if you depend on it - being of type float8. If you neglect to do the typecasting and you assign - a float literal to a field of type float8, you might get incorrect values - stored! - * LIBPQ has been totally revamped so that frontend applications - can connect to multiple backends - * the usesysid field in pg_user has been changed from int2 to int4 to - allow wider range of Unix user ids. - * the netbsd/freebsd/bsd o/s ports have been consolidated into a - single BSD44_derived port. (thanks to Alistair Crooks) - -SQL standard-compliance (the following details changes that makes postgres95 -more compliant to the SQL-92 standard): - * the following SQL types are now built-in: smallint, int(eger), float, real, - char(N), varchar(N), date and time. - - The following are aliases to existing postgres types: - smallint -> int2 - integer, int -> int4 - float, real -> float4 - char(N) and varchar(N) are implemented as truncated text types. In - addition, char(N) does blank-padding. - * single-quote (') is used for quoting string literals; '' (in addition to - \') is supported as means of inserting a single quote in a string - * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used - (Also, aggregates can now be overloaded, i.e. you can define your - own MAX aggregate to take in a user-defined type.) - * CHANGE ACL removed. GRANT/REVOKE syntax added. - - Privileges can be given to a group using the "GROUP" key word. - For example: - GRANT SELECT ON foobar TO GROUP my_group; - The key word 'PUBLIC' is also supported to mean all users. - - Privileges can only be granted or revoked to one user or group - at a time. - - "WITH GRANT OPTION" is not supported. Only class owners can change - access control - - The default access control is to grant users readonly access. - You must explicitly grant insert/update access to users. To change - this, modify the line in - src/backend/utils/acl.h - that defines ACL_WORLD_DEFAULT - -Bug fixes: - * the bug where aggregates of empty tables were not run has been fixed. Now, - aggregates run on empty tables will return the initial conditions of the - aggregates. Thus, COUNT of an empty table will now properly return 0. - MAX/MIN of an empty table will return a row of value NULL. - * allow the use of \; inside the monitor - * the LISTEN/NOTIFY asynchronous notification mechanism now work - * NOTIFY in rule action bodies now work - * hash indexes work, and access methods in general should perform better. - creation of large btree indexes should be much faster. (thanks to Paul - Aoki) - -Other changes and enhancements: - * addition of an EXPLAIN statement used for explaining the query execution - plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for - the query). - * WARN and NOTICE messages no longer have timestamps on them. To turn on - timestamps of error messages, uncomment the line in - src/backend/utils/elog.h: - /* define ELOG_TIMESTAMPS */ - * On an access control violation, the message - "Either no such class or insufficient privilege" - will be given. This is the same message that is returned when - a class is not found. This dissuades non-privileged users from - guessing the existence of privileged classes. - * some additional system catalog changes have been made that are not - visible to the user. - -libpgtcl changes: - * The -oid option has been added to the "pg_result" tcl command. - pg_result -oid returns oid of the last row inserted. If the - last command was not an INSERT, then pg_result -oid returns "". - * the large object interface is available as pg_lo* tcl commands: - pg_lo_open, pg_lo_close, pg_lo_creat, etc. - -Portability enhancements and New Ports: - * flex/lex problems have been cleared up. Now, you should be able to use - flex instead of lex on any platforms. We no longer make assumptions of - what lexer you use based on the platform you use. - * The Linux-ELF port is now supported. Various configuration have been - tested: The following configuration is known to work: - kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24 - with everything in ELF format, - -New utilities: - * ipcclean added to the distribution - ipcclean usually does not need to be run, but if your backend crashes - and leaves shared memory segments hanging around, ipcclean will - clean them up for you. - -New documentation: - * the user manual has been revised and libpq documentation added. -</programlisting> -</para> -</sect2> -</sect1> - -<sect1 id="release-0-02"> -<title><productname>Postgres95</productname> Release 0.02</title> - - <note> - <title>Release date</title> - <simpara>1995-05-25</simpara> - </note> - -<sect2> -<title>Changes</title> - -<para> -<programlisting> -Incompatible changes: - * The SQL statement for creating a database is 'CREATE DATABASE' instead - of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead - of 'DESTROYDB'. However, the names of the executables 'createdb' and - 'destroydb' remain the same. - -New tools: - * pgperl - a Perl (4.036) interface to Postgres95 - * pg_dump - a utility for dumping out a postgres database into a - script file containing query commands. The script files are in a ASCII - format and can be used to reconstruct the database, even on other - machines and other architectures. (Also good for converting - a Postgres 4.2 database to Postgres95 database.) - -The following ports have been incorporated into postgres95-beta-0.02: - * the NetBSD port by Alistair Crooks - * the AIX port by Mike Tung - * the Windows NT port by Jon Forrest (more stuff but not done yet) - * the Linux ELF port by Brian Gallew - -The following bugs have been fixed in postgres95-beta-0.02: - * new lines not escaped in COPY OUT and problem with COPY OUT when first - attribute is a '.' - * cannot type return to use the default user id in createuser - * SELECT DISTINCT on big tables crashes - * Linux installation problems - * monitor doesn't allow use of 'localhost' as PGHOST - * psql core dumps when doing \c or \l - * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile - * libpgtcl has a hard-wired default port number - * SELECT DISTINCT INTO TABLE hangs - * CREATE TYPE doesn't accept 'variable' as the internallength - * wrong result using more than 1 aggregate in a SELECT -</programlisting> -</para> -</sect2> -</sect1> - -<sect1 id="release-0-01"> -<title><productname>Postgres95</productname> Release 0.01</title> - - <note> - <title>Release date</title> - <simpara>1995-05-01</simpara> - </note> - -<para> -Initial release. -</para> -</sect1> - -<![IGNORE[ - <sect1 id="timing-results"> - <title>Timing Results</title> - - <para> - These timing results are from running the regression test with the commands - - <programlisting> -% cd src/test/regress -% make all -% time make runtest - </programlisting> - </para> - <para> - Timing under Linux 2.0.27 seems to have a roughly 5% variation from run - to run, presumably due to the scheduling vagaries of multitasking systems. - </para> - - <sect2> - <title>Version 6.5</title> - - <para> - As has been the case for previous releases, timing between - releases is not directly comparable since new regression tests - have been added. In general, 6.5 is faster than previous - releases. - </para> - - <para> - Timing with <function>fsync()</function> disabled: - - <programlisting> - Time System - 02:00 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486 - 04:38 Sparc Ultra 1 143MHz, 64MB, Solaris 2.6 - </programlisting> - </para> - - <para> - Timing with <function>fsync()</function> enabled: - - <programlisting> - Time System - 04:21 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486 - </programlisting> - - For the <systemitem class="osname">Linux</systemitem> system above, using <acronym>UW-SCSI</acronym> disks rather than (older) <acronym>IDE</acronym> - disks leads to a 50% improvement in speed on the regression test. - </para> - </sect2> - -<sect2> -<title>Version 6.4beta</title> - -<para> -The times for this release are not directly comparable to those for previous releases -since some additional regression tests have been included. -In general, however, 6.4 should be slightly faster than the previous release (thanks, Bruce!). -</para> -<para> -<programlisting> - Time System - 02:26 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486 -</programlisting> -</para> -</sect2> - -<sect2> -<title>Version 6.3</title> - -<para> -The times for this release are not directly comparable to those for previous releases -since some additional regression tests have been included and some obsolete tests involving -time travel have been removed. -In general, however, 6.3 is substantially faster than previous releases (thanks, Bruce!). -</para> -<para> -<programlisting> - Time System - 02:30 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486 - 04:12 Dual Pentium Pro 180, 96MB, EIDE, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486 -</programlisting> -</para> -</sect2> - -<sect2> -<title>Version 6.1</title> + The reason for splitting the release notes this way is so that appropriate + subsets can easily be copied into back branches. +--> +&release-7.4; +&release-old; -<para> -<programlisting> - Time System - 06:12 Pentium Pro 180, 32MB, EIDE, Linux 2.0.30, gcc 2.7.2 -O2 -m486 - 12:06 P-100, 48MB, Linux 2.0.29, gcc - 39:58 Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O -g -</programlisting> -</para> -</sect2> -</sect1> -]]> </appendix> |