From 008fad58fe0074768c7d77016b30bdd9f181b491 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 2 May 2009 20:17:19 +0000 Subject: [PATCH] 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. --- doc/src/sgml/Makefile | 14 +- doc/src/sgml/filelist.sgml | 11 +- doc/src/sgml/generate_history.pl | 58 + doc/src/sgml/release-7.4.sgml | 3975 ++++ doc/src/sgml/release-8.0.sgml | 4561 ++++ doc/src/sgml/release-8.1.sgml | 4318 ++++ doc/src/sgml/release-8.2.sgml | 4802 +++++ doc/src/sgml/release-8.3.sgml | 4481 ++++ doc/src/sgml/release-8.4.sgml | 3208 +++ doc/src/sgml/release-old.sgml | 6657 ++++++ doc/src/sgml/release.sgml | 32003 +---------------------------- 11 files changed, 32090 insertions(+), 31998 deletions(-) create mode 100644 doc/src/sgml/generate_history.pl create mode 100644 doc/src/sgml/release-7.4.sgml create mode 100644 doc/src/sgml/release-8.0.sgml create mode 100644 doc/src/sgml/release-8.1.sgml create mode 100644 doc/src/sgml/release-8.2.sgml create mode 100644 doc/src/sgml/release-8.3.sgml create mode 100644 doc/src/sgml/release-8.4.sgml create mode 100644 doc/src/sgml/release-old.sgml diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile index a61d541a4c..82aacfe38c 100644 --- a/doc/src/sgml/Makefile +++ b/doc/src/sgml/Makefile @@ -2,7 +2,7 @@ # # PostgreSQL documentation makefile # -# $PostgreSQL: pgsql/doc/src/sgml/Makefile,v 1.114 2008/12/11 07:34:07 petere Exp $ +# $PostgreSQL: pgsql/doc/src/sgml/Makefile,v 1.115 2009/05/02 20:17:19 tgl Exp $ # #---------------------------------------------------------------------------- @@ -173,13 +173,13 @@ JADE.tex.call = $(JADE) $(JADEFLAGS) $(SGMLINCLUDE) $(CATALOG) -d $(srcdir)/styl # PostScript from TeX postgres.ps: $(error Invalid target; use postgres-A4.ps or postgres-US.ps as targets) - + %.ps: %.dvi dvips -o $@ $< postgres.pdf: $(error Invalid target; use postgres-A4.pdf or postgres-US.pdf as targets) - + %.pdf: %.tex-pdf @rm -f $*.aux $*.log $*.out # multiple runs are necessary to create proper intra-document links @@ -208,12 +208,8 @@ INSTALL HISTORY regress_README: % : %.html INSTALL.html: standalone-install.sgml installation.sgml version.sgml $(JADE.text) -V nochunks standalone-install.sgml installation.sgml >$@ -# remove links to main documentation -HISTORY.html: release.sgml - ( echo ''; \ - cat $< ) | \ - $(PERL) -p -0 -e 's/]*>//g' | \ - $(PERL) -p -e 's/<\/link>//g' >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 591f1e86da..385b8815f3 100644 --- a/doc/src/sgml/filelist.sgml +++ b/doc/src/sgml/filelist.sgml @@ -1,4 +1,4 @@ - + @@ -138,7 +138,16 @@ + + + + + + + + + diff --git a/doc/src/sgml/generate_history.pl b/doc/src/sgml/generate_history.pl new file mode 100644 index 0000000000..20f3d0e87c --- /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 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 2009/05/02 20:17:19 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 "\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 () { + # Recursively expand sub-files of the release notes + if (m/^&(release-.*);$/) { + process_file($1 . ".sgml"); + next; + } + + # Remove tags, which might span multiple lines + while (m/]*>//) { + next; + } + # incomplete tag, so slurp another line + $_ .= ; + } + + # Remove too + s|||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 0000000000..7fa8ee7a90 --- /dev/null +++ b/doc/src/sgml/release-7.4.sgml @@ -0,0 +1,3975 @@ + + + + + Release 7.4.25 + + + Release date + 2009-03-16 + + + + This release contains a variety of fixes from 7.4.24. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.25 + + + 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. + + + + + + Changes + + + + + + Prevent error recursion crashes when encoding conversion fails (Tom) + + + + 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 + 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) + + + + + + Disallow CREATE CONVERSION with the wrong encodings + for the specified conversion function (Heikki) + + + + 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. + + + + + + Fix core dump when to_char() is given format codes that + are inappropriate for the type of the data argument (Tom) + + + + + + Add MUST (Mauritius Island Summer Time) to the default list + of known timezone abbreviations (Xavier Bugaud) + + + + + + + + + + Release 7.4.24 + + + Release date + 2009-02-02 + + + + This release contains a variety of fixes from 7.4.23. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.24 + + + 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. + + + + + + Changes + + + + + + Improve handling of URLs in headline() function (Teodor) + + + + + + Improve handling of overlength headlines in headline() + function (Teodor) + + + + + + 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) + + + + + + Avoid unnecessary locking of small tables in VACUUM + (Heikki) + + + + + + Fix uninitialized variables in contrib/tsearch2's + get_covers() function (Teodor) + + + + + + Fix bug in to_char()'s handling of TH + format codes (Andreas Scherbaum) + + + + + + Make all documentation reference pgsql-bugs and/or + pgsql-hackers as appropriate, instead of the + now-decommissioned pgsql-ports and pgsql-patches + mailing lists (Tom) + + + + + + + + + + Release 7.4.23 + + + Release date + 2008-11-03 + + + + This release contains a variety of fixes from 7.4.22. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.23 + + + 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. + + + + + + Changes + + + + + + Fix backend crash when the client encoding cannot represent a localized + error message (Tom) + + + + We have addressed similar issues before, but it would still fail if + the 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. + + + + + + Fix incorrect tsearch2 headline generation when single query + item matches first word of text (Sushant Sinha) + + + + + + Fix improper display of fractional seconds in interval values when + using a non-ISO datestyle in an + + + + + Ensure SPI_getvalue and SPI_getbinval + behave correctly when the passed tuple and tuple descriptor have + different numbers of columns (Tom) + + + + 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. + + + + + + Fix ecpg's parsing of CREATE USER (Michael) + + + + + + + + + + Release 7.4.22 + + + Release date + 2008-09-22 + + + + This release contains a variety of fixes from 7.4.21. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.22 + + + 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. + + + + + + Changes + + + + + + Fix datetime input functions to correctly detect integer overflow when + running on a 64-bit platform (Tom) + + + + + + Improve performance of writing very long log messages to syslog (Tom) + + + + + + Fix bug in backwards scanning of a cursor on a SELECT DISTINCT + ON query (Tom) + + + + + + Fix planner to estimate that GROUP BY expressions yielding + boolean results always result in two groups, regardless of the + expressions' contents (Tom) + + + + This is very substantially more accurate than the regular GROUP + BY estimate for certain boolean tests like col + IS NULL. + + + + + + Improve pg_dump and pg_restore's + error reporting after failure to send a SQL command (Tom) + + + + + + + + + + Release 7.4.21 + + + Release date + 2008-06-12 + + + + This release contains one serious bug fix over 7.4.20. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.21 + + + 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. + + + + + + Changes + + + + + + Make pg_get_ruledef() parenthesize negative constants (Tom) + + + + Before this fix, a negative constant in a view or rule might be dumped + as, say, -42::integer, which is subtly incorrect: it should + be (-42)::integer due to operator precedence rules. + Usually this would make little difference, but it could interact with + another recent patch to cause + PostgreSQL to reject what had been a valid + SELECT DISTINCT view query. Since this could result in + 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. + + + + + + + + + + Release 7.4.20 + + + Release date + never released + + + + This release contains a variety of fixes from 7.4.19. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.20 + + + 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. + + + + + + Changes + + + + + + Fix conversions between ISO-8859-5 and other encodings to handle + Cyrillic Yo characters (e and E with + two dots) (Sergey Burladyan) + + + + + + Fix a few datatype input functions + that were allowing unused bytes in their results to contain + uninitialized, unpredictable values (Tom) + + + + This could lead to failures in which two apparently identical literal + values were not seen as equal, resulting in the parser complaining + about unmatched ORDER BY and DISTINCT + expressions. + + + + + + Fix a corner case in regular-expression substring matching + (substring(string from + pattern)) (Tom) + + + + 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 + substring('foo' from 'foo(bar)?'). + This should return NULL, since (bar) isn't matched, but + it was mistakenly returning the whole-pattern match instead (ie, + foo). + + + + + + Fix incorrect result from ecpg's + PGTYPEStimestamp_sub() function (Michael) + + + + + + Fix DatumGetBool macro to not fail with gcc + 4.3 (Tom) + + + + This problem affects 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. + + + + + + Fix longstanding LISTEN/NOTIFY + race condition (Tom) + + + + In rare cases a session that had just executed a + LISTEN might not get a notification, even though + one would be expected because the concurrent transaction executing + NOTIFY was observed to commit later. + + + + A side effect of the fix is that a transaction that has executed + a not-yet-committed LISTEN command will not see any + row in pg_listener for the 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. + + + + + + Fix display of constant expressions in ORDER BY + and GROUP BY (Tom) + + + + An explictly casted constant would be shown incorrectly. This could + for example lead to corruption of a view definition during + dump and reload. + + + + + + Fix libpq to handle NOTICE messages correctly + during COPY OUT (Tom) + + + + 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. + + + + + + + + + + Release 7.4.19 + + + Release date + 2008-01-07 + + + + 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 + . + + + + Migration to Version 7.4.19 + + + 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. + + + + + + Changes + + + + + + Prevent functions in indexes from executing with the privileges of + the user running VACUUM, ANALYZE, etc (Tom) + + + + 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 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 VACUUM, ANALYZE, REINDEX, + and CLUSTER) to execute as the table owner rather than + the calling user, using the same privilege-switching mechanism already + used for SECURITY DEFINER functions. To prevent bypassing + this security measure, execution of SET SESSION + AUTHORIZATION and SET ROLE is now forbidden within a + SECURITY DEFINER context. (CVE-2007-6600) + + + + + + Repair assorted bugs in the regular-expression package (Tom, Will Drewry) + + + + 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) + + + + + + Require non-superusers who use /contrib/dblink to use only + password authentication, as a security measure (Joe) + + + + The fix that appeared for this in 7.4.18 was incomplete, as it plugged + the hole for only some dblink functions. (CVE-2007-6601, + CVE-2007-3278) + + + + + + Fix planner failure in some cases of WHERE false AND var IN + (SELECT ...) (Tom) + + + + + + Fix potential crash in translate() when using a multibyte + database encoding (Tom) + + + + + + Fix PL/Python to not crash on long exception messages (Alvaro) + + + + + + ecpg parser fixes (Michael) + + + + + + Make contrib/tablefunc's crosstab() handle + NULL rowid as a category in its own right, rather than crashing (Joe) + + + + + + Fix tsvector and tsquery output routines to + escape backslashes correctly (Teodor, Bruce) + + + + + + Fix crash of to_tsvector() on huge input strings (Teodor) + + + + + + Require a specific version of Autoconf to be used + when re-generating the configure script (Peter) + + + + This affects developers and packagers only. The change was made + to prevent accidental use of untested combinations of + Autoconf and PostgreSQL versions. + You can remove the version check if you really want to use a + different Autoconf version, but it's + your responsibility whether the result works or not. + + + + + + + + + + Release 7.4.18 + + + Release date + 2007-09-17 + + + + This release contains fixes from 7.4.17. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.18 + + + 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. + + + + + + Changes + + + + + + Prevent index corruption when a transaction inserts rows and + then aborts close to the end of a concurrent VACUUM + on the same table (Tom) + + + + + + Make CREATE DOMAIN ... DEFAULT NULL work properly (Tom) + + + + + + Fix excessive logging of SSL error messages (Tom) + + + + + + Fix crash when log_min_error_statement logging runs out + of memory (Tom) + + + + + + Prevent CLUSTER from failing + due to attempting to process temporary tables of other sessions (Alvaro) + + + + + + Require non-superusers who use /contrib/dblink to use only + password authentication, as a security measure (Joe) + + + + + + + + + + Release 7.4.17 + + + Release date + 2007-04-23 + + + + This release contains fixes from 7.4.16, + including a security fix. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.17 + + + 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. + + + + + + Changes + + + + + + Support explicit placement of the temporary-table schema within + search_path, and disable searching it for functions + and operators (Tom) + + + This is needed to allow a security-definer function to set a + truly secure value of 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 CREATE FUNCTION for more information. + + + + + + /contrib/tsearch2 crash fixes (Teodor) + + + + + + Fix potential-data-corruption bug in how VACUUM FULL handles + UPDATE chains (Tom, Pavan Deolasee) + + + + + + Fix PANIC during enlargement of a hash index (bug introduced in 7.4.15) + (Tom) + + + + + + + + + + Release 7.4.16 + + + Release date + 2007-02-05 + + + + 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 + . + + + + Migration to Version 7.4.16 + + + 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. + + + + + + Changes + + + + + + Remove security vulnerability that allowed connected users + to read backend memory (Tom) + + + 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. + + + + + + Fix rare bug wherein btree index page splits could fail + due to choosing an infeasible split point (Heikki Linnakangas) + + + + + + Fix for rare Assert() crash triggered by UNION (Tom) + + + + + + Tighten security of multi-byte character processing for UTF8 sequences + over three bytes long (Tom) + + + + + + + + + + Release 7.4.15 + + + Release date + 2007-01-08 + + + + This release contains a variety of fixes from 7.4.14. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.15 + + + 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. + + + + + + Changes + + + + + + Improve handling of getaddrinfo() on AIX (Tom) + + + + This fixes a problem with starting the statistics collector, + among other things. + + + + + + Fix failed to re-find parent key errors in + VACUUM (Tom) + + + + + + Fix bugs affecting multi-gigabyte hash indexes (Tom) + + + + + + Fix error when constructing an ARRAY[] made up of multiple + empty elements (Tom) + + + + + + to_number() and to_char(numeric) + are now STABLE, not IMMUTABLE, for + new initdb installs (Tom) + + + + This is because lc_numeric can potentially + change the output of these functions. + + + + + + Improve index usage of regular expressions that use parentheses (Tom) + + + + This improves psql \d performance also. + + + + + + + + + + Release 7.4.14 + + + Release date + 2006-10-16 + + + + This release contains a variety of fixes from 7.4.13. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.14 + + + 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. + + + + + + Changes + + +Fix core dump when an untyped literal is taken as +ANYARRAY +Fix string_to_array() to handle overlapping + matches for the separator string +For example, string_to_array('123xx456xxx789', 'xx'). + +Fix corner cases in pattern matching for + psql's \d commands +Fix index-corrupting bugs in /contrib/ltree + (Teodor) +Fix backslash escaping in /contrib/dbmirror +Adjust regression tests for recent changes in US DST laws + + + + + + + + Release 7.4.13 + + + Release date + 2006-05-23 + + + + 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 + . + + + + Migration to Version 7.4.13 + + + 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. + + + + 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 libpq's + PQescapeStringConn()) to perform string escaping, + rather than relying on ad hoc code to do it. + + + + + Changes + + +Change the server to reject invalidly-encoded multibyte +characters in all cases (Tatsuo, Tom) +While 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. + + +Reject unsafe uses of \' in string literals +As a server-side defense against SQL-injection attacks of the type +described in CVE-2006-2314, the server now only accepts '' and not +\' as a representation of ASCII single quote in SQL string +literals. By default, \' is rejected only when +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 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 +backslash_quote is in part to make it obvious that insecure +clients are insecure. + + +Modify libpq's string-escaping routines to be +aware of encoding considerations and +standard_conforming_strings +This fixes 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 PostgreSQL connections +concurrently should migrate to PQescapeStringConn() and +PQescapeByteaConn() to ensure that escaping is done correctly +for the settings in use in each database connection. Applications that +do string escaping by hand should be modified to rely on library +routines instead. + + +Fix some incorrect encoding conversion functions +win1251_to_iso, alt_to_iso, +euc_tw_to_big5, euc_tw_to_mic, +mic_to_euc_tw were all broken to varying +extents. + + +Clean up stray remaining uses of \' in strings +(Bruce, Jan) + +Fix bug that sometimes caused OR'd index scans to +miss rows they should have returned + +Fix WAL replay for case where a btree index has been +truncated + +Fix SIMILAR TO for patterns involving +| (Tom) + +Fix server to use custom DH SSL parameters correctly (Michael +Fuhr) + +Fix for Bonjour on Intel Macs (Ashley Clark) + +Fix various minor memory leaks + + + + + + + Release 7.4.12 + + + Release date + 2006-02-14 + + + + This release contains a variety of fixes from 7.4.11. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.12 + + + 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. + + + + + Changes + + + +Fix potential crash in SET +SESSION AUTHORIZATION (CVE-2006-0553) +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. + + +Fix bug with row visibility logic in self-inserted +rows (Tom) +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. + + +Fix race condition that could lead to file already +exists errors during pg_clog file creation +(Tom) + +Properly check DOMAIN constraints for +UNKNOWN parameters in prepared statements +(Neil) + +Fix to allow restoring dumps that have cross-schema +references to custom operators (Tom) + +Portability fix for testing presence of finite +and isinf during configure (Tom) + + + + + + + + Release 7.4.11 + + + Release date + 2006-01-09 + + + + This release contains a variety of fixes from 7.4.10. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.11 + + + 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 REINDEX indexes on textual + columns after updating, if you are affected by the locale or + plperl issues described below. + + + + + Changes + + + +Fix for protocol-level Describe messages issued +outside a transaction or in a failed transaction (Tom) + +Fix character string comparison for locales that consider +different character combinations as equal, such as Hungarian (Tom) +This might require REINDEX to fix existing indexes on +textual columns. + +Set locale environment variables during postmaster startup +to ensure that plperl won't change the locale later +This fixes a problem that occurred if the postmaster was +started with environment variables specifying a different locale than what +initdb had been told. Under these conditions, any use of +plperl was likely to lead to corrupt indexes. You might need +REINDEX to fix existing indexes on +textual columns if this has happened to you. + +Fix longstanding bug in strpos() and regular expression +handling in certain rarely used Asian multi-byte character sets (Tatsuo) + + +Fix bug in /contrib/pgcrypto gen_salt, +which caused it not to use all available salt space for MD5 and +XDES algorithms (Marko Kreen, Solar Designer) +Salts for Blowfish and standard DES are unaffected. + +Fix /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) + + + + + + + + Release 7.4.10 + + + Release date + 2005-12-12 + + + + This release contains a variety of fixes from 7.4.9. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.10 + + + 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. + + + + + Changes + + + +Fix race condition in transaction log management +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. + + +Prevent failure if client sends Bind protocol message +when current transaction is already aborted + +/contrib/ltree fixes (Teodor) + +AIX and HPUX compile fixes (Tom) + +Fix longstanding planning error for outer joins +This bug sometimes caused a bogus error RIGHT JOIN is +only supported with merge-joinable join conditions. + +Prevent core dump in pg_autovacuum when a +table has been dropped + + + + + + + Release 7.4.9 + + + Release date + 2005-10-04 + + + + This release contains a variety of fixes from 7.4.8. + For information about new features in the 7.4 major release, see + . + + + + Migration to Version 7.4.9 + + + 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. + + + + + Changes + + +Fix error that allowed VACUUM to remove +ctid chains too soon, and add more checking in code that follows +ctid links +This fixes a long-standing problem that could cause crashes in very rare +circumstances. +Fix CHAR() to properly pad spaces to the specified +length when using a multiple-byte character set (Yoshiyuki Asaba) +In prior releases, the padding of CHAR() was incorrect +because it only padded to the specified number of bytes without +considering how many characters were stored. +Fix the sense of the test for read-only transaction +in COPY +The code formerly prohibited COPY TO, where it should +prohibit COPY FROM. + +Fix planning problem with outer-join ON clauses that reference +only the inner-side relation +Further fixes for x FULL JOIN y ON true corner +cases +Make array_in and array_recv more +paranoid about validating their OID parameter +Fix missing rows in queries like UPDATE a=... WHERE +a... with GiST index on column a +Improve robustness of datetime parsing +Improve checking for partially-written WAL +pages +Improve robustness of signal handling when SSL is +enabled +Don't try to open more than max_files_per_process +files during postmaster startup +Various memory leakage fixes +Various portability improvements +Fix PL/PgSQL to handle var := var correctly when +the variable is of pass-by-reference type +Update contrib/tsearch2 to use current Snowball +code + + + + + + + Release 7.4.8 + + + Release date + 2005-05-09 + + + + 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 + . + + + + Migration to Version 7.4.8 + + + 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. + + + + 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.) + + + + The lesser problem is that the contrib/tsearch2 module + creates several functions that are misdeclared to return + internal when they do not accept internal arguments. + This breaks type safety for all functions using internal + arguments. + + + + 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. + + + + If you wish not to do an initdb, perform the following procedures instead. + As the database superuser, do: + + +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; + + + Next, if you have installed contrib/tsearch2, do: + + +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; + + + If this command fails with a message like function + "dex_init(text)" does not exist, then either tsearch2 + is not installed in this database, or you already did the update. + + + + The above procedures must be carried out in each database + of an installation, including template1, and ideally + including template0 as well. If you do not fix the + template databases then any subsequently created databases will contain + the same errors. template1 can be fixed in the same way + as any other database, but fixing template0 requires + additional steps. First, from any database issue: + +UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; + + Next connect to template0 and perform the above repair + procedures. Finally, do: + +-- re-freeze template0: +VACUUM FREEZE; +-- and protect it against future alterations: +UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; + + + + + + Changes + + +Change encoding function signature to prevent +misuse +Change contrib/tsearch2 to avoid unsafe use of +INTERNAL function results +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 +This is an extremely serious bug since it could lead to apparent +data inconsistencies being briefly visible to applications. +Repair race condition between relation extension and +VACUUM +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. + +Fix comparisons of TIME WITH TIME ZONE values + +The comparison code was wrong in the case where the +--enable-integer-datetimes configuration switch had been used. +NOTE: if you have an index on a TIME WITH TIME ZONE column, +it will need to be REINDEXed after installing this update, because +the fix corrects the sort order of column values. + +Fix EXTRACT(EPOCH) for +TIME WITH TIME ZONE values +Fix mis-display of negative fractional seconds in +INTERVAL values + +This error only occurred when the +--enable-integer-datetimes configuration switch had been used. + +Ensure operations done during backend shutdown are counted by +statistics collector + +This is expected to resolve reports of 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. + +Additional buffer overrun checks in plpgsql +(Neil) +Fix pg_dump to dump trigger names containing % +correctly (Neil) +Fix contrib/pgcrypto for newer OpenSSL builds +(Marko Kreen) +Still more 64-bit fixes for +contrib/intagg +Prevent incorrect optimization of functions returning +RECORD +Prevent to_char(interval) from dumping core for +month-related formats +Prevent crash on COALESCE(NULL,NULL) +Fix array_map to call PL functions correctly +Fix permission checking in ALTER DATABASE RENAME +Fix ALTER LANGUAGE RENAME +Make RemoveFromWaitQueue clean up after itself + +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. + +Fix problem with untyped parameter appearing in +INSERT ... SELECT +Fix CLUSTER failure after +ALTER TABLE SET WITHOUT OIDS + + + + + + + Release 7.4.7 + + + Release date + 2005-01-31 + + + + 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 + . + + + + Migration to Version 7.4.7 + + + A dump/restore is not required for those running 7.4.X. + + + + + Changes + + +Disallow LOAD to non-superusers + +On platforms that will automatically execute initialization functions of a +shared library (this includes at least Windows and ELF-based Unixen), +LOAD can be used to make the server execute arbitrary code. +Thanks to NGS Software for reporting this. +Check that creator of an aggregate function has the right to +execute the specified transition functions + +This oversight made it possible to bypass denial of EXECUTE +permission on a function. +Fix security and 64-bit issues in +contrib/intagg +Add needed STRICT marking to some contrib functions (Kris +Jurka) +Avoid buffer overrun when plpgsql cursor declaration has too +many parameters (Neil) +Fix planning error for FULL and RIGHT outer joins + +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. + +Fix plperl for quote marks in tuple fields +Fix display of negative intervals in SQL and GERMAN +datestyles +Make age(timestamptz) do calculation in local timezone not +GMT + + + + + + + Release 7.4.6 + + + Release date + 2004-10-22 + + + + This release contains a variety of fixes from 7.4.5. + For information about new features in the 7.4 major release, see + . + + + + + Migration to Version 7.4.6 + + + A dump/restore is not required for those running 7.4.X. + + + + + Changes + + +Repair possible failure to update hint bits on disk + +Under rare circumstances this oversight could lead to +could not access transaction status failures, which qualifies +it as a potential-data-loss bug. + +Ensure that hashed outer join does not miss tuples + +Very large left joins using a hash join plan could fail to output unmatched +left-side rows given just the right data distribution. + +Disallow running pg_ctl as root + +This is to guard against any possible security issues. + +Avoid using temp files in /tmp in make_oidjoins_check + +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. + +Prevent forced backend shutdown from re-emitting prior command +result + +In rare cases, a client might think that its last command had succeeded when +it really had been aborted by forced database shutdown. + +Repair bug in pg_stat_get_backend_idset + +This could lead to misbehavior in some of the system-statistics views. + +Fix small memory leak in postmaster +Fix expected both swapped tables to have TOAST +tables bug + +This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN. + +Prevent pg_ctl restart from adding -D multiple times +Fix problem with NULL values in GiST indexes +:: is no longer interpreted as a variable in an +ECPG prepare statement + + + + + + + Release 7.4.5 + + + Release date + 2004-08-18 + + + + This release contains one serious bug fix over 7.4.4. + For information about new features in the 7.4 major release, see + . + + + + + Migration to Version 7.4.5 + + + A dump/restore is not required for those running 7.4.X. + + + + + Changes + + +Repair possible crash during concurrent B-tree index insertions + +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. + + + + + + + + Release 7.4.4 + + + Release date + 2004-08-16 + + + + This release contains a variety of fixes from 7.4.3. + For information about new features in the 7.4 major release, see + . + + + + + Migration to Version 7.4.4 + + + A dump/restore is not required for those running 7.4.X. + + + + + Changes + + +Prevent possible loss of committed transactions during crash + +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 PostgreSQL 7.1. + +Check HAVING restriction before evaluating result list of an +aggregate plan +Avoid crash when session's current user ID is deleted +Fix hashed crosstab for zero-rows case (Joe) +Force cache update after renaming a column in a foreign key +Pretty-print UNION queries correctly +Make psql handle \r\n newlines properly in COPY IN +pg_dump handled ACLs with grant options incorrectly +Fix thread support for OS X and Solaris +Updated JDBC driver (build 215) with various fixes +ECPG fixes +Translation updates (various contributors) + + + + + + + Release 7.4.3 + + + Release date + 2004-06-14 + + + + This release contains a variety of fixes from 7.4.2. + For information about new features in the 7.4 major release, see + . + + + + + Migration to Version 7.4.3 + + + A dump/restore is not required for those running 7.4.X. + + + + + Changes + + +Fix temporary memory leak when using non-hashed aggregates (Tom) +ECPG fixes, including some for Informix compatibility (Michael) +Fixes for compiling with thread-safety, particularly Solaris (Bruce) +Fix error in COPY IN termination when using the old network protocol (ljb) +Several important fixes in pg_autovacuum, including fixes for +large tables, unsigned oids, stability, temp tables, and debug mode +(Matthew T. O'Connor) +Fix problem with reading tar-format dumps on NetBSD and BSD/OS (Bruce) +Several JDBC fixes +Fix ALTER SEQUENCE RESTART where last_value equals the restart value (Tom) +Repair failure to recalculate nested sub-selects (Tom) +Fix problems with non-constant expressions in LIMIT/OFFSET +Support FULL JOIN with no join clause, such as X FULL JOIN Y ON TRUE (Tom) +Fix another zero-column table bug (Tom) +Improve handling of non-qualified identifiers in GROUP BY clauses in sub-selects (Tom) + +Select-list aliases within the sub-select will now take precedence over +names from outer query levels. + +Do not generate NATURAL CROSS JOIN when decompiling rules (Tom) +Add checks for invalid field length in binary COPY (Tom) + + This fixes a difficult-to-exploit security hole. + +Avoid locking conflict between ANALYZE and LISTEN/NOTIFY +Numerous translation updates (various contributors) + + + + + + + Release 7.4.2 + + + Release date + 2004-03-08 + + + + This release contains a variety of fixes from 7.4.1. + For information about new features in the 7.4 major release, see + . + + + + + Migration to Version 7.4.2 + + + 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. + + + + The more severe of the two errors is that data type anyarray + has the wrong alignment label; this is a problem because the + pg_statistic system catalog uses anyarray + columns. The mislabeling can cause planner misestimations and even + crashes when planning queries that involve WHERE clauses on + double-aligned columns (such as float8 and timestamp). + It is strongly recommended that all installations repair this error, + either by initdb or by following the manual repair procedure given + below. + + + + The lesser error is that the system view pg_settings + ought to be marked as having public update access, to allow + UPDATE pg_settings to be used as a substitute for + SET. This can also be fixed either by initdb or manually, + but it is not necessary to fix unless you want to use UPDATE + pg_settings. + + + + If you wish not to do an initdb, the following procedure will work + for fixing pg_statistic. As the database superuser, + do: + + +-- 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; + + + 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 pg_statistic. + + + + To repair the pg_settings error, simply do: + +GRANT SELECT, UPDATE ON pg_settings TO PUBLIC; + + + + + The above procedures must be carried out in each database + of an installation, including template1, and ideally + including template0 as well. If you do not fix the + template databases then any subsequently created databases will contain + the same errors. template1 can be fixed in the same way + as any other database, but fixing template0 requires + additional steps. First, from any database issue: + +UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; + + Next connect to template0 and perform the above repair + procedures. Finally, do: + +-- re-freeze template0: +VACUUM FREEZE; +-- and protect it against future alterations: +UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; + + + + + + Changes + + + Release 7.4.2 incorporates all the fixes included in release 7.3.6, + plus the following fixes: + + + +Fix pg_statistics alignment bug that could crash optimizer +See above for details about this problem. +Allow non-super users to update pg_settings +Fix several optimizer bugs, most of which led to +variable not found in subplan target lists errors +Avoid out-of-memory failure during startup of large multiple +index scan +Fix multibyte problem that could lead to out of +memory error during COPY IN +Fix problems with SELECT INTO / CREATE +TABLE AS from tables without OIDs +Fix problems with alter_table regression test +during parallel testing +Fix problems with hitting open file limit, especially on OS X (Tom) +Partial fix for Turkish-locale issues +initdb will succeed now in Turkish locale, but there are still some +inconveniences associated with the i/I problem. +Make pg_dump set client encoding on restore +Other minor pg_dump fixes +Allow ecpg to again use C keywords as column names (Michael) +Added ecpg WHENEVER NOT_FOUND to +SELECT/INSERT/UPDATE/DELETE (Michael) +Fix ecpg crash for queries calling set-returning functions (Michael) +Various other ecpg fixes (Michael) +Fixes for Borland compiler +Thread build improvements (Bruce) +Various other build fixes +Various JDBC fixes + + + + + + + Release 7.4.1 + + + Release date + 2003-12-22 + + + + This release contains a variety of fixes from 7.4. + For information about new features in the 7.4 major release, see + . + + + + + Migration to Version 7.4.1 + + + A dump/restore is not required for those + running 7.4. + + + + 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 initdb, or by running the following + sequence of SQL commands in each database (ideally including + template1) as a superuser in + psql, after installing the new release: + +DROP SCHEMA information_schema CASCADE; +\i /usr/local/pgsql/share/information_schema.sql + + Substitute your installation path in the second command. + + + + + + Changes + + +Fixed bug in CREATE SCHEMA parsing in ECPG (Michael) +Fix compile error when and are used together (Peter) +Fix for subqueries that used hash joins (Tom) + + Certain subqueries that used hash joins would crash because of + improperly shared structures. + +Fix free space map compaction bug (Tom) + + This fixes a bug where compaction of the free space map could lead + to a database server shutdown. + + +Fix for Borland compiler build of libpq (Bruce) +Fix netmask() and hostmask() to return the maximum-length masklen (Tom) + + Fix these functions to return values consistent with pre-7.4 + releases. + + +Several contrib/pg_autovacuum fixes + + Fixes include improper variable initialization, missing vacuum after + TRUNCATE, and duration computation overflow for long vacuums. + + +Allow compile of contrib/cube under Cygwin (Jason Tishler) +Fix Solaris use of password file when no passwords are defined (Tom) + + Fix crash on Solaris caused by use of any type of password + authentication when no passwords were defined. + + +JDBC fix for thread problems, other fixes +Fix for bytea index lookups (Joe) +Fix information schema for bit data types (Peter) +Force zero_damaged_pages to be on during recovery from WAL +Prevent some obscure cases of variable not in subplan target lists +Make PQescapeBytea and byteaout consistent with each other (Joe) +Escape bytea output for bytes > 0x7e(Joe) + + If different client encodings are used for bytea output and input, it + is possible for bytea values to be corrupted by the differing + encodings. This fix escapes all bytes that might be affected. + + +Added missing SPI_finish() calls to dblink's get_tuple_of_interest() (Joe) +New Czech FAQ +Fix information schema view constraint_column_usage for foreign keys (Peter) +ECPG fixes (Michael) +Fix bug with multiple IN subqueries and joins in the subqueries (Tom) +Allow COUNT('x') to work (Tom) +Install ECPG include files for Informix compatibility into separate directory (Peter) + + 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. + + +Fix SSL memory leak (Neil) + + This release fixes a bug in 7.4 where SSL didn't free all memory it allocated. + + +Prevent pg_service.conf from using service name as default dbname (Bruce) +Fix local ident authentication on FreeBSD (Tom) + + + + + + + Release 7.4 + + + Release date + 2003-11-17 + + + + Overview + + + Major changes in this release: + + + + + + IN / NOT IN subqueries are + now much more efficient + + + + + In previous releases, IN/NOT + IN 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 + IN will now usually be as fast as or faster + than an equivalent EXISTS subquery; this + reverses the conventional wisdom that applied to previous + releases. + + + + + + + Improved GROUP BY processing by using hash buckets + + + + + In previous releases, rows to be grouped had to be sorted + first. The 7.4 code can do GROUP BY + 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 sort_mem. + + + + + + + New multikey hash join capability + + + + + In previous releases, hash joins could only occur on single + keys. This release allows multicolumn hash joins. + + + + + + + Queries using the explicit JOIN syntax are + now better optimized + + + + + Prior releases evaluated queries using the explicit + JOIN 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. + + + + + + + Faster and more powerful regular expression code + + + + + 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. + + + + + + + Function-inlining for simple SQL functions + + + + + 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. + + + + + + + Full support for IPv6 connections and IPv6 address data types + + + + + 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. + + + + + + + Major improvements in SSL performance and reliability + + + + + Several people very familiar with the SSL API have overhauled + our SSL code to improve SSL key negotiation and error + recovery. + + + + + + + Make free space map efficiently reuse empty index pages, + and other free space management improvements + + + + + 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, VACUUM records empty index + pages and allows them to be reused for any future index rows. + + + + + + + SQL-standard information schema + + + + + The information schema provides a standardized and stable way + to access information about the schema objects defined in a + database. + + + + + + + Cursors conform more closely to the SQL standard + + + + + The commands FETCH and + MOVE have been overhauled to conform more + closely to the SQL standard. + + + + + + + Cursors can exist outside transactions + + + + + These cursors are also called holdable cursors. + + + + + + + New client-to-server protocol + + + + + 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 COPY failures. The older + protocol is still supported by both server and clients. + + + + + + + libpq and + ECPG applications are now fully + thread-safe + + + + + While previous libpq releases + already supported threads, this release improves thread safety + by fixing some non-thread-safe code that was used during + database connection startup. The configure + option must be used to + enable this feature. + + + + + + + New version of full-text indexing + + + + + A new full-text indexing suite is available in + contrib/tsearch2. + + + + + + + New autovacuum tool + + + + + The new autovacuum tool in + contrib/autovacuum monitors the database + statistics tables for + INSERT/UPDATE/DELETE + activity and automatically vacuums tables when needed. + + + + + + + Array handling has been improved and moved into the server core + + + + + Many array limitations have been removed, and arrays behave + more like fully-supported data types. + + + + + + + + + Migration to Version 7.4 + + + A dump/restore using pg_dump is + required for those wishing to migrate data from any previous + release. + + + + Observe the following incompatibilities: + + + + + + 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. + + + + + + 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. + + + + + + Inner joins using the explicit JOIN syntax + might behave differently because they are now better + optimized. + + + + + + A number of server configuration parameters have been renamed + for clarity, primarily those related to + logging. + + + + + + FETCH 0 or MOVE 0 now + does nothing. In prior releases, FETCH 0 + would fetch all remaining rows, and MOVE 0 + would move to the end of the cursor. + + + + + + FETCH and MOVE 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. + + + + + + COPY 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 \r and + \n instead. + + + + + + Trailing spaces are now trimmed when converting from type + char(n) to + varchar(n) or text. + This is what most people always expected to happen anyway. + + + + + + The data type float(p) now + measures p in binary digits, not decimal + digits. The new behavior follows the SQL standard. + + + + + + Ambiguous date values now must match the ordering specified by + the datestyle setting. In prior releases, a + date specification of 10/20/03 was interpreted as a + date in October even if 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 + datestyle. + + + + + + The functions oidrand, + oidsrand, and + userfntest have been removed. These + functions were determined to be no longer useful. + + + + + + String literals specifying time-varying date/time values, such + as 'now' or 'today' 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 + now(), current_timestamp, or + current_date should be used instead. + + + + In previous releases, there was special code so that strings + such as 'now' were interpreted at + 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 now() or current_timestamp. These + will work in all situations. + + + + + + The dollar sign ($) 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 ($n) are written + adjacent to operators. + + + + + + + + Changes + + + Below you will find a detailed account of the changes between + release 7.4 and the previous major release. + + + + Server Operation Changes + + + + + Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, + Bruce, Tom, Kurt Roeckx, Andrew Dunstan) + + + + + + Fix SSL to handle errors cleanly (Nathan Mueller) + + + In prior releases, certain SSL API error reports were not + handled correctly. This release fixes those problems. + + + + + + SSL protocol security and performance improvements (Sean Chittenden) + + + SSL key renegotiation was happening too frequently, causing poor + SSL performance. Also, initial key handling was improved. + + + + + + Print lock information when a deadlock is detected (Tom) + + + This allows easier debugging of deadlock situations. + + + + + + Update /tmp socket modification times + regularly to avoid their removal (Tom) + + + This should help prevent /tmp directory + cleaner administration scripts from removing server socket + files. + + + + Enable PAM for Mac OS X (Aaron Hillegass) + + + Make B-tree indexes fully WAL-safe (Tom) + + 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. + + + + Allow B-tree index compaction and empty page reuse (Tom) + + + + Fix inconsistent index lookups during split of first root page (Tom) + + + 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. + + + + Improve free space map allocation logic (Tom) + + + Preserve free space information between server restarts (Tom) + + 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. + + + + Add start time to pg_stat_activity (Neil) + New code to detect corrupt disk pages; erase with zero_damaged_pages (Tom) + New client/server protocol: faster, no username length limit, allow clean exit from COPY (Tom) + Add transaction status, table ID, column ID to client/server protocol (Tom) + Add binary I/O to client/server protocol (Tom) + Remove autocommit server setting; move to client applications (Tom) + New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter) + + + + + Performance Improvements + + + Add hashing for GROUP BY aggregates (Tom) + Make nested-loop joins be smarter about multicolumn indexes (Tom) + Allow multikey hash joins (Tom) + Improve constant folding (Tom) + Add ability to inline simple SQL functions (Tom) + + + Reduce memory usage for queries using complex functions (Tom) + + 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. + + + + + Improve GEQO optimizer performance (Tom) + + This release fixes several inefficiencies in the way the GEQO optimizer + manages potential query paths. + + + + + + Allow IN/NOT IN to be handled via hash + tables (Tom) + + + + + + Improve NOT IN (subquery) + performance (Tom) + + + + + + Allow most IN subqueries to be processed as + joins (Tom) + + + + + + Pattern matching operations can use indexes regardless of + locale (Peter) + + + There is no way for non-ASCII locales to use the standard + indexes for LIKE comparisons. This release + adds a way to create a special index for + LIKE. + + + + + Allow the postmaster to preload libraries using preload_libraries (Joe) + + 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. + + + + + + Improve optimizer cost computations, particularly for subqueries (Tom) + + + + + + Avoid sort when subquery ORDER BY matches upper query (Tom) + + + + + + Deduce that WHERE a.x = b.y AND b.y = 42 also + means a.x = 42 (Tom) + + + + + + Allow hash/merge joins on complex joins (Tom) + + + + + + Allow hash joins for more data types (Tom) + + + + + + Allow join optimization of explicit inner joins, disable with + join_collapse_limit (Tom) + + + + + + Add parameter from_collapse_limit to control + conversion of subqueries to joins (Tom) + + + + + + Use faster and more powerful regular expression code from Tcl + (Henry Spencer, Tom) + + + + + + Use bit-mapped relation sets in the optimizer (Tom) + + + + + Improve connection startup time (Tom) + + The new client/server protocol requires fewer network packets to + start a database session. + + + + + + Improve trigger/constraint performance (Stephan) + + + + + + Improve speed of col IN (const, const, const, ...) (Tom) + + + + + + Fix hash indexes which were broken in rare cases (Tom) + + + + Improve hash index concurrency and speed (Tom) + + 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. + + + + + Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul) + + Certain CPU's perform faster data copies when addresses are + 32-byte aligned. + + + + + Data type numeric reimplemented for better performance (Tom) + + numeric used to be stored in base 100. The new code + uses base 10000, for significantly better performance. + + + + + + + Server Configuration Changes + + + + Rename server parameter server_min_messages to log_min_messages (Bruce) + + This was done so most parameters that control the server logs + begin with log_. + + + + Rename show_*_stats to log_*_stats (Bruce) + Rename show_source_port to log_source_port (Bruce) + Rename hostname_lookup to log_hostname (Bruce) + + + Add checkpoint_warning to warn of excessive checkpointing (Bruce) + + 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. + + + + New read-only server parameters for localization (Tom) + + + + Change debug server log messages to output as DEBUG + rather than LOG (Bruce) + + + + + Prevent server log variables from being turned off by non-superusers (Bruce) + + This is a security feature so non-superusers cannot disable + logging that was enabled by the administrator. + + + + + + log_min_messages/client_min_messages now + controls debug_* output (Bruce) + + + This centralizes client debug information so all debug output + can be sent to either the client or server logs. + + + + + Add Mac OS X Rendezvous server support (Chris Campbell) + + This allows Mac OS X hosts to query the network for available + PostgreSQL servers. + + + + + + Add ability to print only slow statements using + log_min_duration_statement + (Christopher) + + + This is an often requested debugging feature that allows + administrators to see only slow queries in their server logs. + + + + + Allow pg_hba.conf to accept netmasks in CIDR format (Andrew Dunstan) + + This allows administrators to merge the host IP address and + netmask fields into a single CIDR field in pg_hba.conf. + + + + New read-only parameter is_superuser (Tom) + + + New parameter log_error_verbosity to control error detail (Tom) + + This works with the new error reporting feature to supply + additional error information like hints, file names and line + numbers. + + + + + postgres --describe-config now dumps server config variables (Aizaz Ahmed, Peter) + + This option is useful for administration tools that need to know + the configuration variable names and their minimums, maximums, + defaults, and descriptions. + + + + + + Add new columns in pg_settings: + context, type, source, + min_val, max_val (Joe) + + + + + + Make default shared_buffers 1000 and + max_connections 100, if possible (Tom) + + + Prior versions defaulted to 64 shared buffers so PostgreSQL + 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 + shared_buffers accordingly. + + + + + + New pg_hba.conf record type + hostnossl to prevent SSL connections (Jon + Jensen) + + + In prior releases, there was no way to prevent SSL connections + if both the client and server supported SSL. This option allows + that capability. + + + + + + Remove parameter geqo_random_seed + (Tom) + + + + + + Add server parameter regex_flavor to control regular expression processing (Tom) + + + + + + Make pg_ctl better handle nonstandard ports (Greg) + + + + + + + Query Changes + + + New SQL-standard information schema (Peter) + Add read-only transactions (Peter) + Print key name and value in foreign-key violation messages (Dmitry Tkach) + + + Allow users to see their own queries in pg_stat_activity (Kevin Brown) + + In prior releases, only the superuser could see query strings + using pg_stat_activity. Now ordinary users + can see their own query strings. + + + + + Fix aggregates in subqueries to match SQL standard (Tom) + + 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 + PostgreSQL releases did not handle + this fine point correctly. + + + + + Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews) + + By default, tables mentioned in the query are automatically + added to the FROM clause if they are not already + there. This is compatible with historic + POSTGRES behavior but is contrary to + the SQL standard. This option allows selecting + standard-compatible behavior. + + + + + Allow UPDATE ... SET col = DEFAULT (Rod) + + This allows UPDATE to set a column to its + declared default value. + + + + + Allow expressions to be used in LIMIT/OFFSET (Tom) + + In prior releases, LIMIT/OFFSET could + only use constants, not expressions. + + + + + Implement CREATE TABLE AS EXECUTE (Neil, Peter) + + + + + + Object Manipulation Changes + + + + Make CREATE SEQUENCE grammar more conforming to SQL:2003 (Neil) + + + + Add statement-level triggers (Neil) + + 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. + + + + + Add check constraints for domains (Rod) + + This greatly increases the usefulness of domains by allowing + them to use check constraints. + + + + + Add ALTER DOMAIN (Rod) + + This allows manipulation of existing domains. + + + + + Fix several zero-column table bugs (Tom) + + PostgreSQL supports zero-column tables. This fixes various bugs + that occur when using such tables. + + + + + Have ALTER TABLE ... ADD PRIMARY KEY add not-null constraint (Rod) + + In prior releases, ALTER TABLE ... ADD + PRIMARY would add a unique index, but not a not-null + constraint. That is fixed in this release. + + + + Add ALTER TABLE ... WITHOUT OIDS (Rod) + + This allows control over whether new and updated rows will have + an OID column. This is most useful for saving storage space. + + + + + + Add ALTER SEQUENCE to modify minimum, maximum, + increment, cache, cycle values (Rod) + + + + + Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera) + + This command is used by pg_dump to record the + cluster column for each table previously clustered. This + information is used by database-wide cluster to cluster all + previously clustered tables. + + + + Improve automatic type casting for domains (Rod, Tom) + Allow dollar signs in identifiers, except as first character (Tom) + Disallow dollar signs in operator names, so x=$1 works (Tom) + + + + Allow copying table schema using LIKE + subtable, also SQL:2003 + feature INCLUDING DEFAULTS (Rod) + + + + + + Add WITH GRANT OPTION clause to + GRANT (Peter) + + + This enabled GRANT to give other users the + ability to grant privileges on a object. + + + + + + + Utility Command Changes + + + + Add ON COMMIT clause to CREATE TABLE for temporary tables (Gavin) + + This adds the ability for a table to be dropped or all rows + deleted on transaction commit. + + + + + Allow cursors outside transactions using WITH HOLD (Neil) + + In previous releases, cursors were removed at the end of the + transaction that created them. Cursors can now be created with + the WITH HOLD option, which allows them to + continue to be accessed after the creating transaction has + committed. + + + + + FETCH 0 and MOVE 0 now do nothing (Bruce) + + In previous releases, FETCH 0 fetched all + remaining rows, and MOVE 0 moved to the end + of the cursor. + + + + + + Cause FETCH and MOVE to + return the number of rows fetched/moved, or zero if at the + beginning/end of cursor, per SQL standard (Bruce) + + + In prior releases, the row count returned by + FETCH and MOVE did not + accurately reflect the number of rows processed. + + + + + Properly handle SCROLL with cursors, or + report an error (Neil) + + Allowing random access (both forward and backward scrolling) to + some kinds of queries cannot be done without some additional + work. If SCROLL is specified when the cursor + is created, this additional work will be performed. Furthermore, + if the cursor has been created with NO SCROLL, + no random access is allowed. + + + + + + Implement SQL-compatible options FIRST, + LAST, ABSOLUTE n, + RELATIVE n for + FETCH and MOVE (Tom) + + + + + Allow EXPLAIN on DECLARE CURSOR (Tom) + + + + Allow CLUSTER to use index marked as pre-clustered by default (Alvaro Herrera) + + + + Allow CLUSTER to cluster all tables (Alvaro Herrera) + + This allows all previously clustered tables in a database to be + reclustered with a single command. + + + + Prevent CLUSTER on partial indexes (Tom) + + Allow DOS and Mac line-endings in COPY files (Bruce) + + + + Disallow literal carriage return as a data value, + backslash-carriage-return and \r are still allowed + (Bruce) + + + + + COPY changes (binary, \.) (Tom) + + + + Recover from COPY failure cleanly (Tom) + + + + Prevent possible memory leaks in COPY (Tom) + + + + Make TRUNCATE transaction-safe (Rod) + + TRUNCATE can now be used inside a + transaction. If the transaction aborts, the changes made by the + TRUNCATE are automatically rolled back. + + + + + + Allow prepare/bind of utility commands like + FETCH and EXPLAIN (Tom) + + + + + Add EXPLAIN EXECUTE (Neil) + + + + Improve VACUUM performance on indexes by reducing WAL traffic (Tom) + + + + Functional indexes have been generalized into indexes on expressions (Tom) + + 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. + + + + + + Have SHOW TRANSACTION ISOLATION match input + to SET TRANSACTION ISOLATION + (Tom) + + + + + + Have COMMENT ON DATABASE on nonlocal + database generate a warning, rather than an error (Rod) + + + + Database comments are stored in database-local tables so + comments on a database have to be stored in each database. + + + + + + Improve reliability of LISTEN/NOTIFY (Tom) + + + + + Allow REINDEX to reliably reindex nonshared system catalog indexes (Tom) + + 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 + pg_database, pg_shadow, and + pg_group. + + + + + + + Data Type and Function Changes + + + + + New server parameter extra_float_digits to + control precision display of floating-point numbers (Pedro + Ferreira, Tom) + + + This controls output precision which was causing regression + testing problems. + + + + Allow +1300 as a numeric time-zone specifier, for FJST (Tom) + + + + Remove rarely used functions oidrand, + oidsrand, and userfntest functions + (Neil) + + + + + Add md5() function to main server, already in contrib/pgcrypto (Joe) + + An MD5 function was frequently requested. For more complex + encryption capabilities, use + contrib/pgcrypto. + + + + Increase date range of timestamp (John Cochran) + + + + Change EXTRACT(EPOCH FROM timestamp) so + timestamp without time zone is assumed to be in + local time, not GMT (Tom) + + + + Trap division by zero in case the operating system doesn't prevent it (Tom) + Change the numeric data type internally to base 10000 (Tom) + New hostmask() function (Greg Wickham) + Fixes for to_char() and to_timestamp() (Karel) + + + + Allow functions that can take any argument data type and return + any data type, using anyelement and + anyarray (Joe) + + + This allows the creation of functions that can work with any + data type. + + + + + + Arrays can now be specified as ARRAY[1,2,3], + ARRAY[['a','b'],['c','d']], or + ARRAY[ARRAY[ARRAY[2]]] (Joe) + + + + + + Allow proper comparisons for arrays, including ORDER + BY and DISTINCT support + (Joe) + + + + Allow indexes on array columns (Joe) + Allow array concatenation with || (Joe) + + + + Allow WHERE qualification + expr op ANY/SOME/ALL + (array_expr) (Joe) + + + This allows arrays to behave like a list of values, for purposes + like SELECT * FROM tab WHERE col IN + (array_val). + + + + + + New array functions array_append, + array_cat, array_lower, + array_prepend, array_to_string, + array_upper, string_to_array (Joe) + + + + Allow user defined aggregates to use polymorphic functions (Joe) + Allow assignments to empty arrays (Joe) + + + + Allow 60 in seconds fields of time, + timestamp, and interval input values + (Tom) + + + Sixty-second values are needed for leap seconds. + + + + Allow cidr data type to be cast to text (Tom) + + Disallow invalid time zone names in SET TIMEZONE + + + + Trim trailing spaces when char is cast to + varchar or text (Tom) + + + + + + Make float(p) measure the precision + p in binary digits, not decimal digits + (Tom) + + + + + Add IPv6 support to the inet and cidr data types (Michael Graff) + + + + Add family() function to report whether address is IPv4 or IPv6 (Michael Graff) + + + + + Have SHOW datestyle generate output similar + to that used by SET datestyle (Tom) + + + + + + Make EXTRACT(TIMEZONE) and SET/SHOW + TIME ZONE follow the SQL convention for the sign of + time zone offsets, i.e., positive is east from UTC (Tom) + + + + + Fix date_trunc('quarter', ...) (Böjthe Zoltán) + + Prior releases returned an incorrect value for this function call. + + + + + Make initcap() more compatible with Oracle (Mike Nolan) + + initcap() now uppercases a letter appearing + after any non-alphanumeric character, rather than only after + whitespace. + + + + + Allow only datestyle field order for date values not in ISO-8601 format (Greg) + + + + + Add new datestyle values MDY, + DMY, and YMD to set input field order; + honor US and European for backward + compatibility (Tom) + + + + + + String literals like 'now' or + 'today' will no longer work as a column + default. Use functions such as now(), + current_timestamp instead. (change + required for prepared statements) (Tom) + + + + + Treat NaN as larger than any other value in min()/max() (Tom) + + NaN was already sorted after ordinary numeric values for most + purposes, but min() and max() didn't + get this right. + + + + + Prevent interval from suppressing :00 + seconds display + + + + + New functions pg_get_triggerdef(prettyprint) + and pg_conversion_is_visible() (Christopher) + + + + + Allow time to be specified as 040506 or 0405 (Tom) + + + + + Input date order must now be YYYY-MM-DD (with 4-digit year) or + match datestyle + + + + + + Make pg_get_constraintdef support + unique, primary-key, and check constraints (Christopher) + + + + + + + Server-Side Language Changes + + + + + Prevent PL/pgSQL crash when RETURN NEXT is + used on a zero-row record variable (Tom) + + + + + + Make PL/Python's spi_execute interface + handle null values properly (Andrew Bosma) + + + + + Allow PL/pgSQL to declare variables of composite types without %ROWTYPE (Tom) + + + + Fix PL/Python's _quote() function to handle big integers + + + + Make PL/Python an untrusted language, now called plpythonu (Kevin Jacobs, Tom) + + 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. + + + + + Allow polymorphic PL/pgSQL functions (Joe, Tom) + + + + Allow polymorphic SQL functions (Joe) + + + + + Improved compiled function caching mechanism in PL/pgSQL with + full support for polymorphism (Joe) + + + + + + Add new parameter $0 in PL/pgSQL representing the + function's actual return type (Joe) + + + + + + Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom) + + + + + + Fixed PL/Tcl's spi_prepare to accept fully + qualified type names in the parameter type list + (Jan) + + + + + + + psql Changes + + + + Add \pset pager always to always use pager (Greg) + + 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. + + + + Improve tab completion (Rod, Ross Reedstrom, Ian Barwick) + Reorder \? help into groupings (Harald Armin Massa, Bruce) + Add backslash commands for listing schemas, casts, and conversions (Christopher) + + + + \encoding now changes based on the server parameter + client_encoding (Tom) + + + In previous versions, \encoding was not aware + of encoding changes made using SET + client_encoding. + + + + + Save editor buffer into readline history (Ross) + + When \e is used to edit a query, the result is saved + in the readline history for retrieval using the up arrow. + + + + Improve \d display (Christopher) + Enhance HTML mode to be more standards-conforming (Greg) + + + New \set AUTOCOMMIT off capability (Tom) + + This takes the place of the removed server parameter autocommit. + + + + + New \set VERBOSITY to control error detail (Tom) + + This controls the new error reporting details. + + + + New prompt escape sequence %x to show transaction status (Tom) + Long options for psql are now available on all platforms + + + + + pg_dump Changes + + + Multiple pg_dump fixes, including tar format and large objects + Allow pg_dump to dump specific schemas (Neil) + + + Make pg_dump preserve column storage characteristics (Christopher) + + This preserves ALTER TABLE ... SET STORAGE information. + + + + Make pg_dump preserve CLUSTER characteristics (Christopher) + + + + Have pg_dumpall use GRANT/REVOKE to dump database-level privileges (Tom) + + + + + + Allow pg_dumpall to support the options + + + Prevent pg_dump from lowercasing identifiers specified on the command line (Tom) + + + + pg_dump options + and now do nothing, all dumps + use SET SESSION AUTHORIZATION + + + pg_dump no longer reconnects to switch users, but instead always + uses SET SESSION AUTHORIZATION. This will + reduce password prompting during restores. + + + + + Long options for pg_dump are now available on all platforms + + PostgreSQL now includes its own + long-option processing routines. + + + + + + + libpq Changes + + + + + Add function PQfreemem for freeing memory on + Windows, suggested for NOTIFY (Bruce) + + + Windows requires that memory allocated in a library be freed by + a function in the same library, hence + free() doesn't work for freeing memory + allocated by libpq. PQfreemem is the proper + way to free libpq memory, especially on Windows, and is + recommended for other platforms as well. + + + + + Document service capability, and add sample file (Bruce) + + This allows clients to look up connection information in a + central file on the client machine. + + + + + + Make PQsetdbLogin have the same defaults as + PQconnectdb (Tom) + + + + Allow libpq to cleanly fail when result sets are too large (Tom) + + + + Improve performance of function PQunescapeBytea (Ben Lamb) + + + + + + Allow thread-safe libpq with configure + option (Lee Kindness, + Philip Yarra) + + + + + + Allow function pqInternalNotice to accept a + format string and arguments instead of just a preformatted + message (Tom, Sean Chittenden) + + + + + + Control SSL negotiation with sslmode values + disable, allow, + prefer, and require (Jon + Jensen) + + + + + Allow new error codes and levels of text (Tom) + + + + Allow access to the underlying table and column of a query result (Tom) + + This is helpful for query-builder applications that want to know + the underlying table and column names associated with a specific + result set. + + + + Allow access to the current transaction status (Tom) + Add ability to pass binary data directly to the server (Tom) + + + + Add function PQexecPrepared and + PQsendQueryPrepared functions which perform + bind/execute of previously prepared statements (Tom) + + + + + + + JDBC Changes + + + Allow setNull on updateable result sets + Allow executeBatch on a prepared statement (Barry) + Support SSL connections (Barry) + Handle schema names in result sets (Paul Sorenson) + Add refcursor support (Nic Ferrier) + + + + + Miscellaneous Interface Changes + + + + Prevent possible memory leak or core dump during libpgtcl shutdown (Tom) + + + Add Informix compatibility to ECPG (Michael) + + This allows ECPG to process embedded C programs that were + written using certain Informix extensions. + + + + + Add type decimal to ECPG that is fixed length, for Informix (Michael) + + + + + Allow thread-safe embedded SQL programs with + configure option + (Lee Kindness, Bruce) + + + This allows multiple threads to access the database at the same + time. + + + + + Moved Python client PyGreSQL to (Marc) + + + + + + Source Code Changes + + + Prevent need for separate platform geometry regression result files (Tom) + Improved PPC locking primitive (Reinhard Max) + New function palloc0 to allocate and clear memory (Bruce) + Fix locking code for s390x CPU (64-bit) (Tom) + Allow OpenBSD to use local ident credentials (William Ahern) + Make query plan trees read-only to executor (Tom) + Add Darwin startup scripts (David Wheeler) + Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek) + Use our own version of getopt_long() if needed (Peter) + Convert administration scripts to C (Peter) + Bison >= 1.85 is now required to build the PostgreSQL grammar, if building from CVS + Merge documentation into one book (Peter) + Add Windows compatibility functions (Bruce) + Allow client interfaces to compile under MinGW (Bruce) + New ereport() function for error reporting (Tom) + Support Intel compiler on Linux (Peter) + Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil) + Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce) + + Remove option from configure + + This was no longer needed now that we have CREATE CONVERSION. + + + + Generate a compile error if spinlock code is not found (Bruce) + + Platforms without spinlock code will now fail to compile, rather + than silently using semaphores. This failure can be disabled + with a new configure option. + + + + + + + Contrib Changes + + + Change dbmirror license to BSD + Improve earthdistance (Bruno Wolff III) + Portability improvements to pgcrypto (Marko Kreen) + Prevent crash in xml (John Gray, Michael Richards) + Update oracle + Update mysql + Update cube (Bruno Wolff III) + Update earthdistance to use cube (Bruno Wolff III) + Update btree_gist (Oleg) + New tsearch2 full-text search module (Oleg, Teodor) + Add hash-based crosstab function to tablefuncs (Joe) + Add serial column to order connectby() siblings in tablefuncs (Nabil Sayegh,Joe) + Add named persistent connections to dblink (Shridhar Daithanka) + New pg_autovacuum allows automatic VACUUM (Matthew T. O'Connor) + Make pgbench honor environment variables PGHOST, PGPORT, PGUSER (Tatsuo) + Improve intarray (Teodor Sigaev) + Improve pgstattuple (Rod) + Fix bug in metaphone() in fuzzystrmatch + Improve adddepend (Rod) + Update spi/timetravel (Böjthe Zoltán) + Fix dbase + Remove array module because features now included by default (Joe) + + + + diff --git a/doc/src/sgml/release-8.0.sgml b/doc/src/sgml/release-8.0.sgml new file mode 100644 index 0000000000..eca4ebdf5d --- /dev/null +++ b/doc/src/sgml/release-8.0.sgml @@ -0,0 +1,4561 @@ + + + + + Release 8.0.21 + + + Release date + 2009-03-16 + + + + This release contains a variety of fixes from 8.0.20. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.21 + + + A dump/restore is not required for those running 8.0.X. + However, if you are upgrading from a version earlier than 8.0.6, + see the release notes for 8.0.6. + + + + + + Changes + + + + + + Prevent error recursion crashes when encoding conversion fails (Tom) + + + + 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 + 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) + + + + + + Disallow CREATE CONVERSION with the wrong encodings + for the specified conversion function (Heikki) + + + + 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. + + + + + + Fix core dump when to_char() is given format codes that + are inappropriate for the type of the data argument (Tom) + + + + + + Add MUST (Mauritius Island Summer Time) to the default list + of known timezone abbreviations (Xavier Bugaud) + + + + + + + + + + Release 8.0.20 + + + Release date + 2009-02-02 + + + + This release contains a variety of fixes from 8.0.19. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.20 + + + A dump/restore is not required for those running 8.0.X. + However, if you are upgrading from a version earlier than 8.0.6, + see the release notes for 8.0.6. + + + + + + Changes + + + + + + Improve handling of URLs in headline() function (Teodor) + + + + + + Improve handling of overlength headlines in headline() + function (Teodor) + + + + + + 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) + + + + + + Avoid unnecessary locking of small tables in VACUUM + (Heikki) + + + + + + Fix uninitialized variables in contrib/tsearch2's + get_covers() function (Teodor) + + + + + + Make all documentation reference pgsql-bugs and/or + pgsql-hackers as appropriate, instead of the + now-decommissioned pgsql-ports and pgsql-patches + mailing lists (Tom) + + + + + + Update time zone data files to tzdata release 2009a (for + Kathmandu and historical DST corrections in Switzerland, Cuba) + + + + + + + + + + Release 8.0.19 + + + Release date + 2008-11-03 + + + + This release contains a variety of fixes from 8.0.18. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.19 + + + A dump/restore is not required for those running 8.0.X. + However, if you are upgrading from a version earlier than 8.0.6, + see the release notes for 8.0.6. + + + + + + Changes + + + + + + Fix backend crash when the client encoding cannot represent a localized + error message (Tom) + + + + We have addressed similar issues before, but it would still fail if + the 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. + + + + + + Fix possible crash when deeply nested functions are invoked from + a trigger (Tom) + + + + + + Ensure an error is reported when a newly-defined PL/pgSQL trigger + function is invoked as a normal function (Tom) + + + + + + Fix incorrect tsearch2 headline generation when single query + item matches first word of text (Sushant Sinha) + + + + + + Fix improper display of fractional seconds in interval values when + using a non-ISO datestyle in an + + + + + Ensure SPI_getvalue and SPI_getbinval + behave correctly when the passed tuple and tuple descriptor have + different numbers of columns (Tom) + + + + 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. + + + + + + Fix ecpg's parsing of CREATE USER (Michael) + + + + + + Fix recent breakage of pg_ctl restart (Tom) + + + + + + Update time zone data files to tzdata release 2008i (for + DST law changes in Argentina, Brazil, Mauritius, Syria) + + + + + + + + + + Release 8.0.18 + + + Release date + 2008-09-22 + + + + This release contains a variety of fixes from 8.0.17. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.18 + + + A dump/restore is not required for those running 8.0.X. + However, if you are upgrading from a version earlier than 8.0.6, + see the release notes for 8.0.6. + + + + + + Changes + + + + + + Widen local lock counters from 32 to 64 bits (Tom) + + + + This responds to reports that the counters could overflow in + sufficiently long transactions, leading to unexpected lock is + already held errors. + + + + + + Add checks in executor startup to ensure that the tuples produced by an + INSERT or UPDATE will match the target table's + current rowtype (Tom) + + + + ALTER COLUMN TYPE, followed by re-use of a previously + cached plan, could produce this type of situation. The check protects + against data corruption and/or crashes that could ensue. + + + + + + Fix datetime input functions to correctly detect integer overflow when + running on a 64-bit platform (Tom) + + + + + + Improve performance of writing very long log messages to syslog (Tom) + + + + + + Fix bug in backwards scanning of a cursor on a SELECT DISTINCT + ON query (Tom) + + + + + + Fix planner to estimate that GROUP BY expressions yielding + boolean results always result in two groups, regardless of the + expressions' contents (Tom) + + + + This is very substantially more accurate than the regular GROUP + BY estimate for certain boolean tests like col + IS NULL. + + + + + + Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful + about the encoding of data sent to or from Tcl (Tom) + + + + + + Fix PL/Python to work with Python 2.5 + + + + This is a back-port of fixes made during the 8.2 development cycle. + + + + + + Improve pg_dump and pg_restore's + error reporting after failure to send a SQL command (Tom) + + + + + + Fix pg_ctl to properly preserve postmaster + command-line arguments across a restart (Bruce) + + + + + + Update time zone data files to tzdata release 2008f (for + DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, + Pakistan, Palestine, and Paraguay) + + + + + + + + + + Release 8.0.17 + + + Release date + 2008-06-12 + + + + This release contains one serious bug fix over 8.0.16. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.17 + + + A dump/restore is not required for those running 8.0.X. + However, if you are upgrading from a version earlier than 8.0.6, + see the release notes for 8.0.6. + + + + + + Changes + + + + + + Make pg_get_ruledef() parenthesize negative constants (Tom) + + + + Before this fix, a negative constant in a view or rule might be dumped + as, say, -42::integer, which is subtly incorrect: it should + be (-42)::integer due to operator precedence rules. + Usually this would make little difference, but it could interact with + another recent patch to cause + PostgreSQL to reject what had been a valid + SELECT DISTINCT view query. Since this could result in + 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. + + + + + + + + + + Release 8.0.16 + + + Release date + never released + + + + This release contains a variety of fixes from 8.0.15. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.16 + + + A dump/restore is not required for those running 8.0.X. + However, if you are upgrading from a version earlier than 8.0.6, + see the release notes for 8.0.6. + + + + + + Changes + + + + + + Fix ALTER TABLE ADD COLUMN ... PRIMARY KEY so that the new + column is correctly checked to see if it's been initialized to all + non-nulls (Brendan Jurd) + + + + Previous versions neglected to check this requirement at all. + + + + + + Fix possible CREATE TABLE failure when inheriting the + same constraint from multiple parent relations that + inherited that constraint from a common ancestor (Tom) + + + + + + Fix conversions between ISO-8859-5 and other encodings to handle + Cyrillic Yo characters (e and E with + two dots) (Sergey Burladyan) + + + + + + Fix a few datatype input functions + that were allowing unused bytes in their results to contain + uninitialized, unpredictable values (Tom) + + + + This could lead to failures in which two apparently identical literal + values were not seen as equal, resulting in the parser complaining + about unmatched ORDER BY and DISTINCT + expressions. + + + + + + Fix a corner case in regular-expression substring matching + (substring(string from + pattern)) (Tom) + + + + 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 + substring('foo' from 'foo(bar)?'). + This should return NULL, since (bar) isn't matched, but + it was mistakenly returning the whole-pattern match instead (ie, + foo). + + + + + + Update time zone data files to tzdata release 2008c (for + DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, + Argentina/San_Luis, and Chile) + + + + + + Fix incorrect result from ecpg's + PGTYPEStimestamp_sub() function (Michael) + + + + + + Fix core dump in contrib/xml2's + xpath_table() function when the input query returns a + NULL value (Tom) + + + + + + Fix contrib/xml2's makefile to not override + CFLAGS (Tom) + + + + + + Fix DatumGetBool macro to not fail with gcc + 4.3 (Tom) + + + + This problem affects 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. + + + + + + Fix longstanding LISTEN/NOTIFY + race condition (Tom) + + + + In rare cases a session that had just executed a + LISTEN might not get a notification, even though + one would be expected because the concurrent transaction executing + NOTIFY was observed to commit later. + + + + A side effect of the fix is that a transaction that has executed + a not-yet-committed LISTEN command will not see any + row in pg_listener for the 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. + + + + + + Fix rare crash when an error occurs during a query using a hash index + (Heikki) + + + + + + Fix input of datetime values for February 29 in years BC (Tom) + + + + The former coding was mistaken about which years were leap years. + + + + + + Fix unrecognized node type error in some variants of + ALTER OWNER (Tom) + + + + + + Fix pg_ctl to correctly extract the postmaster's port + number from command-line options (Itagaki Takahiro, Tom) + + + + Previously, pg_ctl start -w could try to contact the + postmaster on the wrong port, leading to bogus reports of startup + failure. + + + + + + Use + + + This is known to be necessary when building PostgreSQL + with gcc 4.3 or later. + + + + + + Fix display of constant expressions in ORDER BY + and GROUP BY (Tom) + + + + An explictly casted constant would be shown incorrectly. This could + for example lead to corruption of a view definition during + dump and reload. + + + + + + Fix libpq to handle NOTICE messages correctly + during COPY OUT (Tom) + + + + 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. + + + + + + + + + + Release 8.0.15 + + + Release date + 2008-01-07 + + + + This release contains a variety of fixes from 8.0.14, + including fixes for significant security issues. + For information about new features in the 8.0 major release, see + . + + + + This is the last 8.0.X release for which the PostgreSQL + community will produce binary packages for Windows. + Windows users are encouraged to move to 8.2.X or later, + since there are Windows-specific fixes in 8.2.X that + are impractical to back-port. 8.0.X will continue to + be supported on other platforms. + + + + Migration to Version 8.0.15 + + + A dump/restore is not required for those running 8.0.X. However, + if you are upgrading from a version earlier than 8.0.6, see the release + notes for 8.0.6. + + + + + + Changes + + + + + + Prevent functions in indexes from executing with the privileges of + the user running VACUUM, ANALYZE, etc (Tom) + + + + 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 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 VACUUM, ANALYZE, REINDEX, + and CLUSTER) to execute as the table owner rather than + the calling user, using the same privilege-switching mechanism already + used for SECURITY DEFINER functions. To prevent bypassing + this security measure, execution of SET SESSION + AUTHORIZATION and SET ROLE is now forbidden within a + SECURITY DEFINER context. (CVE-2007-6600) + + + + + + Repair assorted bugs in the regular-expression package (Tom, Will Drewry) + + + + 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) + + + + + + Require non-superusers who use /contrib/dblink to use only + password authentication, as a security measure (Joe) + + + + The fix that appeared for this in 8.0.14 was incomplete, as it plugged + the hole for only some dblink functions. (CVE-2007-6601, + CVE-2007-3278) + + + + + + Update time zone data files to tzdata release 2007k + (in particular, recent Argentina changes) (Tom) + + + + + + Fix planner failure in some cases of WHERE false AND var IN + (SELECT ...) (Tom) + + + + + + Preserve the tablespace of indexes that are + rebuilt by ALTER TABLE ... ALTER COLUMN TYPE (Tom) + + + + + + Make archive recovery always start a new WAL timeline, rather than only + when a recovery stop time was used (Simon) + + + + This avoids a corner-case risk of trying to overwrite an existing + archived copy of the last WAL segment, and seems simpler and cleaner + than the original definition. + + + + + + Make VACUUM not use all of maintenance_work_mem + when the table is too small for it to be useful (Alvaro) + + + + + + Fix potential crash in translate() when using a multibyte + database encoding (Tom) + + + + + + Fix PL/Perl to cope when platform's Perl defines type bool + as int rather than char (Tom) + + + + While this could theoretically happen anywhere, no standard build of + Perl did things this way ... until Mac OS X 10.5. + + + + + + Fix PL/Python to not crash on long exception messages (Alvaro) + + + + + + Fix pg_dump to correctly handle inheritance child tables + that have default expressions different from their parent's (Tom) + + + + + + ecpg parser fixes (Michael) + + + + + + Make contrib/tablefunc's crosstab() handle + NULL rowid as a category in its own right, rather than crashing (Joe) + + + + + + Fix tsvector and tsquery output routines to + escape backslashes correctly (Teodor, Bruce) + + + + + + Fix crash of to_tsvector() on huge input strings (Teodor) + + + + + + Require a specific version of Autoconf to be used + when re-generating the configure script (Peter) + + + + This affects developers and packagers only. The change was made + to prevent accidental use of untested combinations of + Autoconf and PostgreSQL versions. + You can remove the version check if you really want to use a + different Autoconf version, but it's + your responsibility whether the result works or not. + + + + + + + + + + Release 8.0.14 + + + Release date + 2007-09-17 + + + + This release contains a variety of fixes from 8.0.13. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.14 + + + A dump/restore is not required for those running 8.0.X. However, + if you are upgrading from a version earlier than 8.0.6, see the release + notes for 8.0.6. + + + + + + Changes + + + + + + Prevent index corruption when a transaction inserts rows and + then aborts close to the end of a concurrent VACUUM + on the same table (Tom) + + + + + + Make CREATE DOMAIN ... DEFAULT NULL work properly (Tom) + + + + + + Fix excessive logging of SSL error messages (Tom) + + + + + + Fix logging so that log messages are never interleaved when using + the syslogger process (Andrew) + + + + + + Fix crash when log_min_error_statement logging runs out + of memory (Tom) + + + + + + Fix incorrect handling of some foreign-key corner cases (Tom) + + + + + + Prevent CLUSTER from failing + due to attempting to process temporary tables of other sessions (Alvaro) + + + + + + Update the time zone database rules, particularly New Zealand's upcoming changes (Tom) + + + + + + Windows socket improvements (Magnus) + + + + + + Suppress timezone name (%Z) in log timestamps on Windows + because of possible encoding mismatches (Tom) + + + + + + Require non-superusers who use /contrib/dblink to use only + password authentication, as a security measure (Joe) + + + + + + + + + + Release 8.0.13 + + + Release date + 2007-04-23 + + + + This release contains a variety of fixes from 8.0.12, + including a security fix. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.13 + + + A dump/restore is not required for those running 8.0.X. However, + if you are upgrading from a version earlier than 8.0.6, see the release + notes for 8.0.6. + + + + + + Changes + + + + + + Support explicit placement of the temporary-table schema within + search_path, and disable searching it for functions + and operators (Tom) + + + This is needed to allow a security-definer function to set a + truly secure value of 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 CREATE FUNCTION for more information. + + + + + + /contrib/tsearch2 crash fixes (Teodor) + + + + + + Fix potential-data-corruption bug in how VACUUM FULL handles + UPDATE chains (Tom, Pavan Deolasee) + + + + + + Fix PANIC during enlargement of a hash index (bug introduced in 8.0.10) + (Tom) + + + + + + Fix POSIX-style timezone specs to follow new USA DST rules (Tom) + + + + + + + + + + Release 8.0.12 + + + Release date + 2007-02-07 + + + + This release contains one fix from 8.0.11. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.12 + + + A dump/restore is not required for those running 8.0.X. However, + if you are upgrading from a version earlier than 8.0.6, see the release + notes for 8.0.6. + + + + + + Changes + + + + + + Remove overly-restrictive check for type length in constraints and + functional indexes(Tom) + + + + + + + + + + Release 8.0.11 + + + Release date + 2007-02-05 + + + + This release contains a variety of fixes from 8.0.10, including + a security fix. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.11 + + + A dump/restore is not required for those running 8.0.X. However, + if you are upgrading from a version earlier than 8.0.6, see the release + notes for 8.0.6. + + + + + + Changes + + + + + + Remove security vulnerabilities that allowed connected users + to read backend memory (Tom) + + + The vulnerabilities involve suppressing the normal check that a SQL + function returns the data type it's declared to, and changing the + data type of a table column (CVE-2007-0555, CVE-2007-0556). These + errors can easily be exploited to cause a backend crash, and in + principle might be used to read database content that the user + should not be able to access. + + + + + + Fix rare bug wherein btree index page splits could fail + due to choosing an infeasible split point (Heikki Linnakangas) + + + + + + Fix for rare Assert() crash triggered by UNION (Tom) + + + + + + Tighten security of multi-byte character processing for UTF8 sequences + over three bytes long (Tom) + + + + + + + + + + Release 8.0.10 + + + Release date + 2007-01-08 + + + + This release contains a variety of fixes from 8.0.9. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.10 + + + A dump/restore is not required for those running 8.0.X. However, + if you are upgrading from a version earlier than 8.0.6, see the release + notes for 8.0.6. + + + + + + Changes + + + + + + Improve handling of getaddrinfo() on AIX (Tom) + + + + This fixes a problem with starting the statistics collector, + among other things. + + + + + + Fix failed to re-find parent key errors in + VACUUM (Tom) + + + + + + Fix race condition for truncation of a large relation across a + gigabyte boundary by VACUUM (Tom) + + + + + + Fix bugs affecting multi-gigabyte hash indexes (Tom) + + + + + + Fix possible deadlock in Windows signal handling (Teodor) + + + + + + Fix error when constructing an ARRAY[] made up of multiple + empty elements (Tom) + + + + + + Fix ecpg memory leak during connection (Michael) + + + + + + to_number() and to_char(numeric) + are now STABLE, not IMMUTABLE, for + new initdb installs (Tom) + + + + This is because lc_numeric can potentially + change the output of these functions. + + + + + + Improve index usage of regular expressions that use parentheses (Tom) + + + + This improves psql \d performance also. + + + + + + Update timezone database + + + + This affects Australian and Canadian daylight-savings rules in + particular. + + + + + + + + + + Release 8.0.9 + + + Release date + 2006-10-16 + + + + This release contains a variety of fixes from 8.0.8. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.9 + + + A dump/restore is not required for those running 8.0.X. However, + if you are upgrading from a version earlier than 8.0.6, see the release + notes for 8.0.6. + + + + + + Changes + + +Fix crash when referencing NEW row +values in rule WHERE expressions (Tom) +Fix core dump when an untyped literal is taken as +ANYARRAY +Fix mishandling of AFTER triggers when query contains a SQL +function returning multiple rows (Tom) +Fix ALTER TABLE ... TYPE to recheck +NOT NULL for USING clause (Tom) +Fix string_to_array() to handle overlapping + matches for the separator string +For example, string_to_array('123xx456xxx789', 'xx'). + +Fix corner cases in pattern matching for + psql's \d commands +Fix index-corrupting bugs in /contrib/ltree + (Teodor) +Numerous robustness fixes in ecpg (Joachim +Wieland) +Fix backslash escaping in /contrib/dbmirror +Fix instability of statistics collection on Win32 (Tom, Andrew) +Fixes for AIX and +Intel compilers (Tom) + + + + + + + Release 8.0.8 + + + Release date + 2006-05-23 + + + + This release contains a variety of fixes from 8.0.7, + including patches for extremely serious security issues. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.8 + + + A dump/restore is not required for those running 8.0.X. However, + if you are upgrading from a version earlier than 8.0.6, see the release + notes for 8.0.6. + + + + 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 libpq's + PQescapeStringConn()) to perform string escaping, + rather than relying on ad hoc code to do it. + + + + + Changes + + +Change the server to reject invalidly-encoded multibyte +characters in all cases (Tatsuo, Tom) +While 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. + + +Reject unsafe uses of \' in string literals +As a server-side defense against SQL-injection attacks of the type +described in CVE-2006-2314, the server now only accepts '' and not +\' as a representation of ASCII single quote in SQL string +literals. By default, \' is rejected only when +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 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 +backslash_quote is in part to make it obvious that insecure +clients are insecure. + + +Modify libpq's string-escaping routines to be +aware of encoding considerations and +standard_conforming_strings +This fixes 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 PostgreSQL connections +concurrently should migrate to PQescapeStringConn() and +PQescapeByteaConn() to ensure that escaping is done correctly +for the settings in use in each database connection. Applications that +do string escaping by hand should be modified to rely on library +routines instead. + + +Fix some incorrect encoding conversion functions +win1251_to_iso, alt_to_iso, +euc_tw_to_big5, euc_tw_to_mic, +mic_to_euc_tw were all broken to varying +extents. + + +Clean up stray remaining uses of \' in strings +(Bruce, Jan) + +Fix bug that sometimes caused OR'd index scans to +miss rows they should have returned + +Fix WAL replay for case where a btree index has been +truncated + +Fix SIMILAR TO for patterns involving +| (Tom) + +Fix SELECT INTO and CREATE TABLE AS to +create tables in the default tablespace, not the base directory (Kris +Jurka) + +Fix server to use custom DH SSL parameters correctly (Michael +Fuhr) + +Fix for Bonjour on Intel Macs (Ashley Clark) + +Fix various minor memory leaks + +Fix problem with password prompting on some Win32 systems +(Robert Kinberg) + + + + + + + Release 8.0.7 + + + Release date + 2006-02-14 + + + + This release contains a variety of fixes from 8.0.6. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.7 + + + A dump/restore is not required for those running 8.0.X. However, + if you are upgrading from a version earlier than 8.0.6, see the release + notes for 8.0.6. + + + + + Changes + + + +Fix potential crash in SET +SESSION AUTHORIZATION (CVE-2006-0553) +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. + + +Fix bug with row visibility logic in self-inserted +rows (Tom) +Under rare circumstances a row inserted by the current command +could be seen as already valid, when it should not be. Repairs bug +created in 8.0.4, 7.4.9, and 7.3.11 releases. + + +Fix race condition that could lead to file already +exists errors during pg_clog and pg_subtrans file creation +(Tom) + +Fix cases that could lead to crashes if a cache-invalidation +message arrives at just the wrong time (Tom) + +Properly check DOMAIN constraints for +UNKNOWN parameters in prepared statements +(Neil) + +Ensure ALTER COLUMN TYPE will process +FOREIGN KEY, UNIQUE, and PRIMARY KEY +constraints in the proper order (Nakano Yoshihisa) + +Fixes to allow restoring dumps that have cross-schema +references to custom operators or operator classes (Tom) + +Allow pg_restore to continue properly after a +COPY failure; formerly it tried to treat the remaining +COPY data as SQL commands (Stephen Frost) + +Fix pg_ctl unregister crash +when the data directory is not specified (Magnus) + +Fix ecpg crash on AMD64 and PPC +(Neil) + +Recover properly if error occurs during argument passing +in PL/python (Neil) + +Fix PL/perl's handling of locales on +Win32 to match the backend (Andrew) + +Fix crash when log_min_messages is set to +DEBUG3 or above in postgresql.conf on Win32 +(Bruce) + +Fix pgxs -L library path +specification for Win32, Cygwin, OS X, AIX (Bruce) + +Check that SID is enabled while checking for Win32 admin +privileges (Magnus) + +Properly reject out-of-range date inputs (Kris +Jurka) + +Portability fix for testing presence of finite +and isinf during configure (Tom) + + + + + + + + Release 8.0.6 + + + Release date + 2006-01-09 + + + + This release contains a variety of fixes from 8.0.5. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.6 + + + A dump/restore is not required for those running 8.0.X. However, + if you are upgrading from a version earlier than 8.0.3, see the release + notes for 8.0.3. + Also, you might need to REINDEX indexes on textual + columns after updating, if you are affected by the locale or + plperl issues described below. + + + + + Changes + + + +Fix Windows code so that postmaster will continue rather +than exit if there is no more room in ShmemBackendArray (Magnus) +The previous behavior could lead to a denial-of-service situation if too +many connection requests arrive close together. This applies +only to the Windows port. + +Fix bug introduced in 8.0 that could allow ReadBuffer +to return an already-used page as new, potentially causing loss of +recently-committed data (Tom) + +Fix for protocol-level Describe messages issued +outside a transaction or in a failed transaction (Tom) + +Fix character string comparison for locales that consider +different character combinations as equal, such as Hungarian (Tom) +This might require REINDEX to fix existing indexes on +textual columns. + +Set locale environment variables during postmaster startup +to ensure that plperl won't change the locale later +This fixes a problem that occurred if the postmaster was +started with environment variables specifying a different locale than what +initdb had been told. Under these conditions, any use of +plperl was likely to lead to corrupt indexes. You might need +REINDEX to fix existing indexes on +textual columns if this has happened to you. + +Allow more flexible relocation of installation +directories (Tom) +Previous releases supported relocation only if all installation +directory paths were the same except for the last component. + +Fix longstanding bug in strpos() and regular expression +handling in certain rarely used Asian multi-byte character sets (Tatsuo) + + +Various fixes for functions returning RECORDs +(Tom) + +Fix bug in /contrib/pgcrypto gen_salt, +which caused it not to use all available salt space for MD5 and +XDES algorithms (Marko Kreen, Solar Designer) +Salts for Blowfish and standard DES are unaffected. + +Fix /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) + + + + + + + + Release 8.0.5 + + + Release date + 2005-12-12 + + + + This release contains a variety of fixes from 8.0.4. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.5 + + + A dump/restore is not required for those running 8.0.X. However, + if you are upgrading from a version earlier than 8.0.3, see the release + notes for 8.0.3. + + + + + Changes + + + +Fix race condition in transaction log management +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. + + +Fix bgwriter problems after recovering from errors +(Tom) + +The background writer was found to leak buffer pins after write errors. +While not fatal in itself, this might lead to mysterious blockages of +later VACUUM commands. + + + +Prevent failure if client sends Bind protocol message +when current transaction is already aborted + +/contrib/ltree fixes (Teodor) + +AIX and HPUX compile fixes (Tom) + +Retry file reads and writes after Windows +NO_SYSTEM_RESOURCES error (Qingqing Zhou) + +Fix intermittent failure when log_line_prefix +includes %i + +Fix psql performance issue with long scripts +on Windows (Merlin Moncure) + +Fix missing updates of pg_group flat +file + +Fix longstanding planning error for outer joins +This bug sometimes caused a bogus error RIGHT JOIN is +only supported with merge-joinable join conditions. + +Postpone timezone initialization until after +postmaster.pid is created +This avoids confusing startup scripts that expect the pid file to appear +quickly. + +Prevent core dump in pg_autovacuum when a +table has been dropped + +Fix problems with whole-row references (foo.*) +to subquery results + + + + + + + Release 8.0.4 + + + Release date + 2005-10-04 + + + + This release contains a variety of fixes from 8.0.3. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.4 + + + A dump/restore is not required for those running 8.0.X. However, + if you are upgrading from a version earlier than 8.0.3, see the release + notes for 8.0.3. + + + + + Changes + + +Fix error that allowed VACUUM to remove +ctid chains too soon, and add more checking in code that follows +ctid links +This fixes a long-standing problem that could cause crashes in very rare +circumstances. +Fix CHAR() to properly pad spaces to the specified +length when using a multiple-byte character set (Yoshiyuki Asaba) +In prior releases, the padding of CHAR() was incorrect +because it only padded to the specified number of bytes without +considering how many characters were stored. +Force a checkpoint before committing CREATE +DATABASE +This should fix recent reports of index is not a btree +failures when a crash occurs shortly after CREATE +DATABASE. +Fix the sense of the test for read-only transaction +in COPY +The code formerly prohibited COPY TO, where it should +prohibit COPY FROM. + +Handle consecutive embedded newlines in COPY +CSV-mode input +Fix date_trunc(week) for dates near year +end +Fix planning problem with outer-join ON clauses that reference +only the inner-side relation +Further fixes for x FULL JOIN y ON true corner +cases +Fix overenthusiastic optimization of x IN (SELECT +DISTINCT ...) and related cases +Fix mis-planning of queries with small LIMIT +values due to poorly thought out fuzzy cost +comparison +Make array_in and array_recv more +paranoid about validating their OID parameter +Fix missing rows in queries like UPDATE a=... WHERE +a... with GiST index on column a +Improve robustness of datetime parsing +Improve checking for partially-written WAL +pages +Improve robustness of signal handling when SSL is +enabled +Improve MIPS and M68K spinlock code +Don't try to open more than max_files_per_process +files during postmaster startup +Various memory leakage fixes +Various portability improvements +Update timezone data files +Improve handling of DLL load failures on Windows +Improve random-number generation on Windows +Make psql -f filename return a nonzero exit code +when opening the file fails +Change pg_dump to handle inherited check +constraints more reliably +Fix password prompting in pg_restore on +Windows +Fix PL/PgSQL to handle var := var correctly when +the variable is of pass-by-reference type +Fix PL/Perl %_SHARED so it's actually +shared +Fix contrib/pg_autovacuum to allow sleep +intervals over 2000 sec +Update contrib/tsearch2 to use current Snowball +code + + + + + + + Release 8.0.3 + + + Release date + 2005-05-09 + + + + This release contains a variety of fixes from 8.0.2, including several + security-related issues. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.3 + + + A dump/restore is not required for those running 8.0.X. However, + it is one possible way of handling two significant security problems + that have been found in the initial contents of 8.0.X system + catalogs. A dump/initdb/reload sequence using 8.0.3's initdb will + automatically correct these problems. + + + + 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.) + + + + The lesser problem is that the contrib/tsearch2 module + creates several functions that are improperly declared to return + internal when they do not accept internal arguments. + This breaks type safety for all functions using internal + arguments. + + + + It is strongly recommended that all installations repair these errors, + either by initdb or by following the manual repair procedure given + below. The errors at least allow unprivileged database users to crash + their server process, and might allow unprivileged users to gain the + privileges of a database superuser. + + + + If you wish not to do an initdb, perform the same manual repair + procedures shown in the 7.4.8 release + notes. + + + + + Changes + + +Change encoding function signature to prevent +misuse +Change contrib/tsearch2 to avoid unsafe use of +INTERNAL function results +Guard against incorrect second parameter to +record_out +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 +This is an extremely serious bug since it could lead to apparent +data inconsistencies being briefly visible to applications. +Repair race condition between relation extension and +VACUUM +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. + +Fix comparisons of TIME WITH TIME ZONE values + +The comparison code was wrong in the case where the +--enable-integer-datetimes configuration switch had been used. +NOTE: if you have an index on a TIME WITH TIME ZONE column, +it will need to be REINDEXed after installing this update, because +the fix corrects the sort order of column values. + +Fix EXTRACT(EPOCH) for +TIME WITH TIME ZONE values +Fix mis-display of negative fractional seconds in +INTERVAL values + +This error only occurred when the +--enable-integer-datetimes configuration switch had been used. + +Fix pg_dump to dump trigger names containing % +correctly (Neil) +Still more 64-bit fixes for +contrib/intagg +Prevent incorrect optimization of functions returning +RECORD +Prevent crash on COALESCE(NULL,NULL) +Fix Borland makefile for libpq +Fix contrib/btree_gist for timetz type +(Teodor) +Make pg_ctl check the PID found in +postmaster.pid to see if it is still a live +process +Fix pg_dump/pg_restore problems caused +by addition of dump timestamps +Fix interaction between materializing holdable cursors and +firing deferred triggers during transaction commit +Fix memory leak in SQL functions returning pass-by-reference +data types + + + + + + + Release 8.0.2 + + + Release date + 2005-04-07 + + + + This release contains a variety of fixes from 8.0.1. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.2 + + + A dump/restore is not required for those running 8.0.*. + This release updates the major version number of the + PostgreSQL libraries, so it might be + necessary to re-link some user applications if they cannot + find the properly-numbered shared library. + + + + + Changes + + +Increment the major version number of all interface +libraries (Bruce) + +This should have been done in 8.0.0. It is required so 7.4.X versions +of PostgreSQL client applications, like psql, +can be used on the same machine as 8.0.X applications. This might require +re-linking user applications that use these libraries. + +Add Windows-only wal_sync_method setting of + + +This setting causes PostgreSQL to write through +any disk-drive write cache when writing to WAL. +This behavior was formerly called + +Enable the wal_sync_method setting of + + +Because the default is no longer + +New cache management algorithm 2Q replaces +ARC (Tom) + +This was done to avoid a pending US patent on ARC. The +2Q code might be a few percentage points slower than +ARC for some work loads. A better cache management algorithm +will appear in 8.1. + +Planner adjustments to improve behavior on freshly-created +tables (Tom) +Allow plpgsql to assign to an element of an array that is +initially NULL (Tom) + +Formerly the array would remain NULL, but now it becomes a +single-element array. The main SQL engine was changed to handle +UPDATE of a null array value this way in 8.0, but the similar +case in plpgsql was overlooked. + + +Convert \r\n and \r to \n +in plpython function bodies (Michael Fuhr) + + This prevents syntax errors when plpython code is written on a Windows or + Mac client. + + +Allow SPI cursors to handle utility commands that return rows, +such as EXPLAIN (Tom) +Fix CLUSTER failure after ALTER TABLE +SET WITHOUT OIDS (Tom) +Reduce memory usage of ALTER TABLE ADD COLUMN +(Neil) +Fix ALTER LANGUAGE RENAME (Tom) +Document the Windows-only register and +unregister options of pg_ctl (Magnus) +Ensure operations done during backend shutdown are counted by +statistics collector + +This is expected to resolve reports of 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. + +Change the Windows default for configuration parameter +log_destination to + +By default, a server running on Windows will now send log output to the +Windows event logger rather than standard error. + +Make Kerberos authentication work on Windows (Magnus) +Allow ALTER DATABASE RENAME by superusers +who aren't flagged as having CREATEDB privilege (Tom) +Modify WAL log entries for CREATE and +DROP DATABASE to not specify absolute paths (Tom) +This allows point-in-time recovery on a different machine with possibly +different database location. Note that CREATE TABLESPACE still +poses a hazard in such situations. + +Fix crash from a backend exiting with an open transaction +that created a table and opened a cursor on it (Tom) +Fix array_map() so it can call PL functions +(Tom) +Several contrib/tsearch2 and +contrib/btree_gist fixes (Teodor) + +Fix crash of some contrib/pgcrypto +functions on some platforms (Marko Kreen) +Fix contrib/intagg for 64-bit platforms +(Tom) +Fix ecpg bugs in parsing of CREATE statement +(Michael) +Work around gcc bug on powerpc and amd64 causing problems in +ecpg (Christof Petig) +Do not use locale-aware versions of upper(), +lower(), and initcap() when the locale is +C (Bruce) + + This allows these functions to work on platforms that generate errors + for non-7-bit data when the locale is C. + +Fix quote_ident() to quote names that match keywords (Tom) +Fix to_date() to behave reasonably when +CC and YY fields are both used (Karel) +Prevent to_char(interval) from failing +when given a zero-month interval (Tom) +Fix wrong week returned by date_trunc('week') +(Bruce) + +date_trunc('week') +returned the wrong year for the first few days of January in some years. + +Use the correct default mask length for class D +addresses in INET data types (Tom) + + + + + + + Release 8.0.1 + + + Release date + 2005-01-31 + + + + This release contains a variety of fixes from 8.0.0, including several + security-related issues. + For information about new features in the 8.0 major release, see + . + + + + Migration to Version 8.0.1 + + + A dump/restore is not required for those running 8.0.0. + + + + + Changes + + +Disallow LOAD to non-superusers + +On platforms that will automatically execute initialization functions of a +shared library (this includes at least Windows and ELF-based Unixen), +LOAD can be used to make the server execute arbitrary code. +Thanks to NGS Software for reporting this. +Check that creator of an aggregate function has the right to +execute the specified transition functions + +This oversight made it possible to bypass denial of EXECUTE +permission on a function. +Fix security and 64-bit issues in +contrib/intagg +Add needed STRICT marking to some contrib functions (Kris +Jurka) +Avoid buffer overrun when plpgsql cursor declaration has too +many parameters (Neil) +Make ALTER TABLE ADD COLUMN enforce domain +constraints in all cases +Fix planning error for FULL and RIGHT outer joins + +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. + +Improve planning of grouped aggregate queries +ROLLBACK TO savepoint +closes cursors created since the savepoint +Fix inadequate backend stack size on Windows +Avoid SHGetSpecialFolderPath() on Windows +(Magnus) +Fix some problems in running pg_autovacuum as a Windows +service (Dave Page) +Multiple minor bug fixes in +pg_dump/pg_restore +Fix ecpg segfault with named structs used in +typedefs (Michael) + + + + + + + Release 8.0 + + + Release date + 2005-01-19 + + + + Overview + + + Major changes in this release: + + + + + + Microsoft Windows Native Server + + + + + This is the first PostgreSQL release + to run natively on Microsoft Windows as + a server. It can run as a Windows service. This + release supports NT-based Windows releases like + Windows 2000 SP4, Windows XP, and + Windows 2003. Older releases like + Windows 95, Windows 98, and + Windows ME are not supported because these operating + systems do not have the infrastructure to support + PostgreSQL. A separate installer + project has been created to ease installation on + Windows — see . + + + + Although tested throughout our release cycle, the Windows port + does not have the benefit of years of use in production + environments that PostgreSQL has on + Unix platforms. Therefore it should be treated with the same + level of caution as you would a new product. + + + + Previous releases required the Unix emulation toolkit + Cygwin in order to run the server on Windows + operating systems. PostgreSQL has + supported native clients on Windows for many years. + + + + + + + Savepoints + + + + + Savepoints allow specific parts of a transaction to be aborted + without affecting the remainder of the transaction. Prior + releases had no such capability; there was no way to recover + from a statement failure within a transaction except by + aborting the whole transaction. This feature is valuable for + application writers who require error recovery within a + complex transaction. + + + + + + + Point-In-Time Recovery + + + + + In previous releases there was no way to recover from disk + drive failure except to restore from a previous backup or use + a standby replication server. Point-in-time recovery allows + continuous backup of the server. You can recover either to + the point of failure or to some transaction in the past. + + + + + + + Tablespaces + + + + + Tablespaces allow administrators to select different file systems + for storage of individual tables, indexes, and databases. + This improves performance and control over disk space + usage. Prior releases used initlocation and + manual symlink management for such tasks. + + + + + + + Improved Buffer Management, CHECKPOINT, + VACUUM + + + + + This release has a more intelligent buffer replacement strategy, + which will make better use of available shared buffers and + improve performance. The performance impact of vacuum and + checkpoints is also lessened. + + + + + + + Change Column Types + + + + + A column's data type can now be changed with ALTER + TABLE. + + + + + + + New Perl Server-Side Language + + + + + A new version of the plperl server-side language now + supports a persistent shared storage area, triggers, returning records + and arrays of records, and SPI calls to access the database. + + + + + + + Comma-separated-value (CSV) support in COPY + + + + + COPY can now read and write + comma-separated-value files. It has the flexibility to + interpret nonstandard quoting and separation characters too. + + + + + + + + + Migration to Version 8.0 + + + A dump/restore using pg_dump is + required for those wishing to migrate data from any previous + release. + + + + Observe the following incompatibilities: + + + + + + + In + + + + + Functions declared + + + + + Nondeferred + + + + + Server configuration parameters virtual_host and + tcpip_socket have been replaced with a more general + parameter listen_addresses. Also, the server now listens on + localhost by default, which eliminates the need for the + -i postmaster switch in many scenarios. + + + + + + Server configuration parameters SortMem and + VacuumMem have been renamed to work_mem + and maintenance_work_mem to better reflect their + use. The original names are still supported in + SET and SHOW. + + + + + + Server configuration parameters log_pid, + log_timestamp, and log_source_port have been + replaced with a more general parameter log_line_prefix. + + + + + + Server configuration parameter syslog has been + replaced with a more logical log_destination variable to + control the log output destination. + + + + + + Server configuration parameter log_statement has been + changed so it can selectively log just database modification or + data definition statements. Server configuration parameter + log_duration now prints only when log_statement + prints the query. + + + + + + Server configuration parameter max_expr_depth parameter has + been replaced with max_stack_depth which measures the + physical stack size rather than the expression nesting depth. This + helps prevent session termination due to stack overflow caused by + recursive functions. + + + + + + The length() function no longer counts trailing spaces in + CHAR(n) values. + + + + + + Casting an integer to BIT(N) selects the rightmost N bits of the + integer, not the leftmost N bits as before. + + + + + + Updating an element or slice of a NULL array value now produces + a nonnull array result, namely an array containing + just the assigned-to positions. + + + + + + Syntax checking of array input values has been tightened up + considerably. Junk that was previously allowed in odd places with + odd results now causes an error. Empty-string element values + must now be written as "", rather than writing nothing. + Also changed behavior with respect to whitespace surrounding + array elements: trailing whitespace is now ignored, for symmetry + with leading whitespace (which has always been ignored). + + + + + + Overflow in integer arithmetic operations is now detected and + reported as an error. + + + + + + The arithmetic operators associated with the single-byte + "char" data type have been removed. + + + + + + The extract() function (also called + date_part) now returns the proper year for BC dates. + It previously returned one less than the correct year. The + function now also returns the proper values for millennium and + century. + + + + + + CIDR values now must have their nonmasked bits be zero. + For example, we no longer allow + 204.248.199.1/31 as a CIDR value. Such + values should never have been accepted by + PostgreSQL and will now be rejected. + + + + + + EXECUTE now returns a completion tag that + matches the executed statement. + + + + + + psql's \copy command now reads or + writes to the query's stdin/stdout, rather than + psql's stdin/stdout. The previous + behavior can be accessed via new + + + + + + The JDBC client interface has been removed from the core + distribution, and is now hosted at . + + + + + + The Tcl client interface has also been removed. There are several + Tcl interfaces now hosted at . + + + + + + The server now uses its own time zone database, rather than the + one supplied by the operating system. This will provide consistent + behavior across all platforms. In most cases, there should be + little noticeable difference in time zone behavior, except that + the time zone names used by SET/SHOW + TimeZone might be different from what your platform provides. + + + + + + Configure's threading option no longer requires + users to run tests or edit configuration files; threading options + are now detected automatically. + + + + + + Now that tablespaces have been implemented, + initlocation has been removed. + + + + + + The API for user-defined GiST indexes has been changed. The + Union and PickSplit methods are now passed a pointer to a + special GistEntryVector structure, + rather than a bytea. + + + + + + + + Deprecated Features + + + Some aspects of PostgreSQL's behavior + have been determined to be suboptimal. For the sake of backward + compatibility these have not been removed in 8.0, but they are + considered deprecated and will be removed in the next major + release. + + + + + + The 8.1 release will remove the to_char() function + for intervals. + + + + + + The server now warns of empty strings passed to + oid/float4/float8 data + types, but continues to interpret them as zeroes as before. + In the next major release, empty strings will be considered + invalid input for these data types. + + + + + + By default, tables in PostgreSQL 8.0 + and earlier are created with OIDs. In the next release, + this will not be the case: to create a table + that contains OIDs, the + + + + + + + Changes + + + Below you will find a detailed account of the changes between + release 8.0 and the previous major release. + + + + Performance Improvements + + + + + Support cross-data-type index usage (Tom) + + + Before this change, many queries would not use an index if the data + types did not match exactly. This improvement makes index usage more + intuitive and consistent. + + + + + + New buffer replacement strategy that improves caching (Jan) + + + Prior releases used a least-recently-used (LRU) cache to keep + recently referenced pages in memory. The LRU algorithm + did not consider the number of times a specific cache entry was + accessed, so large table scans could force out useful cache pages. + The new cache algorithm uses four separate lists to track most + recently used and most frequently used cache pages and dynamically + optimize their replacement based on the work load. This should + lead to much more efficient use of the shared buffer cache. + Administrators who have tested shared buffer sizes in the past + should retest with this new cache replacement policy. + + + + + + Add subprocess to write dirty buffers periodically to reduce + checkpoint writes (Jan) + + + In previous releases, the checkpoint process, which runs every few + minutes, would write all dirty buffers to the operating system's + buffer cache then flush all dirty operating system buffers to + disk. This resulted in a periodic spike in disk usage that often + hurt performance. The new code uses a background writer to trickle + disk writes at a steady pace so checkpoints have far fewer dirty + pages to write to disk. Also, the new code does not issue a global + sync() call, but instead fsync()s just + the files written since the last checkpoint. This should improve + performance and minimize degradation during checkpoints. + + + + + + Add ability to prolong vacuum to reduce performance impact (Jan) + + + On busy systems, VACUUM performs many I/O + requests which can hurt performance for other users. This + release allows you to slow down VACUUM to + reduce its impact on other users, though this increases the + total duration of VACUUM. + + + + + + Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom) + + + This improves the way indexes are scanned when many duplicate + values exist in the index. + + + + + + Use dynamically-generated table size estimates while planning (Tom) + + + Formerly the planner estimated table sizes using the values seen + by the last VACUUM or ANALYZE, + both as to physical table size (number of pages) and number of rows. + Now, the current physical table size is obtained from the kernel, + and the number of rows is estimated by multiplying the table size + by the row density (rows per page) seen by the last + VACUUM or ANALYZE. This should + produce more reliable estimates in cases where the table size has + changed significantly since the last housekeeping command. + + + + + + Improved index usage with OR clauses (Tom) + + + This allows the optimizer to use indexes in statements with many OR + clauses that would not have been indexed in the past. It can also use + multi-column indexes where the first column is specified and the second + column is part of an OR clause. + + + + + + Improve matching of partial index clauses (Tom) + + + The server is now smarter about using partial indexes in queries + involving complex + + + + + Improve performance of the GEQO optimizer (Tom) + + + The GEQO optimizer is used to plan queries involving many tables (by + default, twelve or more). This release speeds up the way queries are + analyzed to decrease time spent in optimization. + + + + + + Miscellaneous optimizer improvements + + + There is not room here to list all the minor improvements made, but + numerous special cases work better than in prior releases. + + + + + + Improve lookup speed for C functions (Tom) + + + This release uses a hash table to lookup information for dynamically + loaded C functions. This improves their speed so they perform nearly as + quickly as functions that are built into the server executable. + + + + + + Add type-specific ANALYZE statistics + capability (Mark Cave-Ayland) + + + This feature allows more flexibility in generating statistics + for nonstandard data types. + + + + + + ANALYZE now collects statistics for + expression indexes (Tom) + + + Expression indexes (also called functional indexes) allow users to + index not just columns but the results of expressions and function + calls. With this release, the optimizer can gather and use statistics + about the contents of expression indexes. This will greatly improve + the quality of planning for queries in which an expression index is + relevant. + + + + + + New two-stage sampling method for ANALYZE + (Manfred Koizar) + + + This gives better statistics when the density of valid rows is very + different in different regions of a table. + + + + + + Speed up TRUNCATE (Tom) + + + This buys back some of the performance loss observed in 7.4, while still + keeping TRUNCATE transaction-safe. + + + + + + + + + Server Changes + + + + + Add WAL file archiving and point-in-time recovery (Simon Riggs) + + + + + + Add tablespaces so admins can control disk layout (Gavin) + + + + + + Add a built-in log rotation program (Andreas Pflug) + + + It is now possible to log server messages conveniently without + relying on either syslog or an external log + rotation program. + + + + + + Add new read-only server configuration parameters to show server + compile-time settings: block_size, + integer_datetimes, max_function_args, + max_identifier_length, max_index_keys (Joe) + + + + + + Make quoting of sameuser, samegroup, and + all remove special meaning of these terms in + pg_hba.conf (Andrew) + + + + + + Use clearer IPv6 name ::1/128 for + localhost in default pg_hba.conf (Andrew) + + + + + + Use CIDR format in pg_hba.conf examples (Andrew) + + + + + + Rename server configuration parameters SortMem and + VacuumMem to work_mem and + maintenance_work_mem (Old names still supported) (Tom) + + + This change was made to clarify that bulk operations such as index and + foreign key creation use maintenance_work_mem, while + work_mem is for workspaces used during query execution. + + + + + + Allow logging of session disconnections using server configuration + log_disconnections (Andrew) + + + + + + Add new server configuration parameter log_line_prefix to + allow control of information emitted in each log line (Andrew) + + + Available information includes user name, database name, remote IP + address, and session start time. + + + + + + Remove server configuration parameters log_pid, + log_timestamp, log_source_port; functionality + superseded by log_line_prefix (Andrew) + + + + + + Replace the virtual_host and tcpip_socket + parameters with a unified listen_addresses parameter + (Andrew, Tom) + + + virtual_host could only specify a single IP address to + listen on. listen_addresses allows multiple addresses + to be specified. + + + + + + Listen on localhost by default, which eliminates the need for the + + + Listening on localhost (127.0.0.1) opens no new + security holes but allows configurations like Windows and JDBC, + which do not support local sockets, to work without special + adjustments. + + + + + + Remove syslog server configuration parameter, and add more + logical log_destination variable to control log output + location (Magnus) + + + + + + Change server configuration parameter log_statement to take + values all, mod, ddl, or + none to select which queries are logged (Bruce) + + + This allows administrators to log only data definition changes or + only data modification statements. + + + + + + Some logging-related configuration parameters could formerly be adjusted + by ordinary users, but only in the more verbose direction. + They are now treated more strictly: only superusers can set them. + However, a superuser can use ALTER USER to provide per-user + settings of these values for non-superusers. Also, it is now possible + for superusers to set values of superuser-only configuration parameters + via PGOPTIONS. + + + + + + Allow configuration files to be placed outside the data directory (mlw) + + + By default, configuration files are kept in the cluster's top directory. + With this addition, configuration files can be placed outside the + data directory, easing administration. + + + + + + Plan prepared queries only when first executed so constants can be + used for statistics (Oliver Jowett) + + + Prepared statements plan queries once and execute them many + times. While prepared queries avoid the overhead of re-planning + on each use, the quality of the plan suffers from not knowing the exact + parameters to be used in the query. In this release, planning of + unnamed prepared statements is delayed until the first execution, + and the actual parameter values of that execution are used as + optimization hints. This allows use of out-of-line parameter passing + without incurring a performance penalty. + + + + + + Allow DECLARE CURSOR to take parameters + (Oliver Jowett) + + + It is now useful to issue DECLARE CURSOR in a + Parse message with parameters. The parameter values + sent at Bind time will be substituted into the + execution of the cursor's query. + + + + + + Fix hash joins and aggregates of inet and + cidr data types (Tom) + + + Release 7.4 handled hashing of mixed inet and + cidr values incorrectly. (This bug did not exist + in prior releases because they wouldn't try to hash either + data type.) + + + + + + Make log_duration print only when log_statement + prints the query (Ed L.) + + + + + + + + + Query Changes + + + + + Add savepoints (nested transactions) (Alvaro) + + + + + + Unsupported isolation levels are now accepted and promoted to the + nearest supported level (Peter) + + + The SQL specification states that if a database doesn't support a + specific isolation level, it should use the next more restrictive level. + This change complies with that recommendation. + + + + + + Allow BEGIN WORK to specify transaction + isolation levels like START TRANSACTION does + (Bruce) + + + + + + Fix table permission checking for cases in which rules generate + a query type different from the originally submitted query (Tom) + + + + + + Implement dollar quoting to simplify single-quote usage (Andrew, Tom, + David Fetter) + + + In previous releases, because single quotes had to be used to + quote a function's body, the use of single quotes inside the + function text required use of two single quotes or other error-prone + notations. With this release we add the ability to use "dollar + quoting" to quote a block of text. The ability to use different + quoting delimiters at different nesting levels greatly simplifies + the task of quoting correctly, especially in complex functions. + Dollar quoting can be used anywhere quoted text is needed. + + + + + + Make CASE val WHEN compval1 THEN ... evaluate val only once (Tom) + + + + + + + + Test + + Fixes improper failure of cases such as SELECT SUM(win)/SUM(lose) + ... GROUP BY ... HAVING SUM(lose) > 0. This should work but formerly + could fail with divide-by-zero. + + + + + + Replace max_expr_depth parameter with + max_stack_depth parameter, measured in kilobytes of stack + size (Tom) + + + This gives us a fairly bulletproof defense against crashing due to + runaway recursive functions. Instead of measuring the depth of expression + nesting, we now directly measure the size of the execution stack. + + + + + + Allow arbitrary row expressions (Tom) + + + This release allows SQL expressions to contain arbitrary composite + types, that is, row values. It also allows functions to more easily + take rows as arguments and return row values. + + + + + + Allow + + + + + Avoid locale-specific case conversion of basic ASCII letters in + identifiers and keywords (Tom) + + + This solves the Turkish problem with mangling of words + containing I and i. Folding of characters + outside the 7-bit-ASCII set is still locale-aware. + + + + + + Improve syntax error reporting (Fabien, Tom) + + + Syntax error reports are more useful than before. + + + + + + Change EXECUTE to return a completion tag + matching the executed statement (Kris Jurka) + + + Previous releases return an EXECUTE tag for + any EXECUTE call. In this release, the tag + returned will reflect the command executed. + + + + + + Avoid emitting + + Such a clause makes no logical sense, but in some cases the rule + decompiler formerly produced this syntax. + + + + + + + + + Object Manipulation Changes + + + + + Add COMMENT ON for casts, conversions, languages, + operator classes, and large objects (Christopher) + + + + + + Add new server configuration parameter default_with_oids to + control whether tables are created with OIDs by default (Neil) + + + This allows administrators to control whether CREATE + TABLE commands create tables with or without OID + columns by default. (Note: the current factory default setting for + default_with_oids is TRUE, but the default + will become FALSE in future releases.) + + + + + + Add + + + + + Allow ALTER TABLE DROP COLUMN to drop an OID + column (ALTER TABLE SET WITHOUT OIDS still works) + (Tom) + + + + + + Allow composite types as table columns (Tom) + + + + + + Allow ALTER ... ADD COLUMN with defaults and + + + It is now possible for + + + + + Add ALTER COLUMN TYPE to change column's type (Rod) + + + It is now possible to alter a column's data type without dropping + and re-adding the column. + + + + + + Allow multiple ALTER actions in a single ALTER + TABLE command (Rod) + + + This is particularly useful for ALTER commands that + rewrite the table (which include + + + + + Allow ALTER TABLE to add SERIAL + columns (Tom) + + + This falls out from the new capability of specifying defaults for new + columns. + + + + + + Allow changing the owners of aggregates, conversions, databases, + functions, operators, operator classes, schemas, types, and tablespaces + (Christopher, Euler Taveira de Oliveira) + + + Previously this required modifying the system tables directly. + + + + + + Allow temporary object creation to be limited to + + + + + Add + + Prior to this release, there was no way to clear an auto-cluster + specification except to modify the system tables. + + + + + + Constraint/Index/SERIAL names are now + table_column_type + with numbers appended to guarantee uniqueness within the schema + (Tom) + + + The SQL specification states that such names should be unique + within a schema. + + + + + + Add pg_get_serial_sequence() to return a + SERIAL column's sequence name (Christopher) + + + This allows automated scripts to reliably find the SERIAL + sequence name. + + + + + + Warn when primary/foreign key data type mismatch requires costly lookup + + + + + + New ALTER INDEX command to allow moving of indexes + between tablespaces (Gavin) + + + + + + Make ALTER TABLE OWNER change dependent sequence + ownership too (Alvaro) + + + + + + + + + + Utility Command Changes + + + + + Allow CREATE SCHEMA to create triggers, + indexes, and sequences (Neil) + + + + + + Add + + This allows + + + + + Add + + This allows the LOCK command to fail if it + would have to wait for the requested lock. + + + + + + Allow COPY to read and write + comma-separated-value (CSV) files (Andrew, Bruce) + + + + + + Generate error if the COPY delimiter and NULL + string conflict (Bruce) + + + + + + GRANT/REVOKE behavior + follows the SQL spec more closely + + + + + + Avoid locking conflict between CREATE INDEX + and CHECKPOINT (Tom) + + + In 7.3 and 7.4, a long-running B-tree index build could block concurrent + CHECKPOINTs from completing, thereby causing WAL bloat because the + WAL log could not be recycled. + + + + + + Database-wide ANALYZE does not hold locks + across tables (Tom) + + + This reduces the potential for deadlocks against other backends + that want exclusive locks on tables. To get the benefit of this + change, do not execute database-wide ANALYZE + inside a transaction block (BEGIN block); it + must be able to commit and start a new transaction for each + table. + + + + + + REINDEX does not exclusively lock the index's + parent table anymore + + + The index itself is still exclusively locked, but readers of the + table can continue if they are not using the particular index + being rebuilt. + + + + + + Erase MD5 user passwords when a user is renamed (Bruce) + + + PostgreSQL uses the user name as salt + when encrypting passwords via MD5. When a user's name is changed, + the salt will no longer match the stored MD5 password, so the + stored password becomes useless. In this release a notice is + generated and the password is cleared. A new password must then + be assigned if the user is to be able to log in with a password. + + + + + + New pg_ctl + + Windows does not have a kill command to send signals to + backends so this capability was added to pg_ctl. + + + + + + Information schema improvements + + + + + + Add + + + + + Detect locale/encoding mismatch in + initdb (Peter) + + + + + + Add + + + + + + + + Data Type and Function Changes + + + + + More complete support for composite types (row types) (Tom) + + + Composite values can be used in many places where only scalar values + worked before. + + + + + + Reject nonrectangular array values as erroneous (Joe) + + + Formerly, array_in would silently build a + surprising result. + + + + + + Overflow in integer arithmetic operations is now detected (Tom) + + + + + + The arithmetic operators associated with the single-byte + "char" data type have been removed. + + + Formerly, the parser would select these operators in many situations + where an unable to select an operator error would be more + appropriate, such as null * null. If you actually want + to do arithmetic on a "char" column, you can cast it to + integer explicitly. + + + + + + Syntax checking of array input values considerably tightened up (Joe) + + + Junk that was previously allowed in odd places with odd results + now causes an ERROR, for example, non-whitespace + after the closing right brace. + + + + + + Empty-string array element values must now be written as + "", rather than writing nothing (Joe) + + + Formerly, both ways of writing an empty-string element value were + allowed, but now a quoted empty string is required. The case where + nothing at all appears will probably be considered to be a NULL + element value in some future release. + + + + + + Array element trailing whitespace is now ignored (Joe) + + + Formerly leading whitespace was ignored, but trailing whitespace + between an element value and the delimiter or right brace was + significant. Now trailing whitespace is also ignored. + + + + + + Emit array values with explicit array bounds when lower bound is not one + (Joe) + + + + + + Accept YYYY-monthname-DD as a date string (Tom) + + + + + + Make netmask and hostmask functions + return maximum-length mask length (Tom) + + + + + + Change factorial function to return numeric (Gavin) + + + Returning numeric allows the factorial function to + work for a wider range of input values. + + + + + + to_char/to_date() date conversion + improvements (Kurt Roeckx, Fabien Coelho) + + + + + + Make length() disregard trailing spaces in + CHAR(n) (Gavin) + + + This change was made to improve consistency: trailing spaces are + semantically insignificant in CHAR(n) data, so they + should not be counted by length(). + + + + + + Warn about empty string being passed to + OID/float4/float8 data types (Neil) + + + 8.1 will throw an error instead. + + + + + + Allow leading or trailing whitespace in + int2/int4/int8/float4/float8 + input routines + (Neil) + + + + + + Better support for IEEE Infinity and NaN + values in float4/float8 (Neil) + + + These should now work on all platforms that support IEEE-compliant + floating point arithmetic. + + + + + + Add + + + + + Fix to_char for 1 BC + (previously it returned 1 AD) (Bruce) + + + + + + Fix date_part(year) for BC dates (previously it + returned one less than the correct year) (Bruce) + + + + + + Fix date_part() to return the proper millennium and + century (Fabien Coelho) + + + In previous versions, the century and millennium results had a wrong + number and started in the wrong year, as compared to standard + reckoning of such things. + + + + + + Add ceiling() as an alias for ceil(), + and power() as an alias for pow() for + standards compliance (Neil) + + + + + + Change ln(), log(), + power(), and sqrt() to emit the correct + SQLSTATE error codes for certain error conditions, as + specified by SQL:2003 (Neil) + + + + + + Add width_bucket() function as defined by SQL:2003 (Neil) + + + + + + Add generate_series() functions to simplify working + with numeric sets (Joe) + + + + + + Fix upper/lower/initcap() functions to work with + multibyte encodings (Tom) + + + + + + Add boolean and bitwise integer + + + + + New session information functions to return network addresses for client + and server (Sean Chittenden) + + + + + + Add function to determine the area of a closed path (Sean Chittenden) + + + + + + Add function to send cancel request to other backends (Magnus) + + + + + + Add interval plus datetime operators (Tom) + + + The reverse ordering, datetime plus interval, + was already supported, but both are required by the SQL standard. + + + + + + Casting an integer to BIT(N) selects the rightmost N bits + of the integer + (Tom) + + + In prior releases, the leftmost N bits were selected, but this was + deemed unhelpful, not to mention inconsistent with casting from bit + to int. + + + + + + Require CIDR values to have all nonmasked bits be zero + (Kevin Brintnall) + + + + + + + + + Server-Side Language Changes + + + + + In READ COMMITTED serialization mode, volatile functions + now see the results of concurrent transactions committed up to the + beginning of each statement within the function, rather than up to the + beginning of the interactive command that called the function. + + + + + + Functions declared STABLE or IMMUTABLE always + use the snapshot of the calling query, and therefore do not see the + effects of actions taken after the calling query starts, whether in + their own transaction or other transactions. Such a function must be + read-only, too, meaning that it cannot use any SQL commands other than + SELECT. There is a considerable performance gain from + declaring a function STABLE or IMMUTABLE + rather than VOLATILE. + + + + + + Nondeferred + + + + + Allow function parameters to be declared with names (Dennis Björklund) + + + This allows better documentation of functions. Whether the names + actually do anything depends on the specific function language + being used. + + + + + + Allow PL/pgSQL parameter names to be referenced in the function (Dennis Björklund) + + + This basically creates an automatic alias for each named parameter. + + + + + + Do minimal syntax checking of PL/pgSQL functions at creation time (Tom) + + + This allows us to catch simple syntax errors sooner. + + + + + + More support for composite types (row and record variables) in PL/pgSQL + + + For example, it now works to pass a rowtype variable to another function + as a single variable. + + + + + + Default values for PL/pgSQL variables can now reference previously + declared variables + + + + + + Improve parsing of PL/pgSQL FOR loops (Tom) + + + Parsing is now driven by presence of ".." rather than + data type of + + + + + Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan) + + + + + + In PL/Tcl, SPI commands are now run in subtransactions. If an error + occurs, the subtransaction is cleaned up and the error is reported + as an ordinary Tcl error, which can be trapped with catch. + Formerly, it was not possible to catch such errors. + + + + + + Accept ELSEIF in PL/pgSQL (Neil) + + + Previously PL/pgSQL only allowed ELSIF, but many people + are accustomed to spelling this keyword ELSEIF. + + + + + + + + + <application>psql</> Changes + + + + + Improve psql information display about database + objects (Christopher) + + + + + + Allow psql to display group membership in + \du and \dg (Markus Bertheau) + + + + + + Prevent psql \dn from showing + temporary schemas (Bruce) + + + + + + Allow psql to handle tilde user expansion for file + names (Zach Irmen) + + + + + + Allow psql to display fancy prompts, including + color, via readline (Reece Hart, Chet Ramey) + + + + + + Make psql \copy match COPY command syntax + fully (Tom) + + + + + + Show the location of syntax errors (Fabien Coelho, Tom) + + + + + + Add CLUSTER information to psql + \d display + (Bruce) + + + + + + Change psql \copy stdin/stdout to read + from command input/output (Bruce) + + + + + + Add + + + + + Add global psql configuration file, psqlrc.sample + (Bruce) + + + This allows a central file where global psql startup commands can + be stored. + + + + + + Have psql \d+ indicate if the table + has an OID column (Neil) + + + + + + On Windows, use binary mode in psql when reading files so control-Z + is not seen as end-of-file + + + + + + Have \dn+ show permissions and description for schemas (Dennis + Björklund) + + + + + + Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane) + + + + + + Allow boolean settings to be set using upper or lower case (Michael Paesold) + + + + + + + + + <application>pg_dump</> Changes + + + + + Use dependency information to improve the reliability of + pg_dump (Tom) + + + This should solve the longstanding problems with related objects + sometimes being dumped in the wrong order. + + + + + + Have pg_dump output objects in alphabetical order if possible (Tom) + + + This should make it easier to identify changes between + dump files. + + + + + + Allow pg_restore to ignore some SQL errors (Fabien Coelho) + + + This makes pg_restore's behavior similar to the + results of feeding a pg_dump output script to + psql. In most cases, ignoring errors and plowing + ahead is the most useful thing to do. Also added was a pg_restore + option to give the old behavior of exiting on an error. + + + + + + pg_restore + + + + + New begin/end markers in pg_dump text output (Bruce) + + + + + + Add start/stop times for + pg_dump/pg_dumpall in verbose mode + (Bruce) + + + + + + Allow most pg_dump options in + pg_dumpall (Christopher) + + + + + + Have pg_dump use ALTER OWNER rather + than SET SESSION AUTHORIZATION by default + (Christopher) + + + + + + + + + libpq Changes + + + + + Make libpq's + + + + + Add PQmbdsplen() which returns the display length + of a character (Tatsuo) + + + + + + Add thread locking to SSL and + Kerberos connections (Manfred Spraul) + + + + + + Allow PQoidValue(), PQcmdTuples(), and + PQoidStatus() to work on EXECUTE + commands (Neil) + + + + + + Add PQserverVersion() to provide more convenient + access to the server version number (Greg Sabino Mullane) + + + + + + Add PQprepare/PQsendPrepared() functions to support + preparing statements without necessarily specifying the data types + of their parameters (Abhijit Menon-Sen) + + + + + + Many ECPG improvements, including SET DESCRIPTOR (Michael) + + + + + + + + + Source Code Changes + + + + + Allow the database server to run natively on Windows (Claudio, Magnus, Andrew) + + + + + + Shell script commands converted to C versions for Windows support (Andrew) + + + + + + Create an extension makefile framework (Fabien Coelho, Peter) + + + This simplifies the task of building extensions outside the original + source tree. + + + + + + Support relocatable installations (Bruce) + + + Directory paths for installed files (such as the + /share directory) are now computed relative to the + actual location of the executables, so that an installation tree + can be moved to another place without reconfiguring and + rebuilding. + + + + + + Use + + + + + Add + + + + + Upgrade to DocBook V4.2 SGML (Peter) + + + + + + New PostgreSQL CVS tag (Marc) + + + This was done to make it easier for organizations to manage their + own copies of the PostgreSQL + CVS repository. File version stamps from the master + repository will not get munged by checking into or out of a copied + repository. + + + + + + Clarify locking code (Manfred Koizar) + + + + + + Buffer manager cleanup (Neil) + + + + + + Decouple platform tests from CPU spinlock code (Bruce, Tom) + + + + + + Add inlined test-and-set code on PA-RISC for gcc + (ViSolve, Tom) + + + + + + Improve i386 spinlock code (Manfred Spraul) + + + + + + Clean up spinlock assembly code to avoid warnings from newer + gcc releases (Tom) + + + + + + Remove JDBC from source tree; now a separate project + + + + + + Remove the libpgtcl client interface; now a separate project + + + + + + More accurately estimate memory and file descriptor usage (Tom) + + + + + + Improvements to the Mac OS X startup scripts (Ray A.) + + + + + + New fsync() test program (Bruce) + + + + + + Major documentation improvements (Neil, Peter) + + + + + + Remove pg_encoding; not needed + anymore + + + + + + Remove pg_id; not needed anymore + + + + + + Remove initlocation; not needed + anymore + + + + + + Auto-detect thread flags (no more manual testing) (Bruce) + + + + + + Use Olson's public domain timezone library (Magnus) + + + + + + With threading enabled, use thread flags on Unixware for + backend executables too (Bruce) + + + Unixware cannot mix threaded and nonthreaded object files in the + same executable, so everything must be compiled as threaded. + + + + + + psql now uses a flex-generated + lexical analyzer to process command strings + + + + + + Reimplement the linked list data structure used throughout the + backend (Neil) + + + This improves performance by allowing list append and length + operations to be more efficient. + + + + + + Allow dynamically loaded modules to create their own server configuration + parameters (Thomas Hallgren) + + + + + + New Brazilian version of FAQ (Euler Taveira de Oliveira) + + + + + + Add French FAQ (Guillaume Lelarge) + + + + + + New pgevent for Windows logging + + + + + + Make libpq and ECPG build as proper shared libraries on OS X (Tom) + + + + + + + + + Contrib Changes + + + + + Overhaul of contrib/dblink (Joe) + + + + + + contrib/dbmirror improvements (Steven Singer) + + + + + + New contrib/xml2 (John Gray, Torchbox) + + + + + + Updated contrib/mysql + + + + + + New version of contrib/btree_gist (Teodor) + + + + + + New contrib/trgm, trigram matching for + PostgreSQL (Teodor) + + + + + + Many contrib/tsearch2 improvements (Teodor) + + + + + + Add double metaphone to contrib/fuzzystrmatch (Andrew) + + + + + + Allow contrib/pg_autovacuum to run as a Windows service (Dave Page) + + + + + + Add functions to contrib/dbsize (Andreas Pflug) + + + + + + Removed contrib/pg_logger: obsoleted by integrated logging + subprocess + + + + + + Removed contrib/rserv: obsoleted by various separate projects + + + + + + + + diff --git a/doc/src/sgml/release-8.1.sgml b/doc/src/sgml/release-8.1.sgml new file mode 100644 index 0000000000..5785b1dd8e --- /dev/null +++ b/doc/src/sgml/release-8.1.sgml @@ -0,0 +1,4318 @@ + + + + + Release 8.1.17 + + + Release date + 2009-03-16 + + + + This release contains a variety of fixes from 8.1.16. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.17 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.15, + see the release notes for 8.1.15. + + + + + + Changes + + + + + + Prevent error recursion crashes when encoding conversion fails (Tom) + + + + 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 + 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) + + + + + + Disallow CREATE CONVERSION with the wrong encodings + for the specified conversion function (Heikki) + + + + 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. + + + + + + Fix core dump when to_char() is given format codes that + are inappropriate for the type of the data argument (Tom) + + + + + + Fix decompilation of CASE WHEN with an implicit coercion + (Tom) + + + + This mistake could lead to Assert failures in an Assert-enabled build, + or an unexpected CASE WHEN clause error message in other + cases, when trying to examine or dump a view. + + + + + + Fix possible misassignment of the owner of a TOAST table's rowtype (Tom) + + + + If CLUSTER or a rewriting variant of ALTER TABLE + were executed by someone other than the table owner, the + pg_type entry for the table's TOAST table would end up + marked as owned by that someone. This caused no immediate problems, + since the permissions on the TOAST rowtype aren't examined by any + ordinary database operation. However, it could lead to unexpected + failures if one later tried to drop the role that issued the command + (in 8.1 or 8.2), or owner of data type appears to be invalid + warnings from pg_dump after having done so (in 8.3). + + + + + + Clean up PL/pgSQL error status variables fully at block exit + (Ashesh Vashi and Dave Page) + + + + This is not a problem for PL/pgSQL itself, but the omission could cause + the PL/pgSQL Debugger to crash while examining the state of a function. + + + + + + Add MUST (Mauritius Island Summer Time) to the default list + of known timezone abbreviations (Xavier Bugaud) + + + + + + + + + + Release 8.1.16 + + + Release date + 2009-02-02 + + + + This release contains a variety of fixes from 8.1.15. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.16 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.15, + see the release notes for 8.1.15. + + + + + + Changes + + + + + + Fix crash in autovacuum (Alvaro) + + + + The crash occurs only after vacuuming a whole database for + anti-transaction-wraparound purposes, which means that it occurs + infrequently and is hard to track down. + + + + + + Improve handling of URLs in headline() function (Teodor) + + + + + + Improve handling of overlength headlines in headline() + function (Teodor) + + + + + + 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) + + + + + + Avoid unnecessary locking of small tables in VACUUM + (Heikki) + + + + + + Ensure that the contents of a holdable cursor don't depend on the + contents of TOAST tables (Tom) + + + + Previously, large field values in a cursor result might be represented + as TOAST pointers, which would fail if the referenced table got dropped + before the cursor is read, or if the large value is deleted and then + vacuumed away. This cannot happen with an ordinary cursor, + but it could with a cursor that is held past its creating transaction. + + + + + + Fix uninitialized variables in contrib/tsearch2's + get_covers() function (Teodor) + + + + + + Fix configure script to properly report failure when + unable to obtain linkage information for PL/Perl (Andrew) + + + + + + Make all documentation reference pgsql-bugs and/or + pgsql-hackers as appropriate, instead of the + now-decommissioned pgsql-ports and pgsql-patches + mailing lists (Tom) + + + + + + Update time zone data files to tzdata release 2009a (for + Kathmandu and historical DST corrections in Switzerland, Cuba) + + + + + + + + + + Release 8.1.15 + + + Release date + 2008-11-03 + + + + This release contains a variety of fixes from 8.1.14. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.15 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. Also, if you were running a previous + 8.1.X release, it is recommended to REINDEX all GiST + indexes after the upgrade. + + + + + + Changes + + + + + + Fix GiST index corruption due to marking the wrong index entry + dead after a deletion (Teodor) + + + + This would result in index searches failing to find rows they + should have found. Corrupted indexes can be fixed with + REINDEX. + + + + + + Fix backend crash when the client encoding cannot represent a localized + error message (Tom) + + + + We have addressed similar issues before, but it would still fail if + the 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. + + + + + + Fix possible crash when deeply nested functions are invoked from + a trigger (Tom) + + + + + + Fix mis-expansion of rule queries when a sub-SELECT appears + in a function call in FROM, a multi-row VALUES + list, or a RETURNING list (Tom) + + + + The usual symptom of this problem is an unrecognized node type + error. + + + + + + Ensure an error is reported when a newly-defined PL/pgSQL trigger + function is invoked as a normal function (Tom) + + + + + + Prevent possible collision of relfilenode numbers + when moving a table to another tablespace with ALTER SET + TABLESPACE (Heikki) + + + + The command tried to re-use the existing filename, instead of + picking one that is known unused in the destination directory. + + + + + + Fix incorrect tsearch2 headline generation when single query + item matches first word of text (Sushant Sinha) + + + + + + Fix improper display of fractional seconds in interval values when + using a non-ISO datestyle in an + + + + + Ensure SPI_getvalue and SPI_getbinval + behave correctly when the passed tuple and tuple descriptor have + different numbers of columns (Tom) + + + + 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. + + + + + + Fix ecpg's parsing of CREATE ROLE (Michael) + + + + + + Fix recent breakage of pg_ctl restart (Tom) + + + + + + Update time zone data files to tzdata release 2008i (for + DST law changes in Argentina, Brazil, Mauritius, Syria) + + + + + + + + + + Release 8.1.14 + + + Release date + 2008-09-22 + + + + This release contains a variety of fixes from 8.1.13. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.14 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. + + + + + + Changes + + + + + + Widen local lock counters from 32 to 64 bits (Tom) + + + + This responds to reports that the counters could overflow in + sufficiently long transactions, leading to unexpected lock is + already held errors. + + + + + + Fix possible duplicate output of tuples during a GiST index scan (Teodor) + + + + + + Add checks in executor startup to ensure that the tuples produced by an + INSERT or UPDATE will match the target table's + current rowtype (Tom) + + + + ALTER COLUMN TYPE, followed by re-use of a previously + cached plan, could produce this type of situation. The check protects + against data corruption and/or crashes that could ensue. + + + + + + Fix AT TIME ZONE to first try to interpret its timezone + argument as a timezone abbreviation, and only try it as a full timezone + name if that fails, rather than the other way around as formerly (Tom) + + + + The timestamp input functions have always resolved ambiguous zone names + in this order. Making AT TIME ZONE do so as well improves + consistency, and fixes a compatibility bug introduced in 8.1: + in ambiguous cases we now behave the same as 8.0 and before did, + since in the older versions AT TIME ZONE accepted + only abbreviations. + + + + + + Fix datetime input functions to correctly detect integer overflow when + running on a 64-bit platform (Tom) + + + + + + Improve performance of writing very long log messages to syslog (Tom) + + + + + + Fix bug in backwards scanning of a cursor on a SELECT DISTINCT + ON query (Tom) + + + + + + Fix planner bug with nested sub-select expressions (Tom) + + + + If the outer sub-select has no direct dependency on the parent query, + but the inner one does, the outer value might not get recalculated + for new parent query rows. + + + + + + Fix planner to estimate that GROUP BY expressions yielding + boolean results always result in two groups, regardless of the + expressions' contents (Tom) + + + + This is very substantially more accurate than the regular GROUP + BY estimate for certain boolean tests like col + IS NULL. + + + + + + Fix PL/PgSQL to not fail when a FOR loop's target variable + is a record containing composite-type fields (Tom) + + + + + + Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful + about the encoding of data sent to or from Tcl (Tom) + + + + + + Fix PL/Python to work with Python 2.5 + + + + This is a back-port of fixes made during the 8.2 development cycle. + + + + + + Improve pg_dump and pg_restore's + error reporting after failure to send a SQL command (Tom) + + + + + + Fix pg_ctl to properly preserve postmaster + command-line arguments across a restart (Bruce) + + + + + + Update time zone data files to tzdata release 2008f (for + DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, + Pakistan, Palestine, and Paraguay) + + + + + + + + + + Release 8.1.13 + + + Release date + 2008-06-12 + + + + This release contains one serious and one minor bug fix over 8.1.12. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.13 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. + + + + + + Changes + + + + + + Make pg_get_ruledef() parenthesize negative constants (Tom) + + + + Before this fix, a negative constant in a view or rule might be dumped + as, say, -42::integer, which is subtly incorrect: it should + be (-42)::integer due to operator precedence rules. + Usually this would make little difference, but it could interact with + another recent patch to cause + PostgreSQL to reject what had been a valid + SELECT DISTINCT view query. Since this could result in + 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. + + + + + + Make ALTER AGGREGATE ... OWNER TO update + pg_shdepend (Tom) + + + + This oversight could lead to problems if the aggregate was later + involved in a DROP OWNED or REASSIGN OWNED + operation. + + + + + + + + + + Release 8.1.12 + + + Release date + never released + + + + This release contains a variety of fixes from 8.1.11. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.12 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. + + + + + + Changes + + + + + + Fix ALTER TABLE ADD COLUMN ... PRIMARY KEY so that the new + column is correctly checked to see if it's been initialized to all + non-nulls (Brendan Jurd) + + + + Previous versions neglected to check this requirement at all. + + + + + + Fix possible CREATE TABLE failure when inheriting the + same constraint from multiple parent relations that + inherited that constraint from a common ancestor (Tom) + + + + + + Fix conversions between ISO-8859-5 and other encodings to handle + Cyrillic Yo characters (e and E with + two dots) (Sergey Burladyan) + + + + + + Fix a few datatype input functions + that were allowing unused bytes in their results to contain + uninitialized, unpredictable values (Tom) + + + + This could lead to failures in which two apparently identical literal + values were not seen as equal, resulting in the parser complaining + about unmatched ORDER BY and DISTINCT + expressions. + + + + + + Fix a corner case in regular-expression substring matching + (substring(string from + pattern)) (Tom) + + + + 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 + substring('foo' from 'foo(bar)?'). + This should return NULL, since (bar) isn't matched, but + it was mistakenly returning the whole-pattern match instead (ie, + foo). + + + + + + Update time zone data files to tzdata release 2008c (for + DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, + Argentina/San_Luis, and Chile) + + + + + + Fix incorrect result from ecpg's + PGTYPEStimestamp_sub() function (Michael) + + + + + + Fix core dump in contrib/xml2's + xpath_table() function when the input query returns a + NULL value (Tom) + + + + + + Fix contrib/xml2's makefile to not override + CFLAGS (Tom) + + + + + + Fix DatumGetBool macro to not fail with gcc + 4.3 (Tom) + + + + This problem affects 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. + + + + + + Fix longstanding LISTEN/NOTIFY + race condition (Tom) + + + + In rare cases a session that had just executed a + LISTEN might not get a notification, even though + one would be expected because the concurrent transaction executing + NOTIFY was observed to commit later. + + + + A side effect of the fix is that a transaction that has executed + a not-yet-committed LISTEN command will not see any + row in pg_listener for the 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. + + + + + + Disallow LISTEN and UNLISTEN within a + prepared transaction (Tom) + + + + This was formerly allowed but trying to do it had various unpleasant + consequences, notably that the originating backend could not exit + as long as an UNLISTEN remained uncommitted. + + + + + + Fix rare crash when an error occurs during a query using a hash index + (Heikki) + + + + + + Fix input of datetime values for February 29 in years BC (Tom) + + + + The former coding was mistaken about which years were leap years. + + + + + + Fix unrecognized node type error in some variants of + ALTER OWNER (Tom) + + + + + + Fix pg_ctl to correctly extract the postmaster's port + number from command-line options (Itagaki Takahiro, Tom) + + + + Previously, pg_ctl start -w could try to contact the + postmaster on the wrong port, leading to bogus reports of startup + failure. + + + + + + Use + + + This is known to be necessary when building PostgreSQL + with gcc 4.3 or later. + + + + + + Fix display of constant expressions in ORDER BY + and GROUP BY (Tom) + + + + An explictly casted constant would be shown incorrectly. This could + for example lead to corruption of a view definition during + dump and reload. + + + + + + Fix libpq to handle NOTICE messages correctly + during COPY OUT (Tom) + + + + 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. + + + + + + + + + + Release 8.1.11 + + + Release date + 2008-01-07 + + + + This release contains a variety of fixes from 8.1.10, + including fixes for significant security issues. + For information about new features in the 8.1 major release, see + . + + + + This is the last 8.1.X release for which the PostgreSQL + community will produce binary packages for Windows. + Windows users are encouraged to move to 8.2.X or later, + since there are Windows-specific fixes in 8.2.X that + are impractical to back-port. 8.1.X will continue to + be supported on other platforms. + + + + Migration to Version 8.1.11 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. + + + + + + Changes + + + + + + Prevent functions in indexes from executing with the privileges of + the user running VACUUM, ANALYZE, etc (Tom) + + + + 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 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 VACUUM, ANALYZE, REINDEX, + and CLUSTER) to execute as the table owner rather than + the calling user, using the same privilege-switching mechanism already + used for SECURITY DEFINER functions. To prevent bypassing + this security measure, execution of SET SESSION + AUTHORIZATION and SET ROLE is now forbidden within a + SECURITY DEFINER context. (CVE-2007-6600) + + + + + + Repair assorted bugs in the regular-expression package (Tom, Will Drewry) + + + + 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) + + + + + + Require non-superusers who use /contrib/dblink to use only + password authentication, as a security measure (Joe) + + + + The fix that appeared for this in 8.1.10 was incomplete, as it plugged + the hole for only some dblink functions. (CVE-2007-6601, + CVE-2007-3278) + + + + + + Update time zone data files to tzdata release 2007k + (in particular, recent Argentina changes) (Tom) + + + + + + Improve planner's handling of LIKE/regex estimation in non-C locales + (Tom) + + + + + + Fix planner failure in some cases of WHERE false AND var IN + (SELECT ...) (Tom) + + + + + + Preserve the tablespace of indexes that are + rebuilt by ALTER TABLE ... ALTER COLUMN TYPE (Tom) + + + + + + Make archive recovery always start a new WAL timeline, rather than only + when a recovery stop time was used (Simon) + + + + This avoids a corner-case risk of trying to overwrite an existing + archived copy of the last WAL segment, and seems simpler and cleaner + than the original definition. + + + + + + Make VACUUM not use all of maintenance_work_mem + when the table is too small for it to be useful (Alvaro) + + + + + + Fix potential crash in translate() when using a multibyte + database encoding (Tom) + + + + + + Fix overflow in extract(epoch from interval) for intervals + exceeding 68 years (Tom) + + + + + + Fix PL/Perl to not fail when a UTF-8 regular expression is used + in a trusted function (Andrew) + + + + + + Fix PL/Perl to cope when platform's Perl defines type bool + as int rather than char (Tom) + + + + While this could theoretically happen anywhere, no standard build of + Perl did things this way ... until Mac OS X 10.5. + + + + + + Fix PL/Python to not crash on long exception messages (Alvaro) + + + + + + Fix pg_dump to correctly handle inheritance child tables + that have default expressions different from their parent's (Tom) + + + + + + Fix libpq crash when PGPASSFILE refers + to a file that is not a plain file (Martin Pitt) + + + + + + ecpg parser fixes (Michael) + + + + + + Make contrib/pgcrypto defend against + OpenSSL libraries that fail on keys longer than 128 + bits; which is the case at least on some Solaris versions (Marko Kreen) + + + + + + Make contrib/tablefunc's crosstab() handle + NULL rowid as a category in its own right, rather than crashing (Joe) + + + + + + Fix tsvector and tsquery output routines to + escape backslashes correctly (Teodor, Bruce) + + + + + + Fix crash of to_tsvector() on huge input strings (Teodor) + + + + + + Require a specific version of Autoconf to be used + when re-generating the configure script (Peter) + + + + This affects developers and packagers only. The change was made + to prevent accidental use of untested combinations of + Autoconf and PostgreSQL versions. + You can remove the version check if you really want to use a + different Autoconf version, but it's + your responsibility whether the result works or not. + + + + + + + + + + Release 8.1.10 + + + Release date + 2007-09-17 + + + + This release contains a variety of fixes from 8.1.9. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.10 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. + + + + + + Changes + + + + + + Prevent index corruption when a transaction inserts rows and + then aborts close to the end of a concurrent VACUUM + on the same table (Tom) + + + + + + Make CREATE DOMAIN ... DEFAULT NULL work properly (Tom) + + + + + + Allow the interval data type to accept input consisting only of + milliseconds or microseconds (Neil) + + + + + + Speed up rtree index insertion (Teodor) + + + + + + Fix excessive logging of SSL error messages (Tom) + + + + + + Fix logging so that log messages are never interleaved when using + the syslogger process (Andrew) + + + + + + Fix crash when log_min_error_statement logging runs out + of memory (Tom) + + + + + + Fix incorrect handling of some foreign-key corner cases (Tom) + + + + + + Prevent REINDEX and CLUSTER from failing + due to attempting to process temporary tables of other sessions (Alvaro) + + + + + + Update the time zone database rules, particularly New Zealand's upcoming changes (Tom) + + + + + + Windows socket improvements (Magnus) + + + + + + Suppress timezone name (%Z) in log timestamps on Windows + because of possible encoding mismatches (Tom) + + + + + + Require non-superusers who use /contrib/dblink to use only + password authentication, as a security measure (Joe) + + + + + + + + + + Release 8.1.9 + + + Release date + 2007-04-23 + + + + This release contains a variety of fixes from 8.1.8, + including a security fix. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.9 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. + + + + + + Changes + + + + + + Support explicit placement of the temporary-table schema within + search_path, and disable searching it for functions + and operators (Tom) + + + This is needed to allow a security-definer function to set a + truly secure value of 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 CREATE FUNCTION for more information. + + + + + + /contrib/tsearch2 crash fixes (Teodor) + + + + + + Require COMMIT PREPARED to be executed in the same + database as the transaction was prepared in (Heikki) + + + + + + Fix potential-data-corruption bug in how VACUUM FULL handles + UPDATE chains (Tom, Pavan Deolasee) + + + + + + Planner fixes, including improving outer join and bitmap scan + selection logic (Tom) + + + + + + Fix PANIC during enlargement of a hash index (bug introduced in 8.1.6) + (Tom) + + + + + + Fix POSIX-style timezone specs to follow new USA DST rules (Tom) + + + + + + + + + + Release 8.1.8 + + + Release date + 2007-02-07 + + + + This release contains one fix from 8.1.7. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.8 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. + + + + + + Changes + + + + + + Remove overly-restrictive check for type length in constraints and + functional indexes(Tom) + + + + + + + + + + Release 8.1.7 + + + Release date + 2007-02-05 + + + + This release contains a variety of fixes from 8.1.6, including + a security fix. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.7 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. + + + + + + Changes + + + + + + Remove security vulnerabilities that allowed connected users + to read backend memory (Tom) + + + The vulnerabilities involve suppressing the normal check that a SQL + function returns the data type it's declared to, and changing the + data type of a table column (CVE-2007-0555, CVE-2007-0556). These + errors can easily be exploited to cause a backend crash, and in + principle might be used to read database content that the user + should not be able to access. + + + + + + Fix rare bug wherein btree index page splits could fail + due to choosing an infeasible split point (Heikki Linnakangas) + + + + + + Improve VACUUM performance for databases with many tables (Tom) + + + + + + Fix autovacuum to avoid leaving non-permanent transaction IDs in + non-connectable databases (Alvaro) + + + + This bug affects the 8.1 branch only. + + + + + + Fix for rare Assert() crash triggered by UNION (Tom) + + + + + + Tighten security of multi-byte character processing for UTF8 sequences + over three bytes long (Tom) + + + + + + Fix bogus permission denied failures occurring on Windows + due to attempts to fsync already-deleted files (Magnus, Tom) + + + + + + Fix possible crashes when an already-in-use PL/pgSQL function is + updated (Tom) + + + + + + + + + + Release 8.1.6 + + + Release date + 2007-01-08 + + + + This release contains a variety of fixes from 8.1.5. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.6 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. + + + + + + Changes + + + + + + Improve handling of getaddrinfo() on AIX (Tom) + + + + This fixes a problem with starting the statistics collector, + among other things. + + + + + + Fix pg_restore to handle a tar-format backup + that contains large objects (blobs) with comments (Tom) + + + + + + Fix failed to re-find parent key errors in + VACUUM (Tom) + + + + + + Clean out pg_internal.init cache files during server + restart (Simon) + + + + This avoids a hazard that the cache files might contain stale + data after PITR recovery. + + + + + + Fix race condition for truncation of a large relation across a + gigabyte boundary by VACUUM (Tom) + + + + + + Fix bug causing needless deadlock errors on row-level locks (Tom) + + + + + + Fix bugs affecting multi-gigabyte hash indexes (Tom) + + + + + + Fix possible deadlock in Windows signal handling (Teodor) + + + + + + Fix error when constructing an ARRAY[] made up of multiple + empty elements (Tom) + + + + + + Fix ecpg memory leak during connection (Michael) + + + + + + Fix for Darwin (OS X) compilation (Tom) + + + + + + to_number() and to_char(numeric) + are now STABLE, not IMMUTABLE, for + new initdb installs (Tom) + + + + This is because lc_numeric can potentially + change the output of these functions. + + + + + + Improve index usage of regular expressions that use parentheses (Tom) + + + + This improves psql \d performance also. + + + + + + Update timezone database + + + + This affects Australian and Canadian daylight-savings rules in + particular. + + + + + + + + + + Release 8.1.5 + + + Release date + 2006-10-16 + + + + This release contains a variety of fixes from 8.1.4. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.5 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. + + + + + + Changes + + +Disallow aggregate functions in UPDATE +commands, except within sub-SELECTs (Tom) +The behavior of such an aggregate was unpredictable, and in 8.1.X +could cause a crash, so it has been disabled. The SQL standard does not allow +this either. +Fix core dump when an untyped literal is taken as +ANYARRAY +Fix core dump in duration logging for extended query protocol +when a COMMIT or ROLLBACK is +executed +Fix mishandling of AFTER triggers when query contains a SQL +function returning multiple rows (Tom) +Fix ALTER TABLE ... TYPE to recheck +NOT NULL for USING clause (Tom) +Fix string_to_array() to handle overlapping + matches for the separator string +For example, string_to_array('123xx456xxx789', 'xx'). + +Fix to_timestamp() for +AM/PM formats (Bruce) +Fix autovacuum's calculation that decides whether + ANALYZE is needed (Alvaro) +Fix corner cases in pattern matching for + psql's \d commands +Fix index-corrupting bugs in /contrib/ltree + (Teodor) +Numerous robustness fixes in ecpg (Joachim +Wieland) +Fix backslash escaping in /contrib/dbmirror +Minor fixes in /contrib/dblink and /contrib/tsearch2 + +Efficiency improvements in hash tables and bitmap index scans +(Tom) +Fix instability of statistics collection on Windows (Tom, Andrew) +Fix statement_timeout to use the proper +units on Win32 (Bruce) +In previous Win32 8.1.X versions, the delay was off by a factor of +100. +Fixes for MSVC and Borland C++ +compilers (Hiroshi Saito) +Fixes for AIX and +Intel compilers (Tom) +Fix rare bug in continuous archiving (Tom) + + + + + + + Release 8.1.4 + + + Release date + 2006-05-23 + + + + This release contains a variety of fixes from 8.1.3, + including patches for extremely serious security issues. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.4 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. + + + + 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 libpq's + PQescapeStringConn()) to perform string escaping, + rather than relying on ad hoc code to do it. + + + + + Changes + + +Change the server to reject invalidly-encoded multibyte +characters in all cases (Tatsuo, Tom) +While 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. + + +Reject unsafe uses of \' in string literals +As a server-side defense against SQL-injection attacks of the type +described in CVE-2006-2314, the server now only accepts '' and not +\' as a representation of ASCII single quote in SQL string +literals. By default, \' is rejected only when +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 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 +backslash_quote is in part to make it obvious that insecure +clients are insecure. + + +Modify libpq's string-escaping routines to be +aware of encoding considerations and +standard_conforming_strings +This fixes 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 PostgreSQL connections +concurrently should migrate to PQescapeStringConn() and +PQescapeByteaConn() to ensure that escaping is done correctly +for the settings in use in each database connection. Applications that +do string escaping by hand should be modified to rely on library +routines instead. + + +Fix weak key selection in pgcrypto (Marko Kreen) +Errors in fortuna PRNG reseeding logic could cause a predictable +session key to be selected by pgp_sym_encrypt() in some cases. +This only affects non-OpenSSL-using builds. + + +Fix some incorrect encoding conversion functions +win1251_to_iso, win866_to_iso, +euc_tw_to_big5, euc_tw_to_mic, +mic_to_euc_tw were all broken to varying +extents. + + +Clean up stray remaining uses of \' in strings +(Bruce, Jan) + +Make autovacuum visible in pg_stat_activity +(Alvaro) + +Disable full_page_writes (Tom) +In certain cases, having full_page_writes off would cause +crash recovery to fail. A proper fix will appear in 8.2; for now it's just +disabled. + + +Various planner fixes, particularly for bitmap index scans and +MIN/MAX optimization (Tom) + +Fix incorrect optimization in merge join (Tom) +Outer joins could sometimes emit multiple copies of unmatched rows. + + +Fix crash from using and modifying a plpgsql function in the +same transaction + +Fix WAL replay for case where a B-Tree index has been +truncated + +Fix SIMILAR TO for patterns involving +| (Tom) + +Fix SELECT INTO and CREATE TABLE AS to +create tables in the default tablespace, not the base directory (Kris +Jurka) + +Fix server to use custom DH SSL parameters correctly (Michael +Fuhr) + +Improve qsort performance (Dann Corbit) +Currently this code is only used on Solaris. + + +Fix for OS/X Bonjour on x86 systems (Ashley Clark) + +Fix various minor memory leaks + +Fix problem with password prompting on some Win32 systems +(Robert Kinberg) + +Improve pg_dump's handling of default values +for domains + +Fix pg_dumpall to handle identically-named +users and groups reasonably (only possible when dumping from a pre-8.1 server) +(Tom) +The user and group will be merged into a single role with +LOGIN permission. Formerly the merged role wouldn't have +LOGIN permission, making it unusable as a user. + + +Fix pg_restore -n to work as +documented (Tom) + + + + + + + Release 8.1.3 + + + Release date + 2006-02-14 + + + + This release contains a variety of fixes from 8.1.2, + including one very serious security issue. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.3 + + + A dump/restore is not required for those running 8.1.X. + However, if you are upgrading from a version earlier than 8.1.2, + see the release notes for 8.1.2. + + + + + Changes + + + +Fix bug that allowed any logged-in user to SET +ROLE to any other database user id (CVE-2006-0553) +Due to inadequate validity checking, a user could exploit the special +case that SET ROLE normally uses to restore the previous role +setting after an error. This allowed ordinary users to acquire superuser +status, for example. +The escalation-of-privilege risk exists only in 8.1.0-8.1.2. +However, in all releases back to 7.3 there is a related bug in SET +SESSION AUTHORIZATION that allows unprivileged users to crash the server, +if it has been compiled with Asserts enabled (which is not the default). +Thanks to Akio Ishida for reporting this problem. + + +Fix bug with row visibility logic in self-inserted +rows (Tom) +Under rare circumstances a row inserted by the current command +could be seen as already valid, when it should not be. Repairs bug +created in 8.0.4, 7.4.9, and 7.3.11 releases. + + +Fix race condition that could lead to file already +exists errors during pg_clog and pg_subtrans file creation +(Tom) + +Fix cases that could lead to crashes if a cache-invalidation +message arrives at just the wrong time (Tom) + +Properly check DOMAIN constraints for +UNKNOWN parameters in prepared statements +(Neil) + +Ensure ALTER COLUMN TYPE will process +FOREIGN KEY, UNIQUE, and PRIMARY KEY +constraints in the proper order (Nakano Yoshihisa) + +Fixes to allow restoring dumps that have cross-schema +references to custom operators or operator classes (Tom) + +Allow pg_restore to continue properly after a +COPY failure; formerly it tried to treat the remaining +COPY data as SQL commands (Stephen Frost) + +Fix pg_ctl unregister crash +when the data directory is not specified (Magnus) + +Fix libpq PQprint HTML tags +(Christoph Zwerschke) + +Fix ecpg crash on AMD64 and PPC +(Neil) + +Allow SETOF and %TYPE to be used +together in function result type declarations + +Recover properly if error occurs during argument passing +in PL/python (Neil) + +Fix memory leak in plperl_return_next +(Neil) + +Fix PL/perl's handling of locales on +Win32 to match the backend (Andrew) + +Various optimizer fixes (Tom) + +Fix crash when log_min_messages is set to +DEBUG3 or above in postgresql.conf on Win32 +(Bruce) + +Fix pgxs -L library path +specification for Win32, Cygwin, OS X, AIX (Bruce) + +Check that SID is enabled while checking for Win32 admin +privileges (Magnus) + +Properly reject out-of-range date inputs (Kris +Jurka) + +Portability fix for testing presence of finite +and isinf during configure (Tom) + +Improve speed of COPY IN via libpq, by +avoiding a kernel call per data line (Alon Goldshuv) + +Improve speed of /contrib/tsearch2 index +creation (Tom) + + + + + + + + Release 8.1.2 + + + Release date + 2006-01-09 + + + + This release contains a variety of fixes from 8.1.1. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.2 + + + A dump/restore is not required for those running 8.1.X. + However, you might need to REINDEX indexes on textual + columns after updating, if you are affected by the locale or + plperl issues described below. + + + + + Changes + + + +Fix Windows code so that postmaster will continue rather +than exit if there is no more room in ShmemBackendArray (Magnus) +The previous behavior could lead to a denial-of-service situation if too +many connection requests arrive close together. This applies +only to the Windows port. + +Fix bug introduced in 8.0 that could allow ReadBuffer +to return an already-used page as new, potentially causing loss of +recently-committed data (Tom) + +Fix for protocol-level Describe messages issued +outside a transaction or in a failed transaction (Tom) + +Fix character string comparison for locales that consider +different character combinations as equal, such as Hungarian (Tom) +This might require REINDEX to fix existing indexes on +textual columns. + +Set locale environment variables during postmaster startup +to ensure that plperl won't change the locale later +This fixes a problem that occurred if the postmaster was +started with environment variables specifying a different locale than what +initdb had been told. Under these conditions, any use of +plperl was likely to lead to corrupt indexes. You might need +REINDEX to fix existing indexes on +textual columns if this has happened to you. + +Allow more flexible relocation of installation +directories (Tom) +Previous releases supported relocation only if all installation +directory paths were the same except for the last component. + +Prevent crashes caused by the use of +ISO-8859-5 and ISO-8859-9 encodings +(Tatsuo) + +Fix longstanding bug in strpos() and regular expression +handling in certain rarely used Asian multi-byte character sets (Tatsuo) + + +Fix bug where COPY CSV mode considered any +\. to terminate the copy data The new code +requires \. to appear alone on a line, as per +documentation. + +Make COPY CSV mode quote a literal data value of +\. to ensure it cannot be interpreted as the +end-of-data marker (Bruce) + +Various fixes for functions returning RECORDs +(Tom) + +Fix processing of postgresql.conf so a +final line with no newline is processed properly (Tom) + + +Fix bug in /contrib/pgcrypto gen_salt, +which caused it not to use all available salt space for MD5 and +XDES algorithms (Marko Kreen, Solar Designer) +Salts for Blowfish and standard DES are unaffected. + +Fix autovacuum crash when processing expression indexes + + +Fix /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) + + + + + + + + Release 8.1.1 + + + Release date + 2005-12-12 + + + + This release contains a variety of fixes from 8.1.0. + For information about new features in the 8.1 major release, see + . + + + + Migration to Version 8.1.1 + + + A dump/restore is not required for those running 8.1.X. + + + + + Changes + + +Fix incorrect optimizations of outer-join conditions +(Tom) + +Fix problems with wrong reported column names in cases +involving sub-selects flattened by the optimizer (Tom) + +Fix update failures in scenarios involving CHECK constraints, +toasted columns, and indexes (Tom) + +Fix bgwriter problems after recovering from errors +(Tom) + +The background writer was found to leak buffer pins after write errors. +While not fatal in itself, this might lead to mysterious blockages of +later VACUUM commands. + + + +Prevent failure if client sends Bind protocol message +when current transaction is already aborted + +/contrib/tsearch2 and /contrib/ltree +fixes (Teodor) + +Fix problems with translated error messages in +languages that require word reordering, such as Turkish; also problems with +unexpected truncation of output strings and wrong display of the smallest +possible bigint value (Andrew, Tom) + +These problems only appeared on platforms that were using our +port/snprintf.c code, which includes BSD variants if +--enable-nls was given, and perhaps others. In addition, +a different form of the translated-error-message problem could appear +on Windows depending on which version of libintl was used. + + +Re-allow AM/PM, HH, +HH12, and D format specifiers for +to_char(time) and to_char(interval). +(to_char(interval) should probably use +HH24.) (Bruce) + +AIX, HPUX, and MSVC compile fixes (Tom, Hiroshi +Saito) + +Optimizer improvements (Tom) + +Retry file reads and writes after Windows +NO_SYSTEM_RESOURCES error (Qingqing Zhou) + +Prevent autovacuum from crashing during +ANALYZE of expression index (Alvaro) + +Fix problems with ON COMMIT DELETE ROWS temp +tables + +Fix problems when a trigger alters the output of a SELECT +DISTINCT query + +Add 8.1.0 release note item on how to migrate invalid +UTF-8 byte sequences (Paul Lindner) + + + + + + + Release 8.1 + + + Release date + 2005-11-08 + + + + Overview + + + Major changes in this release: + + + + + + + Improve concurrent access to the shared buffer cache (Tom) + + + + + Access to the shared buffer cache was identified as a + significant scalability problem, particularly on multi-CPU + systems. In this release, the way that locking is done in the + buffer manager has been overhauled to reduce lock contention + and improve scalability. The buffer manager has also been + changed to use a clock sweep replacement + policy. + + + + + + + Allow index scans to use an intermediate in-memory bitmap (Tom) + + + + + In previous releases, only a single index could be used to do + lookups on a table. With this feature, if a query has + WHERE tab.col1 = 4 and tab.col2 = 9, and there is + no multicolumn index on col1 and col2, + but there is an index on col1 and another on + col2, it is possible to search both indexes and + combine the results in memory, then do heap fetches for only + the rows matching both the col1 and + col2 restrictions. This is very useful in + environments that have a lot of unstructured queries where it + is impossible to create indexes that match all possible access + conditions. Bitmap scans are useful even with a single index, + as they reduce the amount of random access needed; a bitmap + index scan is efficient for retrieving fairly large fractions + of the complete table, whereas plain index scans are not. + + + + + + + Add two-phase commit (Heikki Linnakangas, Alvaro, Tom) + + + + + Two-phase commit allows transactions to be "prepared" on several + computers, and once all computers have successfully prepared + their transactions (none failed), all transactions can be + committed. Even if a machine crashes after a prepare, the + prepared transaction can be committed after the machine is + restarted. New syntax includes PREPARE TRANSACTION and + COMMIT/ROLLBACK PREPARED. A new system view + pg_prepared_xacts has also been added. + + + + + + + Create a new role system that replaces users and groups + (Stephen Frost) + + + + + Roles are a combination of users and groups. Like users, they + can have login capability, and like groups, a role can have + other roles as members. Roles basically remove the distinction + between users and groups. For example, a role can: + + + + + + + Have login capability (optionally) + + + + + + Own objects + + + + + + Hold access permissions for database objects + + + + + + Inherit permissions from other roles it is a member of + + + + + + Once a user logs into a role, she obtains capabilities of + the login role plus any inherited roles, and can use + SET ROLE to switch to other roles she is a member of. + This feature is a generalization of the SQL standard's concept of + roles. + This change also replaces pg_shadow and + pg_group by new role-capable catalogs + pg_authid and pg_auth_members. The old + tables are redefined as read-only views on the new role tables. + + + + + + + Automatically use indexes for MIN() and + MAX() (Tom) + + + + + In previous releases, the only way to use an index for + MIN() or MAX() was to rewrite the + query as SELECT col FROM tab ORDER BY col LIMIT 1. + Index usage now happens automatically. + + + + + + + Move /contrib/pg_autovacuum into the main server + (Alvaro) + + + + + Integrating autovacuum into the server allows it to be + automatically started and stopped in sync with the database + server, and allows autovacuum to be configured from + postgresql.conf. + + + + + + + Add shared row level locks using SELECT ... FOR SHARE + (Alvaro) + + + + + While PostgreSQL's MVCC locking + allows SELECT to never be blocked by writers and + therefore does not need shared row locks for typical operations, + shared locks are useful for applications that require shared row + locking. In particular this reduces the locking requirements + imposed by referential integrity checks. + + + + + + + Add dependencies on shared objects, specifically roles + (Alvaro) + + + + + This extension of the dependency mechanism prevents roles from + being dropped while there are still database objects they own. + Formerly it was possible to accidentally orphan objects by + deleting their owner. While this could be recovered from, it + was messy and unpleasant. + + + + + + + Improve performance for partitioned tables (Simon) + + + + + The new constraint_exclusion configuration + parameter avoids lookups on child tables where constraints indicate + that no matching rows exist in the child table. + + + This allows for a basic type of table partitioning. If child tables + store separate key ranges and this is enforced using appropriate + CHECK constraints, the optimizer will skip child + table accesses when the constraint guarantees no matching rows + exist in the child table. + + + + + + + + + Migration to Version 8.1 + + + A dump/restore using pg_dump is required + for those wishing to migrate data from any previous release. + + + + The 8.0 release announced that the to_char() function + for intervals would be removed in 8.1. However, since no better API + has been suggested, to_char(interval) has been enhanced in + 8.1 and will remain in the server. + + + + Observe the following incompatibilities: + + + + + + + add_missing_from is now false by default (Neil) + + + By default, we now generate an error if a table is used in a query + without a FROM reference. The old behavior is still + available, but the parameter must be set to 'true' to obtain it. + + + + It might be necessary to set add_missing_from to true + in order to load an existing dump file, if the dump contains any + views or rules created using the implicit-FROM syntax. + This should be a one-time annoyance, because + PostgreSQL 8.1 will convert + such views and rules to standard explicit-FROM syntax. + Subsequent dumps will therefore not have the problem. + + + + + + Cause input of a zero-length string ('') for + float4/float8/oid + to throw an error, rather than treating it as a zero (Neil) + + + This change is consistent with the current handling of + zero-length strings for integers. The schedule for this change + was announced in 8.0. + + + + + + default_with_oids is now false by default (Neil) + + + With this option set to false, user-created tables no longer + have an OID column unless WITH OIDS is specified in + CREATE TABLE. Though OIDs have existed in all + releases of PostgreSQL, their use is limited + because they are only four bytes long and the counter is shared + across all installed databases. The preferred way of uniquely + identifying rows is via sequences and the SERIAL type, + which have been supported since PostgreSQL 6.4. + + + + + + Add E'' syntax so eventually ordinary strings can + treat backslashes literally (Bruce) + + + Currently PostgreSQL processes a + backslash in a string literal as introducing a special escape sequence, + e.g. \n or \010. + While this allows easy entry of special values, it is + nonstandard and makes porting of applications from other + databases more difficult. For this reason, the + PostgreSQL project is planning to + remove the special meaning of backslashes in strings. For + backward compatibility and for users who want special backslash + processing, a new string syntax has been created. This new string + syntax is formed by writing an E immediately preceding the + single quote that starts the string, e.g. E'hi\n'. While + this release does not change the handling of backslashes in strings, it + does add new configuration parameters to help users migrate applications + for future releases: + + + + + + standard_conforming_strings — does this release + treat backslashes literally in ordinary strings? + + + + + + escape_string_warning — warn about backslashes in + ordinary (non-E) strings + + + + + + + The standard_conforming_strings value is read-only. + Applications can retrieve the value to know how backslashes are + processed. (Presence of the parameter can also be taken as an + indication that E'' string syntax is supported.) + In a future release, standard_conforming_strings + will be true, meaning backslashes will be treated literally in + non-E strings. To prepare for this change, use E'' + strings in places that need special backslash processing, and + turn on escape_string_warning to find additional + strings that need to be converted to use E''. + Also, use two single-quotes ('') to embed a literal + single-quote in a string, rather than the + PostgreSQL-supported syntax of + backslash single-quote (\'). The former is + standards-conforming and does not require the use of the + E'' string syntax. You can also use the + $$ string syntax, which does not treat backslashes + specially. + + + + + + Make REINDEX DATABASE reindex all indexes in the + database (Tom) + + + Formerly, REINDEX DATABASE reindexed only + system tables. This new behavior seems more intuitive. A new + command REINDEX SYSTEM provides the old functionality + of reindexing just the system tables. + + + + + + Read-only large object descriptors now obey MVCC snapshot semantics + + + When a large object is opened with INV_READ (and not + INV_WRITE), the data read from the descriptor will now + reflect a snapshot of the large object's state at the + time of the transaction snapshot in use by the query that called + lo_open(). To obtain the old behavior of always + returning the latest committed data, include INV_WRITE + in the mode flags for lo_open(). + + + + + + Add proper dependencies for arguments of sequence functions (Tom) + + + In previous releases, sequence names passed to nextval(), + currval(), and setval() were stored as + simple text strings, meaning that renaming or dropping a + sequence used in a DEFAULT clause made the clause + invalid. This release stores all newly-created sequence function + arguments as internal OIDs, allowing them to track sequence + renaming, and adding dependency information that prevents + improper sequence removal. It also makes such DEFAULT + clauses immune to schema renaming and search path changes. + + + Some applications might rely on the old behavior of + run-time lookup for sequence names. This can still be done by + explicitly casting the argument to text, for example + nextval('myseq'::text). + + + Pre-8.1 database dumps loaded into 8.1 will use the old text-based + representation and therefore will not have the features of + OID-stored arguments. However, it is possible to update a + database containing text-based DEFAULT clauses. + First, save this query into a file, such as fixseq.sql: + +SELECT 'ALTER TABLE ' || + pg_catalog.quote_ident(n.nspname) || '.' || + pg_catalog.quote_ident(c.relname) || + ' ALTER COLUMN ' || pg_catalog.quote_ident(a.attname) || + ' SET DEFAULT ' || + regexp_replace(d.adsrc, + $$val\(\(('[^']*')::text\)::regclass$$, + $$val(\1$$, + 'g') || + ';' +FROM pg_namespace n, pg_class c, pg_attribute a, pg_attrdef d +WHERE n.oid = c.relnamespace AND + c.oid = a.attrelid AND + a.attrelid = d.adrelid AND + a.attnum = d.adnum AND + d.adsrc ~ $$val\(\('[^']*'::text\)::regclass$$; + + Next, run the query against a database to find what + adjustments are required, like this for database db1: + +psql -t -f fixseq.sql db1 + + This will show the ALTER TABLE commands needed to + convert the database to the newer OID-based representation. + If the commands look reasonable, run this to update the database: + +psql -t -f fixseq.sql db1 | psql -e db1 + + This process must be repeated in each database to be updated. + + + + + + In psql, treat unquoted + \{digit}+ sequences as octal (Bruce) + + + In previous releases, \{digit}+ sequences were + treated as decimal, and only \0{digit}+ were treated + as octal. This change was made for consistency. + + + + + + Remove grammar productions for prefix and postfix % + and ^ operators + (Tom) + + + These have never been documented and complicated the use of the + modulus operator (%) with negative numbers. + + + + + + Make &< and &> for polygons + consistent with the box "over" operators (Tom) + + + + + + CREATE LANGUAGE can ignore the provided arguments + in favor of information from pg_pltemplate + (Tom) + + + A new system catalog pg_pltemplate has been defined + to carry information about the preferred definitions of procedural + languages (such as whether they have validator functions). When + an entry exists in this catalog for the language being created, + CREATE LANGUAGE will ignore all its parameters except the + language name and instead use the catalog information. This measure + was taken because of increasing problems with obsolete language + definitions being loaded by old dump files. As of 8.1, + pg_dump will dump procedural language definitions as + just CREATE LANGUAGE name, relying + on a template entry to exist at load time. We expect this will be a + more future-proof representation. + + + + + + Make pg_cancel_backend(int) return a + boolean rather than an integer (Neil) + + + + + + Some users are having problems loading UTF-8 data into 8.1.X. + This is because previous versions allowed invalid UTF-8 byte + sequences to be entered into the database, and this release + properly accepts only valid UTF-8 sequences. One way to correct a + dumpfile is to run the command iconv -c -f UTF-8 -t + UTF-8 -o cleanfile.sql dumpfile.sql. The -c option + removes invalid character sequences. A diff of the two files will + show the sequences that are invalid. iconv reads the + entire input file into memory so it might be necessary to use + split to break up the dump into multiple smaller + files for processing. + + + + + + + + Additional Changes + + + Below you will find a detailed account of the additional changes + between PostgreSQL 8.1 and the + previous major release. + + + + Performance Improvements + + + + + Improve GiST and R-tree index performance (Neil) + + + + + + Improve the optimizer, including auto-resizing of hash joins + (Tom) + + + + + + Overhaul internal API in several areas + + + + + + Change WAL record CRCs from 64-bit to 32-bit (Tom) + + + We determined that the extra cost of computing 64-bit CRCs was + significant, and the gain in reliability too marginal to justify it. + + + + + + Prevent writing large empty gaps in WAL pages (Tom) + + + + + + Improve spinlock behavior on SMP machines, particularly Opterons (Tom) + + + + + + Allow nonconsecutive index columns to be used in a multicolumn + index (Tom) + + + For example, this allows an index on columns a,b,c to be used in + a query with WHERE a = 4 and c = 10. + + + + + + Skip WAL logging for CREATE TABLE AS / + SELECT INTO (Simon) + + + Since a crash during CREATE TABLE AS would cause the + table to be dropped during recovery, there is no reason to WAL + log as the table is loaded. (Logging still happens if WAL + archiving is enabled, however.) + + + + + + Allow concurrent GiST index access (Teodor, Oleg) + + + + + + Add configuration parameter full_page_writes to + control writing full pages to WAL (Bruce) + + + To prevent partial disk writes from corrupting the database, + PostgreSQL writes a complete copy of + each database disk page to WAL the first time it is modified + after a checkpoint. This option turns off that functionality for more + speed. This is safe to use with battery-backed disk caches where + partial page writes cannot happen. + + + + + + Use O_DIRECT if available when using + O_SYNC for wal_sync_method + (Itagaki Takahiro) + + + O_DIRECT causes disk writes to bypass the kernel + cache, and for WAL writes, this improves performance. + + + + + + Improve COPY FROM performance (Alon Goldshuv) + + + This was accomplished by reading COPY input in + larger chunks, rather than character by character. + + + + + + Improve the performance of COUNT(), + SUM, AVG(), + STDDEV(), and + VARIANCE() (Neil, Tom) + + + + + + + Server Changes + + + + + Prevent problems due to transaction ID (XID) wraparound (Tom) + + + The server will now warn when the transaction counter approaches + the wraparound point. If the counter becomes too close to wraparound, + the server will stop accepting queries. This ensures that data is + not lost before needed vacuuming is performed. + + + + + + Fix problems with object IDs (OIDs) conflicting with existing system + objects after the OID counter has wrapped around (Tom) + + + + + + Add warning about the need to increase + max_fsm_relations and max_fsm_pages + during VACUUM (Ron Mayer) + + + + + + Add temp_buffers configuration parameter to allow + users to determine the size of the local buffer area for + temporary table access (Tom) + + + + + + Add session start time and client IP address to + pg_stat_activity (Magnus) + + + + + + Adjust pg_stat views for bitmap scans (Tom) + + + The meanings of some of the fields have changed slightly. + + + + + + Enhance pg_locks view (Tom) + + + + + + Log queries for client-side PREPARE and + EXECUTE (Simon) + + + + + + Allow Kerberos name and user name case sensitivity to be + specified in postgresql.conf (Magnus) + + + + + + Add configuration parameter krb_server_hostname so + that the server host name can be specified as part of service + principal (Todd Kover) + + + If not set, any service principal matching an entry in the + keytab can be used. This is new Kerberos matching behavior in + this release. + + + + + + Add log_line_prefix options for millisecond + timestamps (%m) and remote host (%h) (Ed + L.) + + + + + + Add WAL logging for GiST indexes (Teodor, Oleg) + + + GiST indexes are now safe for crash and point-in-time recovery. + + + + + + Remove old *.backup files when we do + pg_stop_backup() (Bruce) + + + This prevents a large number of *.backup files from + existing in pg_xlog/. + + + + + + Add configuration parameters to control TCP/IP keep-alive + times for idle, interval, and count (Oliver Jowett) + + + + These values can be changed to allow more rapid detection of + lost client connections. + + + + + + Add per-user and per-database connection limits (Petr Jelinek) + + + Using ALTER USER and ALTER DATABASE, + limits can now be enforced on the maximum number of sessions that + can concurrently connect as a specific user or to a specific database. + Setting the limit to zero disables user or database connections. + + + + + + Allow more than two gigabytes of shared memory and per-backend + work memory on 64-bit machines (Koichi Suzuki) + + + + + + New system catalog pg_pltemplate allows overriding + obsolete procedural-language definitions in dump files (Tom) + + + + + + + + + Query Changes + + + + + Add temporary views (Koju Iijima, Neil) + + + + + + Fix HAVING without any aggregate functions or + GROUP BY so that the query returns a single group (Tom) + + + Previously, such a case would treat the HAVING + clause the same as a WHERE clause. This was not per spec. + + + + + + Add USING clause to allow additional tables to be + specified to DELETE (Euler Taveira de Oliveira, Neil) + + + In prior releases, there was no clear method for specifying + additional tables to be used for joins in a DELETE + statement. UPDATE already has a FROM + clause for this purpose. + + + + + + Add support for \x hex escapes in backend and ecpg + strings (Bruce) + + + This is just like the standard C \x escape syntax. + Octal escapes were already supported. + + + + + + Add BETWEEN SYMMETRIC query syntax (Pavel Stehule) + + + This feature allows BETWEEN comparisons without + requiring the first value to be less than the second. For + example, 2 BETWEEN [ASYMMETRIC] 3 AND 1 returns + false, while 2 BETWEEN SYMMETRIC 3 AND 1 returns + true. BETWEEN ASYMMETRIC was already supported. + + + + + + Add NOWAIT option to SELECT ... FOR + UPDATE/SHARE (Hans-Juergen Schoenig) + + + While the statement_timeout configuration + parameter allows a query taking more than a certain amount of + time to be cancelled, the NOWAIT option allows a + query to be canceled as soon as a SELECT ... FOR + UPDATE/SHARE command cannot immediately acquire a row lock. + + + + + + + + Object Manipulation Changes + + + + + Track dependencies of shared objects (Alvaro) + + + PostgreSQL allows global tables + (users, databases, tablespaces) to reference information in + multiple databases. This addition adds dependency information + for global tables, so, for example, user ownership can be + tracked across databases, so a user who owns something in any + database can no longer be removed. Dependency tracking already + existed for database-local objects. + + + + + + Allow limited ALTER OWNER commands to be performed + by the object owner (Stephen Frost) + + + Prior releases allowed only superusers to change object owners. + Now, ownership can be transferred if the user executing the command + owns the object and would be able to create it as the new owner + (that is, the user is a member of the new owning role and that role + has the CREATE permission that would be needed to create the object + afresh). + + + + + + Add ALTER object SET SCHEMA capability + for some object types (tables, functions, types) (Bernd Helmle) + + + This allows objects to be moved to different schemas. + + + + + + Add ALTER TABLE ENABLE/DISABLE TRIGGER to + disable triggers (Satoshi Nagayasu) + + + + + + + + + Utility Command Changes + + + + + Allow TRUNCATE to truncate multiple tables in a + single command (Alvaro) + + + Because of referential integrity checks, it is not allowed to + truncate a table that is part of a referential integrity + constraint. Using this new functionality, TRUNCATE + can be used to truncate such tables, if both tables involved in + a referential integrity constraint are truncated in a single + TRUNCATE command. + + + + + + Properly process carriage returns and line feeds in + COPY CSV mode (Andrew) + + + In release 8.0, carriage returns and line feeds in CSV + COPY TO were processed in an inconsistent manner. (This was + documented on the TODO list.) + + + + + + Add COPY WITH CSV HEADER to allow a header line as + the first line in COPY (Andrew) + + + This allows handling of the common CSV usage of + placing the column names on the first line of the data file. For + COPY TO, the first line contains the column names, + and for COPY FROM, the first line is ignored. + + + + + + On Windows, display better sub-second precision in + EXPLAIN ANALYZE (Magnus) + + + + + + Add trigger duration display to EXPLAIN ANALYZE + (Tom) + + + Prior releases included trigger execution time as part of the + total execution time, but did not show it separately. It is now + possible to see how much time is spent in each trigger. + + + + + + Add support for \x hex escapes in COPY + (Sergey Ten) + + + Previous releases only supported octal escapes. + + + + + + Make SHOW ALL include variable descriptions + (Matthias Schmidt) + + + SHOW varname still only displays the variable's + value and does not include the description. + + + + + + Make initdb create a new standard + database called postgres, and convert utilities to + use postgres rather than template1 for + standard lookups (Dave) + + + In prior releases, template1 was used both as a + default connection for utilities like + createuser, and as a template for + new databases. This caused CREATE DATABASE to + sometimes fail, because a new database cannot be created if + anyone else is in the template database. With this change, the + default connection database is now postgres, + meaning it is much less likely someone will be using + template1 during CREATE DATABASE. + + + + + + Create new reindexdb command-line + utility by moving /contrib/reindexdb into the + server (Euler Taveira de Oliveira) + + + + + + + + + Data Type and Function Changes + + + + + Add MAX() and MIN() aggregates for + array types (Koju Iijima) + + + + + + Fix to_date() and to_timestamp() to + behave reasonably when CC and YY fields + are both used (Karel Zak) + + + If the format specification contains CC and a year + specification is YYY or longer, ignore the + CC. If the year specification is YY or + shorter, interpret CC as the previous century. + + + + + + Add md5(bytea) (Abhijit Menon-Sen) + + + md5(text) already existed. + + + + + + Add support for numeric ^ numeric based on + power(numeric, numeric) + + + The function already existed, but there was no operator assigned + to it. + + + + + + Fix NUMERIC modulus by properly truncating the quotient + during computation (Bruce) + + + In previous releases, modulus for large values sometimes + returned negative results due to rounding of the quotient. + + + + + + Add a function lastval() (Dennis Björklund) + + + lastval() is a simplified version of + currval(). It automatically determines the proper + sequence name based on the most recent nextval() or + setval() call performed by the current session. + + + + + + Add to_timestamp(DOUBLE PRECISION) (Michael Glaesemann) + + + Converts Unix seconds since 1970 to a TIMESTAMP WITH + TIMEZONE. + + + + + + Add pg_postmaster_start_time() function (Euler + Taveira de Oliveira, Matthias Schmidt) + + + + + + Allow the full use of time zone names in AT TIME + ZONE, not just the short list previously available (Magnus) + + + Previously, only a predefined list of time zone names were + supported by AT TIME ZONE. Now any supported time + zone name can be used, e.g.: + + SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; + + In the above query, the time zone used is adjusted based on the + daylight saving time rules that were in effect on the supplied + date. + + + + + + Add GREATEST() and LEAST() variadic + functions (Pavel Stehule) + + + These functions take a variable number of arguments and return + the greatest or least value among the arguments. + + + + + + Add pg_column_size() (Mark Kirkwood) + + + This returns storage size of a column, which might be compressed. + + + + + + Add regexp_replace() (Atsushi Ogawa) + + + This allows regular expression replacement, like sed. An optional + flag argument allows selection of global (replace all) and + case-insensitive modes. + + + + + + Fix interval division and multiplication (Bruce) + + + Previous versions sometimes returned unjustified results, like + '4 months'::interval / 5 returning '1 mon + -6 days'. + + + + + + Fix roundoff behavior in timestamp, time, and interval output (Tom) + + + This fixes some cases in which the seconds field would be shown as + 60 instead of incrementing the higher-order fields. + + + + + + Add a separate day field to type interval so a one day + interval can be distinguished from a 24 hour interval (Michael + Glaesemann) + + + Days that contain a daylight saving time adjustment are not 24 + hours long, but typically 23 or 25 hours. This change creates a + conceptual distinction between intervals of so many days + and intervals of so many hours. Adding + 1 day to a timestamp now gives the same local time on + the next day even if a daylight saving time adjustment occurs + between, whereas adding 24 hours will give a different + local time when this happens. For example, under US DST rules: + + '2005-04-03 00:00:00-05' + '1 day' = '2005-04-04 00:00:00-04' + '2005-04-03 00:00:00-05' + '24 hours' = '2005-04-04 01:00:00-04' + + + + + + + Add justify_days() and justify_hours() + (Michael Glaesemann) + + + These functions, respectively, adjust days to an appropriate + number of full months and days, and adjust hours to an + appropriate number of full days and hours. + + + + + + Move /contrib/dbsize into the backend, and rename + some of the functions (Dave Page, Andreas Pflug) + + + + + + + pg_tablespace_size() + + + + + + pg_database_size() + + + + + + pg_relation_size() + + + + + + pg_total_relation_size() + + + + + + pg_size_pretty() + + + + + + + pg_total_relation_size() includes indexes and TOAST + tables. + + + + + + Add functions for read-only file access to the cluster directory + (Dave Page, Andreas Pflug) + + + + + + + pg_stat_file() + + + + + + pg_read_file() + + + + + + pg_ls_dir() + + + + + + + + + + Add pg_reload_conf() to force reloading of the + configuration files (Dave Page, Andreas Pflug) + + + + + + Add pg_rotate_logfile() to force rotation of the + server log file (Dave Page, Andreas Pflug) + + + + + + Change pg_stat_* views to include TOAST tables (Tom) + + + + + + + + + Encoding and Locale Changes + + + + + Rename some encodings to be more consistent and to follow + international standards (Bruce) + + + + + + + UNICODE is now UTF8 + + + + + + ALT is now WIN866 + + + + + + WIN is now WIN1251 + + + + + + TCVN is now WIN1258 + + + + + + + + The original names still work. + + + + + + Add support for WIN1252 encoding (Roland Volkmann) + + + + + + Add support for four-byte UTF8 characters (John + Hansen) + + + Previously only one, two, and three-byte UTF8 characters + were supported. This is particularly important for support for + some Chinese character sets. + + + + + + Allow direct conversion between EUC_JP and + SJIS to improve performance (Atsushi Ogawa) + + + + + + Allow the UTF8 encoding to work on Windows (Magnus) + + + This is done by mapping UTF8 to the Windows-native UTF16 + implementation. + + + + + + + + + General Server-Side Language Changes + + + + + Fix ALTER LANGUAGE RENAME (Sergey Yatskevich) + + + + + + Allow function characteristics, like strictness and volatility, + to be modified via ALTER FUNCTION (Neil) + + + + + + Increase the maximum number of function arguments to 100 (Tom) + + + + + + Allow SQL and PL/PgSQL functions to use OUT and + INOUT parameters (Tom) + + + OUT is an alternate way for a function to return + values. Instead of using RETURN, values can be + returned by assigning to parameters declared as OUT or + INOUT. This is notationally simpler in some cases, + particularly so when multiple values need to be returned. + While returning multiple values from a function + was possible in previous releases, this greatly simplifies the + process. (The feature will be extended to other server-side + languages in future releases.) + + + + + + Move language handler functions into the pg_catalog schema + + + This makes it easier to drop the public schema if desired. + + + + + + Add SPI_getnspname() to SPI (Neil) + + + + + + + + PL/PgSQL Server-Side Language Changes + + + + + Overhaul the memory management of PL/PgSQL functions (Neil) + + + The parsetree of each function is now stored in a separate + memory context. This allows this memory to be easily reclaimed + when it is no longer needed. + + + + + + Check function syntax at CREATE FUNCTION time, + rather than at runtime (Neil) + + + Previously, most syntax errors were reported only when the + function was executed. + + + + + + Allow OPEN to open non-SELECT queries + like EXPLAIN and SHOW (Tom) + + + + + + No longer require functions to issue a RETURN + statement (Tom) + + + This is a byproduct of the newly added OUT and + INOUT functionality. RETURN can + be omitted when it is not needed to provide the function's + return value. + + + + + + Add support for an optional INTO clause to + PL/PgSQL's EXECUTE statement (Pavel Stehule, Neil) + + + + + + Make CREATE TABLE AS set ROW_COUNT (Tom) + + + + + + Define SQLSTATE and SQLERRM to return + the SQLSTATE and error message of the current + exception (Pavel Stehule, Neil) + + + These variables are only defined inside exception blocks. + + + + + + Allow the parameters to the RAISE statement to be + expressions (Pavel Stehule, Neil) + + + + + + Add a loop CONTINUE statement (Pavel Stehule, Neil) + + + + + + Allow block and loop labels (Pavel Stehule) + + + + + + + + + PL/Perl Server-Side Language Changes + + + + + Allow large result sets to be returned efficiently (Abhijit + Menon-Sen) + + + This allows functions to use return_next() to avoid + building the entire result set in memory. + + + + + + Allow one-row-at-a-time retrieval of query results (Abhijit Menon-Sen) + + + This allows functions to use spi_query() and + spi_fetchrow() to avoid accumulating the entire + result set in memory. + + + + + + Force PL/Perl to handle strings as UTF8 if the + server encoding is UTF8 (David Kamholz) + + + + + + Add a validator function for PL/Perl (Andrew) + + + This allows syntax errors to be reported at definition time, + rather than execution time. + + + + + + Allow PL/Perl to return a Perl array when the function returns + an array type (Andrew) + + + This basically maps PostgreSQL arrays + to Perl arrays. + + + + + + Allow Perl nonfatal warnings to generate NOTICE + messages (Andrew) + + + + + + Allow Perl's strict mode to be enabled (Andrew) + + + + + + + + + <application>psql</> Changes + + + + + Add \set ON_ERROR_ROLLBACK to allow statements in + a transaction to error without affecting the rest of the + transaction (Greg Sabino Mullane) + + + This is basically implemented by wrapping every statement in a + sub-transaction. + + + + + + Add support for \x hex strings in + psql variables (Bruce) + + + Octal escapes were already supported. + + + + + + Add support for troff -ms output format (Roger + Leigh) + + + + + + Allow the history file location to be controlled by + HISTFILE (Andreas Seltenreich) + + + This allows configuration of per-database history storage. + + + + + + Prevent \x (expanded mode) from affecting + the output of \d tablename (Neil) + + + + + + Add + + This option was added because some operating systems do not have + simple command-line activity logging functionality. + + + + + + Make \d show the tablespaces of indexes (Qingqing + Zhou) + + + + + + Allow psql help (\h) to + make a best guess on the proper help information (Greg Sabino + Mullane) + + + This allows the user to just add \h to the front of + the syntax error query and get help on the supported syntax. + Previously any additional query text beyond the command name + had to be removed to use \h. + + + + + + Add \pset numericlocale to allow numbers to be + output in a locale-aware format (Eugen Nedelcu) + + + For example, using C locale 100000 would + be output as 100,000.0 while a European locale might + output this value as 100.000,0. + + + + + + Make startup banner show both server version number and + psql's version number, when they are different (Bruce) + + + Also, a warning will be shown if the server and psql + are from different major releases. + + + + + + + + + <application>pg_dump</> Changes + + + + + Add + + This allows just the objects in a specified schema to be restored. + + + + + + Allow pg_dump to dump large objects even in + text mode (Tom) + + + With this change, large objects are now always dumped; the former + + + + + + Allow pg_dump to dump a consistent snapshot of + large objects (Tom) + + + + + + Dump comments for large objects (Tom) + + + + + + Add + + This allows a database to be dumped in an encoding that is + different from the server's encoding. This is valuable when + transferring the dump to a machine with a different encoding. + + + + + + Rely on pg_pltemplate for procedural languages (Tom) + + + If the call handler for a procedural language is in the + pg_catalog schema, pg_dump does not + dump the handler. Instead, it dumps the language using just + CREATE LANGUAGE name, + relying on the pg_pltemplate catalog to provide + the language's creation parameters at load time. + + + + + + + + + <application>libpq</application> Changes + + + + + Add a PGPASSFILE environment variable to specify the + password file's filename (Andrew) + + + + + + Add lo_create(), that is similar to + lo_creat() but allows the OID of the large object + to be specified (Tom) + + + + + + Make libpq consistently return an error + to the client application on malloc() + failure (Neil) + + + + + + + + Source Code Changes + + + + + Fix pgxs to support building against a relocated + installation + + + + + + Add spinlock support for the Itanium processor using Intel + compiler (Vikram Kalsi) + + + + + + Add Kerberos 5 support for Windows (Magnus) + + + + + + Add Chinese FAQ (laser@pgsqldb.com) + + + + + + Rename Rendezvous to Bonjour to match OS/X feature renaming + (Bruce) + + + + + + Add support for fsync_writethrough on + Darwin (Chris Campbell) + + + + + + Streamline the passing of information within the server, the + optimizer, and the lock system (Tom) + + + + + + Allow pg_config to be compiled using MSVC (Andrew) + + + This is required to build DBD::Pg using MSVC. + + + + + + Remove support for Kerberos V4 (Magnus) + + + Kerberos 4 had security vulnerabilities and is no longer + maintained. + + + + + + Code cleanups (Coverity static analysis performed by + EnterpriseDB) + + + + + + Modify postgresql.conf to use documentation defaults + on/off rather than + true/false (Bruce) + + + + + + Enhance pg_config to be able to report more + build-time values (Tom) + + + + + + Allow libpq to be built thread-safe + on Windows (Dave Page) + + + + + + Allow IPv6 connections to be used on Windows (Andrew) + + + + + + Add Server Administration documentation about I/O subsystem + reliability (Bruce) + + + + + + Move private declarations from gist.h to + gist_private.h (Neil) + + + + In previous releases, gist.h contained both the + public GiST API (intended for use by authors of GiST index + implementations) as well as some private declarations used by + the implementation of GiST itself. The latter have been moved + to a separate file, gist_private.h. Most GiST + index implementations should be unaffected. + + + + + + Overhaul GiST memory management (Neil) + + + + GiST methods are now always invoked in a short-lived memory + context. Therefore, memory allocated via palloc() + will be reclaimed automatically, so GiST index implementations + do not need to manually release allocated memory via + pfree(). + + + + + + + + Contrib Changes + + + + + Add /contrib/pg_buffercache contrib module (Mark + Kirkwood) + + + This displays the contents of the buffer cache, for debugging and + performance tuning purposes. + + + + + + Remove /contrib/array because it is obsolete (Tom) + + + + + + Clean up the /contrib/lo module (Tom) + + + + + + Move /contrib/findoidjoins to + /src/tools (Tom) + + + + + + Remove the <<, >>, + &<, and &> operators from + /contrib/cube + + + These operators were not useful. + + + + + + Improve /contrib/btree_gist (Janko Richter) + + + + + + Improve /contrib/pgbench (Tomoaki Sato, Tatsuo) + + + There is now a facility for testing with SQL command scripts given + by the user, instead of only a hard-wired command sequence. + + + + + + Improve /contrib/pgcrypto (Marko Kreen) + + + + + + + Implementation of OpenPGP symmetric-key and public-key encryption + + + Both RSA and Elgamal public-key algorithms are supported. + + + + + + Stand alone build: include SHA256/384/512 hashes, Fortuna PRNG + + + + + + OpenSSL build: support 3DES, use internal AES with OpenSSL < 0.9.7 + + + + + + Take build parameters (OpenSSL, zlib) from configure result + + + There is no need to edit the Makefile anymore. + + + + + + Remove support for libmhash and libmcrypt + + + + + + + + + + + diff --git a/doc/src/sgml/release-8.2.sgml b/doc/src/sgml/release-8.2.sgml new file mode 100644 index 0000000000..b636d99886 --- /dev/null +++ b/doc/src/sgml/release-8.2.sgml @@ -0,0 +1,4802 @@ + + + + + Release 8.2.13 + + + Release date + 2009-03-16 + + + + This release contains a variety of fixes from 8.2.12. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.13 + + + A dump/restore is not required for those running 8.2.X. + However, if you are upgrading from a version earlier than 8.2.11, + see the release notes for 8.2.11. + + + + + + Changes + + + + + + Prevent error recursion crashes when encoding conversion fails (Tom) + + + + 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 + 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) + + + + + + Disallow CREATE CONVERSION with the wrong encodings + for the specified conversion function (Heikki) + + + + 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. + + + + + + Fix core dump when to_char() is given format codes that + are inappropriate for the type of the data argument (Tom) + + + + + + Fix possible failure in contrib/tsearch2 when C locale is + used with a multi-byte encoding (Teodor) + + + + Crashes were possible on platforms where wchar_t is narrower + than int; Windows in particular. + + + + + + Fix extreme inefficiency in contrib/tsearch2 parser's + handling of an email-like string containing multiple @ + characters (Heikki) + + + + + + Fix decompilation of CASE WHEN with an implicit coercion + (Tom) + + + + This mistake could lead to Assert failures in an Assert-enabled build, + or an unexpected CASE WHEN clause error message in other + cases, when trying to examine or dump a view. + + + + + + Fix possible misassignment of the owner of a TOAST table's rowtype (Tom) + + + + If CLUSTER or a rewriting variant of ALTER TABLE + were executed by someone other than the table owner, the + pg_type entry for the table's TOAST table would end up + marked as owned by that someone. This caused no immediate problems, + since the permissions on the TOAST rowtype aren't examined by any + ordinary database operation. However, it could lead to unexpected + failures if one later tried to drop the role that issued the command + (in 8.1 or 8.2), or owner of data type appears to be invalid + warnings from pg_dump after having done so (in 8.3). + + + + + + Fix PL/pgSQL to not treat INTO after INSERT as + an INTO-variables clause anywhere in the string, not only at the start; + in particular, don't fail for INSERT INTO within + CREATE RULE (Tom) + + + + + + Clean up PL/pgSQL error status variables fully at block exit + (Ashesh Vashi and Dave Page) + + + + This is not a problem for PL/pgSQL itself, but the omission could cause + the PL/pgSQL Debugger to crash while examining the state of a function. + + + + + + Retry failed calls to CallNamedPipe() on Windows + (Steve Marshall, Magnus) + + + + It appears that this function can sometimes fail transiently; + we previously treated any failure as a hard error, which could + confuse LISTEN/NOTIFY as well as other + operations. + + + + + + Add MUST (Mauritius Island Summer Time) to the default list + of known timezone abbreviations (Xavier Bugaud) + + + + + + + + + + Release 8.2.12 + + + Release date + 2009-02-02 + + + + This release contains a variety of fixes from 8.2.11. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.12 + + + A dump/restore is not required for those running 8.2.X. + However, if you are upgrading from a version earlier than 8.2.11, + see the release notes for 8.2.11. + + + + + + Changes + + + + + + Improve handling of URLs in headline() function (Teodor) + + + + + + Improve handling of overlength headlines in headline() + function (Teodor) + + + + + + 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) + + + + + + Fix possible Assert failure if a statement executed in PL/pgSQL is + rewritten into another kind of statement, for example if an + INSERT is rewritten into an UPDATE (Heikki) + + + + + + Ensure that a snapshot is available to datatype input functions (Tom) + + + + This primarily affects domains that are declared with CHECK + constraints involving user-defined stable or immutable functions. Such + functions typically fail if no snapshot has been set. + + + + + + Make it safer for SPI-using functions to be used within datatype I/O; + in particular, to be used in domain check constraints (Tom) + + + + + + Avoid unnecessary locking of small tables in VACUUM + (Heikki) + + + + + + Fix a problem that made UPDATE RETURNING tableoid + return zero instead of the correct OID (Tom) + + + + + + Fix planner misestimation of selectivity when transitive equality + is applied to an outer-join clause (Tom) + + + + This could result in bad plans for queries like + ... from a left join b on a.a1 = b.b1 where a.a1 = 42 ... + + + + + + Improve optimizer's handling of long IN lists (Tom) + + + + This change avoids wasting large amounts of time on such lists + when constraint exclusion is enabled. + + + + + + Ensure that the contents of a holdable cursor don't depend on the + contents of TOAST tables (Tom) + + + + Previously, large field values in a cursor result might be represented + as TOAST pointers, which would fail if the referenced table got dropped + before the cursor is read, or if the large value is deleted and then + vacuumed away. This cannot happen with an ordinary cursor, + but it could with a cursor that is held past its creating transaction. + + + + + + Fix memory leak when a set-returning function is terminated without + reading its whole result (Tom) + + + + + + Fix contrib/dblink's + dblink_get_result(text,bool) function (Joe) + + + + + + Fix possible garbage output from contrib/sslinfo functions + (Tom) + + + + + + Fix configure script to properly report failure when + unable to obtain linkage information for PL/Perl (Andrew) + + + + + + Make all documentation reference pgsql-bugs and/or + pgsql-hackers as appropriate, instead of the + now-decommissioned pgsql-ports and pgsql-patches + mailing lists (Tom) + + + + + + Update time zone data files to tzdata release 2009a (for + Kathmandu and historical DST corrections in Switzerland, Cuba) + + + + + + + + + + Release 8.2.11 + + + Release date + 2008-11-03 + + + + This release contains a variety of fixes from 8.2.10. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.11 + + + A dump/restore is not required for those running 8.2.X. + However, if you are upgrading from a version earlier than 8.2.7, + see the release notes for 8.2.7. Also, if you were running a previous + 8.2.X release, it is recommended to REINDEX all GiST + indexes after the upgrade. + + + + + + Changes + + + + + + Fix GiST index corruption due to marking the wrong index entry + dead after a deletion (Teodor) + + + + This would result in index searches failing to find rows they + should have found. Corrupted indexes can be fixed with + REINDEX. + + + + + + Fix backend crash when the client encoding cannot represent a localized + error message (Tom) + + + + We have addressed similar issues before, but it would still fail if + the 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. + + + + + + Fix possible crash when deeply nested functions are invoked from + a trigger (Tom) + + + + + + Improve optimization of expression IN + (expression-list) queries (Tom, per an idea from Robert + Haas) + + + + Cases in which there are query variables on the right-hand side had been + handled less efficiently in 8.2.x and 8.3.x than in prior versions. + The fix restores 8.1 behavior for such cases. + + + + + + Fix mis-expansion of rule queries when a sub-SELECT appears + in a function call in FROM, a multi-row VALUES + list, or a RETURNING list (Tom) + + + + The usual symptom of this problem is an unrecognized node type + error. + + + + + + Fix memory leak during rescan of a hashed aggregation plan (Neil) + + + + + + Ensure an error is reported when a newly-defined PL/pgSQL trigger + function is invoked as a normal function (Tom) + + + + + + Prevent possible collision of relfilenode numbers + when moving a table to another tablespace with ALTER SET + TABLESPACE (Heikki) + + + + The command tried to re-use the existing filename, instead of + picking one that is known unused in the destination directory. + + + + + + Fix incorrect tsearch2 headline generation when single query + item matches first word of text (Sushant Sinha) + + + + + + Fix improper display of fractional seconds in interval values when + using a non-ISO datestyle in an + + + + + Ensure SPI_getvalue and SPI_getbinval + behave correctly when the passed tuple and tuple descriptor have + different numbers of columns (Tom) + + + + 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. + + + + + + Fix ecpg's parsing of CREATE ROLE (Michael) + + + + + + Fix recent breakage of pg_ctl restart (Tom) + + + + + + Ensure pg_control is opened in binary mode + (Itagaki Takahiro) + + + + pg_controldata and pg_resetxlog + did this incorrectly, and so could fail on Windows. + + + + + + Update time zone data files to tzdata release 2008i (for + DST law changes in Argentina, Brazil, Mauritius, Syria) + + + + + + + + + + Release 8.2.10 + + + Release date + 2008-09-22 + + + + This release contains a variety of fixes from 8.2.9. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.10 + + + A dump/restore is not required for those running 8.2.X. + However, if you are upgrading from a version earlier than 8.2.7, + see the release notes for 8.2.7. + + + + + + Changes + + + + + + Fix bug in btree WAL recovery code (Heikki) + + + + Recovery failed if the WAL ended partway through a page split operation. + + + + + + Fix potential miscalculation of datfrozenxid (Alvaro) + + + + This error may explain some recent reports of failure to remove old + pg_clog data. + + + + + + Widen local lock counters from 32 to 64 bits (Tom) + + + + This responds to reports that the counters could overflow in + sufficiently long transactions, leading to unexpected lock is + already held errors. + + + + + + Fix possible duplicate output of tuples during a GiST index scan (Teodor) + + + + + + Fix missed permissions checks when a view contains a simple + UNION ALL construct (Heikki) + + + + Permissions for the referenced tables were checked properly, but not + permissions for the view itself. + + + + + + Add checks in executor startup to ensure that the tuples produced by an + INSERT or UPDATE will match the target table's + current rowtype (Tom) + + + + ALTER COLUMN TYPE, followed by re-use of a previously + cached plan, could produce this type of situation. The check protects + against data corruption and/or crashes that could ensue. + + + + + + Fix possible repeated drops during DROP OWNED (Tom) + + + + This would typically result in strange errors such as cache + lookup failed for relation NNN. + + + + + + Fix AT TIME ZONE to first try to interpret its timezone + argument as a timezone abbreviation, and only try it as a full timezone + name if that fails, rather than the other way around as formerly (Tom) + + + + The timestamp input functions have always resolved ambiguous zone names + in this order. Making AT TIME ZONE do so as well improves + consistency, and fixes a compatibility bug introduced in 8.1: + in ambiguous cases we now behave the same as 8.0 and before did, + since in the older versions AT TIME ZONE accepted + only abbreviations. + + + + + + Fix datetime input functions to correctly detect integer overflow when + running on a 64-bit platform (Tom) + + + + + + Prevent integer overflows during units conversion when displaying a + configuration parameter that has units (Tom) + + + + + + Improve performance of writing very long log messages to syslog (Tom) + + + + + + Allow spaces in the suffix part of an LDAP URL in + pg_hba.conf (Tom) + + + + + + Fix bug in backwards scanning of a cursor on a SELECT DISTINCT + ON query (Tom) + + + + + + Fix planner bug with nested sub-select expressions (Tom) + + + + If the outer sub-select has no direct dependency on the parent query, + but the inner one does, the outer value might not get recalculated + for new parent query rows. + + + + + + Fix planner to estimate that GROUP BY expressions yielding + boolean results always result in two groups, regardless of the + expressions' contents (Tom) + + + + This is very substantially more accurate than the regular GROUP + BY estimate for certain boolean tests like col + IS NULL. + + + + + + Fix PL/PgSQL to not fail when a FOR loop's target variable + is a record containing composite-type fields (Tom) + + + + + + Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful + about the encoding of data sent to or from Tcl (Tom) + + + + + + On Windows, work around a Microsoft bug by preventing + libpq from trying to send more than 64kB per system call + (Magnus) + + + + + + Improve pg_dump and pg_restore's + error reporting after failure to send a SQL command (Tom) + + + + + + Fix pg_ctl to properly preserve postmaster + command-line arguments across a restart (Bruce) + + + + + + Update time zone data files to tzdata release 2008f (for + DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, + Pakistan, Palestine, and Paraguay) + + + + + + + + + + Release 8.2.9 + + + Release date + 2008-06-12 + + + + This release contains one serious and one minor bug fix over 8.2.8. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.9 + + + A dump/restore is not required for those running 8.2.X. + However, if you are upgrading from a version earlier than 8.2.7, + see the release notes for 8.2.7. + + + + + + Changes + + + + + + Make pg_get_ruledef() parenthesize negative constants (Tom) + + + + Before this fix, a negative constant in a view or rule might be dumped + as, say, -42::integer, which is subtly incorrect: it should + be (-42)::integer due to operator precedence rules. + Usually this would make little difference, but it could interact with + another recent patch to cause + PostgreSQL to reject what had been a valid + SELECT DISTINCT view query. Since this could result in + 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. + + + + + + Make ALTER AGGREGATE ... OWNER TO update + pg_shdepend (Tom) + + + + This oversight could lead to problems if the aggregate was later + involved in a DROP OWNED or REASSIGN OWNED + operation. + + + + + + + + + + Release 8.2.8 + + + Release date + never released + + + + This release contains a variety of fixes from 8.2.7. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.8 + + + A dump/restore is not required for those running 8.2.X. + However, if you are upgrading from a version earlier than 8.2.7, + see the release notes for 8.2.7. + + + + + + Changes + + + + + + Fix ERRORDATA_STACK_SIZE exceeded crash that + occurred on Windows when using UTF-8 database encoding and a different + client encoding (Tom) + + + + + + Fix ALTER TABLE ADD COLUMN ... PRIMARY KEY so that the new + column is correctly checked to see if it's been initialized to all + non-nulls (Brendan Jurd) + + + + Previous versions neglected to check this requirement at all. + + + + + + Fix possible CREATE TABLE failure when inheriting the + same constraint from multiple parent relations that + inherited that constraint from a common ancestor (Tom) + + + + + + Fix pg_get_ruledef() to show the alias, if any, attached + to the target table of an UPDATE or DELETE + (Tom) + + + + + + Fix GIN bug that could result in a too many LWLocks + taken failure (Teodor) + + + + + + Avoid possible crash when decompressing corrupted data + (Zdenek Kotala) + + + + + + Repair two places where SIGTERM exit of a backend could leave corrupted + state in shared memory (Tom) + + + + Neither case is very important if SIGTERM is used to shut down the + whole database cluster together, but there was a problem if someone + tried to SIGTERM individual backends. + + + + + + Fix conversions between ISO-8859-5 and other encodings to handle + Cyrillic Yo characters (e and E with + two dots) (Sergey Burladyan) + + + + + + Fix several datatype input functions, notably array_in(), + that were allowing unused bytes in their results to contain + uninitialized, unpredictable values (Tom) + + + + This could lead to failures in which two apparently identical literal + values were not seen as equal, resulting in the parser complaining + about unmatched ORDER BY and DISTINCT + expressions. + + + + + + Fix a corner case in regular-expression substring matching + (substring(string from + pattern)) (Tom) + + + + 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 + substring('foo' from 'foo(bar)?'). + This should return NULL, since (bar) isn't matched, but + it was mistakenly returning the whole-pattern match instead (ie, + foo). + + + + + + Update time zone data files to tzdata release 2008c (for + DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and + Argentina/San_Luis) + + + + + + Fix incorrect result from ecpg's + PGTYPEStimestamp_sub() function (Michael) + + + + + + Fix broken GiST comparison function for contrib/tsearch2's + tsquery type (Teodor) + + + + + + Fix possible crashes in contrib/cube functions (Tom) + + + + + + Fix core dump in contrib/xml2's + xpath_table() function when the input query returns a + NULL value (Tom) + + + + + + Fix contrib/xml2's makefile to not override + CFLAGS (Tom) + + + + + + Fix DatumGetBool macro to not fail with gcc + 4.3 (Tom) + + + + This problem affects 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. + + + + + + + + + + Release 8.2.7 + + + Release date + 2008-03-17 + + + + This release contains a variety of fixes from 8.2.6. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.7 + + + A dump/restore is not required for those running 8.2.X. + However, you might need to REINDEX indexes on textual + columns after updating, if you are affected by the Windows locale + issue described below. + + + + + + Changes + + + + + + Fix character string comparison for Windows locales that consider + different character combinations as equal (Tom) + + + + This fix applies only on Windows and only when using UTF-8 + database encoding. The same fix was made for all other cases + over two years ago, but Windows with UTF-8 uses a separate code + path that was not updated. If you are using a locale that + considers some non-identical strings as equal, you may need to + REINDEX to fix existing indexes on textual columns. + + + + + + Repair potential deadlock between concurrent VACUUM FULL + operations on different system catalogs (Tom) + + + + + + Fix longstanding LISTEN/NOTIFY + race condition (Tom) + + + + In rare cases a session that had just executed a + LISTEN might not get a notification, even though + one would be expected because the concurrent transaction executing + NOTIFY was observed to commit later. + + + + A side effect of the fix is that a transaction that has executed + a not-yet-committed LISTEN command will not see any + row in pg_listener for the 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. + + + + + + Disallow LISTEN and UNLISTEN within a + prepared transaction (Tom) + + + + This was formerly allowed but trying to do it had various unpleasant + consequences, notably that the originating backend could not exit + as long as an UNLISTEN remained uncommitted. + + + + + + Disallow dropping a temporary table within a + prepared transaction (Heikki) + + + + This was correctly disallowed by 8.1, but the check was inadvertently + broken in 8.2. + + + + + + Fix rare crash when an error occurs during a query using a hash index + (Heikki) + + + + + + Fix memory leaks in certain usages of set-returning functions (Neil) + + + + + + Fix input of datetime values for February 29 in years BC (Tom) + + + + The former coding was mistaken about which years were leap years. + + + + + + Fix unrecognized node type error in some variants of + ALTER OWNER (Tom) + + + + + + Ensure pg_stat_activity.waiting flag + is cleared when a lock wait is aborted (Tom) + + + + + + Fix handling of process permissions on Windows Vista (Dave, Magnus) + + + + In particular, this fix allows starting the server as the Administrator + user. + + + + + + Update time zone data files to tzdata release 2008a + (in particular, recent Chile changes); adjust timezone abbreviation + VET (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom) + + + + + + Fix pg_ctl to correctly extract the postmaster's port + number from command-line options (Itagaki Takahiro, Tom) + + + + Previously, pg_ctl start -w could try to contact the + postmaster on the wrong port, leading to bogus reports of startup + failure. + + + + + + Use + + + This is known to be necessary when building PostgreSQL + with gcc 4.3 or later. + + + + + + + Correctly enforce statement_timeout values longer + than INT_MAX microseconds (about 35 minutes) (Tom) + + + + This bug affects only builds with + + + + + Fix unexpected PARAM_SUBLINK ID planner error when + constant-folding simplifies a sub-select (Tom) + + + + + + Fix logical errors in constraint-exclusion handling of IS + NULL and NOT expressions (Tom) + + + + The planner would sometimes exclude partitions that should not + have been excluded because of the possibility of NULL results. + + + + + + Fix another cause of failed to build any N-way joins + planner errors (Tom) + + + + This could happen in cases where a clauseless join needed to be + forced before a join clause could be exploited. + + + + + + Fix incorrect constant propagation in outer-join planning (Tom) + + + + The planner could sometimes incorrectly conclude that a variable + could be constrained to be equal to a constant, leading + to wrong query results. + + + + + + Fix display of constant expressions in ORDER BY + and GROUP BY (Tom) + + + + An explictly casted constant would be shown incorrectly. This could + for example lead to corruption of a view definition during + dump and reload. + + + + + + Fix libpq to handle NOTICE messages correctly + during COPY OUT (Tom) + + + + 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. + + + + + + + + + + Release 8.2.6 + + + Release date + 2008-01-07 + + + + This release contains a variety of fixes from 8.2.5, + including fixes for significant security issues. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.6 + + + A dump/restore is not required for those running 8.2.X. + + + + + + Changes + + + + + + Prevent functions in indexes from executing with the privileges of + the user running VACUUM, ANALYZE, etc (Tom) + + + + 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 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 VACUUM, ANALYZE, REINDEX, + and CLUSTER) to execute as the table owner rather than + the calling user, using the same privilege-switching mechanism already + used for SECURITY DEFINER functions. To prevent bypassing + this security measure, execution of SET SESSION + AUTHORIZATION and SET ROLE is now forbidden within a + SECURITY DEFINER context. (CVE-2007-6600) + + + + + + Repair assorted bugs in the regular-expression package (Tom, Will Drewry) + + + + 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) + + + + + + Require non-superusers who use /contrib/dblink to use only + password authentication, as a security measure (Joe) + + + + The fix that appeared for this in 8.2.5 was incomplete, as it plugged + the hole for only some dblink functions. (CVE-2007-6601, + CVE-2007-3278) + + + + + + Fix bugs in WAL replay for GIN indexes (Teodor) + + + + + + Fix GIN index build to work properly when + maintenance_work_mem is 4GB or more (Tom) + + + + + + Update time zone data files to tzdata release 2007k + (in particular, recent Argentina changes) (Tom) + + + + + + Improve planner's handling of LIKE/regex estimation in non-C locales + (Tom) + + + + + + Fix planning-speed problem for deep outer-join nests, as well as + possible poor choice of join order (Tom) + + + + + + Fix planner failure in some cases of WHERE false AND var IN + (SELECT ...) (Tom) + + + + + + Make CREATE TABLE ... SERIAL and + ALTER SEQUENCE ... OWNED BY not change the + currval() state of the sequence (Tom) + + + + + + Preserve the tablespace and storage parameters of indexes that are + rebuilt by ALTER TABLE ... ALTER COLUMN TYPE (Tom) + + + + + + Make archive recovery always start a new WAL timeline, rather than only + when a recovery stop time was used (Simon) + + + + This avoids a corner-case risk of trying to overwrite an existing + archived copy of the last WAL segment, and seems simpler and cleaner + than the original definition. + + + + + + Make VACUUM not use all of maintenance_work_mem + when the table is too small for it to be useful (Alvaro) + + + + + + Fix potential crash in translate() when using a multibyte + database encoding (Tom) + + + + + + Make corr() return the correct result for negative + correlation values (Neil) + + + + + + Fix overflow in extract(epoch from interval) for intervals + exceeding 68 years (Tom) + + + + + + Fix PL/Perl to not fail when a UTF-8 regular expression is used + in a trusted function (Andrew) + + + + + + Fix PL/Perl to cope when platform's Perl defines type bool + as int rather than char (Tom) + + + + While this could theoretically happen anywhere, no standard build of + Perl did things this way ... until Mac OS X 10.5. + + + + + + Fix PL/Python to work correctly with Python 2.5 on 64-bit machines + (Marko Kreen) + + + + + + Fix PL/Python to not crash on long exception messages (Alvaro) + + + + + + Fix pg_dump to correctly handle inheritance child tables + that have default expressions different from their parent's (Tom) + + + + + + Fix libpq crash when PGPASSFILE refers + to a file that is not a plain file (Martin Pitt) + + + + + + ecpg parser fixes (Michael) + + + + + + Make contrib/pgcrypto defend against + OpenSSL libraries that fail on keys longer than 128 + bits; which is the case at least on some Solaris versions (Marko Kreen) + + + + + + Make contrib/tablefunc's crosstab() handle + NULL rowid as a category in its own right, rather than crashing (Joe) + + + + + + Fix tsvector and tsquery output routines to + escape backslashes correctly (Teodor, Bruce) + + + + + + Fix crash of to_tsvector() on huge input strings (Teodor) + + + + + + Require a specific version of Autoconf to be used + when re-generating the configure script (Peter) + + + + This affects developers and packagers only. The change was made + to prevent accidental use of untested combinations of + Autoconf and PostgreSQL versions. + You can remove the version check if you really want to use a + different Autoconf version, but it's + your responsibility whether the result works or not. + + + + + + Update gettimeofday configuration check so that + PostgreSQL can be built on newer versions of + MinGW (Magnus) + + + + + + + + + + Release 8.2.5 + + + Release date + 2007-09-17 + + + + This release contains a variety of fixes from 8.2.4. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.5 + + + A dump/restore is not required for those running 8.2.X. + + + + + + Changes + + + + + + Prevent index corruption when a transaction inserts rows and + then aborts close to the end of a concurrent VACUUM + on the same table (Tom) + + + + + + Fix ALTER DOMAIN ADD CONSTRAINT for cases involving + domains over domains (Tom) + + + + + + Make CREATE DOMAIN ... DEFAULT NULL work properly (Tom) + + + + + + Fix some planner problems with outer joins, notably poor + size estimation for t1 LEFT JOIN t2 WHERE t2.col IS NULL + (Tom) + + + + + + Allow the interval data type to accept input consisting only of + milliseconds or microseconds (Neil) + + + + + + Allow timezone name to appear before the year in timestamp input (Tom) + + + + + + Fixes for GIN indexes used by /contrib/tsearch2 (Teodor) + + + + + + Speed up rtree index insertion (Teodor) + + + + + + Fix excessive logging of SSL error messages (Tom) + + + + + + Fix logging so that log messages are never interleaved when using + the syslogger process (Andrew) + + + + + + Fix crash when log_min_error_statement logging runs out + of memory (Tom) + + + + + + Fix incorrect handling of some foreign-key corner cases (Tom) + + + + + + Fix stddev_pop(numeric) and var_pop(numeric) (Tom) + + + + + + Prevent REINDEX and CLUSTER from failing + due to attempting to process temporary tables of other sessions (Alvaro) + + + + + + Update the time zone database rules, particularly New Zealand's upcoming changes (Tom) + + + + + + Windows socket and semaphore improvements (Magnus) + + + + + + Make pg_ctl -w work properly in Windows service mode (Dave Page) + + + + + + Fix memory allocation bug when using MIT Kerberos on Windows (Magnus) + + + + + + Suppress timezone name (%Z) in log timestamps on Windows + because of possible encoding mismatches (Tom) + + + + + + Require non-superusers who use /contrib/dblink to use only + password authentication, as a security measure (Joe) + + + + + + Restrict /contrib/pgstattuple functions to superusers, for security reasons (Tom) + + + + + + Do not let /contrib/intarray try to make its GIN opclass + the default (this caused problems at dump/restore) (Tom) + + + + + + + + + + Release 8.2.4 + + + Release date + 2007-04-23 + + + + This release contains a variety of fixes from 8.2.3, + including a security fix. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.4 + + + A dump/restore is not required for those running 8.2.X. + + + + + + Changes + + + + + + Support explicit placement of the temporary-table schema within + search_path, and disable searching it for functions + and operators (Tom) + + + + This is needed to allow a security-definer function to set a + truly secure value of 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 CREATE FUNCTION for more information. + + + + + + Fix shared_preload_libraries for Windows + by forcing reload in each backend (Korry Douglas) + + + + + + Fix to_char() so it properly upper/lower cases localized day or month + names (Pavel Stehule) + + + + + + /contrib/tsearch2 crash fixes (Teodor) + + + + + + Require COMMIT PREPARED to be executed in the same + database as the transaction was prepared in (Heikki) + + + + + + Allow pg_dump to do binary backups larger than two gigabytes + on Windows (Magnus) + + + + + + New traditional (Taiwan) Chinese FAQ (Zhou Daojing) + + + + + + Prevent the statistics collector from writing to disk too frequently (Tom) + + + + + + Fix potential-data-corruption bug in how VACUUM FULL handles + UPDATE chains (Tom, Pavan Deolasee) + + + + + + Fix bug in domains that use array types (Tom) + + + + + + Fix pg_dump so it can dump a serial column's sequence + using + + + + + Planner fixes, including improving outer join and bitmap scan + selection logic (Tom) + + + + + + Fix possible wrong answers or crash when a PL/pgSQL function tries + to RETURN from within an EXCEPTION block + (Tom) + + + + + + Fix PANIC during enlargement of a hash index (Tom) + + + + + + Fix POSIX-style timezone specs to follow new USA DST rules (Tom) + + + + + + + + + + Release 8.2.3 + + + Release date + 2007-02-07 + + + + This release contains two fixes from 8.2.2. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.3 + + + A dump/restore is not required for those running 8.2.X. + + + + + + Changes + + + + + + Remove overly-restrictive check for type length in constraints and + functional indexes(Tom) + + + + + + Fix optimization so MIN/MAX in subqueries can again use indexes (Tom) + + + + + + + + + + Release 8.2.2 + + + Release date + 2007-02-05 + + + + This release contains a variety of fixes from 8.2.1, including + a security fix. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.2 + + + A dump/restore is not required for those running 8.2.X. + + + + + + Changes + + + + + + Remove security vulnerabilities that allowed connected users + to read backend memory (Tom) + + + + The vulnerabilities involve suppressing the normal check that a SQL + function returns the data type it's declared to, and changing the + data type of a table column (CVE-2007-0555, CVE-2007-0556). These + errors can easily be exploited to cause a backend crash, and in + principle might be used to read database content that the user + should not be able to access. + + + + + + Fix not-so-rare-anymore bug wherein btree index page splits could fail + due to choosing an infeasible split point (Heikki Linnakangas) + + + + + + Fix Borland C compile scripts (L Bayuk) + + + + + + Properly handle to_char('CC') for years ending in + 00 (Tom) + + + + Year 2000 is in the twentieth century, not the twenty-first. + + + + + + /contrib/tsearch2 localization improvements (Tatsuo, Teodor) + + + + + + Fix incorrect permission check in + information_schema.key_column_usage view (Tom) + + + + The symptom is relation with OID nnnnn does not exist errors. + To get this fix without using initdb, use CREATE OR + REPLACE VIEW to install the corrected definition found in + share/information_schema.sql. Note you will need to do + this in each database. + + + + + + Improve VACUUM performance for databases with many tables (Tom) + + + + + + Fix for rare Assert() crash triggered by UNION (Tom) + + + + + + Fix potentially incorrect results from index searches using + ROW inequality conditions (Tom) + + + + + + Tighten security of multi-byte character processing for UTF8 sequences + over three bytes long (Tom) + + + + + + Fix bogus permission denied failures occurring on Windows + due to attempts to fsync already-deleted files (Magnus, Tom) + + + + + + Fix bug that could cause the statistics collector + to hang on Windows (Magnus) + + + + This would in turn lead to autovacuum not working. + + + + + + Fix possible crashes when an already-in-use PL/pgSQL function is + updated (Tom) + + + + + + Improve PL/pgSQL handling of domain types (Sergiy Vyshnevetskiy, Tom) + + + + + + Fix possible errors in processing PL/pgSQL exception blocks (Tom) + + + + + + + + + + Release 8.2.1 + + + Release date + 2007-01-08 + + + + This release contains a variety of fixes from 8.2. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.1 + + + A dump/restore is not required for those running 8.2. + + + + + + Changes + + + + + + Fix crash with SELECT ... LIMIT ALL (also + LIMIT NULL) (Tom) + + + + + + Several /contrib/tsearch2 fixes (Teodor) + + + + + + On Windows, make log messages coming from the operating system use + ASCII encoding (Hiroshi Saito) + + + + This fixes a conversion problem when there is a mismatch between + the encoding of the operating system and database server. + + + + + + Fix Windows linking of pg_dump using + win32.mak + (Hiroshi Saito) + + + + + + Fix planner mistakes for outer join queries (Tom) + + + + + + Fix several problems in queries involving sub-SELECTs (Tom) + + + + + + Fix potential crash in SPI during subtransaction abort (Tom) + + + + This affects all PL functions since they all use SPI. + + + + + + Improve build speed of PDF documentation (Peter) + + + + + + Re-add JST (Japan) timezone abbreviation (Tom) + + + + + + Improve optimization decisions related to index scans (Tom) + + + + + + Have psql print multi-byte combining characters as + before, rather than output as \u (Tom) + + + + + + Improve index usage of regular expressions that use parentheses (Tom) + + + + This improves psql \d performance also. + + + + + + Make pg_dumpall assume that databases have public + CONNECT privilege, when dumping from a pre-8.2 server (Tom) + + + + This preserves the previous behavior that anyone can connect to a + database if allowed by pg_hba.conf. + + + + + + + + + + Release 8.2 + + + Release date + 2006-12-05 + + + + Overview + + + This release adds many functionality and performance improvements that + were requested by users, including: + + + + + + Query language enhancements including INSERT/UPDATE/DELETE + RETURNING, multirow VALUES lists, and + optional target-table alias in + UPDATE/DELETE + + + + + + Index creation without blocking concurrent + INSERT/UPDATE/DELETE + operations + + + + + + Many query optimization improvements, including support for + reordering outer joins + + + + + + Improved sorting performance with lower memory usage + + + + + + More efficient locking with better concurrency + + + + + + More efficient vacuuming + + + + + + Easier administration of warm standby servers + + + + + + New FILLFACTOR support for tables and indexes + + + + + + Monitoring, logging, and performance tuning additions + + + + + + More control over creating and dropping objects + + + + + + Table inheritance relationships can be defined + for and removed from pre-existing tables + + + + + + COPY TO can copy the output of an arbitrary + SELECT statement + + + + + + Array improvements, including nulls in arrays + + + + + + Aggregate-function improvements, including multiple-input + aggregates and SQL:2003 statistical functions + + + + + + Many contrib/ improvements + + + + + + + + + + + Migration to Version 8.2 + + + A dump/restore using pg_dump is + required for those wishing to migrate data from any previous + release. + + + + Observe the following incompatibilities: + + + + + + + Set escape_string_warning + to on by default (Bruce) + + + + This issues a warning if backslash escapes are used in + non-escape (non-E'') + strings. + + + + + + Change the row + constructor syntax (ROW(...)) so that + list elements foo.* will be expanded to a list + of their member fields, rather than creating a nested + row type field as formerly (Tom) + + + + The new behavior is substantially more useful since it + allows, for example, triggers to check for data changes + with IF row(new.*) IS DISTINCT FROM row(old.*). + The old behavior is still available by omitting .*. + + + + + + Make row comparisons + follow SQL standard semantics and allow them + to be used in index scans (Tom) + + + + Previously, row = and <> comparisons followed the + standard but < <= > >= did not. A row comparison + can now be used as an index constraint for a multicolumn + index matching the row value. + + + + + + Make row IS NOT NULL + tests follow SQL standard semantics (Tom) + + + + The former behavior conformed to the standard for simple cases + with IS NULL, but IS NOT NULL would return + true if any row field was non-null, whereas the standard says it + should return true only when all fields are non-null. + + + + + + Make SET + CONSTRAINT affect only one constraint (Kris Jurka) + + + + In previous releases, SET CONSTRAINT modified + all constraints with a matching name. In this release, + the schema search path is used to modify only the first + matching constraint. A schema specification is also + supported. This more nearly conforms to the SQL standard. + + + + + + Remove RULE permission for tables, for security reasons + (Tom) + + + + As of this release, only a table's owner can create or modify + rules for the table. For backwards compatibility, + GRANT/REVOKE RULE is still accepted, + but it does nothing. + + + + + + Array comparison improvements (Tom) + + + + Now array dimensions are also compared. + + + + + + Change array concatenation + to match documented behavior (Tom) + + + + This changes the previous behavior where concatenation + would modify the array lower bound. + + + + + + Make command-line options of postmaster + and postgres + identical (Peter) + + + + This allows the postmaster to pass arguments to each backend + without using -o. Note that some options are now + only available as long-form options, because there were conflicting + single-letter options. + + + + + + Deprecate use of postmaster symbolic link (Peter) + + + + postmaster and postgres + commands now act identically, with the behavior determined + by command-line options. The postmaster symbolic link is + kept for compatibility, but is not really needed. + + + + + + Change log_duration + to output even if the query is not output (Tom) + + + + In prior releases, log_duration only printed if + the query appeared earlier in the log. + + + + + + Make to_char(time) + and to_char(interval) + treat HH and HH12 as 12-hour + intervals + + + + Most applications should use HH24 unless they + want a 12-hour display. + + + + + + Zero unmasked bits in conversion from INET to CIDR (Tom) + + + + This ensures that the converted value is actually valid for + CIDR. + + + + + + Remove australian_timezones configuration variable + (Joachim Wieland) + + + + This variable has been superseded by a more general facility + for configuring timezone abbreviations. + + + + + + Improve cost estimation for nested-loop index scans (Tom) + + + + This might eliminate the need to set unrealistically small + values of random_page_cost. + If you have been using a very small random_page_cost, + please recheck your test cases. + + + + + + Change behavior of pg_dump -n and + -t options. (Greg Sabino Mullane) + + + See the pg_dump manual page for details. + + + + + + Change libpq + PQdsplen() to return a useful value (Martijn + van Oosterhout) + + + + + + Declare libpq + PQgetssl() as returning void *, + rather than SSL * (Martijn van Oosterhout) + + + + This allows applications to use the function without including + the OpenSSL headers. + + + + + + C-language loadable modules must now include a + PG_MODULE_MAGIC + macro call for version compatibility checking + (Martijn van Oosterhout) + + + + + + For security's sake, modules used by a PL/PerlU function are no + longer available to PL/Perl functions (Andrew) + + + + This also implies that data can no longer be shared between a PL/Perl + function and a PL/PerlU function. + Some Perl installations have not been compiled with the correct flags + to allow multiple interpreters to exist within a single process. + In this situation PL/Perl and PL/PerlU cannot both be used in a + single backend. The solution is to get a Perl installation which + supports multiple interpreters. + + + + + + + In contrib/xml2/, rename xml_valid() to + xml_is_well_formed() (Tom) + + + + xml_valid() will remain for backward compatibility, + but its behavior will change to do schema checking in a future + release. + + + + + + Remove contrib/ora2pg/, now at + + + + + + Remove contrib modules that have been migrated to PgFoundry: + adddepend, dbase, dbmirror, + fulltextindex, mac, userlock + + + + + + Remove abandoned contrib modules: + mSQL-interface, tips + + + + + + Remove QNX and BEOS ports (Bruce) + + + + These ports no longer had active maintainers. + + + + + + + + Changes + + + Below you will find a detailed account of the + changes between PostgreSQL 8.2 and + the previous major release. + + + + Performance Improvements + + + + + Allow the planner to reorder outer + joins in some circumstances (Tom) + + + + In previous releases, outer joins would always be evaluated in + the order written in the query. This change allows the + query optimizer to consider reordering outer joins, in cases where + it can determine that the join order can be changed without + altering the meaning of the query. This can make a + considerable performance difference for queries involving + multiple outer joins or mixed inner and outer joins. + + + + + + Improve efficiency of IN + (list-of-expressions) clauses (Tom) + + + + + + Improve sorting speed and reduce memory usage (Simon, Tom) + + + + + + Improve subtransaction performance (Alvaro, Itagaki Takahiro, + Tom) + + + + + + Add FILLFACTOR to table and index creation (ITAGAKI + Takahiro) + + + + This leaves extra free space in each table or index page, + allowing improved performance as the database grows. This + is particularly valuable to maintain clustering. + + + + + + Increase default values for shared_buffers + and max_fsm_pages + (Andrew) + + + + + + Improve locking performance by breaking the lock manager tables into + sections + (Tom) + + + + This allows locking to be more fine-grained, reducing + contention. + + + + + + Reduce locking requirements of sequential scans (Qingqing + Zhou) + + + + + + Reduce locking required for database creation and destruction + (Tom) + + + + + + Improve the optimizer's selectivity estimates for LIKE, ILIKE, and + regular expression + operations (Tom) + + + + + + Improve planning of joins to inherited + tables and UNION + ALL views (Tom) + + + + + + Allow constraint + exclusion to be applied to inherited UPDATE and + DELETE queries (Tom) + + + + SELECT already honored constraint exclusion. + + + + + + Improve planning of constant WHERE clauses, such as + a condition that depends only on variables inherited from an + outer query level (Tom) + + + + + + Protocol-level unnamed prepared statements are re-planned + for each set of BIND values (Tom) + + + + This improves performance because the exact parameter values + can be used in the plan. + + + + + + Speed up vacuuming of B-Tree indexes (Heikki Linnakangas, + Tom) + + + + + + Avoid extra scan of tables without indexes during VACUUM (Greg Stark) + + + + + + Improve multicolumn GiST + indexing (Oleg, Teodor) + + + + + + Remove dead index entries before B-Tree page split (Junji + Teramoto) + + + + + + + + + Server Changes + + + + + Allow a forced switch to a new transaction log file (Simon, Tom) + + + + This is valuable for keeping warm standby slave servers + in sync with the master. Transaction log file switching now also happens + automatically during pg_stop_backup(). + This ensures that all + transaction log files needed for recovery can be archived immediately. + + + + + + Add WAL informational functions (Simon) + + + + Add functions for interrogating the current transaction log insertion + point and determining WAL filenames from the + hex WAL locations displayed by pg_stop_backup() + and related functions. + + + + + + Improve recovery from a crash during WAL replay (Simon) + + + + The server now does periodic checkpoints during WAL + recovery, so if there is a crash, future WAL + recovery is shortened. This also eliminates the need for + warm standby servers to replay the entire log since the + base backup if they crash. + + + + + + Improve reliability of long-term WAL replay + (Heikki, Simon, Tom) + + + + Formerly, trying to roll forward through more than 2 billion + transactions would not work due to XID wraparound. This meant + warm standby servers had to be reloaded + from fresh base backups periodically. + + + + + + Add archive_timeout + to force transaction log file switches at a given interval (Simon) + + + + This enforces a maximum replication delay for warm standby servers. + + + + + + Add native LDAP + authentication (Magnus Hagander) + + + + This is particularly useful for platforms that do not + support PAM, such as Windows. + + + + + + Add GRANT + CONNECT ON DATABASE (Gevik Babakhani) + + + + This gives SQL-level control over database access. It works as + an additional filter on top of the existing + pg_hba.conf + controls. + + + + + + Add support for SSL + Certificate Revocation List (CRL) files + (Libor Hohoš) + + + + The server and libpq both recognize CRL + files now. + + + + + + GiST indexes are + now clusterable (Teodor) + + + + + + Remove routine autovacuum server log entries (Bruce) + + + + pg_stat_activity + now shows autovacuum activity. + + + + + + Track maximum XID age within individual tables, instead of whole databases (Alvaro) + + + + This reduces the overhead involved in preventing transaction + ID wraparound, by avoiding unnecessary VACUUMs. + + + + + + Add last vacuum and analyze timestamp columns to the stats + collector (Larry Rosenman) + + + + These values now appear in the pg_stat_*_tables + system views. + + + + + + Improve performance of statistics monitoring, especially + stats_command_string + (Tom, Bruce) + + + + This release enables stats_command_string by + default, now that its overhead is minimal. This means + pg_stat_activity + will now show all active queries by default. + + + + + + Add a waiting column to pg_stat_activity + (Tom) + + + + This allows pg_stat_activity to show all the + information included in the ps display. + + + + + + Add configuration parameter update_process_title + to control whether the ps display is updated + for every command (Bruce) + + + + On platforms where it is expensive to update the ps + display, it might be worthwhile to turn this off and rely solely on + pg_stat_activity for status information. + + + + + + Allow units to be specified in configuration settings + (Peter) + + + + For example, you can now set shared_buffers + to 32MB rather than mentally converting sizes. + + + + + + Add support for include + directives in postgresql.conf (Joachim + Wieland) + + + + + + Improve logging of protocol-level prepare/bind/execute + messages (Bruce, Tom) + + + + Such logging now shows statement names, bind parameter + values, and the text of the query being executed. Also, + the query text is properly included in logged error messages + when enabled by log_min_error_statement. + + + + + + Prevent max_stack_depth + from being set to unsafe values + + + + On platforms where we can determine the actual kernel stack depth + limit (which is most), make sure that the initial default value of + max_stack_depth is safe, and reject attempts to set it + to unsafely large values. + + + + + + Enable highlighting of error location in query in more + cases (Tom) + + + + The server is now able to report a specific error location for + some semantic errors (such as unrecognized column name), rather + than just for basic syntax errors as before. + + + + + + Fix failed to re-find parent key errors in + VACUUM (Tom) + + + + + + Clean out pg_internal.init cache files during server + restart (Simon) + + + + This avoids a hazard that the cache files might contain stale + data after PITR recovery. + + + + + + Fix race condition for truncation of a large relation across a + gigabyte boundary by VACUUM (Tom) + + + + + + Fix bug causing needless deadlock errors on row-level locks (Tom) + + + + + + Fix bugs affecting multi-gigabyte hash indexes (Tom) + + + + + + Each backend process is now its own process group leader (Tom) + + + + This allows query cancel to abort subprocesses invoked from a + backend or archive/recovery process. + + + + + + + + + Query Changes + + + + + Add INSERT/UPDATE/DELETE + RETURNING (Jonah Harris, Tom) + + + + This allows these commands to return values, such as the + computed serial key for a new row. In the UPDATE + case, values from the updated version of the row are returned. + + + + + + Add support for multiple-row VALUES clauses, + per SQL standard (Joe, Tom) + + + + This allows INSERT to insert multiple rows of + constants, or queries to generate result sets using constants. + For example, INSERT ... VALUES (...), (...), + ...., and SELECT * FROM (VALUES (...), (...), + ....) AS alias(f1, ...). + + + + + + Allow UPDATE + and DELETE + to use an alias for the target table (Atsushi Ogawa) + + + + The SQL standard does not permit an alias in these commands, but + many database systems allow one anyway for notational convenience. + + + + + + Allow UPDATE + to set multiple columns with a list of values (Susanne + Ebrecht) + + + + This is basically a short-hand for assigning the columns + and values in pairs. The syntax is UPDATE tab + SET (column, ...) = (val, ...). + + + + + + Make row comparisons work per standard (Tom) + + + + The forms <, <=, >, >= now compare rows lexicographically, + that is, compare the first elements, if equal compare the second + elements, and so on. Formerly they expanded to an AND condition + across all the elements, which was neither standard nor very useful. + + + + + + Add CASCADE + option to TRUNCATE (Joachim Wieland) + + + + This causes TRUNCATE to automatically include all tables + that reference the specified table(s) via foreign keys. While + convenient, this is a dangerous tool — use with caution! + + + + + + Support FOR UPDATE and FOR SHARE + in the same SELECT + command (Tom) + + + + + + Add IS NOT + DISTINCT FROM (Pavel Stehule) + + + + This operator is similar to equality (=), but + evaluates to true when both left and right operands are + NULL, and to false when just one is, rather than + yielding NULL in these cases. + + + + + + Improve the length output used by UNION/INTERSECT/EXCEPT + (Tom) + + + + When all corresponding columns are of the same defined length, that + length is used for the result, rather than a generic length. + + + + + + Allow ILIKE + to work for multi-byte encodings (Tom) + + + + Internally, ILIKE now calls lower() + and then uses LIKE. Locale-specific regular + expression patterns still do not work in these encodings. + + + + + + Enable standard_conforming_strings + to be turned on (Kevin Grittner) + + + + This allows backslash escaping in strings to be disabled, + making PostgreSQL more + standards-compliant. The default is off for backwards + compatibility, but future releases will default this to on. + + + + + + Do not flatten subqueries that contain volatile + functions in their target lists (Jaime Casanova) + + + + This prevents surprising behavior due to multiple evaluation + of a volatile function (such as random() + or nextval()). It might cause performance + degradation in the presence of functions that are unnecessarily + marked as volatile. + + + + + + Add system views pg_prepared_statements + and pg_cursors + to show prepared statements and open cursors (Joachim Wieland, Neil) + + + + These are very useful in pooled connection setups. + + + + + + Support portal parameters in EXPLAIN and EXECUTE (Tom) + + + + This allows, for example, JDBC ? parameters to + work in these commands. + + + + + + If SQL-level PREPARE parameters + are unspecified, infer their types from the content of the + query (Neil) + + + + Protocol-level PREPARE already did this. + + + + + + Allow LIMIT and OFFSET to exceed + two billion (Dhanaraj M) + + + + + + + + + Object Manipulation Changes + + + + + Add TABLESPACE clause to CREATE TABLE AS + (Neil) + + + + This allows a tablespace to be specified for the new table. + + + + + + Add ON COMMIT clause to CREATE TABLE AS + (Neil) + + + + This allows temporary tables to be truncated or dropped on + transaction commit. The default behavior is for the table + to remain until the session ends. + + + + + + Add INCLUDING CONSTRAINTS to CREATE TABLE LIKE + (Greg Stark) + + + + This allows easy copying of CHECK constraints to a new + table. + + + + + + Allow the creation of placeholder (shell) types (Martijn van Oosterhout) + + + + A shell type declaration creates a type name, without specifying + any of the details of the type. Making a shell type is useful + because it allows cleaner declaration of the type's input/output + functions, which must exist before the type can be defined for + real. The syntax is CREATE TYPE typename. + + + + + + Aggregate functions + now support multiple input parameters (Sergey Koposov, Tom) + + + + + + Add new aggregate creation syntax (Tom) + + + + The new syntax is CREATE AGGREGATE + aggname (input_type) + (parameter_list). This more + naturally supports the new multi-parameter aggregate + functionality. The previous syntax is still supported. + + + + + + Add ALTER ROLE PASSWORD NULL + to remove a previously set role password (Peter) + + + + + + Add DROP object IF EXISTS for many + object types (Andrew) + + + + This allows DROP operations on non-existent + objects without generating an error. + + + + + + Add DROP OWNED + to drop all objects owned by a role (Alvaro) + + + + + + Add REASSIGN + OWNED to reassign ownership of all objects owned + by a role (Alvaro) + + + + This, and DROP OWNED above, facilitate dropping + roles. + + + + + + Add GRANT ON SEQUENCE + syntax (Bruce) + + + + This was added for setting sequence-specific permissions. + GRANT ON TABLE for sequences is still supported + for backward compatibility. + + + + + + Add USAGE + permission for sequences that allows only currval() + and nextval(), not setval() + (Bruce) + + + + USAGE permission allows more fine-grained + control over sequence access. Granting USAGE + allows users to increment + a sequence, but prevents them from setting the sequence to + an arbitrary value using setval(). + + + + + + Add ALTER TABLE + [ NO ] INHERIT (Greg Stark) + + + + This allows inheritance to be adjusted dynamically, rather than + just at table creation and destruction. This is very valuable + when using inheritance to implement table partitioning. + + + + + + Allow comments on global + objects to be stored globally (Kris Jurka) + + + + Previously, comments attached to databases were stored in individual + databases, making them ineffective, and there was no provision + at all for comments on roles or tablespaces. This change adds a new + shared catalog pg_shdescription + and stores comments on databases, roles, and tablespaces therein. + + + + + + + + + Utility Command Changes + + + + + Add option to allow indexes to be created without blocking + concurrent writes to the table (Greg Stark, Tom) + + + + The new syntax is CREATE + INDEX CONCURRENTLY. The default behavior is + still to block table modification while a index is being + created. + + + + + + Provide advisory + locking functionality (Abhijit Menon-Sen, Tom) + + + + This is a new locking API designed to replace what used to be + in /contrib/userlock. The userlock code is now on pgfoundry. + + + + + + Allow COPY to + dump a SELECT query (Zoltan Boszormenyi, Karel + Zak) + + + + This allows COPY to dump arbitrary SQL + queries. The syntax is COPY (SELECT ...) TO. + + + + + + Make the COPY + command return a command tag that includes the number of + rows copied (Volkan YAZICI) + + + + + + Allow VACUUM + to expire rows without being affected by other concurrent + VACUUM operations (Hannu Krossing, Alvaro, Tom) + + + + + + Make initdb + detect the operating system locale and set the default + DateStyle accordingly (Peter) + + + + This makes it more likely that the installed + postgresql.conf DateStyle value will + be as desired. + + + + + + Reduce number of progress messages displayed by initdb (Tom) + + + + + + + + + Date/Time Changes + + + + + Allow full timezone names in timestamp input values + (Joachim Wieland) + + + + For example, '2006-05-24 21:11 + America/New_York'::timestamptz. + + + + + + Support configurable timezone abbreviations (Joachim Wieland) + + + + A desired set of timezone abbreviations can be chosen via the + configuration parameter timezone_abbreviations. + + + + + + Add pg_timezone_abbrevs + and pg_timezone_names + views to show supported timezones (Magnus Hagander) + + + + + + Add clock_timestamp(), + statement_timestamp(), + and transaction_timestamp() + (Bruce) + + + + clock_timestamp() is the current wall-clock time, + statement_timestamp() is the time the current + statement arrived at the server, and + transaction_timestamp() is an alias for + now(). + + + + + + Allow to_char() + to print localized month and day names (Euler Taveira de + Oliveira) + + + + + + Allow to_char(time) + and to_char(interval) + to output AM/PM specifications + (Bruce) + + + + Intervals and times are treated as 24-hour periods, e.g. + 25 hours is considered AM. + + + + + + Add new function justify_interval() + to adjust interval units (Mark Dilger) + + + + + + Allow timezone offsets up to 14:59 away from GMT + + + + Kiribati uses GMT+14, so we'd better accept that. + + + + + + Interval computation improvements (Michael Glaesemann, Bruce) + + + + + + + + + Other Data Type and Function Changes + + + + + Allow arrays to contain NULL elements (Tom) + + + + + + Allow assignment to array elements not contiguous with the existing + entries (Tom) + + + + The intervening array positions will be filled with nulls. + This is per SQL standard. + + + + + + New built-in operators + for array-subset comparisons (@>, + <@, &&) (Teodor, Tom) + + + + These operators can be indexed for many data types using + GiST or GIN indexes. + + + + + + Add convenient arithmetic operations on + INET/CIDR values (Stephen R. van den + Berg) + + + + The new operators are & (and), | + (or), ~ (not), inet + int8, + inet - int8, and + inet - inet. + + + + + + Add new aggregate functions + from SQL:2003 (Neil) + + + + The new functions are var_pop(), + var_samp(), stddev_pop(), and + stddev_samp(). var_samp() and + stddev_samp() are merely renamings of the + existing aggregates variance() and + stddev(). The latter names remain available + for backward compatibility. + + + + + + Add SQL:2003 statistical aggregates + (Sergey Koposov) + + + + New functions: regr_intercept(), + regr_slope(), regr_r2(), + corr(), covar_samp(), + covar_pop(), regr_avgx(), + regr_avgy(), regr_sxy(), + regr_sxx(), regr_syy(), + regr_count(). + + + + + + Allow domains to be + based on other domains (Tom) + + + + + + Properly enforce domain CHECK constraints + everywhere (Neil, Tom) + + + + For example, the result of a user-defined function that is + declared to return a domain type is now checked against the + domain's constraints. This closes a significant hole in the domain + implementation. + + + + + + Fix problems with dumping renamed SERIAL columns + (Tom) + + + + The fix is to dump a SERIAL column by explicitly + specifying its DEFAULT and sequence elements, + and reconstructing the SERIAL column on reload + using a new ALTER + SEQUENCE OWNED BY command. This also allows + dropping a SERIAL column specification. + + + + + + Add a server-side sleep function pg_sleep() + (Joachim Wieland) + + + + + + Add all comparison operators for the tid (tuple id) data + type (Mark Kirkwood, Greg Stark, Tom) + + + + + + + + + PL/PgSQL Server-Side Language Changes + + + + + Add TG_table_name and TG_table_schema to + trigger parameters (Andrew) + + + + TG_relname is now deprecated. Comparable + changes have been made in the trigger parameters for the other + PLs as well. + + + + + + Allow FOR statements to return values to scalars + as well as records and row types (Pavel Stehule) + + + + + + Add a BY clause to the FOR loop, + to control the iteration increment (Jaime Casanova) + + + + + + Add STRICT to SELECT + INTO (Matt Miller) + + + + STRICT mode throws an exception if more or less + than one row is returned by the SELECT, for + Oracle PL/SQL compatibility. + + + + + + + + + PL/Perl Server-Side Language Changes + + + + + Add table_name and table_schema to + trigger parameters (Adam Sjøgren) + + + + + + Add prepared queries (Dmitry Karasik) + + + + + + Make $_TD trigger data a global variable (Andrew) + + + + Previously, it was lexical, which caused unexpected sharing + violations. + + + + + + Run PL/Perl and PL/PerlU in separate interpreters, for security + reasons (Andrew) + + + In consequence, they can no longer share data nor loaded modules. + Also, if Perl has not been compiled with the requisite flags to + allow multiple interpreters, only one of these languages can be used + in any given backend process. + + + + + + + + + PL/Python Server-Side Language Changes + + + + + Named parameters are passed as ordinary variables, as well as in the + args[] array (Sven Suursoho) + + + + + + Add table_name and table_schema to + trigger parameters (Andrew) + + + + + + Allow returning of composite types and result sets (Sven Suursoho) + + + + + + Return result-set as list, iterator, + or generator (Sven Suursoho) + + + + + + Allow functions to return void (Neil) + + + + + + Python 2.5 is now supported (Tom) + + + + + + + + + <link linkend="APP-PSQL"><application>psql</></link> Changes + + + + + Add new command \password for changing role + password with client-side password encryption (Peter) + + + + + + Allow \c to connect to a new host and port + number (David, Volkan YAZICI) + + + + + + Add tablespace display to \l+ (Philip Yarra) + + + + + + Improve \df slash command to include the argument + names and modes (OUT or INOUT) of + the function (David Fetter) + + + + + + Support binary COPY (Andreas Pflug) + + + + + + Add option to run the entire session in a single transaction + (Simon) + + + + Use option -1 or --single-transaction. + + + + + + Support for automatically retrieving SELECT + results in batches using a cursor (Chris Mair) + + + + This is enabled using \set FETCH_COUNT + n. This + feature allows large result sets to be retrieved in + psql without attempting to buffer the entire + result set in memory. + + + + + + Make multi-line values align in the proper column + (Martijn van Oosterhout) + + + + Field values containing newlines are now displayed in a more + readable fashion. + + + + + + Save multi-line statements as a single entry, rather than + one line at a time (Sergey E. Koposov) + + + + This makes up-arrow recall of queries easier. (This is + not available on Windows, because that platform uses the native + command-line editing present in the operating system.) + + + + + + Make the line counter 64-bit so it can handle files with more + than two billion lines (David Fetter) + + + + + + Report both the returned data and the command status tag + for INSERT/UPDATE/DELETE + RETURNING (Tom) + + + + + + + + + <link linkend="APP-PGDUMP"><application>pg_dump</></link> Changes + + + + + Allow complex selection of objects to be included or excluded + by pg_dump (Greg Sabino Mullane) + + + + pg_dump now supports multiple -n + (schema) and -t (table) options, and adds + -N and -T options to exclude objects. + Also, the arguments of these switches can now be wild-card expressions + rather than single object names, for example + -t 'foo*', and a schema can be part of + a -t or -T switch, for example + -t schema1.table1. + + + + + + Add pg_restore + --no-data-for-failed-tables option to suppress + loading data if table creation failed (i.e., the table already + exists) (Martin Pitt) + + + + + + Add pg_restore + option to run the entire session in a single transaction + (Simon) + + + + Use option -1 or --single-transaction. + + + + + + + + + <link linkend="libpq"><application>libpq</></link> Changes + + + + + Add PQencryptPassword() + to encrypt passwords (Tom) + + + + This allows passwords to be sent pre-encrypted for commands + like ALTER ROLE ... + PASSWORD. + + + + + + Add function PQisthreadsafe() + (Bruce) + + + + This allows applications to query the thread-safety status + of the library. + + + + + + Add PQdescribePrepared(), + PQdescribePortal(), + and related functions to return information about previously + prepared statements and open cursors (Volkan YAZICI) + + + + + + Allow LDAP lookups + from pg_service.conf + (Laurenz Albe) + + + + + + Allow a hostname in ~/.pgpass + to match the default socket directory (Bruce) + + + + A blank hostname continues to match any Unix-socket connection, + but this addition allows entries that are specific to one of + several postmasters on the machine. + + + + + + + + + <link linkend="ecpg"><application>ecpg</></link> Changes + + + + + Allow SHOW to + put its result into a variable (Joachim Wieland) + + + + + + Add COPY TO STDOUT + (Joachim Wieland) + + + + + + Add regression tests (Joachim Wieland, Michael) + + + + + + Major source code cleanups (Joachim Wieland, Michael) + + + + + + + + + <application>Windows</> Port + + + + + Allow MSVC to compile the PostgreSQL + server (Magnus, Hiroshi Saito) + + + + + + Add MSVC support for utility commands and pg_dump (Hiroshi + Saito) + + + + + + Add support for Windows code pages 1253, + 1254, 1255, and 1257 + (Kris Jurka) + + + + + + Drop privileges on startup, so that the server can be started from + an administrative account (Magnus) + + + + + + Stability fixes (Qingqing Zhou, Magnus) + + + + + + Add native semaphore implementation (Qingqing Zhou) + + + + The previous code mimicked SysV semaphores. + + + + + + + + + Source Code Changes + + + + + Add GIN (Generalized + Inverted iNdex) index access method (Teodor, Oleg) + + + + + + Remove R-tree indexing (Tom) + + + + Rtree has been re-implemented using GiST. Among other + differences, this means that rtree indexes now have support + for crash recovery via write-ahead logging (WAL). + + + + + + Reduce libraries needlessly linked into the backend (Martijn + van Oosterhout, Tom) + + + + + + Add a configure flag to allow libedit to be preferred over + GNU readline (Bruce) + + + + Use configure --with-libedit-preferred. + + + + + + Allow installation into directories containing spaces + (Peter) + + + + + + Improve ability to relocate installation directories (Tom) + + + + + + Add support for Solaris x86_64 using the + Solaris compiler (Pierre Girard, Theo + Schlossnagle, Bruce) + + + + + + Add DTrace support (Robert Lor) + + + + + + Add PG_VERSION_NUM for use by third-party + applications wanting to test the backend version in C using > + and < comparisons (Bruce) + + + + + + Add XLOG_BLCKSZ as independent from BLCKSZ + (Mark Wong) + + + + + + Add LWLOCK_STATS define to report locking + activity (Tom) + + + + + + Emit warnings for unknown configure options + (Martijn van Oosterhout) + + + + + + Add server support for plugin libraries + that can be used for add-on tasks such as debugging and performance + measurement (Korry Douglas) + + + + This consists of two features: a table of rendezvous + variables that allows separately-loaded shared libraries to + communicate, and a new configuration parameter local_preload_libraries + that allows libraries to be loaded into specific sessions without + explicit cooperation from the client application. This allows + external add-ons to implement features such as a PL/PgSQL debugger. + + + + + + Rename existing configuration parameter + preload_libraries to shared_preload_libraries + (Tom) + + + + This was done for clarity in comparison to + local_preload_libraries. + + + + + + Add new configuration parameter server_version_num + (Greg Sabino Mullane) + + + + This is like server_version, but is an + integer, e.g. 80200. This allows applications to + make version checks more easily. + + + + + + Add a configuration parameter seq_page_cost + (Tom) + + + + + + Re-implement the regression test script as a C program + (Magnus, Tom) + + + + + + Allow loadable modules to allocate shared memory and + lightweight locks (Marc Munro) + + + + + + Add automatic initialization and finalization of dynamically + loaded libraries (Ralf Engelschall, Tom) + + + + New functions + _PG_init() and _PG_fini() are + called if the library defines such symbols. Hence we no + longer need to specify an initialization function in + shared_preload_libraries; we can assume that + the library used the _PG_init() convention + instead. + + + + + + Add PG_MODULE_MAGIC + header block to all shared object files (Martijn van + Oosterhout) + + + + The magic block prevents version mismatches between loadable object + files and servers. + + + + + + Add shared library support for AIX (Laurenz Albe) + + + + + + New XML + documentation section (Bruce) + + + + + + + + + Contrib Changes + + + + + Major tsearch2 improvements (Oleg, Teodor) + + + + + + + multibyte encoding support, including UTF8 + + + + + query rewriting support + + + + + improved ranking functions + + + + + thesaurus dictionary support + + + + + Ispell dictionaries now recognize MySpell + format, used by OpenOffice + + + + + GIN support + + + + + + + + + + Add adminpack module containing Pgadmin administration + functions (Dave) + + + + These functions provide additional file system access + routines not present in the default PostgreSQL + server. + + + + + + Add sslinfo module (Victor Wagner) + + + + Reports information about the current connection's SSL + certificate. + + + + + + Add pgrowlocks module (Tatsuo) + + + + This shows row locking information for a specified table. + + + + + + Add hstore module (Oleg, Teodor) + + + + + + Add isn module, replacing isbn_issn (Jeremy Kronuz) + + + + This new implementation supports EAN13, UPC, + ISBN (books), ISMN (music), and + ISSN (serials). + + + + + + Add index information functions to pgstattuple (ITAGAKI Takahiro, + Satoshi Nagayasu) + + + + + + Add pg_freespacemap module to display free space map information + (Mark Kirkwood) + + + + + + pgcrypto now has all planned functionality (Marko Kreen) + + + + + Include iMath library in pgcrypto to have the public-key encryption + functions always available. + + + + + Add SHA224 algorithm that was missing in OpenBSD code. + + + + + Activate builtin code for SHA224/256/384/512 hashes on older + OpenSSL to have those algorithms always available. + + + + + New function gen_random_bytes() that returns cryptographically strong + randomness. Useful for generating encryption keys. + + + + + Remove digest_exists(), hmac_exists() and cipher_exists() functions. + + + + + + + + Improvements to cube module (Joshua Reich) + + + + New functions are cube(float[]), + cube(float[], float[]), and + cube_subset(cube, int4[]). + + + + + + Add async query capability to dblink (Kai Londenberg, + Joe Conway) + + + + + + New operators for array-subset comparisons (@>, + <@, &&) (Tom) + + + + Various contrib packages already had these operators for their + datatypes, but the naming wasn't consistent. We have now added + consistently named array-subset comparison operators to the core code + and all the contrib packages that have such functionality. + (The old names remain available, but are deprecated.) + + + + + + Add uninstall scripts for all contrib packages that have install + scripts (David, Josh Drake) + + + + + + + + + diff --git a/doc/src/sgml/release-8.3.sgml b/doc/src/sgml/release-8.3.sgml new file mode 100644 index 0000000000..dd16cd3f12 --- /dev/null +++ b/doc/src/sgml/release-8.3.sgml @@ -0,0 +1,4481 @@ + + + + + Release 8.3.7 + + + Release date + 2009-03-16 + + + + This release contains a variety of fixes from 8.3.6. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.7 + + + A dump/restore is not required for those running 8.3.X. + However, if you are upgrading from a version earlier than 8.3.5, + see the release notes for 8.3.5. + + + + + + Changes + + + + + + Prevent error recursion crashes when encoding conversion fails (Tom) + + + + 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 + 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) + + + + + + Disallow CREATE CONVERSION with the wrong encodings + for the specified conversion function (Heikki) + + + + 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. + + + + + + Fix xpath() to not modify the path expression unless + necessary, and to make a saner attempt at it when necessary (Andrew) + + + + The SQL standard suggests that xpath should work on data + that is a document fragment, but libxml doesn't support + that, and indeed it's not clear that this is sensible according to the + XPath standard. xpath attempted to work around this + mismatch by modifying both the data and the path expression, but the + modification was buggy and could cause valid searches to fail. Now, + xpath checks whether the data is in fact a well-formed + document, and if so invokes libxml with no change to the + data or path expression. Otherwise, a different modification method + that is somewhat less likely to fail is used. + + + + + The new modification method is still not 100% satisfactory, and it + seems likely that no real solution is possible. This patch should + therefore be viewed as a band-aid to keep from breaking existing + applications unnecessarily. It is likely that + PostgreSQL 8.4 will simply reject use of + xpath on data that is not a well-formed document. + + + + + + + Fix core dump when to_char() is given format codes that + are inappropriate for the type of the data argument (Tom) + + + + + + Fix possible failure in text search when C locale is used with + a multi-byte encoding (Teodor) + + + + Crashes were possible on platforms where wchar_t is narrower + than int; Windows in particular. + + + + + + Fix extreme inefficiency in text search parser's handling of an + email-like string containing multiple @ characters (Heikki) + + + + + + Fix planner problem with sub-SELECT in the output list + of a larger subquery (Tom) + + + + The known symptom of this bug is a failed to locate grouping + columns error that is dependent on the datatype involved; + but there could be other issues as well. + + + + + + Fix decompilation of CASE WHEN with an implicit coercion + (Tom) + + + + This mistake could lead to Assert failures in an Assert-enabled build, + or an unexpected CASE WHEN clause error message in other + cases, when trying to examine or dump a view. + + + + + + Fix possible misassignment of the owner of a TOAST table's rowtype (Tom) + + + + If CLUSTER or a rewriting variant of ALTER TABLE + were executed by someone other than the table owner, the + pg_type entry for the table's TOAST table would end up + marked as owned by that someone. This caused no immediate problems, + since the permissions on the TOAST rowtype aren't examined by any + ordinary database operation. However, it could lead to unexpected + failures if one later tried to drop the role that issued the command + (in 8.1 or 8.2), or owner of data type appears to be invalid + warnings from pg_dump after having done so (in 8.3). + + + + + + Change UNLISTEN to exit quickly if the current session has + never executed any LISTEN command (Tom) + + + + Most of the time this is not a particularly useful optimization, but + since DISCARD ALL invokes UNLISTEN, the previous + coding caused a substantial performance problem for applications that + made heavy use of DISCARD ALL. + + + + + + Fix PL/pgSQL to not treat INTO after INSERT as + an INTO-variables clause anywhere in the string, not only at the start; + in particular, don't fail for INSERT INTO within + CREATE RULE (Tom) + + + + + + Clean up PL/pgSQL error status variables fully at block exit + (Ashesh Vashi and Dave Page) + + + + This is not a problem for PL/pgSQL itself, but the omission could cause + the PL/pgSQL Debugger to crash while examining the state of a function. + + + + + + Retry failed calls to CallNamedPipe() on Windows + (Steve Marshall, Magnus) + + + + It appears that this function can sometimes fail transiently; + we previously treated any failure as a hard error, which could + confuse LISTEN/NOTIFY as well as other + operations. + + + + + + Add MUST (Mauritius Island Summer Time) to the default list + of known timezone abbreviations (Xavier Bugaud) + + + + + + + + + + Release 8.3.6 + + + Release date + 2009-02-02 + + + + This release contains a variety of fixes from 8.3.5. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.6 + + + A dump/restore is not required for those running 8.3.X. + However, if you are upgrading from a version earlier than 8.3.5, + see the release notes for 8.3.5. + + + + + + Changes + + + + + + Make DISCARD ALL release advisory locks, in addition + to everything it already did (Tom) + + + + This was decided to be the most appropriate behavior. This could + affect existing applications, however. + + + + + + Fix whole-index GiST scans to work correctly (Teodor) + + + + This error could cause rows to be lost if a table is clustered + on a GiST index. + + + + + + Fix crash of xmlconcat(NULL) (Peter) + + + + + + Fix possible crash in ispell dictionary if high-bit-set + characters are used as flags (Teodor) + + + + This is known to be done by one widely available Norwegian dictionary, + and the same condition may exist in others. + + + + + + Fix misordering of pg_dump output for composite types + (Tom) + + + + The most likely problem was for user-defined operator classes to + be dumped after indexes or views that needed them. + + + + + + Improve handling of URLs in headline() function (Teodor) + + + + + + Improve handling of overlength headlines in headline() + function (Teodor) + + + + + + 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) + + + + + + Fix possible Assert failure if a statement executed in PL/pgSQL is + rewritten into another kind of statement, for example if an + INSERT is rewritten into an UPDATE (Heikki) + + + + + + Ensure that a snapshot is available to datatype input functions (Tom) + + + + This primarily affects domains that are declared with CHECK + constraints involving user-defined stable or immutable functions. Such + functions typically fail if no snapshot has been set. + + + + + + Make it safer for SPI-using functions to be used within datatype I/O; + in particular, to be used in domain check constraints (Tom) + + + + + + Avoid unnecessary locking of small tables in VACUUM + (Heikki) + + + + + + Fix a problem that sometimes kept ALTER TABLE ENABLE/DISABLE + RULE from being recognized by active sessions (Tom) + + + + + + Fix a problem that made UPDATE RETURNING tableoid + return zero instead of the correct OID (Tom) + + + + + + Allow functions declared as taking ANYARRAY to work on + the pg_statistic columns of that type (Tom) + + + + This used to work, but was unintentionally broken in 8.3. + + + + + + Fix planner misestimation of selectivity when transitive equality + is applied to an outer-join clause (Tom) + + + + This could result in bad plans for queries like + ... from a left join b on a.a1 = b.b1 where a.a1 = 42 ... + + + + + + Improve optimizer's handling of long IN lists (Tom) + + + + This change avoids wasting large amounts of time on such lists + when constraint exclusion is enabled. + + + + + + Prevent synchronous scan during GIN index build (Tom) + + + + Because GIN is optimized for inserting tuples in increasing TID order, + choosing to use a synchronous scan could slow the build by a factor of + three or more. + + + + + + Ensure that the contents of a holdable cursor don't depend on the + contents of TOAST tables (Tom) + + + + Previously, large field values in a cursor result might be represented + as TOAST pointers, which would fail if the referenced table got dropped + before the cursor is read, or if the large value is deleted and then + vacuumed away. This cannot happen with an ordinary cursor, + but it could with a cursor that is held past its creating transaction. + + + + + + Fix memory leak when a set-returning function is terminated without + reading its whole result (Tom) + + + + + + Fix encoding conversion problems in XML functions when the database + encoding isn't UTF-8 (Tom) + + + + + + Fix contrib/dblink's + dblink_get_result(text,bool) function (Joe) + + + + + + Fix possible garbage output from contrib/sslinfo functions + (Tom) + + + + + + Fix incorrect behavior of contrib/tsearch2 compatibility + trigger when it's fired more than once in a command (Teodor) + + + + + + Fix possible mis-signaling in autovacuum (Heikki) + + + + + + Support running as a service on Windows 7 beta (Dave and Magnus) + + + + + + Fix ecpg's handling of varchar structs (Michael) + + + + + + Fix configure script to properly report failure when + unable to obtain linkage information for PL/Perl (Andrew) + + + + + + Make all documentation reference pgsql-bugs and/or + pgsql-hackers as appropriate, instead of the + now-decommissioned pgsql-ports and pgsql-patches + mailing lists (Tom) + + + + + + Update time zone data files to tzdata release 2009a (for + Kathmandu and historical DST corrections in Switzerland, Cuba) + + + + + + + + + + Release 8.3.5 + + + Release date + 2008-11-03 + + + + This release contains a variety of fixes from 8.3.4. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.5 + + + A dump/restore is not required for those running 8.3.X. + However, if you are upgrading from a version earlier than 8.3.1, + see the release notes for 8.3.1. Also, if you were running a previous + 8.3.X release, it is recommended to REINDEX all GiST + indexes after the upgrade. + + + + + + Changes + + + + + + Fix GiST index corruption due to marking the wrong index entry + dead after a deletion (Teodor) + + + + This would result in index searches failing to find rows they + should have found. Corrupted indexes can be fixed with + REINDEX. + + + + + + Fix backend crash when the client encoding cannot represent a localized + error message (Tom) + + + + We have addressed similar issues before, but it would still fail if + the 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. + + + + + + Fix possible crash in bytea-to-XML mapping (Michael McMaster) + + + + + + Fix possible crash when deeply nested functions are invoked from + a trigger (Tom) + + + + + + Improve optimization of expression IN + (expression-list) queries (Tom, per an idea from Robert + Haas) + + + + Cases in which there are query variables on the right-hand side had been + handled less efficiently in 8.2.x and 8.3.x than in prior versions. + The fix restores 8.1 behavior for such cases. + + + + + + Fix mis-expansion of rule queries when a sub-SELECT appears + in a function call in FROM, a multi-row VALUES + list, or a RETURNING list (Tom) + + + + The usual symptom of this problem is an unrecognized node type + error. + + + + + + Fix Assert failure during rescan of an IS NULL + search of a GiST index (Teodor) + + + + + + Fix memory leak during rescan of a hashed aggregation plan (Neil) + + + + + + Ensure an error is reported when a newly-defined PL/pgSQL trigger + function is invoked as a normal function (Tom) + + + + + + Force a checkpoint before CREATE DATABASE starts to copy + files (Heikki) + + + + This prevents a possible failure if files had recently been deleted + in the source database. + + + + + + Prevent possible collision of relfilenode numbers + when moving a table to another tablespace with ALTER SET + TABLESPACE (Heikki) + + + + The command tried to re-use the existing filename, instead of + picking one that is known unused in the destination directory. + + + + + + Fix incorrect text search headline generation when single query + item matches first word of text (Sushant Sinha) + + + + + + Fix improper display of fractional seconds in interval values when + using a non-ISO datestyle in an + + + + + Make ILIKE compare characters case-insensitively + even when they're escaped (Andrew) + + + + + + Ensure DISCARD is handled properly by statement logging (Tom) + + + + + + Fix incorrect logging of last-completed-transaction time during + PITR recovery (Tom) + + + + + + Ensure SPI_getvalue and SPI_getbinval + behave correctly when the passed tuple and tuple descriptor have + different numbers of columns (Tom) + + + + 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. + + + + + + Mark SessionReplicationRole as PGDLLIMPORT + so it can be used by Slony on Windows (Magnus) + + + + + + Fix small memory leak when using libpq's + gsslib parameter (Magnus) + + + + The space used by the parameter string was not freed at connection + close. + + + + + + Ensure libgssapi is linked into libpq + if needed (Markus Schaaf) + + + + + + Fix ecpg's parsing of CREATE ROLE (Michael) + + + + + + Fix recent breakage of pg_ctl restart (Tom) + + + + + + Ensure pg_control is opened in binary mode + (Itagaki Takahiro) + + + + pg_controldata and pg_resetxlog + did this incorrectly, and so could fail on Windows. + + + + + + Update time zone data files to tzdata release 2008i (for + DST law changes in Argentina, Brazil, Mauritius, Syria) + + + + + + + + + + Release 8.3.4 + + + Release date + 2008-09-22 + + + + This release contains a variety of fixes from 8.3.3. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.4 + + + A dump/restore is not required for those running 8.3.X. + However, if you are upgrading from a version earlier than 8.3.1, + see the release notes for 8.3.1. + + + + + + Changes + + + + + + Fix bug in btree WAL recovery code (Heikki) + + + + Recovery failed if the WAL ended partway through a page split operation. + + + + + + Fix potential use of wrong cutoff XID for HOT page pruning (Alvaro) + + + + This error created a risk of corruption in system + catalogs that are consulted by VACUUM: dead tuple versions + might be removed too soon. The impact of this on actual database + operations would be minimal, since the system doesn't follow MVCC + rules while examining catalogs, but it might result in transiently + wrong output from pg_dump or other client programs. + + + + + + Fix potential miscalculation of datfrozenxid (Alvaro) + + + + This error may explain some recent reports of failure to remove old + pg_clog data. + + + + + + Fix incorrect HOT updates after pg_class is reindexed + (Tom) + + + + Corruption of pg_class could occur if REINDEX + TABLE pg_class was followed in the same session by an ALTER + TABLE RENAME or ALTER TABLE SET SCHEMA command. + + + + + + Fix missed combo cid case (Karl Schnaitter) + + + + This error made rows incorrectly invisible to a transaction in which they + had been deleted by multiple subtransactions that all aborted. + + + + + + Prevent autovacuum from crashing if the table it's currently + checking is deleted at just the wrong time (Alvaro) + + + + + + Widen local lock counters from 32 to 64 bits (Tom) + + + + This responds to reports that the counters could overflow in + sufficiently long transactions, leading to unexpected lock is + already held errors. + + + + + + Fix possible duplicate output of tuples during a GiST index scan (Teodor) + + + + + + Regenerate foreign key checking queries from scratch when either + table is modified (Tom) + + + + Previously, 8.3 would attempt to replan the query, but would work from + previously generated query text. This led to failures if a + table or column was renamed. + + + + + + Fix missed permissions checks when a view contains a simple + UNION ALL construct (Heikki) + + + + Permissions for the referenced tables were checked properly, but not + permissions for the view itself. + + + + + + Add checks in executor startup to ensure that the tuples produced by an + INSERT or UPDATE will match the target table's + current rowtype (Tom) + + + + This situation is believed to be impossible in 8.3, but it can happen in + prior releases, so a check seems prudent. + + + + + + Fix possible repeated drops during DROP OWNED (Tom) + + + + This would typically result in strange errors such as cache + lookup failed for relation NNN. + + + + + + Fix several memory leaks in XML operations (Kris Jurka, Tom) + + + + + + Fix xmlserialize() to raise error properly for + unacceptable target data type (Tom) + + + + + + Fix a couple of places that mis-handled multibyte characters in text + search configuration file parsing (Tom) + + + + Certain characters occurring in configuration files would always cause + invalid byte sequence for encoding failures. + + + + + + Provide file name and line number location for all errors reported + in text search configuration files (Tom) + + + + + + Fix AT TIME ZONE to first try to interpret its timezone + argument as a timezone abbreviation, and only try it as a full timezone + name if that fails, rather than the other way around as formerly (Tom) + + + + The timestamp input functions have always resolved ambiguous zone names + in this order. Making AT TIME ZONE do so as well improves + consistency, and fixes a compatibility bug introduced in 8.1: + in ambiguous cases we now behave the same as 8.0 and before did, + since in the older versions AT TIME ZONE accepted + only abbreviations. + + + + + + Fix datetime input functions to correctly detect integer overflow when + running on a 64-bit platform (Tom) + + + + + + Prevent integer overflows during units conversion when displaying a + configuration parameter that has units (Tom) + + + + + + Improve performance of writing very long log messages to syslog (Tom) + + + + + + Allow spaces in the suffix part of an LDAP URL in + pg_hba.conf (Tom) + + + + + + Fix bug in backwards scanning of a cursor on a SELECT DISTINCT + ON query (Tom) + + + + + + Fix planner bug that could improperly push down IS NULL + tests below an outer join (Tom) + + + + This was triggered by occurrence of IS NULL tests for + the same relation in all arms of an upper OR clause. + + + + + + Fix planner bug with nested sub-select expressions (Tom) + + + + If the outer sub-select has no direct dependency on the parent query, + but the inner one does, the outer value might not get recalculated + for new parent query rows. + + + + + + Fix planner to estimate that GROUP BY expressions yielding + boolean results always result in two groups, regardless of the + expressions' contents (Tom) + + + + This is very substantially more accurate than the regular GROUP + BY estimate for certain boolean tests like col + IS NULL. + + + + + + Fix PL/PgSQL to not fail when a FOR loop's target variable + is a record containing composite-type fields (Tom) + + + + + + Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful + about the encoding of data sent to or from Tcl (Tom) + + + + + + Improve performance of PQescapeBytea() (Rudolf Leitgeb) + + + + + + On Windows, work around a Microsoft bug by preventing + libpq from trying to send more than 64kB per system call + (Magnus) + + + + + + Fix ecpg to handle variables properly in SET + commands (Michael) + + + + + + Improve pg_dump and pg_restore's + error reporting after failure to send a SQL command (Tom) + + + + + + Fix pg_ctl to properly preserve postmaster + command-line arguments across a restart (Bruce) + + + + + + Fix erroneous WAL file cutoff point calculation in + pg_standby (Simon) + + + + + + Update time zone data files to tzdata release 2008f (for + DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, + Pakistan, Palestine, and Paraguay) + + + + + + + + + + Release 8.3.3 + + + Release date + 2008-06-12 + + + + This release contains one serious and one minor bug fix over 8.3.2. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.3 + + + A dump/restore is not required for those running 8.3.X. + However, if you are upgrading from a version earlier than 8.3.1, + see the release notes for 8.3.1. + + + + + + Changes + + + + + + Make pg_get_ruledef() parenthesize negative constants (Tom) + + + + Before this fix, a negative constant in a view or rule might be dumped + as, say, -42::integer, which is subtly incorrect: it should + be (-42)::integer due to operator precedence rules. + Usually this would make little difference, but it could interact with + another recent patch to cause + PostgreSQL to reject what had been a valid + SELECT DISTINCT view query. Since this could result in + 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. + + + + + + Make ALTER AGGREGATE ... OWNER TO update + pg_shdepend (Tom) + + + + This oversight could lead to problems if the aggregate was later + involved in a DROP OWNED or REASSIGN OWNED + operation. + + + + + + + + + + Release 8.3.2 + + + Release date + never released + + + + This release contains a variety of fixes from 8.3.1. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.2 + + + A dump/restore is not required for those running 8.3.X. + However, if you are upgrading from a version earlier than 8.3.1, + see the release notes for 8.3.1. + + + + + + Changes + + + + + + Fix ERRORDATA_STACK_SIZE exceeded crash that + occurred on Windows when using UTF-8 database encoding and a different + client encoding (Tom) + + + + + + Fix incorrect archive truncation point calculation for the + %r macro in recovery_command parameters + (Simon) + + + + This could lead to data loss if a warm-standby script relied on + %r to decide when to throw away WAL segment files. + + + + + + Fix ALTER TABLE ADD COLUMN ... PRIMARY KEY so that the new + column is correctly checked to see if it's been initialized to all + non-nulls (Brendan Jurd) + + + + Previous versions neglected to check this requirement at all. + + + + + + Fix REASSIGN OWNED so that it works on procedural + languages too (Alvaro) + + + + + + Fix problems with SELECT FOR UPDATE/SHARE occurring as a + subquery in a query with a non-SELECT top-level operation + (Tom) + + + + + + Fix possible CREATE TABLE failure when inheriting the + same constraint from multiple parent relations that + inherited that constraint from a common ancestor (Tom) + + + + + + Fix pg_get_ruledef() to show the alias, if any, attached + to the target table of an UPDATE or DELETE + (Tom) + + + + + + Restore the pre-8.3 behavior that an out-of-range block number in a + TID being used in a TidScan plan results in silently not matching any + rows (Tom) + + + + 8.3.0 and 8.3.1 threw an error instead. + + + + + + Fix GIN bug that could result in a too many LWLocks + taken failure (Teodor) + + + + + + Fix broken GiST comparison function for tsquery (Teodor) + + + + + + Fix tsvector_update_trigger() and ts_stat() + to accept domains over the types they expect to work with (Tom) + + + + + + Fix failure to support enum data types as foreign keys (Tom) + + + + + + Avoid possible crash when decompressing corrupted data + (Zdenek Kotala) + + + + + + Fix race conditions between delayed unlinks and DROP + DATABASE (Heikki) + + + + In the worst case this could result in deleting a newly created table + in a new database that happened to get the same OID as the + recently-dropped one; but of course that is an extremely + low-probability scenario. + + + + + + Repair two places where SIGTERM exit of a backend could leave corrupted + state in shared memory (Tom) + + + + Neither case is very important if SIGTERM is used to shut down the + whole database cluster together, but there was a problem if someone + tried to SIGTERM individual backends. + + + + + + Fix possible crash due to incorrect plan generated for an + x IN (SELECT y + FROM ...) clause when x and y + have different data types; and make sure the behavior is semantically + correct when the conversion from y's type to + x's type is lossy (Tom) + + + + + + Fix oversight that prevented the planner from substituting known Param + values as if they were constants (Tom) + + + + This mistake partially disabled optimization of unnamed + extended-Query statements in 8.3.0 and 8.3.1: in particular the + LIKE-to-indexscan optimization would never be applied if the LIKE + pattern was passed as a parameter, and constraint exclusion + depending on a parameter value didn't work either. + + + + + + Fix planner failure when an indexable MIN or + MAX aggregate is used with DISTINCT or + ORDER BY (Tom) + + + + + + Fix planner to ensure it never uses a physical tlist for a + plan node that is feeding a Sort node (Tom) + + + + This led to the sort having to push around more data than it really + needed to, since unused column values were included in the sorted + data. + + + + + + Avoid unnecessary copying of query strings (Tom) + + + + This fixes a performance problem introduced in 8.3.0 when a very large + number of commands are submitted as a single query string. + + + + + + Make TransactionIdIsCurrentTransactionId() use binary + search instead of linear search when checking child-transaction XIDs + (Heikki) + + + + This fixes some cases in which 8.3.0 was significantly + slower than earlier releases. + + + + + + Fix conversions between ISO-8859-5 and other encodings to handle + Cyrillic Yo characters (e and E with + two dots) (Sergey Burladyan) + + + + + + Fix several datatype input functions, notably array_in(), + that were allowing unused bytes in their results to contain + uninitialized, unpredictable values (Tom) + + + + This could lead to failures in which two apparently identical literal + values were not seen as equal, resulting in the parser complaining + about unmatched ORDER BY and DISTINCT + expressions. + + + + + + Fix a corner case in regular-expression substring matching + (substring(string from + pattern)) (Tom) + + + + 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 + substring('foo' from 'foo(bar)?'). + This should return NULL, since (bar) isn't matched, but + it was mistakenly returning the whole-pattern match instead (ie, + foo). + + + + + + Prevent cancellation of an auto-vacuum that was launched to prevent + XID wraparound (Alvaro) + + + + + + Improve ANALYZE's handling of in-doubt tuples (those + inserted or deleted by a not-yet-committed transaction) so that the + counts it reports to the stats collector are more likely to be correct + (Pavan Deolasee) + + + + + + Fix initdb to reject a relative path for its + --xlogdir (-X) option (Tom) + + + + + + Make psql print tab characters as an appropriate + number of spaces, rather than \x09 as was done in + 8.3.0 and 8.3.1 (Bruce) + + + + + + Update time zone data files to tzdata release 2008c (for + DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and + Argentina/San_Luis) + + + + + + Add ECPGget_PGconn() function to + ecpglib (Michael) + + + + + + Fix incorrect result from ecpg's + PGTYPEStimestamp_sub() function (Michael) + + + + + + Fix handling of continuation line markers in ecpg + (Michael) + + + + + + Fix possible crashes in contrib/cube functions (Tom) + + + + + + Fix core dump in contrib/xml2's + xpath_table() function when the input query returns a + NULL value (Tom) + + + + + + Fix contrib/xml2's makefile to not override + CFLAGS, and make it auto-configure properly for + libxslt present or not (Tom) + + + + + + + + + + Release 8.3.1 + + + Release date + 2008-03-17 + + + + This release contains a variety of fixes from 8.3.0. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.1 + + + A dump/restore is not required for those running 8.3.X. + However, you might need to REINDEX indexes on textual + columns after updating, if you are affected by the Windows locale + issue described below. + + + + + + Changes + + + + + + Fix character string comparison for Windows locales that consider + different character combinations as equal (Tom) + + + + This fix applies only on Windows and only when using UTF-8 + database encoding. The same fix was made for all other cases + over two years ago, but Windows with UTF-8 uses a separate code + path that was not updated. If you are using a locale that + considers some non-identical strings as equal, you may need to + REINDEX to fix existing indexes on textual columns. + + + + + + Repair corner-case bugs in VACUUM FULL (Tom) + + + + A potential deadlock between concurrent VACUUM FULL + operations on different system catalogs was introduced in 8.2. + This has now been corrected. 8.3 made this worse because the + deadlock could occur within a critical code section, making it + a PANIC rather than just ERROR condition. + + + + Also, a VACUUM FULL that failed partway through + vacuuming a system catalog could result in cache corruption in + concurrent database sessions. + + + + Another VACUUM FULL bug introduced in 8.3 could + result in a crash or out-of-memory report when dealing with + pages containing no live tuples. + + + + + + Fix misbehavior of foreign key checks involving character + or bit columns (Tom) + + + + If the referencing column were of a different but compatible type + (for instance varchar), the constraint was enforced incorrectly. + + + + + + Avoid needless deadlock failures in no-op foreign-key checks (Stephan + Szabo, Tom) + + + + + + Fix possible core dump when re-planning a prepared query (Tom) + + + + This bug affected only protocol-level prepare operations, not + SQL PREPARE, and so tended to be seen only with + JDBC, DBI, and other client-side drivers that use prepared + statements heavily. + + + + + + Fix possible failure when re-planning a query that calls an SPI-using + function (Tom) + + + + + + Fix failure in row-wise comparisons involving columns of different + datatypes (Tom) + + + + + + Fix longstanding LISTEN/NOTIFY + race condition (Tom) + + + + In rare cases a session that had just executed a + LISTEN might not get a notification, even though + one would be expected because the concurrent transaction executing + NOTIFY was observed to commit later. + + + + A side effect of the fix is that a transaction that has executed + a not-yet-committed LISTEN command will not see any + row in pg_listener for the 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. + + + + + + Disallow LISTEN and UNLISTEN within a + prepared transaction (Tom) + + + + This was formerly allowed but trying to do it had various unpleasant + consequences, notably that the originating backend could not exit + as long as an UNLISTEN remained uncommitted. + + + + + + Disallow dropping a temporary table within a + prepared transaction (Heikki) + + + + This was correctly disallowed by 8.1, but the check was inadvertently + broken in 8.2 and 8.3. + + + + + + Fix rare crash when an error occurs during a query using a hash index + (Heikki) + + + + + + Fix incorrect comparison of tsquery values (Teodor) + + + + + + Fix incorrect behavior of LIKE with non-ASCII characters + in single-byte encodings (Rolf Jentsch) + + + + + + Disable xmlvalidate (Tom) + + + + This function should have been removed before 8.3 release, but + was inadvertently left in the source code. It poses a small + security risk since unprivileged users could use it to read the + first few characters of any file accessible to the server. + + + + + + Fix memory leaks in certain usages of set-returning functions (Neil) + + + + + + Make encode(bytea, 'escape') convert all + high-bit-set byte values into \nnn octal + escape sequences (Tom) + + + + This is necessary to avoid encoding problems when the database + encoding is multi-byte. This change could pose compatibility issues + for applications that are expecting specific results from + encode. + + + + + + Fix input of datetime values for February 29 in years BC (Tom) + + + + The former coding was mistaken about which years were leap years. + + + + + + Fix unrecognized node type error in some variants of + ALTER OWNER (Tom) + + + + + + Avoid tablespace permissions errors in CREATE TABLE LIKE + INCLUDING INDEXES (Tom) + + + + + + Ensure pg_stat_activity.waiting flag + is cleared when a lock wait is aborted (Tom) + + + + + + Fix handling of process permissions on Windows Vista (Dave, Magnus) + + + + In particular, this fix allows starting the server as the Administrator + user. + + + + + + Update time zone data files to tzdata release 2008a + (in particular, recent Chile changes); adjust timezone abbreviation + VET (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom) + + + + + + Fix ecpg problems with arrays (Michael) + + + + + + Fix pg_ctl to correctly extract the postmaster's port + number from command-line options (Itagaki Takahiro, Tom) + + + + Previously, pg_ctl start -w could try to contact the + postmaster on the wrong port, leading to bogus reports of startup + failure. + + + + + + Use + + + This is known to be necessary when building PostgreSQL + with gcc 4.3 or later. + + + + + + Enable building contrib/uuid-ossp with MSVC (Hiroshi Saito) + + + + + + + + + + Release 8.3 + + + Release date + 2008-02-04 + + + + Overview + + + With significant new functionality and performance enhancements, + this release represents a major leap forward for + PostgreSQL. This was made possible by a growing + community that has dramatically accelerated the pace of + development. This release adds the following major features: + + + + + + + Full text search is integrated into the core database system + + + + + + Support for the SQL/XML standard, including new operators and an + XML data type + + + + + + Enumerated data types (ENUM) + + + + + + Arrays of composite types + + + + + + Universally Unique Identifier (UUID) data type + + + + + + Add control over whether NULLs sort first or last + + + + + + Updatable cursors + + + + + + Server configuration parameters can now be set on a per-function + basis + + + + + + User-defined types can now have type modifiers + + + + + + Automatically re-plan cached queries when table + definitions change or statistics are updated + + + + + + Numerous improvements in logging and statistics collection + + + + + + Support Security Service Provider Interface (SSPI) for + authentication on Windows + + + + + + Support multiple concurrent autovacuum processes, and other + autovacuum improvements + + + + + + Allow the whole PostgreSQL distribution to be compiled + with Microsoft Visual C++ + + + + + + + Major performance improvements are listed below. Most of + these enhancements are automatic and do not require user changes or + tuning: + + + + + + + Asynchronous commit delays writes to WAL during transaction commit + + + + + + Checkpoint writes can be spread over a longer time period to smooth + the I/O spike during each checkpoint + + + + + + Heap-Only Tuples (HOT) accelerate space reuse for + most UPDATEs and DELETEs + + + + + + Just-in-time background writer strategy improves disk write + efficiency + + + + + + Using non-persistent transaction IDs for read-only transactions + reduces overhead and VACUUM requirements + + + + + + Per-field and per-row storage overhead has been reduced + + + + + + Large sequential scans no longer force out frequently used + cached pages + + + + + + Concurrent large sequential scans can now share disk reads + + + + + + ORDER BY ... LIMIT can be done without sorting + + + + + + + The above items are explained in more detail in the sections below. + + + + + + Migration to Version 8.3 + + + A dump/restore using pg_dump is + required for those wishing to migrate data from any previous + release. + + + + Observe the following incompatibilities: + + + + General + + + + + Non-character data types are no longer automatically cast to + TEXT (Peter, Tom) + + + + Previously, if a non-character value was supplied to an operator or + function that requires text input, it was automatically + cast to text, for most (though not all) built-in data types. + This no longer happens: an explicit cast to text is now + required for all non-character-string types. For example, these + expressions formerly worked: + + +substr(current_date, 1, 4) +23 LIKE '2%' + + + but will now draw function does not exist and operator + does not exist errors respectively. Use an explicit cast instead: + + +substr(current_date::text, 1, 4) +23::text LIKE '2%' + + + (Of course, you can use the more verbose CAST() syntax too.) + The reason for the change is that these automatic casts too often caused + surprising behavior. An example is that in previous releases, this + expression was accepted but did not do what was expected: + + +current_date < 2017-11-17 + + + This is actually comparing a date to an integer, which should be + (and now is) rejected — but in the presence of automatic + casts both sides were cast to text and a textual comparison + was done, because the text < text operator was able + to match the expression when no other < operator could. + + + + Types char(n) and + varchar(n) still cast to text + automatically. Also, automatic casting to text still works for + inputs to the concatenation (||) operator, so long as least + one input is a character-string type. + + + + + + Full text search features from contrib/tsearch2 have + been moved into the core server, with some minor syntax changes + + + + contrib/tsearch2 now contains a compatibility + interface. + + + + + + ARRAY(SELECT ...), where the SELECT + returns no rows, now returns an empty array, rather than NULL + (Tom) + + + + + + The array type name for a base data type is no longer always the base + type's name with an underscore prefix + + + + The old naming convention is still honored when possible, but + application code should no longer depend on it. Instead + use the new pg_type.typarray column to + identify the array data type associated with a given type. + + + + + + ORDER BY ... USING operator must now + use a less-than or greater-than operator that is + defined in a btree operator class + + + + This restriction was added to prevent inconsistent results. + + + + + + SET LOCAL changes now persist until + the end of the outermost transaction, unless rolled back (Tom) + + + + Previously SET LOCAL's effects were lost + after subtransaction commit (RELEASE SAVEPOINT + or exit from a PL/pgSQL exception block). + + + + + + Commands rejected in transaction blocks are now also rejected in + multiple-statement query strings (Tom) + + + + For example, "BEGIN; DROP DATABASE; COMMIT" will now be + rejected even if submitted as a single query message. + + + + + + ROLLBACK outside a transaction block now + issues NOTICE instead of WARNING (Bruce) + + + + + + Prevent NOTIFY/LISTEN/UNLISTEN + from accepting schema-qualified names (Bruce) + + + + Formerly, these commands accepted schema.relation but + ignored the schema part, which was confusing. + + + + + + ALTER SEQUENCE no longer affects the sequence's + currval() state (Tom) + + + + + + Foreign keys now must match indexable conditions for + cross-data-type references (Tom) + + + + This improves semantic consistency and helps avoid + performance problems. + + + + + + Restrict object size functions to users who have reasonable + permissions to view such information (Tom) + + + + For example, pg_database_size() now requires + CONNECT permission, which is granted to everyone by + default. pg_tablespace_size() requires + CREATE permission in the tablespace, or is allowed if + the tablespace is the default tablespace for the database. + + + + + + Remove the undocumented !!= (not in) operator (Tom) + + + + NOT IN (SELECT ...) is the proper way to + perform this operation. + + + + + + Internal hashing functions are now more uniformly-distributed (Tom) + + + + If application code was computing and storing hash values using + internal PostgreSQL hashing functions, the hash + values must be regenerated. + + + + + + C-code conventions for handling variable-length data values + have changed (Greg Stark, Tom) + + + + The new SET_VARSIZE() macro must be used + to set the length of generated varlena values. Also, it + might be necessary to expand (de-TOAST) input values + in more cases. + + + + + + Continuous archiving no longer reports each successful archive + operation to the server logs unless DEBUG level is used + (Simon) + + + + + + + + + Configuration Parameters + + + + + + Numerous changes in administrative server parameters + + + + bgwriter_lru_percent, + bgwriter_all_percent, + bgwriter_all_maxpages, + stats_start_collector, and + stats_reset_on_server_start are removed. + redirect_stderr is renamed to + logging_collector. + stats_command_string is renamed to + track_activities. + stats_block_level and stats_row_level + are merged into track_counts. + A new boolean configuration parameter, archive_mode, + controls archiving. Autovacuum's default settings have changed. + + + + + + Remove stats_start_collector parameter (Tom) + + + + We now always start the collector process, unless UDP + socket creation fails. + + + + + + Remove stats_reset_on_server_start parameter (Tom) + + + + This was removed because pg_stat_reset() + can be used for this purpose. + + + + + + Commenting out a parameter in postgresql.conf now + causes it to revert to its default value (Joachim Wieland) + + + + Previously, commenting out an entry left the parameter's value unchanged + until the next server restart. + + + + + + + + + + Character Encodings + + + + + + Add more checks for invalidly-encoded data (Andrew) + + + + This change plugs some holes that existed in literal backslash + escape string processing and COPY escape + processing. Now the de-escaped string is rechecked to see if the + result created an invalid multi-byte character. + + + + + + Disallow database encodings that are inconsistent with the server's + locale setting (Tom) + + + + On most platforms, C locale is the only locale that + will work with any database encoding. Other locale settings imply + a specific encoding and will misbehave if the database encoding + is something different. (Typical symptoms include bogus textual + sort order and wrong results from upper() or + lower().) The server now rejects attempts to create + databases that have an incompatible encoding. + + + + + + Ensure that chr() cannot create + invalidly-encoded values (Andrew) + + + + In UTF8-encoded databases the argument of chr() is + now treated as a Unicode code point. In other multi-byte encodings + chr()'s argument must designate a 7-bit ASCII + character. Zero is no longer accepted. + ascii() has been adjusted to match. + + + + + + Adjust convert() behavior to ensure encoding + validity (Andrew) + + + + The two argument form of convert() has been + removed. The three argument form now takes a bytea + first argument and returns a bytea. To cover the + loss of functionality, three new functions have been added: + + + + + + convert_from(bytea, name) returns + text — converts the first argument from the named + encoding to the database encoding + + + + + + convert_to(text, name) returns + bytea — converts the first argument from the + database encoding to the named encoding + + + + + + length(bytea, name) returns + integer — gives the length of the first + argument in characters in the named encoding + + + + + + + + Remove convert(argument USING conversion_name) + (Andrew) + + + + Its behavior did not match the SQL standard. + + + + + + Make JOHAB encoding client-only (Tatsuo) + + + + JOHAB is not safe as a server-side encoding. + + + + + + + + + + + Changes + + + Below you will find a detailed account of the + changes between PostgreSQL 8.3 and + the previous major release. + + + + Performance + + + + + Asynchronous commit delays writes to WAL during transaction commit + (Simon) + + + + This feature dramatically increases performance for short data-modifying + transactions. The disadvantage is that because disk writes are delayed, + if the database or operating system crashes before data is written to + the disk, committed data will be lost. This feature is useful for + applications that can accept some data loss. Unlike turning off + fsync, using asynchronous commit does not put + database consistency at risk; the worst case is that after a crash the + last few reportedly-committed transactions might not be committed after + all. + This feature is enabled by turning off synchronous_commit + (which can be done per-session or per-transaction, if some transactions + are critical and others are not). + wal_writer_delay can be adjusted to control the maximum + delay before transactions actually reach disk. + + + + + + Checkpoint writes can be spread over a longer time period to smooth + the I/O spike during each checkpoint (Itagaki Takahiro and Heikki + Linnakangas) + + + + Previously all modified buffers were forced to disk as quickly as + possible during a + checkpoint, causing an I/O spike that decreased server performance. + This new approach spreads out disk writes during checkpoints, + reducing peak I/O usage. (User-requested and shutdown checkpoints + are still written as quickly as possible.) + + + + + + Heap-Only Tuples (HOT) accelerate space reuse for most + UPDATEs and DELETEs (Pavan Deolasee, with + ideas from many others) + + + + UPDATEs and DELETEs leave dead tuples + behind, as do failed INSERTs. Previously only + VACUUM could reclaim space taken by dead tuples. With + HOT dead tuple space can be automatically reclaimed at + the time of INSERT or UPDATE if no changes + are made to indexed columns. This allows for more consistent + performance. Also, HOT avoids adding duplicate index + entries. + + + + + + Just-in-time background writer strategy improves disk write + efficiency (Greg Smith, Itagaki Takahiro) + + + + This greatly reduces the need for manual tuning of the background + writer. + + + + + + Per-field and per-row storage overhead have been reduced + (Greg Stark, Heikki Linnakangas) + + + + Variable-length data types with data values less than 128 bytes long + will see a storage decrease of 3 to 6 bytes. For example, two adjacent + char(1) fields now use 4 bytes instead of 16. Row headers + are also 4 bytes shorter than before. + + + + + + Using non-persistent transaction IDs for read-only transactions + reduces overhead and VACUUM requirements (Florian Pflug) + + + + Non-persistent transaction IDs do not increment the global + transaction counter. Therefore, they reduce the load on + pg_clog and increase the time between forced + vacuums to prevent transaction ID wraparound. + Other performance + improvements were also made that should improve concurrency. + + + + + + Avoid incrementing the command counter after a read-only command (Tom) + + + + There was formerly a hard limit of 232 + (4 billion) commands per transaction. Now only commands that + actually changed the database count, so while this limit still + exists, it should be significantly less annoying. + + + + + + Create a dedicated WAL writer process to off-load + work from backends (Simon) + + + + + + Skip unnecessary WAL writes for CLUSTER and + COPY (Simon) + + + + Unless WAL archiving is enabled, the system now avoids WAL writes + for CLUSTER and just fsync()s the + table at the end of the command. It also does the same for + COPY if the table was created in the same + transaction. + + + + + + Large sequential scans no longer force out frequently used + cached pages (Simon, Heikki, Tom) + + + + + + Concurrent large sequential scans can now share disk reads (Jeff Davis) + + + + This is accomplished by starting the new sequential scan in the + middle of the table (where another sequential scan is already + in-progress) and wrapping around to the beginning to finish. This + can affect the order of returned rows in a query that does not + specify ORDER BY. The synchronize_seqscans + configuration parameter can be used to disable this if necessary. + + + + + + ORDER BY ... LIMIT can be done without sorting + (Greg Stark) + + + + This is done by sequentially scanning the table and tracking just + the top N candidate rows, rather than performing a + full sort of the entire table. This is useful when there is no + matching index and the LIMIT is not large. + + + + + + Put a rate limit on messages sent to the statistics + collector by backends + (Tom) + + + + This reduces overhead for short transactions, but might sometimes + increase the delay before statistics are tallied. + + + + + + Improve hash join performance for cases with many NULLs (Tom) + + + + + + Speed up operator lookup for cases with non-exact datatype matches (Tom) + + + + + + + + + Server + + + + + Autovacuum is now enabled by default (Alvaro) + + + + Several changes were made to eliminate disadvantages of having + autovacuum enabled, thereby justifying the change in default. + Several other autovacuum parameter defaults were also modified. + + + + + + Support multiple concurrent autovacuum processes (Alvaro, Itagaki + Takahiro) + + + + This allows multiple vacuums to run concurrently. This prevents + vacuuming of a large table from delaying vacuuming of smaller tables. + + + + + + Automatically re-plan cached queries when table + definitions change or statistics are updated (Tom) + + + + Previously PL/PgSQL functions that referenced temporary tables + would fail if the temporary table was dropped and recreated + between function invocations, unless EXECUTE was + used. This improvement fixes that problem and many related issues. + + + + + + Add a temp_tablespaces parameter to control + the tablespaces for temporary tables and files (Jaime Casanova, + Albert Cervera, Bernd Helmle) + + + + This parameter defines a list of tablespaces to be used. This + enables spreading the I/O load across multiple tablespaces. A random + tablespace is chosen each time a temporary object is created. + Temporary files are no longer stored in per-database + pgsql_tmp/ directories but in per-tablespace + directories. + + + + + + Place temporary tables' TOAST tables in special schemas named + pg_toast_temp_nnn (Tom) + + + + This allows low-level code to recognize these tables as temporary, + which enables various optimizations such as not WAL-logging changes + and using local rather than shared buffers for access. This also + fixes a bug wherein backends unexpectedly held open file references + to temporary TOAST tables. + + + + + + Fix problem that a constant flow of new connection requests could + indefinitely delay the postmaster from completing a shutdown or + a crash restart (Tom) + + + + + + Guard against a very-low-probability data loss scenario by preventing + re-use of a deleted table's relfilenode until after the next + checkpoint (Heikki) + + + + + + Fix CREATE CONSTRAINT TRIGGER + to convert old-style foreign key trigger definitions into regular + foreign key constraints (Tom) + + + + This will ease porting of foreign key constraints carried forward from + pre-7.3 databases, if they were never converted using + contrib/adddepend. + + + + + + Fix DEFAULT NULL to override inherited defaults (Tom) + + + + DEFAULT NULL was formerly considered a noise phrase, but it + should (and now does) override non-null defaults that would otherwise + be inherited from a parent table or domain. + + + + + + Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004 (Tatsuo) + + + + These new encodings can be converted to and from UTF-8. + + + + + + Change server startup log message from database system is + ready to database system is ready to accept + connections, and adjust its timing + + + + The message now appears only when the postmaster is really ready + to accept connections. + + + + + + + + + Monitoring + + + + + Add log_autovacuum_min_duration parameter to + support configurable logging of autovacuum activity (Simon, Alvaro) + + + + + + Add log_lock_waits parameter to log lock waiting + (Simon) + + + + + + Add log_temp_files parameter to log temporary + file usage (Bill Moran) + + + + + + Add log_checkpoints parameter to improve logging + of checkpoints (Greg Smith, Heikki) + + + + + + log_line_prefix now supports + %s and %c escapes in all + processes (Andrew) + + + + Previously these escapes worked only for user sessions, not for + background database processes. + + + + + + Add log_restartpoints to control logging of + point-in-time recovery restart points (Simon) + + + + + + Last transaction end time is now logged at end of recovery and at + each logged restart point (Simon) + + + + + + Autovacuum now reports its activity start time in + pg_stat_activity (Tom) + + + + + + Allow server log output in comma-separated value (CSV) format (Arul + Shaji, Greg Smith, Andrew Dunstan) + + + + CSV-format log files can easily be loaded into a database table for + subsequent analysis. + + + + + + Use PostgreSQL-supplied timezone support for formatting timestamps + displayed in the server log (Tom) + + + + This avoids Windows-specific problems with localized time zone + names that are in the wrong encoding. There is a new + log_timezone parameter that controls the timezone + used in log messages, independently of the client-visible + timezone parameter. + + + + + + New system view pg_stat_bgwriter displays + statistics about background writer activity (Magnus) + + + + + + Add new columns for database-wide tuple statistics to + pg_stat_database (Magnus) + + + + + + Add an xact_start (transaction start time) column to + pg_stat_activity (Neil) + + + + This makes it easier to identify long-running transactions. + + + + + + Add n_live_tuples and n_dead_tuples columns + to pg_stat_all_tables and related views (Glen + Parker) + + + + + + Merge stats_block_level and stats_row_level + parameters into a single parameter track_counts, which + controls all messages sent to the statistics collector process + (Tom) + + + + + + Rename stats_command_string parameter to + track_activities (Tom) + + + + + + Fix statistical counting of live and dead tuples to recognize that + committed and aborted transactions have different effects (Tom) + + + + + + + + + Authentication + + + + + Support Security Service Provider Interface (SSPI) for + authentication on Windows (Magnus) + + + + + + Support GSSAPI authentication (Henry Hotz, Magnus) + + + + This should be preferred to native Kerberos authentication because + GSSAPI is an industry standard. + + + + + + Support a global SSL configuration file (Victor Wagner) + + + + + + Add ssl_ciphers parameter to control accepted SSL ciphers + (Victor Wagner) + + + + + + Add a Kerberos realm parameter, krb_realm (Magnus) + + + + + + + + + Write-Ahead Log (<acronym>WAL</>) and Continuous Archiving + + + + + Change the timestamps recorded in transaction WAL records from + time_t to TimestampTz representation (Tom) + + + + This provides sub-second resolution in WAL, which can be useful for + point-in-time recovery. + + + + + + Reduce WAL disk space needed by warm standby servers (Simon) + + + + This change allows a warm standby server to pass the name of the earliest + still-needed WAL file to the recovery script, allowing automatic removal + of no-longer-needed WAL files. This is done using %r in + the restore_command parameter of + recovery.conf. + + + + + + New boolean configuration parameter, archive_mode, + controls archiving (Simon) + + + + Previously setting archive_command to an empty string + turned off archiving. Now archive_mode turns archiving + on and off, independently of archive_command. This is + useful for stopping archiving temporarily. + + + + + + + + + Queries + + + + + Full text search is integrated into the core database + system (Teodor, Oleg) + + + + Text search has been improved, moved into the core code, and is now + installed by default. contrib/tsearch2 now contains + a compatibility interface. + + + + + + Add control over whether NULLs sort first or last (Teodor, Tom) + + + + The syntax is ORDER BY ... NULLS FIRST/LAST. + + + + + + Allow per-column ascending/descending (ASC/DESC) + ordering options for indexes (Teodor, Tom) + + + + Previously a query using ORDER BY with mixed + ASC/DESC specifiers could not fully use + an index. Now an index can be fully used in such cases if the + index was created with matching + ASC/DESC specifications. + NULL sort order within an index can be controlled, too. + + + + + + Allow col IS NULL to use an index (Teodor) + + + + + + Updatable cursors (Arul Shaji, Tom) + + + + This eliminates the need to reference a primary key to + UPDATE or DELETE rows returned by a cursor. + The syntax is UPDATE/DELETE WHERE CURRENT OF. + + + + + + Allow FOR UPDATE in cursors (Arul Shaji, Tom) + + + + + + Create a general mechanism that supports casts to and from the + standard string types (TEXT, VARCHAR, + CHAR) for every datatype, by + invoking the datatype's I/O functions (Tom) + + + + Previously, such casts were available only for types that had + specialized function(s) for the purpose. + These new casts are assignment-only in the to-string direction, + explicit-only in the other direction, and therefore should create no + surprising behavior. + + + + + + Allow UNION and related constructs to return a domain + type, when all inputs are of that domain type (Tom) + + + + Formerly, the output would be considered to be of the domain's base + type. + + + + + + Allow limited hashing when using two different data types (Tom) + + + + This allows hash joins, hash indexes, hashed subplans, and hash + aggregation to be used in situations involving cross-data-type + comparisons, if the data types have compatible hash functions. + Currently, cross-data-type hashing support exists for + smallint/integer/bigint, + and for float4/float8. + + + + + + Improve optimizer logic for detecting when variables are equal + in a WHERE clause (Tom) + + + + This allows mergejoins to work with descending sort orders, and + improves recognition of redundant sort columns. + + + + + + Improve performance when planning large inheritance trees in + cases where most tables are excluded by constraints (Tom) + + + + + + + + + Object Manipulation + + + + + + Arrays of composite types (David Fetter, Andrew, Tom) + + + + In addition to arrays of explicitly-declared composite types, + arrays of the rowtypes of regular tables and views are now + supported, except for rowtypes of system catalogs, sequences, and TOAST + tables. + + + + + + + Server configuration parameters can now be set on a per-function + basis (Tom) + + + + For example, functions can now set their own + search_path to prevent unexpected behavior if a + different search_path exists at run-time. Security + definer functions should set search_path to + avoid security loopholes. + + + + + + CREATE/ALTER FUNCTION now supports + COST and ROWS options (Tom) + + + + COST allows specification of the cost of a + function call. ROWS allows specification of + the average number or rows returned by a set-returning function. + These values are used by the optimizer in choosing the best plan. + + + + + + Implement CREATE TABLE LIKE ... INCLUDING + INDEXES (Trevor Hardcastle, Nikhil Sontakke, Neil) + + + + + + Allow CREATE INDEX CONCURRENTLY to ignore + transactions in other databases (Simon) + + + + + + Add ALTER VIEW ... RENAME TO and ALTER + SEQUENCE ... RENAME TO (David Fetter, Neil) + + + + Previously this could only be done via ALTER TABLE ... + RENAME TO. + + + + + + Make CREATE/DROP/RENAME DATABASE wait briefly for + conflicting backends to exit before failing (Tom) + + + + This increases the likelihood that these commands will succeed. + + + + + + Allow triggers and rules to be deactivated in groups using a + configuration parameter, for replication purposes (Jan) + + + + This allows replication systems to disable triggers and rewrite + rules as a group without modifying the system catalogs directly. + The behavior is controlled by ALTER TABLE and a new + parameter session_replication_role. + + + + + + User-defined types can now have type modifiers (Teodor, Tom) + + + + This allows a user-defined type to take a modifier, like + ssnum(7). Previously only built-in + data types could have modifiers. + + + + + + + + + Utility Commands + + + + + Non-superuser database owners now are able to add trusted procedural + languages to their databases by default (Jeremy Drake) + + + + While this is reasonably safe, some administrators might wish to + revoke the privilege. It is controlled by + pg_pltemplate.tmpldbacreate. + + + + + + Allow a session's current parameter setting to be used as the + default for future sessions (Tom) + + + + This is done with SET ... FROM CURRENT in + CREATE/ALTER FUNCTION, ALTER + DATABASE, or ALTER ROLE. + + + + + + Implement new commands DISCARD ALL, + DISCARD PLANS, DISCARD + TEMPORARY, CLOSE ALL, and + DEALLOCATE ALL (Marko Kreen, Neil) + + + + These commands simplify resetting a database session to its initial + state, and are particularly useful for connection-pooling software. + + + + + + Make CLUSTER MVCC-safe (Heikki Linnakangas) + + + + Formerly, CLUSTER would discard all tuples + that were committed dead, even if there were still transactions + that should be able to see them under MVCC visibility rules. + + + + + + Add new CLUSTER syntax: CLUSTER + table USING index + (Holger Schurig) + + + + The old CLUSTER syntax is still supported, but + the new form is considered more logical. + + + + + + Fix EXPLAIN so it can show complex plans + more accurately (Tom) + + + + References to subplan outputs are now always shown correctly, + instead of using ?columnN? + for complicated cases. + + + + + + Limit the amount of information reported when a user is dropped + (Alvaro) + + + + Previously, dropping (or attempting to drop) a user who owned many + objects could result in large NOTICE or + ERROR messages listing all these objects; this + caused problems for some client applications. The length of the + message is now limited, although a full list is still sent to the + server log. + + + + + + + + + Data Types + + + + + Support for the SQL/XML standard, including new operators and an + XML data type (Nikolay Samokhvalov, Pavel Stehule, Peter) + + + + + + Enumerated data types (ENUM) (Tom Dunstan) + + + + This feature provides convenient support for fields that have a + small, fixed set of allowed values. An example of creating an + ENUM type is + CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy'). + + + + + + Universally Unique Identifier (UUID) data type (Gevik + Babakhani, Neil) + + + + This closely matches RFC 4122. + + + + + + Widen the MONEY data type to 64 bits (D'Arcy Cain) + + + + This greatly increases the range of supported MONEY + values. + + + + + + Fix float4/float8 to handle + Infinity and NAN (Not A Number) + consistently (Bruce) + + + + The code formerly was not consistent about distinguishing + Infinity from overflow conditions. + + + + + + Allow leading and trailing whitespace during input of + boolean values (Neil) + + + + + + Prevent COPY from using digits and lowercase letters as + delimiters (Tom) + + + + + + + + + Functions + + + + + Add new regular expression functions + regexp_matches(), + regexp_split_to_array(), and + regexp_split_to_table() (Jeremy Drake, Neil) + + + + These functions provide extraction of regular expression + subexpressions and allow splitting a string using a POSIX regular + expression. + + + + + + Add lo_truncate() for large object truncation + (Kris Jurka) + + + + + + Implement width_bucket() for the float8 + data type (Neil) + + + + + + Add pg_stat_clear_snapshot() to discard + statistics snapshots collected during the current transaction + (Tom) + + + + The first request for statistics in a transaction takes a statistics + snapshot that does not change during the transaction. This function + allows the snapshot to be discarded and a new snapshot loaded during + the next statistics query. This is particularly useful for PL/PgSQL + functions, which are confined to a single transaction. + + + + + + Add isodow option to EXTRACT() and + date_part() (Bruce) + + + + This returns the day of the week, with Sunday as seven. + (dow returns Sunday as zero.) + + + + + + Add ID (ISO day of week) and IDDD (ISO + day of year) format codes for to_char(), + to_date(), and to_timestamp() (Brendan + Jurd) + + + + + + Make to_timestamp() and to_date() + assume TM (trim) option for potentially + variable-width fields (Bruce) + + + + This matches Oracle's behavior. + + + + + + Fix off-by-one conversion error in + to_date()/to_timestamp() + D (non-ISO day of week) fields (Bruce) + + + + + + Make setseed() return void, rather than a + useless integer value (Neil) + + + + + + Add a hash function for NUMERIC (Neil) + + + + This allows hash indexes and hash-based plans to be used with + NUMERIC columns. + + + + + + Improve efficiency of + LIKE/ILIKE, especially for + multi-byte character sets like UTF-8 (Andrew, Itagaki Takahiro) + + + + + + Make currtid() functions require + SELECT privileges on the target table (Tom) + + + + + + Add several txid_*() functions to query + active transaction IDs (Jan) + + + + This is useful for various replication solutions. + + + + + + + + + PL/PgSQL Server-Side Language + + + + + Add scrollable cursor support, including directional control in + FETCH (Pavel Stehule) + + + + + + Allow IN as an alternative to + FROM in PL/PgSQL's FETCH + statement, for consistency with the backend's + FETCH command (Pavel Stehule) + + + + + + Add MOVE to PL/PgSQL (Magnus, Pavel Stehule, + Neil) + + + + + + Implement RETURN QUERY (Pavel Stehule, Neil) + + + + This adds convenient syntax for PL/PgSQL set-returning functions + that want to return the result of a query. RETURN QUERY + is easier and more efficient than a loop + around RETURN NEXT. + + + + + + Allow function parameter names to be qualified with the + function's name (Tom) + + + + For example, myfunc.myvar. This is particularly + useful for specifying variables in a query where the variable + name might match a column name. + + + + + + Make qualification of variables with block labels work properly (Tom) + + + + Formerly, outer-level block labels could unexpectedly interfere with + recognition of inner-level record or row references. + + + + + + Tighten requirements for FOR loop + STEP values (Tom) + + + + Prevent non-positive STEP values, and handle + loop overflows. + + + + + + Improve accuracy when reporting syntax error locations (Tom) + + + + + + + + + Other Server-Side Languages + + + + + Allow type-name arguments to PL/Perl + spi_prepare() to be data type aliases in + addition to names found in pg_type (Andrew) + + + + + + Allow type-name arguments to PL/Python + plpy.prepare() to be data type aliases in + addition to names found in pg_type (Andrew) + + + + + + Allow type-name arguments to PL/Tcl spi_prepare to + be data type aliases in addition to names found in + pg_type (Andrew) + + + + + + Enable PL/PythonU to compile on Python 2.5 (Marko Kreen) + + + + + + Support a true PL/Python boolean type in compatible Python versions + (Python 2.3 and later) (Marko Kreen) + + + + + + Fix PL/Tcl problems with thread-enabled libtcl spawning + multiple threads within the backend (Steve Marshall, Paul Bayer, + Doug Knight) + + + + This caused all sorts of unpleasantness. + + + + + + + + + <link linkend="APP-PSQL"><application>psql</></link> + + + + + List disabled triggers separately in \d output + (Brendan Jurd) + + + + + + In \d patterns, always match $ + literally (Tom) + + + + + + Show aggregate return types in \da output + (Greg Sabino Mullane) + + + + + + Add the function's volatility status to the output of + \df+ (Neil) + + + + + + Add \prompt capability (Chad Wagner) + + + + + + Allow \pset, \t, and + \x to specify on or off, + rather than just toggling (Chad Wagner) + + + + + + Add \sleep capability (Jan) + + + + + + Enable \timing output for \copy (Andrew) + + + + + + Improve \timing resolution on Windows + (Itagaki Takahiro) + + + + + + Flush \o output after each backslash command (Tom) + + + + + + Correctly detect and report errors while reading a -f + input file (Peter) + + + + + + Remove -u option (this option has long been deprecated) + (Tom) + + + + + + + + + <link linkend="APP-PGDUMP"><application>pg_dump</></link> + + + + + Add --tablespaces-only and --roles-only + options to pg_dumpall (Dave Page) + + + + + + Add an output file option to + pg_dumpall (Dave Page) + + + + This is primarily useful on Windows, where output redirection of + child pg_dump processes does not work. + + + + + + Allow pg_dumpall to accept an initial-connection + database name rather than the default + template1 (Dave Page) + + + + + + In -n and -t switches, always match + $ literally (Tom) + + + + + + Improve performance when a database has thousands of objects (Tom) + + + + + + Remove -u option (this option has long been deprecated) + (Tom) + + + + + + + + + Other Client Applications + + + + + In initdb, allow the location of the + pg_xlog directory to be specified + (Euler Taveira de Oliveira) + + + + + + Enable server core dump generation in pg_regress + on supported operating systems (Andrew) + + + + + + Add a -t (timeout) parameter to pg_ctl + (Bruce) + + + + This controls how long pg_ctl will wait when waiting + for server startup or shutdown. Formerly the timeout was hard-wired + as 60 seconds. + + + + + + Add a pg_ctl option to control generation + of server core dumps (Andrew) + + + + + + Allow Control-C to cancel clusterdb, + reindexdb, and vacuumdb (Itagaki + Takahiro, Magnus) + + + + + + Suppress command tag output for createdb, + createuser, dropdb, and + dropuser (Peter) + + + + The --quiet option is ignored and will be removed in 8.4. + Progress messages when acting on all databases now go to stdout + instead of stderr because they are not actually errors. + + + + + + + + + <link linkend="libpq"><application>libpq</></link> + + + + + Interpret the dbName parameter of + PQsetdbLogin() as a conninfo string if + it contains an equals sign (Andrew) + + + + This allows use of conninfo strings in client + programs that still use PQsetdbLogin(). + + + + + + Support a global SSL configuration file (Victor + Wagner) + + + + + + Add environment variable PGSSLKEY to control + SSL hardware keys (Victor Wagner) + + + + + + Add lo_truncate() for large object + truncation (Kris Jurka) + + + + + + Add PQconnectionNeedsPassword() that returns + true if the server required a password but none was supplied + (Joe Conway, Tom) + + + + If this returns true after a failed connection attempt, a client + application should prompt the user for a password. In the past + applications have had to check for a specific error message string to + decide whether a password is needed; that approach is now + deprecated. + + + + + + Add PQconnectionUsedPassword() that returns + true if the supplied password was actually used + (Joe Conway, Tom) + + + + This is useful in some security contexts where it is important + to know whether a user-supplied password is actually valid. + + + + + + + + + <link linkend="ecpg"><application>ecpg</></link> + + + + + Use V3 frontend/backend protocol (Michael) + + + + This adds support for server-side prepared statements. + + + + + + Use native threads, instead of pthreads, on Windows (Magnus) + + + + + + Improve thread-safety of ecpglib (Itagaki Takahiro) + + + + + + Make the ecpg libraries export only necessary API symbols (Michael) + + + + + + + + + <application>Windows</> Port + + + + + Allow the whole PostgreSQL distribution to be compiled + with Microsoft Visual C++ (Magnus and others) + + + + This allows Windows-based developers to use familiar development + and debugging tools. + Windows executables made with Visual C++ might also have better + stability and performance than those made with other tool sets. + The client-only Visual C++ build scripts have been removed. + + + + + + Drastically reduce postmaster's memory usage when it has many child + processes (Magnus) + + + + + + Allow regression tests to be started by an administrative + user (Magnus) + + + + + + Add native shared memory implementation (Magnus) + + + + + + + + + Server Programming Interface (<acronym>SPI</>) + + + + + Add cursor-related functionality in SPI (Pavel Stehule) + + + + Allow access to the cursor-related planning options, and add + FETCH/MOVE routines. + + + + + + Allow execution of cursor commands through + SPI_execute (Tom) + + + + The macro SPI_ERROR_CURSOR still exists but will + never be returned. + + + + + + SPI plan pointers are now declared as SPIPlanPtr instead of + void * (Tom) + + + + This does not break application code, but switching is + recommended to help catch simple programming mistakes. + + + + + + + + + Build Options + + + + + Add configure option --enable-profiling + to enable code profiling (works only with gcc) + (Korry Douglas and Nikhil Sontakke) + + + + + + Add configure option --with-system-tzdata + to use the operating system's time zone database (Peter) + + + + + + Fix PGXS so extensions can be built against PostgreSQL + installations whose pg_config program does not + appear first in the PATH (Tom) + + + + + + Support gmake draft when building the + SGML documentation (Bruce) + + + + Unless draft is used, the documentation build will + now be repeated if necessary to ensure the index is up-to-date. + + + + + + + + + Source Code + + + + + Rename macro DLLIMPORT to PGDLLIMPORT to + avoid conflicting with third party includes (like Tcl) that + define DLLIMPORT (Magnus) + + + + + + Create operator families to improve planning of + queries involving cross-data-type comparisons (Tom) + + + + + + Update GIN extractQuery() API to allow signalling + that nothing can satisfy the query (Teodor) + + + + + + Move NAMEDATALEN definition from + postgres_ext.h to pg_config_manual.h + (Peter) + + + + + + Provide strlcpy() and + strlcat() on all platforms, and replace + error-prone uses of strncpy(), + strncat(), etc (Peter) + + + + + + Create hooks to let an external plugin monitor (or even replace) the + planner and create plans for hypothetical situations (Gurjeet + Singh, Tom) + + + + + + Create a function variable join_search_hook to let plugins + override the join search order portion of the planner (Julius + Stroffek) + + + + + + Add tas() support for Renesas' M32R processor + (Kazuhiro Inaoka) + + + + + + quote_identifier() and + pg_dump no longer quote keywords that are + unreserved according to the grammar (Tom) + + + + + + Change the on-disk representation of the NUMERIC + data type so that the sign_dscale word comes + before the weight (Tom) + + + + + + Use SYSV semaphores rather than POSIX on Darwin + >= 6.0, i.e., OS X 10.2 and up (Chris Marcellino) + + + + + + Add acronym and NFS documentation + sections (Bruce) + + + + + + "Postgres" is now documented as an accepted alias for + "PostgreSQL" (Peter) + + + + + + Add documentation about preventing database server spoofing when + the server is down (Bruce) + + + + + + + + + Contrib + + + + + Move contrib README content into the + main PostgreSQL documentation (Albert Cervera i + Areny) + + + + + + Add contrib/pageinspect module for low-level + page inspection (Simon, Heikki) + + + + + + Add contrib/pg_standby module for controlling + warm standby operation (Simon) + + + + + + Add contrib/uuid-ossp module for generating + UUID values using the OSSP UUID library (Peter) + + + + Use configure + --with-ossp-uuid to activate. This takes + advantage of the new UUID builtin type. + + + + + + Add contrib/dict_int, + contrib/dict_xsyn, and + contrib/test_parser modules to provide + sample add-on text search dictionary templates and parsers + (Sergey Karpov) + + + + + + Allow contrib/pgbench to set the fillfactor (Pavan + Deolasee) + + + + + + Add timestamps to contrib/pgbench -l + (Greg Smith) + + + + + + Add usage count statistics to + contrib/pgbuffercache (Greg Smith) + + + + + + Add GIN support for contrib/hstore (Teodor) + + + + + + Add GIN support for contrib/pg_trgm (Guillaume Smet, Teodor) + + + + + + Update OS/X startup scripts in + contrib/start-scripts (Mark Cotner, David + Fetter) + + + + + + Restrict pgrowlocks() and + dblink_get_pkey() to users who have + SELECT privilege on the target table (Tom) + + + + + + Restrict contrib/pgstattuple functions to + superusers (Tom) + + + + + + contrib/xml2 is deprecated and planned for + removal in 8.4 (Peter) + + + + The new XML support in core PostgreSQL supersedes this module. + + + + + + + + diff --git a/doc/src/sgml/release-8.4.sgml b/doc/src/sgml/release-8.4.sgml new file mode 100644 index 0000000000..be3d1d9cb0 --- /dev/null +++ b/doc/src/sgml/release-8.4.sgml @@ -0,0 +1,3208 @@ + + + + + Release 8.4 + + + Release date + 2009-??-??, ITEMS CURRENT AS OF 2009-04-08 + + + + Overview + + + After many years of development, PostgreSQL has + become feature-complete in many areas. This release shows a + targeted approach to adding features (e.g., authentication, + monitoring, space reuse), and adds capabilities defined in the + later SQL standards. The major areas of enhancement are: + + + + + + + + + Windowing Functions + + + + + + Common Table Expressions and Recursive Joins + + + + + + Default and variadic parameters for functions + + + + + + Parallel Restore + + + + + + Column Permissions + + + + + + Per-database locale settings + + + + + + Improved hash indexes + + + + + + Improved join performance for EXISTS and NOT EXISTS queries + + + + + + Easier-to-use Warm Standby + + + + + + Automatic sizing of the Free Space Map + + + + + + Visibility Map (greatly reduces vacuum overhead for slowly-changing tables) + + + + + + Version-aware psql (backslash commands work against older servers) + + + + + + Support SSL certificates for user authentication + + + + + + Per-function runtime statistics + + + + + + Easy editing of functions in psql + + + + + + New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin + + + + + + + The above items are explained in more detail in the sections below. + + + + + + Migration to Version 8.4 + + + A dump/restore using pg_dump is + required for those wishing to migrate data from any previous + release. + + + + Observe the following incompatibilities: + + + + General + + + + + Use 64-bit integer datetimes by default (Neil Conway) + + + + Previously this was selected by configure's + + + + + + Remove ipcclean utility command (Bruce) + + + + The utility only worked on a few platforms. Users should use + their operating system tools instead. + + + + + + + + + Server Settings + + + + + Change default setting for + log_min_messages to warning (previously + it was notice) to reduce log file volume (Tom) + + + + + + Make debug_print_parse, debug_print_rewritten, + and debug_print_plan + output appear at LOG message level, not + DEBUG1 as formerly (Tom) + + + + + + Make debug_pretty_print default to on (Tom) + + + + + + Remove explain_pretty_print parameter (no longer needed) (Tom) + + + + + + Make log_temp_files settable by superusers only, like other + logging options (Simon Riggs) + + + + + + Remove automatic appending of the epoch timestamp when no % + escapes are present in log_filename (Robert Haas) + + + + This change was made because some users wanted a fixed log filename, + for use with an external log rotation tool. + + + + + + Remove log_restartpoints from recovery.conf; + instead use log_checkpoints (Simon) + + + + + + Remove support for the (insecure) crypt authentication method + (Magnus) + + + + This effectively obsoletes pre-PostgreSQL 7.2 client + libraries, as there is no longer any non-plaintext password method that + they can use. + + + + + + Remove krb_realm and krb_server_hostname; + these are now set in pg_hba.conf instead (Magnus) + + + + + + There are also significant changes in pg_hba.conf, + as described below. + + + + + + + + + Queries + + + + + + Change TRUNCATE and LOCK to + apply to child tables of the specified table(s) (Peter) + + + + These commands now accept an ONLY option that prevents + processing child tables; this option must be used if the old + behavior is needed. + + + + + + SELECT DISTINCT and + UNION/INTERSECT/EXCEPT + no longer always produce sorted output (Tom) + + + + Previously, these types of queries always removed duplicate rows + by means of Sort/Unique processing (i.e., sort then remove adjacent + duplicates). Now they can be implemented by hashing, which will not + produce sorted output. If an application relied on the output being + in sorted order, the recommended fix is to add an ORDER BY + clause. As a short-term workaround, the previous behavior can be + restored by disabling enable_hashagg, but that is a very + performance-expensive fix. SELECT DISTINCT ON never uses + hashing, however, so its behavior is unchanged. + + + + + + Force child tables to inherit CHECK constraints from parents + (Alex Hunsaker, Nikhil Sontakke, Tom) + + + + Formerly it was possible to drop such a constraint from a child + table, allowing rows that violate the constraint to be visible + when scanning the parent table. This was deemed inconsistent, + as well as contrary to SQL standard. + + + + + + Disallow negative LIMIT or OFFSET + values, rather than treating them as zero (Simon) + + + + + + Disallow LOCK TABLE outside a transaction block + (Tom) + + + + Such an operation is useless because the lock would be released + immediately. + + + + + + Sequences now contain an additional start_value column + (Zoltan Boszormenyi) + + + + This supports ALTER SEQUENCE ... RESTART. + + + + + + + + + + Functions and Operators + + + + + + Make numeric zero raised to a fractional power return + 0, rather than throwing an error, and make + numeric zero raised to the zero power return 1, + rather than error (Bruce) + + + + This matches the longstanding float8 behavior. + + + + + + Allow unary minus of floating-point values to produce minus zero (Tom) + + + + The changed behavior is more IEEE-standard + compliant. + + + + + + Throw an error if an escape character is the last character in + a LIKE pattern (i.e., it has nothing to escape) (Tom) + + + + Previously, such an escape character was silently ignored, + thus possibly masking application logic errors. + + + + + + Remove ~=~ and ~<>~ operators + formerly used for LIKE index comparisons (Tom) + + + + Pattern indexes now use the regular equality operator. + + + + + + xpath() now passes its arguments to libxml + without any changes (Andrew) + + + + This means that the XML argument must be a well-formed XML document. + The previous coding attempted to allow XML fragments, but it did not + work well. + + + + + + Make xmlelement() format attribute values just like + content values (Peter) + + + + Previously, attribute values were formatted according to the + normal SQL output behavior, which is sometimes at odds with + XML rules. + + + + + + Adopt a faster algorithm for hash functions (Kenneth Marshall, + based on work of Bob Jenkins) + + + + Many of the built-in hash functions now deliver different results on + little-endian and big-endian platforms. + + + + + + + Temporal Functions and Operators + + + + + + DateStyle no longer controls interval output + formatting; instead there is a new variable IntervalStyle + (Ron Mayer) + + + + + + Improve consistency of handling of fractional seconds in + timestamp and interval output (Ron Mayer) + + + + This may result in displaying a different number of fractional + digits than before, or rounding instead of truncating. + + + + + + Make to_char()'s localized month/day names depend + on LC_TIME, not LC_MESSAGES (Euler + Taveira de Oliveira) + + + + + + Cause to_date() and to_timestamp() + to more consistently report errors for invalid input (Brendan + Jurd) + + + + Previous versions would often ignore or silently misread input + that did not match the format string. Such cases will now + result in an error. + + + + + + Fix to_timestamp() to not require upper/lower case + matching for meridian (AM/PM) and era + (BC/AD) format designations (Brendan + Jurd) + + + + For example, input value ad now matches the format + string AD. + + + + + + + + + + + + + Changes + + + Below you will find a detailed account of the changes between + PostgreSQL 8.4 and the previous major + release. + + + + Performance + + + + + Improve optimizer statistics calculations (Jan Urbanski, Tom) + + + + In particular, estimates for full-text-search operators are + greatly improved. + + + + + + Allow SELECT DISTINCT and + UNION/INTERSECT/EXCEPT to + use hashing (Tom) + + + + This means that these types of queries no longer automatically + produce sorted output. + + + + + + Create explicit concepts of semi-joins and anti-joins (Tom) + + + + This work formalizes our previous ad-hoc treatment of IN + (SELECT ...) clauses, and extends it to EXISTS and + NOT EXISTS clauses. It should result in significantly + better planning of EXISTS and NOT EXISTS + queries. In general, logically equivalent IN and + EXISTS clauses should now have similar performance, + whereas previously IN often won. + + + + + + Improve optimization of sub-selects beneath outer joins (Tom) + + + + Formerly, a sub-select or view could not be optimized very well if it + appeared within the nullable side of an outer join and contained + non-strict expressions (for instance, constants) in its result list. + + + + + + Improve the performance of text_position() and + related functions by using Boyer-Moore-Horspool searching (David + Rowley) + + + + This is particularly helpful for long search patterns. + + + + + + Reduce I/O load of writing the statistics collection file + by writing the file only when requested (Martin Pihlak) + + + + + + Improve performance for bulk inserts (Robert Haas, Simon) + + + + + + Increase the default value of default_statistics_target + from 10 to 100 (Greg Sabino Mullane, + Tom) + + + + The maximum value was also increased from 1000 to + 10000. + + + + + + Perform constraint_exclusion checking by default + in queries involving inheritance or UNION ALL (Tom) + + + + A new constraint_exclusion setting, + partition, was added to specify this behavior. + + + + + + Allow I/O read-ahead for bitmap index scans (Greg Stark) + + + + The amount of read-ahead is controlled by + effective_io_concurrency. This feature is available only + if the kernel has posix_fadvise() support. + + + + + + Inline simple set-returning SQL functions in + FROM clauses (Richard Rowell) + + + + + + Improve performance of multi-batch hash joins by providing a special + case for join key values that are especially common in the outer + relation (Bryce Cutt, Ramon Lawrence) + + + + + + Reduce volume of temporary data in multi-batch hash joins + by suppressing physical tlist optimization (Michael + Henderson, Ramon Lawrence) + + + + + + Avoid waiting for idle-in-transaction sessions during + CREATE INDEX CONCURRENTLY (Simon) + + + + + + Improve performance of shared cache invalidation (Tom) + + + + + + + + + Server + + + Settings + + + + + + Convert many postgresql.conf settings to enumerated + values so that pg_settings can display the valid + values (Magnus) + + + + + + Add cursor_tuple_fraction parameter to control the + fraction of a cursor's rows that the planner assumes will be + fetched (Robert Hell) + + + + + + Allow underscores in the names of custom variable + classes in postgresql.conf (Tom) + + + + + + + + + Authentication + + + + + Report appropriate error message for combination of MD5 + authentication and db_user_namespace enabled (Bruce) + + + + + + Support regular expressions in pg_ident.conf + (Magnus) + + + + + + Allow Kerberos/GSSAPI parameters + to be changed without restarting the postmaster (Magnus) + + + + + + + + + <filename>pg_hba.conf</> + + + + + Parse pg_hba.conf fully when it is loaded, + so that errors are reported immediately (Magnus) + + + + Previously, most errors in the file wouldn't be detected until clients + tried to connect, so an erroneous file could render the system + unusable. With the new behavior, if an error is detected during + reload then the bad file is rejected and the postmaster continues + to use its old copy. + + + + + + Show all parsing errors in pg_hba.conf instead of + aborting after the first one (Selena Deckelmann) + + + + + + Remove the ident sameuser option, instead making that + behavior the default if no usermap is specified (Magnus) + + + + + + Change all authentication options to use name=value + syntax (Magnus) + + + + + + Allow a usermap parameter for all external authentication methods + (Magnus) + + + + Previously a usermap was only supported for ident + authentication. + + + + + + Add clientcert option to control requesting of a + client certificate (Magnus) + + + + Previously this was controlled by the presence of a root + certificate file in the server's data directory. + + + + + + Add cert authentication method to allow + user authentication via SSL certificates + (Magnus) + + + + Previously SSL certificates could only verify that + the client had access to a certificate, not authenticate a + user. + + + + + + Allow krb5, gssapi and sspi + realm and krb5 host settings to be specified in + pg_hba.conf (Magnus) + + + + These override the settings in postgresql.conf. + + + + + + Add include_realm parameter for krb5, + gssapi, and sspi methods (Magnus) + + + + This allows identical usernames from different realms to be + authenticated as different database users using usermaps. + + + + + + Support ident authentication over Unix-domain sockets + on Solaris (Garick Hamlin) + + + + + + + + + Continuous Archiving + + + + + Provide an option to pg_start_backup() to force its + implied checkpoint to finish as quickly as possible (Tom) + + + + The default behavior avoids excess I/O consumption, but that is + pointless if no concurrent query activity is going on. + + + + + + Make pg_stop_backup() wait for modified WAL + files to be archived (Simon) + + + + This guarantees that the backup is valid at the time + pg_stop_backup() completes. + + + + + + Delay smart shutdown while a continuous archiving base backup + is in progress (Laurenz Albe) + + + + + + Cancel a continuous archiving base backup if fast shutdown + is requested (Laurenz Albe) + + + + + + Allow recovery.conf boolean variables to take the + same range of string values as postgresql.conf + boolean variables + (Bruce) + + + + + + + + + Monitoring + + + + + Add pg_conf_load_time() to report when + the PostgreSQL configuration files were last loaded + (George Gensure) + + + + + + Add pg_terminate_backend() to safely terminate a + backend (the SIGTERM signal works also) (Tom, Bruce) + + + + While it's always been possible to SIGTERM a single + backend, this was previously considered unsupported; and testing + of the case found some bugs that are now fixed. + + + + + + Add ability to track user-defined functions' call counts and + runtimes (Martin Pihlak) + + + + Function statistics appear in a new system view, + pg_stat_user_functions. Tracking is controlled + by the new parameter track_functions. + + + + + + Allow specification of the maximum query string size in + pg_stat_activity via new + track_activity_query_size parameter (Thomas Lee) + + + + + + Increase the maximum line length sent to syslog, in + hopes of improving performance (Tom) + + + + + + Add read-only configuration variables segment_size, + wal_block_size, and wal_segment_size + (Bernd Helmle) + + + + + + When reporting a deadlock, report the text of all queries involved + in the deadlock to the server log (Itagaki Takahiro) + + + + + + Add pg_stat_get_activity(pid) function to return + information about a specific process id (Magnus) + + + + + + Allow the location of the server's statistics file to be specified + via stats_temp_directory (Magnus) + + + + This allows the statistics file to be placed in a + RAM-resident directory to reduce I/O requirements. + On startup/shutdown, the file is copied to its traditional location + ($PGDATA/global/) so it is preserved across restarts. + + + + + + + + + + + Queries + + + + + Add support for WINDOW functions (Hitoshi Harada) + + + + + + Add support for WITH clauses (CTEs), including WITH + RECURSIVE (Yoshiyuki Asaba, Tatsuo Ishii, Tom) + + + + + + Add TABLE command (Peter) + + + + TABLE tablename is a SQL standard short-hand for + SELECT * FROM tablename. + + + + + + Allow AS to be optional when specifying a + SELECT (or RETURNING) column output + label (Hiroshi Saito) + + + + This works so long as the column label is not any + PostgreSQL keyword; otherwise AS is still + needed. + + + + + + Support set-returning functions in SELECT result lists + even for functions that return their result via a tuplestore (Tom) + + + + In particular, this means that functions written in PL/PgSQL + and other PL languages can now be called this way. + + + + + + Support set-returning functions in the output of aggregation + and grouping queries (Tom) + + + + + + Allow SELECT FOR UPDATE/SHARE to work + on inheritance trees (Tom) + + + + + + Add infrastructure for SQL/MED (Martin Pihlak, + Peter) + + + + There are no remote or external SQL/MED capabilities + yet, but this change provides a standardized and future-proof + system for managing connection information for modules like + dblink and plproxy. + + + + + + Invalidate cached plans when referenced schemas, functions, operators, + or operator classes are modified (Martin Pihlak, Tom) + + + + This improves the system's ability to respond to on-the-fly + DDL changes. + + + + + Allow comparison of composite types and allow arrays of + anonymous composite types (Tom) + + + + This allows constructs such as + row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)]). + This is particularly useful in recursive queries. + + + + + + Add support for Unicode string literal and identifier specifications + using code points, e.g. U&'d\0061t\+000061' + (Peter) + + + + + + Improve the parser's ability to report error locations (Tom) + + + + An error location is now reported for many semantic errors, + such as mismatched datatypes, that previously could not be localized. + + + + + + + <command>TRUNCATE</> + + + + + Support statement-level ON TRUNCATE triggers (Simon) + + + + + + Add RESTART/CONTINUE IDENTITY options + for TRUNCATE TABLE + (Zoltan Boszormenyi) + + + + The start value of a sequence can be changed by ALTER + SEQUENCE START WITH. + + + + + + Allow TRUNCATE tab1, tab1 to succeed (Bruce) + + + + + + Add a separate TRUNCATE permission (Robert Haas) + + + + + + + + + <command>EXPLAIN</> + + + + + Make EXPLAIN VERBOSE show the output columns of each + plan node (Tom) + + + + Previously EXPLAIN VERBOSE output an internal + representation of the query plan. (That behavior is now + available via debug_print_plan.) + + + + + + Make EXPLAIN identify subplans and initplans with + individual labels (Tom) + + + + + + Make EXPLAIN honor debug_print_plan (Tom) + + + + + + Allow EXPLAIN on CREATE TABLE AS (Peter) + + + + + + + + + <literal>LIMIT</>/<literal>OFFSET</> + + + + + Allow sub-selects in LIMIT and OFFSET (Tom) + + + + + + Add SQL-standard syntax for + LIMIT/OFFSET capabilities (Peter) + + + + To wit, + OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS} + ONLY. + + + + + + + + + + + Object Manipulation + + + + + Add support for column-level privileges (Stephen Frost, KaiGai + Kohei) + + + + + + Refactor multi-object DROP operations to reduce the + need for CASCADE (Alex Hunsaker) + + + + For example, if table B has a dependency on table + A, the command DROP TABLE A, B no longer + requires the CASCADE option. + + + + + + Fix various problems with concurrent DROP commands + by ensuring that locks are taken before we begin to drop dependencies + of an object (Tom) + + + + + + Improve reporting of dependencies during DROP + commands (Tom) + + + + + + Add WITH [NO] DATA clause to CREATE TABLE + AS, per the SQL standard (Peter, Tom) + + + + + + Add support for user-defined I/O conversion casts (Heikki) + + + + + + Allow CREATE AGGREGATE to use an internal + transition datatype (Tom) + + + + + + Add LIKE clause to CREATE TYPE (Tom) + + + + This simplifies creation of data types that use the same internal + representation as an existing type. + + + + + + Allow specification of the type category and preferred + status for user-defined base types (Tom) + + + + This allows more control over the coercion behavior of user-defined + types. + + + + + + Allow CREATE OR REPLACE VIEW to add columns to the + end of a view (Robert Haas) + + + + + + + <command>ALTER</> + + + + + Add ALTER TYPE RENAME (Petr Jelinek) + + + + + + Add ALTER SEQUENCE ... RESTART (with no parameter) to + reset a sequence to its initial value (Zoltan Boszormenyi) + + + + + + Modify the ALTER TABLE syntax to allow all reasonable + combinations for tables, indexes, sequences, and views (Tom) + + + + This change allows the following new syntaxes: + + + + + ALTER SEQUENCE OWNER TO + + + + + ALTER VIEW ALTER COLUMN SET/DROP DEFAULT + + + + + ALTER VIEW OWNER TO + + + + + ALTER VIEW SET SCHEMA + + + + + There is no actual new functionality here, but formerly + you had to say ALTER TABLE to do these things, + which was confusing. + + + + + + Add support for the syntax ALTER TABLE ... ALTER COLUMN + ... SET DATA TYPE (Peter) + + + + This is SQL-standard syntax for functionality that + was already supported. + + + + + + Make ALTER TABLE SET WITHOUT OIDS rewrite the table + to physically remove OID values (Tom) + + + + Also, add ALTER TABLE SET WITH OIDS to rewrite the + table to add OIDs. + + + + + + + + + Database Manipulation + + + + + Improve reporting of + CREATE/DROP/RENAME DATABASE + failure when uncommitted prepared transactions are the cause + (Tom) + + + + + + Make LC_COLLATE and LC_CTYPE into + per-database settings (Radek Strnad, Heikki) + + + + This makes collation similar to encoding, which was always + configurable per database. + + + + + + Improve checks that the database encoding, collation + (LC_COLLATE), and character classes + (LC_CTYPE) match (Heikki) + + + + + + Add ALTER DATABASE SET TABLESPACE to move a database + to a new tablespace (Guillaume Lelarge, Bernd Helmle) + + + + + + + + + + + Utility Operations + + + + + + Add a VERBOSE option to the CLUSTER command and + clusterdb (Jim Cox) + + + + + + Decrease memory requirements for recording pending trigger + events (Tom) + + + + + + + Indexes + + + + + Dramatically improve the speed of building and accessing hash + indexes (Tom Raney, Shreya Bhargava) + + + + This allows hash indexes to be sometimes faster than btree + indexes. However, hash indexes are still not crash-safe. + + + + + + Make hash indexes store only the hash code, not the full value of + the indexed column (Xiao Meng) + + + + This greatly reduces the size of hash indexes for long indexed + values, improving performance. + + + + + + Implement fast update option for GIN indexes (Teodor, Oleg) + + + + This option greatly improves update speed at a small penalty in search + speed. + + + + + + xxx_pattern_ops indexes can now be used for simple + equality comparisons, not only for LIKE (Tom) + + + + + + + + + Full Text Indexes + + + + + Remove the requirement to use @@@ when doing + GIN weighted lookups on full text indexes (Tom, Teodor) + + + + The normal @@ text search operator can be used + instead. + + + + + + Add an optimizer selectivity function for @@ text + search operations (Jan Urbanski) + + + + + + Allow prefix matching in full text searches (Teodor Sigaev, + Oleg Bartunov) + + + + + + Support multi-column GIN indexes (Teodor Sigaev) + + + + + + Improve support for Nepali language and Devanagari alphabet (Teodor) + + + + + + + + + <command>VACUUM</> + + + + + Track free space in separate per-relation fork files (Heikki) + + + + Free space discovered by VACUUM is now recorded in + *_fsm files, rather than in a fixed-sized shared memory + area. The max_fsm_pages and max_fsm_relations + settings have been removed, greatly simplifying administration of + free space management. + + + + + + Add a visibility map to track pages that do not require + vacuuming (Heikki) + + + + This allows VACUUM to avoid scanning all of + a table when only a portion of the table needs vacuuming. + The visibility map is stored in per-relation fork files. + + + + + + Add vacuum_freeze_table_age parameter to control + when VACUUM should ignore the visibility map and + do a full table scan to freeze tuples (Heikki) + + + + + + Track transaction snapshots more carefully (Alvaro) + + + + This improves VACUUM's ability to reclaim space + in the presence of long-running transactions. + + + + + + Add ability to specify per-relation autovacuum and TOAST + parameters in CREATE TABLE (Alvaro, Euler Taveira de + Oliveira) + + + + Autovacuum options used to be stored in a system table. + + + + + + Add --freeze option to vacuumdb + (Bruce) + + + + + + + + + + + Data Types + + + + + Add a CaseSensitive option for text search synonym + dictionaries (Simon) + + + + + + Improve the precision of NUMERIC division (Tom) + + + + + + Add basic arithmetic operators for int2 with int8 + (Tom) + + + + This eliminates the need for explicit casting in some situations. + + + + + + Allow UUID input to accept an optional hyphen after + every fourth digit (Robert Haas) + + + + + + Allow on/off as input for the boolean data type + (Itagaki Takahiro) + + + + + + Allow spaces around NaN in the input string for + type numeric (Sam Mason) + + + + + + + Temporal Data Types + + + + + Reject year 0 BC and years 000 and + 0000 (Tom) + + + + Previously these were interpreted as 1 BC. + (Note: years 0 and 00 are still assumed to be + the year 2000.) + + + + + + Include SGT (Singapore time) in the default list of + known time zone abbreviations (Tom) + + + + + + Support infinity and -infinity as + values of type date (Tom) + + + + + + Make parsing of interval literals more standard-compliant (Tom) + + + + For example, INTERVAL '1' YEAR now does what it's + supposed to. + + + + + + Allow interval fractional-seconds precision to be specified + after the second keyword, for SQL standard + compliance (Tom) + + + + Formerly the precision had to be specified after the keyword + interval. (For backwards compatibility, this syntax is still + supported, though deprecated.) Data type definitions will now be + output using the standard format. + + + + + + Support the IS0 8601 interval syntax (Ron + Mayer, Kevin Grittner) + + + + For example, INTERVAL 'P1Y2M3DT4H5M6.7S' is now + supported. + + + + + + Add IntervalStyle parameter + which controls how interval values are output (Ron Mayer) + + + + Valid values are: postgres, postgres_verbose, + sql_standard, iso_8601. This setting also + controls the handling of negative interval input when only + some fields have positive/negative designations. + + + + + + Improve consistency of handling of fractional seconds in + timestamp and interval output (Ron Mayer) + + + + + + + + + Arrays + + + + + Improve the handling of casts applied to ARRAY[] + constructs, such as ARRAY[...]::integer[] + (Brendan Jurd) + + + + Formerly PostgreSQL attempted to determine a data type + for the ARRAY[] construct without reference to the ensuing + cast. This could fail unnecessarily in many cases, in particular when + the ARRAY[] construct was empty or contained only + ambiguous entries such as NULL. Now the cast is consulted + to determine the type that the array elements must be. + + + + + + Make SQL-syntax ARRAY dimensions optional + to match the SQL standard (Peter) + + + + + + Add array_ndims() to return the number + of dimensions of an array (Robert Haas) + + + + + + Add array_length() to return the length + of an array for a specified dimension (Jim Nasby, Robert + Haas, Peter Eisentraut) + + + + + + Add aggregate function array_agg(), which + returns all aggregated values as a single array (Robert Haas, + Jeff Davis, Peter) + + + + + + Add unnest(), which converts an array to + individual row values (Tom) + + + + This is the opposite of array_agg(). + + + + + + Add array_fill() to create arrays initialized with + a value (Pavel Stehule) + + + + + + Add generate_subscripts() to simplify generating + the range of an array's subscripts (Pavel Stehule) + + + + + + + + + Wide-Value Storage (<acronym>TOAST</>) + + + + + Consider TOAST compression on values as short as + 32 bytes (previously 256 bytes) (Greg Stark) + + + + + + Require 25% minimum space savings before using TOAST + compression (previously 20% for small values and any-savings-at-all + for large values) (Greg) + + + + + + Improve TOAST heuristics for rows that have a mix of large + and small toastable fields, so that we prefer to push large values out + of line and don't compress small values unnecessarily (Greg, Tom) + + + + + + + + + + + Functions + + + + + Document that setseed() allows values from + -1 to 1 (not just 0 to + 1), and enforce the valid range (Kris Jurka) + + + + + + Add server-side function lo_import(filename, oid) + (Tatsuo) + + + + + + Add quote_nullable(), which behaves like + quote_literal() but returns the string NULL for + a null argument (Brendan Jurd) + + + + + + Improve full text search headline() function to + allow extracting several fragments of text (Sushant Sinha) + + + + + + Add suppress_redundant_updates_trigger() trigger + function to avoid overhead for non-data-changing updates (Andrew) + + + + + + Add div(numeric, numeric) to perform numeric + division without rounding (Tom) + + + + + + Add timestamp and timestamptz versions of + generate_series() (Hitoshi Harada) + + + + + + + Object Information Functions + + + + + Implement current_query() for use by functions + that need to know the currently running query (Tomas Doran) + + + + + + Add pg_get_keywords() to return a list of the + parser keywords (Dave Page) + + + + + + Add pg_get_functiondef() to see a function's + definition (Abhijit Menon-Sen) + + + + + + Modify pg_relation_size() to use regclass + (Heikki) + + + + pg_relation_size(data_type_name) no longer works. + + + + + + Add boot_val and reset_val columns to + pg_settings output (Greg Smith) + + + + + + Add source file name and line number columns to + pg_settings output for variables set in a configuration + file (Magnus, Alvaro) + + + + For security reasons, these columns are only visible to superusers. + + + + + + Add support for CURRENT_CATALOG, + CURRENT_SCHEMA, SET CATALOG, SET + SCHEMA (Peter) + + + + These provide SQL-standard syntax for existing features. + + + + + + Add pg_typeof() which returns the data type + of any value (Brendan Jurd) + + + + + + Make version() return information about whether + the server is a 32- or 64-bit binary (Bruce) + + + + + + Fix the behavior of information schema columns + is_insertable_into and is_updatable to + be consistent (Peter) + + + + + + Convert remaining builtin set-returning functions to use + OUT parameters (Jaime Casanova) + + + + This makes it possible to call these functions without specifying + a column list: pg_show_all_settings(), + pg_lock_status(), pg_prepared_xact(), + pg_prepared_statement(), pg_cursor() + + + + + + Make pg_*_is_visible() and + has_*_privilege() functions return NULL + for invalid OIDs, rather than reporting an error (Tom) + + + + + + Extend has_*_privilege() functions to allow inquiring + about the OR of multiple privileges in one call (Stephen + Frost, Tom) + + + + + + Add has_column_privilege() and + has_any_column_privilege() functions (Stephen + Frost, Tom) + + + + + + + + + Function Creation + + + + + Support variadic functions (functions with a variable number + of arguments) (Pavel Stehule) + + + + Only trailing arguments can be optional, and they all must be + of the same data type. + + + + + + Support default values for function arguments (Pavel Stehule) + + + + + + Add CREATE FUNCTION ... RETURNS TABLE clause (Pavel + Stehule) + + + + + + Allow SQL-language functions to return the output + of an INSERT/UPDATE/DELETE + RETURNING clause (Tom) + + + + + + + + + PL/PgSQL Server-Side Language + + + + + Support EXECUTE USING for easier insertion of data + values into a dynamic query string (Pavel Stehule) + + + + + + Allow looping over the results of a cursor using a FOR + loop (Pavel Stehule) + + + + + + Support RETURN QUERY EXECUTE (Pavel + Stehule) + + + + + + Improve the RAISE command (Pavel Stehule) + + + + + Support DETAIL and HINT fields + + + + + Support specification of the SQLSTATE error code + + + + + Support an exception name parameter + + + + + Allow RAISE without parameters in an exception + block to re-throw the current error + + + + + + + + + Allow specification of SQLSTATE codes + in EXCEPTION lists (Pavel Stehule) + + + + This is useful for handling custom SQLSTATE codes. + + + + + + Support the CASE statement (Pavel Stehule) + + + + + + Make RETURN QUERY set the special FOUND and + GET DIAGNOSTICS ROW_COUNT variables + (Pavel Stehule) + + + + + + Make FETCH and MOVE set the + GET DIAGNOSTICS ROW_COUNT variable + (Andrew Gierth) + + + + + + Avoid memory leakage when the same function is called at varying + exception-block nesting depths (Tom) + + + + + + + + + + + Client Applications + + + + + + Fix pg_ctl restart to preserve command-line arguments + (Bruce) + + + + + + Add -w/--no-password option that + prevents password prompting in all utilities that have a + -W/--password option (Peter) + + + + + + Remove + + + These options have had no effect since PostgreSQL + 8.3. + + + + + + + <application>psql</> + + + + + Remove verbose startup banner; now just suggest help + (Joshua Drake) + + + + + + Make help show common backslash commands (Greg + Sabino Mullane) + + + + + + Add \pset format wrapped mode to wrap output to the + screen width, or file/pipe output too if \pset columns + is set (Bryce Nesbitt) + + + + + + Allow all supported spellings of boolean values in \pset, + rather than just on and off (Bruce) + + + + Formerly, any string other than off was silently taken + to mean true. psql will now complain + about unrecognized spellings (but still take them as true). + + + + + + Use the pager for wide output (Bruce) + + + + + + Require a space between a one-letter backslash command and its first + argument (Bernd Helmle) + + + + This removes a historical source of ambiguity. + + + + + + Improve tab completion support for schema-qualified and + quoted identifiers (Greg Sabino Mullane) + + + + + + Add optional on/off argument for + \timing (David Fetter) + + + + + + Display access control rights on multiple lines (Brendan + Jurd, Andreas Scherbaum) + + + + + + Make \l show database access privileges (Andrew Gilligan) + + + + + + Make \l+ show database sizes, if permissions + allow (Andrew Gilligan) + + + + + + Add the \ef command to edit function definitions + (Abhijit Menon-Sen) + + + + + + + + + <application>psql</> \d* commands + + + + + + Make \d* commands that do not have a pattern argument + show system objects only if the S modifier is specified + (Greg Sabino Mullane, Bruce) + + + + The former behavior was inconsistent across different variants + of \d, and in most cases it provided no easy way to see + just user objects. + + + + + + Improve \d* commands to work with older + PostgreSQL server versions (back to 7.4), + not only the current server version + (Guillaume Lelarge) + + + + + + Make \d show foreign-key constraints that reference + the selected table (Kenneth D'Souza) + + + + + + Make \d on a sequence show its column values + (Euler Taveira de Oliveira) + + + + + + Add column storage type and other relation options to the + \d+ display (Gregory Stark, Euler Taveira de + Oliveira) + + + + + + Show relation size in \dt+ output (Dickson S. + Guedes) + + + + + + Show the possible values of enum types in \dT+ + (David Fetter) + + + + + + Allow \dC to accept a wildcard pattern, which matches + either datatype involved in the cast (Tom) + + + + + + Make \df not hide functions that take or return + type cstring (Tom) + + + + Previously, such functions were hidden because most of them are + datatype I/O functions, which were deemed uninteresting. The new + policy about hiding system functions by default makes this wart + unnecessary. + + + + + + + + + <application>pg_dump</> + + + + + Add a --no-tablespaces option to + pg_dump/pg_dumpall/pg_restore + so that dumps can be restored to clusters that have non-matching + tablespace layouts (Gavin Roy) + + + + + + Remove + + + These options were too frequently confused with the option to + select a database name in other PostgreSQL + client applications. The functionality is still available, + but you must now spell out the long option name + + + + + + Remove + + + Use of this option does not throw an error, but it has no + effect. This option was removed because the version checks + are necessary for safety. + + + + + + Disable statement_timeout during dump and restore + (Joshua Drake) + + + + + + Add pg_dump/pg_dumpall option + + + + This allows dumps to fail if unable to acquire a shared lock + within the specified amount of time. + + + + + + Reorder pg_dump --data-only output + to dump tables referenced by foreign keys before + the referencing tables (Tom) + + + + This allows data loads when foreign keys are already present. + If circular references make a safe ordering impossible, a + NOTICE is issued. + + + + + + Allow pg_dump, pg_dumpall, and + pg_restore to use a specified role (Benedek + László) + + + + + + Allow pg_restore to use multiple concurrent + connections to do the restore (Andrew) + + + + The number of concurrent connections is controlled by the option + --jobs. This is supported only for custom-format archives. + + + + + + + + + + + Programming Tools + + + <application>libpq</> + + + + + Allow the OID to be specified when importing a large + object, via new function lo_import_with_oid() (Tatsuo) + + + + + + Add events support (Andrew Chernow, Merlin Moncure) + + + + This adds the ability to register callbacks to manage private + data associated with PGconn and PGresult + objects. + + + + + + Improve error handling to allow the return of multiple + error messages as multi-line error reports (Magnus) + + + + + + Make PQexecParams() and related functions return + PGRES_EMPTY_QUERY for an empty query (Tom) + + + + They previously returned PGRES_COMMAND_OK. + + + + + + Document how to avoid the overhead of WSACleanup() + on Windows (Andrew Chernow) + + + + + + + + + <application>libpq</> <acronym>SSL</> (Secure Sockets Layer) + support + + + + + Fix certificate validation for SSL connections + (Magnus) + + + + libpq now supports verifying both the certificate + and the name of the server when making SSL + connections. If a root certificate is not available to use for + verification, SSL connections will fail. The + sslmode parameter is used to enable the certificate + verification. + + + + The default is still not to do any verification. + + + + + + Allow the file locations for client certificates to be specified + (Mark Woodward, Alvaro, Magnus) + + + + + + Add a PQinitOpenSSL function to allow greater control + over OpenSSL/libcrypto initialization (Andrew Chernow) + + + + + + Make libpq unregister its OpenSSL + callbacks when no database connections remain open + (Bruce, Magnus, Russell Smith) + + + + This is required for applications that unload the libpq library, + otherwise invalid OpenSSL callbacks will remain. + + + + + + + + + <application>ecpg</> + + + + + Add localization support for messages (Euler Taveira de + Oliveira) + + + + + + ecpg parser is now automatically generated from the server + parser (Michael) + + + + Previously the ecpg parser was hand-maintained. + + + + + + + + + Server Programming Interface (<acronym>SPI</>) + + + + + Add support for single-use plans with out-of-line + parameters (Tom) + + + + + + Add new SPI_OK_REWRITTEN return code for + SPI_execute() (Heikki) + + + + This is used when a command is rewritten to another type of + command. + + + + + + Remove unnecessary inclusions from executor/spi.h (Tom) + + + + SPI-using modules might need to add some #include + lines if they were depending on spi.h to include + things for them. + + + + + + + + + + + Build Options + + + + + Update build system to use Autoconf 2.61 (Peter) + + + + + + Require GNU bison for source code builds (Peter) + + + + This has effectively been required for several years, but now there + is no infrastructure claiming to support other parser tools. + + + + + + Add pg_config --htmldir option + (Peter) + + + + + + Pass float4 by value inside the server (Zoltan + Boszormenyi) + + + + Add configure option + --disable-float4-byval to use the old behavior. + External C functions that use old-style (version 0) call convention + and pass or return float4 values will be broken by this + change, so you may need the configure option if you + have such functions and don't want to update them. + + + + + + Pass float8, int8, and related datatypes + by value inside the server on 64-bit platforms (Zoltan Boszormenyi) + + + + Add configure option + --disable-float8-byval to use the old behavior. + As above, this change might break old-style external C functions. + + + + + + Add configure options --with-segsize, + --with-blocksize, --with-wal-blocksize, + --with-wal-segsize (Zdenek Kotala, Tom) + + + + This simplifies build-time control over several constants that + previously could only be changed by editing + pg_config_manual.h. + + + + + + Allow threaded builds on Solaris 2.5 (Bruce) + + + + + + Use the system's getopt_long() on Solaris + (Zdenek Kotala, Tom) + + + + This makes option processing more consistent with what Solaris users + expect. + + + + + + Add support for the Sun Studio compiler on + Linux (Julius Stroffek) + + + + + + Append the major version number to the backend gettext + domain, and the soname major version number to + libraries' gettext domain (Peter) + + + + This simplifies parallel installations of multiple versions. + + + + + + Add support for code coverage testing with gcov + (Michelle Caisse) + + + + + + Allow out-of-tree builds on Mingw and + Cygwin (Richard Evans) + + + + + + Fix the use of Mingw as a cross-compiling source + platform (Peter) + + + + + + + + + Source Code + + + + + Support 64-bit time zone data files (Heikki) + + + + This adds support for daylight saving time (DST) + calculations beyond the year 2038. + + + + + + Deprecate use of platform's time_t data type (Tom) + + + + Some platforms have migrated to 64-bit time_t, some have + not, and Windows can't make up its mind what it's doing. Define + pg_time_t to have the same meaning as time_t, + but always be 64 bits (unless the platform has no 64-bit integer type), + and use that type in all module APIs and on-disk data formats. + + + + + + Fix bug in handling of the time zone database when cross-compiling + (Richard Evans) + + + + + + Link backend object files in one step, rather than in stages + (Peter) + + + + + + Improve gettext support to allow better translation + of plurals (Peter) + + + + + + Add message translation support to the PL languages (Alvaro, Peter) + + + + + + Add more DTrace probes (Robert Lor) + + + + + + Enable DTrace support on Mac OS X + Leopard and other non-Solaris platforms (Robert Lor) + + + + + + Simplify and standardize conversions between C strings and + text datums, by providing common functions for the purpose + (Brendan Jurd, Tom) + + + + + + Clean up the include/catalog/ header files so that + frontend programs can include them without including + postgres.h + (Zdenek Kotala) + + + + + + Make name char-aligned, and suppress zero-padding of + name entries in indexes (Tom) + + + + + + Add a hook to let plug-ins monitor the executor (Itagaki + Takahiro) + + + + + + Add a hook to allow the planner's statistics lookup behavior to + be overridden (Simon Riggs) + + + + + + Add shmem_startup_hook() for custom shared memory + requirements (Tom) + + + + + + Replace the index access method amgetmulti entry point + with amgetbitmap, and extend the API for + amgettuple to support run-time determination of + operator lossiness (Heikki, Tom, Teodor) + + + + The API for GIN and GiST opclass consistent functions + has been extended as well. + + + + + + Add support for partial-match searches in GIN indexes + (Teodor Sigaev, Oleg Bartunov) + + + + + + Replace pg_class column reltriggers + with boolean relhastriggers (Simon) + + + + Also remove unused pg_class columns + relukeys, relfkeys, and + relrefs. + + + + + + Add a relistemp column to pg_class + to ease identification of temporary tables (Tom) + + + + + + Move platform FAQs into the main documentation + (Peter) + + + + + + Prevent parser input files from being built with any conflicts + (Peter) + + + + + + Add support for the KOI8U (Ukrainian) encoding + (Peter) + + + + + + Add Japanese message translations (Japan PostgreSQL Users Group) + + + + This used to be maintained as a separate project. + + + + + + Fix problem when setting LC_MESSAGES on + MSVC-built systems (Hiroshi Inoue, Hiroshi + Saito, Magnus) + + + + + + + + + Contrib + + + + + + Add contrib/auto_explain to automatically run + EXPLAIN on queries exceeding a specified duration + (Itagaki Takahiro, Tom) + + + + + + Add contrib/btree_gin to allow GIN indexes to + handle more datatypes (Oleg, Teodor) + + + + + + Add contrib/citext to provide a case-insensitive, + multibyte-aware text data type (David Wheeler) + + + + + + Add contrib/pg_stat_statements for server-wide + tracking of statement execution statistics (Itagaki Takahiro) + + + + + + Add duration and query mode options to contrib/pgbench + (Itagaki Takahiro) + + + + + + Fix contrib/pgstattuple to handle tables and + indexes with over 2 billion pages (Tatsuhito Kasahara) + + + + + + In contrib/fuzzystrmatch, add a version of the + Levenshtein string-distance function that allows the user to + specify the costs of insertion, deletion, and substitution + (Volkan Yazici) + + + + + + Make contrib/ltree support multibyte encodings + (laser) + + + + + + Improve contrib/dblink's reporting of errors from + the remote server (Joe Conway) + + + + + + Make sure contrib/dblink uses a password supplied + by the user, and not accidentally taken from the server's + .pgpass file (Joe Conway) + + + + This is a minor security enhancement. + + + + + + Add fsm_page_contents() + to contrib/pageinspect (Heikki) + + + + + + Modify get_raw_page() to support free space map + (*_fsm) files. Also update + contrib/pg_freespacemap. + + + + + + Add support for multibyte encodings to contrib/pg_trgm + (Teodor) + + + + + + Rewrite contrib/intagg to use new + functions array_agg() and unnest() + (Tom) + + + + + + Remove contrib/intarray's definitions of the + <@ and @> operators (Tom) + + + + This avoids confusion with the equivalent built-in operators. + If needed, the contrib/intarray implementations + are still available under their historical names @ + and ~. + + + + + + + + diff --git a/doc/src/sgml/release-old.sgml b/doc/src/sgml/release-old.sgml new file mode 100644 index 0000000000..54fa37d984 --- /dev/null +++ b/doc/src/sgml/release-old.sgml @@ -0,0 +1,6657 @@ + + + + + Release 7.3.21 + + + Release date + 2008-01-07 + + + + This release contains a variety of fixes from 7.3.20, + including fixes for significant security issues. + + + + This is expected to be the last PostgreSQL release + in the 7.3.X series. Users are encouraged to update to a newer + release branch soon. + + + + Migration to Version 7.3.21 + + + 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. + + + + + + Changes + + + + + + Prevent functions in indexes from executing with the privileges of + the user running VACUUM, ANALYZE, etc (Tom) + + + + 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 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 VACUUM, ANALYZE, REINDEX, + and CLUSTER) to execute as the table owner rather than + the calling user, using the same privilege-switching mechanism already + used for SECURITY DEFINER functions. To prevent bypassing + this security measure, execution of SET SESSION + AUTHORIZATION and SET ROLE is now forbidden within a + SECURITY DEFINER context. (CVE-2007-6600) + + + + + + Require non-superusers who use /contrib/dblink to use only + password authentication, as a security measure (Joe) + + + + The fix that appeared for this in 7.3.20 was incomplete, as it plugged + the hole for only some dblink functions. (CVE-2007-6601, + CVE-2007-3278) + + + + + + Fix potential crash in translate() when using a multibyte + database encoding (Tom) + + + + + + Make contrib/tablefunc's crosstab() handle + NULL rowid as a category in its own right, rather than crashing (Joe) + + + + + + Require a specific version of Autoconf to be used + when re-generating the configure script (Peter) + + + + This affects developers and packagers only. The change was made + to prevent accidental use of untested combinations of + Autoconf and PostgreSQL versions. + You can remove the version check if you really want to use a + different Autoconf version, but it's + your responsibility whether the result works or not. + + + + + + + + + + Release 7.3.20 + + + Release date + 2007-09-17 + + + + This release contains fixes from 7.3.19. + + + + Migration to Version 7.3.20 + + + 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. + + + + + + Changes + + + + + + Prevent index corruption when a transaction inserts rows and + then aborts close to the end of a concurrent VACUUM + on the same table (Tom) + + + + + + Make CREATE DOMAIN ... DEFAULT NULL work properly (Tom) + + + + + + Fix crash when log_min_error_statement logging runs out + of memory (Tom) + + + + + + Require non-superusers who use /contrib/dblink to use only + password authentication, as a security measure (Joe) + + + + + + + + + + Release 7.3.19 + + + Release date + 2007-04-23 + + + + This release contains fixes from 7.3.18, + including a security fix. + + + + Migration to Version 7.3.19 + + + 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. + + + + + + Changes + + + + + + Support explicit placement of the temporary-table schema within + search_path, and disable searching it for functions + and operators (Tom) + + + This is needed to allow a security-definer function to set a + truly secure value of 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 CREATE FUNCTION for more information. + + + + + + Fix potential-data-corruption bug in how VACUUM FULL handles + UPDATE chains (Tom, Pavan Deolasee) + + + + + + + + + + Release 7.3.18 + + + Release date + 2007-02-05 + + + + This release contains a variety of fixes from 7.3.17, including + a security fix. + + + + Migration to Version 7.3.18 + + + 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. + + + + + + Changes + + + + + + Remove security vulnerability that allowed connected users + to read backend memory (Tom) + + + 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. + + + + + + Fix rare bug wherein btree index page splits could fail + due to choosing an infeasible split point (Heikki Linnakangas) + + + + + + Tighten security of multi-byte character processing for UTF8 sequences + over three bytes long (Tom) + + + + + + + + + + Release 7.3.17 + + + Release date + 2007-01-08 + + + + This release contains a variety of fixes from 7.3.16. + + + + Migration to Version 7.3.17 + + + 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. + + + + + + Changes + + + + + + to_number() and to_char(numeric) + are now STABLE, not IMMUTABLE, for + new initdb installs (Tom) + + + + This is because lc_numeric can potentially + change the output of these functions. + + + + + + Improve index usage of regular expressions that use parentheses (Tom) + + + + This improves psql \d performance also. + + + + + + + + + + Release 7.3.16 + + + Release date + 2006-10-16 + + + + This release contains a variety of fixes from 7.3.15. + + + + Migration to Version 7.3.16 + + + 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. + + + + + + Changes + + +Fix corner cases in pattern matching for + psql's \d commands +Fix index-corrupting bugs in /contrib/ltree + (Teodor) +Back-port 7.4 spinlock code to improve performance and support +64-bit architectures better +Fix SSL-related memory leak in libpq +Fix backslash escaping in /contrib/dbmirror +Adjust regression tests for recent changes in US DST laws + + + + + + + + Release 7.3.15 + + + Release date + 2006-05-23 + + + + This release contains a variety of fixes from 7.3.14, + including patches for extremely serious security issues. + + + + Migration to Version 7.3.15 + + + 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. + + + + 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 libpq's + PQescapeStringConn()) to perform string escaping, + rather than relying on ad hoc code to do it. + + + + + Changes + + +Change the server to reject invalidly-encoded multibyte +characters in all cases (Tatsuo, Tom) +While 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. + + +Reject unsafe uses of \' in string literals +As a server-side defense against SQL-injection attacks of the type +described in CVE-2006-2314, the server now only accepts '' and not +\' as a representation of ASCII single quote in SQL string +literals. By default, \' is rejected only when +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 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 +backslash_quote is in part to make it obvious that insecure +clients are insecure. + + +Modify libpq's string-escaping routines to be +aware of encoding considerations +This fixes libpq-using applications for the security +issues described in CVE-2006-2313 and CVE-2006-2314. +Applications that use multiple PostgreSQL connections +concurrently should migrate to PQescapeStringConn() and +PQescapeByteaConn() to ensure that escaping is done correctly +for the settings in use in each database connection. Applications that +do string escaping by hand should be modified to rely on library +routines instead. + + +Fix some incorrect encoding conversion functions +win1251_to_iso, alt_to_iso, +euc_tw_to_big5, euc_tw_to_mic, +mic_to_euc_tw were all broken to varying +extents. + + +Clean up stray remaining uses of \' in strings +(Bruce, Jan) + +Fix server to use custom DH SSL parameters correctly (Michael +Fuhr) + +Fix various minor memory leaks + + + + + + + Release 7.3.14 + + + Release date + 2006-02-14 + + + + This release contains a variety of fixes from 7.3.13. + + + + Migration to Version 7.3.14 + + + 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. + + + + + Changes + + + +Fix potential crash in SET +SESSION AUTHORIZATION (CVE-2006-0553) +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. + + +Fix bug with row visibility logic in self-inserted +rows (Tom) +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. + + +Fix race condition that could lead to file already +exists errors during pg_clog file creation +(Tom) + +Fix to allow restoring dumps that have cross-schema +references to custom operators (Tom) + +Portability fix for testing presence of finite +and isinf during configure (Tom) + + + + + + + + Release 7.3.13 + + + Release date + 2006-01-09 + + + + This release contains a variety of fixes from 7.3.12. + + + + Migration to Version 7.3.13 + + + 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 REINDEX indexes on textual + columns after updating, if you are affected by the locale or + plperl issues described below. + + + + + Changes + + + +Fix character string comparison for locales that consider +different character combinations as equal, such as Hungarian (Tom) +This might require REINDEX to fix existing indexes on +textual columns. + +Set locale environment variables during postmaster startup +to ensure that plperl won't change the locale later +This fixes a problem that occurred if the postmaster was +started with environment variables specifying a different locale than what +initdb had been told. Under these conditions, any use of +plperl was likely to lead to corrupt indexes. You might need +REINDEX to fix existing indexes on +textual columns if this has happened to you. + +Fix longstanding bug in strpos() and regular expression +handling in certain rarely used Asian multi-byte character sets (Tatsuo) + + +Fix bug in /contrib/pgcrypto gen_salt, +which caused it not to use all available salt space for MD5 and +XDES algorithms (Marko Kreen, Solar Designer) +Salts for Blowfish and standard DES are unaffected. + +Fix /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) + + + + + + + + Release 7.3.12 + + + Release date + 2005-12-12 + + + + This release contains a variety of fixes from 7.3.11. + + + + Migration to Version 7.3.12 + + + 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. + + + + + Changes + + + +Fix race condition in transaction log management +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. + + +/contrib/ltree fixes (Teodor) + +Fix longstanding planning error for outer joins +This bug sometimes caused a bogus error RIGHT JOIN is +only supported with merge-joinable join conditions. + +Prevent core dump in pg_autovacuum when a +table has been dropped + + + + + + + + Release 7.3.11 + + + Release date + 2005-10-04 + + + + This release contains a variety of fixes from 7.3.10. + + + + Migration to Version 7.3.11 + + + 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. + + + + + Changes + + +Fix error that allowed VACUUM to remove +ctid chains too soon, and add more checking in code that follows +ctid links +This fixes a long-standing problem that could cause crashes in very rare +circumstances. +Fix CHAR() to properly pad spaces to the specified +length when using a multiple-byte character set (Yoshiyuki Asaba) +In prior releases, the padding of CHAR() was incorrect +because it only padded to the specified number of bytes without +considering how many characters were stored. +Fix missing rows in queries like UPDATE a=... WHERE +a... with GiST index on column a +Improve checking for partially-written WAL +pages +Improve robustness of signal handling when SSL is +enabled +Various memory leakage fixes +Various portability improvements +Fix PL/PgSQL to handle var := var correctly when +the variable is of pass-by-reference type + + + + + + + Release 7.3.10 + + + Release date + 2005-05-09 + + + + This release contains a variety of fixes from 7.3.9, including several + security-related issues. + + + + Migration to Version 7.3.10 + + + 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. + + + + 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. + + + + If you wish not to do an initdb, perform the following procedure instead. + As the database superuser, do: + + +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; + + + + + The above procedure must be carried out in each database + of an installation, including template1, and ideally + including template0 as well. If you do not fix the + template databases then any subsequently created databases will contain + the same error. template1 can be fixed in the same way + as any other database, but fixing template0 requires + additional steps. First, from any database issue: + +UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; + + Next connect to template0 and perform the above repair + procedure. Finally, do: + +-- re-freeze template0: +VACUUM FREEZE; +-- and protect it against future alterations: +UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; + + + + + + Changes + + +Change encoding function signature to prevent +misuse +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 +This is an extremely serious bug since it could lead to apparent +data inconsistencies being briefly visible to applications. +Repair race condition between relation extension and +VACUUM +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. + +Fix comparisons of TIME WITH TIME ZONE values + +The comparison code was wrong in the case where the +--enable-integer-datetimes configuration switch had been used. +NOTE: if you have an index on a TIME WITH TIME ZONE column, +it will need to be REINDEXed after installing this update, because +the fix corrects the sort order of column values. + +Fix EXTRACT(EPOCH) for +TIME WITH TIME ZONE values +Fix mis-display of negative fractional seconds in +INTERVAL values + +This error only occurred when the +--enable-integer-datetimes configuration switch had been used. + +Additional buffer overrun checks in plpgsql +(Neil) +Fix pg_dump to dump trigger names containing % +correctly (Neil) +Prevent to_char(interval) from dumping core for +month-related formats +Fix contrib/pgcrypto for newer OpenSSL builds +(Marko Kreen) +Still more 64-bit fixes for +contrib/intagg +Prevent incorrect optimization of functions returning +RECORD + + + + + + + Release 7.3.9 + + + Release date + 2005-01-31 + + + + This release contains a variety of fixes from 7.3.8, including several + security-related issues. + + + + Migration to Version 7.3.9 + + + A dump/restore is not required for those running 7.3.X. + + + + + Changes + + +Disallow LOAD to non-superusers + +On platforms that will automatically execute initialization functions of a +shared library (this includes at least Windows and ELF-based Unixen), +LOAD can be used to make the server execute arbitrary code. +Thanks to NGS Software for reporting this. +Check that creator of an aggregate function has the right to +execute the specified transition functions + +This oversight made it possible to bypass denial of EXECUTE +permission on a function. +Fix security and 64-bit issues in +contrib/intagg +Add needed STRICT marking to some contrib functions (Kris +Jurka) +Avoid buffer overrun when plpgsql cursor declaration has too +many parameters (Neil) +Fix planning error for FULL and RIGHT outer joins + +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. + +Fix plperl for quote marks in tuple fields +Fix display of negative intervals in SQL and GERMAN +datestyles + + + + + + + Release 7.3.8 + + + Release date + 2004-10-22 + + + + This release contains a variety of fixes from 7.3.7. + + + + + Migration to Version 7.3.8 + + + A dump/restore is not required for those running 7.3.X. + + + + + Changes + + +Repair possible failure to update hint bits on disk + +Under rare circumstances this oversight could lead to +could not access transaction status failures, which qualifies +it as a potential-data-loss bug. + +Ensure that hashed outer join does not miss tuples + +Very large left joins using a hash join plan could fail to output unmatched +left-side rows given just the right data distribution. + +Disallow running pg_ctl as root + +This is to guard against any possible security issues. + +Avoid using temp files in /tmp in make_oidjoins_check + +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. + + + + + + + + Release 7.3.7 + + + Release date + 2004-08-16 + + + + This release contains one critical fix over 7.3.6, and some minor items. + + + + + Migration to Version 7.3.7 + + + A dump/restore is not required for those running 7.3.X. + + + + + Changes + + +Prevent possible loss of committed transactions during crash + +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 PostgreSQL 7.1. + +Remove asymmetrical word processing in tsearch (Teodor) +Properly schema-qualify function names when pg_dump'ing a CAST + + + + + + + Release 7.3.6 + + + Release date + 2004-03-02 + + + + This release contains a variety of fixes from 7.3.5. + + + + + Migration to Version 7.3.6 + + + A dump/restore is not required for those + running 7.3.*. + + + + + + Changes + + +Revert erroneous changes in rule permissions checking +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. + +Repair incorrect order of operations in +GetNewTransactionId() + +This bug could result in failure under out-of-disk-space conditions, including +inability to restart even after disk space is freed. + +Ensure configure selects -fno-strict-aliasing even when +an external value for CFLAGS is supplied + +On some platforms, building with -fstrict-aliasing causes bugs. + +Make pg_restore handle 64-bit off_t correctly + +This bug prevented proper restoration from archive files exceeding 4 GB. + +Make contrib/dblink not assume that local and remote type OIDs +match (Joe) +Quote connectby()'s start_with argument properly (Joe) +Don't crash when a rowtype argument to a plpgsql function is +NULL +Avoid generating invalid character encoding sequences in +corner cases when planning LIKE operations +Ensure text_position() cannot scan past end of source string +in multibyte cases (Korea PostgreSQL Users' Group) +Fix index optimization and selectivity estimates for LIKE +operations on bytea columns (Joe) + + + + + + + Release 7.3.5 + + + Release date + 2003-12-03 + + + + This has a variety of fixes from 7.3.4. + + + + + Migration to Version 7.3.5 + + + A dump/restore is not required for those + running 7.3.*. + + + + + Changes + + +Force zero_damaged_pages to be on during recovery from WAL +Prevent some obscure cases of variable not in subplan target lists +Force stats processes to detach from shared memory, ensuring cleaner shutdown +Make PQescapeBytea and byteaout consistent with each other (Joe) +Added missing SPI_finish() calls to dblink's get_tuple_of_interest() (Joe) +Fix for possible foreign key violation when rule rewrites INSERT (Jan) +Support qualified type names in PL/Tcl's spi_prepare command (Jan) +Make pg_dump handle a procedural language handler located in pg_catalog +Make pg_dump handle cases where a custom opclass is in another schema +Make pg_dump dump binary-compatible casts correctly (Jan) +Fix insertion of expressions containing subqueries into rule bodies +Fix incorrect argument processing in clusterdb script (Anand Ranganathan) +Fix problems with dropped columns in plpython triggers +Repair problems with to_char() reading past end of its input string (Karel) +Fix GB18030 mapping errors (Tatsuo) +Fix several problems with SSL error handling and asynchronous SSL I/O +Remove ability to bind a list of values to a single parameter in JDBC +(prevents possible SQL-injection attacks) +Fix some errors in HAVE_INT64_TIMESTAMP code paths +Fix corner case for btree search in parallel with first root page split + + + + + + + Release 7.3.4 + + + Release date + 2003-07-24 + + + + This has a variety of fixes from 7.3.3. + + + + + Migration to Version 7.3.4 + + + A dump/restore is not required for those + running 7.3.*. + + + + + Changes + + +Repair breakage in timestamp-to-date conversion for dates before 2000 +Prevent rare possibility of server startup failure (Tom) +Fix bugs in interval-to-time conversion (Tom) +Add constraint names in a few places in pg_dump (Rod) +Improve performance of functions with many parameters (Tom) +Fix to_ascii() buffer overruns (Tom) +Prevent restore of database comments from throwing an error (Tom) +Work around buggy strxfrm() present in some Solaris releases (Tom) +Properly escape jdbc setObject() strings to improve security (Barry) + + + + + + + Release 7.3.3 + + + Release date + 2003-05-22 + + + + This release contains a variety of fixes for version 7.3.2. + + + + Migration to Version 7.3.3 + + + A dump/restore is not required for those + running version 7.3.*. + + + + + Changes + + +Repair sometimes-incorrect computation of StartUpID after a crash +Avoid slowness with lots of deferred triggers in one transaction (Stephan) +Don't lock referenced row when UPDATE doesn't change foreign key's value (Jan) +Use -fPIC not -fpic on Sparc (Tom Callaway) +Repair lack of schema-awareness in contrib/reindexdb +Fix contrib/intarray error for zero-element result array (Teodor) +Ensure createuser script will exit on control-C (Oliver) +Fix errors when the type of a dropped column has itself been dropped +CHECKPOINT does not cause database panic on failure in noncritical steps +Accept 60 in seconds fields of timestamp, time, interval input values +Issue notice, not error, if TIMESTAMP, + TIME, or INTERVAL precision too large +Fix abstime-to-time cast function (fix is + not applied unless you initdb) +Fix pg_proc entry for + timestampt_izone (fix is not applied unless you + initdb) +Make EXTRACT(EPOCH FROM timestamp without time zone) treat input as local time +'now'::timestamptz gave wrong answer if timezone changed earlier in transaction +HAVE_INT64_TIMESTAMP code for time with timezone overwrote its input +Accept GLOBAL TEMP/TEMPORARY as a + synonym for TEMPORARY +Avoid improper schema-privilege-check failure in foreign-key triggers +Fix bugs in foreign-key triggers for SET DEFAULT action +Fix incorrect time-qual check in row fetch for + UPDATE and DELETE triggers +Foreign-key clauses were parsed but ignored in + ALTER TABLE ADD COLUMN +Fix createlang script breakage for case where handler function already exists +Fix misbehavior on zero-column tables in pg_dump, COPY, ANALYZE, other places +Fix misbehavior of func_error() on type names containing '%' +Fix misbehavior of replace() on strings containing '%' +Regular-expression patterns containing certain multibyte characters failed +Account correctly for NULLs in more cases in join size estimation +Avoid conflict with system definition of isblank() function or macro +Fix failure to convert large code point values in EUC_TW conversions (Tatsuo) +Fix error recovery for SSL_read/SSL_write calls +Don't do early constant-folding of type coercion expressions +Validate page header fields immediately after reading in any page +Repair incorrect check for ungrouped variables in unnamed joins +Fix buffer overrun in to_ascii (Guido Notari) +contrib/ltree fixes (Teodor) +Fix core dump in deadlock detection on machines where char is unsigned +Avoid running out of buffers in many-way indexscan (bug introduced in 7.3) +Fix planner's selectivity estimation functions to handle domains properly +Fix dbmirror memory-allocation bug (Steven Singer) +Prevent infinite loop in ln(numeric) due to roundoff error +GROUP BY got confused if there were multiple equal GROUP BY items +Fix bad plan when inherited UPDATE/DELETE references another inherited table +Prevent clustering on incomplete (partial or non-NULL-storing) indexes +Service shutdown request at proper time if it arrives while still starting up +Fix left-links in temporary indexes (could make backwards scans miss entries) +Fix incorrect handling of client_encoding setting in postgresql.conf (Tatsuo) +Fix failure to respond to pg_ctl stop -m fast after Async_NotifyHandler runs +Fix SPI for case where rule contains multiple statements of the same type +Fix problem with checking for wrong type of access privilege in rule query +Fix problem with EXCEPT in CREATE RULE +Prevent problem with dropping temp tables having serial columns +Fix replace_vars_with_subplan_refs failure in complex views +Fix regexp slowness in single-byte encodings (Tatsuo) +Allow qualified type names in CREATE CAST + and DROP CAST +Accept SETOF type[], which formerly had to + be written SETOF _type +Fix pg_dump core dump in some cases with procedural languages +Force ISO datestyle in pg_dump output, for portability (Oliver) +pg_dump failed to handle error return + from lo_read (Oleg Drokin) +pg_dumpall failed with groups having no members (Nick Eskelinen) +pg_dumpall failed to recognize --globals-only switch +pg_restore failed to restore blobs if -X disable-triggers is specified +Repair intrafunction memory leak in plpgsql +pltcl's elog command dumped core if given wrong parameters (Ian Harding) +plpython used wrong value of atttypmod (Brad McLean) +Fix improper quoting of boolean values in Python interface (D'Arcy) +Added addDataType() method to PGConnection interface for JDBC +Fixed various problems with updateable ResultSets for JDBC (Shawn Green) +Fixed various problems with DatabaseMetaData for JDBC (Kris Jurka, Peter Royal) +Fixed problem with parsing table ACLs in JDBC +Better error message for character set conversion problems in JDBC + + + + + + + Release 7.3.2 + + + Release date + 2003-02-04 + + + + This release contains a variety of fixes for version 7.3.1. + + + + + Migration to Version 7.3.2 + + + A dump/restore is not required for those + running version 7.3.*. + + + + + Changes + + +Restore creation of OID column in CREATE TABLE AS / SELECT INTO +Fix pg_dump core dump when dumping views having comments +Dump DEFERRABLE/INITIALLY DEFERRED constraints properly +Fix UPDATE when child table's column numbering differs from parent +Increase default value of max_fsm_relations +Fix problem when fetching backwards in a cursor for a single-row query +Make backward fetch work properly with cursor on SELECT DISTINCT query +Fix problems with loading pg_dump files containing contrib/lo usage +Fix problem with all-numeric user names +Fix possible memory leak and core dump during disconnect in libpgtcl +Make plpython's spi_execute command handle nulls properly (Andrew Bosma) +Adjust plpython error reporting so that its regression test passes again +Work with bison 1.875 +Handle mixed-case names properly in plpgsql's %type (Neil) +Fix core dump in pltcl when executing a query rewritten by a rule +Repair array subscript overruns (per report from Yichen Xie) +Reduce MAX_TIME_PRECISION from 13 to 10 in floating-point case +Correctly case-fold variable names in per-database and per-user settings +Fix coredump in plpgsql's RETURN NEXT when SELECT into record returns no rows +Fix outdated use of pg_type.typprtlen in python client interface +Correctly handle fractional seconds in timestamps in JDBC driver +Improve performance of getImportedKeys() in JDBC +Make shared-library symlinks work standardly on HPUX (Giles) +Repair inconsistent rounding behavior for timestamp, time, interval +SSL negotiation fixes (Nathan Mueller) +Make libpq's ~/.pgpass feature work when connecting with PQconnectDB +Update my2pg, ora2pg +Translation updates +Add casts between types lo and oid in contrib/lo +fastpath code now checks for privilege to call function + + + + + + + Release 7.3.1 + + + Release date + 2002-12-18 + + + + This release contains a variety of fixes for version 7.3. + + + + + Migration to Version 7.3.1 + + + A dump/restore is not required for those + running version 7.3. However, it should be noted that the main + PostgreSQL interface library, libpq, + has a new major version number for this release, which might require + recompilation of client code in certain cases. + + + + + Changes + + +Fix a core dump of COPY TO when client/server encodings don't match (Tom) +Allow pg_dump to work with pre-7.2 servers (Philip) +contrib/adddepend fixes (Tom) +Fix problem with deletion of per-user/per-database config settings (Tom) +contrib/vacuumlo fix (Tom) +Allow 'password' encryption even when pg_shadow contains MD5 passwords (Bruce) +contrib/dbmirror fix (Steven Singer) +Optimizer fixes (Tom) +contrib/tsearch fixes (Teodor Sigaev, Magnus) +Allow locale names to be mixed case (Nicolai Tufar) +Increment libpq library's major version number (Bruce) +pg_hba.conf error reporting fixes (Bruce, Neil) +Add SCO Openserver 5.0.4 as a supported platform (Bruce) +Prevent EXPLAIN from crashing server (Tom) +SSL fixes (Nathan Mueller) +Prevent composite column creation via ALTER TABLE (Tom) + + + + + + + Release 7.3 + + + Release date + 2002-11-27 + + + + Overview + + + Major changes in this release: + + + + + Schemas + + + 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. + + + + + + Drop Column + + + PostgreSQL now supports the + ALTER TABLE ... DROP COLUMN functionality. + + + + + + Table Functions + + + Functions returning multiple rows and/or multiple columns are + now much easier to use than before. You can call such a + table function in the SELECT + FROM clause, treating its output like a + table. Also, PL/pgSQL functions can + now return sets. + + + + + + Prepared Queries + + + PostgreSQL now supports prepared + queries, for improved performance. + + + + + + Dependency Tracking + + + PostgreSQL now records object + dependencies, which allows improvements in many areas. + DROP statements now take either + CASCADE or RESTRICT to control whether + dependent objects are also dropped. + + + + + + Privileges + + + Functions and procedural languages now have privileges, and + functions can be defined to run with the privileges of their + creator. + + + + + + Internationalization + + + Both multibyte and locale support are now always enabled. + + + + + + Logging + + + A variety of logging options have been enhanced. + + + + + + Interfaces + + + A large number of interfaces have been moved to http://gborg.postgresql.org + where they can be developed and released independently. + + + + + + Functions/Identifiers + + + By default, functions can now take up to 32 parameters, and + identifiers can be up to 63 bytes long. Also, OPAQUE + is now deprecated: there are specific pseudo-datatypes + to represent each of the former meanings of OPAQUE + in function argument and result types. + + + + + + + + + Migration to Version 7.3 + + + A dump/restore using 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: . + + + + Observe the following incompatibilities: + + + + + + Pre-6.3 clients are no longer supported. + + + + + + pg_hba.conf now has a column for the user + name and additional features. Existing files need to be + adjusted. + + + + + + Several postgresql.conf logging parameters + have been renamed. + + + + + + LIMIT #,# has been disabled; use + LIMIT # OFFSET #. + + + + + + INSERT statements with column lists must + specify a value for each specified column. For example, + INSERT INTO tab (col1, col2) VALUES ('val1') + is now invalid. It's still allowed to supply fewer columns than + expected if the INSERT does not have a column list. + + + + + + serial columns are no longer automatically + UNIQUE; thus, an index will not automatically be + created. + + + + + + A SET command inside an aborted transaction + is now rolled back. + + + + + + COPY 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 COPY command.) + + + + + + The data type timestamp is now equivalent to + timestamp without time zone, instead of + timestamp with time zone. + + + + + + Pre-7.3 databases loaded into 7.3 will not have the new object + dependencies for serial columns, unique + constraints, and foreign keys. See the directory + contrib/adddepend/ for a detailed + description and a script that will add such dependencies. + + + + + + An empty string ('') is no longer allowed as + the input into an integer field. Formerly, it was silently + interpreted as 0. + + + + + + + + Changes + + + Server Operation + +Add pg_locks view to show locks (Neil) +Security fixes for password negotiation memory allocation (Neil) +Remove support for version 0 FE/BE protocol (PostgreSQL 6.2 and earlier) (Tom) +Reserve the last few backend slots for superusers, add parameter superuser_reserved_connections to control this (Nigel J. Andrews) + + + + + Performance + +Improve startup by calling localtime() only once (Tom) +Cache system catalog information in flat files for faster startup (Tom) +Improve caching of index information (Tom) +Optimizer improvements (Tom, Fernando Nasser) +Catalog caches now store failed lookups (Tom) +Hash function improvements (Neil) +Improve performance of query tokenization and network handling (Peter) +Speed improvement for large object restore (Mario Weilguni) +Mark expired index entries on first lookup, saving later heap fetches (Tom) +Avoid excessive NULL bitmap padding (Manfred Koizar) +Add BSD-licensed qsort() for Solaris, for performance (Bruce) +Reduce per-row overhead by four bytes (Manfred Koizar) +Fix GEQO optimizer bug (Neil Conway) +Make WITHOUT OID actually save four bytes per row (Manfred Koizar) +Add default_statistics_target variable to specify ANALYZE buckets (Neil) +Use local buffer cache for temporary tables so no WAL overhead (Tom) +Improve free space map performance on large tables (Stephen Marshall, Tom) +Improved WAL write concurrency (Tom) + + + + + Privileges + +Add privileges on functions and procedural languages (Peter) +Add OWNER to CREATE DATABASE so superusers can create databases on behalf of unprivileged users (Gavin Sherry, Tom) +Add new object privilege bits EXECUTE and USAGE (Tom) +Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION (Tom) +Allow functions to be executed with the privilege of the function owner (Peter) + + + + + Server Configuration + +Server log messages now tagged with LOG, not DEBUG (Bruce) +Add user column to pg_hba.conf (Bruce) +Have log_connections output two lines in log file (Tom) +Remove debug_level from postgresql.conf, now server_min_messages (Bruce) +New ALTER DATABASE/USER ... SET command for per-user/database initialization (Peter) +New parameters server_min_messages and client_min_messages to control which messages are sent to the server logs or client applications (Bruce) +Allow pg_hba.conf to specify lists of users/databases separated by commas, group names prepended with +, and file names prepended with @ (Bruce) +Remove secondary password file capability and pg_password utility (Bruce) +Add variable db_user_namespace for database-local user names (Bruce) +SSL improvements (Bear Giles) +Make encryption of stored passwords the default (Bruce) +Allow pg_statistics to be reset by calling pg_stat_reset() (Christopher) +Add log_duration parameter (Bruce) +Rename debug_print_query to log_statement (Bruce) +Rename show_query_stats to show_statement_stats (Bruce) +Add param log_min_error_statement to print commands to logs on error (Gavin) + + + + + Queries + +Make cursors insensitive, meaning their contents do not change (Tom) +Disable LIMIT #,# syntax; now only LIMIT # OFFSET # supported (Bruce) +Increase identifier length to 63 (Neil, Bruce) +UNION fixes for merging >= 3 columns of different lengths (Tom) +Add DEFAULT key word to INSERT, e.g., INSERT ... (..., DEFAULT, ...) (Rod) +Allow views to have default values using ALTER COLUMN ... SET DEFAULT (Neil) +Fail on INSERTs with column lists that don't supply all column values, e.g., INSERT INTO tab (col1, col2) VALUES ('val1'); (Rod) +Fix for join aliases (Tom) +Fix for FULL OUTER JOINs (Tom) +Improve reporting of invalid identifier and location (Tom, Gavin) +Fix OPEN cursor(args) (Tom) +Allow 'ctid' to be used in a view and currtid(viewname) (Hiroshi) +Fix for CREATE TABLE AS with UNION (Tom) +SQL99 syntax improvements (Thomas) +Add statement_timeout variable to cancel queries (Bruce) +Allow prepared queries with PREPARE/EXECUTE (Neil) +Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce) +Add variable autocommit (Tom, David Van Wie) + + + + + Object Manipulation + +Make equals signs optional in CREATE DATABASE (Gavin Sherry) +Make ALTER TABLE OWNER change index ownership too (Neil) +New ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls TOAST storage, compression (John Gray) +Add schema support, CREATE/DROP SCHEMA (Tom) +Create schema for temporary tables (Tom) +Add variable search_path for schema search (Tom) +Add ALTER TABLE SET/DROP NOT NULL (Christopher) +New CREATE FUNCTION volatility levels (Tom) +Make rule names unique only per table (Tom) +Add 'ON tablename' clause to DROP RULE and COMMENT ON RULE (Tom) +Add ALTER TRIGGER RENAME (Joe) +New current_schema() and current_schemas() inquiry functions (Tom) +Allow functions to return multiple rows (table functions) (Joe) +Make WITH optional in CREATE DATABASE, for consistency (Bruce) +Add object dependency tracking (Rod, Tom) +Add RESTRICT/CASCADE to DROP commands (Rod) +Add ALTER TABLE DROP for non-CHECK CONSTRAINT (Rod) +Autodestroy sequence on DROP of table with SERIAL (Rod) +Prevent column dropping if column is used by foreign key (Rod) +Automatically drop constraints/functions when object is dropped (Rod) +Add CREATE/DROP OPERATOR CLASS (Bill Studenmund, Tom) +Add ALTER TABLE DROP COLUMN (Christopher, Tom, Hiroshi) +Prevent inherited columns from being removed or renamed (Alvaro Herrera) +Fix foreign key constraints to not error on intermediate database states (Stephan) +Propagate column or table renaming to foreign key constraints +Add CREATE OR REPLACE VIEW (Gavin, Neil, Tom) +Add CREATE OR REPLACE RULE (Gavin, Neil, Tom) +Have rules execute alphabetically, returning more predictable values (Tom) +Triggers are now fired in alphabetical order (Tom) +Add /contrib/adddepend to handle pre-7.3 object dependencies (Rod) +Allow better casting when inserting/updating values (Tom) + + + + + Utility Commands + +Have COPY TO output embedded carriage returns and newlines as \r and \n (Tom) +Allow DELIMITER in COPY FROM to be 8-bit clean (Tatsuo) +Make pg_dump use ALTER TABLE ADD PRIMARY KEY, for performance (Neil) +Disable brackets in multistatement rules (Bruce) +Disable VACUUM from being called inside a function (Bruce) +Allow dropdb and other scripts to use identifiers with spaces (Bruce) +Restrict database comment changes to the current database +Allow comments on operators, independent of the underlying function (Rod) +Rollback SET commands in aborted transactions (Tom) +EXPLAIN now outputs as a query (Tom) +Display condition expressions and sort keys in EXPLAIN (Tom) +Add 'SET LOCAL var = value' to set configuration variables for a single transaction (Tom) +Allow ANALYZE to run in a transaction (Bruce) +Improve COPY syntax using new WITH clauses, keep backward compatibility (Bruce) +Fix pg_dump to consistently output tags in non-ASCII dumps (Bruce) +Make foreign key constraints clearer in dump file (Rod) +Add COMMENT ON CONSTRAINT (Rod) +Allow COPY TO/FROM to specify column names (Brent Verner) +Dump UNIQUE and PRIMARY KEY constraints as ALTER TABLE (Rod) +Have SHOW output a query result (Joe) +Generate failure on short COPY lines rather than pad NULLs (Neil) +Fix CLUSTER to preserve all table attributes (Alvaro Herrera) +New pg_settings table to view/modify GUC settings (Joe) +Add smart quoting, portability improvements to pg_dump output (Peter) +Dump serial columns out as SERIAL (Tom) +Enable large file support, >2G for pg_dump (Peter, Philip Warner, Bruce) +Disallow TRUNCATE on tables that are involved in referential constraints (Rod) +Have TRUNCATE also auto-truncate the toast table of the relation (Tom) +Add clusterdb utility that will auto-cluster an entire database based on previous CLUSTER operations (Alvaro Herrera) +Overhaul pg_dumpall (Peter) +Allow REINDEX of TOAST tables (Tom) +Implemented START TRANSACTION, per SQL99 (Neil) +Fix rare index corruption when a page split affects bulk delete (Tom) +Fix ALTER TABLE ... ADD COLUMN for inheritance (Alvaro Herrera) + + + + + Data Types and Functions + +Fix factorial(0) to return 1 (Bruce) +Date/time/timezone improvements (Thomas) +Fix for array slice extraction (Tom) +Fix extract/date_part to report proper microseconds for timestamp (Tatsuo) +Allow text_substr() and bytea_substr() to read TOAST values more efficiently (John Gray) +Add domain support (Rod) +Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types (Thomas) +Allow alternate storage scheme of 64-bit integers for date/time types using --enable-integer-datetimes in configure (Thomas) +Make timezone(timestamptz) return timestamp rather than a string (Thomas) +Allow fractional seconds in date/time types for dates prior to 1BC (Thomas) +Limit timestamp data types to 6 decimal places of precision (Thomas) +Change timezone conversion functions from timetz() to timezone() (Thomas) +Add configuration variables datestyle and timezone (Tom) +Add OVERLAY(), which allows substitution of a substring in a string (Thomas) +Add SIMILAR TO (Thomas, Tom) +Add regular expression SUBSTRING(string FROM pat FOR escape) (Thomas) +Add LOCALTIME and LOCALTIMESTAMP functions (Thomas) +Add named composite types using CREATE TYPE typename AS (column) (Joe) +Allow composite type definition in the table alias clause (Joe) +Add new API to simplify creation of C language table functions (Joe) +Remove ODBC-compatible empty parentheses from calls to SQL99 functions for which these parentheses do not match the standard (Thomas) +Allow macaddr data type to accept 12 hex digits with no separators (Mike Wyer) +Add CREATE/DROP CAST (Peter) +Add IS DISTINCT FROM operator (Thomas) +Add SQL99 TREAT() function, synonym for CAST() (Thomas) +Add pg_backend_pid() to output backend pid (Bruce) +Add IS OF / IS NOT OF type predicate (Thomas) +Allow bit string constants without fully-specified length (Thomas) +Allow conversion between 8-byte integers and bit strings (Thomas) +Implement hex literal conversion to bit string literal (Thomas) +Allow table functions to appear in the FROM clause (Joe) +Increase maximum number of function parameters to 32 (Bruce) +No longer automatically create index for SERIAL column (Tom) +Add current_database() (Rod) +Fix cash_words() to not overflow buffer (Tom) +Add functions replace(), split_part(), to_hex() (Joe) +Fix LIKE for bytea as a right-hand argument (Joe) +Prevent crashes caused by SELECT cash_out(2) (Tom) +Fix to_char(1,'FM999.99') to return a period (Karel) +Fix trigger/type/language functions returning OPAQUE to return proper type (Tom) + + + + + Internationalization + +Add additional encodings: Korean (JOHAB), Thai (WIN874), Vietnamese (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC) (Eiji Tokuya) +Enable locale support by default (Peter) +Add locale variables (Peter) +Escape byes >= 0x7f for multibyte in PQescapeBytea/PQunescapeBytea (Tatsuo) +Add locale awareness to regular expression character classes +Enable multibyte support by default (Tatsuo) +Add GB18030 multibyte support (Bill Huang) +Add CREATE/DROP CONVERSION, allowing loadable encodings (Tatsuo, Kaori) +Add pg_conversion table (Tatsuo) +Add SQL99 CONVERT() function (Tatsuo) +pg_dumpall, pg_controldata, and pg_resetxlog now national-language aware (Peter) +New and updated translations + + + + + Server-side Languages + +Allow recursive SQL function (Peter) +Change PL/Tcl build to use configured compiler and Makefile.shlib (Peter) +Overhaul the PL/pgSQL FOUND variable to be more Oracle-compatible (Neil, Tom) +Allow PL/pgSQL to handle quoted identifiers (Tom) +Allow set-returning PL/pgSQL functions (Neil) +Make PL/pgSQL schema-aware (Joe) +Remove some memory leaks (Nigel J. Andrews, Tom) + + + + + psql + +Don't lowercase psql \connect database name for 7.2.0 compatibility (Tom) +Add psql \timing to time user queries (Greg Sabino Mullane) +Have psql \d show index information (Greg Sabino Mullane) +New psql \dD shows domains (Jonathan Eisler) +Allow psql to show rules on views (Paul ?) +Fix for psql variable substitution (Tom) +Allow psql \d to show temporary table structure (Tom) +Allow psql \d to show foreign keys (Rod) +Fix \? to honor \pset pager (Bruce) +Have psql reports its version number on startup (Tom) +Allow \copy to specify column names (Tom) + + + + + libpq + +Add ~/.pgpass to store host/user password combinations (Alvaro Herrera) +Add PQunescapeBytea() function to libpq (Patrick Welche) +Fix for sending large queries over non-blocking connections (Bernhard Herzog) +Fix for libpq using timers on Win9X (David Ford) +Allow libpq notify to handle servers with different-length identifiers (Tom) +Add libpq PQescapeString() and PQescapeBytea() to Windows (Bruce) +Fix for SSL with non-blocking connections (Jack Bates) +Add libpq connection timeout parameter (Denis A Ustimenko) + + + + + JDBC + +Allow JDBC to compile with JDK 1.4 (Dave) +Add JDBC 3 support (Barry) +Allows JDBC to set loglevel by adding ?loglevel=X to the connection URL (Barry) +Add Driver.info() message that prints out the version number (Barry) +Add updateable result sets (Raghu Nidagal, Dave) +Add support for callable statements (Paul Bethe) +Add query cancel capability +Add refresh row (Dave) +Fix MD5 encryption handling for multibyte servers (Jun Kawai) +Add support for prepared statements (Barry) + + + + + Miscellaneous Interfaces + +Fixed ECPG bug concerning octal numbers in single quotes (Michael) +Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce) +Improve Python interface (Elliot Lee, Andrew Johnson, Greg Copeland) +Add libpgtcl connection close event (Gerhard Hintermayer) +Move src/interfaces/libpq++ to http://gborg.postgresql.org (Marc, Bruce) +Move src/interfaces/odbc to http://gborg.postgresql.org (Marc) +Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce) +Move src/interfaces/perl5 to http://gborg.postgresql.org (Marc, Bruce) +Remove src/bin/pgaccess from main tree, now at http://www.pgaccess.org (Bruce) +Add pg_on_connection_loss command to libpgtcl (Gerhard Hintermayer, Tom) + + + + + Source Code + +Fix for parallel make (Peter) +AIX fixes for linking Tcl (Andreas Zeugswetter) +Allow PL/Perl to build under Cygwin (Jason Tishler) +Improve MIPS compiles (Peter, Oliver Elphick) +Require Autoconf version 2.53 (Peter) +Require readline and zlib by default in configure (Peter) +Allow Solaris to use Intimate Shared Memory (ISM), for performance (Scott Brunza, P.J. Josh Rovero) +Always enable syslog in compile, remove --enable-syslog option (Tatsuo) +Always enable multibyte in compile, remove --enable-multibyte option (Tatsuo) +Always enable locale in compile, remove --enable-locale option (Peter) +Fix for Win9x DLL creation (Magnus Naeslund) +Fix for link() usage by WAL code on Windows, BeOS (Jason Tishler) +Add sys/types.h to c.h, remove from main files (Peter, Bruce) +Fix AIX hang on SMP machines (Tomoyuki Niijima) +AIX SMP hang fix (Tomoyuki Niijima) +Fix pre-1970 date handling on newer glibc libraries (Tom) +Fix PowerPC SMP locking (Tom) +Prevent gcc -ffast-math from being used (Peter, Tom) +Bison >= 1.50 now required for developer builds +Kerberos 5 support now builds with Heimdal (Peter) +Add appendix in the User's Guide which lists SQL features (Thomas) +Improve loadable module linking to use RTLD_NOW (Tom) +New error levels WARNING, INFO, LOG, DEBUG[1-5] (Bruce) +New src/port directory holds replaced libc functions (Peter, Bruce) +New pg_namespace system catalog for schemas (Tom) +Add pg_class.relnamespace for schemas (Tom) +Add pg_type.typnamespace for schemas (Tom) +Add pg_proc.pronamespace for schemas (Tom) +Restructure aggregates to have pg_proc entries (Tom) +System relations now have their own namespace, pg_* test not required (Fernando Nasser) +Rename TOAST index names to be *_index rather than *_idx (Neil) +Add namespaces for operators, opclasses (Tom) +Add additional checks to server control file (Thomas) +New Polish FAQ (Marcin Mazurek) +Add Posix semaphore support (Tom) +Document need for reindex (Bruce) +Rename some internal identifiers to simplify Windows compile (Jan, Katherine Ward) +Add documentation on computing disk space (Bruce) +Remove KSQO from GUC (Bruce) +Fix memory leak in rtree (Kenneth Been) +Modify a few error messages for consistency (Bruce) +Remove unused system table columns (Peter) +Make system columns NOT NULL where appropriate (Tom) +Clean up use of sprintf in favor of snprintf() (Neil, Jukka Holappa) +Remove OPAQUE and create specific subtypes (Tom) +Cleanups in array internal handling (Joe, Tom) +Disallow pg_atoi('') (Bruce) +Remove parameter wal_files because WAL files are now recycled (Bruce) +Add version numbers to heap pages (Tom) + + + + + Contrib + +Allow inet arrays in /contrib/array (Neil) +GiST fixes (Teodor Sigaev, Neil) +Upgrade /contrib/mysql +Add /contrib/dbsize which shows table sizes without vacuum (Peter) +Add /contrib/intagg, integer aggregator routines (mlw) +Improve /contrib/oid2name (Neil, Bruce) +Improve /contrib/tsearch (Oleg, Teodor Sigaev) +Cleanups of /contrib/rserver (Alexey V. Borzov) +Update /contrib/oracle conversion utility (Gilles Darold) +Update /contrib/dblink (Joe) +Improve options supported by /contrib/vacuumlo (Mario Weilguni) +Improvements to /contrib/intarray (Oleg, Teodor Sigaev, Andrey Oktyabrski) +Add /contrib/reindexdb utility (Shaun Thomas) +Add indexing to /contrib/isbn_issn (Dan Weston) +Add /contrib/dbmirror (Steven Singer) +Improve /contrib/pgbench (Neil) +Add /contrib/tablefunc table function examples (Joe) +Add /contrib/ltree data type for tree structures (Teodor Sigaev, Oleg Bartunov) +Move /contrib/pg_controldata, pg_resetxlog into main tree (Bruce) +Fixes to /contrib/cube (Bruno Wolff) +Improve /contrib/fulltextindex (Christopher) + + + + + + + + Release 7.2.8 + + + Release date + 2005-05-09 + + + + This release contains a variety of fixes from 7.2.7, including one + security-related issue. + + + + Migration to Version 7.2.8 + + + A dump/restore is not required for those running 7.2.X. + + + + + Changes + + +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 +This is an extremely serious bug since it could lead to apparent +data inconsistencies being briefly visible to applications. +Repair race condition between relation extension and +VACUUM +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. + +Fix EXTRACT(EPOCH) for +TIME WITH TIME ZONE values +Additional buffer overrun checks in plpgsql +(Neil) +Fix pg_dump to dump index names and trigger names containing +% correctly (Neil) +Prevent to_char(interval) from dumping core for +month-related formats +Fix contrib/pgcrypto for newer OpenSSL builds +(Marko Kreen) + + + + + + + Release 7.2.7 + + + Release date + 2005-01-31 + + + + This release contains a variety of fixes from 7.2.6, including several + security-related issues. + + + + Migration to Version 7.2.7 + + + A dump/restore is not required for those running 7.2.X. + + + + + Changes + + +Disallow LOAD to non-superusers + +On platforms that will automatically execute initialization functions of a +shared library (this includes at least Windows and ELF-based Unixen), +LOAD can be used to make the server execute arbitrary code. +Thanks to NGS Software for reporting this. +Add needed STRICT marking to some contrib functions (Kris +Jurka) +Avoid buffer overrun when plpgsql cursor declaration has too +many parameters (Neil) +Fix planning error for FULL and RIGHT outer joins + +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. + +Fix display of negative intervals in SQL and GERMAN +datestyles + + + + + + + Release 7.2.6 + + + Release date + 2004-10-22 + + + + This release contains a variety of fixes from 7.2.5. + + + + + Migration to Version 7.2.6 + + + A dump/restore is not required for those running 7.2.X. + + + + + Changes + + +Repair possible failure to update hint bits on disk + +Under rare circumstances this oversight could lead to +could not access transaction status failures, which qualifies +it as a potential-data-loss bug. + +Ensure that hashed outer join does not miss tuples + +Very large left joins using a hash join plan could fail to output unmatched +left-side rows given just the right data distribution. + +Disallow running pg_ctl as root + +This is to guard against any possible security issues. + +Avoid using temp files in /tmp in make_oidjoins_check + +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. + +Update to newer versions of Bison + + + + + + + Release 7.2.5 + + + Release date + 2004-08-16 + + + + This release contains a variety of fixes from 7.2.4. + + + + + Migration to Version 7.2.5 + + + A dump/restore is not required for those running 7.2.X. + + + + + Changes + + +Prevent possible loss of committed transactions during crash + +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 PostgreSQL 7.1. + +Fix corner case for btree search in parallel with first root page split +Fix buffer overrun in to_ascii (Guido Notari) +Fix core dump in deadlock detection on machines where char is unsigned +Fix failure to respond to pg_ctl stop -m fast after Async_NotifyHandler runs +Repair memory leaks in pg_dump +Avoid conflict with system definition of isblank() function or macro + + + + + + Release 7.2.4 + + + Release date + 2003-01-30 + + + + This release contains a variety of fixes for version 7.2.3, + including fixes to prevent possible data loss. + + + + Migration to Version 7.2.4 + + + A dump/restore is not required for those + running version 7.2.*. + + + + + Changes + + +Fix some additional cases of VACUUM "No one parent tuple was found" error +Prevent VACUUM from being called inside a function (Bruce) +Ensure pg_clog updates are sync'd to disk before marking checkpoint complete +Avoid integer overflow during large hash joins +Make GROUP commands work when pg_group.grolist is large enough to be toasted +Fix errors in datetime tables; some timezone names weren't being recognized +Fix integer overflows in circle_poly(), path_encode(), path_add() (Neil) +Repair long-standing logic errors in lseg_eq(), lseg_ne(), lseg_center() + + + + + + + Release 7.2.3 + + + Release date + 2002-10-01 + + + + This release contains a variety of fixes for version 7.2.2, + including fixes to prevent possible data loss. + + + + Migration to Version 7.2.3 + + + A dump/restore is not required for those + running version 7.2.*. + + + + + Changes + + +Prevent possible compressed transaction log loss (Tom) +Prevent non-superuser from increasing most recent vacuum info (Tom) +Handle pre-1970 date values in newer versions of glibc (Tom) +Fix possible hang during server shutdown +Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima) +Fix pg_dump to properly dump FULL JOIN USING (Tom) + + + + + + + Release 7.2.2 + + + Release date + 2002-08-23 + + + + This release contains a variety of fixes for version 7.2.1. + + + + Migration to Version 7.2.2 + + + A dump/restore is not required for those + running version 7.2.*. + + + + + Changes + + +Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom) +Fix for compressed transaction log id wraparound (Tom) +Fix PQescapeBytea/PQunescapeBytea so that they handle bytes > 0x7f (Tatsuo) +Fix for psql and pg_dump crashing when invoked with non-existent long options (Tatsuo) +Fix crash when invoking geometric operators (Tom) +Allow OPEN cursor(args) (Tom) +Fix for rtree_gist index build (Teodor) +Fix for dumping user-defined aggregates (Tom) +contrib/intarray fixes (Oleg) +Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom) +Fix to pg_convert (Tatsuo) +Fix for crash with long DATA strings (Thomas, Neil) +Fix for repeat(), lpad(), rpad() and long strings (Neil) + + + + + + + Release 7.2.1 + + + Release date + 2002-03-21 + + + + This release contains a variety of fixes for version 7.2. + + + + Migration to Version 7.2.1 + + + A dump/restore is not required for those + running version 7.2. + + + + + Changes + + +Ensure that sequence counters do not go backwards after a crash (Tom) +Fix pgaccess kanji-conversion key binding (Tatsuo) +Optimizer improvements (Tom) +Cash I/O improvements (Tom) +New Russian FAQ +Compile fix for missing AuthBlockSig (Heiko) +Additional time zones and time zone fixes (Thomas) +Allow psql \connect to handle mixed case database and user names (Tom) +Return proper OID on command completion even with ON INSERT rules (Tom) +Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo) +Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo) +Improve handling of multiple UNIONs with different lengths (Tom) +contrib/btree_gist improvements (Teodor Sigaev) +contrib/tsearch dictionary improvements, see README.tsearch for an additional installation step (Thomas T. Thai, Teodor Sigaev) +Fix for array subscripts handling (Tom) +Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom) + + + + + + + Release 7.2 + + + Release date + 2002-02-04 + + + + Overview + + + This release improves PostgreSQL for use in + high-volume applications. + + + + Major changes in this release: + + + + + VACUUM + + + Vacuuming no longer locks tables, thus allowing normal user + access during the vacuum. A new VACUUM FULL + command does old-style vacuum by locking the table and + shrinking the on-disk copy of the table. + + + + + + Transactions + + + There is no longer a problem with installations that exceed + four billion transactions. + + + + + + OIDs + + + OIDs are now optional. Users can now create tables without + OIDs for cases where OID usage is excessive. + + + + + + Optimizer + + + The system now computes histogram column statistics during + ANALYZE, allowing much better optimizer choices. + + + + + + Security + + + 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. + + + + + + Statistics + + + Administrators can use the new table access statistics module + to get fine-grained information about table and index usage. + + + + + + Internationalization + + + Program and library messages can now be displayed in several + languages. + + + + + + + + + Migration to Version 7.2 + + + A dump/restore using pg_dump is required for + those wishing to migrate data from any previous release. + + + + Observe the following incompatibilities: + + + + + + The semantics of the VACUUM command have + changed in this release. You might wish to update your + maintenance procedures accordingly. + + + + + + In this release, comparisons using = NULL + will always return false (or NULL, more precisely). Previous + releases automatically transformed this syntax to IS + NULL. The old behavior can be re-enabled using a + postgresql.conf parameter. + + + + + + The pg_hba.conf and pg_ident.conf + configuration is now only reloaded after receiving a + SIGHUP signal, not with each connection. + + + + + + The function octet_length() now returns the uncompressed data length. + + + + + + The date/time value 'current' is no longer + available. You will need to rewrite your applications. + + + + + + The timestamp(), time(), + and interval() functions are no longer + available. Instead of timestamp(), use + timestamp 'string' or CAST. + + + + + + + The SELECT ... LIMIT #,# syntax will be removed + in the next release. You should change your queries to use + separate LIMIT and OFFSET clauses, e.g. LIMIT 10 OFFSET + 20. + + + + + Changes + + + Server Operation + +Create temporary files in a separate directory (Bruce) +Delete orphaned temporary files on postmaster startup (Bruce) +Added unique indexes to some system tables (Tom) +System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom) +Renamed pg_log to pg_clog (Tom) +Enable SIGTERM, SIGQUIT to kill backends (Jan) +Removed compile-time limit on number of backends (Tom) +Better cleanup for semaphore resource failure (Tatsuo, Tom) +Allow safe transaction ID wraparound (Tom) +Removed OIDs from some system tables (Tom) +Removed "triggered data change violation" error check (Tom) +SPI portal creation of prepared/saved plans (Jan) +Allow SPI column functions to work for system columns (Tom) +Long value compression improvement (Tom) +Statistics collector for table, index access (Jan) +Truncate extra-long sequence names to a reasonable value (Tom) +Measure transaction times in milliseconds (Thomas) +Fix TID sequential scans (Hiroshi) +Superuser ID now fixed at 1 (Peter E) +New pg_ctl "reload" option (Tom) + + + + + Performance + +Optimizer improvements (Tom) +New histogram column statistics for optimizer (Tom) +Reuse write-ahead log files rather than discarding them (Tom) +Cache improvements (Tom) +IS NULL, IS NOT NULL optimizer improvement (Tom) +Improve lock manager to reduce lock contention (Tom) +Keep relcache entries for index access support functions (Tom) +Allow better selectivity with NaN and infinities in NUMERIC (Tom) +R-tree performance improvements (Kenneth Been) +B-tree splits more efficient (Tom) + + + + + Privileges + +Change UPDATE, DELETE privileges to be distinct (Peter E) +New REFERENCES, TRIGGER privileges (Peter E) +Allow GRANT/REVOKE to/from more than one user at a time (Peter E) +New has_table_privilege() function (Joe Conway) +Allow non-superuser to vacuum database (Tom) +New SET SESSION AUTHORIZATION command (Peter E) +Fix bug in privilege modifications on newly created tables (Tom) +Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom) + + + + + Client Authentication + +Fork postmaster before doing authentication to prevent hangs (Peter E) +Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce) +Add a password authentication method that uses MD5 encryption (Bruce) +Allow encryption of stored passwords using MD5 (Bruce) +PAM authentication (Dominic J. Eidson) +Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce) + + + + + Server Configuration + +Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce) +New parameter to set default transaction isolation level (Peter E) +New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E) +New parameter to control memory usage by VACUUM (Tom) +New parameter to set client authentication timeout (Tom) +New parameter to set maximum number of open files (Tom) + + + + + Queries + +Statements added by INSERT rules now execute after the INSERT (Jan) +Prevent unadorned relation names in target list (Bruce) +NULLs now sort after all normal values in ORDER BY (Tom) +New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom) +New SHARE UPDATE EXCLUSIVE lock mode (Tom) +New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout) +Fix problem with LIMIT and subqueries (Tom) +Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom) +Fix nested EXCEPT/INTERSECT (Tom) + + + + + Schema Manipulation + +Fix SERIAL in temporary tables (Bruce) +Allow temporary sequences (Bruce) +Sequences now use int8 internally (Tom) +New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom) +Make OIDs optional using WITHOUT OIDS (Tom) +Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor) +Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne) +New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry) +Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne) +Allow column renaming in views +Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner) +Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo) +ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner) +DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom) +Add automatic return type data casting for SQL functions (Tom) +Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom) +Enable partial indexes (Martijn van Oosterhout) + + + + + Utility Commands + +Add RESET ALL, SHOW ALL (Marko Kreen) +CREATE/ALTER USER/GROUP now allow options in any order (Vince) +Add LOCK A, B, C functionality (Neil Padgett) +New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce) +New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom) +Disable COPY TO/FROM on views (Bruce) +COPY DELIMITERS string must be exactly one character (Tom) +VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout) +Fix privilege checks for CREATE INDEX (Tom) +Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom) + + + + + Data Types and Functions + +SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom) +Add convert(), convert2() (Tatsuo) +New function bit_length() (Peter E) +Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo) +CHAR(), VARCHAR() now reject strings that are too long (Peter E) +BIT VARYING now rejects bit strings that are too long (Peter E) +BIT now rejects bit strings that do not match declared size (Peter E) +INET, CIDR text conversion functions (Alex Pilosov) +INET, CIDR operators << and <<= indexable (Alex Pilosov) +Bytea \### now requires valid three digit octal number +Bytea comparison improvements, now supports =, <>, >, >=, <, and <= +Bytea now supports B-tree indexes +Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE +Bytea now supports concatenation +New bytea functions: position, substring, trim, btrim, and length +New encode() function mode, "escaped", converts minimally escaped bytea to/from text +Add pg_database_encoding_max_length() (Tatsuo) +Add pg_client_encoding() function (Tatsuo) +now() returns time with millisecond precision (Thomas) +New TIMESTAMP WITHOUT TIMEZONE data type (Thomas) +Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas) +New xid/int comparison functions (Hiroshi) +Add precision to TIME, TIMESTAMP, and INTERVAL data types (Thomas) +Modify type coercion logic to attempt binary-compatible functions first (Tom) +New encode() function installed by default (Marko Kreen) +Improved to_*() conversion functions (Karel Zak) +Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo) +New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen) +Correct description of translate() function (Bruce) +Add INTERVAL argument for SET TIME ZONE (Thomas) +Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas) +Optimize length functions when using single-byte encodings (Tatsuo) +Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom) +octet_length(text) now returns non-compressed length (Tatsuo, Bruce) +Handle "July" full name in date/time literals (Greg Sabino Mullane) +Some datatype() function calls now evaluated differently +Add support for Julian and ISO time specifications (Thomas) + + + + + Internationalization + +National language support in psql, pg_dump, libpq, and server (Peter E) +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) +Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo) +Add LATIN5,6,7,8,9,10 support (Tatsuo) +Add ISO 8859-5,6,7,8 support (Tatsuo) +Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo) +Make mic2ascii() non-ASCII aware (Tatsuo) +Reject invalid multibyte character sequences (Tatsuo) + + + + + <application>PL/pgSQL</> + +Now uses portals for SELECT loops, allowing huge result sets (Jan) +CURSOR and REFCURSOR support (Jan) +Can now return open cursors (Jan) +Add ELSEIF (Klaus Reger) +Improve PL/pgSQL error reporting, including location of error (Tom) +Allow IS or FOR key words in cursor declaration, for compatibility (Bruce) +Fix for SELECT ... FOR UPDATE (Tom) +Fix for PERFORM returning multiple rows (Tom) +Make PL/pgSQL use the server's type coercion code (Tom) +Memory leak fix (Jan, Tom) +Make trailing semicolon optional (Tom) + + + + + PL/Perl + +New untrusted PL/Perl (Alex Pilosov) +PL/Perl is now built on some platforms even if libperl is not shared (Peter E) + + + + + PL/Tcl + +Now reports errorInfo (Vsevolod Lobko) +Add spi_lastoid function (bob@redivi.com) + + + + + PL/Python + +...is new (Andrew Bosma) + + + + + <application>psql</> + +\d displays indexes in unique, primary groupings (Christopher Kings-Lynne) +Allow trailing semicolons in backslash commands (Greg Sabino Mullane) +Read password from /dev/tty if possible +Force new password prompt when changing user and database (Tatsuo, Tom) +Format the correct number of columns for Unicode (Patrice) + + + + + <application>libpq</> + +New function PQescapeString() to escape quotes in command strings (Florian Weimer) +New function PQescapeBytea() escapes binary strings for use as SQL string literals + + + + + JDBC + +Return OID of INSERT (Ken K) +Handle more data types (Ken K) +Handle single quotes and newlines in strings (Ken K) +Handle NULL variables (Ken K) +Fix for time zone handling (Barry Lind) +Improved Druid support +Allow eight-bit characters with non-multibyte server (Barry Lind) +Support BIT, BINARY types (Ned Wolpert) +Reduce memory usage (Michael Stephens, Dave Cramer) +Update DatabaseMetaData (Peter E) +Add DatabaseMetaData.getCatalogs() (Peter E) +Encoding fixes (Anders Bengtsson) +Get/setCatalog methods (Jason Davies) +DatabaseMetaData.getColumns() now returns column defaults (Jason Davies) +DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen) +Some JDBC1 and JDBC2 merging (Anders Bengtsson) +Transaction performance improvements (Barry Lind) +Array fixes (Greg Zoller) +Serialize addition +Fix batch processing (Rene Pijlman) +ExecSQL method reorganization (Anders Bengtsson) +GetColumn() fixes (Jeroen van Vianen) +Fix isWriteable() function (Rene Pijlman) +Improved passage of JDBC2 conformance tests (Rene Pijlman) +Add bytea type capability (Barry Lind) +Add isNullable() (Rene Pijlman) +JDBC date/time test suite fixes (Liam Stewart) +Fix for SELECT 'id' AS xxx FROM table (Dave Cramer) +Fix DatabaseMetaData to show precision properly (Mark Lillywhite) +New getImported/getExported keys (Jason Davies) +MD5 password encryption support (Jeremy Wohl) +Fix to actually use type cache (Ned Wolpert) + + + + + ODBC + +Remove query size limit (Hiroshi) +Remove text field size limit (Hiroshi) +Fix for SQLPrimaryKeys in multibyte mode (Hiroshi) +Allow ODBC procedure calls (Hiroshi) +Improve boolean handing (Aidan Mountford) +Most configuration options now settable via DSN (Hiroshi) +Multibyte, performance fixes (Hiroshi) +Allow driver to be used with iODBC or unixODBC (Peter E) +MD5 password encryption support (Bruce) +Add more compatibility functions to odbc.sql (Peter E) + + + + + <application>ECPG</> + +EXECUTE ... INTO implemented (Christof Petig) +Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig) +Fix for GRANT parameters (Lee Kindness) +Fix INITIALLY DEFERRED bug +Various bug fixes (Michael, Christof Petig) +Auto allocation for indicator variable arrays (int *ind_p=NULL) +Auto allocation for string arrays (char **foo_pp=NULL) +ECPGfree_auto_mem fixed +All function names with external linkage are now prefixed by ECPG +Fixes for arrays of structures (Michael) + + + + + Misc. Interfaces + +Python fix fetchone() (Gerhard Haring) +Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max) +Add Tcl COPY TO/FROM (ljb) +Prevent output of default index op class in pg_dump (Tom) +Fix libpgeasy memory leak (Bruce) + + + + + Build and Install + +Configure, dynamic loader, and shared library fixes (Peter E) +Fixes in QNX 4 port (Bernd Tegge) +Fixes in Cygwin and Windows ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov) +Fix for Windows socket communication failures (Magnus, Mikhail Terekhov) +Hurd compile fix (Oliver Elphick) +BeOS fixes (Cyril Velter) +Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo) +AIX fixes (Tatsuo, Andreas) +Fix parallel make (Peter E) +Install SQL language manual pages into OS-specific directories (Peter E) +Rename config.h to pg_config.h (Peter E) +Reorganize installation layout of header files (Peter E) + + + + + Source Code + +Remove SEP_CHAR (Bruce) +New GUC hooks (Tom) +Merge GUC and command line handling (Marko Kreen) +Remove EXTEND INDEX (Martijn van Oosterhout, Tom) +New pgjindent utility to indent java code (Bruce) +Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom) +pgindent fixes (Bruce, Tom) +Replace strcasecmp() with strcmp() where appropriate (Peter E) +Dynahash portability improvements (Tom) +Add 'volatile' usage in spinlock structures +Improve signal handling logic (Tom) + + + + + Contrib + +New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev) +New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev) +Add contrib/dblink for remote database access (Joe Conway) +contrib/ora2pg Oracle conversion utility (Gilles Darold) +contrib/xml XML conversion utility (John Gray) +contrib/fulltextindex fixes (Christopher Kings-Lynne) +New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway) +Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov) +New pg_upgrade utility (Bruce) +Add new pg_resetxlog options (Bruce, Tom) + + + + + + + + Release 7.1.3 + + + Release date + 2001-08-15 + + + + Migration to Version 7.1.3 + + + A dump/restore is not required for those running + 7.1.X. + + + + + Changes + + + +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) + + + + + + + + Release 7.1.2 + + + Release date + 2001-05-11 + + + + This has one fix from 7.1.1. + + + + + Migration to Version 7.1.2 + + + A dump/restore is not required for those running + 7.1.X. + + + + + Changes + + + +Fix PL/pgSQL SELECTs when returning no rows +Fix for psql backslash core dump +Referential integrity privilege fix +Optimizer fixes +pg_dump cleanups + + + + + + + + Release 7.1.1 + + + Release date + 2001-05-05 + + + + This has a variety of fixes from 7.1. + + + + + Migration to Version 7.1.1 + + + A dump/restore is not required for those running + 7.1. + + + + + Changes + + + +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) + + + + + + + + Release 7.1 + + + Release date + 2001-04-13 + + + + This release focuses on removing limitations that have existed in the + PostgreSQL code for many years. + + + + Major changes in this release: + + + + + + Write-ahead Log (WAL) + + + +To maintain database consistency in case of an operating system crash, +previous releases of PostgreSQL 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. + + + + + + + TOAST + + + + 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. + + + + + + + Outer Joins + + + +We now support outer joins. The UNION/NOT IN +workaround for outer joins is no longer required. We use the SQL92 +outer join syntax. + + + + + + + Function Manager + + + +The previous C function manager did not +handle null values properly, nor did it support 64-bit CPU'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. + + + + + + + Complex Queries + + + +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. + + + + + + + + Migration to Version 7.1 + + + A dump/restore using pg_dump is required for those wishing to migrate + data from any previous release. + + + + + Changes + + + +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 + + + + + + + + Release 7.0.3 + + + Release date + 2000-11-11 + + + + This has a variety of fixes from 7.0.2. + + + + + Migration to Version 7.0.3 + + + A dump/restore is not required for those running + 7.0.*. + + + + + Changes + + + +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) + + + + + + + + Release 7.0.2 + + + Release date + 2000-06-05 + + + + This is a repackaging of 7.0.1 with added documentation. + + + + + Migration to Version 7.0.2 + + + A dump/restore is not required for those running + 7.*. + + + + + Changes + + + +Added documentation to tarball. + + + + + + + + Release 7.0.1 + + + Release date + 2000-06-01 + + + + This is a cleanup release for 7.0. + + + + Migration to Version 7.0.1 + + + A dump/restore is not required for those running + 7.0. + + + + + Changes + + + +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) + + + + + + + Release 7.0 + + + Release date + 2000-05-08 + + + + This release contains improvements in many areas, demonstrating + the continued growth of PostgreSQL. + 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. + + + + Major changes in this release: + + + + + + Foreign Keys + + + + 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. + + + + + + + Optimizer Overhaul + + + + Continuing on work started a year ago, the optimizer has been + improved, allowing better query plan selection and faster performance + with less memory usage. + + + + + + + Updated psql + + + + psql, our interactive terminal monitor, has been + updated with a variety of new features. See the psql manual page for details. + + + + + + + Join Syntax + + + + SQL92 join syntax is now supported, though only as + INNER JOIN for this release. JOIN, + NATURAL JOIN, JOIN/USING, + and JOIN/ON are available, as are + column correlation names. + + + + + + + + Migration to Version 7.0 + + + A dump/restore using pg_dump + is required for those wishing to migrate data from any + previous release of PostgreSQL. + For those upgrading from 6.5.*, you can instead use + pg_upgrade to upgrade to this + release; however, a full dump/reload installation is always the + most robust method for upgrades. + + + + Interface and compatibility issues to consider for the new + release include: + + + + + + The date/time types datetime and + timespan have been superseded by the + SQL92-defined types timestamp and + interval. Although there has been some effort to + ease the transition by allowing + PostgreSQL to recognize + the deprecated type names and translate them to the new type + names, this mechanism cannot be completely transparent to + your existing application. + + + + + + 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. + + + + + + The JDBC and ODBC + interfaces have been upgraded and extended. + + + + + + The string function CHAR_LENGTH is now a + native function. Previous versions translated this into a call + to LENGTH, which could result in + ambiguity with other types implementing + LENGTH such as the geometric types. + + + + + + + Changes + + + +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 jens@jens.de) +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 mascarim@yahoo.com) +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 gatgul@voicenet.com +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 lamj@stat.cmu.edu) +Fixes for Alpha compiles +New multibyte encodings + + + + + + + Release 6.5.3 + + + Release date + 1999-10-13 + + + + This is basically a cleanup release for 6.5.2. We have added a new + PgAccess that was missing in 6.5.2, and installed an NT-specific fix. + + + + + Migration to Version 6.5.3 + + + A dump/restore is not required for those running + 6.5.*. + + + + Changes + + + +Updated version of pgaccess 0.98 +NT-specific patch +Fix dumping rules on inherited tables + + + + + + + + Release 6.5.2 + + + Release date + 1999-09-15 + + + + This is basically a cleanup release for 6.5.1. We have fixed a variety of + problems reported by 6.5.1 users. + + + + + Migration to Version 6.5.2 + + + A dump/restore is not required for those running + 6.5.*. + + + + + Changes + + + +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 + + + + + + + Release 6.5.1 + + + Release date + 1999-07-15 + + + + This is basically a cleanup release for 6.5. We have fixed a variety of + problems reported by 6.5 users. + + + + Migration to Version 6.5.1 + + + A dump/restore is not required for those running + 6.5. + + + + + Changes + + + +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) + + + + + + + Release 6.5 + + + Release date + 1999-06-09 + + + + 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. + + + + Here is a brief summary of the more notable changes: + + + + + Multiversion concurrency control(MVCC) + + + + 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 + PostgreSQL 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. + + + + + + + Hot backups from pg_dump + + + + pg_dump takes advantage of the new + MVCC features to give a consistent database dump/backup while + the database stays online and available for queries. + + + + + + + Numeric data type + + + + We now have a true numeric data type, with + user-specified precision. + + + + + + + Temporary tables + + + + Temporary tables are guaranteed to have unique names + within a database session, and are destroyed on session exit. + + + + + + + New SQL features + + + + 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. + + + + + + + Speedups + + + + We continue to speed up PostgreSQL, + thanks to the variety of talents within our team. We have + sped up memory allocation, optimization, table joins, and row + transfer routines. + + + + + + + Ports + + + + We continue to expand our port list, this time including + Windows NT/ix86 and NetBSD/arm32. + + + + + + + Interfaces + + + + Most interfaces have new versions, and existing functionality + has been improved. + + + + + + + Documentation + + + + New and updated material is present throughout the + documentation. New FAQs have been + contributed for SGI and AIX platforms. + The Tutorial has introductory information + on SQL from Stefan Simkovics. + For the User's Guide, there are + reference pages covering the postmaster and more utility + programs, and a new appendix + contains details on date/time behavior. + The Administrator's Guide has a new + chapter on troubleshooting from Tom Lane. + And the Programmer's Guide has a + description of query processing, also from Stefan, and details + on obtaining the PostgreSQL source + tree via anonymous CVS and + CVSup. + + + + + + + + Migration to Version 6.5 + + + A dump/restore using pg_dump + is required for those wishing to migrate data from any + previous release of PostgreSQL. + pg_upgrade can not + be used to upgrade to this release because the on-disk structure + of the tables has changed compared to previous releases. + + + + The new Multiversion Concurrency Control (MVCC) features can + give somewhat different behaviors in multiuser + environments. Read and understand the following section + to ensure that your existing applications will give you the + behavior you need. + + + + Multiversion Concurrency Control + + + 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 + SELECT 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. + + + + To ensure the actual existence of a row and protect it against + concurrent updates one must use SELECT FOR UPDATE or + an appropriate LOCK TABLE statement. This should be + taken into account when porting applications from previous releases of + PostgreSQL and other environments. + + + + Keep the above in mind if you are using + contrib/refint.* triggers for + referential integrity. Additional techniques are required now. One way is + to use LOCK parent_table IN SHARE ROW EXCLUSIVE MODE + command if a transaction is going to update/delete a primary key and + use LOCK parent_table IN SHARE MODE command if a + transaction is going to update/insert a foreign key. + + + + Note that if you run a transaction in SERIALIZABLE mode then you must + execute the LOCK commands above before execution of any + DML statement + (SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO) in the + transaction. + + + + + + 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. + + + + + + Changes + + + +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) + + + + + + + +Release 6.4.2 + + + Release date + 1998-12-20 + + + +The 6.4.1 release was improperly packaged. This also has one additional +bug fix. + + + + +Migration to Version 6.4.2 + + +A dump/restore is not required for those running +6.4.*. + + + +Changes + + + +Fix for datetime constant problem on some platforms(Thomas) + + + + + + + + +Release 6.4.1 + + + Release date + 1998-12-18 + + + +This is basically a cleanup release for 6.4. We have fixed a variety of +problems reported by 6.4 users. + + + + +Migration to Version 6.4.1 + + +A dump/restore is not required for those running +6.4. + + + +Changes + + + +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) + + + + + + + + +Release 6.4 + + + Release date + 1998-10-30 + + + +There are many 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: + + + + +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 Programmer's Guide. + + + + +Jan also contributed a second procedural language, PL/pgSQL, to go with the +original PL/pgTCL procedural language he contributed last release. + + + + + +We have optional multiple-byte character set support from Tatsuo Ishii +to complement our existing locale support. + + + + + +Client/server communications has been cleaned up, with better support for +asynchronous messages and interrupts thanks to Tom Lane. + + + + + +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 PostgreSQL. +There is a new chapter in the User's Guide +which covers this topic. + + + + + +Three new data types have been added. +Two types, inet and cidr, 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 User's Guide for details. +A fourth type, serial, is now supported by the parser as an +amalgam of the int4 type, a sequence, and a unique index. + + + + + +Several more SQL92-compatible syntax features have been +added, including INSERT DEFAULT VALUES + + + + + +The automatic configuration and installation system has received some +attention, and should be more robust for more platforms than it has ever +been. + + + + + + + +Migration to Version 6.4 + + +A dump/restore using pg_dump +or pg_dumpall +is required for those wishing to migrate data from any +previous release of PostgreSQL. + + + + +Changes + + + +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) + + + + + + +Release 6.3.2 + + + Release date + 1998-04-07 + + + +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. + + +Summary: + + + + +Repairs automatic configuration support for some platforms, including Linux, +from breakage inadvertently introduced in version 6.3.1. + + + + + +Correctly handles function calls on the left side of BETWEEN and LIKE clauses. + + + + + + +A dump/restore is NOT required for those running 6.3 or 6.3.1. A +make distclean, make, and 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 PostgreSQL libraries. + + +For upgrades from pre-6.3 installations, +refer to the installation and migration instructions for version 6.3. + + + + Changes + + + +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) + + + + + + + Release 6.3.1 + + + Release date + 1998-03-23 + + + + Summary: + + + + +Additional support for multibyte character sets. + + + + + +Repair byte ordering for mixed-endian clients and servers. + + + + + +Minor updates to allowed SQL syntax. + + + + + +Improvements to the configuration autodetection for installation. + + + + + + +A dump/restore is NOT required for those running 6.3. A +make distclean, make, and 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 PostgreSQL libraries. + + +For upgrades from pre-6.3 installations, +refer to the installation and migration instructions for version 6.3. + + + + Changes + + + +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) + + + + + + + Release 6.3 + + + Release date + 1998-03-01 + + + + There are many new features and improvements in this release. + Here is a brief, incomplete summary: + + + + + Many new SQL features, including + full SQL92 subselect capability + (everything is here but target-list subselects). + + + + + + Support for client-side environment variables to specify time zone and date style. + + + + + + Socket interface for client/server connection. This is the default now + so you might need to start postmaster with the + flag. + + + + + + Better password authorization mechanisms. Default table privileges have changed. + + + + + + Old-style time travel + has been removed. Performance has been improved. + + + + + + + + Bruce Momjian wrote the following notes to introduce the new release. + + + + + 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. + + + 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. + + + 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 pg_hba.conf. Also, for this + reason, the format of pg_hba.conf has changed. + + + Third, char() fields will now allow faster access than varchar() or + text. Specifically, the text and varchar() have a penalty for access to + any columns after the first column of this type. char() 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 varchar() or text. This and other + changes make 6.3 even faster than earlier releases. + + + We now have passwords definable independent of any Unix file. There are + new SQL USER commands. + See the Administrator's Guide 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 postgres 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. + + + 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. + + + We also have real deadlock detection code. No more sixty-second + timeouts. And the new locking code implements a FIFO better, so there + should be less resource starvation during heavy use. + + + 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. + + + For performance reasons, time travel is gone, but can be implemented + using triggers (see pgsql/contrib/spi/README). 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 /pgsql/interfaces for some new + ways to talk to PostgreSQL. + + + 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. + + + + Migration to Version 6.3 + + + A dump/restore using pg_dump + or pg_dumpall + is required for those wishing to migrate data from any + previous release of PostgreSQL. + + + + + Changes + + + +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 PostgreSQL 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 PostgreSQL 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) + + + + + + +Release 6.2.1 + + + Release date + 1997-10-17 + + + +6.2.1 is a bug-fix and usability release on 6.2. + + +Summary: + + + + +Allow strings to span lines, per SQL92. + + + + + +Include example trigger function for inserting user names on table updates. + + + + + + +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. + + + +Migration from version 6.2 to version 6.2.1 + + +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. + + +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. + + +Another way to avoid dump/reload is to use the following SQL command +from psql to update the existing system table: + + + update pg_aggregate set aggfinalfn = 'cash_div_flt8' + where aggname = 'avg' and aggbasetype = 790; + + + +This will need to be done to every existing database, including template1. + + + + + Changes + + + +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) + + + + + + +Release 6.2 + + + Release date + 1997-10-02 + + + +A dump/restore is required for those wishing to migrate data from +previous releases of PostgreSQL. + + + +Migration from version 6.1 to version 6.2 + + +This migration requires a complete dump of the 6.1 database and a +restore of the database in 6.2. + + +Note that the pg_dump and pg_dumpall utility from 6.2 should be used +to dump the 6.1 database. + + + + +Migration from version 1.<replaceable>x</> to version 6.2 + + +Those migrating from earlier 1.* releases should first upgrade to 1.09 +because the COPY output format was improved from the 1.02 release. + + + + + Changes + + + +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) + + + + + + +Release 6.1.1 + + + Release date + 1997-07-22 + + + +Migration from version 6.1 to version 6.1.1 + + +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. + + + + + Changes + + + +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) + + + + + + +Release 6.1 + + + Release date + 1997-06-08 + + + + The regression tests have been adapted and extensively modified for the + 6.1 release of PostgreSQL. + + + + Three new data types (datetime, timespan, and circle) have been added to + the native set of PostgreSQL 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. + + + + PostgreSQL 6.1 introduces a new, alternate +optimizer which uses genetic + 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 + set geqo to 'off' and reset geqo. + + + + 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 ./expected/*.out files reflect this + new interpretation, which might not be correct! + + + + The float8 regression test fails on at least some platforms. This is due + to differences in implementations of pow() and exp() and the signaling + mechanisms used for overflow and underflow conditions. + + + + The random results in the random test should cause the + random test to be failed, since the + regression tests are evaluated using a simple diff. However, + random does not seem to produce random results on my test + machine (Linux/gcc/i686). + + + +Migration to Version 6.1 + + +This migration requires a complete dump of the 6.0 database and a +restore of the database in 6.1. + + +Those migrating from earlier 1.* releases should first upgrade to 1.09 +because the COPY output format was improved from the 1.02 release. + + + + + Changes + + + +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 + + + + + + +Release 6.0 + + + Release date + 1997-01-29 + + + +A dump/restore is required for those wishing to migrate data from +previous releases of PostgreSQL. + + + +Migration from version 1.09 to version 6.0 + + +This migration requires a complete dump of the 1.09 database and a +restore of the database in 6.0. + + + + +Migration from pre-1.09 to version 6.0 + + +Those migrating from earlier 1.* releases should first upgrade to 1.09 +because the COPY output format was improved from the 1.02 release. + + + + + Changes + + + +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 + + + + + + +Release 1.09 + + + Release date + 1996-11-04 + + + +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. + + + + +Release 1.02 + + + Release date + 1996-08-01 + + + +Migration from version 1.02 to version 1.02.1 + + +Here is a new migration file for 1.02.1. It includes the 'copy' change +and a script to convert old ASCII files. + + + +The following notes are for the benefit of users who want to migrate +databases from Postgres95 1.01 and 1.02 to Postgres95 1.02.1. + + +If you are starting afresh with Postgres95 1.02.1 and do not need +to migrate old databases, you do not need to read any further. + + + + +In order to upgrade older Postgres95 version 1.01 or 1.02 databases to +version 1.02.1, the following steps are required: + + + + +Start up a new 1.02.1 postmaster + + + + +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 psql. If your + 1.01 or 1.02 database is named testdb and you have cut the commands + from the end of this file and saved them in addfunc.sql: + + % psql testdb -f addfunc.sql + + +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. + + + + + + +Dump/Reload Procedure + + +If you are trying to reload a pg_dump or text-mode, copy tablename to +stdout generated with a previous version, you will need to run the +attached sed 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. + + + sed 's/^\.$/\\./g' <in_file >out_file + + + +If you are loading an older binary copy or non-stdout copy, there is no +end-of-data character, and hence no conversion necessary. + + +-- 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); + + + + + +Changes + + + +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 + + + + + + + +Release 1.01 + + + Release date + 1996-02-23 + + + + +Migration from version 1.0 to version 1.01 + + +The following notes are for the benefit of users who want to migrate +databases from Postgres95 1.0 to Postgres95 1.01. + + +If you are starting afresh with Postgres95 1.01 and do not need +to migrate old databases, you do not need to read any further. + + +In order to Postgres95 version 1.01 with databases created with +Postgres95 version 1.0, the following steps are required: + + + + +Set the definition of NAMEDATALEN in src/Makefile.global to 16 + and OIDNAMELEN to 20. + + + + +Decide whether you want to use Host based authentication. + + + + +If you do, you must create a file name pg_hba in your top-level data + directory (typically the value of your $PGDATA). src/libpq/pg_hba + shows an example syntax. + + + + +If you do not want host-based authentication, you can comment out + the line: + + HBA = 1 + + in src/Makefile.global + + + 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. + + + + + + + +Compile and install 1.01, but DO NOT do the initdb step. + + + + +Before doing anything else, terminate your 1.0 postmaster, and + backup your existing $PGDATA directory. + + + + +Set your PGDATA environment variable to your 1.0 databases, but set up + path up so that 1.01 binaries are being used. + + + + +Modify the file $PGDATA/PG_VERSION from 5.0 to 5.1 + + + + +Start up a new 1.01 postmaster + + + + +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 psql. + If your 1.0 database is name testdb: + + + % psql testdb -f 1.0_to_1.01.sql + + +and then execute the following commands (cut and paste from here): + + +-- 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); + + + + + + + +Changes + + + +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 + + + + + + +Release 1.0 + + + Release date + 1995-09-05 + + + +Changes + + + +Copyright change: + * The copyright of Postgres 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 + + + + + + +<productname>Postgres95</productname> Release 0.03 + + + Release date + 1995-07-21 + + + +Changes + + +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. + + + + + + +<productname>Postgres95</productname> Release 0.02 + + + Release date + 1995-05-25 + + + +Changes + + + +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 + + + + + + +<productname>Postgres95</productname> Release 0.01 + + + Release date + 1995-05-01 + + + +Initial release. + + + + + Timing Results + + + These timing results are from running the regression test with the commands + + +% cd src/test/regress +% make all +% time make runtest + + + + 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. + + + + Version 6.5 + + + 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. + + + + Timing with fsync() disabled: + + + 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 + + + + + Timing with fsync() enabled: + + + Time System + 04:21 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486 + + + For the Linux system above, using UW-SCSI disks rather than (older) IDE + disks leads to a 50% improvement in speed on the regression test. + + + + +Version 6.4beta + + +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!). + + + + Time System + 02:26 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486 + + + + + +Version 6.3 + + +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!). + + + + 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 + + + + + +Version 6.1 + + + + 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 + + + + +]]> diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index ed6465021e..d8813ff912 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,4 +1,4 @@ - + @@ -64,31991 +63,19 @@ do it for earlier branch release files. review, so each item is truly a community effort. - - Release 8.4 - - - Release date - 2009-??-??, ITEMS CURRENT AS OF 2009-04-08 - - - - Overview - - - After many years of development, PostgreSQL has - become feature-complete in many areas. This release shows a - targeted approach to adding features (e.g., authentication, - monitoring, space reuse), and adds capabilities defined in the - later SQL standards. The major areas of enhancement are: - - - - - - - - - Windowing Functions - - - - - - Common Table Expressions and Recursive Joins - - - - - - Default and variadic parameters for functions - - - - - - Parallel Restore - - - - - - Column Permissions - - - - - - Per-database locale settings - - - - - - Improved hash indexes - - - - - - Improved join performance for EXISTS and NOT EXISTS queries - - - - - - Easier-to-use Warm Standby - - - - - - Automatic sizing of the Free Space Map - - - - - - Visibility Map (greatly reduces vacuum overhead for slowly-changing tables) - - - - - - Version-aware psql (backslash commands work against older servers) - - - - - - Support SSL certificates for user authentication - - - - - - Per-function runtime statistics - - - - - - Easy editing of functions in psql - - - - - - New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin - - - - - - - The above items are explained in more detail in the sections below. - - - - - - Migration to Version 8.4 - - - A dump/restore using pg_dump is - required for those wishing to migrate data from any previous - release. - - - - Observe the following incompatibilities: - - - - General - - - - - Use 64-bit integer datetimes by default (Neil Conway) - - - - Previously this was selected by configure's - - - - - - Remove ipcclean utility command (Bruce) - - - - The utility only worked on a few platforms. Users should use - their operating system tools instead. - - - - - - - - - Server Settings - - - - - Change default setting for - log_min_messages to warning (previously - it was notice) to reduce log file volume (Tom) - - - - - - Make debug_print_parse, debug_print_rewritten, - and debug_print_plan - output appear at LOG message level, not - DEBUG1 as formerly (Tom) - - - - - - Make debug_pretty_print default to on (Tom) - - - - - - Remove explain_pretty_print parameter (no longer needed) (Tom) - - - - - - Make log_temp_files settable by superusers only, like other - logging options (Simon Riggs) - - - - - - Remove automatic appending of the epoch timestamp when no % - escapes are present in log_filename (Robert Haas) - - - - This change was made because some users wanted a fixed log filename, - for use with an external log rotation tool. - - - - - - Remove log_restartpoints from recovery.conf; - instead use log_checkpoints (Simon) - - - - - - Remove support for the (insecure) crypt authentication method - (Magnus) - - - - This effectively obsoletes pre-PostgreSQL 7.2 client - libraries, as there is no longer any non-plaintext password method that - they can use. - - - - - - Remove krb_realm and krb_server_hostname; - these are now set in pg_hba.conf instead (Magnus) - - - - - - There are also significant changes in pg_hba.conf, - as described below. - - - - - - - - - Queries - - - - - - Change TRUNCATE and LOCK to - apply to child tables of the specified table(s) (Peter) - - - - These commands now accept an ONLY option that prevents - processing child tables; this option must be used if the old - behavior is needed. - - - - - - SELECT DISTINCT and - UNION/INTERSECT/EXCEPT - no longer always produce sorted output (Tom) - - - - Previously, these types of queries always removed duplicate rows - by means of Sort/Unique processing (i.e., sort then remove adjacent - duplicates). Now they can be implemented by hashing, which will not - produce sorted output. If an application relied on the output being - in sorted order, the recommended fix is to add an ORDER BY - clause. As a short-term workaround, the previous behavior can be - restored by disabling enable_hashagg, but that is a very - performance-expensive fix. SELECT DISTINCT ON never uses - hashing, however, so its behavior is unchanged. - - - - - - Force child tables to inherit CHECK constraints from parents - (Alex Hunsaker, Nikhil Sontakke, Tom) - - - - Formerly it was possible to drop such a constraint from a child - table, allowing rows that violate the constraint to be visible - when scanning the parent table. This was deemed inconsistent, - as well as contrary to SQL standard. - - - - - - Disallow negative LIMIT or OFFSET - values, rather than treating them as zero (Simon) - - - - - - Disallow LOCK TABLE outside a transaction block - (Tom) - - - - Such an operation is useless because the lock would be released - immediately. - - - - - - Sequences now contain an additional start_value column - (Zoltan Boszormenyi) - - - - This supports ALTER SEQUENCE ... RESTART. - - - - - - - - - - Functions and Operators - - - - - - Make numeric zero raised to a fractional power return - 0, rather than throwing an error, and make - numeric zero raised to the zero power return 1, - rather than error (Bruce) - - - - This matches the longstanding float8 behavior. - - - - - - Allow unary minus of floating-point values to produce minus zero (Tom) - - - - The changed behavior is more IEEE-standard - compliant. - - - - - - Throw an error if an escape character is the last character in - a LIKE pattern (i.e., it has nothing to escape) (Tom) - - - - Previously, such an escape character was silently ignored, - thus possibly masking application logic errors. - - - - - - Remove ~=~ and ~<>~ operators - formerly used for LIKE index comparisons (Tom) - - - - Pattern indexes now use the regular equality operator. - - - - - - xpath() now passes its arguments to libxml - without any changes (Andrew) - - - - This means that the XML argument must be a well-formed XML document. - The previous coding attempted to allow XML fragments, but it did not - work well. - - - - - - Make xmlelement() format attribute values just like - content values (Peter) - - - - Previously, attribute values were formatted according to the - normal SQL output behavior, which is sometimes at odds with - XML rules. - - - - - - Adopt a faster algorithm for hash functions (Kenneth Marshall, - based on work of Bob Jenkins) - - - - Many of the built-in hash functions now deliver different results on - little-endian and big-endian platforms. - - - - - - - Temporal Functions and Operators - - - - - - DateStyle no longer controls interval output - formatting; instead there is a new variable IntervalStyle - (Ron Mayer) - - - - - - Improve consistency of handling of fractional seconds in - timestamp and interval output (Ron Mayer) - - - - This may result in displaying a different number of fractional - digits than before, or rounding instead of truncating. - - - - - - Make to_char()'s localized month/day names depend - on LC_TIME, not LC_MESSAGES (Euler - Taveira de Oliveira) - - - - - - Cause to_date() and to_timestamp() - to more consistently report errors for invalid input (Brendan - Jurd) - - - - Previous versions would often ignore or silently misread input - that did not match the format string. Such cases will now - result in an error. - - - - - - Fix to_timestamp() to not require upper/lower case - matching for meridian (AM/PM) and era - (BC/AD) format designations (Brendan - Jurd) - - - - For example, input value ad now matches the format - string AD. - - - - - - - - - - - - - Changes - - - Below you will find a detailed account of the changes between - PostgreSQL 8.4 and the previous major - release. - - - - Performance - - - - - Improve optimizer statistics calculations (Jan Urbanski, Tom) - - - - In particular, estimates for full-text-search operators are - greatly improved. - - - - - - Allow SELECT DISTINCT and - UNION/INTERSECT/EXCEPT to - use hashing (Tom) - - - - This means that these types of queries no longer automatically - produce sorted output. - - - - - - Create explicit concepts of semi-joins and anti-joins (Tom) - - - - This work formalizes our previous ad-hoc treatment of IN - (SELECT ...) clauses, and extends it to EXISTS and - NOT EXISTS clauses. It should result in significantly - better planning of EXISTS and NOT EXISTS - queries. In general, logically equivalent IN and - EXISTS clauses should now have similar performance, - whereas previously IN often won. - - - - - - Improve optimization of sub-selects beneath outer joins (Tom) - - - - Formerly, a sub-select or view could not be optimized very well if it - appeared within the nullable side of an outer join and contained - non-strict expressions (for instance, constants) in its result list. - - - - - - Improve the performance of text_position() and - related functions by using Boyer-Moore-Horspool searching (David - Rowley) - - - - This is particularly helpful for long search patterns. - - - - - - Reduce I/O load of writing the statistics collection file - by writing the file only when requested (Martin Pihlak) - - - - - - Improve performance for bulk inserts (Robert Haas, Simon) - - - - - - Increase the default value of default_statistics_target - from 10 to 100 (Greg Sabino Mullane, - Tom) - - - - The maximum value was also increased from 1000 to - 10000. - - - - - - Perform constraint_exclusion checking by default - in queries involving inheritance or UNION ALL (Tom) - - - - A new constraint_exclusion setting, - partition, was added to specify this behavior. - - - - - - Allow I/O read-ahead for bitmap index scans (Greg Stark) - - - - The amount of read-ahead is controlled by - effective_io_concurrency. This feature is available only - if the kernel has posix_fadvise() support. - - - - - - Inline simple set-returning SQL functions in - FROM clauses (Richard Rowell) - - - - - - Improve performance of multi-batch hash joins by providing a special - case for join key values that are especially common in the outer - relation (Bryce Cutt, Ramon Lawrence) - - - - - - Reduce volume of temporary data in multi-batch hash joins - by suppressing physical tlist optimization (Michael - Henderson, Ramon Lawrence) - - - - - - Avoid waiting for idle-in-transaction sessions during - CREATE INDEX CONCURRENTLY (Simon) - - - - - - Improve performance of shared cache invalidation (Tom) - - - - - - - - - Server - - - Settings - - - - - - Convert many postgresql.conf settings to enumerated - values so that pg_settings can display the valid - values (Magnus) - - - - - - Add cursor_tuple_fraction parameter to control the - fraction of a cursor's rows that the planner assumes will be - fetched (Robert Hell) - - - - - - Allow underscores in the names of custom variable - classes in postgresql.conf (Tom) - - - - - - - - - Authentication - - - - - Report appropriate error message for combination of MD5 - authentication and db_user_namespace enabled (Bruce) - - - - - - Support regular expressions in pg_ident.conf - (Magnus) - - - - - - Allow Kerberos/GSSAPI parameters - to be changed without restarting the postmaster (Magnus) - - - - - - - - - <filename>pg_hba.conf</> - - - - - Parse pg_hba.conf fully when it is loaded, - so that errors are reported immediately (Magnus) - - - - Previously, most errors in the file wouldn't be detected until clients - tried to connect, so an erroneous file could render the system - unusable. With the new behavior, if an error is detected during - reload then the bad file is rejected and the postmaster continues - to use its old copy. - - - - - - Show all parsing errors in pg_hba.conf instead of - aborting after the first one (Selena Deckelmann) - - - - - - Remove the ident sameuser option, instead making that - behavior the default if no usermap is specified (Magnus) - - - - - - Change all authentication options to use name=value - syntax (Magnus) - - - - - - Allow a usermap parameter for all external authentication methods - (Magnus) - - - - Previously a usermap was only supported for ident - authentication. - - - - - - Add clientcert option to control requesting of a - client certificate (Magnus) - - - - Previously this was controlled by the presence of a root - certificate file in the server's data directory. - - - - - - Add cert authentication method to allow - user authentication via SSL certificates - (Magnus) - - - - Previously SSL certificates could only verify that - the client had access to a certificate, not authenticate a - user. - - - - - - Allow krb5, gssapi and sspi - realm and krb5 host settings to be specified in - pg_hba.conf (Magnus) - - - - These override the settings in postgresql.conf. - - - - - - Add include_realm parameter for krb5, - gssapi, and sspi methods (Magnus) - - - - This allows identical usernames from different realms to be - authenticated as different database users using usermaps. - - - - - - Support ident authentication over Unix-domain sockets - on Solaris (Garick Hamlin) - - - - - - - - - Continuous Archiving - - - - - Provide an option to pg_start_backup() to force its - implied checkpoint to finish as quickly as possible (Tom) - - - - The default behavior avoids excess I/O consumption, but that is - pointless if no concurrent query activity is going on. - - - - - - Make pg_stop_backup() wait for modified WAL - files to be archived (Simon) - - - - This guarantees that the backup is valid at the time - pg_stop_backup() completes. - - - - - - Delay smart shutdown while a continuous archiving base backup - is in progress (Laurenz Albe) - - - - - - Cancel a continuous archiving base backup if fast shutdown - is requested (Laurenz Albe) - - - - - - Allow recovery.conf boolean variables to take the - same range of string values as postgresql.conf - boolean variables - (Bruce) - - - - - - - - - Monitoring - - - - - Add pg_conf_load_time() to report when - the PostgreSQL configuration files were last loaded - (George Gensure) - - - - - - Add pg_terminate_backend() to safely terminate a - backend (the SIGTERM signal works also) (Tom, Bruce) - - - - While it's always been possible to SIGTERM a single - backend, this was previously considered unsupported; and testing - of the case found some bugs that are now fixed. - - - - - - Add ability to track user-defined functions' call counts and - runtimes (Martin Pihlak) - - - - Function statistics appear in a new system view, - pg_stat_user_functions. Tracking is controlled - by the new parameter track_functions. - - - - - - Allow specification of the maximum query string size in - pg_stat_activity via new - track_activity_query_size parameter (Thomas Lee) - - - - - - Increase the maximum line length sent to syslog, in - hopes of improving performance (Tom) - - - - - - Add read-only configuration variables segment_size, - wal_block_size, and wal_segment_size - (Bernd Helmle) - - - - - - When reporting a deadlock, report the text of all queries involved - in the deadlock to the server log (Itagaki Takahiro) - - - - - - Add pg_stat_get_activity(pid) function to return - information about a specific process id (Magnus) - - - - - - Allow the location of the server's statistics file to be specified - via stats_temp_directory (Magnus) - - - - This allows the statistics file to be placed in a - RAM-resident directory to reduce I/O requirements. - On startup/shutdown, the file is copied to its traditional location - ($PGDATA/global/) so it is preserved across restarts. - - - - - - - - - - - Queries - - - - - Add support for WINDOW functions (Hitoshi Harada) - - - - - - Add support for WITH clauses (CTEs), including WITH - RECURSIVE (Yoshiyuki Asaba, Tatsuo Ishii, Tom) - - - - - - Add TABLE command (Peter) - - - - TABLE tablename is a SQL standard short-hand for - SELECT * FROM tablename. - - - - - - Allow AS to be optional when specifying a - SELECT (or RETURNING) column output - label (Hiroshi Saito) - - - - This works so long as the column label is not any - PostgreSQL keyword; otherwise AS is still - needed. - - - - - - Support set-returning functions in SELECT result lists - even for functions that return their result via a tuplestore (Tom) - - - - In particular, this means that functions written in PL/PgSQL - and other PL languages can now be called this way. - - - - - - Support set-returning functions in the output of aggregation - and grouping queries (Tom) - - - - - - Allow SELECT FOR UPDATE/SHARE to work - on inheritance trees (Tom) - - - - - - Add infrastructure for SQL/MED (Martin Pihlak, - Peter) - - - - There are no remote or external SQL/MED capabilities - yet, but this change provides a standardized and future-proof - system for managing connection information for modules like - dblink and plproxy. - - - - - - Invalidate cached plans when referenced schemas, functions, operators, - or operator classes are modified (Martin Pihlak, Tom) - - - - This improves the system's ability to respond to on-the-fly - DDL changes. - - - - - Allow comparison of composite types and allow arrays of - anonymous composite types (Tom) - - - - This allows constructs such as - row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)]). - This is particularly useful in recursive queries. - - - - - - Add support for Unicode string literal and identifier specifications - using code points, e.g. U&'d\0061t\+000061' - (Peter) - - - - - - Improve the parser's ability to report error locations (Tom) - - - - An error location is now reported for many semantic errors, - such as mismatched datatypes, that previously could not be localized. - - - - - - - <command>TRUNCATE</> - - - - - Support statement-level ON TRUNCATE triggers (Simon) - - - - - - Add RESTART/CONTINUE IDENTITY options - for TRUNCATE TABLE - (Zoltan Boszormenyi) - - - - The start value of a sequence can be changed by ALTER - SEQUENCE START WITH. - - - - - - Allow TRUNCATE tab1, tab1 to succeed (Bruce) - - - - - - Add a separate TRUNCATE permission (Robert Haas) - - - - - - - - - <command>EXPLAIN</> - - - - - Make EXPLAIN VERBOSE show the output columns of each - plan node (Tom) - - - - Previously EXPLAIN VERBOSE output an internal - representation of the query plan. (That behavior is now - available via debug_print_plan.) - - - - - - Make EXPLAIN identify subplans and initplans with - individual labels (Tom) - - - - - - Make EXPLAIN honor debug_print_plan (Tom) - - - - - - Allow EXPLAIN on CREATE TABLE AS (Peter) - - - - - - - - - <literal>LIMIT</>/<literal>OFFSET</> - - - - - Allow sub-selects in LIMIT and OFFSET (Tom) - - - - - - Add SQL-standard syntax for - LIMIT/OFFSET capabilities (Peter) - - - - To wit, - OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS} - ONLY. - - - - - - - - - - - Object Manipulation - - - - - Add support for column-level privileges (Stephen Frost, KaiGai - Kohei) - - - - - - Refactor multi-object DROP operations to reduce the - need for CASCADE (Alex Hunsaker) - - - - For example, if table B has a dependency on table - A, the command DROP TABLE A, B no longer - requires the CASCADE option. - - - - - - Fix various problems with concurrent DROP commands - by ensuring that locks are taken before we begin to drop dependencies - of an object (Tom) - - - - - - Improve reporting of dependencies during DROP - commands (Tom) - - - - - - Add WITH [NO] DATA clause to CREATE TABLE - AS, per the SQL standard (Peter, Tom) - - - - - - Add support for user-defined I/O conversion casts (Heikki) - - - - - - Allow CREATE AGGREGATE to use an internal - transition datatype (Tom) - - - - - - Add LIKE clause to CREATE TYPE (Tom) - - - - This simplifies creation of data types that use the same internal - representation as an existing type. - - - - - - Allow specification of the type category and preferred - status for user-defined base types (Tom) - - - - This allows more control over the coercion behavior of user-defined - types. - - - - - - Allow CREATE OR REPLACE VIEW to add columns to the - end of a view (Robert Haas) - - - - - - - <command>ALTER</> - - - - - Add ALTER TYPE RENAME (Petr Jelinek) - - - - - - Add ALTER SEQUENCE ... RESTART (with no parameter) to - reset a sequence to its initial value (Zoltan Boszormenyi) - - - - - - Modify the ALTER TABLE syntax to allow all reasonable - combinations for tables, indexes, sequences, and views (Tom) - - - - This change allows the following new syntaxes: - - - - - ALTER SEQUENCE OWNER TO - - - - - ALTER VIEW ALTER COLUMN SET/DROP DEFAULT - - - - - ALTER VIEW OWNER TO - - - - - ALTER VIEW SET SCHEMA - - - - - There is no actual new functionality here, but formerly - you had to say ALTER TABLE to do these things, - which was confusing. - - - - - - Add support for the syntax ALTER TABLE ... ALTER COLUMN - ... SET DATA TYPE (Peter) - - - - This is SQL-standard syntax for functionality that - was already supported. - - - - - - Make ALTER TABLE SET WITHOUT OIDS rewrite the table - to physically remove OID values (Tom) - - - - Also, add ALTER TABLE SET WITH OIDS to rewrite the - table to add OIDs. - - - - - - - - - Database Manipulation - - - - - Improve reporting of - CREATE/DROP/RENAME DATABASE - failure when uncommitted prepared transactions are the cause - (Tom) - - - - - - Make LC_COLLATE and LC_CTYPE into - per-database settings (Radek Strnad, Heikki) - - - - This makes collation similar to encoding, which was always - configurable per database. - - - - - - Improve checks that the database encoding, collation - (LC_COLLATE), and character classes - (LC_CTYPE) match (Heikki) - - - - - - Add ALTER DATABASE SET TABLESPACE to move a database - to a new tablespace (Guillaume Lelarge, Bernd Helmle) - - - - - - - - - - - Utility Operations - - - - - - Add a VERBOSE option to the CLUSTER command and - clusterdb (Jim Cox) - - - - - - Decrease memory requirements for recording pending trigger - events (Tom) - - - - - - - Indexes - - - - - Dramatically improve the speed of building and accessing hash - indexes (Tom Raney, Shreya Bhargava) - - - - This allows hash indexes to be sometimes faster than btree - indexes. However, hash indexes are still not crash-safe. - - - - - - Make hash indexes store only the hash code, not the full value of - the indexed column (Xiao Meng) - - - - This greatly reduces the size of hash indexes for long indexed - values, improving performance. - - - - - - Implement fast update option for GIN indexes (Teodor, Oleg) - - - - This option greatly improves update speed at a small penalty in search - speed. - - - - - - xxx_pattern_ops indexes can now be used for simple - equality comparisons, not only for LIKE (Tom) - - - - - - - - - Full Text Indexes - - - - - Remove the requirement to use @@@ when doing - GIN weighted lookups on full text indexes (Tom, Teodor) - - - - The normal @@ text search operator can be used - instead. - - - - - - Add an optimizer selectivity function for @@ text - search operations (Jan Urbanski) - - - - - - Allow prefix matching in full text searches (Teodor Sigaev, - Oleg Bartunov) - - - - - - Support multi-column GIN indexes (Teodor Sigaev) - - - - - - Improve support for Nepali language and Devanagari alphabet (Teodor) - - - - - - - - - <command>VACUUM</> - - - - - Track free space in separate per-relation fork files (Heikki) - - - - Free space discovered by VACUUM is now recorded in - *_fsm files, rather than in a fixed-sized shared memory - area. The max_fsm_pages and max_fsm_relations - settings have been removed, greatly simplifying administration of - free space management. - - - - - - Add a visibility map to track pages that do not require - vacuuming (Heikki) - - - - This allows VACUUM to avoid scanning all of - a table when only a portion of the table needs vacuuming. - The visibility map is stored in per-relation fork files. - - - - - - Add vacuum_freeze_table_age parameter to control - when VACUUM should ignore the visibility map and - do a full table scan to freeze tuples (Heikki) - - - - - - Track transaction snapshots more carefully (Alvaro) - - - - This improves VACUUM's ability to reclaim space - in the presence of long-running transactions. - - - - - - Add ability to specify per-relation autovacuum and TOAST - parameters in CREATE TABLE (Alvaro, Euler Taveira de - Oliveira) - - - - Autovacuum options used to be stored in a system table. - - - - - - Add --freeze option to vacuumdb - (Bruce) - - - - - - - - - - - Data Types - - - - - Add a CaseSensitive option for text search synonym - dictionaries (Simon) - - - - - - Improve the precision of NUMERIC division (Tom) - - - - - - Add basic arithmetic operators for int2 with int8 - (Tom) - - - - This eliminates the need for explicit casting in some situations. - - - - - - Allow UUID input to accept an optional hyphen after - every fourth digit (Robert Haas) - - - - - - Allow on/off as input for the boolean data type - (Itagaki Takahiro) - - - - - - Allow spaces around NaN in the input string for - type numeric (Sam Mason) - - - - - - - Temporal Data Types - - - - - Reject year 0 BC and years 000 and - 0000 (Tom) - - - - Previously these were interpreted as 1 BC. - (Note: years 0 and 00 are still assumed to be - the year 2000.) - - - - - - Include SGT (Singapore time) in the default list of - known time zone abbreviations (Tom) - - - - - - Support infinity and -infinity as - values of type date (Tom) - - - - - - Make parsing of interval literals more standard-compliant (Tom) - - - - For example, INTERVAL '1' YEAR now does what it's - supposed to. - - - - - - Allow interval fractional-seconds precision to be specified - after the second keyword, for SQL standard - compliance (Tom) - - - - Formerly the precision had to be specified after the keyword - interval. (For backwards compatibility, this syntax is still - supported, though deprecated.) Data type definitions will now be - output using the standard format. - - - - - - Support the IS0 8601 interval syntax (Ron - Mayer, Kevin Grittner) - - - - For example, INTERVAL 'P1Y2M3DT4H5M6.7S' is now - supported. - - - - - - Add IntervalStyle parameter - which controls how interval values are output (Ron Mayer) - - - - Valid values are: postgres, postgres_verbose, - sql_standard, iso_8601. This setting also - controls the handling of negative interval input when only - some fields have positive/negative designations. - - - - - - Improve consistency of handling of fractional seconds in - timestamp and interval output (Ron Mayer) - - - - - - - - - Arrays - - - - - Improve the handling of casts applied to ARRAY[] - constructs, such as ARRAY[...]::integer[] - (Brendan Jurd) - - - - Formerly PostgreSQL attempted to determine a data type - for the ARRAY[] construct without reference to the ensuing - cast. This could fail unnecessarily in many cases, in particular when - the ARRAY[] construct was empty or contained only - ambiguous entries such as NULL. Now the cast is consulted - to determine the type that the array elements must be. - - - - - - Make SQL-syntax ARRAY dimensions optional - to match the SQL standard (Peter) - - - - - - Add array_ndims() to return the number - of dimensions of an array (Robert Haas) - - - - - - Add array_length() to return the length - of an array for a specified dimension (Jim Nasby, Robert - Haas, Peter Eisentraut) - - - - - - Add aggregate function array_agg(), which - returns all aggregated values as a single array (Robert Haas, - Jeff Davis, Peter) - - - - - - Add unnest(), which converts an array to - individual row values (Tom) - - - - This is the opposite of array_agg(). - - - - - - Add array_fill() to create arrays initialized with - a value (Pavel Stehule) - - - - - - Add generate_subscripts() to simplify generating - the range of an array's subscripts (Pavel Stehule) - - - - - - - - - Wide-Value Storage (<acronym>TOAST</>) - - - - - Consider TOAST compression on values as short as - 32 bytes (previously 256 bytes) (Greg Stark) - - - - - - Require 25% minimum space savings before using TOAST - compression (previously 20% for small values and any-savings-at-all - for large values) (Greg) - - - - - - Improve TOAST heuristics for rows that have a mix of large - and small toastable fields, so that we prefer to push large values out - of line and don't compress small values unnecessarily (Greg, Tom) - - - - - - - - - - - Functions - - - - - Document that setseed() allows values from - -1 to 1 (not just 0 to - 1), and enforce the valid range (Kris Jurka) - - - - - - Add server-side function lo_import(filename, oid) - (Tatsuo) - - - - - - Add quote_nullable(), which behaves like - quote_literal() but returns the string NULL for - a null argument (Brendan Jurd) - - - - - - Improve full text search headline() function to - allow extracting several fragments of text (Sushant Sinha) - - - - - - Add suppress_redundant_updates_trigger() trigger - function to avoid overhead for non-data-changing updates (Andrew) - - - - - - Add div(numeric, numeric) to perform numeric - division without rounding (Tom) - - - - - - Add timestamp and timestamptz versions of - generate_series() (Hitoshi Harada) - - - - - - - Object Information Functions - - - - - Implement current_query() for use by functions - that need to know the currently running query (Tomas Doran) - - - - - - Add pg_get_keywords() to return a list of the - parser keywords (Dave Page) - - - - - - Add pg_get_functiondef() to see a function's - definition (Abhijit Menon-Sen) - - - - - - Modify pg_relation_size() to use regclass - (Heikki) - - - - pg_relation_size(data_type_name) no longer works. - - - - - - Add boot_val and reset_val columns to - pg_settings output (Greg Smith) - - - - - - Add source file name and line number columns to - pg_settings output for variables set in a configuration - file (Magnus, Alvaro) - - - - For security reasons, these columns are only visible to superusers. - - - - - - Add support for CURRENT_CATALOG, - CURRENT_SCHEMA, SET CATALOG, SET - SCHEMA (Peter) - - - - These provide SQL-standard syntax for existing features. - - - - - - Add pg_typeof() which returns the data type - of any value (Brendan Jurd) - - - - - - Make version() return information about whether - the server is a 32- or 64-bit binary (Bruce) - - - - - - Fix the behavior of information schema columns - is_insertable_into and is_updatable to - be consistent (Peter) - - - - - - Convert remaining builtin set-returning functions to use - OUT parameters (Jaime Casanova) - - - - This makes it possible to call these functions without specifying - a column list: pg_show_all_settings(), - pg_lock_status(), pg_prepared_xact(), - pg_prepared_statement(), pg_cursor() - - - - - - Make pg_*_is_visible() and - has_*_privilege() functions return NULL - for invalid OIDs, rather than reporting an error (Tom) - - - - - - Extend has_*_privilege() functions to allow inquiring - about the OR of multiple privileges in one call (Stephen - Frost, Tom) - - - - - - Add has_column_privilege() and - has_any_column_privilege() functions (Stephen - Frost, Tom) - - - - - - - - - Function Creation - - - - - Support variadic functions (functions with a variable number - of arguments) (Pavel Stehule) - - - - Only trailing arguments can be optional, and they all must be - of the same data type. - - - - - - Support default values for function arguments (Pavel Stehule) - - - - - - Add CREATE FUNCTION ... RETURNS TABLE clause (Pavel - Stehule) - - - - - - Allow SQL-language functions to return the output - of an INSERT/UPDATE/DELETE - RETURNING clause (Tom) - - - - - - - - - PL/PgSQL Server-Side Language - - - - - Support EXECUTE USING for easier insertion of data - values into a dynamic query string (Pavel Stehule) - - - - - - Allow looping over the results of a cursor using a FOR - loop (Pavel Stehule) - - - - - - Support RETURN QUERY EXECUTE (Pavel - Stehule) - - - - - - Improve the RAISE command (Pavel Stehule) - - - - - Support DETAIL and HINT fields - - - - - Support specification of the SQLSTATE error code - - - - - Support an exception name parameter - - - - - Allow RAISE without parameters in an exception - block to re-throw the current error - - - - - - - - - Allow specification of SQLSTATE codes - in EXCEPTION lists (Pavel Stehule) - - - - This is useful for handling custom SQLSTATE codes. - - - - - - Support the CASE statement (Pavel Stehule) - - - - - - Make RETURN QUERY set the special FOUND and - GET DIAGNOSTICS ROW_COUNT variables - (Pavel Stehule) - - - - - - Make FETCH and MOVE set the - GET DIAGNOSTICS ROW_COUNT variable - (Andrew Gierth) - - - - - - Avoid memory leakage when the same function is called at varying - exception-block nesting depths (Tom) - - - - - - - - - - - Client Applications - - - - - - Fix pg_ctl restart to preserve command-line arguments - (Bruce) - - - - - - Add -w/--no-password option that - prevents password prompting in all utilities that have a - -W/--password option (Peter) - - - - - - Remove - - - These options have had no effect since PostgreSQL - 8.3. - - - - - - - <application>psql</> - - - - - Remove verbose startup banner; now just suggest help - (Joshua Drake) - - - - - - Make help show common backslash commands (Greg - Sabino Mullane) - - - - - - Add \pset format wrapped mode to wrap output to the - screen width, or file/pipe output too if \pset columns - is set (Bryce Nesbitt) - - - - - - Allow all supported spellings of boolean values in \pset, - rather than just on and off (Bruce) - - - - Formerly, any string other than off was silently taken - to mean true. psql will now complain - about unrecognized spellings (but still take them as true). - - - - - - Use the pager for wide output (Bruce) - - - - - - Require a space between a one-letter backslash command and its first - argument (Bernd Helmle) - - - - This removes a historical source of ambiguity. - - - - - - Improve tab completion support for schema-qualified and - quoted identifiers (Greg Sabino Mullane) - - - - - - Add optional on/off argument for - \timing (David Fetter) - - - - - - Display access control rights on multiple lines (Brendan - Jurd, Andreas Scherbaum) - - - - - - Make \l show database access privileges (Andrew Gilligan) - - - - - - Make \l+ show database sizes, if permissions - allow (Andrew Gilligan) - - - - - - Add the \ef command to edit function definitions - (Abhijit Menon-Sen) - - - - - - - - - <application>psql</> \d* commands - - - - - - Make \d* commands that do not have a pattern argument - show system objects only if the S modifier is specified - (Greg Sabino Mullane, Bruce) - - - - The former behavior was inconsistent across different variants - of \d, and in most cases it provided no easy way to see - just user objects. - - - - - - Improve \d* commands to work with older - PostgreSQL server versions (back to 7.4), - not only the current server version - (Guillaume Lelarge) - - - - - - Make \d show foreign-key constraints that reference - the selected table (Kenneth D'Souza) - - - - - - Make \d on a sequence show its column values - (Euler Taveira de Oliveira) - - - - - - Add column storage type and other relation options to the - \d+ display (Gregory Stark, Euler Taveira de - Oliveira) - - - - - - Show relation size in \dt+ output (Dickson S. - Guedes) - - - - - - Show the possible values of enum types in \dT+ - (David Fetter) - - - - - - Allow \dC to accept a wildcard pattern, which matches - either datatype involved in the cast (Tom) - - - - - - Make \df not hide functions that take or return - type cstring (Tom) - - - - Previously, such functions were hidden because most of them are - datatype I/O functions, which were deemed uninteresting. The new - policy about hiding system functions by default makes this wart - unnecessary. - - - - - - - - - <application>pg_dump</> - - - - - Add a --no-tablespaces option to - pg_dump/pg_dumpall/pg_restore - so that dumps can be restored to clusters that have non-matching - tablespace layouts (Gavin Roy) - - - - - - Remove - - - These options were too frequently confused with the option to - select a database name in other PostgreSQL - client applications. The functionality is still available, - but you must now spell out the long option name - - - - - - Remove - - - Use of this option does not throw an error, but it has no - effect. This option was removed because the version checks - are necessary for safety. - - - - - - Disable statement_timeout during dump and restore - (Joshua Drake) - - - - - - Add pg_dump/pg_dumpall option - - - - This allows dumps to fail if unable to acquire a shared lock - within the specified amount of time. - - - - - - Reorder pg_dump --data-only output - to dump tables referenced by foreign keys before - the referencing tables (Tom) - - - - This allows data loads when foreign keys are already present. - If circular references make a safe ordering impossible, a - NOTICE is issued. - - - - - - Allow pg_dump, pg_dumpall, and - pg_restore to use a specified role (Benedek - László) - - - - - - Allow pg_restore to use multiple concurrent - connections to do the restore (Andrew) - - - - The number of concurrent connections is controlled by the option - --jobs. This is supported only for custom-format archives. - - - - - - - - - - - Programming Tools - - - <application>libpq</> - - - - - Allow the OID to be specified when importing a large - object, via new function lo_import_with_oid() (Tatsuo) - - - - - - Add events support (Andrew Chernow, Merlin Moncure) - - - - This adds the ability to register callbacks to manage private - data associated with PGconn and PGresult - objects. - - - - - - Improve error handling to allow the return of multiple - error messages as multi-line error reports (Magnus) - - - - - - Make PQexecParams() and related functions return - PGRES_EMPTY_QUERY for an empty query (Tom) - - - - They previously returned PGRES_COMMAND_OK. - - - - - - Document how to avoid the overhead of WSACleanup() - on Windows (Andrew Chernow) - - - - - - - - - <application>libpq</> <acronym>SSL</> (Secure Sockets Layer) - support - - - - - Fix certificate validation for SSL connections - (Magnus) - - - - libpq now supports verifying both the certificate - and the name of the server when making SSL - connections. If a root certificate is not available to use for - verification, SSL connections will fail. The - sslmode parameter is used to enable the certificate - verification. - - - - The default is still not to do any verification. - - - - - - Allow the file locations for client certificates to be specified - (Mark Woodward, Alvaro, Magnus) - - - - - - Add a PQinitOpenSSL function to allow greater control - over OpenSSL/libcrypto initialization (Andrew Chernow) - - - - - - Make libpq unregister its OpenSSL - callbacks when no database connections remain open - (Bruce, Magnus, Russell Smith) - - - - This is required for applications that unload the libpq library, - otherwise invalid OpenSSL callbacks will remain. - - - - - - - - - <application>ecpg</> - - - - - Add localization support for messages (Euler Taveira de - Oliveira) - - - - - - ecpg parser is now automatically generated from the server - parser (Michael) - - - - Previously the ecpg parser was hand-maintained. - - - - - - - - - Server Programming Interface (<acronym>SPI</>) - - - - - Add support for single-use plans with out-of-line - parameters (Tom) - - - - - - Add new SPI_OK_REWRITTEN return code for - SPI_execute() (Heikki) - - - - This is used when a command is rewritten to another type of - command. - - - - - - Remove unnecessary inclusions from executor/spi.h (Tom) - - - - SPI-using modules might need to add some #include - lines if they were depending on spi.h to include - things for them. - - - - - - - - - - - Build Options - - - - - Update build system to use Autoconf 2.61 (Peter) - - - - - - Require GNU bison for source code builds (Peter) - - - - This has effectively been required for several years, but now there - is no infrastructure claiming to support other parser tools. - - - - - - Add pg_config --htmldir option - (Peter) - - - - - - Pass float4 by value inside the server (Zoltan - Boszormenyi) - - - - Add configure option - --disable-float4-byval to use the old behavior. - External C functions that use old-style (version 0) call convention - and pass or return float4 values will be broken by this - change, so you may need the configure option if you - have such functions and don't want to update them. - - - - - - Pass float8, int8, and related datatypes - by value inside the server on 64-bit platforms (Zoltan Boszormenyi) - - - - Add configure option - --disable-float8-byval to use the old behavior. - As above, this change might break old-style external C functions. - - - - - - Add configure options --with-segsize, - --with-blocksize, --with-wal-blocksize, - --with-wal-segsize (Zdenek Kotala, Tom) - - - - This simplifies build-time control over several constants that - previously could only be changed by editing - pg_config_manual.h. - - - - - - Allow threaded builds on Solaris 2.5 (Bruce) - - - - - - Use the system's getopt_long() on Solaris - (Zdenek Kotala, Tom) - - - - This makes option processing more consistent with what Solaris users - expect. - - - - - - Add support for the Sun Studio compiler on - Linux (Julius Stroffek) - - - - - - Append the major version number to the backend gettext - domain, and the soname major version number to - libraries' gettext domain (Peter) - - - - This simplifies parallel installations of multiple versions. - - - - - - Add support for code coverage testing with gcov - (Michelle Caisse) - - - - - - Allow out-of-tree builds on Mingw and - Cygwin (Richard Evans) - - - - - - Fix the use of Mingw as a cross-compiling source - platform (Peter) - - - - - - - - - Source Code - - - - - Support 64-bit time zone data files (Heikki) - - - - This adds support for daylight saving time (DST) - calculations beyond the year 2038. - - - - - - Deprecate use of platform's time_t data type (Tom) - - - - Some platforms have migrated to 64-bit time_t, some have - not, and Windows can't make up its mind what it's doing. Define - pg_time_t to have the same meaning as time_t, - but always be 64 bits (unless the platform has no 64-bit integer type), - and use that type in all module APIs and on-disk data formats. - - - - - - Fix bug in handling of the time zone database when cross-compiling - (Richard Evans) - - - - - - Link backend object files in one step, rather than in stages - (Peter) - - - - - - Improve gettext support to allow better translation - of plurals (Peter) - - - - - - Add message translation support to the PL languages (Alvaro, Peter) - - - - - - Add more DTrace probes (Robert Lor) - - - - - - Enable DTrace support on Mac OS X - Leopard and other non-Solaris platforms (Robert Lor) - - - - - - Simplify and standardize conversions between C strings and - text datums, by providing common functions for the purpose - (Brendan Jurd, Tom) - - - - - - Clean up the include/catalog/ header files so that - frontend programs can include them without including - postgres.h - (Zdenek Kotala) - - - - - - Make name char-aligned, and suppress zero-padding of - name entries in indexes (Tom) - - - - - - Add a hook to let plug-ins monitor the executor (Itagaki - Takahiro) - - - - - - Add a hook to allow the planner's statistics lookup behavior to - be overridden (Simon Riggs) - - - - - - Add shmem_startup_hook() for custom shared memory - requirements (Tom) - - - - - - Replace the index access method amgetmulti entry point - with amgetbitmap, and extend the API for - amgettuple to support run-time determination of - operator lossiness (Heikki, Tom, Teodor) - - - - The API for GIN and GiST opclass consistent functions - has been extended as well. - - - - - - Add support for partial-match searches in GIN indexes - (Teodor Sigaev, Oleg Bartunov) - - - - - - Replace pg_class column reltriggers - with boolean relhastriggers (Simon) - - - - Also remove unused pg_class columns - relukeys, relfkeys, and - relrefs. - - - - - - Add a relistemp column to pg_class - to ease identification of temporary tables (Tom) - - - - - - Move platform FAQs into the main documentation - (Peter) - - - - - - Prevent parser input files from being built with any conflicts - (Peter) - - - - - - Add support for the KOI8U (Ukrainian) encoding - (Peter) - - - - - - Add Japanese message translations (Japan PostgreSQL Users Group) - - - - This used to be maintained as a separate project. - - - - - - Fix problem when setting LC_MESSAGES on - MSVC-built systems (Hiroshi Inoue, Hiroshi - Saito, Magnus) - - - - - - - - - Contrib - - - - - - Add contrib/auto_explain to automatically run - EXPLAIN on queries exceeding a specified duration - (Itagaki Takahiro, Tom) - - - - - - Add contrib/btree_gin to allow GIN indexes to - handle more datatypes (Oleg, Teodor) - - - - - - Add contrib/citext to provide a case-insensitive, - multibyte-aware text data type (David Wheeler) - - - - - - Add contrib/pg_stat_statements for server-wide - tracking of statement execution statistics (Itagaki Takahiro) - - - - - - Add duration and query mode options to contrib/pgbench - (Itagaki Takahiro) - - - - - - Fix contrib/pgstattuple to handle tables and - indexes with over 2 billion pages (Tatsuhito Kasahara) - - - - - - In contrib/fuzzystrmatch, add a version of the - Levenshtein string-distance function that allows the user to - specify the costs of insertion, deletion, and substitution - (Volkan Yazici) - - - - - - Make contrib/ltree support multibyte encodings - (laser) - - - - - - Improve contrib/dblink's reporting of errors from - the remote server (Joe Conway) - - - - - - Make sure contrib/dblink uses a password supplied - by the user, and not accidentally taken from the server's - .pgpass file (Joe Conway) - - - - This is a minor security enhancement. - - - - - - Add fsm_page_contents() - to contrib/pageinspect (Heikki) - - - - - - Modify get_raw_page() to support free space map - (*_fsm) files. Also update - contrib/pg_freespacemap. - - - - - - Add support for multibyte encodings to contrib/pg_trgm - (Teodor) - - - - - - Rewrite contrib/intagg to use new - functions array_agg() and unnest() - (Tom) - - - - - - Remove contrib/intarray's definitions of the - <@ and @> operators (Tom) - - - - This avoids confusion with the equivalent built-in operators. - If needed, the contrib/intarray implementations - are still available under their historical names @ - and ~. - - - - - - - - - - - Release 8.3.7 - - - Release date - 2009-03-16 - - - - This release contains a variety of fixes from 8.3.6. - For information about new features in the 8.3 major release, see - . - - - - Migration to Version 8.3.7 - - - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.5, - see the release notes for 8.3.5. - - - - - - Changes - - - - - - Prevent error recursion crashes when encoding conversion fails (Tom) - - - - 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 - 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) - - - - - - Disallow CREATE CONVERSION with the wrong encodings - for the specified conversion function (Heikki) - - - - 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. - - - - - - Fix xpath() to not modify the path expression unless - necessary, and to make a saner attempt at it when necessary (Andrew) - - - - The SQL standard suggests that xpath should work on data - that is a document fragment, but libxml doesn't support - that, and indeed it's not clear that this is sensible according to the - XPath standard. xpath attempted to work around this - mismatch by modifying both the data and the path expression, but the - modification was buggy and could cause valid searches to fail. Now, - xpath checks whether the data is in fact a well-formed - document, and if so invokes libxml with no change to the - data or path expression. Otherwise, a different modification method - that is somewhat less likely to fail is used. - - - - - The new modification method is still not 100% satisfactory, and it - seems likely that no real solution is possible. This patch should - therefore be viewed as a band-aid to keep from breaking existing - applications unnecessarily. It is likely that - PostgreSQL 8.4 will simply reject use of - xpath on data that is not a well-formed document. - - - - - - - Fix core dump when to_char() is given format codes that - are inappropriate for the type of the data argument (Tom) - - - - - - Fix possible failure in text search when C locale is used with - a multi-byte encoding (Teodor) - - - - Crashes were possible on platforms where wchar_t is narrower - than int; Windows in particular. - - - - - - Fix extreme inefficiency in text search parser's handling of an - email-like string containing multiple @ characters (Heikki) - - - - - - Fix planner problem with sub-SELECT in the output list - of a larger subquery (Tom) - - - - The known symptom of this bug is a failed to locate grouping - columns error that is dependent on the datatype involved; - but there could be other issues as well. - - - - - - Fix decompilation of CASE WHEN with an implicit coercion - (Tom) - - - - This mistake could lead to Assert failures in an Assert-enabled build, - or an unexpected CASE WHEN clause error message in other - cases, when trying to examine or dump a view. - - - - - - Fix possible misassignment of the owner of a TOAST table's rowtype (Tom) - - - - If CLUSTER or a rewriting variant of ALTER TABLE - were executed by someone other than the table owner, the - pg_type entry for the table's TOAST table would end up - marked as owned by that someone. This caused no immediate problems, - since the permissions on the TOAST rowtype aren't examined by any - ordinary database operation. However, it could lead to unexpected - failures if one later tried to drop the role that issued the command - (in 8.1 or 8.2), or owner of data type appears to be invalid - warnings from pg_dump after having done so (in 8.3). - - - - - - Change UNLISTEN to exit quickly if the current session has - never executed any LISTEN command (Tom) - - - - Most of the time this is not a particularly useful optimization, but - since DISCARD ALL invokes UNLISTEN, the previous - coding caused a substantial performance problem for applications that - made heavy use of DISCARD ALL. - - - - - - Fix PL/pgSQL to not treat INTO after INSERT as - an INTO-variables clause anywhere in the string, not only at the start; - in particular, don't fail for INSERT INTO within - CREATE RULE (Tom) - - - - - - Clean up PL/pgSQL error status variables fully at block exit - (Ashesh Vashi and Dave Page) - - - - This is not a problem for PL/pgSQL itself, but the omission could cause - the PL/pgSQL Debugger to crash while examining the state of a function. - - - - - - Retry failed calls to CallNamedPipe() on Windows - (Steve Marshall, Magnus) - - - - It appears that this function can sometimes fail transiently; - we previously treated any failure as a hard error, which could - confuse LISTEN/NOTIFY as well as other - operations. - - - - - - Add MUST (Mauritius Island Summer Time) to the default list - of known timezone abbreviations (Xavier Bugaud) - - - - - - - - - - Release 8.3.6 - - - Release date - 2009-02-02 - - - - This release contains a variety of fixes from 8.3.5. - For information about new features in the 8.3 major release, see - . - - - - Migration to Version 8.3.6 - - - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.5, - see the release notes for 8.3.5. - - - - - - Changes - - - - - - Make DISCARD ALL release advisory locks, in addition - to everything it already did (Tom) - - - - This was decided to be the most appropriate behavior. This could - affect existing applications, however. - - - - - - Fix whole-index GiST scans to work correctly (Teodor) - - - - This error could cause rows to be lost if a table is clustered - on a GiST index. - - - - - - Fix crash of xmlconcat(NULL) (Peter) - - - - - - Fix possible crash in ispell dictionary if high-bit-set - characters are used as flags (Teodor) - - - - This is known to be done by one widely available Norwegian dictionary, - and the same condition may exist in others. - - - - - - Fix misordering of pg_dump output for composite types - (Tom) - - - - The most likely problem was for user-defined operator classes to - be dumped after indexes or views that needed them. - - - - - - Improve handling of URLs in headline() function (Teodor) - - - - - - Improve handling of overlength headlines in headline() - function (Teodor) - - - - - - 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) - - - - - - Fix possible Assert failure if a statement executed in PL/pgSQL is - rewritten into another kind of statement, for example if an - INSERT is rewritten into an UPDATE (Heikki) - - - - - - Ensure that a snapshot is available to datatype input functions (Tom) - - - - This primarily affects domains that are declared with CHECK - constraints involving user-defined stable or immutable functions. Such - functions typically fail if no snapshot has been set. - - - - - - Make it safer for SPI-using functions to be used within datatype I/O; - in particular, to be used in domain check constraints (Tom) - - - - - - Avoid unnecessary locking of small tables in VACUUM - (Heikki) - - - - - - Fix a problem that sometimes kept ALTER TABLE ENABLE/DISABLE - RULE from being recognized by active sessions (Tom) - - - - - - Fix a problem that made UPDATE RETURNING tableoid - return zero instead of the correct OID (Tom) - - - - - - Allow functions declared as taking ANYARRAY to work on - the pg_statistic columns of that type (Tom) - - - - This used to work, but was unintentionally broken in 8.3. - - - - - - Fix planner misestimation of selectivity when transitive equality - is applied to an outer-join clause (Tom) - - - - This could result in bad plans for queries like - ... from a left join b on a.a1 = b.b1 where a.a1 = 42 ... - - - - - - Improve optimizer's handling of long IN lists (Tom) - - - - This change avoids wasting large amounts of time on such lists - when constraint exclusion is enabled. - - - - - - Prevent synchronous scan during GIN index build (Tom) - - - - Because GIN is optimized for inserting tuples in increasing TID order, - choosing to use a synchronous scan could slow the build by a factor of - three or more. - - - - - - Ensure that the contents of a holdable cursor don't depend on the - contents of TOAST tables (Tom) - - - - Previously, large field values in a cursor result might be represented - as TOAST pointers, which would fail if the referenced table got dropped - before the cursor is read, or if the large value is deleted and then - vacuumed away. This cannot happen with an ordinary cursor, - but it could with a cursor that is held past its creating transaction. - - - - - - Fix memory leak when a set-returning function is terminated without - reading its whole result (Tom) - - - - - - Fix encoding conversion problems in XML functions when the database - encoding isn't UTF-8 (Tom) - - - - - - Fix contrib/dblink's - dblink_get_result(text,bool) function (Joe) - - - - - - Fix possible garbage output from contrib/sslinfo functions - (Tom) - - - - - - Fix incorrect behavior of contrib/tsearch2 compatibility - trigger when it's fired more than once in a command (Teodor) - - - - - - Fix possible mis-signaling in autovacuum (Heikki) - - - - - - Support running as a service on Windows 7 beta (Dave and Magnus) - - - - - - Fix ecpg's handling of varchar structs (Michael) - - - - - - Fix configure script to properly report failure when - unable to obtain linkage information for PL/Perl (Andrew) - - - - - - Make all documentation reference pgsql-bugs and/or - pgsql-hackers as appropriate, instead of the - now-decommissioned pgsql-ports and pgsql-patches - mailing lists (Tom) - - - - - - Update time zone data files to tzdata release 2009a (for - Kathmandu and historical DST corrections in Switzerland, Cuba) - - - - - - - - - - Release 8.3.5 - - - Release date - 2008-11-03 - - - - This release contains a variety of fixes from 8.3.4. - For information about new features in the 8.3 major release, see - . - - - - Migration to Version 8.3.5 - - - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.1, - see the release notes for 8.3.1. Also, if you were running a previous - 8.3.X release, it is recommended to REINDEX all GiST - indexes after the upgrade. - - - - - - Changes - - - - - - Fix GiST index corruption due to marking the wrong index entry - dead after a deletion (Teodor) - - - - This would result in index searches failing to find rows they - should have found. Corrupted indexes can be fixed with - REINDEX. - - - - - - Fix backend crash when the client encoding cannot represent a localized - error message (Tom) - - - - We have addressed similar issues before, but it would still fail if - the 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. - - - - - - Fix possible crash in bytea-to-XML mapping (Michael McMaster) - - - - - - Fix possible crash when deeply nested functions are invoked from - a trigger (Tom) - - - - - - Improve optimization of expression IN - (expression-list) queries (Tom, per an idea from Robert - Haas) - - - - Cases in which there are query variables on the right-hand side had been - handled less efficiently in 8.2.x and 8.3.x than in prior versions. - The fix restores 8.1 behavior for such cases. - - - - - - Fix mis-expansion of rule queries when a sub-SELECT appears - in a function call in FROM, a multi-row VALUES - list, or a RETURNING list (Tom) - - - - The usual symptom of this problem is an unrecognized node type - error. - - - - - - Fix Assert failure during rescan of an IS NULL - search of a GiST index (Teodor) - - - - - - Fix memory leak during rescan of a hashed aggregation plan (Neil) - - - - - - Ensure an error is reported when a newly-defined PL/pgSQL trigger - function is invoked as a normal function (Tom) - - - - - - Force a checkpoint before CREATE DATABASE starts to copy - files (Heikki) - - - - This prevents a possible failure if files had recently been deleted - in the source database. - - - - - - Prevent possible collision of relfilenode numbers - when moving a table to another tablespace with ALTER SET - TABLESPACE (Heikki) - - - - The command tried to re-use the existing filename, instead of - picking one that is known unused in the destination directory. - - - - - - Fix incorrect text search headline generation when single query - item matches first word of text (Sushant Sinha) - - - - - - Fix improper display of fractional seconds in interval values when - using a non-ISO datestyle in an - - - - - Make ILIKE compare characters case-insensitively - even when they're escaped (Andrew) - - - - - - Ensure DISCARD is handled properly by statement logging (Tom) - - - - - - Fix incorrect logging of last-completed-transaction time during - PITR recovery (Tom) - - - - - - Ensure SPI_getvalue and SPI_getbinval - behave correctly when the passed tuple and tuple descriptor have - different numbers of columns (Tom) - - - - 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. - - - - - - Mark SessionReplicationRole as PGDLLIMPORT - so it can be used by Slony on Windows (Magnus) - - - - - - Fix small memory leak when using libpq's - gsslib parameter (Magnus) - - - - The space used by the parameter string was not freed at connection - close. - - - - - - Ensure libgssapi is linked into libpq - if needed (Markus Schaaf) - - - - - - Fix ecpg's parsing of CREATE ROLE (Michael) - - - - - - Fix recent breakage of pg_ctl restart (Tom) - - - - - - Ensure pg_control is opened in binary mode - (Itagaki Takahiro) - - - - pg_controldata and pg_resetxlog - did this incorrectly, and so could fail on Windows. - - - - - - Update time zone data files to tzdata release 2008i (for - DST law changes in Argentina, Brazil, Mauritius, Syria) - - - - - - - - - - Release 8.3.4 - - - Release date - 2008-09-22 - - - - This release contains a variety of fixes from 8.3.3. - For information about new features in the 8.3 major release, see - . - - - - Migration to Version 8.3.4 - - - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.1, - see the release notes for 8.3.1. - - - - - - Changes - - - - - - Fix bug in btree WAL recovery code (Heikki) - - - - Recovery failed if the WAL ended partway through a page split operation. - - - - - - Fix potential use of wrong cutoff XID for HOT page pruning (Alvaro) - - - - This error created a risk of corruption in system - catalogs that are consulted by VACUUM: dead tuple versions - might be removed too soon. The impact of this on actual database - operations would be minimal, since the system doesn't follow MVCC - rules while examining catalogs, but it might result in transiently - wrong output from pg_dump or other client programs. - - - - - - Fix potential miscalculation of datfrozenxid (Alvaro) - - - - This error may explain some recent reports of failure to remove old - pg_clog data. - - - - - - Fix incorrect HOT updates after pg_class is reindexed - (Tom) - - - - Corruption of pg_class could occur if REINDEX - TABLE pg_class was followed in the same session by an ALTER - TABLE RENAME or ALTER TABLE SET SCHEMA command. - - - - - - Fix missed combo cid case (Karl Schnaitter) - - - - This error made rows incorrectly invisible to a transaction in which they - had been deleted by multiple subtransactions that all aborted. - - - - - - Prevent autovacuum from crashing if the table it's currently - checking is deleted at just the wrong time (Alvaro) - - - - - - Widen local lock counters from 32 to 64 bits (Tom) - - - - This responds to reports that the counters could overflow in - sufficiently long transactions, leading to unexpected lock is - already held errors. - - - - - - Fix possible duplicate output of tuples during a GiST index scan (Teodor) - - - - - - Regenerate foreign key checking queries from scratch when either - table is modified (Tom) - - - - Previously, 8.3 would attempt to replan the query, but would work from - previously generated query text. This led to failures if a - table or column was renamed. - - - - - - Fix missed permissions checks when a view contains a simple - UNION ALL construct (Heikki) - - - - Permissions for the referenced tables were checked properly, but not - permissions for the view itself. - - - - - - Add checks in executor startup to ensure that the tuples produced by an - INSERT or UPDATE will match the target table's - current rowtype (Tom) - - - - This situation is believed to be impossible in 8.3, but it can happen in - prior releases, so a check seems prudent. - - - - - - Fix possible repeated drops during DROP OWNED (Tom) - - - - This would typically result in strange errors such as cache - lookup failed for relation NNN. - - - - - - Fix several memory leaks in XML operations (Kris Jurka, Tom) - - - - - - Fix xmlserialize() to raise error properly for - unacceptable target data type (Tom) - - - - - - Fix a couple of places that mis-handled multibyte characters in text - search configuration file parsing (Tom) - - - - Certain characters occurring in configuration files would always cause - invalid byte sequence for encoding failures. - - - - - - Provide file name and line number location for all errors reported - in text search configuration files (Tom) - - - - - - Fix AT TIME ZONE to first try to interpret its timezone - argument as a timezone abbreviation, and only try it as a full timezone - name if that fails, rather than the other way around as formerly (Tom) - - - - The timestamp input functions have always resolved ambiguous zone names - in this order. Making AT TIME ZONE do so as well improves - consistency, and fixes a compatibility bug introduced in 8.1: - in ambiguous cases we now behave the same as 8.0 and before did, - since in the older versions AT TIME ZONE accepted - only abbreviations. - - - - - - Fix datetime input functions to correctly detect integer overflow when - running on a 64-bit platform (Tom) - - - - - - Prevent integer overflows during units conversion when displaying a - configuration parameter that has units (Tom) - - - - - - Improve performance of writing very long log messages to syslog (Tom) - - - - - - Allow spaces in the suffix part of an LDAP URL in - pg_hba.conf (Tom) - - - - - - Fix bug in backwards scanning of a cursor on a SELECT DISTINCT - ON query (Tom) - - - - - - Fix planner bug that could improperly push down IS NULL - tests below an outer join (Tom) - - - - This was triggered by occurrence of IS NULL tests for - the same relation in all arms of an upper OR clause. - - - - - - Fix planner bug with nested sub-select expressions (Tom) - - - - If the outer sub-select has no direct dependency on the parent query, - but the inner one does, the outer value might not get recalculated - for new parent query rows. - - - - - - Fix planner to estimate that GROUP BY expressions yielding - boolean results always result in two groups, regardless of the - expressions' contents (Tom) - - - - This is very substantially more accurate than the regular GROUP - BY estimate for certain boolean tests like col - IS NULL. - - - - - - Fix PL/PgSQL to not fail when a FOR loop's target variable - is a record containing composite-type fields (Tom) - - - - - - Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful - about the encoding of data sent to or from Tcl (Tom) - - - - - - Improve performance of PQescapeBytea() (Rudolf Leitgeb) - - - - - - On Windows, work around a Microsoft bug by preventing - libpq from trying to send more than 64kB per system call - (Magnus) - - - - - - Fix ecpg to handle variables properly in SET - commands (Michael) - - - - - - Improve pg_dump and pg_restore's - error reporting after failure to send a SQL command (Tom) - - - - - - Fix pg_ctl to properly preserve postmaster - command-line arguments across a restart (Bruce) - - - - - - Fix erroneous WAL file cutoff point calculation in - pg_standby (Simon) - - - - - - Update time zone data files to tzdata release 2008f (for - DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, - Pakistan, Palestine, and Paraguay) - - - - - - - - - - Release 8.3.3 - - - Release date - 2008-06-12 - - - - This release contains one serious and one minor bug fix over 8.3.2. - For information about new features in the 8.3 major release, see - . - - - - Migration to Version 8.3.3 - - - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.1, - see the release notes for 8.3.1. - - - - - - Changes - - - - - - Make pg_get_ruledef() parenthesize negative constants (Tom) - - - - Before this fix, a negative constant in a view or rule might be dumped - as, say, -42::integer, which is subtly incorrect: it should - be (-42)::integer due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - PostgreSQL to reject what had been a valid - SELECT DISTINCT view query. Since this could result in - 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. - - - - - - Make ALTER AGGREGATE ... OWNER TO update - pg_shdepend (Tom) - - - - This oversight could lead to problems if the aggregate was later - involved in a DROP OWNED or REASSIGN OWNED - operation. - - - - - - - - - - Release 8.3.2 - - - Release date - never released - - - - This release contains a variety of fixes from 8.3.1. - For information about new features in the 8.3 major release, see - . - - - - Migration to Version 8.3.2 - - - A dump/restore is not required for those running 8.3.X. - However, if you are upgrading from a version earlier than 8.3.1, - see the release notes for 8.3.1. - - - - - - Changes - - - - - - Fix ERRORDATA_STACK_SIZE exceeded crash that - occurred on Windows when using UTF-8 database encoding and a different - client encoding (Tom) - - - - - - Fix incorrect archive truncation point calculation for the - %r macro in recovery_command parameters - (Simon) - - - - This could lead to data loss if a warm-standby script relied on - %r to decide when to throw away WAL segment files. - - - - - - Fix ALTER TABLE ADD COLUMN ... PRIMARY KEY so that the new - column is correctly checked to see if it's been initialized to all - non-nulls (Brendan Jurd) - - - - Previous versions neglected to check this requirement at all. - - - - - - Fix REASSIGN OWNED so that it works on procedural - languages too (Alvaro) - - - - - - Fix problems with SELECT FOR UPDATE/SHARE occurring as a - subquery in a query with a non-SELECT top-level operation - (Tom) - - - - - - Fix possible CREATE TABLE failure when inheriting the - same constraint from multiple parent relations that - inherited that constraint from a common ancestor (Tom) - - - - - - Fix pg_get_ruledef() to show the alias, if any, attached - to the target table of an UPDATE or DELETE - (Tom) - - - - - - Restore the pre-8.3 behavior that an out-of-range block number in a - TID being used in a TidScan plan results in silently not matching any - rows (Tom) - - - - 8.3.0 and 8.3.1 threw an error instead. - - - - - - Fix GIN bug that could result in a too many LWLocks - taken failure (Teodor) - - - - - - Fix broken GiST comparison function for tsquery (Teodor) - - - - - - Fix tsvector_update_trigger() and ts_stat() - to accept domains over the types they expect to work with (Tom) - - - - - - Fix failure to support enum data types as foreign keys (Tom) - - - - - - Avoid possible crash when decompressing corrupted data - (Zdenek Kotala) - - - - - - Fix race conditions between delayed unlinks and DROP - DATABASE (Heikki) - - - - In the worst case this could result in deleting a newly created table - in a new database that happened to get the same OID as the - recently-dropped one; but of course that is an extremely - low-probability scenario. - - - - - - Repair two places where SIGTERM exit of a backend could leave corrupted - state in shared memory (Tom) - - - - Neither case is very important if SIGTERM is used to shut down the - whole database cluster together, but there was a problem if someone - tried to SIGTERM individual backends. - - - - - - Fix possible crash due to incorrect plan generated for an - x IN (SELECT y - FROM ...) clause when x and y - have different data types; and make sure the behavior is semantically - correct when the conversion from y's type to - x's type is lossy (Tom) - - - - - - Fix oversight that prevented the planner from substituting known Param - values as if they were constants (Tom) - - - - This mistake partially disabled optimization of unnamed - extended-Query statements in 8.3.0 and 8.3.1: in particular the - LIKE-to-indexscan optimization would never be applied if the LIKE - pattern was passed as a parameter, and constraint exclusion - depending on a parameter value didn't work either. - - - - - - Fix planner failure when an indexable MIN or - MAX aggregate is used with DISTINCT or - ORDER BY (Tom) - - - - - - Fix planner to ensure it never uses a physical tlist for a - plan node that is feeding a Sort node (Tom) - - - - This led to the sort having to push around more data than it really - needed to, since unused column values were included in the sorted - data. - - - - - - Avoid unnecessary copying of query strings (Tom) - - - - This fixes a performance problem introduced in 8.3.0 when a very large - number of commands are submitted as a single query string. - - - - - - Make TransactionIdIsCurrentTransactionId() use binary - search instead of linear search when checking child-transaction XIDs - (Heikki) - - - - This fixes some cases in which 8.3.0 was significantly - slower than earlier releases. - - - - - - Fix conversions between ISO-8859-5 and other encodings to handle - Cyrillic Yo characters (e and E with - two dots) (Sergey Burladyan) - - - - - - Fix several datatype input functions, notably array_in(), - that were allowing unused bytes in their results to contain - uninitialized, unpredictable values (Tom) - - - - This could lead to failures in which two apparently identical literal - values were not seen as equal, resulting in the parser complaining - about unmatched ORDER BY and DISTINCT - expressions. - - - - - - Fix a corner case in regular-expression substring matching - (substring(string from - pattern)) (Tom) - - - - 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 - substring('foo' from 'foo(bar)?'). - This should return NULL, since (bar) isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - foo). - - - - - - Prevent cancellation of an auto-vacuum that was launched to prevent - XID wraparound (Alvaro) - - - - - - Improve ANALYZE's handling of in-doubt tuples (those - inserted or deleted by a not-yet-committed transaction) so that the - counts it reports to the stats collector are more likely to be correct - (Pavan Deolasee) - - - - - - Fix initdb to reject a relative path for its - --xlogdir (-X) option (Tom) - - - - - - Make psql print tab characters as an appropriate - number of spaces, rather than \x09 as was done in - 8.3.0 and 8.3.1 (Bruce) - - - - - - Update time zone data files to tzdata release 2008c (for - DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and - Argentina/San_Luis) - - - - - - Add ECPGget_PGconn() function to - ecpglib (Michael) - - - - - - Fix incorrect result from ecpg's - PGTYPEStimestamp_sub() function (Michael) - - - - - - Fix handling of continuation line markers in ecpg - (Michael) - - - - - - Fix possible crashes in contrib/cube functions (Tom) - - - - - - Fix core dump in contrib/xml2's - xpath_table() function when the input query returns a - NULL value (Tom) - - - - - - Fix contrib/xml2's makefile to not override - CFLAGS, and make it auto-configure properly for - libxslt present or not (Tom) - - - - - - - - - - Release 8.3.1 - - - Release date - 2008-03-17 - - - - This release contains a variety of fixes from 8.3.0. - For information about new features in the 8.3 major release, see - . - - - - Migration to Version 8.3.1 - - - A dump/restore is not required for those running 8.3.X. - However, you might need to REINDEX indexes on textual - columns after updating, if you are affected by the Windows locale - issue described below. - - - - - - Changes - - - - - - Fix character string comparison for Windows locales that consider - different character combinations as equal (Tom) - - - - This fix applies only on Windows and only when using UTF-8 - database encoding. The same fix was made for all other cases - over two years ago, but Windows with UTF-8 uses a separate code - path that was not updated. If you are using a locale that - considers some non-identical strings as equal, you may need to - REINDEX to fix existing indexes on textual columns. - - - - - - Repair corner-case bugs in VACUUM FULL (Tom) - - - - A potential deadlock between concurrent VACUUM FULL - operations on different system catalogs was introduced in 8.2. - This has now been corrected. 8.3 made this worse because the - deadlock could occur within a critical code section, making it - a PANIC rather than just ERROR condition. - - - - Also, a VACUUM FULL that failed partway through - vacuuming a system catalog could result in cache corruption in - concurrent database sessions. - - - - Another VACUUM FULL bug introduced in 8.3 could - result in a crash or out-of-memory report when dealing with - pages containing no live tuples. - - - - - - Fix misbehavior of foreign key checks involving character - or bit columns (Tom) - - - - If the referencing column were of a different but compatible type - (for instance varchar), the constraint was enforced incorrectly. - - - - - - Avoid needless deadlock failures in no-op foreign-key checks (Stephan - Szabo, Tom) - - - - - - Fix possible core dump when re-planning a prepared query (Tom) - - - - This bug affected only protocol-level prepare operations, not - SQL PREPARE, and so tended to be seen only with - JDBC, DBI, and other client-side drivers that use prepared - statements heavily. - - - - - - Fix possible failure when re-planning a query that calls an SPI-using - function (Tom) - - - - - - Fix failure in row-wise comparisons involving columns of different - datatypes (Tom) - - - - - - Fix longstanding LISTEN/NOTIFY - race condition (Tom) - - - - In rare cases a session that had just executed a - LISTEN might not get a notification, even though - one would be expected because the concurrent transaction executing - NOTIFY was observed to commit later. - - - - A side effect of the fix is that a transaction that has executed - a not-yet-committed LISTEN command will not see any - row in pg_listener for the 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. - - - - - - Disallow LISTEN and UNLISTEN within a - prepared transaction (Tom) - - - - This was formerly allowed but trying to do it had various unpleasant - consequences, notably that the originating backend could not exit - as long as an UNLISTEN remained uncommitted. - - - - - - Disallow dropping a temporary table within a - prepared transaction (Heikki) - - - - This was correctly disallowed by 8.1, but the check was inadvertently - broken in 8.2 and 8.3. - - - - - - Fix rare crash when an error occurs during a query using a hash index - (Heikki) - - - - - - Fix incorrect comparison of tsquery values (Teodor) - - - - - - Fix incorrect behavior of LIKE with non-ASCII characters - in single-byte encodings (Rolf Jentsch) - - - - - - Disable xmlvalidate (Tom) - - - - This function should have been removed before 8.3 release, but - was inadvertently left in the source code. It poses a small - security risk since unprivileged users could use it to read the - first few characters of any file accessible to the server. - - - - - - Fix memory leaks in certain usages of set-returning functions (Neil) - - - - - - Make encode(bytea, 'escape') convert all - high-bit-set byte values into \nnn octal - escape sequences (Tom) - - - - This is necessary to avoid encoding problems when the database - encoding is multi-byte. This change could pose compatibility issues - for applications that are expecting specific results from - encode. - - - - - - Fix input of datetime values for February 29 in years BC (Tom) - - - - The former coding was mistaken about which years were leap years. - - - - - - Fix unrecognized node type error in some variants of - ALTER OWNER (Tom) - - - - - - Avoid tablespace permissions errors in CREATE TABLE LIKE - INCLUDING INDEXES (Tom) - - - - - - Ensure pg_stat_activity.waiting flag - is cleared when a lock wait is aborted (Tom) - - - - - - Fix handling of process permissions on Windows Vista (Dave, Magnus) - - - - In particular, this fix allows starting the server as the Administrator - user. - - - - - - Update time zone data files to tzdata release 2008a - (in particular, recent Chile changes); adjust timezone abbreviation - VET (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom) - - - - - - Fix ecpg problems with arrays (Michael) - - - - - - Fix pg_ctl to correctly extract the postmaster's port - number from command-line options (Itagaki Takahiro, Tom) - - - - Previously, pg_ctl start -w could try to contact the - postmaster on the wrong port, leading to bogus reports of startup - failure. - - - - - - Use - - - This is known to be necessary when building PostgreSQL - with gcc 4.3 or later. - - - - - - Enable building contrib/uuid-ossp with MSVC (Hiroshi Saito) - - - - - - - - - - Release 8.3 - - - Release date - 2008-02-04 - - - - Overview - - - With significant new functionality and performance enhancements, - this release represents a major leap forward for - PostgreSQL. This was made possible by a growing - community that has dramatically accelerated the pace of - development. This release adds the following major features: - - - - - - - Full text search is integrated into the core database system - - - - - - Support for the SQL/XML standard, including new operators and an - XML data type - - - - - - Enumerated data types (ENUM) - - - - - - Arrays of composite types - - - - - - Universally Unique Identifier (UUID) data type - - - - - - Add control over whether NULLs sort first or last - - - - - - Updatable cursors - - - - - - Server configuration parameters can now be set on a per-function - basis - - - - - - User-defined types can now have type modifiers - - - - - - Automatically re-plan cached queries when table - definitions change or statistics are updated - - - - - - Numerous improvements in logging and statistics collection - - - - - - Support Security Service Provider Interface (SSPI) for - authentication on Windows - - - - - - Support multiple concurrent autovacuum processes, and other - autovacuum improvements - - - - - - Allow the whole PostgreSQL distribution to be compiled - with Microsoft Visual C++ - - - - - - - Major performance improvements are listed below. Most of - these enhancements are automatic and do not require user changes or - tuning: - - - - - - - Asynchronous commit delays writes to WAL during transaction commit - - - - - - Checkpoint writes can be spread over a longer time period to smooth - the I/O spike during each checkpoint - - - - - - Heap-Only Tuples (HOT) accelerate space reuse for - most UPDATEs and DELETEs - - - - - - Just-in-time background writer strategy improves disk write - efficiency - - - - - - Using non-persistent transaction IDs for read-only transactions - reduces overhead and VACUUM requirements - - - - - - Per-field and per-row storage overhead has been reduced - - - - - - Large sequential scans no longer force out frequently used - cached pages - - - - - - Concurrent large sequential scans can now share disk reads - - - - - - ORDER BY ... LIMIT can be done without sorting - - - - - - - The above items are explained in more detail in the sections below. - - - - - - Migration to Version 8.3 - - - A dump/restore using pg_dump is - required for those wishing to migrate data from any previous - release. - - - - Observe the following incompatibilities: - - - - General - - - - - Non-character data types are no longer automatically cast to - TEXT (Peter, Tom) - - - - Previously, if a non-character value was supplied to an operator or - function that requires text input, it was automatically - cast to text, for most (though not all) built-in data types. - This no longer happens: an explicit cast to text is now - required for all non-character-string types. For example, these - expressions formerly worked: - - -substr(current_date, 1, 4) -23 LIKE '2%' - - - but will now draw function does not exist and operator - does not exist errors respectively. Use an explicit cast instead: - - -substr(current_date::text, 1, 4) -23::text LIKE '2%' - - - (Of course, you can use the more verbose CAST() syntax too.) - The reason for the change is that these automatic casts too often caused - surprising behavior. An example is that in previous releases, this - expression was accepted but did not do what was expected: - - -current_date < 2017-11-17 - - - This is actually comparing a date to an integer, which should be - (and now is) rejected — but in the presence of automatic - casts both sides were cast to text and a textual comparison - was done, because the text < text operator was able - to match the expression when no other < operator could. - - - - Types char(n) and - varchar(n) still cast to text - automatically. Also, automatic casting to text still works for - inputs to the concatenation (||) operator, so long as least - one input is a character-string type. - - - - - - Full text search features from contrib/tsearch2 have - been moved into the core server, with some minor syntax changes - - - - contrib/tsearch2 now contains a compatibility - interface. - - - - - - ARRAY(SELECT ...), where the SELECT - returns no rows, now returns an empty array, rather than NULL - (Tom) - - - - - - The array type name for a base data type is no longer always the base - type's name with an underscore prefix - - - - The old naming convention is still honored when possible, but - application code should no longer depend on it. Instead - use the new pg_type.typarray column to - identify the array data type associated with a given type. - - - - - - ORDER BY ... USING operator must now - use a less-than or greater-than operator that is - defined in a btree operator class - - - - This restriction was added to prevent inconsistent results. - - - - - - SET LOCAL changes now persist until - the end of the outermost transaction, unless rolled back (Tom) - - - - Previously SET LOCAL's effects were lost - after subtransaction commit (RELEASE SAVEPOINT - or exit from a PL/pgSQL exception block). - - - - - - Commands rejected in transaction blocks are now also rejected in - multiple-statement query strings (Tom) - - - - For example, "BEGIN; DROP DATABASE; COMMIT" will now be - rejected even if submitted as a single query message. - - - - - - ROLLBACK outside a transaction block now - issues NOTICE instead of WARNING (Bruce) - - - - - - Prevent NOTIFY/LISTEN/UNLISTEN - from accepting schema-qualified names (Bruce) - - - - Formerly, these commands accepted schema.relation but - ignored the schema part, which was confusing. - - - - - - ALTER SEQUENCE no longer affects the sequence's - currval() state (Tom) - - - - - - Foreign keys now must match indexable conditions for - cross-data-type references (Tom) - - - - This improves semantic consistency and helps avoid - performance problems. - - - - - - Restrict object size functions to users who have reasonable - permissions to view such information (Tom) - - - - For example, pg_database_size() now requires - CONNECT permission, which is granted to everyone by - default. pg_tablespace_size() requires - CREATE permission in the tablespace, or is allowed if - the tablespace is the default tablespace for the database. - - - - - - Remove the undocumented !!= (not in) operator (Tom) - - - - NOT IN (SELECT ...) is the proper way to - perform this operation. - - - - - - Internal hashing functions are now more uniformly-distributed (Tom) - - - - If application code was computing and storing hash values using - internal PostgreSQL hashing functions, the hash - values must be regenerated. - - - - - - C-code conventions for handling variable-length data values - have changed (Greg Stark, Tom) - - - - The new SET_VARSIZE() macro must be used - to set the length of generated varlena values. Also, it - might be necessary to expand (de-TOAST) input values - in more cases. - - - - - - Continuous archiving no longer reports each successful archive - operation to the server logs unless DEBUG level is used - (Simon) - - - - - - - - - Configuration Parameters - - - - - - Numerous changes in administrative server parameters - - - - bgwriter_lru_percent, - bgwriter_all_percent, - bgwriter_all_maxpages, - stats_start_collector, and - stats_reset_on_server_start are removed. - redirect_stderr is renamed to - logging_collector. - stats_command_string is renamed to - track_activities. - stats_block_level and stats_row_level - are merged into track_counts. - A new boolean configuration parameter, archive_mode, - controls archiving. Autovacuum's default settings have changed. - - - - - - Remove stats_start_collector parameter (Tom) - - - - We now always start the collector process, unless UDP - socket creation fails. - - - - - - Remove stats_reset_on_server_start parameter (Tom) - - - - This was removed because pg_stat_reset() - can be used for this purpose. - - - - - - Commenting out a parameter in postgresql.conf now - causes it to revert to its default value (Joachim Wieland) - - - - Previously, commenting out an entry left the parameter's value unchanged - until the next server restart. - - - - - - - - - - Character Encodings - - - - - - Add more checks for invalidly-encoded data (Andrew) - - - - This change plugs some holes that existed in literal backslash - escape string processing and COPY escape - processing. Now the de-escaped string is rechecked to see if the - result created an invalid multi-byte character. - - - - - - Disallow database encodings that are inconsistent with the server's - locale setting (Tom) - - - - On most platforms, C locale is the only locale that - will work with any database encoding. Other locale settings imply - a specific encoding and will misbehave if the database encoding - is something different. (Typical symptoms include bogus textual - sort order and wrong results from upper() or - lower().) The server now rejects attempts to create - databases that have an incompatible encoding. - - - - - - Ensure that chr() cannot create - invalidly-encoded values (Andrew) - - - - In UTF8-encoded databases the argument of chr() is - now treated as a Unicode code point. In other multi-byte encodings - chr()'s argument must designate a 7-bit ASCII - character. Zero is no longer accepted. - ascii() has been adjusted to match. - - - - - - Adjust convert() behavior to ensure encoding - validity (Andrew) - - - - The two argument form of convert() has been - removed. The three argument form now takes a bytea - first argument and returns a bytea. To cover the - loss of functionality, three new functions have been added: - - - - - - convert_from(bytea, name) returns - text — converts the first argument from the named - encoding to the database encoding - - - - - - convert_to(text, name) returns - bytea — converts the first argument from the - database encoding to the named encoding - - - - - - length(bytea, name) returns - integer — gives the length of the first - argument in characters in the named encoding - - - - - - - - Remove convert(argument USING conversion_name) - (Andrew) - - - - Its behavior did not match the SQL standard. - - - - - - Make JOHAB encoding client-only (Tatsuo) - - - - JOHAB is not safe as a server-side encoding. - - - - - - - - - - - Changes - - - Below you will find a detailed account of the - changes between PostgreSQL 8.3 and - the previous major release. - - - - Performance - - - - - Asynchronous commit delays writes to WAL during transaction commit - (Simon) - - - - This feature dramatically increases performance for short data-modifying - transactions. The disadvantage is that because disk writes are delayed, - if the database or operating system crashes before data is written to - the disk, committed data will be lost. This feature is useful for - applications that can accept some data loss. Unlike turning off - fsync, using asynchronous commit does not put - database consistency at risk; the worst case is that after a crash the - last few reportedly-committed transactions might not be committed after - all. - This feature is enabled by turning off synchronous_commit - (which can be done per-session or per-transaction, if some transactions - are critical and others are not). - wal_writer_delay can be adjusted to control the maximum - delay before transactions actually reach disk. - - - - - - Checkpoint writes can be spread over a longer time period to smooth - the I/O spike during each checkpoint (Itagaki Takahiro and Heikki - Linnakangas) - - - - Previously all modified buffers were forced to disk as quickly as - possible during a - checkpoint, causing an I/O spike that decreased server performance. - This new approach spreads out disk writes during checkpoints, - reducing peak I/O usage. (User-requested and shutdown checkpoints - are still written as quickly as possible.) - - - - - - Heap-Only Tuples (HOT) accelerate space reuse for most - UPDATEs and DELETEs (Pavan Deolasee, with - ideas from many others) - - - - UPDATEs and DELETEs leave dead tuples - behind, as do failed INSERTs. Previously only - VACUUM could reclaim space taken by dead tuples. With - HOT dead tuple space can be automatically reclaimed at - the time of INSERT or UPDATE if no changes - are made to indexed columns. This allows for more consistent - performance. Also, HOT avoids adding duplicate index - entries. - - - - - - Just-in-time background writer strategy improves disk write - efficiency (Greg Smith, Itagaki Takahiro) - - - - This greatly reduces the need for manual tuning of the background - writer. - - - - - - Per-field and per-row storage overhead have been reduced - (Greg Stark, Heikki Linnakangas) - - - - Variable-length data types with data values less than 128 bytes long - will see a storage decrease of 3 to 6 bytes. For example, two adjacent - char(1) fields now use 4 bytes instead of 16. Row headers - are also 4 bytes shorter than before. - - - - - - Using non-persistent transaction IDs for read-only transactions - reduces overhead and VACUUM requirements (Florian Pflug) - - - - Non-persistent transaction IDs do not increment the global - transaction counter. Therefore, they reduce the load on - pg_clog and increase the time between forced - vacuums to prevent transaction ID wraparound. - Other performance - improvements were also made that should improve concurrency. - - - - - - Avoid incrementing the command counter after a read-only command (Tom) - - - - There was formerly a hard limit of 232 - (4 billion) commands per transaction. Now only commands that - actually changed the database count, so while this limit still - exists, it should be significantly less annoying. - - - - - - Create a dedicated WAL writer process to off-load - work from backends (Simon) - - - - - - Skip unnecessary WAL writes for CLUSTER and - COPY (Simon) - - - - Unless WAL archiving is enabled, the system now avoids WAL writes - for CLUSTER and just fsync()s the - table at the end of the command. It also does the same for - COPY if the table was created in the same - transaction. - - - - - - Large sequential scans no longer force out frequently used - cached pages (Simon, Heikki, Tom) - - - - - - Concurrent large sequential scans can now share disk reads (Jeff Davis) - - - - This is accomplished by starting the new sequential scan in the - middle of the table (where another sequential scan is already - in-progress) and wrapping around to the beginning to finish. This - can affect the order of returned rows in a query that does not - specify ORDER BY. The synchronize_seqscans - configuration parameter can be used to disable this if necessary. - - - - - - ORDER BY ... LIMIT can be done without sorting - (Greg Stark) - - - - This is done by sequentially scanning the table and tracking just - the top N candidate rows, rather than performing a - full sort of the entire table. This is useful when there is no - matching index and the LIMIT is not large. - - - - - - Put a rate limit on messages sent to the statistics - collector by backends - (Tom) - - - - This reduces overhead for short transactions, but might sometimes - increase the delay before statistics are tallied. - - - - - - Improve hash join performance for cases with many NULLs (Tom) - - - - - - Speed up operator lookup for cases with non-exact datatype matches (Tom) - - - - - - - - - Server - - - - - Autovacuum is now enabled by default (Alvaro) - - - - Several changes were made to eliminate disadvantages of having - autovacuum enabled, thereby justifying the change in default. - Several other autovacuum parameter defaults were also modified. - - - - - - Support multiple concurrent autovacuum processes (Alvaro, Itagaki - Takahiro) - - - - This allows multiple vacuums to run concurrently. This prevents - vacuuming of a large table from delaying vacuuming of smaller tables. - - - - - - Automatically re-plan cached queries when table - definitions change or statistics are updated (Tom) - - - - Previously PL/PgSQL functions that referenced temporary tables - would fail if the temporary table was dropped and recreated - between function invocations, unless EXECUTE was - used. This improvement fixes that problem and many related issues. - - - - - - Add a temp_tablespaces parameter to control - the tablespaces for temporary tables and files (Jaime Casanova, - Albert Cervera, Bernd Helmle) - - - - This parameter defines a list of tablespaces to be used. This - enables spreading the I/O load across multiple tablespaces. A random - tablespace is chosen each time a temporary object is created. - Temporary files are no longer stored in per-database - pgsql_tmp/ directories but in per-tablespace - directories. - - - - - - Place temporary tables' TOAST tables in special schemas named - pg_toast_temp_nnn (Tom) - - - - This allows low-level code to recognize these tables as temporary, - which enables various optimizations such as not WAL-logging changes - and using local rather than shared buffers for access. This also - fixes a bug wherein backends unexpectedly held open file references - to temporary TOAST tables. - - - - - - Fix problem that a constant flow of new connection requests could - indefinitely delay the postmaster from completing a shutdown or - a crash restart (Tom) - - - - - - Guard against a very-low-probability data loss scenario by preventing - re-use of a deleted table's relfilenode until after the next - checkpoint (Heikki) - - - - - - Fix CREATE CONSTRAINT TRIGGER - to convert old-style foreign key trigger definitions into regular - foreign key constraints (Tom) - - - - This will ease porting of foreign key constraints carried forward from - pre-7.3 databases, if they were never converted using - contrib/adddepend. - - - - - - Fix DEFAULT NULL to override inherited defaults (Tom) - - - - DEFAULT NULL was formerly considered a noise phrase, but it - should (and now does) override non-null defaults that would otherwise - be inherited from a parent table or domain. - - - - - - Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004 (Tatsuo) - - - - These new encodings can be converted to and from UTF-8. - - - - - - Change server startup log message from database system is - ready to database system is ready to accept - connections, and adjust its timing - - - - The message now appears only when the postmaster is really ready - to accept connections. - - - - - - - - - Monitoring - - - - - Add log_autovacuum_min_duration parameter to - support configurable logging of autovacuum activity (Simon, Alvaro) - - - - - - Add log_lock_waits parameter to log lock waiting - (Simon) - - - - - - Add log_temp_files parameter to log temporary - file usage (Bill Moran) - - - - - - Add log_checkpoints parameter to improve logging - of checkpoints (Greg Smith, Heikki) - - - - - - log_line_prefix now supports - %s and %c escapes in all - processes (Andrew) - - - - Previously these escapes worked only for user sessions, not for - background database processes. - - - - - - Add log_restartpoints to control logging of - point-in-time recovery restart points (Simon) - - - - - - Last transaction end time is now logged at end of recovery and at - each logged restart point (Simon) - - - - - - Autovacuum now reports its activity start time in - pg_stat_activity (Tom) - - - - - - Allow server log output in comma-separated value (CSV) format (Arul - Shaji, Greg Smith, Andrew Dunstan) - - - - CSV-format log files can easily be loaded into a database table for - subsequent analysis. - - - - - - Use PostgreSQL-supplied timezone support for formatting timestamps - displayed in the server log (Tom) - - - - This avoids Windows-specific problems with localized time zone - names that are in the wrong encoding. There is a new - log_timezone parameter that controls the timezone - used in log messages, independently of the client-visible - timezone parameter. - - - - - - New system view pg_stat_bgwriter displays - statistics about background writer activity (Magnus) - - - - - - Add new columns for database-wide tuple statistics to - pg_stat_database (Magnus) - - - - - - Add an xact_start (transaction start time) column to - pg_stat_activity (Neil) - - - - This makes it easier to identify long-running transactions. - - - - - - Add n_live_tuples and n_dead_tuples columns - to pg_stat_all_tables and related views (Glen - Parker) - - - - - - Merge stats_block_level and stats_row_level - parameters into a single parameter track_counts, which - controls all messages sent to the statistics collector process - (Tom) - - - - - - Rename stats_command_string parameter to - track_activities (Tom) - - - - - - Fix statistical counting of live and dead tuples to recognize that - committed and aborted transactions have different effects (Tom) - - - - - - - - - Authentication - - - - - Support Security Service Provider Interface (SSPI) for - authentication on Windows (Magnus) - - - - - - Support GSSAPI authentication (Henry Hotz, Magnus) - - - - This should be preferred to native Kerberos authentication because - GSSAPI is an industry standard. - - - - - - Support a global SSL configuration file (Victor Wagner) - - - - - - Add ssl_ciphers parameter to control accepted SSL ciphers - (Victor Wagner) - - - - - - Add a Kerberos realm parameter, krb_realm (Magnus) - - - - - - - - - Write-Ahead Log (<acronym>WAL</>) and Continuous Archiving - - - - - Change the timestamps recorded in transaction WAL records from - time_t to TimestampTz representation (Tom) - - - - This provides sub-second resolution in WAL, which can be useful for - point-in-time recovery. - - - - - - Reduce WAL disk space needed by warm standby servers (Simon) - - - - This change allows a warm standby server to pass the name of the earliest - still-needed WAL file to the recovery script, allowing automatic removal - of no-longer-needed WAL files. This is done using %r in - the restore_command parameter of - recovery.conf. - - - - - - New boolean configuration parameter, archive_mode, - controls archiving (Simon) - - - - Previously setting archive_command to an empty string - turned off archiving. Now archive_mode turns archiving - on and off, independently of archive_command. This is - useful for stopping archiving temporarily. - - - - - - - - - Queries - - - - - Full text search is integrated into the core database - system (Teodor, Oleg) - - - - Text search has been improved, moved into the core code, and is now - installed by default. contrib/tsearch2 now contains - a compatibility interface. - - - - - - Add control over whether NULLs sort first or last (Teodor, Tom) - - - - The syntax is ORDER BY ... NULLS FIRST/LAST. - - - - - - Allow per-column ascending/descending (ASC/DESC) - ordering options for indexes (Teodor, Tom) - - - - Previously a query using ORDER BY with mixed - ASC/DESC specifiers could not fully use - an index. Now an index can be fully used in such cases if the - index was created with matching - ASC/DESC specifications. - NULL sort order within an index can be controlled, too. - - - - - - Allow col IS NULL to use an index (Teodor) - - - - - - Updatable cursors (Arul Shaji, Tom) - - - - This eliminates the need to reference a primary key to - UPDATE or DELETE rows returned by a cursor. - The syntax is UPDATE/DELETE WHERE CURRENT OF. - - - - - - Allow FOR UPDATE in cursors (Arul Shaji, Tom) - - - - - - Create a general mechanism that supports casts to and from the - standard string types (TEXT, VARCHAR, - CHAR) for every datatype, by - invoking the datatype's I/O functions (Tom) - - - - Previously, such casts were available only for types that had - specialized function(s) for the purpose. - These new casts are assignment-only in the to-string direction, - explicit-only in the other direction, and therefore should create no - surprising behavior. - - - - - - Allow UNION and related constructs to return a domain - type, when all inputs are of that domain type (Tom) - - - - Formerly, the output would be considered to be of the domain's base - type. - - - - - - Allow limited hashing when using two different data types (Tom) - - - - This allows hash joins, hash indexes, hashed subplans, and hash - aggregation to be used in situations involving cross-data-type - comparisons, if the data types have compatible hash functions. - Currently, cross-data-type hashing support exists for - smallint/integer/bigint, - and for float4/float8. - - - - - - Improve optimizer logic for detecting when variables are equal - in a WHERE clause (Tom) - - - - This allows mergejoins to work with descending sort orders, and - improves recognition of redundant sort columns. - - - - - - Improve performance when planning large inheritance trees in - cases where most tables are excluded by constraints (Tom) - - - - - - - - - Object Manipulation - - - - - - Arrays of composite types (David Fetter, Andrew, Tom) - - - - In addition to arrays of explicitly-declared composite types, - arrays of the rowtypes of regular tables and views are now - supported, except for rowtypes of system catalogs, sequences, and TOAST - tables. - - - - - - - Server configuration parameters can now be set on a per-function - basis (Tom) - - - - For example, functions can now set their own - search_path to prevent unexpected behavior if a - different search_path exists at run-time. Security - definer functions should set search_path to - avoid security loopholes. - - - - - - CREATE/ALTER FUNCTION now supports - COST and ROWS options (Tom) - - - - COST allows specification of the cost of a - function call. ROWS allows specification of - the average number or rows returned by a set-returning function. - These values are used by the optimizer in choosing the best plan. - - - - - - Implement CREATE TABLE LIKE ... INCLUDING - INDEXES (Trevor Hardcastle, Nikhil Sontakke, Neil) - - - - - - Allow CREATE INDEX CONCURRENTLY to ignore - transactions in other databases (Simon) - - - - - - Add ALTER VIEW ... RENAME TO and ALTER - SEQUENCE ... RENAME TO (David Fetter, Neil) - - - - Previously this could only be done via ALTER TABLE ... - RENAME TO. - - - - - - Make CREATE/DROP/RENAME DATABASE wait briefly for - conflicting backends to exit before failing (Tom) - - - - This increases the likelihood that these commands will succeed. - - - - - - Allow triggers and rules to be deactivated in groups using a - configuration parameter, for replication purposes (Jan) - - - - This allows replication systems to disable triggers and rewrite - rules as a group without modifying the system catalogs directly. - The behavior is controlled by ALTER TABLE and a new - parameter session_replication_role. - - - - - - User-defined types can now have type modifiers (Teodor, Tom) - - - - This allows a user-defined type to take a modifier, like - ssnum(7). Previously only built-in - data types could have modifiers. - - - - - - - - - Utility Commands - - - - - Non-superuser database owners now are able to add trusted procedural - languages to their databases by default (Jeremy Drake) - - - - While this is reasonably safe, some administrators might wish to - revoke the privilege. It is controlled by - pg_pltemplate.tmpldbacreate. - - - - - - Allow a session's current parameter setting to be used as the - default for future sessions (Tom) - - - - This is done with SET ... FROM CURRENT in - CREATE/ALTER FUNCTION, ALTER - DATABASE, or ALTER ROLE. - - - - - - Implement new commands DISCARD ALL, - DISCARD PLANS, DISCARD - TEMPORARY, CLOSE ALL, and - DEALLOCATE ALL (Marko Kreen, Neil) - - - - These commands simplify resetting a database session to its initial - state, and are particularly useful for connection-pooling software. - - - - - - Make CLUSTER MVCC-safe (Heikki Linnakangas) - - - - Formerly, CLUSTER would discard all tuples - that were committed dead, even if there were still transactions - that should be able to see them under MVCC visibility rules. - - - - - - Add new CLUSTER syntax: CLUSTER - table USING index - (Holger Schurig) - - - - The old CLUSTER syntax is still supported, but - the new form is considered more logical. - - - - - - Fix EXPLAIN so it can show complex plans - more accurately (Tom) - - - - References to subplan outputs are now always shown correctly, - instead of using ?columnN? - for complicated cases. - - - - - - Limit the amount of information reported when a user is dropped - (Alvaro) - - - - Previously, dropping (or attempting to drop) a user who owned many - objects could result in large NOTICE or - ERROR messages listing all these objects; this - caused problems for some client applications. The length of the - message is now limited, although a full list is still sent to the - server log. - - - - - - - - - Data Types - - - - - Support for the SQL/XML standard, including new operators and an - XML data type (Nikolay Samokhvalov, Pavel Stehule, Peter) - - - - - - Enumerated data types (ENUM) (Tom Dunstan) - - - - This feature provides convenient support for fields that have a - small, fixed set of allowed values. An example of creating an - ENUM type is - CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy'). - - - - - - Universally Unique Identifier (UUID) data type (Gevik - Babakhani, Neil) - - - - This closely matches RFC 4122. - - - - - - Widen the MONEY data type to 64 bits (D'Arcy Cain) - - - - This greatly increases the range of supported MONEY - values. - - - - - - Fix float4/float8 to handle - Infinity and NAN (Not A Number) - consistently (Bruce) - - - - The code formerly was not consistent about distinguishing - Infinity from overflow conditions. - - - - - - Allow leading and trailing whitespace during input of - boolean values (Neil) - - - - - - Prevent COPY from using digits and lowercase letters as - delimiters (Tom) - - - - - - - - - Functions - - - - - Add new regular expression functions - regexp_matches(), - regexp_split_to_array(), and - regexp_split_to_table() (Jeremy Drake, Neil) - - - - These functions provide extraction of regular expression - subexpressions and allow splitting a string using a POSIX regular - expression. - - - - - - Add lo_truncate() for large object truncation - (Kris Jurka) - - - - - - Implement width_bucket() for the float8 - data type (Neil) - - - - - - Add pg_stat_clear_snapshot() to discard - statistics snapshots collected during the current transaction - (Tom) - - - - The first request for statistics in a transaction takes a statistics - snapshot that does not change during the transaction. This function - allows the snapshot to be discarded and a new snapshot loaded during - the next statistics query. This is particularly useful for PL/PgSQL - functions, which are confined to a single transaction. - - - - - - Add isodow option to EXTRACT() and - date_part() (Bruce) - - - - This returns the day of the week, with Sunday as seven. - (dow returns Sunday as zero.) - - - - - - Add ID (ISO day of week) and IDDD (ISO - day of year) format codes for to_char(), - to_date(), and to_timestamp() (Brendan - Jurd) - - - - - - Make to_timestamp() and to_date() - assume TM (trim) option for potentially - variable-width fields (Bruce) - - - - This matches Oracle's behavior. - - - - - - Fix off-by-one conversion error in - to_date()/to_timestamp() - D (non-ISO day of week) fields (Bruce) - - - - - - Make setseed() return void, rather than a - useless integer value (Neil) - - - - - - Add a hash function for NUMERIC (Neil) - - - - This allows hash indexes and hash-based plans to be used with - NUMERIC columns. - - - - - - Improve efficiency of - LIKE/ILIKE, especially for - multi-byte character sets like UTF-8 (Andrew, Itagaki Takahiro) - - - - - - Make currtid() functions require - SELECT privileges on the target table (Tom) - - - - - - Add several txid_*() functions to query - active transaction IDs (Jan) - - - - This is useful for various replication solutions. - - - - - - - - - PL/PgSQL Server-Side Language - - - - - Add scrollable cursor support, including directional control in - FETCH (Pavel Stehule) - - - - - - Allow IN as an alternative to - FROM in PL/PgSQL's FETCH - statement, for consistency with the backend's - FETCH command (Pavel Stehule) - - - - - - Add MOVE to PL/PgSQL (Magnus, Pavel Stehule, - Neil) - - - - - - Implement RETURN QUERY (Pavel Stehule, Neil) - - - - This adds convenient syntax for PL/PgSQL set-returning functions - that want to return the result of a query. RETURN QUERY - is easier and more efficient than a loop - around RETURN NEXT. - - - - - - Allow function parameter names to be qualified with the - function's name (Tom) - - - - For example, myfunc.myvar. This is particularly - useful for specifying variables in a query where the variable - name might match a column name. - - - - - - Make qualification of variables with block labels work properly (Tom) - - - - Formerly, outer-level block labels could unexpectedly interfere with - recognition of inner-level record or row references. - - - - - - Tighten requirements for FOR loop - STEP values (Tom) - - - - Prevent non-positive STEP values, and handle - loop overflows. - - - - - - Improve accuracy when reporting syntax error locations (Tom) - - - - - - - - - Other Server-Side Languages - - - - - Allow type-name arguments to PL/Perl - spi_prepare() to be data type aliases in - addition to names found in pg_type (Andrew) - - - - - - Allow type-name arguments to PL/Python - plpy.prepare() to be data type aliases in - addition to names found in pg_type (Andrew) - - - - - - Allow type-name arguments to PL/Tcl spi_prepare to - be data type aliases in addition to names found in - pg_type (Andrew) - - - - - - Enable PL/PythonU to compile on Python 2.5 (Marko Kreen) - - - - - - Support a true PL/Python boolean type in compatible Python versions - (Python 2.3 and later) (Marko Kreen) - - - - - - Fix PL/Tcl problems with thread-enabled libtcl spawning - multiple threads within the backend (Steve Marshall, Paul Bayer, - Doug Knight) - - - - This caused all sorts of unpleasantness. - - - - - - - - - <link linkend="APP-PSQL"><application>psql</></link> - - - - - List disabled triggers separately in \d output - (Brendan Jurd) - - - - - - In \d patterns, always match $ - literally (Tom) - - - - - - Show aggregate return types in \da output - (Greg Sabino Mullane) - - - - - - Add the function's volatility status to the output of - \df+ (Neil) - - - - - - Add \prompt capability (Chad Wagner) - - - - - - Allow \pset, \t, and - \x to specify on or off, - rather than just toggling (Chad Wagner) - - - - - - Add \sleep capability (Jan) - - - - - - Enable \timing output for \copy (Andrew) - - - - - - Improve \timing resolution on Windows - (Itagaki Takahiro) - - - - - - Flush \o output after each backslash command (Tom) - - - - - - Correctly detect and report errors while reading a -f - input file (Peter) - - - - - - Remove -u option (this option has long been deprecated) - (Tom) - - - - - - - - - <link linkend="APP-PGDUMP"><application>pg_dump</></link> - - - - - Add --tablespaces-only and --roles-only - options to pg_dumpall (Dave Page) - - - - - - Add an output file option to - pg_dumpall (Dave Page) - - - - This is primarily useful on Windows, where output redirection of - child pg_dump processes does not work. - - - - - - Allow pg_dumpall to accept an initial-connection - database name rather than the default - template1 (Dave Page) - - - - - - In -n and -t switches, always match - $ literally (Tom) - - - - - - Improve performance when a database has thousands of objects (Tom) - - - - - - Remove -u option (this option has long been deprecated) - (Tom) - - - - - - - - - Other Client Applications - - - - - In initdb, allow the location of the - pg_xlog directory to be specified - (Euler Taveira de Oliveira) - - - - - - Enable server core dump generation in pg_regress - on supported operating systems (Andrew) - - - - - - Add a -t (timeout) parameter to pg_ctl - (Bruce) - - - - This controls how long pg_ctl will wait when waiting - for server startup or shutdown. Formerly the timeout was hard-wired - as 60 seconds. - - - - - - Add a pg_ctl option to control generation - of server core dumps (Andrew) - - - - - - Allow Control-C to cancel clusterdb, - reindexdb, and vacuumdb (Itagaki - Takahiro, Magnus) - - - - - - Suppress command tag output for createdb, - createuser, dropdb, and - dropuser (Peter) - - - - The --quiet option is ignored and will be removed in 8.4. - Progress messages when acting on all databases now go to stdout - instead of stderr because they are not actually errors. - - - - - - - - - <link linkend="libpq"><application>libpq</></link> - - - - - Interpret the dbName parameter of - PQsetdbLogin() as a conninfo string if - it contains an equals sign (Andrew) - - - - This allows use of conninfo strings in client - programs that still use PQsetdbLogin(). - - - - - - Support a global SSL configuration file (Victor - Wagner) - - - - - - Add environment variable PGSSLKEY to control - SSL hardware keys (Victor Wagner) - - - - - - Add lo_truncate() for large object - truncation (Kris Jurka) - - - - - - Add PQconnectionNeedsPassword() that returns - true if the server required a password but none was supplied - (Joe Conway, Tom) - - - - If this returns true after a failed connection attempt, a client - application should prompt the user for a password. In the past - applications have had to check for a specific error message string to - decide whether a password is needed; that approach is now - deprecated. - - - - - - Add PQconnectionUsedPassword() that returns - true if the supplied password was actually used - (Joe Conway, Tom) - - - - This is useful in some security contexts where it is important - to know whether a user-supplied password is actually valid. - - - - - - - - - <link linkend="ecpg"><application>ecpg</></link> - - - - - Use V3 frontend/backend protocol (Michael) - - - - This adds support for server-side prepared statements. - - - - - - Use native threads, instead of pthreads, on Windows (Magnus) - - - - - - Improve thread-safety of ecpglib (Itagaki Takahiro) - - - - - - Make the ecpg libraries export only necessary API symbols (Michael) - - - - - - - - - <application>Windows</> Port - - - - - Allow the whole PostgreSQL distribution to be compiled - with Microsoft Visual C++ (Magnus and others) - - - - This allows Windows-based developers to use familiar development - and debugging tools. - Windows executables made with Visual C++ might also have better - stability and performance than those made with other tool sets. - The client-only Visual C++ build scripts have been removed. - - - - - - Drastically reduce postmaster's memory usage when it has many child - processes (Magnus) - - - - - - Allow regression tests to be started by an administrative - user (Magnus) - - - - - - Add native shared memory implementation (Magnus) - - - - - - - - - Server Programming Interface (<acronym>SPI</>) - - - - - Add cursor-related functionality in SPI (Pavel Stehule) - - - - Allow access to the cursor-related planning options, and add - FETCH/MOVE routines. - - - - - - Allow execution of cursor commands through - SPI_execute (Tom) - - - - The macro SPI_ERROR_CURSOR still exists but will - never be returned. - - - - - - SPI plan pointers are now declared as SPIPlanPtr instead of - void * (Tom) - - - - This does not break application code, but switching is - recommended to help catch simple programming mistakes. - - - - - - - - - Build Options - - - - - Add configure option --enable-profiling - to enable code profiling (works only with gcc) - (Korry Douglas and Nikhil Sontakke) - - - - - - Add configure option --with-system-tzdata - to use the operating system's time zone database (Peter) - - - - - - Fix PGXS so extensions can be built against PostgreSQL - installations whose pg_config program does not - appear first in the PATH (Tom) - - - - - - Support gmake draft when building the - SGML documentation (Bruce) - - - - Unless draft is used, the documentation build will - now be repeated if necessary to ensure the index is up-to-date. - - - - - - - - - Source Code - - - - - Rename macro DLLIMPORT to PGDLLIMPORT to - avoid conflicting with third party includes (like Tcl) that - define DLLIMPORT (Magnus) - - - - - - Create operator families to improve planning of - queries involving cross-data-type comparisons (Tom) - - - - - - Update GIN extractQuery() API to allow signalling - that nothing can satisfy the query (Teodor) - - - - - - Move NAMEDATALEN definition from - postgres_ext.h to pg_config_manual.h - (Peter) - - - - - - Provide strlcpy() and - strlcat() on all platforms, and replace - error-prone uses of strncpy(), - strncat(), etc (Peter) - - - - - - Create hooks to let an external plugin monitor (or even replace) the - planner and create plans for hypothetical situations (Gurjeet - Singh, Tom) - - - - - - Create a function variable join_search_hook to let plugins - override the join search order portion of the planner (Julius - Stroffek) - - - - - - Add tas() support for Renesas' M32R processor - (Kazuhiro Inaoka) - - - - - - quote_identifier() and - pg_dump no longer quote keywords that are - unreserved according to the grammar (Tom) - - - - - - Change the on-disk representation of the NUMERIC - data type so that the sign_dscale word comes - before the weight (Tom) - - - - - - Use SYSV semaphores rather than POSIX on Darwin - >= 6.0, i.e., OS X 10.2 and up (Chris Marcellino) - - - - - - Add acronym and NFS documentation - sections (Bruce) - - - - - - "Postgres" is now documented as an accepted alias for - "PostgreSQL" (Peter) - - - - - - Add documentation about preventing database server spoofing when - the server is down (Bruce) - - - - - - - - - Contrib - - - - - Move contrib README content into the - main PostgreSQL documentation (Albert Cervera i - Areny) - - - - - - Add contrib/pageinspect module for low-level - page inspection (Simon, Heikki) - - - - - - Add contrib/pg_standby module for controlling - warm standby operation (Simon) - - - - - - Add contrib/uuid-ossp module for generating - UUID values using the OSSP UUID library (Peter) - - - - Use configure - --with-ossp-uuid to activate. This takes - advantage of the new UUID builtin type. - - - - - - Add contrib/dict_int, - contrib/dict_xsyn, and - contrib/test_parser modules to provide - sample add-on text search dictionary templates and parsers - (Sergey Karpov) - - - - - - Allow contrib/pgbench to set the fillfactor (Pavan - Deolasee) - - - - - - Add timestamps to contrib/pgbench -l - (Greg Smith) - - - - - - Add usage count statistics to - contrib/pgbuffercache (Greg Smith) - - - - - - Add GIN support for contrib/hstore (Teodor) - - - - - - Add GIN support for contrib/pg_trgm (Guillaume Smet, Teodor) - - - - - - Update OS/X startup scripts in - contrib/start-scripts (Mark Cotner, David - Fetter) - - - - - - Restrict pgrowlocks() and - dblink_get_pkey() to users who have - SELECT privilege on the target table (Tom) - - - - - - Restrict contrib/pgstattuple functions to - superusers (Tom) - - - - - - contrib/xml2 is deprecated and planned for - removal in 8.4 (Peter) - - - - The new XML support in core PostgreSQL supersedes this module. - - - - - - - - - - - Release 8.2.13 - - - Release date - 2009-03-16 - - - - This release contains a variety of fixes from 8.2.12. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.13 - - - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.11, - see the release notes for 8.2.11. - - - - - - Changes - - - - - - Prevent error recursion crashes when encoding conversion fails (Tom) - - - - 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 - 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) - - - - - - Disallow CREATE CONVERSION with the wrong encodings - for the specified conversion function (Heikki) - - - - 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. - - - - - - Fix core dump when to_char() is given format codes that - are inappropriate for the type of the data argument (Tom) - - - - - - Fix possible failure in contrib/tsearch2 when C locale is - used with a multi-byte encoding (Teodor) - - - - Crashes were possible on platforms where wchar_t is narrower - than int; Windows in particular. - - - - - - Fix extreme inefficiency in contrib/tsearch2 parser's - handling of an email-like string containing multiple @ - characters (Heikki) - - - - - - Fix decompilation of CASE WHEN with an implicit coercion - (Tom) - - - - This mistake could lead to Assert failures in an Assert-enabled build, - or an unexpected CASE WHEN clause error message in other - cases, when trying to examine or dump a view. - - - - - - Fix possible misassignment of the owner of a TOAST table's rowtype (Tom) - - - - If CLUSTER or a rewriting variant of ALTER TABLE - were executed by someone other than the table owner, the - pg_type entry for the table's TOAST table would end up - marked as owned by that someone. This caused no immediate problems, - since the permissions on the TOAST rowtype aren't examined by any - ordinary database operation. However, it could lead to unexpected - failures if one later tried to drop the role that issued the command - (in 8.1 or 8.2), or owner of data type appears to be invalid - warnings from pg_dump after having done so (in 8.3). - - - - - - Fix PL/pgSQL to not treat INTO after INSERT as - an INTO-variables clause anywhere in the string, not only at the start; - in particular, don't fail for INSERT INTO within - CREATE RULE (Tom) - - - - - - Clean up PL/pgSQL error status variables fully at block exit - (Ashesh Vashi and Dave Page) - - - - This is not a problem for PL/pgSQL itself, but the omission could cause - the PL/pgSQL Debugger to crash while examining the state of a function. - - - - - - Retry failed calls to CallNamedPipe() on Windows - (Steve Marshall, Magnus) - - - - It appears that this function can sometimes fail transiently; - we previously treated any failure as a hard error, which could - confuse LISTEN/NOTIFY as well as other - operations. - - - - - - Add MUST (Mauritius Island Summer Time) to the default list - of known timezone abbreviations (Xavier Bugaud) - - - - - - - - - - Release 8.2.12 - - - Release date - 2009-02-02 - - - - This release contains a variety of fixes from 8.2.11. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.12 - - - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.11, - see the release notes for 8.2.11. - - - - - - Changes - - - - - - Improve handling of URLs in headline() function (Teodor) - - - - - - Improve handling of overlength headlines in headline() - function (Teodor) - - - - - - 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) - - - - - - Fix possible Assert failure if a statement executed in PL/pgSQL is - rewritten into another kind of statement, for example if an - INSERT is rewritten into an UPDATE (Heikki) - - - - - - Ensure that a snapshot is available to datatype input functions (Tom) - - - - This primarily affects domains that are declared with CHECK - constraints involving user-defined stable or immutable functions. Such - functions typically fail if no snapshot has been set. - - - - - - Make it safer for SPI-using functions to be used within datatype I/O; - in particular, to be used in domain check constraints (Tom) - - - - - - Avoid unnecessary locking of small tables in VACUUM - (Heikki) - - - - - - Fix a problem that made UPDATE RETURNING tableoid - return zero instead of the correct OID (Tom) - - - - - - Fix planner misestimation of selectivity when transitive equality - is applied to an outer-join clause (Tom) - - - - This could result in bad plans for queries like - ... from a left join b on a.a1 = b.b1 where a.a1 = 42 ... - - - - - - Improve optimizer's handling of long IN lists (Tom) - - - - This change avoids wasting large amounts of time on such lists - when constraint exclusion is enabled. - - - - - - Ensure that the contents of a holdable cursor don't depend on the - contents of TOAST tables (Tom) - - - - Previously, large field values in a cursor result might be represented - as TOAST pointers, which would fail if the referenced table got dropped - before the cursor is read, or if the large value is deleted and then - vacuumed away. This cannot happen with an ordinary cursor, - but it could with a cursor that is held past its creating transaction. - - - - - - Fix memory leak when a set-returning function is terminated without - reading its whole result (Tom) - - - - - - Fix contrib/dblink's - dblink_get_result(text,bool) function (Joe) - - - - - - Fix possible garbage output from contrib/sslinfo functions - (Tom) - - - - - - Fix configure script to properly report failure when - unable to obtain linkage information for PL/Perl (Andrew) - - - - - - Make all documentation reference pgsql-bugs and/or - pgsql-hackers as appropriate, instead of the - now-decommissioned pgsql-ports and pgsql-patches - mailing lists (Tom) - - - - - - Update time zone data files to tzdata release 2009a (for - Kathmandu and historical DST corrections in Switzerland, Cuba) - - - - - - - - - - Release 8.2.11 - - - Release date - 2008-11-03 - - - - This release contains a variety of fixes from 8.2.10. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.11 - - - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.7, - see the release notes for 8.2.7. Also, if you were running a previous - 8.2.X release, it is recommended to REINDEX all GiST - indexes after the upgrade. - - - - - - Changes - - - - - - Fix GiST index corruption due to marking the wrong index entry - dead after a deletion (Teodor) - - - - This would result in index searches failing to find rows they - should have found. Corrupted indexes can be fixed with - REINDEX. - - - - - - Fix backend crash when the client encoding cannot represent a localized - error message (Tom) - - - - We have addressed similar issues before, but it would still fail if - the 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. - - - - - - Fix possible crash when deeply nested functions are invoked from - a trigger (Tom) - - - - - - Improve optimization of expression IN - (expression-list) queries (Tom, per an idea from Robert - Haas) - - - - Cases in which there are query variables on the right-hand side had been - handled less efficiently in 8.2.x and 8.3.x than in prior versions. - The fix restores 8.1 behavior for such cases. - - - - - - Fix mis-expansion of rule queries when a sub-SELECT appears - in a function call in FROM, a multi-row VALUES - list, or a RETURNING list (Tom) - - - - The usual symptom of this problem is an unrecognized node type - error. - - - - - - Fix memory leak during rescan of a hashed aggregation plan (Neil) - - - - - - Ensure an error is reported when a newly-defined PL/pgSQL trigger - function is invoked as a normal function (Tom) - - - - - - Prevent possible collision of relfilenode numbers - when moving a table to another tablespace with ALTER SET - TABLESPACE (Heikki) - - - - The command tried to re-use the existing filename, instead of - picking one that is known unused in the destination directory. - - - - - - Fix incorrect tsearch2 headline generation when single query - item matches first word of text (Sushant Sinha) - - - - - - Fix improper display of fractional seconds in interval values when - using a non-ISO datestyle in an - - - - - Ensure SPI_getvalue and SPI_getbinval - behave correctly when the passed tuple and tuple descriptor have - different numbers of columns (Tom) - - - - 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. - - - - - - Fix ecpg's parsing of CREATE ROLE (Michael) - - - - - - Fix recent breakage of pg_ctl restart (Tom) - - - - - - Ensure pg_control is opened in binary mode - (Itagaki Takahiro) - - - - pg_controldata and pg_resetxlog - did this incorrectly, and so could fail on Windows. - - - - - - Update time zone data files to tzdata release 2008i (for - DST law changes in Argentina, Brazil, Mauritius, Syria) - - - - - - - - - - Release 8.2.10 - - - Release date - 2008-09-22 - - - - This release contains a variety of fixes from 8.2.9. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.10 - - - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.7, - see the release notes for 8.2.7. - - - - - - Changes - - - - - - Fix bug in btree WAL recovery code (Heikki) - - - - Recovery failed if the WAL ended partway through a page split operation. - - - - - - Fix potential miscalculation of datfrozenxid (Alvaro) - - - - This error may explain some recent reports of failure to remove old - pg_clog data. - - - - - - Widen local lock counters from 32 to 64 bits (Tom) - - - - This responds to reports that the counters could overflow in - sufficiently long transactions, leading to unexpected lock is - already held errors. - - - - - - Fix possible duplicate output of tuples during a GiST index scan (Teodor) - - - - - - Fix missed permissions checks when a view contains a simple - UNION ALL construct (Heikki) - - - - Permissions for the referenced tables were checked properly, but not - permissions for the view itself. - - - - - - Add checks in executor startup to ensure that the tuples produced by an - INSERT or UPDATE will match the target table's - current rowtype (Tom) - - - - ALTER COLUMN TYPE, followed by re-use of a previously - cached plan, could produce this type of situation. The check protects - against data corruption and/or crashes that could ensue. - - - - - - Fix possible repeated drops during DROP OWNED (Tom) - - - - This would typically result in strange errors such as cache - lookup failed for relation NNN. - - - - - - Fix AT TIME ZONE to first try to interpret its timezone - argument as a timezone abbreviation, and only try it as a full timezone - name if that fails, rather than the other way around as formerly (Tom) - - - - The timestamp input functions have always resolved ambiguous zone names - in this order. Making AT TIME ZONE do so as well improves - consistency, and fixes a compatibility bug introduced in 8.1: - in ambiguous cases we now behave the same as 8.0 and before did, - since in the older versions AT TIME ZONE accepted - only abbreviations. - - - - - - Fix datetime input functions to correctly detect integer overflow when - running on a 64-bit platform (Tom) - - - - - - Prevent integer overflows during units conversion when displaying a - configuration parameter that has units (Tom) - - - - - - Improve performance of writing very long log messages to syslog (Tom) - - - - - - Allow spaces in the suffix part of an LDAP URL in - pg_hba.conf (Tom) - - - - - - Fix bug in backwards scanning of a cursor on a SELECT DISTINCT - ON query (Tom) - - - - - - Fix planner bug with nested sub-select expressions (Tom) - - - - If the outer sub-select has no direct dependency on the parent query, - but the inner one does, the outer value might not get recalculated - for new parent query rows. - - - - - - Fix planner to estimate that GROUP BY expressions yielding - boolean results always result in two groups, regardless of the - expressions' contents (Tom) - - - - This is very substantially more accurate than the regular GROUP - BY estimate for certain boolean tests like col - IS NULL. - - - - - - Fix PL/PgSQL to not fail when a FOR loop's target variable - is a record containing composite-type fields (Tom) - - - - - - Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful - about the encoding of data sent to or from Tcl (Tom) - - - - - - On Windows, work around a Microsoft bug by preventing - libpq from trying to send more than 64kB per system call - (Magnus) - - - - - - Improve pg_dump and pg_restore's - error reporting after failure to send a SQL command (Tom) - - - - - - Fix pg_ctl to properly preserve postmaster - command-line arguments across a restart (Bruce) - - - - - - Update time zone data files to tzdata release 2008f (for - DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, - Pakistan, Palestine, and Paraguay) - - - - - - - - - - Release 8.2.9 - - - Release date - 2008-06-12 - - - - This release contains one serious and one minor bug fix over 8.2.8. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.9 - - - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.7, - see the release notes for 8.2.7. - - - - - - Changes - - - - - - Make pg_get_ruledef() parenthesize negative constants (Tom) - - - - Before this fix, a negative constant in a view or rule might be dumped - as, say, -42::integer, which is subtly incorrect: it should - be (-42)::integer due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - PostgreSQL to reject what had been a valid - SELECT DISTINCT view query. Since this could result in - 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. - - - - - - Make ALTER AGGREGATE ... OWNER TO update - pg_shdepend (Tom) - - - - This oversight could lead to problems if the aggregate was later - involved in a DROP OWNED or REASSIGN OWNED - operation. - - - - - - - - - - Release 8.2.8 - - - Release date - never released - - - - This release contains a variety of fixes from 8.2.7. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.8 - - - A dump/restore is not required for those running 8.2.X. - However, if you are upgrading from a version earlier than 8.2.7, - see the release notes for 8.2.7. - - - - - - Changes - - - - - - Fix ERRORDATA_STACK_SIZE exceeded crash that - occurred on Windows when using UTF-8 database encoding and a different - client encoding (Tom) - - - - - - Fix ALTER TABLE ADD COLUMN ... PRIMARY KEY so that the new - column is correctly checked to see if it's been initialized to all - non-nulls (Brendan Jurd) - - - - Previous versions neglected to check this requirement at all. - - - - - - Fix possible CREATE TABLE failure when inheriting the - same constraint from multiple parent relations that - inherited that constraint from a common ancestor (Tom) - - - - - - Fix pg_get_ruledef() to show the alias, if any, attached - to the target table of an UPDATE or DELETE - (Tom) - - - - - - Fix GIN bug that could result in a too many LWLocks - taken failure (Teodor) - - - - - - Avoid possible crash when decompressing corrupted data - (Zdenek Kotala) - - - - - - Repair two places where SIGTERM exit of a backend could leave corrupted - state in shared memory (Tom) - - - - Neither case is very important if SIGTERM is used to shut down the - whole database cluster together, but there was a problem if someone - tried to SIGTERM individual backends. - - - - - - Fix conversions between ISO-8859-5 and other encodings to handle - Cyrillic Yo characters (e and E with - two dots) (Sergey Burladyan) - - - - - - Fix several datatype input functions, notably array_in(), - that were allowing unused bytes in their results to contain - uninitialized, unpredictable values (Tom) - - - - This could lead to failures in which two apparently identical literal - values were not seen as equal, resulting in the parser complaining - about unmatched ORDER BY and DISTINCT - expressions. - - - - - - Fix a corner case in regular-expression substring matching - (substring(string from - pattern)) (Tom) - - - - 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 - substring('foo' from 'foo(bar)?'). - This should return NULL, since (bar) isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - foo). - - - - - - Update time zone data files to tzdata release 2008c (for - DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and - Argentina/San_Luis) - - - - - - Fix incorrect result from ecpg's - PGTYPEStimestamp_sub() function (Michael) - - - - - - Fix broken GiST comparison function for contrib/tsearch2's - tsquery type (Teodor) - - - - - - Fix possible crashes in contrib/cube functions (Tom) - - - - - - Fix core dump in contrib/xml2's - xpath_table() function when the input query returns a - NULL value (Tom) - - - - - - Fix contrib/xml2's makefile to not override - CFLAGS (Tom) - - - - - - Fix DatumGetBool macro to not fail with gcc - 4.3 (Tom) - - - - This problem affects 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. - - - - - - - - - - Release 8.2.7 - - - Release date - 2008-03-17 - - - - This release contains a variety of fixes from 8.2.6. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.7 - - - A dump/restore is not required for those running 8.2.X. - However, you might need to REINDEX indexes on textual - columns after updating, if you are affected by the Windows locale - issue described below. - - - - - - Changes - - - - - - Fix character string comparison for Windows locales that consider - different character combinations as equal (Tom) - - - - This fix applies only on Windows and only when using UTF-8 - database encoding. The same fix was made for all other cases - over two years ago, but Windows with UTF-8 uses a separate code - path that was not updated. If you are using a locale that - considers some non-identical strings as equal, you may need to - REINDEX to fix existing indexes on textual columns. - - - - - - Repair potential deadlock between concurrent VACUUM FULL - operations on different system catalogs (Tom) - - - - - - Fix longstanding LISTEN/NOTIFY - race condition (Tom) - - - - In rare cases a session that had just executed a - LISTEN might not get a notification, even though - one would be expected because the concurrent transaction executing - NOTIFY was observed to commit later. - - - - A side effect of the fix is that a transaction that has executed - a not-yet-committed LISTEN command will not see any - row in pg_listener for the 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. - - - - - - Disallow LISTEN and UNLISTEN within a - prepared transaction (Tom) - - - - This was formerly allowed but trying to do it had various unpleasant - consequences, notably that the originating backend could not exit - as long as an UNLISTEN remained uncommitted. - - - - - - Disallow dropping a temporary table within a - prepared transaction (Heikki) - - - - This was correctly disallowed by 8.1, but the check was inadvertently - broken in 8.2. - - - - - - Fix rare crash when an error occurs during a query using a hash index - (Heikki) - - - - - - Fix memory leaks in certain usages of set-returning functions (Neil) - - - - - - Fix input of datetime values for February 29 in years BC (Tom) - - - - The former coding was mistaken about which years were leap years. - - - - - - Fix unrecognized node type error in some variants of - ALTER OWNER (Tom) - - - - - - Ensure pg_stat_activity.waiting flag - is cleared when a lock wait is aborted (Tom) - - - - - - Fix handling of process permissions on Windows Vista (Dave, Magnus) - - - - In particular, this fix allows starting the server as the Administrator - user. - - - - - - Update time zone data files to tzdata release 2008a - (in particular, recent Chile changes); adjust timezone abbreviation - VET (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom) - - - - - - Fix pg_ctl to correctly extract the postmaster's port - number from command-line options (Itagaki Takahiro, Tom) - - - - Previously, pg_ctl start -w could try to contact the - postmaster on the wrong port, leading to bogus reports of startup - failure. - - - - - - Use - - - This is known to be necessary when building PostgreSQL - with gcc 4.3 or later. - - - - - - - Correctly enforce statement_timeout values longer - than INT_MAX microseconds (about 35 minutes) (Tom) - - - - This bug affects only builds with - - - - - Fix unexpected PARAM_SUBLINK ID planner error when - constant-folding simplifies a sub-select (Tom) - - - - - - Fix logical errors in constraint-exclusion handling of IS - NULL and NOT expressions (Tom) - - - - The planner would sometimes exclude partitions that should not - have been excluded because of the possibility of NULL results. - - - - - - Fix another cause of failed to build any N-way joins - planner errors (Tom) - - - - This could happen in cases where a clauseless join needed to be - forced before a join clause could be exploited. - - - - - - Fix incorrect constant propagation in outer-join planning (Tom) - - - - The planner could sometimes incorrectly conclude that a variable - could be constrained to be equal to a constant, leading - to wrong query results. - - - - - - Fix display of constant expressions in ORDER BY - and GROUP BY (Tom) - - - - An explictly casted constant would be shown incorrectly. This could - for example lead to corruption of a view definition during - dump and reload. - - - - - - Fix libpq to handle NOTICE messages correctly - during COPY OUT (Tom) - - - - 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. - - - - - - - - - - Release 8.2.6 - - - Release date - 2008-01-07 - - - - This release contains a variety of fixes from 8.2.5, - including fixes for significant security issues. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.6 - - - A dump/restore is not required for those running 8.2.X. - - - - - - Changes - - - - - - Prevent functions in indexes from executing with the privileges of - the user running VACUUM, ANALYZE, etc (Tom) - - - - 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 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 VACUUM, ANALYZE, REINDEX, - and CLUSTER) to execute as the table owner rather than - the calling user, using the same privilege-switching mechanism already - used for SECURITY DEFINER functions. To prevent bypassing - this security measure, execution of SET SESSION - AUTHORIZATION and SET ROLE is now forbidden within a - SECURITY DEFINER context. (CVE-2007-6600) - - - - - - Repair assorted bugs in the regular-expression package (Tom, Will Drewry) - - - - 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) - - - - - - Require non-superusers who use /contrib/dblink to use only - password authentication, as a security measure (Joe) - - - - The fix that appeared for this in 8.2.5 was incomplete, as it plugged - the hole for only some dblink functions. (CVE-2007-6601, - CVE-2007-3278) - - - - - - Fix bugs in WAL replay for GIN indexes (Teodor) - - - - - - Fix GIN index build to work properly when - maintenance_work_mem is 4GB or more (Tom) - - - - - - Update time zone data files to tzdata release 2007k - (in particular, recent Argentina changes) (Tom) - - - - - - Improve planner's handling of LIKE/regex estimation in non-C locales - (Tom) - - - - - - Fix planning-speed problem for deep outer-join nests, as well as - possible poor choice of join order (Tom) - - - - - - Fix planner failure in some cases of WHERE false AND var IN - (SELECT ...) (Tom) - - - - - - Make CREATE TABLE ... SERIAL and - ALTER SEQUENCE ... OWNED BY not change the - currval() state of the sequence (Tom) - - - - - - Preserve the tablespace and storage parameters of indexes that are - rebuilt by ALTER TABLE ... ALTER COLUMN TYPE (Tom) - - - - - - Make archive recovery always start a new WAL timeline, rather than only - when a recovery stop time was used (Simon) - - - - This avoids a corner-case risk of trying to overwrite an existing - archived copy of the last WAL segment, and seems simpler and cleaner - than the original definition. - - - - - - Make VACUUM not use all of maintenance_work_mem - when the table is too small for it to be useful (Alvaro) - - - - - - Fix potential crash in translate() when using a multibyte - database encoding (Tom) - - - - - - Make corr() return the correct result for negative - correlation values (Neil) - - - - - - Fix overflow in extract(epoch from interval) for intervals - exceeding 68 years (Tom) - - - - - - Fix PL/Perl to not fail when a UTF-8 regular expression is used - in a trusted function (Andrew) - - - - - - Fix PL/Perl to cope when platform's Perl defines type bool - as int rather than char (Tom) - - - - While this could theoretically happen anywhere, no standard build of - Perl did things this way ... until Mac OS X 10.5. - - - - - - Fix PL/Python to work correctly with Python 2.5 on 64-bit machines - (Marko Kreen) - - - - - - Fix PL/Python to not crash on long exception messages (Alvaro) - - - - - - Fix pg_dump to correctly handle inheritance child tables - that have default expressions different from their parent's (Tom) - - - - - - Fix libpq crash when PGPASSFILE refers - to a file that is not a plain file (Martin Pitt) - - - - - - ecpg parser fixes (Michael) - - - - - - Make contrib/pgcrypto defend against - OpenSSL libraries that fail on keys longer than 128 - bits; which is the case at least on some Solaris versions (Marko Kreen) - - - - - - Make contrib/tablefunc's crosstab() handle - NULL rowid as a category in its own right, rather than crashing (Joe) - - - - - - Fix tsvector and tsquery output routines to - escape backslashes correctly (Teodor, Bruce) - - - - - - Fix crash of to_tsvector() on huge input strings (Teodor) - - - - - - Require a specific version of Autoconf to be used - when re-generating the configure script (Peter) - - - - This affects developers and packagers only. The change was made - to prevent accidental use of untested combinations of - Autoconf and PostgreSQL versions. - You can remove the version check if you really want to use a - different Autoconf version, but it's - your responsibility whether the result works or not. - - - - - - Update gettimeofday configuration check so that - PostgreSQL can be built on newer versions of - MinGW (Magnus) - - - - - - - - - - Release 8.2.5 - - - Release date - 2007-09-17 - - - - This release contains a variety of fixes from 8.2.4. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.5 - - - A dump/restore is not required for those running 8.2.X. - - - - - - Changes - - - - - - Prevent index corruption when a transaction inserts rows and - then aborts close to the end of a concurrent VACUUM - on the same table (Tom) - - - - - - Fix ALTER DOMAIN ADD CONSTRAINT for cases involving - domains over domains (Tom) - - - - - - Make CREATE DOMAIN ... DEFAULT NULL work properly (Tom) - - - - - - Fix some planner problems with outer joins, notably poor - size estimation for t1 LEFT JOIN t2 WHERE t2.col IS NULL - (Tom) - - - - - - Allow the interval data type to accept input consisting only of - milliseconds or microseconds (Neil) - - - - - - Allow timezone name to appear before the year in timestamp input (Tom) - - - - - - Fixes for GIN indexes used by /contrib/tsearch2 (Teodor) - - - - - - Speed up rtree index insertion (Teodor) - - - - - - Fix excessive logging of SSL error messages (Tom) - - - - - - Fix logging so that log messages are never interleaved when using - the syslogger process (Andrew) - - - - - - Fix crash when log_min_error_statement logging runs out - of memory (Tom) - - - - - - Fix incorrect handling of some foreign-key corner cases (Tom) - - - - - - Fix stddev_pop(numeric) and var_pop(numeric) (Tom) - - - - - - Prevent REINDEX and CLUSTER from failing - due to attempting to process temporary tables of other sessions (Alvaro) - - - - - - Update the time zone database rules, particularly New Zealand's upcoming changes (Tom) - - - - - - Windows socket and semaphore improvements (Magnus) - - - - - - Make pg_ctl -w work properly in Windows service mode (Dave Page) - - - - - - Fix memory allocation bug when using MIT Kerberos on Windows (Magnus) - - - - - - Suppress timezone name (%Z) in log timestamps on Windows - because of possible encoding mismatches (Tom) - - - - - - Require non-superusers who use /contrib/dblink to use only - password authentication, as a security measure (Joe) - - - - - - Restrict /contrib/pgstattuple functions to superusers, for security reasons (Tom) - - - - - - Do not let /contrib/intarray try to make its GIN opclass - the default (this caused problems at dump/restore) (Tom) - - - - - - - - - - Release 8.2.4 - - - Release date - 2007-04-23 - - - - This release contains a variety of fixes from 8.2.3, - including a security fix. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.4 - - - A dump/restore is not required for those running 8.2.X. - - - - - - Changes - - - - - - Support explicit placement of the temporary-table schema within - search_path, and disable searching it for functions - and operators (Tom) - - - - This is needed to allow a security-definer function to set a - truly secure value of 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 CREATE FUNCTION for more information. - - - - - - Fix shared_preload_libraries for Windows - by forcing reload in each backend (Korry Douglas) - - - - - - Fix to_char() so it properly upper/lower cases localized day or month - names (Pavel Stehule) - - - - - - /contrib/tsearch2 crash fixes (Teodor) - - - - - - Require COMMIT PREPARED to be executed in the same - database as the transaction was prepared in (Heikki) - - - - - - Allow pg_dump to do binary backups larger than two gigabytes - on Windows (Magnus) - - - - - - New traditional (Taiwan) Chinese FAQ (Zhou Daojing) - - - - - - Prevent the statistics collector from writing to disk too frequently (Tom) - - - - - - Fix potential-data-corruption bug in how VACUUM FULL handles - UPDATE chains (Tom, Pavan Deolasee) - - - - - - Fix bug in domains that use array types (Tom) - - - - - - Fix pg_dump so it can dump a serial column's sequence - using - - - - - Planner fixes, including improving outer join and bitmap scan - selection logic (Tom) - - - - - - Fix possible wrong answers or crash when a PL/pgSQL function tries - to RETURN from within an EXCEPTION block - (Tom) - - - - - - Fix PANIC during enlargement of a hash index (Tom) - - - - - - Fix POSIX-style timezone specs to follow new USA DST rules (Tom) - - - - - - - - - - Release 8.2.3 - - - Release date - 2007-02-07 - - - - This release contains two fixes from 8.2.2. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.3 - - - A dump/restore is not required for those running 8.2.X. - - - - - - Changes - - - - - - Remove overly-restrictive check for type length in constraints and - functional indexes(Tom) - - - - - - Fix optimization so MIN/MAX in subqueries can again use indexes (Tom) - - - - - - - - - - Release 8.2.2 - - - Release date - 2007-02-05 - - - - This release contains a variety of fixes from 8.2.1, including - a security fix. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.2 - - - A dump/restore is not required for those running 8.2.X. - - - - - - Changes - - - - - - Remove security vulnerabilities that allowed connected users - to read backend memory (Tom) - - - - The vulnerabilities involve suppressing the normal check that a SQL - function returns the data type it's declared to, and changing the - data type of a table column (CVE-2007-0555, CVE-2007-0556). These - errors can easily be exploited to cause a backend crash, and in - principle might be used to read database content that the user - should not be able to access. - - - - - - Fix not-so-rare-anymore bug wherein btree index page splits could fail - due to choosing an infeasible split point (Heikki Linnakangas) - - - - - - Fix Borland C compile scripts (L Bayuk) - - - - - - Properly handle to_char('CC') for years ending in - 00 (Tom) - - - - Year 2000 is in the twentieth century, not the twenty-first. - - - - - - /contrib/tsearch2 localization improvements (Tatsuo, Teodor) - - - - - - Fix incorrect permission check in - information_schema.key_column_usage view (Tom) - - - - The symptom is relation with OID nnnnn does not exist errors. - To get this fix without using initdb, use CREATE OR - REPLACE VIEW to install the corrected definition found in - share/information_schema.sql. Note you will need to do - this in each database. - - - - - - Improve VACUUM performance for databases with many tables (Tom) - - - - - - Fix for rare Assert() crash triggered by UNION (Tom) - - - - - - Fix potentially incorrect results from index searches using - ROW inequality conditions (Tom) - - - - - - Tighten security of multi-byte character processing for UTF8 sequences - over three bytes long (Tom) - - - - - - Fix bogus permission denied failures occurring on Windows - due to attempts to fsync already-deleted files (Magnus, Tom) - - - - - - Fix bug that could cause the statistics collector - to hang on Windows (Magnus) - - - - This would in turn lead to autovacuum not working. - - - - - - Fix possible crashes when an already-in-use PL/pgSQL function is - updated (Tom) - - - - - - Improve PL/pgSQL handling of domain types (Sergiy Vyshnevetskiy, Tom) - - - - - - Fix possible errors in processing PL/pgSQL exception blocks (Tom) - - - - - - - - - - Release 8.2.1 - - - Release date - 2007-01-08 - - - - This release contains a variety of fixes from 8.2. - For information about new features in the 8.2 major release, see - . - - - - Migration to Version 8.2.1 - - - A dump/restore is not required for those running 8.2. - - - - - - Changes - - - - - - Fix crash with SELECT ... LIMIT ALL (also - LIMIT NULL) (Tom) - - - - - - Several /contrib/tsearch2 fixes (Teodor) - - - - - - On Windows, make log messages coming from the operating system use - ASCII encoding (Hiroshi Saito) - - - - This fixes a conversion problem when there is a mismatch between - the encoding of the operating system and database server. - - - - - - Fix Windows linking of pg_dump using - win32.mak - (Hiroshi Saito) - - - - - - Fix planner mistakes for outer join queries (Tom) - - - - - - Fix several problems in queries involving sub-SELECTs (Tom) - - - - - - Fix potential crash in SPI during subtransaction abort (Tom) - - - - This affects all PL functions since they all use SPI. - - - - - - Improve build speed of PDF documentation (Peter) - - - - - - Re-add JST (Japan) timezone abbreviation (Tom) - - - - - - Improve optimization decisions related to index scans (Tom) - - - - - - Have psql print multi-byte combining characters as - before, rather than output as \u (Tom) - - - - - - Improve index usage of regular expressions that use parentheses (Tom) - - - - This improves psql \d performance also. - - - - - - Make pg_dumpall assume that databases have public - CONNECT privilege, when dumping from a pre-8.2 server (Tom) - - - - This preserves the previous behavior that anyone can connect to a - database if allowed by pg_hba.conf. - - - - - - - - - - Release 8.2 - - - Release date - 2006-12-05 - - - - Overview - - - This release adds many functionality and performance improvements that - were requested by users, including: - - - - - - Query language enhancements including INSERT/UPDATE/DELETE - RETURNING, multirow VALUES lists, and - optional target-table alias in - UPDATE/DELETE - - - - - - Index creation without blocking concurrent - INSERT/UPDATE/DELETE - operations - - - - - - Many query optimization improvements, including support for - reordering outer joins - - - - - - Improved sorting performance with lower memory usage - - - - - - More efficient locking with better concurrency - - - - - - More efficient vacuuming - - - - - - Easier administration of warm standby servers - - - - - - New FILLFACTOR support for tables and indexes - - - - - - Monitoring, logging, and performance tuning additions - - - - - - More control over creating and dropping objects - - - - - - Table inheritance relationships can be defined - for and removed from pre-existing tables - - - - - - COPY TO can copy the output of an arbitrary - SELECT statement - - - - - - Array improvements, including nulls in arrays - - - - - - Aggregate-function improvements, including multiple-input - aggregates and SQL:2003 statistical functions - - - - - - Many contrib/ improvements - - - - - - - - - - - Migration to Version 8.2 - - - A dump/restore using pg_dump is - required for those wishing to migrate data from any previous - release. - - - - Observe the following incompatibilities: - - - - - - - Set escape_string_warning - to on by default (Bruce) - - - - This issues a warning if backslash escapes are used in - non-escape (non-E'') - strings. - - - - - - Change the row - constructor syntax (ROW(...)) so that - list elements foo.* will be expanded to a list - of their member fields, rather than creating a nested - row type field as formerly (Tom) - - - - The new behavior is substantially more useful since it - allows, for example, triggers to check for data changes - with IF row(new.*) IS DISTINCT FROM row(old.*). - The old behavior is still available by omitting .*. - - - - - - Make row comparisons - follow SQL standard semantics and allow them - to be used in index scans (Tom) - - - - Previously, row = and <> comparisons followed the - standard but < <= > >= did not. A row comparison - can now be used as an index constraint for a multicolumn - index matching the row value. - - - - - - Make row IS NOT NULL - tests follow SQL standard semantics (Tom) - - - - The former behavior conformed to the standard for simple cases - with IS NULL, but IS NOT NULL would return - true if any row field was non-null, whereas the standard says it - should return true only when all fields are non-null. - - - - - - Make SET - CONSTRAINT affect only one constraint (Kris Jurka) - - - - In previous releases, SET CONSTRAINT modified - all constraints with a matching name. In this release, - the schema search path is used to modify only the first - matching constraint. A schema specification is also - supported. This more nearly conforms to the SQL standard. - - - - - - Remove RULE permission for tables, for security reasons - (Tom) - - - - As of this release, only a table's owner can create or modify - rules for the table. For backwards compatibility, - GRANT/REVOKE RULE is still accepted, - but it does nothing. - - - - - - Array comparison improvements (Tom) - - - - Now array dimensions are also compared. - - - - - - Change array concatenation - to match documented behavior (Tom) - - - - This changes the previous behavior where concatenation - would modify the array lower bound. - - - - - - Make command-line options of postmaster - and postgres - identical (Peter) - - - - This allows the postmaster to pass arguments to each backend - without using -o. Note that some options are now - only available as long-form options, because there were conflicting - single-letter options. - - - - - - Deprecate use of postmaster symbolic link (Peter) - - - - postmaster and postgres - commands now act identically, with the behavior determined - by command-line options. The postmaster symbolic link is - kept for compatibility, but is not really needed. - - - - - - Change log_duration - to output even if the query is not output (Tom) - - - - In prior releases, log_duration only printed if - the query appeared earlier in the log. - - - - - - Make to_char(time) - and to_char(interval) - treat HH and HH12 as 12-hour - intervals - - - - Most applications should use HH24 unless they - want a 12-hour display. - - - - - - Zero unmasked bits in conversion from INET to CIDR (Tom) - - - - This ensures that the converted value is actually valid for - CIDR. - - - - - - Remove australian_timezones configuration variable - (Joachim Wieland) - - - - This variable has been superseded by a more general facility - for configuring timezone abbreviations. - - - - - - Improve cost estimation for nested-loop index scans (Tom) - - - - This might eliminate the need to set unrealistically small - values of random_page_cost. - If you have been using a very small random_page_cost, - please recheck your test cases. - - - - - - Change behavior of pg_dump -n and - -t options. (Greg Sabino Mullane) - - - See the pg_dump manual page for details. - - - - - - Change libpq - PQdsplen() to return a useful value (Martijn - van Oosterhout) - - - - - - Declare libpq - PQgetssl() as returning void *, - rather than SSL * (Martijn van Oosterhout) - - - - This allows applications to use the function without including - the OpenSSL headers. - - - - - - C-language loadable modules must now include a - PG_MODULE_MAGIC - macro call for version compatibility checking - (Martijn van Oosterhout) - - - - - - For security's sake, modules used by a PL/PerlU function are no - longer available to PL/Perl functions (Andrew) - - - - This also implies that data can no longer be shared between a PL/Perl - function and a PL/PerlU function. - Some Perl installations have not been compiled with the correct flags - to allow multiple interpreters to exist within a single process. - In this situation PL/Perl and PL/PerlU cannot both be used in a - single backend. The solution is to get a Perl installation which - supports multiple interpreters. - - - - - - - In contrib/xml2/, rename xml_valid() to - xml_is_well_formed() (Tom) - - - - xml_valid() will remain for backward compatibility, - but its behavior will change to do schema checking in a future - release. - - - - - - Remove contrib/ora2pg/, now at - - - - - - Remove contrib modules that have been migrated to PgFoundry: - adddepend, dbase, dbmirror, - fulltextindex, mac, userlock - - - - - - Remove abandoned contrib modules: - mSQL-interface, tips - - - - - - Remove QNX and BEOS ports (Bruce) - - - - These ports no longer had active maintainers. - - - - - - - - Changes - - - Below you will find a detailed account of the - changes between PostgreSQL 8.2 and - the previous major release. - - - - Performance Improvements - - - - - Allow the planner to reorder outer - joins in some circumstances (Tom) - - - - In previous releases, outer joins would always be evaluated in - the order written in the query. This change allows the - query optimizer to consider reordering outer joins, in cases where - it can determine that the join order can be changed without - altering the meaning of the query. This can make a - considerable performance difference for queries involving - multiple outer joins or mixed inner and outer joins. - - - - - - Improve efficiency of IN - (list-of-expressions) clauses (Tom) - - - - - - Improve sorting speed and reduce memory usage (Simon, Tom) - - - - - - Improve subtransaction performance (Alvaro, Itagaki Takahiro, - Tom) - - - - - - Add FILLFACTOR to table and index creation (ITAGAKI - Takahiro) - - - - This leaves extra free space in each table or index page, - allowing improved performance as the database grows. This - is particularly valuable to maintain clustering. - - - - - - Increase default values for shared_buffers - and max_fsm_pages - (Andrew) - - - - - - Improve locking performance by breaking the lock manager tables into - sections - (Tom) - - - - This allows locking to be more fine-grained, reducing - contention. - - - - - - Reduce locking requirements of sequential scans (Qingqing - Zhou) - - - - - - Reduce locking required for database creation and destruction - (Tom) - - - - - - Improve the optimizer's selectivity estimates for LIKE, ILIKE, and - regular expression - operations (Tom) - - - - - - Improve planning of joins to inherited - tables and UNION - ALL views (Tom) - - - - - - Allow constraint - exclusion to be applied to inherited UPDATE and - DELETE queries (Tom) - - - - SELECT already honored constraint exclusion. - - - - - - Improve planning of constant WHERE clauses, such as - a condition that depends only on variables inherited from an - outer query level (Tom) - - - - - - Protocol-level unnamed prepared statements are re-planned - for each set of BIND values (Tom) - - - - This improves performance because the exact parameter values - can be used in the plan. - - - - - - Speed up vacuuming of B-Tree indexes (Heikki Linnakangas, - Tom) - - - - - - Avoid extra scan of tables without indexes during VACUUM (Greg Stark) - - - - - - Improve multicolumn GiST - indexing (Oleg, Teodor) - - - - - - Remove dead index entries before B-Tree page split (Junji - Teramoto) - - - - - - - - - Server Changes - - - - - Allow a forced switch to a new transaction log file (Simon, Tom) - - - - This is valuable for keeping warm standby slave servers - in sync with the master. Transaction log file switching now also happens - automatically during pg_stop_backup(). - This ensures that all - transaction log files needed for recovery can be archived immediately. - - - - - - Add WAL informational functions (Simon) - - - - Add functions for interrogating the current transaction log insertion - point and determining WAL filenames from the - hex WAL locations displayed by pg_stop_backup() - and related functions. - - - - - - Improve recovery from a crash during WAL replay (Simon) - - - - The server now does periodic checkpoints during WAL - recovery, so if there is a crash, future WAL - recovery is shortened. This also eliminates the need for - warm standby servers to replay the entire log since the - base backup if they crash. - - - - - - Improve reliability of long-term WAL replay - (Heikki, Simon, Tom) - - - - Formerly, trying to roll forward through more than 2 billion - transactions would not work due to XID wraparound. This meant - warm standby servers had to be reloaded - from fresh base backups periodically. - - - - - - Add archive_timeout - to force transaction log file switches at a given interval (Simon) - - - - This enforces a maximum replication delay for warm standby servers. - - - - - - Add native LDAP - authentication (Magnus Hagander) - - - - This is particularly useful for platforms that do not - support PAM, such as Windows. - - - - - - Add GRANT - CONNECT ON DATABASE (Gevik Babakhani) - - - - This gives SQL-level control over database access. It works as - an additional filter on top of the existing - pg_hba.conf - controls. - - - - - - Add support for SSL - Certificate Revocation List (CRL) files - (Libor Hohoš) - - - - The server and libpq both recognize CRL - files now. - - - - - - GiST indexes are - now clusterable (Teodor) - - - - - - Remove routine autovacuum server log entries (Bruce) - - - - pg_stat_activity - now shows autovacuum activity. - - - - - - Track maximum XID age within individual tables, instead of whole databases (Alvaro) - - - - This reduces the overhead involved in preventing transaction - ID wraparound, by avoiding unnecessary VACUUMs. - - - - - - Add last vacuum and analyze timestamp columns to the stats - collector (Larry Rosenman) - - - - These values now appear in the pg_stat_*_tables - system views. - - - - - - Improve performance of statistics monitoring, especially - stats_command_string - (Tom, Bruce) - - - - This release enables stats_command_string by - default, now that its overhead is minimal. This means - pg_stat_activity - will now show all active queries by default. - - - - - - Add a waiting column to pg_stat_activity - (Tom) - - - - This allows pg_stat_activity to show all the - information included in the ps display. - - - - - - Add configuration parameter update_process_title - to control whether the ps display is updated - for every command (Bruce) - - - - On platforms where it is expensive to update the ps - display, it might be worthwhile to turn this off and rely solely on - pg_stat_activity for status information. - - - - - - Allow units to be specified in configuration settings - (Peter) - - - - For example, you can now set shared_buffers - to 32MB rather than mentally converting sizes. - - - - - - Add support for include - directives in postgresql.conf (Joachim - Wieland) - - - - - - Improve logging of protocol-level prepare/bind/execute - messages (Bruce, Tom) - - - - Such logging now shows statement names, bind parameter - values, and the text of the query being executed. Also, - the query text is properly included in logged error messages - when enabled by log_min_error_statement. - - - - - - Prevent max_stack_depth - from being set to unsafe values - - - - On platforms where we can determine the actual kernel stack depth - limit (which is most), make sure that the initial default value of - max_stack_depth is safe, and reject attempts to set it - to unsafely large values. - - - - - - Enable highlighting of error location in query in more - cases (Tom) - - - - The server is now able to report a specific error location for - some semantic errors (such as unrecognized column name), rather - than just for basic syntax errors as before. - - - - - - Fix failed to re-find parent key errors in - VACUUM (Tom) - - - - - - Clean out pg_internal.init cache files during server - restart (Simon) - - - - This avoids a hazard that the cache files might contain stale - data after PITR recovery. - - - - - - Fix race condition for truncation of a large relation across a - gigabyte boundary by VACUUM (Tom) - - - - - - Fix bug causing needless deadlock errors on row-level locks (Tom) - - - - - - Fix bugs affecting multi-gigabyte hash indexes (Tom) - - - - - - Each backend process is now its own process group leader (Tom) - - - - This allows query cancel to abort subprocesses invoked from a - backend or archive/recovery process. - - - - - - - - - Query Changes - - - - - Add INSERT/UPDATE/DELETE - RETURNING (Jonah Harris, Tom) - - - - This allows these commands to return values, such as the - computed serial key for a new row. In the UPDATE - case, values from the updated version of the row are returned. - - - - - - Add support for multiple-row VALUES clauses, - per SQL standard (Joe, Tom) - - - - This allows INSERT to insert multiple rows of - constants, or queries to generate result sets using constants. - For example, INSERT ... VALUES (...), (...), - ...., and SELECT * FROM (VALUES (...), (...), - ....) AS alias(f1, ...). - - - - - - Allow UPDATE - and DELETE - to use an alias for the target table (Atsushi Ogawa) - - - - The SQL standard does not permit an alias in these commands, but - many database systems allow one anyway for notational convenience. - - - - - - Allow UPDATE - to set multiple columns with a list of values (Susanne - Ebrecht) - - - - This is basically a short-hand for assigning the columns - and values in pairs. The syntax is UPDATE tab - SET (column, ...) = (val, ...). - - - - - - Make row comparisons work per standard (Tom) - - - - The forms <, <=, >, >= now compare rows lexicographically, - that is, compare the first elements, if equal compare the second - elements, and so on. Formerly they expanded to an AND condition - across all the elements, which was neither standard nor very useful. - - - - - - Add CASCADE - option to TRUNCATE (Joachim Wieland) - - - - This causes TRUNCATE to automatically include all tables - that reference the specified table(s) via foreign keys. While - convenient, this is a dangerous tool — use with caution! - - - - - - Support FOR UPDATE and FOR SHARE - in the same SELECT - command (Tom) - - - - - - Add IS NOT - DISTINCT FROM (Pavel Stehule) - - - - This operator is similar to equality (=), but - evaluates to true when both left and right operands are - NULL, and to false when just one is, rather than - yielding NULL in these cases. - - - - - - Improve the length output used by UNION/INTERSECT/EXCEPT - (Tom) - - - - When all corresponding columns are of the same defined length, that - length is used for the result, rather than a generic length. - - - - - - Allow ILIKE - to work for multi-byte encodings (Tom) - - - - Internally, ILIKE now calls lower() - and then uses LIKE. Locale-specific regular - expression patterns still do not work in these encodings. - - - - - - Enable standard_conforming_strings - to be turned on (Kevin Grittner) - - - - This allows backslash escaping in strings to be disabled, - making PostgreSQL more - standards-compliant. The default is off for backwards - compatibility, but future releases will default this to on. - - - - - - Do not flatten subqueries that contain volatile - functions in their target lists (Jaime Casanova) - - - - This prevents surprising behavior due to multiple evaluation - of a volatile function (such as random() - or nextval()). It might cause performance - degradation in the presence of functions that are unnecessarily - marked as volatile. - - - - - - Add system views pg_prepared_statements - and pg_cursors - to show prepared statements and open cursors (Joachim Wieland, Neil) - - - - These are very useful in pooled connection setups. - - - - - - Support portal parameters in EXPLAIN and EXECUTE (Tom) - - - - This allows, for example, JDBC ? parameters to - work in these commands. - - - - - - If SQL-level PREPARE parameters - are unspecified, infer their types from the content of the - query (Neil) - - - - Protocol-level PREPARE already did this. - - - - - - Allow LIMIT and OFFSET to exceed - two billion (Dhanaraj M) - - - - - - - - - Object Manipulation Changes - - - - - Add TABLESPACE clause to CREATE TABLE AS - (Neil) - - - - This allows a tablespace to be specified for the new table. - - - - - - Add ON COMMIT clause to CREATE TABLE AS - (Neil) - - - - This allows temporary tables to be truncated or dropped on - transaction commit. The default behavior is for the table - to remain until the session ends. - - - - - - Add INCLUDING CONSTRAINTS to CREATE TABLE LIKE - (Greg Stark) - - - - This allows easy copying of CHECK constraints to a new - table. - - - - - - Allow the creation of placeholder (shell) types (Martijn van Oosterhout) - - - - A shell type declaration creates a type name, without specifying - any of the details of the type. Making a shell type is useful - because it allows cleaner declaration of the type's input/output - functions, which must exist before the type can be defined for - real. The syntax is CREATE TYPE typename. - - - - - - Aggregate functions - now support multiple input parameters (Sergey Koposov, Tom) - - - - - - Add new aggregate creation syntax (Tom) - - - - The new syntax is CREATE AGGREGATE - aggname (input_type) - (parameter_list). This more - naturally supports the new multi-parameter aggregate - functionality. The previous syntax is still supported. - - - - - - Add ALTER ROLE PASSWORD NULL - to remove a previously set role password (Peter) - - - - - - Add DROP object IF EXISTS for many - object types (Andrew) - - - - This allows DROP operations on non-existent - objects without generating an error. - - - - - - Add DROP OWNED - to drop all objects owned by a role (Alvaro) - - - - - - Add REASSIGN - OWNED to reassign ownership of all objects owned - by a role (Alvaro) - - - - This, and DROP OWNED above, facilitate dropping - roles. - - - - - - Add GRANT ON SEQUENCE - syntax (Bruce) - - - - This was added for setting sequence-specific permissions. - GRANT ON TABLE for sequences is still supported - for backward compatibility. - - - - - - Add USAGE - permission for sequences that allows only currval() - and nextval(), not setval() - (Bruce) - - - - USAGE permission allows more fine-grained - control over sequence access. Granting USAGE - allows users to increment - a sequence, but prevents them from setting the sequence to - an arbitrary value using setval(). - - - - - - Add ALTER TABLE - [ NO ] INHERIT (Greg Stark) - - - - This allows inheritance to be adjusted dynamically, rather than - just at table creation and destruction. This is very valuable - when using inheritance to implement table partitioning. - - - - - - Allow comments on global - objects to be stored globally (Kris Jurka) - - - - Previously, comments attached to databases were stored in individual - databases, making them ineffective, and there was no provision - at all for comments on roles or tablespaces. This change adds a new - shared catalog pg_shdescription - and stores comments on databases, roles, and tablespaces therein. - - - - - - - - - Utility Command Changes - - - - - Add option to allow indexes to be created without blocking - concurrent writes to the table (Greg Stark, Tom) - - - - The new syntax is CREATE - INDEX CONCURRENTLY. The default behavior is - still to block table modification while a index is being - created. - - - - - - Provide advisory - locking functionality (Abhijit Menon-Sen, Tom) - - - - This is a new locking API designed to replace what used to be - in /contrib/userlock. The userlock code is now on pgfoundry. - - - - - - Allow COPY to - dump a SELECT query (Zoltan Boszormenyi, Karel - Zak) - - - - This allows COPY to dump arbitrary SQL - queries. The syntax is COPY (SELECT ...) TO. - - - - - - Make the COPY - command return a command tag that includes the number of - rows copied (Volkan YAZICI) - - - - - - Allow VACUUM - to expire rows without being affected by other concurrent - VACUUM operations (Hannu Krossing, Alvaro, Tom) - - - - - - Make initdb - detect the operating system locale and set the default - DateStyle accordingly (Peter) - - - - This makes it more likely that the installed - postgresql.conf DateStyle value will - be as desired. - - - - - - Reduce number of progress messages displayed by initdb (Tom) - - - - - - - - - Date/Time Changes - - - - - Allow full timezone names in timestamp input values - (Joachim Wieland) - - - - For example, '2006-05-24 21:11 - America/New_York'::timestamptz. - - - - - - Support configurable timezone abbreviations (Joachim Wieland) - - - - A desired set of timezone abbreviations can be chosen via the - configuration parameter timezone_abbreviations. - - - - - - Add pg_timezone_abbrevs - and pg_timezone_names - views to show supported timezones (Magnus Hagander) - - - - - - Add clock_timestamp(), - statement_timestamp(), - and transaction_timestamp() - (Bruce) - - - - clock_timestamp() is the current wall-clock time, - statement_timestamp() is the time the current - statement arrived at the server, and - transaction_timestamp() is an alias for - now(). - - - - - - Allow to_char() - to print localized month and day names (Euler Taveira de - Oliveira) - - - - - - Allow to_char(time) - and to_char(interval) - to output AM/PM specifications - (Bruce) - - - - Intervals and times are treated as 24-hour periods, e.g. - 25 hours is considered AM. - - - - - - Add new function justify_interval() - to adjust interval units (Mark Dilger) - - - - - - Allow timezone offsets up to 14:59 away from GMT - - - - Kiribati uses GMT+14, so we'd better accept that. - - - - - - Interval computation improvements (Michael Glaesemann, Bruce) - - - - - - - - - Other Data Type and Function Changes - - - - - Allow arrays to contain NULL elements (Tom) - - - - - - Allow assignment to array elements not contiguous with the existing - entries (Tom) - - - - The intervening array positions will be filled with nulls. - This is per SQL standard. - - - - - - New built-in operators - for array-subset comparisons (@>, - <@, &&) (Teodor, Tom) - - - - These operators can be indexed for many data types using - GiST or GIN indexes. - - - - - - Add convenient arithmetic operations on - INET/CIDR values (Stephen R. van den - Berg) - - - - The new operators are & (and), | - (or), ~ (not), inet + int8, - inet - int8, and - inet - inet. - - - - - - Add new aggregate functions - from SQL:2003 (Neil) - - - - The new functions are var_pop(), - var_samp(), stddev_pop(), and - stddev_samp(). var_samp() and - stddev_samp() are merely renamings of the - existing aggregates variance() and - stddev(). The latter names remain available - for backward compatibility. - - - - - - Add SQL:2003 statistical aggregates - (Sergey Koposov) - - - - New functions: regr_intercept(), - regr_slope(), regr_r2(), - corr(), covar_samp(), - covar_pop(), regr_avgx(), - regr_avgy(), regr_sxy(), - regr_sxx(), regr_syy(), - regr_count(). - - - - - - Allow domains to be - based on other domains (Tom) - - - - - - Properly enforce domain CHECK constraints - everywhere (Neil, Tom) - - - - For example, the result of a user-defined function that is - declared to return a domain type is now checked against the - domain's constraints. This closes a significant hole in the domain - implementation. - - - - - - Fix problems with dumping renamed SERIAL columns - (Tom) - - - - The fix is to dump a SERIAL column by explicitly - specifying its DEFAULT and sequence elements, - and reconstructing the SERIAL column on reload - using a new ALTER - SEQUENCE OWNED BY command. This also allows - dropping a SERIAL column specification. - - - - - - Add a server-side sleep function pg_sleep() - (Joachim Wieland) - - - - - - Add all comparison operators for the tid (tuple id) data - type (Mark Kirkwood, Greg Stark, Tom) - - - - - - - - - PL/PgSQL Server-Side Language Changes - - - - - Add TG_table_name and TG_table_schema to - trigger parameters (Andrew) - - - - TG_relname is now deprecated. Comparable - changes have been made in the trigger parameters for the other - PLs as well. - - - - - - Allow FOR statements to return values to scalars - as well as records and row types (Pavel Stehule) - - - - - - Add a BY clause to the FOR loop, - to control the iteration increment (Jaime Casanova) - - - - - - Add STRICT to SELECT - INTO (Matt Miller) - - - - STRICT mode throws an exception if more or less - than one row is returned by the SELECT, for - Oracle PL/SQL compatibility. - - - - - - - - - PL/Perl Server-Side Language Changes - - - - - Add table_name and table_schema to - trigger parameters (Adam Sjøgren) - - - - - - Add prepared queries (Dmitry Karasik) - - - - - - Make $_TD trigger data a global variable (Andrew) - - - - Previously, it was lexical, which caused unexpected sharing - violations. - - - - - - Run PL/Perl and PL/PerlU in separate interpreters, for security - reasons (Andrew) - - - In consequence, they can no longer share data nor loaded modules. - Also, if Perl has not been compiled with the requisite flags to - allow multiple interpreters, only one of these languages can be used - in any given backend process. - - - - - - - - - PL/Python Server-Side Language Changes - - - - - Named parameters are passed as ordinary variables, as well as in the - args[] array (Sven Suursoho) - - - - - - Add table_name and table_schema to - trigger parameters (Andrew) - - - - - - Allow returning of composite types and result sets (Sven Suursoho) - - - - - - Return result-set as list, iterator, - or generator (Sven Suursoho) - - - - - - Allow functions to return void (Neil) - - - - - - Python 2.5 is now supported (Tom) - - - - - - - - - <link linkend="APP-PSQL"><application>psql</></link> Changes - - - - - Add new command \password for changing role - password with client-side password encryption (Peter) - - - - - - Allow \c to connect to a new host and port - number (David, Volkan YAZICI) - - - - - - Add tablespace display to \l+ (Philip Yarra) - - - - - - Improve \df slash command to include the argument - names and modes (OUT or INOUT) of - the function (David Fetter) - - - - - - Support binary COPY (Andreas Pflug) - - - - - - Add option to run the entire session in a single transaction - (Simon) - - - - Use option -1 or --single-transaction. - - - - - - Support for automatically retrieving SELECT - results in batches using a cursor (Chris Mair) - - - - This is enabled using \set FETCH_COUNT - n. This - feature allows large result sets to be retrieved in - psql without attempting to buffer the entire - result set in memory. - - - - - - Make multi-line values align in the proper column - (Martijn van Oosterhout) - - - - Field values containing newlines are now displayed in a more - readable fashion. - - - - - - Save multi-line statements as a single entry, rather than - one line at a time (Sergey E. Koposov) - - - - This makes up-arrow recall of queries easier. (This is - not available on Windows, because that platform uses the native - command-line editing present in the operating system.) - - - - - - Make the line counter 64-bit so it can handle files with more - than two billion lines (David Fetter) - - - - - - Report both the returned data and the command status tag - for INSERT/UPDATE/DELETE - RETURNING (Tom) - - - - - - - - - <link linkend="APP-PGDUMP"><application>pg_dump</></link> Changes - - - - - Allow complex selection of objects to be included or excluded - by pg_dump (Greg Sabino Mullane) - - - - pg_dump now supports multiple -n - (schema) and -t (table) options, and adds - -N and -T options to exclude objects. - Also, the arguments of these switches can now be wild-card expressions - rather than single object names, for example - -t 'foo*', and a schema can be part of - a -t or -T switch, for example - -t schema1.table1. - - - - - - Add pg_restore - --no-data-for-failed-tables option to suppress - loading data if table creation failed (i.e., the table already - exists) (Martin Pitt) - - - - - - Add pg_restore - option to run the entire session in a single transaction - (Simon) - - - - Use option -1 or --single-transaction. - - - - - - - - - <link linkend="libpq"><application>libpq</></link> Changes - - - - - Add PQencryptPassword() - to encrypt passwords (Tom) - - - - This allows passwords to be sent pre-encrypted for commands - like ALTER ROLE ... - PASSWORD. - - - - - - Add function PQisthreadsafe() - (Bruce) - - - - This allows applications to query the thread-safety status - of the library. - - - - - - Add PQdescribePrepared(), - PQdescribePortal(), - and related functions to return information about previously - prepared statements and open cursors (Volkan YAZICI) - - - - - - Allow LDAP lookups - from pg_service.conf - (Laurenz Albe) - - - - - - Allow a hostname in ~/.pgpass - to match the default socket directory (Bruce) - - - - A blank hostname continues to match any Unix-socket connection, - but this addition allows entries that are specific to one of - several postmasters on the machine. - - - - - - - - - <link linkend="ecpg"><application>ecpg</></link> Changes - - - - - Allow SHOW to - put its result into a variable (Joachim Wieland) - - - - - - Add COPY TO STDOUT - (Joachim Wieland) - - - - - - Add regression tests (Joachim Wieland, Michael) - - - - - - Major source code cleanups (Joachim Wieland, Michael) - - - - - - - - - <application>Windows</> Port - - - - - Allow MSVC to compile the PostgreSQL - server (Magnus, Hiroshi Saito) - - - - - - Add MSVC support for utility commands and pg_dump (Hiroshi - Saito) - - - - - - Add support for Windows code pages 1253, - 1254, 1255, and 1257 - (Kris Jurka) - - - - - - Drop privileges on startup, so that the server can be started from - an administrative account (Magnus) - - - - - - Stability fixes (Qingqing Zhou, Magnus) - - - - - - Add native semaphore implementation (Qingqing Zhou) - - - - The previous code mimicked SysV semaphores. - - - - - - - - - Source Code Changes - - - - - Add GIN (Generalized - Inverted iNdex) index access method (Teodor, Oleg) - - - - - - Remove R-tree indexing (Tom) - - - - Rtree has been re-implemented using GiST. Among other - differences, this means that rtree indexes now have support - for crash recovery via write-ahead logging (WAL). - - - - - - Reduce libraries needlessly linked into the backend (Martijn - van Oosterhout, Tom) - - - - - - Add a configure flag to allow libedit to be preferred over - GNU readline (Bruce) - - - - Use configure --with-libedit-preferred. - - - - - - Allow installation into directories containing spaces - (Peter) - - - - - - Improve ability to relocate installation directories (Tom) - - - - - - Add support for Solaris x86_64 using the - Solaris compiler (Pierre Girard, Theo - Schlossnagle, Bruce) - - - - - - Add DTrace support (Robert Lor) - - - - - - Add PG_VERSION_NUM for use by third-party - applications wanting to test the backend version in C using > - and < comparisons (Bruce) - - - - - - Add XLOG_BLCKSZ as independent from BLCKSZ - (Mark Wong) - - - - - - Add LWLOCK_STATS define to report locking - activity (Tom) - - - - - - Emit warnings for unknown configure options - (Martijn van Oosterhout) - - - - - - Add server support for plugin libraries - that can be used for add-on tasks such as debugging and performance - measurement (Korry Douglas) - - - - This consists of two features: a table of rendezvous - variables that allows separately-loaded shared libraries to - communicate, and a new configuration parameter local_preload_libraries - that allows libraries to be loaded into specific sessions without - explicit cooperation from the client application. This allows - external add-ons to implement features such as a PL/PgSQL debugger. - - - - - - Rename existing configuration parameter - preload_libraries to shared_preload_libraries - (Tom) - - - - This was done for clarity in comparison to - local_preload_libraries. - - - - - - Add new configuration parameter server_version_num - (Greg Sabino Mullane) - - - - This is like server_version, but is an - integer, e.g. 80200. This allows applications to - make version checks more easily. - - - - - - Add a configuration parameter seq_page_cost - (Tom) - - - - - - Re-implement the regression test script as a C program - (Magnus, Tom) - - - - - - Allow loadable modules to allocate shared memory and - lightweight locks (Marc Munro) - - - - - - Add automatic initialization and finalization of dynamically - loaded libraries (Ralf Engelschall, Tom) - - - - New functions - _PG_init() and _PG_fini() are - called if the library defines such symbols. Hence we no - longer need to specify an initialization function in - shared_preload_libraries; we can assume that - the library used the _PG_init() convention - instead. - - - - - - Add PG_MODULE_MAGIC - header block to all shared object files (Martijn van - Oosterhout) - - - - The magic block prevents version mismatches between loadable object - files and servers. - - - - - - Add shared library support for AIX (Laurenz Albe) - - - - - - New XML - documentation section (Bruce) - - - - - - - - - Contrib Changes - - - - - Major tsearch2 improvements (Oleg, Teodor) - - - - - - - multibyte encoding support, including UTF8 - - - - - query rewriting support - - - - - improved ranking functions - - - - - thesaurus dictionary support - - - - - Ispell dictionaries now recognize MySpell - format, used by OpenOffice - - - - - GIN support - - - - - - - - - - Add adminpack module containing Pgadmin administration - functions (Dave) - - - - These functions provide additional file system access - routines not present in the default PostgreSQL - server. - - - - - - Add sslinfo module (Victor Wagner) - - - - Reports information about the current connection's SSL - certificate. - - - - - - Add pgrowlocks module (Tatsuo) - - - - This shows row locking information for a specified table. - - - - - - Add hstore module (Oleg, Teodor) - - - - - - Add isn module, replacing isbn_issn (Jeremy Kronuz) - - - - This new implementation supports EAN13, UPC, - ISBN (books), ISMN (music), and - ISSN (serials). - - - - - - Add index information functions to pgstattuple (ITAGAKI Takahiro, - Satoshi Nagayasu) - - - - - - Add pg_freespacemap module to display free space map information - (Mark Kirkwood) - - - - - - pgcrypto now has all planned functionality (Marko Kreen) - - - - - Include iMath library in pgcrypto to have the public-key encryption - functions always available. - - - - - Add SHA224 algorithm that was missing in OpenBSD code. - - - - - Activate builtin code for SHA224/256/384/512 hashes on older - OpenSSL to have those algorithms always available. - - - - - New function gen_random_bytes() that returns cryptographically strong - randomness. Useful for generating encryption keys. - - - - - Remove digest_exists(), hmac_exists() and cipher_exists() functions. - - - - - - - - Improvements to cube module (Joshua Reich) - - - - New functions are cube(float[]), - cube(float[], float[]), and - cube_subset(cube, int4[]). - - - - - - Add async query capability to dblink (Kai Londenberg, - Joe Conway) - - - - - - New operators for array-subset comparisons (@>, - <@, &&) (Tom) - - - - Various contrib packages already had these operators for their - datatypes, but the naming wasn't consistent. We have now added - consistently named array-subset comparison operators to the core code - and all the contrib packages that have such functionality. - (The old names remain available, but are deprecated.) - - - - - - Add uninstall scripts for all contrib packages that have install - scripts (David, Josh Drake) - - - - - - - - - - - - Release 8.1.17 - - - Release date - 2009-03-16 - - - - This release contains a variety of fixes from 8.1.16. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.17 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.15, - see the release notes for 8.1.15. - - - - - - Changes - - - - - - Prevent error recursion crashes when encoding conversion fails (Tom) - - - - 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 - 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) - - - - - - Disallow CREATE CONVERSION with the wrong encodings - for the specified conversion function (Heikki) - - - - 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. - - - - - - Fix core dump when to_char() is given format codes that - are inappropriate for the type of the data argument (Tom) - - - - - - Fix decompilation of CASE WHEN with an implicit coercion - (Tom) - - - - This mistake could lead to Assert failures in an Assert-enabled build, - or an unexpected CASE WHEN clause error message in other - cases, when trying to examine or dump a view. - - - - - - Fix possible misassignment of the owner of a TOAST table's rowtype (Tom) - - - - If CLUSTER or a rewriting variant of ALTER TABLE - were executed by someone other than the table owner, the - pg_type entry for the table's TOAST table would end up - marked as owned by that someone. This caused no immediate problems, - since the permissions on the TOAST rowtype aren't examined by any - ordinary database operation. However, it could lead to unexpected - failures if one later tried to drop the role that issued the command - (in 8.1 or 8.2), or owner of data type appears to be invalid - warnings from pg_dump after having done so (in 8.3). - - - - - - Clean up PL/pgSQL error status variables fully at block exit - (Ashesh Vashi and Dave Page) - - - - This is not a problem for PL/pgSQL itself, but the omission could cause - the PL/pgSQL Debugger to crash while examining the state of a function. - - - - - - Add MUST (Mauritius Island Summer Time) to the default list - of known timezone abbreviations (Xavier Bugaud) - - - - - - - - - - Release 8.1.16 - - - Release date - 2009-02-02 - - - - This release contains a variety of fixes from 8.1.15. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.16 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.15, - see the release notes for 8.1.15. - - - - - - Changes - - - - - - Fix crash in autovacuum (Alvaro) - - - - The crash occurs only after vacuuming a whole database for - anti-transaction-wraparound purposes, which means that it occurs - infrequently and is hard to track down. - - - - - - Improve handling of URLs in headline() function (Teodor) - - - - - - Improve handling of overlength headlines in headline() - function (Teodor) - - - - - - 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) - - - - - - Avoid unnecessary locking of small tables in VACUUM - (Heikki) - - - - - - Ensure that the contents of a holdable cursor don't depend on the - contents of TOAST tables (Tom) - - - - Previously, large field values in a cursor result might be represented - as TOAST pointers, which would fail if the referenced table got dropped - before the cursor is read, or if the large value is deleted and then - vacuumed away. This cannot happen with an ordinary cursor, - but it could with a cursor that is held past its creating transaction. - - - - - - Fix uninitialized variables in contrib/tsearch2's - get_covers() function (Teodor) - - - - - - Fix configure script to properly report failure when - unable to obtain linkage information for PL/Perl (Andrew) - - - - - - Make all documentation reference pgsql-bugs and/or - pgsql-hackers as appropriate, instead of the - now-decommissioned pgsql-ports and pgsql-patches - mailing lists (Tom) - - - - - - Update time zone data files to tzdata release 2009a (for - Kathmandu and historical DST corrections in Switzerland, Cuba) - - - - - - - - - - Release 8.1.15 - - - Release date - 2008-11-03 - - - - This release contains a variety of fixes from 8.1.14. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.15 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. Also, if you were running a previous - 8.1.X release, it is recommended to REINDEX all GiST - indexes after the upgrade. - - - - - - Changes - - - - - - Fix GiST index corruption due to marking the wrong index entry - dead after a deletion (Teodor) - - - - This would result in index searches failing to find rows they - should have found. Corrupted indexes can be fixed with - REINDEX. - - - - - - Fix backend crash when the client encoding cannot represent a localized - error message (Tom) - - - - We have addressed similar issues before, but it would still fail if - the 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. - - - - - - Fix possible crash when deeply nested functions are invoked from - a trigger (Tom) - - - - - - Fix mis-expansion of rule queries when a sub-SELECT appears - in a function call in FROM, a multi-row VALUES - list, or a RETURNING list (Tom) - - - - The usual symptom of this problem is an unrecognized node type - error. - - - - - - Ensure an error is reported when a newly-defined PL/pgSQL trigger - function is invoked as a normal function (Tom) - - - - - - Prevent possible collision of relfilenode numbers - when moving a table to another tablespace with ALTER SET - TABLESPACE (Heikki) - - - - The command tried to re-use the existing filename, instead of - picking one that is known unused in the destination directory. - - - - - - Fix incorrect tsearch2 headline generation when single query - item matches first word of text (Sushant Sinha) - - - - - - Fix improper display of fractional seconds in interval values when - using a non-ISO datestyle in an - - - - - Ensure SPI_getvalue and SPI_getbinval - behave correctly when the passed tuple and tuple descriptor have - different numbers of columns (Tom) - - - - 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. - - - - - - Fix ecpg's parsing of CREATE ROLE (Michael) - - - - - - Fix recent breakage of pg_ctl restart (Tom) - - - - - - Update time zone data files to tzdata release 2008i (for - DST law changes in Argentina, Brazil, Mauritius, Syria) - - - - - - - - - - Release 8.1.14 - - - Release date - 2008-09-22 - - - - This release contains a variety of fixes from 8.1.13. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.14 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. - - - - - - Changes - - - - - - Widen local lock counters from 32 to 64 bits (Tom) - - - - This responds to reports that the counters could overflow in - sufficiently long transactions, leading to unexpected lock is - already held errors. - - - - - - Fix possible duplicate output of tuples during a GiST index scan (Teodor) - - - - - - Add checks in executor startup to ensure that the tuples produced by an - INSERT or UPDATE will match the target table's - current rowtype (Tom) - - - - ALTER COLUMN TYPE, followed by re-use of a previously - cached plan, could produce this type of situation. The check protects - against data corruption and/or crashes that could ensue. - - - - - - Fix AT TIME ZONE to first try to interpret its timezone - argument as a timezone abbreviation, and only try it as a full timezone - name if that fails, rather than the other way around as formerly (Tom) - - - - The timestamp input functions have always resolved ambiguous zone names - in this order. Making AT TIME ZONE do so as well improves - consistency, and fixes a compatibility bug introduced in 8.1: - in ambiguous cases we now behave the same as 8.0 and before did, - since in the older versions AT TIME ZONE accepted - only abbreviations. - - - - - - Fix datetime input functions to correctly detect integer overflow when - running on a 64-bit platform (Tom) - - - - - - Improve performance of writing very long log messages to syslog (Tom) - - - - - - Fix bug in backwards scanning of a cursor on a SELECT DISTINCT - ON query (Tom) - - - - - - Fix planner bug with nested sub-select expressions (Tom) - - - - If the outer sub-select has no direct dependency on the parent query, - but the inner one does, the outer value might not get recalculated - for new parent query rows. - - - - - - Fix planner to estimate that GROUP BY expressions yielding - boolean results always result in two groups, regardless of the - expressions' contents (Tom) - - - - This is very substantially more accurate than the regular GROUP - BY estimate for certain boolean tests like col - IS NULL. - - - - - - Fix PL/PgSQL to not fail when a FOR loop's target variable - is a record containing composite-type fields (Tom) - - - - - - Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful - about the encoding of data sent to or from Tcl (Tom) - - - - - - Fix PL/Python to work with Python 2.5 - - - - This is a back-port of fixes made during the 8.2 development cycle. - - - - - - Improve pg_dump and pg_restore's - error reporting after failure to send a SQL command (Tom) - - - - - - Fix pg_ctl to properly preserve postmaster - command-line arguments across a restart (Bruce) - - - - - - Update time zone data files to tzdata release 2008f (for - DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, - Pakistan, Palestine, and Paraguay) - - - - - - - - - - Release 8.1.13 - - - Release date - 2008-06-12 - - - - This release contains one serious and one minor bug fix over 8.1.12. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.13 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. - - - - - - Changes - - - - - - Make pg_get_ruledef() parenthesize negative constants (Tom) - - - - Before this fix, a negative constant in a view or rule might be dumped - as, say, -42::integer, which is subtly incorrect: it should - be (-42)::integer due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - PostgreSQL to reject what had been a valid - SELECT DISTINCT view query. Since this could result in - 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. - - - - - - Make ALTER AGGREGATE ... OWNER TO update - pg_shdepend (Tom) - - - - This oversight could lead to problems if the aggregate was later - involved in a DROP OWNED or REASSIGN OWNED - operation. - - - - - - - - - - Release 8.1.12 - - - Release date - never released - - - - This release contains a variety of fixes from 8.1.11. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.12 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. - - - - - - Changes - - - - - - Fix ALTER TABLE ADD COLUMN ... PRIMARY KEY so that the new - column is correctly checked to see if it's been initialized to all - non-nulls (Brendan Jurd) - - - - Previous versions neglected to check this requirement at all. - - - - - - Fix possible CREATE TABLE failure when inheriting the - same constraint from multiple parent relations that - inherited that constraint from a common ancestor (Tom) - - - - - - Fix conversions between ISO-8859-5 and other encodings to handle - Cyrillic Yo characters (e and E with - two dots) (Sergey Burladyan) - - - - - - Fix a few datatype input functions - that were allowing unused bytes in their results to contain - uninitialized, unpredictable values (Tom) - - - - This could lead to failures in which two apparently identical literal - values were not seen as equal, resulting in the parser complaining - about unmatched ORDER BY and DISTINCT - expressions. - - - - - - Fix a corner case in regular-expression substring matching - (substring(string from - pattern)) (Tom) - - - - 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 - substring('foo' from 'foo(bar)?'). - This should return NULL, since (bar) isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - foo). - - - - - - Update time zone data files to tzdata release 2008c (for - DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, - Argentina/San_Luis, and Chile) - - - - - - Fix incorrect result from ecpg's - PGTYPEStimestamp_sub() function (Michael) - - - - - - Fix core dump in contrib/xml2's - xpath_table() function when the input query returns a - NULL value (Tom) - - - - - - Fix contrib/xml2's makefile to not override - CFLAGS (Tom) - - - - - - Fix DatumGetBool macro to not fail with gcc - 4.3 (Tom) - - - - This problem affects 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. - - - - - - Fix longstanding LISTEN/NOTIFY - race condition (Tom) - - - - In rare cases a session that had just executed a - LISTEN might not get a notification, even though - one would be expected because the concurrent transaction executing - NOTIFY was observed to commit later. - - - - A side effect of the fix is that a transaction that has executed - a not-yet-committed LISTEN command will not see any - row in pg_listener for the 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. - - - - - - Disallow LISTEN and UNLISTEN within a - prepared transaction (Tom) - - - - This was formerly allowed but trying to do it had various unpleasant - consequences, notably that the originating backend could not exit - as long as an UNLISTEN remained uncommitted. - - - - - - Fix rare crash when an error occurs during a query using a hash index - (Heikki) - - - - - - Fix input of datetime values for February 29 in years BC (Tom) - - - - The former coding was mistaken about which years were leap years. - - - - - - Fix unrecognized node type error in some variants of - ALTER OWNER (Tom) - - - - - - Fix pg_ctl to correctly extract the postmaster's port - number from command-line options (Itagaki Takahiro, Tom) - - - - Previously, pg_ctl start -w could try to contact the - postmaster on the wrong port, leading to bogus reports of startup - failure. - - - - - - Use - - - This is known to be necessary when building PostgreSQL - with gcc 4.3 or later. - - - - - - Fix display of constant expressions in ORDER BY - and GROUP BY (Tom) - - - - An explictly casted constant would be shown incorrectly. This could - for example lead to corruption of a view definition during - dump and reload. - - - - - - Fix libpq to handle NOTICE messages correctly - during COPY OUT (Tom) - - - - 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. - - - - - - - - - - Release 8.1.11 - - - Release date - 2008-01-07 - - - - This release contains a variety of fixes from 8.1.10, - including fixes for significant security issues. - For information about new features in the 8.1 major release, see - . - - - - This is the last 8.1.X release for which the PostgreSQL - community will produce binary packages for Windows. - Windows users are encouraged to move to 8.2.X or later, - since there are Windows-specific fixes in 8.2.X that - are impractical to back-port. 8.1.X will continue to - be supported on other platforms. - - - - Migration to Version 8.1.11 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. - - - - - - Changes - - - - - - Prevent functions in indexes from executing with the privileges of - the user running VACUUM, ANALYZE, etc (Tom) - - - - 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 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 VACUUM, ANALYZE, REINDEX, - and CLUSTER) to execute as the table owner rather than - the calling user, using the same privilege-switching mechanism already - used for SECURITY DEFINER functions. To prevent bypassing - this security measure, execution of SET SESSION - AUTHORIZATION and SET ROLE is now forbidden within a - SECURITY DEFINER context. (CVE-2007-6600) - - - - - - Repair assorted bugs in the regular-expression package (Tom, Will Drewry) - - - - 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) - - - - - - Require non-superusers who use /contrib/dblink to use only - password authentication, as a security measure (Joe) - - - - The fix that appeared for this in 8.1.10 was incomplete, as it plugged - the hole for only some dblink functions. (CVE-2007-6601, - CVE-2007-3278) - - - - - - Update time zone data files to tzdata release 2007k - (in particular, recent Argentina changes) (Tom) - - - - - - Improve planner's handling of LIKE/regex estimation in non-C locales - (Tom) - - - - - - Fix planner failure in some cases of WHERE false AND var IN - (SELECT ...) (Tom) - - - - - - Preserve the tablespace of indexes that are - rebuilt by ALTER TABLE ... ALTER COLUMN TYPE (Tom) - - - - - - Make archive recovery always start a new WAL timeline, rather than only - when a recovery stop time was used (Simon) - - - - This avoids a corner-case risk of trying to overwrite an existing - archived copy of the last WAL segment, and seems simpler and cleaner - than the original definition. - - - - - - Make VACUUM not use all of maintenance_work_mem - when the table is too small for it to be useful (Alvaro) - - - - - - Fix potential crash in translate() when using a multibyte - database encoding (Tom) - - - - - - Fix overflow in extract(epoch from interval) for intervals - exceeding 68 years (Tom) - - - - - - Fix PL/Perl to not fail when a UTF-8 regular expression is used - in a trusted function (Andrew) - - - - - - Fix PL/Perl to cope when platform's Perl defines type bool - as int rather than char (Tom) - - - - While this could theoretically happen anywhere, no standard build of - Perl did things this way ... until Mac OS X 10.5. - - - - - - Fix PL/Python to not crash on long exception messages (Alvaro) - - - - - - Fix pg_dump to correctly handle inheritance child tables - that have default expressions different from their parent's (Tom) - - - - - - Fix libpq crash when PGPASSFILE refers - to a file that is not a plain file (Martin Pitt) - - - - - - ecpg parser fixes (Michael) - - - - - - Make contrib/pgcrypto defend against - OpenSSL libraries that fail on keys longer than 128 - bits; which is the case at least on some Solaris versions (Marko Kreen) - - - - - - Make contrib/tablefunc's crosstab() handle - NULL rowid as a category in its own right, rather than crashing (Joe) - - - - - - Fix tsvector and tsquery output routines to - escape backslashes correctly (Teodor, Bruce) - - - - - - Fix crash of to_tsvector() on huge input strings (Teodor) - - - - - - Require a specific version of Autoconf to be used - when re-generating the configure script (Peter) - - - - This affects developers and packagers only. The change was made - to prevent accidental use of untested combinations of - Autoconf and PostgreSQL versions. - You can remove the version check if you really want to use a - different Autoconf version, but it's - your responsibility whether the result works or not. - - - - - - - - - - Release 8.1.10 - - - Release date - 2007-09-17 - - - - This release contains a variety of fixes from 8.1.9. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.10 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. - - - - - - Changes - - - - - - Prevent index corruption when a transaction inserts rows and - then aborts close to the end of a concurrent VACUUM - on the same table (Tom) - - - - - - Make CREATE DOMAIN ... DEFAULT NULL work properly (Tom) - - - - - - Allow the interval data type to accept input consisting only of - milliseconds or microseconds (Neil) - - - - - - Speed up rtree index insertion (Teodor) - - - - - - Fix excessive logging of SSL error messages (Tom) - - - - - - Fix logging so that log messages are never interleaved when using - the syslogger process (Andrew) - - - - - - Fix crash when log_min_error_statement logging runs out - of memory (Tom) - - - - - - Fix incorrect handling of some foreign-key corner cases (Tom) - - - - - - Prevent REINDEX and CLUSTER from failing - due to attempting to process temporary tables of other sessions (Alvaro) - - - - - - Update the time zone database rules, particularly New Zealand's upcoming changes (Tom) - - - - - - Windows socket improvements (Magnus) - - - - - - Suppress timezone name (%Z) in log timestamps on Windows - because of possible encoding mismatches (Tom) - - - - - - Require non-superusers who use /contrib/dblink to use only - password authentication, as a security measure (Joe) - - - - - - - - - - Release 8.1.9 - - - Release date - 2007-04-23 - - - - This release contains a variety of fixes from 8.1.8, - including a security fix. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.9 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. - - - - - - Changes - - - - - - Support explicit placement of the temporary-table schema within - search_path, and disable searching it for functions - and operators (Tom) - - - This is needed to allow a security-definer function to set a - truly secure value of 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 CREATE FUNCTION for more information. - - - - - - /contrib/tsearch2 crash fixes (Teodor) - - - - - - Require COMMIT PREPARED to be executed in the same - database as the transaction was prepared in (Heikki) - - - - - - Fix potential-data-corruption bug in how VACUUM FULL handles - UPDATE chains (Tom, Pavan Deolasee) - - - - - - Planner fixes, including improving outer join and bitmap scan - selection logic (Tom) - - - - - - Fix PANIC during enlargement of a hash index (bug introduced in 8.1.6) - (Tom) - - - - - - Fix POSIX-style timezone specs to follow new USA DST rules (Tom) - - - - - - - - - - Release 8.1.8 - - - Release date - 2007-02-07 - - - - This release contains one fix from 8.1.7. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.8 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. - - - - - - Changes - - - - - - Remove overly-restrictive check for type length in constraints and - functional indexes(Tom) - - - - - - - - - - Release 8.1.7 - - - Release date - 2007-02-05 - - - - This release contains a variety of fixes from 8.1.6, including - a security fix. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.7 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. - - - - - - Changes - - - - - - Remove security vulnerabilities that allowed connected users - to read backend memory (Tom) - - - The vulnerabilities involve suppressing the normal check that a SQL - function returns the data type it's declared to, and changing the - data type of a table column (CVE-2007-0555, CVE-2007-0556). These - errors can easily be exploited to cause a backend crash, and in - principle might be used to read database content that the user - should not be able to access. - - - - - - Fix rare bug wherein btree index page splits could fail - due to choosing an infeasible split point (Heikki Linnakangas) - - - - - - Improve VACUUM performance for databases with many tables (Tom) - - - - - - Fix autovacuum to avoid leaving non-permanent transaction IDs in - non-connectable databases (Alvaro) - - - - This bug affects the 8.1 branch only. - - - - - - Fix for rare Assert() crash triggered by UNION (Tom) - - - - - - Tighten security of multi-byte character processing for UTF8 sequences - over three bytes long (Tom) - - - - - - Fix bogus permission denied failures occurring on Windows - due to attempts to fsync already-deleted files (Magnus, Tom) - - - - - - Fix possible crashes when an already-in-use PL/pgSQL function is - updated (Tom) - - - - - - - - - - Release 8.1.6 - - - Release date - 2007-01-08 - - - - This release contains a variety of fixes from 8.1.5. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.6 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. - - - - - - Changes - - - - - - Improve handling of getaddrinfo() on AIX (Tom) - - - - This fixes a problem with starting the statistics collector, - among other things. - - - - - - Fix pg_restore to handle a tar-format backup - that contains large objects (blobs) with comments (Tom) - - - - - - Fix failed to re-find parent key errors in - VACUUM (Tom) - - - - - - Clean out pg_internal.init cache files during server - restart (Simon) - - - - This avoids a hazard that the cache files might contain stale - data after PITR recovery. - - - - - - Fix race condition for truncation of a large relation across a - gigabyte boundary by VACUUM (Tom) - - - - - - Fix bug causing needless deadlock errors on row-level locks (Tom) - - - - - - Fix bugs affecting multi-gigabyte hash indexes (Tom) - - - - - - Fix possible deadlock in Windows signal handling (Teodor) - - - - - - Fix error when constructing an ARRAY[] made up of multiple - empty elements (Tom) - - - - - - Fix ecpg memory leak during connection (Michael) - - - - - - Fix for Darwin (OS X) compilation (Tom) - - - - - - to_number() and to_char(numeric) - are now STABLE, not IMMUTABLE, for - new initdb installs (Tom) - - - - This is because lc_numeric can potentially - change the output of these functions. - - - - - - Improve index usage of regular expressions that use parentheses (Tom) - - - - This improves psql \d performance also. - - - - - - Update timezone database - - - - This affects Australian and Canadian daylight-savings rules in - particular. - - - - - - - - - - Release 8.1.5 - - - Release date - 2006-10-16 - - - - This release contains a variety of fixes from 8.1.4. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.5 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. - - - - - - Changes - - -Disallow aggregate functions in UPDATE -commands, except within sub-SELECTs (Tom) -The behavior of such an aggregate was unpredictable, and in 8.1.X -could cause a crash, so it has been disabled. The SQL standard does not allow -this either. -Fix core dump when an untyped literal is taken as -ANYARRAY -Fix core dump in duration logging for extended query protocol -when a COMMIT or ROLLBACK is -executed -Fix mishandling of AFTER triggers when query contains a SQL -function returning multiple rows (Tom) -Fix ALTER TABLE ... TYPE to recheck -NOT NULL for USING clause (Tom) -Fix string_to_array() to handle overlapping - matches for the separator string -For example, string_to_array('123xx456xxx789', 'xx'). - -Fix to_timestamp() for -AM/PM formats (Bruce) -Fix autovacuum's calculation that decides whether - ANALYZE is needed (Alvaro) -Fix corner cases in pattern matching for - psql's \d commands -Fix index-corrupting bugs in /contrib/ltree - (Teodor) -Numerous robustness fixes in ecpg (Joachim -Wieland) -Fix backslash escaping in /contrib/dbmirror -Minor fixes in /contrib/dblink and /contrib/tsearch2 - -Efficiency improvements in hash tables and bitmap index scans -(Tom) -Fix instability of statistics collection on Windows (Tom, Andrew) -Fix statement_timeout to use the proper -units on Win32 (Bruce) -In previous Win32 8.1.X versions, the delay was off by a factor of -100. -Fixes for MSVC and Borland C++ -compilers (Hiroshi Saito) -Fixes for AIX and -Intel compilers (Tom) -Fix rare bug in continuous archiving (Tom) - - - - - - - Release 8.1.4 - - - Release date - 2006-05-23 - - - - This release contains a variety of fixes from 8.1.3, - including patches for extremely serious security issues. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.4 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. - - - - 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 libpq's - PQescapeStringConn()) to perform string escaping, - rather than relying on ad hoc code to do it. - - - - - Changes - - -Change the server to reject invalidly-encoded multibyte -characters in all cases (Tatsuo, Tom) -While 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. - - -Reject unsafe uses of \' in string literals -As a server-side defense against SQL-injection attacks of the type -described in CVE-2006-2314, the server now only accepts '' and not -\' as a representation of ASCII single quote in SQL string -literals. By default, \' is rejected only when -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 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 -backslash_quote is in part to make it obvious that insecure -clients are insecure. - - -Modify libpq's string-escaping routines to be -aware of encoding considerations and -standard_conforming_strings -This fixes 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 PostgreSQL connections -concurrently should migrate to PQescapeStringConn() and -PQescapeByteaConn() to ensure that escaping is done correctly -for the settings in use in each database connection. Applications that -do string escaping by hand should be modified to rely on library -routines instead. - - -Fix weak key selection in pgcrypto (Marko Kreen) -Errors in fortuna PRNG reseeding logic could cause a predictable -session key to be selected by pgp_sym_encrypt() in some cases. -This only affects non-OpenSSL-using builds. - - -Fix some incorrect encoding conversion functions -win1251_to_iso, win866_to_iso, -euc_tw_to_big5, euc_tw_to_mic, -mic_to_euc_tw were all broken to varying -extents. - - -Clean up stray remaining uses of \' in strings -(Bruce, Jan) - -Make autovacuum visible in pg_stat_activity -(Alvaro) - -Disable full_page_writes (Tom) -In certain cases, having full_page_writes off would cause -crash recovery to fail. A proper fix will appear in 8.2; for now it's just -disabled. - - -Various planner fixes, particularly for bitmap index scans and -MIN/MAX optimization (Tom) - -Fix incorrect optimization in merge join (Tom) -Outer joins could sometimes emit multiple copies of unmatched rows. - - -Fix crash from using and modifying a plpgsql function in the -same transaction - -Fix WAL replay for case where a B-Tree index has been -truncated - -Fix SIMILAR TO for patterns involving -| (Tom) - -Fix SELECT INTO and CREATE TABLE AS to -create tables in the default tablespace, not the base directory (Kris -Jurka) - -Fix server to use custom DH SSL parameters correctly (Michael -Fuhr) - -Improve qsort performance (Dann Corbit) -Currently this code is only used on Solaris. - - -Fix for OS/X Bonjour on x86 systems (Ashley Clark) - -Fix various minor memory leaks - -Fix problem with password prompting on some Win32 systems -(Robert Kinberg) - -Improve pg_dump's handling of default values -for domains - -Fix pg_dumpall to handle identically-named -users and groups reasonably (only possible when dumping from a pre-8.1 server) -(Tom) -The user and group will be merged into a single role with -LOGIN permission. Formerly the merged role wouldn't have -LOGIN permission, making it unusable as a user. - - -Fix pg_restore -n to work as -documented (Tom) - - - - - - - Release 8.1.3 - - - Release date - 2006-02-14 - - - - This release contains a variety of fixes from 8.1.2, - including one very serious security issue. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.3 - - - A dump/restore is not required for those running 8.1.X. - However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. - - - - - Changes - - - -Fix bug that allowed any logged-in user to SET -ROLE to any other database user id (CVE-2006-0553) -Due to inadequate validity checking, a user could exploit the special -case that SET ROLE normally uses to restore the previous role -setting after an error. This allowed ordinary users to acquire superuser -status, for example. -The escalation-of-privilege risk exists only in 8.1.0-8.1.2. -However, in all releases back to 7.3 there is a related bug in SET -SESSION AUTHORIZATION that allows unprivileged users to crash the server, -if it has been compiled with Asserts enabled (which is not the default). -Thanks to Akio Ishida for reporting this problem. - - -Fix bug with row visibility logic in self-inserted -rows (Tom) -Under rare circumstances a row inserted by the current command -could be seen as already valid, when it should not be. Repairs bug -created in 8.0.4, 7.4.9, and 7.3.11 releases. - - -Fix race condition that could lead to file already -exists errors during pg_clog and pg_subtrans file creation -(Tom) - -Fix cases that could lead to crashes if a cache-invalidation -message arrives at just the wrong time (Tom) - -Properly check DOMAIN constraints for -UNKNOWN parameters in prepared statements -(Neil) - -Ensure ALTER COLUMN TYPE will process -FOREIGN KEY, UNIQUE, and PRIMARY KEY -constraints in the proper order (Nakano Yoshihisa) - -Fixes to allow restoring dumps that have cross-schema -references to custom operators or operator classes (Tom) - -Allow pg_restore to continue properly after a -COPY failure; formerly it tried to treat the remaining -COPY data as SQL commands (Stephen Frost) - -Fix pg_ctl unregister crash -when the data directory is not specified (Magnus) - -Fix libpq PQprint HTML tags -(Christoph Zwerschke) - -Fix ecpg crash on AMD64 and PPC -(Neil) - -Allow SETOF and %TYPE to be used -together in function result type declarations - -Recover properly if error occurs during argument passing -in PL/python (Neil) - -Fix memory leak in plperl_return_next -(Neil) - -Fix PL/perl's handling of locales on -Win32 to match the backend (Andrew) - -Various optimizer fixes (Tom) - -Fix crash when log_min_messages is set to -DEBUG3 or above in postgresql.conf on Win32 -(Bruce) - -Fix pgxs -L library path -specification for Win32, Cygwin, OS X, AIX (Bruce) - -Check that SID is enabled while checking for Win32 admin -privileges (Magnus) - -Properly reject out-of-range date inputs (Kris -Jurka) - -Portability fix for testing presence of finite -and isinf during configure (Tom) - -Improve speed of COPY IN via libpq, by -avoiding a kernel call per data line (Alon Goldshuv) - -Improve speed of /contrib/tsearch2 index -creation (Tom) - - - - - - - - Release 8.1.2 - - - Release date - 2006-01-09 - - - - This release contains a variety of fixes from 8.1.1. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.2 - - - A dump/restore is not required for those running 8.1.X. - However, you might need to REINDEX indexes on textual - columns after updating, if you are affected by the locale or - plperl issues described below. - - - - - Changes - - - -Fix Windows code so that postmaster will continue rather -than exit if there is no more room in ShmemBackendArray (Magnus) -The previous behavior could lead to a denial-of-service situation if too -many connection requests arrive close together. This applies -only to the Windows port. - -Fix bug introduced in 8.0 that could allow ReadBuffer -to return an already-used page as new, potentially causing loss of -recently-committed data (Tom) - -Fix for protocol-level Describe messages issued -outside a transaction or in a failed transaction (Tom) - -Fix character string comparison for locales that consider -different character combinations as equal, such as Hungarian (Tom) -This might require REINDEX to fix existing indexes on -textual columns. - -Set locale environment variables during postmaster startup -to ensure that plperl won't change the locale later -This fixes a problem that occurred if the postmaster was -started with environment variables specifying a different locale than what -initdb had been told. Under these conditions, any use of -plperl was likely to lead to corrupt indexes. You might need -REINDEX to fix existing indexes on -textual columns if this has happened to you. - -Allow more flexible relocation of installation -directories (Tom) -Previous releases supported relocation only if all installation -directory paths were the same except for the last component. - -Prevent crashes caused by the use of -ISO-8859-5 and ISO-8859-9 encodings -(Tatsuo) - -Fix longstanding bug in strpos() and regular expression -handling in certain rarely used Asian multi-byte character sets (Tatsuo) - - -Fix bug where COPY CSV mode considered any -\. to terminate the copy data The new code -requires \. to appear alone on a line, as per -documentation. - -Make COPY CSV mode quote a literal data value of -\. to ensure it cannot be interpreted as the -end-of-data marker (Bruce) - -Various fixes for functions returning RECORDs -(Tom) - -Fix processing of postgresql.conf so a -final line with no newline is processed properly (Tom) - - -Fix bug in /contrib/pgcrypto gen_salt, -which caused it not to use all available salt space for MD5 and -XDES algorithms (Marko Kreen, Solar Designer) -Salts for Blowfish and standard DES are unaffected. - -Fix autovacuum crash when processing expression indexes - - -Fix /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) - - - - - - - - Release 8.1.1 - - - Release date - 2005-12-12 - - - - This release contains a variety of fixes from 8.1.0. - For information about new features in the 8.1 major release, see - . - - - - Migration to Version 8.1.1 - - - A dump/restore is not required for those running 8.1.X. - - - - - Changes - - -Fix incorrect optimizations of outer-join conditions -(Tom) - -Fix problems with wrong reported column names in cases -involving sub-selects flattened by the optimizer (Tom) - -Fix update failures in scenarios involving CHECK constraints, -toasted columns, and indexes (Tom) - -Fix bgwriter problems after recovering from errors -(Tom) - -The background writer was found to leak buffer pins after write errors. -While not fatal in itself, this might lead to mysterious blockages of -later VACUUM commands. - - - -Prevent failure if client sends Bind protocol message -when current transaction is already aborted - -/contrib/tsearch2 and /contrib/ltree -fixes (Teodor) - -Fix problems with translated error messages in -languages that require word reordering, such as Turkish; also problems with -unexpected truncation of output strings and wrong display of the smallest -possible bigint value (Andrew, Tom) - -These problems only appeared on platforms that were using our -port/snprintf.c code, which includes BSD variants if ---enable-nls was given, and perhaps others. In addition, -a different form of the translated-error-message problem could appear -on Windows depending on which version of libintl was used. - - -Re-allow AM/PM, HH, -HH12, and D format specifiers for -to_char(time) and to_char(interval). -(to_char(interval) should probably use -HH24.) (Bruce) - -AIX, HPUX, and MSVC compile fixes (Tom, Hiroshi -Saito) - -Optimizer improvements (Tom) - -Retry file reads and writes after Windows -NO_SYSTEM_RESOURCES error (Qingqing Zhou) - -Prevent autovacuum from crashing during -ANALYZE of expression index (Alvaro) - -Fix problems with ON COMMIT DELETE ROWS temp -tables - -Fix problems when a trigger alters the output of a SELECT -DISTINCT query - -Add 8.1.0 release note item on how to migrate invalid -UTF-8 byte sequences (Paul Lindner) - - - - - - - Release 8.1 - - - Release date - 2005-11-08 - - - - Overview - - - Major changes in this release: - - - - - - - Improve concurrent access to the shared buffer cache (Tom) - - - - - Access to the shared buffer cache was identified as a - significant scalability problem, particularly on multi-CPU - systems. In this release, the way that locking is done in the - buffer manager has been overhauled to reduce lock contention - and improve scalability. The buffer manager has also been - changed to use a clock sweep replacement - policy. - - - - - - - Allow index scans to use an intermediate in-memory bitmap (Tom) - - - - - In previous releases, only a single index could be used to do - lookups on a table. With this feature, if a query has - WHERE tab.col1 = 4 and tab.col2 = 9, and there is - no multicolumn index on col1 and col2, - but there is an index on col1 and another on - col2, it is possible to search both indexes and - combine the results in memory, then do heap fetches for only - the rows matching both the col1 and - col2 restrictions. This is very useful in - environments that have a lot of unstructured queries where it - is impossible to create indexes that match all possible access - conditions. Bitmap scans are useful even with a single index, - as they reduce the amount of random access needed; a bitmap - index scan is efficient for retrieving fairly large fractions - of the complete table, whereas plain index scans are not. - - - - - - - Add two-phase commit (Heikki Linnakangas, Alvaro, Tom) - - - - - Two-phase commit allows transactions to be "prepared" on several - computers, and once all computers have successfully prepared - their transactions (none failed), all transactions can be - committed. Even if a machine crashes after a prepare, the - prepared transaction can be committed after the machine is - restarted. New syntax includes PREPARE TRANSACTION and - COMMIT/ROLLBACK PREPARED. A new system view - pg_prepared_xacts has also been added. - - - - - - - Create a new role system that replaces users and groups - (Stephen Frost) - - - - - Roles are a combination of users and groups. Like users, they - can have login capability, and like groups, a role can have - other roles as members. Roles basically remove the distinction - between users and groups. For example, a role can: - - - - - - - Have login capability (optionally) - - - - - - Own objects - - - - - - Hold access permissions for database objects - - - - - - Inherit permissions from other roles it is a member of - - - - - - Once a user logs into a role, she obtains capabilities of - the login role plus any inherited roles, and can use - SET ROLE to switch to other roles she is a member of. - This feature is a generalization of the SQL standard's concept of - roles. - This change also replaces pg_shadow and - pg_group by new role-capable catalogs - pg_authid and pg_auth_members. The old - tables are redefined as read-only views on the new role tables. - - - - - - - Automatically use indexes for MIN() and - MAX() (Tom) - - - - - In previous releases, the only way to use an index for - MIN() or MAX() was to rewrite the - query as SELECT col FROM tab ORDER BY col LIMIT 1. - Index usage now happens automatically. - - - - - - - Move /contrib/pg_autovacuum into the main server - (Alvaro) - - - - - Integrating autovacuum into the server allows it to be - automatically started and stopped in sync with the database - server, and allows autovacuum to be configured from - postgresql.conf. - - - - - - - Add shared row level locks using SELECT ... FOR SHARE - (Alvaro) - - - - - While PostgreSQL's MVCC locking - allows SELECT to never be blocked by writers and - therefore does not need shared row locks for typical operations, - shared locks are useful for applications that require shared row - locking. In particular this reduces the locking requirements - imposed by referential integrity checks. - - - - - - - Add dependencies on shared objects, specifically roles - (Alvaro) - - - - - This extension of the dependency mechanism prevents roles from - being dropped while there are still database objects they own. - Formerly it was possible to accidentally orphan objects by - deleting their owner. While this could be recovered from, it - was messy and unpleasant. - - - - - - - Improve performance for partitioned tables (Simon) - - - - - The new constraint_exclusion configuration - parameter avoids lookups on child tables where constraints indicate - that no matching rows exist in the child table. - - - This allows for a basic type of table partitioning. If child tables - store separate key ranges and this is enforced using appropriate - CHECK constraints, the optimizer will skip child - table accesses when the constraint guarantees no matching rows - exist in the child table. - - - - - - - - - Migration to Version 8.1 - - - A dump/restore using pg_dump is required - for those wishing to migrate data from any previous release. - - - - The 8.0 release announced that the to_char() function - for intervals would be removed in 8.1. However, since no better API - has been suggested, to_char(interval) has been enhanced in - 8.1 and will remain in the server. - - - - Observe the following incompatibilities: - - - - - - - add_missing_from is now false by default (Neil) - - - By default, we now generate an error if a table is used in a query - without a FROM reference. The old behavior is still - available, but the parameter must be set to 'true' to obtain it. - - - - It might be necessary to set add_missing_from to true - in order to load an existing dump file, if the dump contains any - views or rules created using the implicit-FROM syntax. - This should be a one-time annoyance, because - PostgreSQL 8.1 will convert - such views and rules to standard explicit-FROM syntax. - Subsequent dumps will therefore not have the problem. - - - - - - Cause input of a zero-length string ('') for - float4/float8/oid - to throw an error, rather than treating it as a zero (Neil) - - - This change is consistent with the current handling of - zero-length strings for integers. The schedule for this change - was announced in 8.0. - - - - - - default_with_oids is now false by default (Neil) - - - With this option set to false, user-created tables no longer - have an OID column unless WITH OIDS is specified in - CREATE TABLE. Though OIDs have existed in all - releases of PostgreSQL, their use is limited - because they are only four bytes long and the counter is shared - across all installed databases. The preferred way of uniquely - identifying rows is via sequences and the SERIAL type, - which have been supported since PostgreSQL 6.4. - - - - - - Add E'' syntax so eventually ordinary strings can - treat backslashes literally (Bruce) - - - Currently PostgreSQL processes a - backslash in a string literal as introducing a special escape sequence, - e.g. \n or \010. - While this allows easy entry of special values, it is - nonstandard and makes porting of applications from other - databases more difficult. For this reason, the - PostgreSQL project is planning to - remove the special meaning of backslashes in strings. For - backward compatibility and for users who want special backslash - processing, a new string syntax has been created. This new string - syntax is formed by writing an E immediately preceding the - single quote that starts the string, e.g. E'hi\n'. While - this release does not change the handling of backslashes in strings, it - does add new configuration parameters to help users migrate applications - for future releases: - - - - - - standard_conforming_strings — does this release - treat backslashes literally in ordinary strings? - - - - - - escape_string_warning — warn about backslashes in - ordinary (non-E) strings - - - - - - - The standard_conforming_strings value is read-only. - Applications can retrieve the value to know how backslashes are - processed. (Presence of the parameter can also be taken as an - indication that E'' string syntax is supported.) - In a future release, standard_conforming_strings - will be true, meaning backslashes will be treated literally in - non-E strings. To prepare for this change, use E'' - strings in places that need special backslash processing, and - turn on escape_string_warning to find additional - strings that need to be converted to use E''. - Also, use two single-quotes ('') to embed a literal - single-quote in a string, rather than the - PostgreSQL-supported syntax of - backslash single-quote (\'). The former is - standards-conforming and does not require the use of the - E'' string syntax. You can also use the - $$ string syntax, which does not treat backslashes - specially. - - - - - - Make REINDEX DATABASE reindex all indexes in the - database (Tom) - - - Formerly, REINDEX DATABASE reindexed only - system tables. This new behavior seems more intuitive. A new - command REINDEX SYSTEM provides the old functionality - of reindexing just the system tables. - - - - - - Read-only large object descriptors now obey MVCC snapshot semantics - - - When a large object is opened with INV_READ (and not - INV_WRITE), the data read from the descriptor will now - reflect a snapshot of the large object's state at the - time of the transaction snapshot in use by the query that called - lo_open(). To obtain the old behavior of always - returning the latest committed data, include INV_WRITE - in the mode flags for lo_open(). - - - - - - Add proper dependencies for arguments of sequence functions (Tom) - - - In previous releases, sequence names passed to nextval(), - currval(), and setval() were stored as - simple text strings, meaning that renaming or dropping a - sequence used in a DEFAULT clause made the clause - invalid. This release stores all newly-created sequence function - arguments as internal OIDs, allowing them to track sequence - renaming, and adding dependency information that prevents - improper sequence removal. It also makes such DEFAULT - clauses immune to schema renaming and search path changes. - - - Some applications might rely on the old behavior of - run-time lookup for sequence names. This can still be done by - explicitly casting the argument to text, for example - nextval('myseq'::text). - - - Pre-8.1 database dumps loaded into 8.1 will use the old text-based - representation and therefore will not have the features of - OID-stored arguments. However, it is possible to update a - database containing text-based DEFAULT clauses. - First, save this query into a file, such as fixseq.sql: - -SELECT 'ALTER TABLE ' || - pg_catalog.quote_ident(n.nspname) || '.' || - pg_catalog.quote_ident(c.relname) || - ' ALTER COLUMN ' || pg_catalog.quote_ident(a.attname) || - ' SET DEFAULT ' || - regexp_replace(d.adsrc, - $$val\(\(('[^']*')::text\)::regclass$$, - $$val(\1$$, - 'g') || - ';' -FROM pg_namespace n, pg_class c, pg_attribute a, pg_attrdef d -WHERE n.oid = c.relnamespace AND - c.oid = a.attrelid AND - a.attrelid = d.adrelid AND - a.attnum = d.adnum AND - d.adsrc ~ $$val\(\('[^']*'::text\)::regclass$$; - - Next, run the query against a database to find what - adjustments are required, like this for database db1: - -psql -t -f fixseq.sql db1 - - This will show the ALTER TABLE commands needed to - convert the database to the newer OID-based representation. - If the commands look reasonable, run this to update the database: - -psql -t -f fixseq.sql db1 | psql -e db1 - - This process must be repeated in each database to be updated. - - - - - - In psql, treat unquoted - \{digit}+ sequences as octal (Bruce) - - - In previous releases, \{digit}+ sequences were - treated as decimal, and only \0{digit}+ were treated - as octal. This change was made for consistency. - - - - - - Remove grammar productions for prefix and postfix % - and ^ operators - (Tom) - - - These have never been documented and complicated the use of the - modulus operator (%) with negative numbers. - - - - - - Make &< and &> for polygons - consistent with the box "over" operators (Tom) - - - - - - CREATE LANGUAGE can ignore the provided arguments - in favor of information from pg_pltemplate - (Tom) - - - A new system catalog pg_pltemplate has been defined - to carry information about the preferred definitions of procedural - languages (such as whether they have validator functions). When - an entry exists in this catalog for the language being created, - CREATE LANGUAGE will ignore all its parameters except the - language name and instead use the catalog information. This measure - was taken because of increasing problems with obsolete language - definitions being loaded by old dump files. As of 8.1, - pg_dump will dump procedural language definitions as - just CREATE LANGUAGE name, relying - on a template entry to exist at load time. We expect this will be a - more future-proof representation. - - - - - - Make pg_cancel_backend(int) return a - boolean rather than an integer (Neil) - - - - - - Some users are having problems loading UTF-8 data into 8.1.X. - This is because previous versions allowed invalid UTF-8 byte - sequences to be entered into the database, and this release - properly accepts only valid UTF-8 sequences. One way to correct a - dumpfile is to run the command iconv -c -f UTF-8 -t - UTF-8 -o cleanfile.sql dumpfile.sql. The -c option - removes invalid character sequences. A diff of the two files will - show the sequences that are invalid. iconv reads the - entire input file into memory so it might be necessary to use - split to break up the dump into multiple smaller - files for processing. - - - - - - - - Additional Changes - - - Below you will find a detailed account of the additional changes - between PostgreSQL 8.1 and the - previous major release. - - - - Performance Improvements - - - - - Improve GiST and R-tree index performance (Neil) - - - - - - Improve the optimizer, including auto-resizing of hash joins - (Tom) - - - - - - Overhaul internal API in several areas - - - - - - Change WAL record CRCs from 64-bit to 32-bit (Tom) - - - We determined that the extra cost of computing 64-bit CRCs was - significant, and the gain in reliability too marginal to justify it. - - - - - - Prevent writing large empty gaps in WAL pages (Tom) - - - - - - Improve spinlock behavior on SMP machines, particularly Opterons (Tom) - - - - - - Allow nonconsecutive index columns to be used in a multicolumn - index (Tom) - - - For example, this allows an index on columns a,b,c to be used in - a query with WHERE a = 4 and c = 10. - - - - - - Skip WAL logging for CREATE TABLE AS / - SELECT INTO (Simon) - - - Since a crash during CREATE TABLE AS would cause the - table to be dropped during recovery, there is no reason to WAL - log as the table is loaded. (Logging still happens if WAL - archiving is enabled, however.) - - - - - - Allow concurrent GiST index access (Teodor, Oleg) - - - - - - Add configuration parameter full_page_writes to - control writing full pages to WAL (Bruce) - - - To prevent partial disk writes from corrupting the database, - PostgreSQL writes a complete copy of - each database disk page to WAL the first time it is modified - after a checkpoint. This option turns off that functionality for more - speed. This is safe to use with battery-backed disk caches where - partial page writes cannot happen. - - - - - - Use O_DIRECT if available when using - O_SYNC for wal_sync_method - (Itagaki Takahiro) - - - O_DIRECT causes disk writes to bypass the kernel - cache, and for WAL writes, this improves performance. - - - - - - Improve COPY FROM performance (Alon Goldshuv) - - - This was accomplished by reading COPY input in - larger chunks, rather than character by character. - - - - - - Improve the performance of COUNT(), - SUM, AVG(), - STDDEV(), and - VARIANCE() (Neil, Tom) - - - - - - - Server Changes - - - - - Prevent problems due to transaction ID (XID) wraparound (Tom) - - - The server will now warn when the transaction counter approaches - the wraparound point. If the counter becomes too close to wraparound, - the server will stop accepting queries. This ensures that data is - not lost before needed vacuuming is performed. - - - - - - Fix problems with object IDs (OIDs) conflicting with existing system - objects after the OID counter has wrapped around (Tom) - - - - - - Add warning about the need to increase - max_fsm_relations and max_fsm_pages - during VACUUM (Ron Mayer) - - - - - - Add temp_buffers configuration parameter to allow - users to determine the size of the local buffer area for - temporary table access (Tom) - - - - - - Add session start time and client IP address to - pg_stat_activity (Magnus) - - - - - - Adjust pg_stat views for bitmap scans (Tom) - - - The meanings of some of the fields have changed slightly. - - - - - - Enhance pg_locks view (Tom) - - - - - - Log queries for client-side PREPARE and - EXECUTE (Simon) - - - - - - Allow Kerberos name and user name case sensitivity to be - specified in postgresql.conf (Magnus) - - - - - - Add configuration parameter krb_server_hostname so - that the server host name can be specified as part of service - principal (Todd Kover) - - - If not set, any service principal matching an entry in the - keytab can be used. This is new Kerberos matching behavior in - this release. - - - - - - Add log_line_prefix options for millisecond - timestamps (%m) and remote host (%h) (Ed - L.) - - - - - - Add WAL logging for GiST indexes (Teodor, Oleg) - - - GiST indexes are now safe for crash and point-in-time recovery. - - - - - - Remove old *.backup files when we do - pg_stop_backup() (Bruce) - - - This prevents a large number of *.backup files from - existing in pg_xlog/. - - - - - - Add configuration parameters to control TCP/IP keep-alive - times for idle, interval, and count (Oliver Jowett) - - - - These values can be changed to allow more rapid detection of - lost client connections. - - - - - - Add per-user and per-database connection limits (Petr Jelinek) - - - Using ALTER USER and ALTER DATABASE, - limits can now be enforced on the maximum number of sessions that - can concurrently connect as a specific user or to a specific database. - Setting the limit to zero disables user or database connections. - - - - - - Allow more than two gigabytes of shared memory and per-backend - work memory on 64-bit machines (Koichi Suzuki) - - - - - - New system catalog pg_pltemplate allows overriding - obsolete procedural-language definitions in dump files (Tom) - - - - - - - - - Query Changes - - - - - Add temporary views (Koju Iijima, Neil) - - - - - - Fix HAVING without any aggregate functions or - GROUP BY so that the query returns a single group (Tom) - - - Previously, such a case would treat the HAVING - clause the same as a WHERE clause. This was not per spec. - - - - - - Add USING clause to allow additional tables to be - specified to DELETE (Euler Taveira de Oliveira, Neil) - - - In prior releases, there was no clear method for specifying - additional tables to be used for joins in a DELETE - statement. UPDATE already has a FROM - clause for this purpose. - - - - - - Add support for \x hex escapes in backend and ecpg - strings (Bruce) - - - This is just like the standard C \x escape syntax. - Octal escapes were already supported. - - - - - - Add BETWEEN SYMMETRIC query syntax (Pavel Stehule) - - - This feature allows BETWEEN comparisons without - requiring the first value to be less than the second. For - example, 2 BETWEEN [ASYMMETRIC] 3 AND 1 returns - false, while 2 BETWEEN SYMMETRIC 3 AND 1 returns - true. BETWEEN ASYMMETRIC was already supported. - - - - - - Add NOWAIT option to SELECT ... FOR - UPDATE/SHARE (Hans-Juergen Schoenig) - - - While the statement_timeout configuration - parameter allows a query taking more than a certain amount of - time to be cancelled, the NOWAIT option allows a - query to be canceled as soon as a SELECT ... FOR - UPDATE/SHARE command cannot immediately acquire a row lock. - - - - - - - - Object Manipulation Changes - - - - - Track dependencies of shared objects (Alvaro) - - - PostgreSQL allows global tables - (users, databases, tablespaces) to reference information in - multiple databases. This addition adds dependency information - for global tables, so, for example, user ownership can be - tracked across databases, so a user who owns something in any - database can no longer be removed. Dependency tracking already - existed for database-local objects. - - - - - - Allow limited ALTER OWNER commands to be performed - by the object owner (Stephen Frost) - - - Prior releases allowed only superusers to change object owners. - Now, ownership can be transferred if the user executing the command - owns the object and would be able to create it as the new owner - (that is, the user is a member of the new owning role and that role - has the CREATE permission that would be needed to create the object - afresh). - - - - - - Add ALTER object SET SCHEMA capability - for some object types (tables, functions, types) (Bernd Helmle) - - - This allows objects to be moved to different schemas. - - - - - - Add ALTER TABLE ENABLE/DISABLE TRIGGER to - disable triggers (Satoshi Nagayasu) - - - - - - - - - Utility Command Changes - - - - - Allow TRUNCATE to truncate multiple tables in a - single command (Alvaro) - - - Because of referential integrity checks, it is not allowed to - truncate a table that is part of a referential integrity - constraint. Using this new functionality, TRUNCATE - can be used to truncate such tables, if both tables involved in - a referential integrity constraint are truncated in a single - TRUNCATE command. - - - - - - Properly process carriage returns and line feeds in - COPY CSV mode (Andrew) - - - In release 8.0, carriage returns and line feeds in CSV - COPY TO were processed in an inconsistent manner. (This was - documented on the TODO list.) - - - - - - Add COPY WITH CSV HEADER to allow a header line as - the first line in COPY (Andrew) - - - This allows handling of the common CSV usage of - placing the column names on the first line of the data file. For - COPY TO, the first line contains the column names, - and for COPY FROM, the first line is ignored. - - - - - - On Windows, display better sub-second precision in - EXPLAIN ANALYZE (Magnus) - - - - - - Add trigger duration display to EXPLAIN ANALYZE - (Tom) - - - Prior releases included trigger execution time as part of the - total execution time, but did not show it separately. It is now - possible to see how much time is spent in each trigger. - - - - - - Add support for \x hex escapes in COPY - (Sergey Ten) - - - Previous releases only supported octal escapes. - - - - - - Make SHOW ALL include variable descriptions - (Matthias Schmidt) - - - SHOW varname still only displays the variable's - value and does not include the description. - - - - - - Make initdb create a new standard - database called postgres, and convert utilities to - use postgres rather than template1 for - standard lookups (Dave) - - - In prior releases, template1 was used both as a - default connection for utilities like - createuser, and as a template for - new databases. This caused CREATE DATABASE to - sometimes fail, because a new database cannot be created if - anyone else is in the template database. With this change, the - default connection database is now postgres, - meaning it is much less likely someone will be using - template1 during CREATE DATABASE. - - - - - - Create new reindexdb command-line - utility by moving /contrib/reindexdb into the - server (Euler Taveira de Oliveira) - - - - - - - - - Data Type and Function Changes - - - - - Add MAX() and MIN() aggregates for - array types (Koju Iijima) - - - - - - Fix to_date() and to_timestamp() to - behave reasonably when CC and YY fields - are both used (Karel Zak) - - - If the format specification contains CC and a year - specification is YYY or longer, ignore the - CC. If the year specification is YY or - shorter, interpret CC as the previous century. - - - - - - Add md5(bytea) (Abhijit Menon-Sen) - - - md5(text) already existed. - - - - - - Add support for numeric ^ numeric based on - power(numeric, numeric) - - - The function already existed, but there was no operator assigned - to it. - - - - - - Fix NUMERIC modulus by properly truncating the quotient - during computation (Bruce) - - - In previous releases, modulus for large values sometimes - returned negative results due to rounding of the quotient. - - - - - - Add a function lastval() (Dennis Björklund) - - - lastval() is a simplified version of - currval(). It automatically determines the proper - sequence name based on the most recent nextval() or - setval() call performed by the current session. - - - - - - Add to_timestamp(DOUBLE PRECISION) (Michael Glaesemann) - - - Converts Unix seconds since 1970 to a TIMESTAMP WITH - TIMEZONE. - - - - - - Add pg_postmaster_start_time() function (Euler - Taveira de Oliveira, Matthias Schmidt) - - - - - - Allow the full use of time zone names in AT TIME - ZONE, not just the short list previously available (Magnus) - - - Previously, only a predefined list of time zone names were - supported by AT TIME ZONE. Now any supported time - zone name can be used, e.g.: - - SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London'; - - In the above query, the time zone used is adjusted based on the - daylight saving time rules that were in effect on the supplied - date. - - - - - - Add GREATEST() and LEAST() variadic - functions (Pavel Stehule) - - - These functions take a variable number of arguments and return - the greatest or least value among the arguments. - - - - - - Add pg_column_size() (Mark Kirkwood) - - - This returns storage size of a column, which might be compressed. - - - - - - Add regexp_replace() (Atsushi Ogawa) - - - This allows regular expression replacement, like sed. An optional - flag argument allows selection of global (replace all) and - case-insensitive modes. - - - - - - Fix interval division and multiplication (Bruce) - - - Previous versions sometimes returned unjustified results, like - '4 months'::interval / 5 returning '1 mon - -6 days'. - - - - - - Fix roundoff behavior in timestamp, time, and interval output (Tom) - - - This fixes some cases in which the seconds field would be shown as - 60 instead of incrementing the higher-order fields. - - - - - - Add a separate day field to type interval so a one day - interval can be distinguished from a 24 hour interval (Michael - Glaesemann) - - - Days that contain a daylight saving time adjustment are not 24 - hours long, but typically 23 or 25 hours. This change creates a - conceptual distinction between intervals of so many days - and intervals of so many hours. Adding - 1 day to a timestamp now gives the same local time on - the next day even if a daylight saving time adjustment occurs - between, whereas adding 24 hours will give a different - local time when this happens. For example, under US DST rules: - - '2005-04-03 00:00:00-05' + '1 day' = '2005-04-04 00:00:00-04' - '2005-04-03 00:00:00-05' + '24 hours' = '2005-04-04 01:00:00-04' - - - - - - - Add justify_days() and justify_hours() - (Michael Glaesemann) - - - These functions, respectively, adjust days to an appropriate - number of full months and days, and adjust hours to an - appropriate number of full days and hours. - - - - - - Move /contrib/dbsize into the backend, and rename - some of the functions (Dave Page, Andreas Pflug) - - - - - - - pg_tablespace_size() - - - - - - pg_database_size() - - - - - - pg_relation_size() - - - - - - pg_total_relation_size() - - - - - - pg_size_pretty() - - - - - - - pg_total_relation_size() includes indexes and TOAST - tables. - - - - - - Add functions for read-only file access to the cluster directory - (Dave Page, Andreas Pflug) - - - - - - - pg_stat_file() - - - - - - pg_read_file() - - - - - - pg_ls_dir() - - - - - - - - - - Add pg_reload_conf() to force reloading of the - configuration files (Dave Page, Andreas Pflug) - - - - - - Add pg_rotate_logfile() to force rotation of the - server log file (Dave Page, Andreas Pflug) - - - - - - Change pg_stat_* views to include TOAST tables (Tom) - - - - - - - - - Encoding and Locale Changes - - - - - Rename some encodings to be more consistent and to follow - international standards (Bruce) - - - - - - - UNICODE is now UTF8 - - - - - - ALT is now WIN866 - - - - - - WIN is now WIN1251 - - - - - - TCVN is now WIN1258 - - - - - - - - The original names still work. - - - - - - Add support for WIN1252 encoding (Roland Volkmann) - - - - - - Add support for four-byte UTF8 characters (John - Hansen) - - - Previously only one, two, and three-byte UTF8 characters - were supported. This is particularly important for support for - some Chinese character sets. - - - - - - Allow direct conversion between EUC_JP and - SJIS to improve performance (Atsushi Ogawa) - - - - - - Allow the UTF8 encoding to work on Windows (Magnus) - - - This is done by mapping UTF8 to the Windows-native UTF16 - implementation. - - - - - - - - - General Server-Side Language Changes - - - - - Fix ALTER LANGUAGE RENAME (Sergey Yatskevich) - - - - - - Allow function characteristics, like strictness and volatility, - to be modified via ALTER FUNCTION (Neil) - - - - - - Increase the maximum number of function arguments to 100 (Tom) - - - - - - Allow SQL and PL/PgSQL functions to use OUT and - INOUT parameters (Tom) - - - OUT is an alternate way for a function to return - values. Instead of using RETURN, values can be - returned by assigning to parameters declared as OUT or - INOUT. This is notationally simpler in some cases, - particularly so when multiple values need to be returned. - While returning multiple values from a function - was possible in previous releases, this greatly simplifies the - process. (The feature will be extended to other server-side - languages in future releases.) - - - - - - Move language handler functions into the pg_catalog schema - - - This makes it easier to drop the public schema if desired. - - - - - - Add SPI_getnspname() to SPI (Neil) - - - - - - - - PL/PgSQL Server-Side Language Changes - - - - - Overhaul the memory management of PL/PgSQL functions (Neil) - - - The parsetree of each function is now stored in a separate - memory context. This allows this memory to be easily reclaimed - when it is no longer needed. - - - - - - Check function syntax at CREATE FUNCTION time, - rather than at runtime (Neil) - - - Previously, most syntax errors were reported only when the - function was executed. - - - - - - Allow OPEN to open non-SELECT queries - like EXPLAIN and SHOW (Tom) - - - - - - No longer require functions to issue a RETURN - statement (Tom) - - - This is a byproduct of the newly added OUT and - INOUT functionality. RETURN can - be omitted when it is not needed to provide the function's - return value. - - - - - - Add support for an optional INTO clause to - PL/PgSQL's EXECUTE statement (Pavel Stehule, Neil) - - - - - - Make CREATE TABLE AS set ROW_COUNT (Tom) - - - - - - Define SQLSTATE and SQLERRM to return - the SQLSTATE and error message of the current - exception (Pavel Stehule, Neil) - - - These variables are only defined inside exception blocks. - - - - - - Allow the parameters to the RAISE statement to be - expressions (Pavel Stehule, Neil) - - - - - - Add a loop CONTINUE statement (Pavel Stehule, Neil) - - - - - - Allow block and loop labels (Pavel Stehule) - - - - - - - - - PL/Perl Server-Side Language Changes - - - - - Allow large result sets to be returned efficiently (Abhijit - Menon-Sen) - - - This allows functions to use return_next() to avoid - building the entire result set in memory. - - - - - - Allow one-row-at-a-time retrieval of query results (Abhijit Menon-Sen) - - - This allows functions to use spi_query() and - spi_fetchrow() to avoid accumulating the entire - result set in memory. - - - - - - Force PL/Perl to handle strings as UTF8 if the - server encoding is UTF8 (David Kamholz) - - - - - - Add a validator function for PL/Perl (Andrew) - - - This allows syntax errors to be reported at definition time, - rather than execution time. - - - - - - Allow PL/Perl to return a Perl array when the function returns - an array type (Andrew) - - - This basically maps PostgreSQL arrays - to Perl arrays. - - - - - - Allow Perl nonfatal warnings to generate NOTICE - messages (Andrew) - - - - - - Allow Perl's strict mode to be enabled (Andrew) - - - - - - - - - <application>psql</> Changes - - - - - Add \set ON_ERROR_ROLLBACK to allow statements in - a transaction to error without affecting the rest of the - transaction (Greg Sabino Mullane) - - - This is basically implemented by wrapping every statement in a - sub-transaction. - - - - - - Add support for \x hex strings in - psql variables (Bruce) - - - Octal escapes were already supported. - - - - - - Add support for troff -ms output format (Roger - Leigh) - - - - - - Allow the history file location to be controlled by - HISTFILE (Andreas Seltenreich) - - - This allows configuration of per-database history storage. - - - - - - Prevent \x (expanded mode) from affecting - the output of \d tablename (Neil) - - - - - - Add - - This option was added because some operating systems do not have - simple command-line activity logging functionality. - - - - - - Make \d show the tablespaces of indexes (Qingqing - Zhou) - - - - - - Allow psql help (\h) to - make a best guess on the proper help information (Greg Sabino - Mullane) - - - This allows the user to just add \h to the front of - the syntax error query and get help on the supported syntax. - Previously any additional query text beyond the command name - had to be removed to use \h. - - - - - - Add \pset numericlocale to allow numbers to be - output in a locale-aware format (Eugen Nedelcu) - - - For example, using C locale 100000 would - be output as 100,000.0 while a European locale might - output this value as 100.000,0. - - - - - - Make startup banner show both server version number and - psql's version number, when they are different (Bruce) - - - Also, a warning will be shown if the server and psql - are from different major releases. - - - - - - - - - <application>pg_dump</> Changes - - - - - Add - - This allows just the objects in a specified schema to be restored. - - - - - - Allow pg_dump to dump large objects even in - text mode (Tom) - - - With this change, large objects are now always dumped; the former - - - - - - Allow pg_dump to dump a consistent snapshot of - large objects (Tom) - - - - - - Dump comments for large objects (Tom) - - - - - - Add - - This allows a database to be dumped in an encoding that is - different from the server's encoding. This is valuable when - transferring the dump to a machine with a different encoding. - - - - - - Rely on pg_pltemplate for procedural languages (Tom) - - - If the call handler for a procedural language is in the - pg_catalog schema, pg_dump does not - dump the handler. Instead, it dumps the language using just - CREATE LANGUAGE name, - relying on the pg_pltemplate catalog to provide - the language's creation parameters at load time. - - - - - - - - - <application>libpq</application> Changes - - - - - Add a PGPASSFILE environment variable to specify the - password file's filename (Andrew) - - - - - - Add lo_create(), that is similar to - lo_creat() but allows the OID of the large object - to be specified (Tom) - - - - - - Make libpq consistently return an error - to the client application on malloc() - failure (Neil) - - - - - - - - Source Code Changes - - - - - Fix pgxs to support building against a relocated - installation - - - - - - Add spinlock support for the Itanium processor using Intel - compiler (Vikram Kalsi) - - - - - - Add Kerberos 5 support for Windows (Magnus) - - - - - - Add Chinese FAQ (laser@pgsqldb.com) - - - - - - Rename Rendezvous to Bonjour to match OS/X feature renaming - (Bruce) - - - - - - Add support for fsync_writethrough on - Darwin (Chris Campbell) - - - - - - Streamline the passing of information within the server, the - optimizer, and the lock system (Tom) - - - - - - Allow pg_config to be compiled using MSVC (Andrew) - - - This is required to build DBD::Pg using MSVC. - - - - - - Remove support for Kerberos V4 (Magnus) - - - Kerberos 4 had security vulnerabilities and is no longer - maintained. - - - - - - Code cleanups (Coverity static analysis performed by - EnterpriseDB) - - - - - - Modify postgresql.conf to use documentation defaults - on/off rather than - true/false (Bruce) - - - - - - Enhance pg_config to be able to report more - build-time values (Tom) - - - - - - Allow libpq to be built thread-safe - on Windows (Dave Page) - - - - - - Allow IPv6 connections to be used on Windows (Andrew) - - - - - - Add Server Administration documentation about I/O subsystem - reliability (Bruce) - - - - - - Move private declarations from gist.h to - gist_private.h (Neil) - - - - In previous releases, gist.h contained both the - public GiST API (intended for use by authors of GiST index - implementations) as well as some private declarations used by - the implementation of GiST itself. The latter have been moved - to a separate file, gist_private.h. Most GiST - index implementations should be unaffected. - - - - - - Overhaul GiST memory management (Neil) - - - - GiST methods are now always invoked in a short-lived memory - context. Therefore, memory allocated via palloc() - will be reclaimed automatically, so GiST index implementations - do not need to manually release allocated memory via - pfree(). - - - - - - - - Contrib Changes - - - - - Add /contrib/pg_buffercache contrib module (Mark - Kirkwood) - - - This displays the contents of the buffer cache, for debugging and - performance tuning purposes. - - - - - - Remove /contrib/array because it is obsolete (Tom) - - - - - - Clean up the /contrib/lo module (Tom) - - - - - - Move /contrib/findoidjoins to - /src/tools (Tom) - - - - - - Remove the <<, >>, - &<, and &> operators from - /contrib/cube - - - These operators were not useful. - - - - - - Improve /contrib/btree_gist (Janko Richter) - - - - - - Improve /contrib/pgbench (Tomoaki Sato, Tatsuo) - - - There is now a facility for testing with SQL command scripts given - by the user, instead of only a hard-wired command sequence. - - - - - - Improve /contrib/pgcrypto (Marko Kreen) - - - - - - - Implementation of OpenPGP symmetric-key and public-key encryption - - - Both RSA and Elgamal public-key algorithms are supported. - - - - - - Stand alone build: include SHA256/384/512 hashes, Fortuna PRNG - - - - - - OpenSSL build: support 3DES, use internal AES with OpenSSL < 0.9.7 - - - - - - Take build parameters (OpenSSL, zlib) from configure result - - - There is no need to edit the Makefile anymore. - - - - - - Remove support for libmhash and libmcrypt - - - - - - - - - - - - - - Release 8.0.21 - - - Release date - 2009-03-16 - - - - This release contains a variety of fixes from 8.0.20. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.21 - - - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. - - - - - - Changes - - - - - - Prevent error recursion crashes when encoding conversion fails (Tom) - - - - 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 - 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) - - - - - - Disallow CREATE CONVERSION with the wrong encodings - for the specified conversion function (Heikki) - - - - 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. - - - - - - Fix core dump when to_char() is given format codes that - are inappropriate for the type of the data argument (Tom) - - - - - - Add MUST (Mauritius Island Summer Time) to the default list - of known timezone abbreviations (Xavier Bugaud) - - - - - - - - - - Release 8.0.20 - - - Release date - 2009-02-02 - - - - This release contains a variety of fixes from 8.0.19. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.20 - - - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. - - - - - - Changes - - - - - - Improve handling of URLs in headline() function (Teodor) - - - - - - Improve handling of overlength headlines in headline() - function (Teodor) - - - - - - 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) - - - - - - Avoid unnecessary locking of small tables in VACUUM - (Heikki) - - - - - - Fix uninitialized variables in contrib/tsearch2's - get_covers() function (Teodor) - - - - - - Make all documentation reference pgsql-bugs and/or - pgsql-hackers as appropriate, instead of the - now-decommissioned pgsql-ports and pgsql-patches - mailing lists (Tom) - - - - - - Update time zone data files to tzdata release 2009a (for - Kathmandu and historical DST corrections in Switzerland, Cuba) - - - - - - - - - - Release 8.0.19 - - - Release date - 2008-11-03 - - - - This release contains a variety of fixes from 8.0.18. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.19 - - - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. - - - - - - Changes - - - - - - Fix backend crash when the client encoding cannot represent a localized - error message (Tom) - - - - We have addressed similar issues before, but it would still fail if - the 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. - - - - - - Fix possible crash when deeply nested functions are invoked from - a trigger (Tom) - - - - - - Ensure an error is reported when a newly-defined PL/pgSQL trigger - function is invoked as a normal function (Tom) - - - - - - Fix incorrect tsearch2 headline generation when single query - item matches first word of text (Sushant Sinha) - - - - - - Fix improper display of fractional seconds in interval values when - using a non-ISO datestyle in an - - - - - Ensure SPI_getvalue and SPI_getbinval - behave correctly when the passed tuple and tuple descriptor have - different numbers of columns (Tom) - - - - 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. - - - - - - Fix ecpg's parsing of CREATE USER (Michael) - - - - - - Fix recent breakage of pg_ctl restart (Tom) - - - - - - Update time zone data files to tzdata release 2008i (for - DST law changes in Argentina, Brazil, Mauritius, Syria) - - - - - - - - - - Release 8.0.18 - - - Release date - 2008-09-22 - - - - This release contains a variety of fixes from 8.0.17. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.18 - - - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. - - - - - - Changes - - - - - - Widen local lock counters from 32 to 64 bits (Tom) - - - - This responds to reports that the counters could overflow in - sufficiently long transactions, leading to unexpected lock is - already held errors. - - - - - - Add checks in executor startup to ensure that the tuples produced by an - INSERT or UPDATE will match the target table's - current rowtype (Tom) - - - - ALTER COLUMN TYPE, followed by re-use of a previously - cached plan, could produce this type of situation. The check protects - against data corruption and/or crashes that could ensue. - - - - - - Fix datetime input functions to correctly detect integer overflow when - running on a 64-bit platform (Tom) - - - - - - Improve performance of writing very long log messages to syslog (Tom) - - - - - - Fix bug in backwards scanning of a cursor on a SELECT DISTINCT - ON query (Tom) - - - - - - Fix planner to estimate that GROUP BY expressions yielding - boolean results always result in two groups, regardless of the - expressions' contents (Tom) - - - - This is very substantially more accurate than the regular GROUP - BY estimate for certain boolean tests like col - IS NULL. - - - - - - Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful - about the encoding of data sent to or from Tcl (Tom) - - - - - - Fix PL/Python to work with Python 2.5 - - - - This is a back-port of fixes made during the 8.2 development cycle. - - - - - - Improve pg_dump and pg_restore's - error reporting after failure to send a SQL command (Tom) - - - - - - Fix pg_ctl to properly preserve postmaster - command-line arguments across a restart (Bruce) - - - - - - Update time zone data files to tzdata release 2008f (for - DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, - Pakistan, Palestine, and Paraguay) - - - - - - - - - - Release 8.0.17 - - - Release date - 2008-06-12 - - - - This release contains one serious bug fix over 8.0.16. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.17 - - - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. - - - - - - Changes - - - - - - Make pg_get_ruledef() parenthesize negative constants (Tom) - - - - Before this fix, a negative constant in a view or rule might be dumped - as, say, -42::integer, which is subtly incorrect: it should - be (-42)::integer due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - PostgreSQL to reject what had been a valid - SELECT DISTINCT view query. Since this could result in - 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. - - - - - - - - - - Release 8.0.16 - - - Release date - never released - - - - This release contains a variety of fixes from 8.0.15. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.16 - - - A dump/restore is not required for those running 8.0.X. - However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. - - - - - - Changes - - - - - - Fix ALTER TABLE ADD COLUMN ... PRIMARY KEY so that the new - column is correctly checked to see if it's been initialized to all - non-nulls (Brendan Jurd) - - - - Previous versions neglected to check this requirement at all. - - - - - - Fix possible CREATE TABLE failure when inheriting the - same constraint from multiple parent relations that - inherited that constraint from a common ancestor (Tom) - - - - - - Fix conversions between ISO-8859-5 and other encodings to handle - Cyrillic Yo characters (e and E with - two dots) (Sergey Burladyan) - - - - - - Fix a few datatype input functions - that were allowing unused bytes in their results to contain - uninitialized, unpredictable values (Tom) - - - - This could lead to failures in which two apparently identical literal - values were not seen as equal, resulting in the parser complaining - about unmatched ORDER BY and DISTINCT - expressions. - - - - - - Fix a corner case in regular-expression substring matching - (substring(string from - pattern)) (Tom) - - - - 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 - substring('foo' from 'foo(bar)?'). - This should return NULL, since (bar) isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - foo). - - - - - - Update time zone data files to tzdata release 2008c (for - DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, - Argentina/San_Luis, and Chile) - - - - - - Fix incorrect result from ecpg's - PGTYPEStimestamp_sub() function (Michael) - - - - - - Fix core dump in contrib/xml2's - xpath_table() function when the input query returns a - NULL value (Tom) - - - - - - Fix contrib/xml2's makefile to not override - CFLAGS (Tom) - - - - - - Fix DatumGetBool macro to not fail with gcc - 4.3 (Tom) - - - - This problem affects 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. - - - - - - Fix longstanding LISTEN/NOTIFY - race condition (Tom) - - - - In rare cases a session that had just executed a - LISTEN might not get a notification, even though - one would be expected because the concurrent transaction executing - NOTIFY was observed to commit later. - - - - A side effect of the fix is that a transaction that has executed - a not-yet-committed LISTEN command will not see any - row in pg_listener for the 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. - - - - - - Fix rare crash when an error occurs during a query using a hash index - (Heikki) - - - - - - Fix input of datetime values for February 29 in years BC (Tom) - - - - The former coding was mistaken about which years were leap years. - - - - - - Fix unrecognized node type error in some variants of - ALTER OWNER (Tom) - - - - - - Fix pg_ctl to correctly extract the postmaster's port - number from command-line options (Itagaki Takahiro, Tom) - - - - Previously, pg_ctl start -w could try to contact the - postmaster on the wrong port, leading to bogus reports of startup - failure. - - - - - - Use - - - This is known to be necessary when building PostgreSQL - with gcc 4.3 or later. - - - - - - Fix display of constant expressions in ORDER BY - and GROUP BY (Tom) - - - - An explictly casted constant would be shown incorrectly. This could - for example lead to corruption of a view definition during - dump and reload. - - - - - - Fix libpq to handle NOTICE messages correctly - during COPY OUT (Tom) - - - - 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. - - - - - - - - - - Release 8.0.15 - - - Release date - 2008-01-07 - - - - This release contains a variety of fixes from 8.0.14, - including fixes for significant security issues. - For information about new features in the 8.0 major release, see - . - - - - This is the last 8.0.X release for which the PostgreSQL - community will produce binary packages for Windows. - Windows users are encouraged to move to 8.2.X or later, - since there are Windows-specific fixes in 8.2.X that - are impractical to back-port. 8.0.X will continue to - be supported on other platforms. - - - - Migration to Version 8.0.15 - - - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. - - - - - - Changes - - - - - - Prevent functions in indexes from executing with the privileges of - the user running VACUUM, ANALYZE, etc (Tom) - - - - 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 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 VACUUM, ANALYZE, REINDEX, - and CLUSTER) to execute as the table owner rather than - the calling user, using the same privilege-switching mechanism already - used for SECURITY DEFINER functions. To prevent bypassing - this security measure, execution of SET SESSION - AUTHORIZATION and SET ROLE is now forbidden within a - SECURITY DEFINER context. (CVE-2007-6600) - - - - - - Repair assorted bugs in the regular-expression package (Tom, Will Drewry) - - - - 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) - - - - - - Require non-superusers who use /contrib/dblink to use only - password authentication, as a security measure (Joe) - - - - The fix that appeared for this in 8.0.14 was incomplete, as it plugged - the hole for only some dblink functions. (CVE-2007-6601, - CVE-2007-3278) - - - - - - Update time zone data files to tzdata release 2007k - (in particular, recent Argentina changes) (Tom) - - - - - - Fix planner failure in some cases of WHERE false AND var IN - (SELECT ...) (Tom) - - - - - - Preserve the tablespace of indexes that are - rebuilt by ALTER TABLE ... ALTER COLUMN TYPE (Tom) - - - - - - Make archive recovery always start a new WAL timeline, rather than only - when a recovery stop time was used (Simon) - - - - This avoids a corner-case risk of trying to overwrite an existing - archived copy of the last WAL segment, and seems simpler and cleaner - than the original definition. - - - - - - Make VACUUM not use all of maintenance_work_mem - when the table is too small for it to be useful (Alvaro) - - - - - - Fix potential crash in translate() when using a multibyte - database encoding (Tom) - - - - - - Fix PL/Perl to cope when platform's Perl defines type bool - as int rather than char (Tom) - - - - While this could theoretically happen anywhere, no standard build of - Perl did things this way ... until Mac OS X 10.5. - - - - - - Fix PL/Python to not crash on long exception messages (Alvaro) - - - - - - Fix pg_dump to correctly handle inheritance child tables - that have default expressions different from their parent's (Tom) - - - - - - ecpg parser fixes (Michael) - - - - - - Make contrib/tablefunc's crosstab() handle - NULL rowid as a category in its own right, rather than crashing (Joe) - - - - - - Fix tsvector and tsquery output routines to - escape backslashes correctly (Teodor, Bruce) - - - - - - Fix crash of to_tsvector() on huge input strings (Teodor) - - - - - - Require a specific version of Autoconf to be used - when re-generating the configure script (Peter) - - - - This affects developers and packagers only. The change was made - to prevent accidental use of untested combinations of - Autoconf and PostgreSQL versions. - You can remove the version check if you really want to use a - different Autoconf version, but it's - your responsibility whether the result works or not. - - - - - - - - - - Release 8.0.14 - - - Release date - 2007-09-17 - - - - This release contains a variety of fixes from 8.0.13. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.14 - - - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. - - - - - - Changes - - - - - - Prevent index corruption when a transaction inserts rows and - then aborts close to the end of a concurrent VACUUM - on the same table (Tom) - - - - - - Make CREATE DOMAIN ... DEFAULT NULL work properly (Tom) - - - - - - Fix excessive logging of SSL error messages (Tom) - - - - - - Fix logging so that log messages are never interleaved when using - the syslogger process (Andrew) - - - - - - Fix crash when log_min_error_statement logging runs out - of memory (Tom) - - - - - - Fix incorrect handling of some foreign-key corner cases (Tom) - - - - - - Prevent CLUSTER from failing - due to attempting to process temporary tables of other sessions (Alvaro) - - - - - - Update the time zone database rules, particularly New Zealand's upcoming changes (Tom) - - - - - - Windows socket improvements (Magnus) - - - - - - Suppress timezone name (%Z) in log timestamps on Windows - because of possible encoding mismatches (Tom) - - - - - - Require non-superusers who use /contrib/dblink to use only - password authentication, as a security measure (Joe) - - - - - - - - - - Release 8.0.13 - - - Release date - 2007-04-23 - - - - This release contains a variety of fixes from 8.0.12, - including a security fix. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.13 - - - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. - - - - - - Changes - - - - - - Support explicit placement of the temporary-table schema within - search_path, and disable searching it for functions - and operators (Tom) - - - This is needed to allow a security-definer function to set a - truly secure value of 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 CREATE FUNCTION for more information. - - - - - - /contrib/tsearch2 crash fixes (Teodor) - - - - - - Fix potential-data-corruption bug in how VACUUM FULL handles - UPDATE chains (Tom, Pavan Deolasee) - - - - - - Fix PANIC during enlargement of a hash index (bug introduced in 8.0.10) - (Tom) - - - - - - Fix POSIX-style timezone specs to follow new USA DST rules (Tom) - - - - - - - - - - Release 8.0.12 - - - Release date - 2007-02-07 - - - - This release contains one fix from 8.0.11. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.12 - - - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. - - - - - - Changes - - - - - - Remove overly-restrictive check for type length in constraints and - functional indexes(Tom) - - - - - - - - - - Release 8.0.11 - - - Release date - 2007-02-05 - - - - This release contains a variety of fixes from 8.0.10, including - a security fix. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.11 - - - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. - - - - - - Changes - - - - - - Remove security vulnerabilities that allowed connected users - to read backend memory (Tom) - - - The vulnerabilities involve suppressing the normal check that a SQL - function returns the data type it's declared to, and changing the - data type of a table column (CVE-2007-0555, CVE-2007-0556). These - errors can easily be exploited to cause a backend crash, and in - principle might be used to read database content that the user - should not be able to access. - - - - - - Fix rare bug wherein btree index page splits could fail - due to choosing an infeasible split point (Heikki Linnakangas) - - - - - - Fix for rare Assert() crash triggered by UNION (Tom) - - - - - - Tighten security of multi-byte character processing for UTF8 sequences - over three bytes long (Tom) - - - - - - - - - - Release 8.0.10 - - - Release date - 2007-01-08 - - - - This release contains a variety of fixes from 8.0.9. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.10 - - - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. - - - - - - Changes - - - - - - Improve handling of getaddrinfo() on AIX (Tom) - - - - This fixes a problem with starting the statistics collector, - among other things. - - - - - - Fix failed to re-find parent key errors in - VACUUM (Tom) - - - - - - Fix race condition for truncation of a large relation across a - gigabyte boundary by VACUUM (Tom) - - - - - - Fix bugs affecting multi-gigabyte hash indexes (Tom) - - - - - - Fix possible deadlock in Windows signal handling (Teodor) - - - - - - Fix error when constructing an ARRAY[] made up of multiple - empty elements (Tom) - - - - - - Fix ecpg memory leak during connection (Michael) - - - - - - to_number() and to_char(numeric) - are now STABLE, not IMMUTABLE, for - new initdb installs (Tom) - - - - This is because lc_numeric can potentially - change the output of these functions. - - - - - - Improve index usage of regular expressions that use parentheses (Tom) - - - - This improves psql \d performance also. - - - - - - Update timezone database - - - - This affects Australian and Canadian daylight-savings rules in - particular. - - - - - - - - - - Release 8.0.9 - - - Release date - 2006-10-16 - - - - This release contains a variety of fixes from 8.0.8. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.9 - - - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. - - - - - - Changes - - -Fix crash when referencing NEW row -values in rule WHERE expressions (Tom) -Fix core dump when an untyped literal is taken as -ANYARRAY -Fix mishandling of AFTER triggers when query contains a SQL -function returning multiple rows (Tom) -Fix ALTER TABLE ... TYPE to recheck -NOT NULL for USING clause (Tom) -Fix string_to_array() to handle overlapping - matches for the separator string -For example, string_to_array('123xx456xxx789', 'xx'). - -Fix corner cases in pattern matching for - psql's \d commands -Fix index-corrupting bugs in /contrib/ltree - (Teodor) -Numerous robustness fixes in ecpg (Joachim -Wieland) -Fix backslash escaping in /contrib/dbmirror -Fix instability of statistics collection on Win32 (Tom, Andrew) -Fixes for AIX and -Intel compilers (Tom) - - - - - - - Release 8.0.8 - - - Release date - 2006-05-23 - - - - This release contains a variety of fixes from 8.0.7, - including patches for extremely serious security issues. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.8 - - - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. - - - - 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 libpq's - PQescapeStringConn()) to perform string escaping, - rather than relying on ad hoc code to do it. - - - - - Changes - - -Change the server to reject invalidly-encoded multibyte -characters in all cases (Tatsuo, Tom) -While 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. - - -Reject unsafe uses of \' in string literals -As a server-side defense against SQL-injection attacks of the type -described in CVE-2006-2314, the server now only accepts '' and not -\' as a representation of ASCII single quote in SQL string -literals. By default, \' is rejected only when -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 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 -backslash_quote is in part to make it obvious that insecure -clients are insecure. - - -Modify libpq's string-escaping routines to be -aware of encoding considerations and -standard_conforming_strings -This fixes 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 PostgreSQL connections -concurrently should migrate to PQescapeStringConn() and -PQescapeByteaConn() to ensure that escaping is done correctly -for the settings in use in each database connection. Applications that -do string escaping by hand should be modified to rely on library -routines instead. - - -Fix some incorrect encoding conversion functions -win1251_to_iso, alt_to_iso, -euc_tw_to_big5, euc_tw_to_mic, -mic_to_euc_tw were all broken to varying -extents. - - -Clean up stray remaining uses of \' in strings -(Bruce, Jan) - -Fix bug that sometimes caused OR'd index scans to -miss rows they should have returned - -Fix WAL replay for case where a btree index has been -truncated - -Fix SIMILAR TO for patterns involving -| (Tom) - -Fix SELECT INTO and CREATE TABLE AS to -create tables in the default tablespace, not the base directory (Kris -Jurka) - -Fix server to use custom DH SSL parameters correctly (Michael -Fuhr) - -Fix for Bonjour on Intel Macs (Ashley Clark) - -Fix various minor memory leaks - -Fix problem with password prompting on some Win32 systems -(Robert Kinberg) - - - - - - - Release 8.0.7 - - - Release date - 2006-02-14 - - - - This release contains a variety of fixes from 8.0.6. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.7 - - - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. - - - - - Changes - - - -Fix potential crash in SET -SESSION AUTHORIZATION (CVE-2006-0553) -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. - - -Fix bug with row visibility logic in self-inserted -rows (Tom) -Under rare circumstances a row inserted by the current command -could be seen as already valid, when it should not be. Repairs bug -created in 8.0.4, 7.4.9, and 7.3.11 releases. - - -Fix race condition that could lead to file already -exists errors during pg_clog and pg_subtrans file creation -(Tom) - -Fix cases that could lead to crashes if a cache-invalidation -message arrives at just the wrong time (Tom) - -Properly check DOMAIN constraints for -UNKNOWN parameters in prepared statements -(Neil) - -Ensure ALTER COLUMN TYPE will process -FOREIGN KEY, UNIQUE, and PRIMARY KEY -constraints in the proper order (Nakano Yoshihisa) - -Fixes to allow restoring dumps that have cross-schema -references to custom operators or operator classes (Tom) - -Allow pg_restore to continue properly after a -COPY failure; formerly it tried to treat the remaining -COPY data as SQL commands (Stephen Frost) - -Fix pg_ctl unregister crash -when the data directory is not specified (Magnus) - -Fix ecpg crash on AMD64 and PPC -(Neil) - -Recover properly if error occurs during argument passing -in PL/python (Neil) - -Fix PL/perl's handling of locales on -Win32 to match the backend (Andrew) - -Fix crash when log_min_messages is set to -DEBUG3 or above in postgresql.conf on Win32 -(Bruce) - -Fix pgxs -L library path -specification for Win32, Cygwin, OS X, AIX (Bruce) - -Check that SID is enabled while checking for Win32 admin -privileges (Magnus) - -Properly reject out-of-range date inputs (Kris -Jurka) - -Portability fix for testing presence of finite -and isinf during configure (Tom) - - - - - - - - Release 8.0.6 - - - Release date - 2006-01-09 - - - - This release contains a variety of fixes from 8.0.5. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.6 - - - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, see the release - notes for 8.0.3. - Also, you might need to REINDEX indexes on textual - columns after updating, if you are affected by the locale or - plperl issues described below. - - - - - Changes - - - -Fix Windows code so that postmaster will continue rather -than exit if there is no more room in ShmemBackendArray (Magnus) -The previous behavior could lead to a denial-of-service situation if too -many connection requests arrive close together. This applies -only to the Windows port. - -Fix bug introduced in 8.0 that could allow ReadBuffer -to return an already-used page as new, potentially causing loss of -recently-committed data (Tom) - -Fix for protocol-level Describe messages issued -outside a transaction or in a failed transaction (Tom) - -Fix character string comparison for locales that consider -different character combinations as equal, such as Hungarian (Tom) -This might require REINDEX to fix existing indexes on -textual columns. - -Set locale environment variables during postmaster startup -to ensure that plperl won't change the locale later -This fixes a problem that occurred if the postmaster was -started with environment variables specifying a different locale than what -initdb had been told. Under these conditions, any use of -plperl was likely to lead to corrupt indexes. You might need -REINDEX to fix existing indexes on -textual columns if this has happened to you. - -Allow more flexible relocation of installation -directories (Tom) -Previous releases supported relocation only if all installation -directory paths were the same except for the last component. - -Fix longstanding bug in strpos() and regular expression -handling in certain rarely used Asian multi-byte character sets (Tatsuo) - - -Various fixes for functions returning RECORDs -(Tom) - -Fix bug in /contrib/pgcrypto gen_salt, -which caused it not to use all available salt space for MD5 and -XDES algorithms (Marko Kreen, Solar Designer) -Salts for Blowfish and standard DES are unaffected. - -Fix /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) - - - - - - - - Release 8.0.5 - - - Release date - 2005-12-12 - - - - This release contains a variety of fixes from 8.0.4. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.5 - - - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, see the release - notes for 8.0.3. - - - - - Changes - - - -Fix race condition in transaction log management -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. - - -Fix bgwriter problems after recovering from errors -(Tom) - -The background writer was found to leak buffer pins after write errors. -While not fatal in itself, this might lead to mysterious blockages of -later VACUUM commands. - - - -Prevent failure if client sends Bind protocol message -when current transaction is already aborted - -/contrib/ltree fixes (Teodor) - -AIX and HPUX compile fixes (Tom) - -Retry file reads and writes after Windows -NO_SYSTEM_RESOURCES error (Qingqing Zhou) - -Fix intermittent failure when log_line_prefix -includes %i - -Fix psql performance issue with long scripts -on Windows (Merlin Moncure) - -Fix missing updates of pg_group flat -file - -Fix longstanding planning error for outer joins -This bug sometimes caused a bogus error RIGHT JOIN is -only supported with merge-joinable join conditions. - -Postpone timezone initialization until after -postmaster.pid is created -This avoids confusing startup scripts that expect the pid file to appear -quickly. - -Prevent core dump in pg_autovacuum when a -table has been dropped - -Fix problems with whole-row references (foo.*) -to subquery results - - - - - - - Release 8.0.4 - - - Release date - 2005-10-04 - - - - This release contains a variety of fixes from 8.0.3. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.4 - - - A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, see the release - notes for 8.0.3. - - - - - Changes - - -Fix error that allowed VACUUM to remove -ctid chains too soon, and add more checking in code that follows -ctid links -This fixes a long-standing problem that could cause crashes in very rare -circumstances. -Fix CHAR() to properly pad spaces to the specified -length when using a multiple-byte character set (Yoshiyuki Asaba) -In prior releases, the padding of CHAR() was incorrect -because it only padded to the specified number of bytes without -considering how many characters were stored. -Force a checkpoint before committing CREATE -DATABASE -This should fix recent reports of index is not a btree -failures when a crash occurs shortly after CREATE -DATABASE. -Fix the sense of the test for read-only transaction -in COPY -The code formerly prohibited COPY TO, where it should -prohibit COPY FROM. - -Handle consecutive embedded newlines in COPY -CSV-mode input -Fix date_trunc(week) for dates near year -end -Fix planning problem with outer-join ON clauses that reference -only the inner-side relation -Further fixes for x FULL JOIN y ON true corner -cases -Fix overenthusiastic optimization of x IN (SELECT -DISTINCT ...) and related cases -Fix mis-planning of queries with small LIMIT -values due to poorly thought out fuzzy cost -comparison -Make array_in and array_recv more -paranoid about validating their OID parameter -Fix missing rows in queries like UPDATE a=... WHERE -a... with GiST index on column a -Improve robustness of datetime parsing -Improve checking for partially-written WAL -pages -Improve robustness of signal handling when SSL is -enabled -Improve MIPS and M68K spinlock code -Don't try to open more than max_files_per_process -files during postmaster startup -Various memory leakage fixes -Various portability improvements -Update timezone data files -Improve handling of DLL load failures on Windows -Improve random-number generation on Windows -Make psql -f filename return a nonzero exit code -when opening the file fails -Change pg_dump to handle inherited check -constraints more reliably -Fix password prompting in pg_restore on -Windows -Fix PL/PgSQL to handle var := var correctly when -the variable is of pass-by-reference type -Fix PL/Perl %_SHARED so it's actually -shared -Fix contrib/pg_autovacuum to allow sleep -intervals over 2000 sec -Update contrib/tsearch2 to use current Snowball -code - - - - - - - Release 8.0.3 - - - Release date - 2005-05-09 - - - - This release contains a variety of fixes from 8.0.2, including several - security-related issues. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.3 - - - A dump/restore is not required for those running 8.0.X. However, - it is one possible way of handling two significant security problems - that have been found in the initial contents of 8.0.X system - catalogs. A dump/initdb/reload sequence using 8.0.3's initdb will - automatically correct these problems. - - - - 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.) - - - - The lesser problem is that the contrib/tsearch2 module - creates several functions that are improperly declared to return - internal when they do not accept internal arguments. - This breaks type safety for all functions using internal - arguments. - - - - It is strongly recommended that all installations repair these errors, - either by initdb or by following the manual repair procedure given - below. The errors at least allow unprivileged database users to crash - their server process, and might allow unprivileged users to gain the - privileges of a database superuser. - - - - If you wish not to do an initdb, perform the same manual repair - procedures shown in the 7.4.8 release - notes. - - - - - Changes - - -Change encoding function signature to prevent -misuse -Change contrib/tsearch2 to avoid unsafe use of -INTERNAL function results -Guard against incorrect second parameter to -record_out -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 -This is an extremely serious bug since it could lead to apparent -data inconsistencies being briefly visible to applications. -Repair race condition between relation extension and -VACUUM -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. - -Fix comparisons of TIME WITH TIME ZONE values - -The comparison code was wrong in the case where the ---enable-integer-datetimes configuration switch had been used. -NOTE: if you have an index on a TIME WITH TIME ZONE column, -it will need to be REINDEXed after installing this update, because -the fix corrects the sort order of column values. - -Fix EXTRACT(EPOCH) for -TIME WITH TIME ZONE values -Fix mis-display of negative fractional seconds in -INTERVAL values - -This error only occurred when the ---enable-integer-datetimes configuration switch had been used. - -Fix pg_dump to dump trigger names containing % -correctly (Neil) -Still more 64-bit fixes for -contrib/intagg -Prevent incorrect optimization of functions returning -RECORD -Prevent crash on COALESCE(NULL,NULL) -Fix Borland makefile for libpq -Fix contrib/btree_gist for timetz type -(Teodor) -Make pg_ctl check the PID found in -postmaster.pid to see if it is still a live -process -Fix pg_dump/pg_restore problems caused -by addition of dump timestamps -Fix interaction between materializing holdable cursors and -firing deferred triggers during transaction commit -Fix memory leak in SQL functions returning pass-by-reference -data types - - - - - - - Release 8.0.2 - - - Release date - 2005-04-07 - - - - This release contains a variety of fixes from 8.0.1. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.2 - - - A dump/restore is not required for those running 8.0.*. - This release updates the major version number of the - PostgreSQL libraries, so it might be - necessary to re-link some user applications if they cannot - find the properly-numbered shared library. - - - - - Changes - - -Increment the major version number of all interface -libraries (Bruce) - -This should have been done in 8.0.0. It is required so 7.4.X versions -of PostgreSQL client applications, like psql, -can be used on the same machine as 8.0.X applications. This might require -re-linking user applications that use these libraries. - -Add Windows-only wal_sync_method setting of - - -This setting causes PostgreSQL to write through -any disk-drive write cache when writing to WAL. -This behavior was formerly called - -Enable the wal_sync_method setting of - - -Because the default is no longer - -New cache management algorithm 2Q replaces -ARC (Tom) - -This was done to avoid a pending US patent on ARC. The -2Q code might be a few percentage points slower than -ARC for some work loads. A better cache management algorithm -will appear in 8.1. - -Planner adjustments to improve behavior on freshly-created -tables (Tom) -Allow plpgsql to assign to an element of an array that is -initially NULL (Tom) - -Formerly the array would remain NULL, but now it becomes a -single-element array. The main SQL engine was changed to handle -UPDATE of a null array value this way in 8.0, but the similar -case in plpgsql was overlooked. - - -Convert \r\n and \r to \n -in plpython function bodies (Michael Fuhr) - - This prevents syntax errors when plpython code is written on a Windows or - Mac client. - - -Allow SPI cursors to handle utility commands that return rows, -such as EXPLAIN (Tom) -Fix CLUSTER failure after ALTER TABLE -SET WITHOUT OIDS (Tom) -Reduce memory usage of ALTER TABLE ADD COLUMN -(Neil) -Fix ALTER LANGUAGE RENAME (Tom) -Document the Windows-only register and -unregister options of pg_ctl (Magnus) -Ensure operations done during backend shutdown are counted by -statistics collector - -This is expected to resolve reports of 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. - -Change the Windows default for configuration parameter -log_destination to - -By default, a server running on Windows will now send log output to the -Windows event logger rather than standard error. - -Make Kerberos authentication work on Windows (Magnus) -Allow ALTER DATABASE RENAME by superusers -who aren't flagged as having CREATEDB privilege (Tom) -Modify WAL log entries for CREATE and -DROP DATABASE to not specify absolute paths (Tom) -This allows point-in-time recovery on a different machine with possibly -different database location. Note that CREATE TABLESPACE still -poses a hazard in such situations. - -Fix crash from a backend exiting with an open transaction -that created a table and opened a cursor on it (Tom) -Fix array_map() so it can call PL functions -(Tom) -Several contrib/tsearch2 and -contrib/btree_gist fixes (Teodor) - -Fix crash of some contrib/pgcrypto -functions on some platforms (Marko Kreen) -Fix contrib/intagg for 64-bit platforms -(Tom) -Fix ecpg bugs in parsing of CREATE statement -(Michael) -Work around gcc bug on powerpc and amd64 causing problems in -ecpg (Christof Petig) -Do not use locale-aware versions of upper(), -lower(), and initcap() when the locale is -C (Bruce) - - This allows these functions to work on platforms that generate errors - for non-7-bit data when the locale is C. - -Fix quote_ident() to quote names that match keywords (Tom) -Fix to_date() to behave reasonably when -CC and YY fields are both used (Karel) -Prevent to_char(interval) from failing -when given a zero-month interval (Tom) -Fix wrong week returned by date_trunc('week') -(Bruce) - -date_trunc('week') -returned the wrong year for the first few days of January in some years. - -Use the correct default mask length for class D -addresses in INET data types (Tom) - - - - - - - Release 8.0.1 - - - Release date - 2005-01-31 - - - - This release contains a variety of fixes from 8.0.0, including several - security-related issues. - For information about new features in the 8.0 major release, see - . - - - - Migration to Version 8.0.1 - - - A dump/restore is not required for those running 8.0.0. - - - - - Changes - - -Disallow LOAD to non-superusers - -On platforms that will automatically execute initialization functions of a -shared library (this includes at least Windows and ELF-based Unixen), -LOAD can be used to make the server execute arbitrary code. -Thanks to NGS Software for reporting this. -Check that creator of an aggregate function has the right to -execute the specified transition functions - -This oversight made it possible to bypass denial of EXECUTE -permission on a function. -Fix security and 64-bit issues in -contrib/intagg -Add needed STRICT marking to some contrib functions (Kris -Jurka) -Avoid buffer overrun when plpgsql cursor declaration has too -many parameters (Neil) -Make ALTER TABLE ADD COLUMN enforce domain -constraints in all cases -Fix planning error for FULL and RIGHT outer joins - -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. - -Improve planning of grouped aggregate queries -ROLLBACK TO savepoint -closes cursors created since the savepoint -Fix inadequate backend stack size on Windows -Avoid SHGetSpecialFolderPath() on Windows -(Magnus) -Fix some problems in running pg_autovacuum as a Windows -service (Dave Page) -Multiple minor bug fixes in -pg_dump/pg_restore -Fix ecpg segfault with named structs used in -typedefs (Michael) - - - - - - - Release 8.0 - - - Release date - 2005-01-19 - - - - Overview - - - Major changes in this release: - - - - - - Microsoft Windows Native Server - - - - - This is the first PostgreSQL release - to run natively on Microsoft Windows as - a server. It can run as a Windows service. This - release supports NT-based Windows releases like - Windows 2000 SP4, Windows XP, and - Windows 2003. Older releases like - Windows 95, Windows 98, and - Windows ME are not supported because these operating - systems do not have the infrastructure to support - PostgreSQL. A separate installer - project has been created to ease installation on - Windows — see . - - - - Although tested throughout our release cycle, the Windows port - does not have the benefit of years of use in production - environments that PostgreSQL has on - Unix platforms. Therefore it should be treated with the same - level of caution as you would a new product. - - - - Previous releases required the Unix emulation toolkit - Cygwin in order to run the server on Windows - operating systems. PostgreSQL has - supported native clients on Windows for many years. - - - - - - - Savepoints - - - - - Savepoints allow specific parts of a transaction to be aborted - without affecting the remainder of the transaction. Prior - releases had no such capability; there was no way to recover - from a statement failure within a transaction except by - aborting the whole transaction. This feature is valuable for - application writers who require error recovery within a - complex transaction. - - - - - - - Point-In-Time Recovery - - - - - In previous releases there was no way to recover from disk - drive failure except to restore from a previous backup or use - a standby replication server. Point-in-time recovery allows - continuous backup of the server. You can recover either to - the point of failure or to some transaction in the past. - - - - - - - Tablespaces - - - - - Tablespaces allow administrators to select different file systems - for storage of individual tables, indexes, and databases. - This improves performance and control over disk space - usage. Prior releases used initlocation and - manual symlink management for such tasks. - - - - - - - Improved Buffer Management, CHECKPOINT, - VACUUM - - - - - This release has a more intelligent buffer replacement strategy, - which will make better use of available shared buffers and - improve performance. The performance impact of vacuum and - checkpoints is also lessened. - - - - - - - Change Column Types - - - - - A column's data type can now be changed with ALTER - TABLE. - - - - - - - New Perl Server-Side Language - - - - - A new version of the plperl server-side language now - supports a persistent shared storage area, triggers, returning records - and arrays of records, and SPI calls to access the database. - - - - - - - Comma-separated-value (CSV) support in COPY - - - - - COPY can now read and write - comma-separated-value files. It has the flexibility to - interpret nonstandard quoting and separation characters too. - - - - - - - - - Migration to Version 8.0 - - - A dump/restore using pg_dump is - required for those wishing to migrate data from any previous - release. - - - - Observe the following incompatibilities: - - - - - - - In - - - - - Functions declared - - - - - Nondeferred - - - - - Server configuration parameters virtual_host and - tcpip_socket have been replaced with a more general - parameter listen_addresses. Also, the server now listens on - localhost by default, which eliminates the need for the - -i postmaster switch in many scenarios. - - - - - - Server configuration parameters SortMem and - VacuumMem have been renamed to work_mem - and maintenance_work_mem to better reflect their - use. The original names are still supported in - SET and SHOW. - - - - - - Server configuration parameters log_pid, - log_timestamp, and log_source_port have been - replaced with a more general parameter log_line_prefix. - - - - - - Server configuration parameter syslog has been - replaced with a more logical log_destination variable to - control the log output destination. - - - - - - Server configuration parameter log_statement has been - changed so it can selectively log just database modification or - data definition statements. Server configuration parameter - log_duration now prints only when log_statement - prints the query. - - - - - - Server configuration parameter max_expr_depth parameter has - been replaced with max_stack_depth which measures the - physical stack size rather than the expression nesting depth. This - helps prevent session termination due to stack overflow caused by - recursive functions. - - - - - - The length() function no longer counts trailing spaces in - CHAR(n) values. - - - - - - Casting an integer to BIT(N) selects the rightmost N bits of the - integer, not the leftmost N bits as before. - - - - - - Updating an element or slice of a NULL array value now produces - a nonnull array result, namely an array containing - just the assigned-to positions. - - - - - - Syntax checking of array input values has been tightened up - considerably. Junk that was previously allowed in odd places with - odd results now causes an error. Empty-string element values - must now be written as "", rather than writing nothing. - Also changed behavior with respect to whitespace surrounding - array elements: trailing whitespace is now ignored, for symmetry - with leading whitespace (which has always been ignored). - - - - - - Overflow in integer arithmetic operations is now detected and - reported as an error. - - - - - - The arithmetic operators associated with the single-byte - "char" data type have been removed. - - - - - - The extract() function (also called - date_part) now returns the proper year for BC dates. - It previously returned one less than the correct year. The - function now also returns the proper values for millennium and - century. - - - - - - CIDR values now must have their nonmasked bits be zero. - For example, we no longer allow - 204.248.199.1/31 as a CIDR value. Such - values should never have been accepted by - PostgreSQL and will now be rejected. - - - - - - EXECUTE now returns a completion tag that - matches the executed statement. - - - - - - psql's \copy command now reads or - writes to the query's stdin/stdout, rather than - psql's stdin/stdout. The previous - behavior can be accessed via new - - - - - - The JDBC client interface has been removed from the core - distribution, and is now hosted at . - - - - - - The Tcl client interface has also been removed. There are several - Tcl interfaces now hosted at . - - - - - - The server now uses its own time zone database, rather than the - one supplied by the operating system. This will provide consistent - behavior across all platforms. In most cases, there should be - little noticeable difference in time zone behavior, except that - the time zone names used by SET/SHOW - TimeZone might be different from what your platform provides. - - - - - - Configure's threading option no longer requires - users to run tests or edit configuration files; threading options - are now detected automatically. - - - - - - Now that tablespaces have been implemented, - initlocation has been removed. - - - - - - The API for user-defined GiST indexes has been changed. The - Union and PickSplit methods are now passed a pointer to a - special GistEntryVector structure, - rather than a bytea. - - - - - - - - Deprecated Features - - - Some aspects of PostgreSQL's behavior - have been determined to be suboptimal. For the sake of backward - compatibility these have not been removed in 8.0, but they are - considered deprecated and will be removed in the next major - release. - - - - - - The 8.1 release will remove the to_char() function - for intervals. - - - - - - The server now warns of empty strings passed to - oid/float4/float8 data - types, but continues to interpret them as zeroes as before. - In the next major release, empty strings will be considered - invalid input for these data types. - - - - - - By default, tables in PostgreSQL 8.0 - and earlier are created with OIDs. In the next release, - this will not be the case: to create a table - that contains OIDs, the - - - - - - - Changes - - - Below you will find a detailed account of the changes between - release 8.0 and the previous major release. - - - - Performance Improvements - - - - - Support cross-data-type index usage (Tom) - - - Before this change, many queries would not use an index if the data - types did not match exactly. This improvement makes index usage more - intuitive and consistent. - - - - - - New buffer replacement strategy that improves caching (Jan) - - - Prior releases used a least-recently-used (LRU) cache to keep - recently referenced pages in memory. The LRU algorithm - did not consider the number of times a specific cache entry was - accessed, so large table scans could force out useful cache pages. - The new cache algorithm uses four separate lists to track most - recently used and most frequently used cache pages and dynamically - optimize their replacement based on the work load. This should - lead to much more efficient use of the shared buffer cache. - Administrators who have tested shared buffer sizes in the past - should retest with this new cache replacement policy. - - - - - - Add subprocess to write dirty buffers periodically to reduce - checkpoint writes (Jan) - - - In previous releases, the checkpoint process, which runs every few - minutes, would write all dirty buffers to the operating system's - buffer cache then flush all dirty operating system buffers to - disk. This resulted in a periodic spike in disk usage that often - hurt performance. The new code uses a background writer to trickle - disk writes at a steady pace so checkpoints have far fewer dirty - pages to write to disk. Also, the new code does not issue a global - sync() call, but instead fsync()s just - the files written since the last checkpoint. This should improve - performance and minimize degradation during checkpoints. - - - - - - Add ability to prolong vacuum to reduce performance impact (Jan) - - - On busy systems, VACUUM performs many I/O - requests which can hurt performance for other users. This - release allows you to slow down VACUUM to - reduce its impact on other users, though this increases the - total duration of VACUUM. - - - - - - Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom) - - - This improves the way indexes are scanned when many duplicate - values exist in the index. - - - - - - Use dynamically-generated table size estimates while planning (Tom) - - - Formerly the planner estimated table sizes using the values seen - by the last VACUUM or ANALYZE, - both as to physical table size (number of pages) and number of rows. - Now, the current physical table size is obtained from the kernel, - and the number of rows is estimated by multiplying the table size - by the row density (rows per page) seen by the last - VACUUM or ANALYZE. This should - produce more reliable estimates in cases where the table size has - changed significantly since the last housekeeping command. - - - - - - Improved index usage with OR clauses (Tom) - - - This allows the optimizer to use indexes in statements with many OR - clauses that would not have been indexed in the past. It can also use - multi-column indexes where the first column is specified and the second - column is part of an OR clause. - - - - - - Improve matching of partial index clauses (Tom) - - - The server is now smarter about using partial indexes in queries - involving complex - - - - - Improve performance of the GEQO optimizer (Tom) - - - The GEQO optimizer is used to plan queries involving many tables (by - default, twelve or more). This release speeds up the way queries are - analyzed to decrease time spent in optimization. - - - - - - Miscellaneous optimizer improvements - - - There is not room here to list all the minor improvements made, but - numerous special cases work better than in prior releases. - - - - - - Improve lookup speed for C functions (Tom) - - - This release uses a hash table to lookup information for dynamically - loaded C functions. This improves their speed so they perform nearly as - quickly as functions that are built into the server executable. - - - - - - Add type-specific ANALYZE statistics - capability (Mark Cave-Ayland) - - - This feature allows more flexibility in generating statistics - for nonstandard data types. - - - - - - ANALYZE now collects statistics for - expression indexes (Tom) - - - Expression indexes (also called functional indexes) allow users to - index not just columns but the results of expressions and function - calls. With this release, the optimizer can gather and use statistics - about the contents of expression indexes. This will greatly improve - the quality of planning for queries in which an expression index is - relevant. - - - - - - New two-stage sampling method for ANALYZE - (Manfred Koizar) - - - This gives better statistics when the density of valid rows is very - different in different regions of a table. - - - - - - Speed up TRUNCATE (Tom) - - - This buys back some of the performance loss observed in 7.4, while still - keeping TRUNCATE transaction-safe. - - - - - - - - - Server Changes - - - - - Add WAL file archiving and point-in-time recovery (Simon Riggs) - - - - - - Add tablespaces so admins can control disk layout (Gavin) - - - - - - Add a built-in log rotation program (Andreas Pflug) - - - It is now possible to log server messages conveniently without - relying on either syslog or an external log - rotation program. - - - - - - Add new read-only server configuration parameters to show server - compile-time settings: block_size, - integer_datetimes, max_function_args, - max_identifier_length, max_index_keys (Joe) - - - - - - Make quoting of sameuser, samegroup, and - all remove special meaning of these terms in - pg_hba.conf (Andrew) - - - - - - Use clearer IPv6 name ::1/128 for - localhost in default pg_hba.conf (Andrew) - - - - - - Use CIDR format in pg_hba.conf examples (Andrew) - - - - - - Rename server configuration parameters SortMem and - VacuumMem to work_mem and - maintenance_work_mem (Old names still supported) (Tom) - - - This change was made to clarify that bulk operations such as index and - foreign key creation use maintenance_work_mem, while - work_mem is for workspaces used during query execution. - - - - - - Allow logging of session disconnections using server configuration - log_disconnections (Andrew) - - - - - - Add new server configuration parameter log_line_prefix to - allow control of information emitted in each log line (Andrew) - - - Available information includes user name, database name, remote IP - address, and session start time. - - - - - - Remove server configuration parameters log_pid, - log_timestamp, log_source_port; functionality - superseded by log_line_prefix (Andrew) - - - - - - Replace the virtual_host and tcpip_socket - parameters with a unified listen_addresses parameter - (Andrew, Tom) - - - virtual_host could only specify a single IP address to - listen on. listen_addresses allows multiple addresses - to be specified. - - - - - - Listen on localhost by default, which eliminates the need for the - - - Listening on localhost (127.0.0.1) opens no new - security holes but allows configurations like Windows and JDBC, - which do not support local sockets, to work without special - adjustments. - - - - - - Remove syslog server configuration parameter, and add more - logical log_destination variable to control log output - location (Magnus) - - - - - - Change server configuration parameter log_statement to take - values all, mod, ddl, or - none to select which queries are logged (Bruce) - - - This allows administrators to log only data definition changes or - only data modification statements. - - - - - - Some logging-related configuration parameters could formerly be adjusted - by ordinary users, but only in the more verbose direction. - They are now treated more strictly: only superusers can set them. - However, a superuser can use ALTER USER to provide per-user - settings of these values for non-superusers. Also, it is now possible - for superusers to set values of superuser-only configuration parameters - via PGOPTIONS. - - - - - - Allow configuration files to be placed outside the data directory (mlw) - - - By default, configuration files are kept in the cluster's top directory. - With this addition, configuration files can be placed outside the - data directory, easing administration. - - - - - - Plan prepared queries only when first executed so constants can be - used for statistics (Oliver Jowett) - - - Prepared statements plan queries once and execute them many - times. While prepared queries avoid the overhead of re-planning - on each use, the quality of the plan suffers from not knowing the exact - parameters to be used in the query. In this release, planning of - unnamed prepared statements is delayed until the first execution, - and the actual parameter values of that execution are used as - optimization hints. This allows use of out-of-line parameter passing - without incurring a performance penalty. - - - - - - Allow DECLARE CURSOR to take parameters - (Oliver Jowett) - - - It is now useful to issue DECLARE CURSOR in a - Parse message with parameters. The parameter values - sent at Bind time will be substituted into the - execution of the cursor's query. - - - - - - Fix hash joins and aggregates of inet and - cidr data types (Tom) - - - Release 7.4 handled hashing of mixed inet and - cidr values incorrectly. (This bug did not exist - in prior releases because they wouldn't try to hash either - data type.) - - - - - - Make log_duration print only when log_statement - prints the query (Ed L.) - - - - - - - - - Query Changes - - - - - Add savepoints (nested transactions) (Alvaro) - - - - - - Unsupported isolation levels are now accepted and promoted to the - nearest supported level (Peter) - - - The SQL specification states that if a database doesn't support a - specific isolation level, it should use the next more restrictive level. - This change complies with that recommendation. - - - - - - Allow BEGIN WORK to specify transaction - isolation levels like START TRANSACTION does - (Bruce) - - - - - - Fix table permission checking for cases in which rules generate - a query type different from the originally submitted query (Tom) - - - - - - Implement dollar quoting to simplify single-quote usage (Andrew, Tom, - David Fetter) - - - In previous releases, because single quotes had to be used to - quote a function's body, the use of single quotes inside the - function text required use of two single quotes or other error-prone - notations. With this release we add the ability to use "dollar - quoting" to quote a block of text. The ability to use different - quoting delimiters at different nesting levels greatly simplifies - the task of quoting correctly, especially in complex functions. - Dollar quoting can be used anywhere quoted text is needed. - - - - - - Make CASE val WHEN compval1 THEN ... evaluate val only once (Tom) - - - - - - - - Test - - Fixes improper failure of cases such as SELECT SUM(win)/SUM(lose) - ... GROUP BY ... HAVING SUM(lose) > 0. This should work but formerly - could fail with divide-by-zero. - - - - - - Replace max_expr_depth parameter with - max_stack_depth parameter, measured in kilobytes of stack - size (Tom) - - - This gives us a fairly bulletproof defense against crashing due to - runaway recursive functions. Instead of measuring the depth of expression - nesting, we now directly measure the size of the execution stack. - - - - - - Allow arbitrary row expressions (Tom) - - - This release allows SQL expressions to contain arbitrary composite - types, that is, row values. It also allows functions to more easily - take rows as arguments and return row values. - - - - - - Allow - - - - - Avoid locale-specific case conversion of basic ASCII letters in - identifiers and keywords (Tom) - - - This solves the Turkish problem with mangling of words - containing I and i. Folding of characters - outside the 7-bit-ASCII set is still locale-aware. - - - - - - Improve syntax error reporting (Fabien, Tom) - - - Syntax error reports are more useful than before. - - - - - - Change EXECUTE to return a completion tag - matching the executed statement (Kris Jurka) - - - Previous releases return an EXECUTE tag for - any EXECUTE call. In this release, the tag - returned will reflect the command executed. - - - - - - Avoid emitting - - Such a clause makes no logical sense, but in some cases the rule - decompiler formerly produced this syntax. - - - - - - - - - Object Manipulation Changes - - - - - Add COMMENT ON for casts, conversions, languages, - operator classes, and large objects (Christopher) - - - - - - Add new server configuration parameter default_with_oids to - control whether tables are created with OIDs by default (Neil) - - - This allows administrators to control whether CREATE - TABLE commands create tables with or without OID - columns by default. (Note: the current factory default setting for - default_with_oids is TRUE, but the default - will become FALSE in future releases.) - - - - - - Add - - - - - Allow ALTER TABLE DROP COLUMN to drop an OID - column (ALTER TABLE SET WITHOUT OIDS still works) - (Tom) - - - - - - Allow composite types as table columns (Tom) - - - - - - Allow ALTER ... ADD COLUMN with defaults and - - - It is now possible for - - - - - Add ALTER COLUMN TYPE to change column's type (Rod) - - - It is now possible to alter a column's data type without dropping - and re-adding the column. - - - - - - Allow multiple ALTER actions in a single ALTER - TABLE command (Rod) - - - This is particularly useful for ALTER commands that - rewrite the table (which include - - - - - Allow ALTER TABLE to add SERIAL - columns (Tom) - - - This falls out from the new capability of specifying defaults for new - columns. - - - - - - Allow changing the owners of aggregates, conversions, databases, - functions, operators, operator classes, schemas, types, and tablespaces - (Christopher, Euler Taveira de Oliveira) - - - Previously this required modifying the system tables directly. - - - - - - Allow temporary object creation to be limited to - - - - - Add - - Prior to this release, there was no way to clear an auto-cluster - specification except to modify the system tables. - - - - - - Constraint/Index/SERIAL names are now - table_column_type - with numbers appended to guarantee uniqueness within the schema - (Tom) - - - The SQL specification states that such names should be unique - within a schema. - - - - - - Add pg_get_serial_sequence() to return a - SERIAL column's sequence name (Christopher) - - - This allows automated scripts to reliably find the SERIAL - sequence name. - - - - - - Warn when primary/foreign key data type mismatch requires costly lookup - - - - - - New ALTER INDEX command to allow moving of indexes - between tablespaces (Gavin) - - - - - - Make ALTER TABLE OWNER change dependent sequence - ownership too (Alvaro) - - - - - - - - - - Utility Command Changes - - - - - Allow CREATE SCHEMA to create triggers, - indexes, and sequences (Neil) - - - - - - Add - - This allows - - - - - Add - - This allows the LOCK command to fail if it - would have to wait for the requested lock. - - - - - - Allow COPY to read and write - comma-separated-value (CSV) files (Andrew, Bruce) - - - - - - Generate error if the COPY delimiter and NULL - string conflict (Bruce) - - - - - - GRANT/REVOKE behavior - follows the SQL spec more closely - - - - - - Avoid locking conflict between CREATE INDEX - and CHECKPOINT (Tom) - - - In 7.3 and 7.4, a long-running B-tree index build could block concurrent - CHECKPOINTs from completing, thereby causing WAL bloat because the - WAL log could not be recycled. - - - - - - Database-wide ANALYZE does not hold locks - across tables (Tom) - - - This reduces the potential for deadlocks against other backends - that want exclusive locks on tables. To get the benefit of this - change, do not execute database-wide ANALYZE - inside a transaction block (BEGIN block); it - must be able to commit and start a new transaction for each - table. - - - - - - REINDEX does not exclusively lock the index's - parent table anymore - - - The index itself is still exclusively locked, but readers of the - table can continue if they are not using the particular index - being rebuilt. - - - - - - Erase MD5 user passwords when a user is renamed (Bruce) - - - PostgreSQL uses the user name as salt - when encrypting passwords via MD5. When a user's name is changed, - the salt will no longer match the stored MD5 password, so the - stored password becomes useless. In this release a notice is - generated and the password is cleared. A new password must then - be assigned if the user is to be able to log in with a password. - - - - - - New pg_ctl - - Windows does not have a kill command to send signals to - backends so this capability was added to pg_ctl. - - - - - - Information schema improvements - - - - - - Add - - - - - Detect locale/encoding mismatch in - initdb (Peter) - - - - - - Add - - - - - - - - Data Type and Function Changes - - - - - More complete support for composite types (row types) (Tom) - - - Composite values can be used in many places where only scalar values - worked before. - - - - - - Reject nonrectangular array values as erroneous (Joe) - - - Formerly, array_in would silently build a - surprising result. - - - - - - Overflow in integer arithmetic operations is now detected (Tom) - - - - - - The arithmetic operators associated with the single-byte - "char" data type have been removed. - - - Formerly, the parser would select these operators in many situations - where an unable to select an operator error would be more - appropriate, such as null * null. If you actually want - to do arithmetic on a "char" column, you can cast it to - integer explicitly. - - - - - - Syntax checking of array input values considerably tightened up (Joe) - - - Junk that was previously allowed in odd places with odd results - now causes an ERROR, for example, non-whitespace - after the closing right brace. - - - - - - Empty-string array element values must now be written as - "", rather than writing nothing (Joe) - - - Formerly, both ways of writing an empty-string element value were - allowed, but now a quoted empty string is required. The case where - nothing at all appears will probably be considered to be a NULL - element value in some future release. - - - - - - Array element trailing whitespace is now ignored (Joe) - - - Formerly leading whitespace was ignored, but trailing whitespace - between an element value and the delimiter or right brace was - significant. Now trailing whitespace is also ignored. - - - - - - Emit array values with explicit array bounds when lower bound is not one - (Joe) - - - - - - Accept YYYY-monthname-DD as a date string (Tom) - - - - - - Make netmask and hostmask functions - return maximum-length mask length (Tom) - - - - - - Change factorial function to return numeric (Gavin) - - - Returning numeric allows the factorial function to - work for a wider range of input values. - - - - - - to_char/to_date() date conversion - improvements (Kurt Roeckx, Fabien Coelho) - - - - - - Make length() disregard trailing spaces in - CHAR(n) (Gavin) - - - This change was made to improve consistency: trailing spaces are - semantically insignificant in CHAR(n) data, so they - should not be counted by length(). - - - - - - Warn about empty string being passed to - OID/float4/float8 data types (Neil) - - - 8.1 will throw an error instead. - - - - - - Allow leading or trailing whitespace in - int2/int4/int8/float4/float8 - input routines - (Neil) - - - - - - Better support for IEEE Infinity and NaN - values in float4/float8 (Neil) - - - These should now work on all platforms that support IEEE-compliant - floating point arithmetic. - - - - - - Add - - - - - Fix to_char for 1 BC - (previously it returned 1 AD) (Bruce) - - - - - - Fix date_part(year) for BC dates (previously it - returned one less than the correct year) (Bruce) - - - - - - Fix date_part() to return the proper millennium and - century (Fabien Coelho) - - - In previous versions, the century and millennium results had a wrong - number and started in the wrong year, as compared to standard - reckoning of such things. - - - - - - Add ceiling() as an alias for ceil(), - and power() as an alias for pow() for - standards compliance (Neil) - - - - - - Change ln(), log(), - power(), and sqrt() to emit the correct - SQLSTATE error codes for certain error conditions, as - specified by SQL:2003 (Neil) - - - - - - Add width_bucket() function as defined by SQL:2003 (Neil) - - - - - - Add generate_series() functions to simplify working - with numeric sets (Joe) - - - - - - Fix upper/lower/initcap() functions to work with - multibyte encodings (Tom) - - - - - - Add boolean and bitwise integer - - - - - New session information functions to return network addresses for client - and server (Sean Chittenden) - - - - - - Add function to determine the area of a closed path (Sean Chittenden) - - - - - - Add function to send cancel request to other backends (Magnus) - - - - - - Add interval plus datetime operators (Tom) - - - The reverse ordering, datetime plus interval, - was already supported, but both are required by the SQL standard. - - - - - - Casting an integer to BIT(N) selects the rightmost N bits - of the integer - (Tom) - - - In prior releases, the leftmost N bits were selected, but this was - deemed unhelpful, not to mention inconsistent with casting from bit - to int. - - - - - - Require CIDR values to have all nonmasked bits be zero - (Kevin Brintnall) - - - - - - - - - Server-Side Language Changes - - - - - In READ COMMITTED serialization mode, volatile functions - now see the results of concurrent transactions committed up to the - beginning of each statement within the function, rather than up to the - beginning of the interactive command that called the function. - - - - - - Functions declared STABLE or IMMUTABLE always - use the snapshot of the calling query, and therefore do not see the - effects of actions taken after the calling query starts, whether in - their own transaction or other transactions. Such a function must be - read-only, too, meaning that it cannot use any SQL commands other than - SELECT. There is a considerable performance gain from - declaring a function STABLE or IMMUTABLE - rather than VOLATILE. - - - - - - Nondeferred - - - - - Allow function parameters to be declared with names (Dennis Björklund) - - - This allows better documentation of functions. Whether the names - actually do anything depends on the specific function language - being used. - - - - - - Allow PL/pgSQL parameter names to be referenced in the function (Dennis Björklund) - - - This basically creates an automatic alias for each named parameter. - - - - - - Do minimal syntax checking of PL/pgSQL functions at creation time (Tom) - - - This allows us to catch simple syntax errors sooner. - - - - - - More support for composite types (row and record variables) in PL/pgSQL - - - For example, it now works to pass a rowtype variable to another function - as a single variable. - - - - - - Default values for PL/pgSQL variables can now reference previously - declared variables - - - - - - Improve parsing of PL/pgSQL FOR loops (Tom) - - - Parsing is now driven by presence of ".." rather than - data type of - - - - - Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan) - - - - - - In PL/Tcl, SPI commands are now run in subtransactions. If an error - occurs, the subtransaction is cleaned up and the error is reported - as an ordinary Tcl error, which can be trapped with catch. - Formerly, it was not possible to catch such errors. - - - - - - Accept ELSEIF in PL/pgSQL (Neil) - - - Previously PL/pgSQL only allowed ELSIF, but many people - are accustomed to spelling this keyword ELSEIF. - - - - - - - - - <application>psql</> Changes - - - - - Improve psql information display about database - objects (Christopher) - - - - - - Allow psql to display group membership in - \du and \dg (Markus Bertheau) - - - - - - Prevent psql \dn from showing - temporary schemas (Bruce) - - - - - - Allow psql to handle tilde user expansion for file - names (Zach Irmen) - - - - - - Allow psql to display fancy prompts, including - color, via readline (Reece Hart, Chet Ramey) - - - - - - Make psql \copy match COPY command syntax - fully (Tom) - - - - - - Show the location of syntax errors (Fabien Coelho, Tom) - - - - - - Add CLUSTER information to psql - \d display - (Bruce) - - - - - - Change psql \copy stdin/stdout to read - from command input/output (Bruce) - - - - - - Add - - - - - Add global psql configuration file, psqlrc.sample - (Bruce) - - - This allows a central file where global psql startup commands can - be stored. - - - - - - Have psql \d+ indicate if the table - has an OID column (Neil) - - - - - - On Windows, use binary mode in psql when reading files so control-Z - is not seen as end-of-file - - - - - - Have \dn+ show permissions and description for schemas (Dennis - Björklund) - - - - - - Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane) - - - - - - Allow boolean settings to be set using upper or lower case (Michael Paesold) - - - - - - - - - <application>pg_dump</> Changes - - - - - Use dependency information to improve the reliability of - pg_dump (Tom) - - - This should solve the longstanding problems with related objects - sometimes being dumped in the wrong order. - - - - - - Have pg_dump output objects in alphabetical order if possible (Tom) - - - This should make it easier to identify changes between - dump files. - - - - - - Allow pg_restore to ignore some SQL errors (Fabien Coelho) - - - This makes pg_restore's behavior similar to the - results of feeding a pg_dump output script to - psql. In most cases, ignoring errors and plowing - ahead is the most useful thing to do. Also added was a pg_restore - option to give the old behavior of exiting on an error. - - - - - - pg_restore - - - - - New begin/end markers in pg_dump text output (Bruce) - - - - - - Add start/stop times for - pg_dump/pg_dumpall in verbose mode - (Bruce) - - - - - - Allow most pg_dump options in - pg_dumpall (Christopher) - - - - - - Have pg_dump use ALTER OWNER rather - than SET SESSION AUTHORIZATION by default - (Christopher) - - - - - - - - - libpq Changes - - - - - Make libpq's - - - - - Add PQmbdsplen() which returns the display length - of a character (Tatsuo) - - - - - - Add thread locking to SSL and - Kerberos connections (Manfred Spraul) - - - - - - Allow PQoidValue(), PQcmdTuples(), and - PQoidStatus() to work on EXECUTE - commands (Neil) - - - - - - Add PQserverVersion() to provide more convenient - access to the server version number (Greg Sabino Mullane) - - - - - - Add PQprepare/PQsendPrepared() functions to support - preparing statements without necessarily specifying the data types - of their parameters (Abhijit Menon-Sen) - - - - - - Many ECPG improvements, including SET DESCRIPTOR (Michael) - - - - - - - - - Source Code Changes - - - - - Allow the database server to run natively on Windows (Claudio, Magnus, Andrew) - - - - - - Shell script commands converted to C versions for Windows support (Andrew) - - - - - - Create an extension makefile framework (Fabien Coelho, Peter) - - - This simplifies the task of building extensions outside the original - source tree. - - - - - - Support relocatable installations (Bruce) - - - Directory paths for installed files (such as the - /share directory) are now computed relative to the - actual location of the executables, so that an installation tree - can be moved to another place without reconfiguring and - rebuilding. - - - - - - Use - - - - - Add - - - - - Upgrade to DocBook V4.2 SGML (Peter) - - - - - - New PostgreSQL CVS tag (Marc) - - - This was done to make it easier for organizations to manage their - own copies of the PostgreSQL - CVS repository. File version stamps from the master - repository will not get munged by checking into or out of a copied - repository. - - - - - - Clarify locking code (Manfred Koizar) - - - - - - Buffer manager cleanup (Neil) - - - - - - Decouple platform tests from CPU spinlock code (Bruce, Tom) - - - - - - Add inlined test-and-set code on PA-RISC for gcc - (ViSolve, Tom) - - - - - - Improve i386 spinlock code (Manfred Spraul) - - - - - - Clean up spinlock assembly code to avoid warnings from newer - gcc releases (Tom) - - - - - - Remove JDBC from source tree; now a separate project - - - - - - Remove the libpgtcl client interface; now a separate project - - - - - - More accurately estimate memory and file descriptor usage (Tom) - - - - - - Improvements to the Mac OS X startup scripts (Ray A.) - - - - - - New fsync() test program (Bruce) - - - - - - Major documentation improvements (Neil, Peter) - - - - - - Remove pg_encoding; not needed - anymore - - - - - - Remove pg_id; not needed anymore - - - - - - Remove initlocation; not needed - anymore - - - - - - Auto-detect thread flags (no more manual testing) (Bruce) - - - - - - Use Olson's public domain timezone library (Magnus) - - - - - - With threading enabled, use thread flags on Unixware for - backend executables too (Bruce) - - - Unixware cannot mix threaded and nonthreaded object files in the - same executable, so everything must be compiled as threaded. - - - - - - psql now uses a flex-generated - lexical analyzer to process command strings - - - - - - Reimplement the linked list data structure used throughout the - backend (Neil) - - - This improves performance by allowing list append and length - operations to be more efficient. - - - - - - Allow dynamically loaded modules to create their own server configuration - parameters (Thomas Hallgren) - - - - - - New Brazilian version of FAQ (Euler Taveira de Oliveira) - - - - - - Add French FAQ (Guillaume Lelarge) - - - - - - New pgevent for Windows logging - - - - - - Make libpq and ECPG build as proper shared libraries on OS X (Tom) - - - - - - - - - Contrib Changes - - - - - Overhaul of contrib/dblink (Joe) - - - - - - contrib/dbmirror improvements (Steven Singer) - - - - - - New contrib/xml2 (John Gray, Torchbox) - - - - - - Updated contrib/mysql - - - - - - New version of contrib/btree_gist (Teodor) - - - - - - New contrib/trgm, trigram matching for - PostgreSQL (Teodor) - - - - - - Many contrib/tsearch2 improvements (Teodor) - - - - - - Add double metaphone to contrib/fuzzystrmatch (Andrew) - - - - - - Allow contrib/pg_autovacuum to run as a Windows service (Dave Page) - - - - - - Add functions to contrib/dbsize (Andreas Pflug) - - - - - - Removed contrib/pg_logger: obsoleted by integrated logging - subprocess - - - - - - Removed contrib/rserv: obsoleted by various separate projects - - - - - - - - - - - Release 7.4.25 - - - Release date - 2009-03-16 - - - - This release contains a variety of fixes from 7.4.24. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.25 - - - 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. - - - - - - Changes - - - - - - Prevent error recursion crashes when encoding conversion fails (Tom) - - - - 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 - 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) - - - - - - Disallow CREATE CONVERSION with the wrong encodings - for the specified conversion function (Heikki) - - - - 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. - - - - - - Fix core dump when to_char() is given format codes that - are inappropriate for the type of the data argument (Tom) - - - - - - Add MUST (Mauritius Island Summer Time) to the default list - of known timezone abbreviations (Xavier Bugaud) - - - - - - - - - - Release 7.4.24 - - - Release date - 2009-02-02 - - - - This release contains a variety of fixes from 7.4.23. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.24 - - - 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. - - - - - - Changes - - - - - - Improve handling of URLs in headline() function (Teodor) - - - - - - Improve handling of overlength headlines in headline() - function (Teodor) - - - - - - 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) - - - - - - Avoid unnecessary locking of small tables in VACUUM - (Heikki) - - - - - - Fix uninitialized variables in contrib/tsearch2's - get_covers() function (Teodor) - - - - - - Fix bug in to_char()'s handling of TH - format codes (Andreas Scherbaum) - - - - - - Make all documentation reference pgsql-bugs and/or - pgsql-hackers as appropriate, instead of the - now-decommissioned pgsql-ports and pgsql-patches - mailing lists (Tom) - - - - - - - - - - Release 7.4.23 - - - Release date - 2008-11-03 - - - - This release contains a variety of fixes from 7.4.22. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.23 - - - 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. - - - - - - Changes - - - - - - Fix backend crash when the client encoding cannot represent a localized - error message (Tom) - - - - We have addressed similar issues before, but it would still fail if - the 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. - - - - - - Fix incorrect tsearch2 headline generation when single query - item matches first word of text (Sushant Sinha) - - - - - - Fix improper display of fractional seconds in interval values when - using a non-ISO datestyle in an - - - - - Ensure SPI_getvalue and SPI_getbinval - behave correctly when the passed tuple and tuple descriptor have - different numbers of columns (Tom) - - - - 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. - - - - - - Fix ecpg's parsing of CREATE USER (Michael) - - - - - - - - - - Release 7.4.22 - - - Release date - 2008-09-22 - - - - This release contains a variety of fixes from 7.4.21. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.22 - - - 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. - - - - - - Changes - - - - - - Fix datetime input functions to correctly detect integer overflow when - running on a 64-bit platform (Tom) - - - - - - Improve performance of writing very long log messages to syslog (Tom) - - - - - - Fix bug in backwards scanning of a cursor on a SELECT DISTINCT - ON query (Tom) - - - - - - Fix planner to estimate that GROUP BY expressions yielding - boolean results always result in two groups, regardless of the - expressions' contents (Tom) - - - - This is very substantially more accurate than the regular GROUP - BY estimate for certain boolean tests like col - IS NULL. - - - - - - Improve pg_dump and pg_restore's - error reporting after failure to send a SQL command (Tom) - - - - - - - - - - Release 7.4.21 - - - Release date - 2008-06-12 - - - - This release contains one serious bug fix over 7.4.20. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.21 - - - 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. - - - - - - Changes - - - - - - Make pg_get_ruledef() parenthesize negative constants (Tom) - - - - Before this fix, a negative constant in a view or rule might be dumped - as, say, -42::integer, which is subtly incorrect: it should - be (-42)::integer due to operator precedence rules. - Usually this would make little difference, but it could interact with - another recent patch to cause - PostgreSQL to reject what had been a valid - SELECT DISTINCT view query. Since this could result in - 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. - - - - - - - - - - Release 7.4.20 - - - Release date - never released - - - - This release contains a variety of fixes from 7.4.19. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.20 - - - 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. - - - - - - Changes - - - - - - Fix conversions between ISO-8859-5 and other encodings to handle - Cyrillic Yo characters (e and E with - two dots) (Sergey Burladyan) - - - - - - Fix a few datatype input functions - that were allowing unused bytes in their results to contain - uninitialized, unpredictable values (Tom) - - - - This could lead to failures in which two apparently identical literal - values were not seen as equal, resulting in the parser complaining - about unmatched ORDER BY and DISTINCT - expressions. - - - - - - Fix a corner case in regular-expression substring matching - (substring(string from - pattern)) (Tom) - - - - 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 - substring('foo' from 'foo(bar)?'). - This should return NULL, since (bar) isn't matched, but - it was mistakenly returning the whole-pattern match instead (ie, - foo). - - - - - - Fix incorrect result from ecpg's - PGTYPEStimestamp_sub() function (Michael) - - - - - - Fix DatumGetBool macro to not fail with gcc - 4.3 (Tom) - - - - This problem affects 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. - - - - - - Fix longstanding LISTEN/NOTIFY - race condition (Tom) - - - - In rare cases a session that had just executed a - LISTEN might not get a notification, even though - one would be expected because the concurrent transaction executing - NOTIFY was observed to commit later. - - - - A side effect of the fix is that a transaction that has executed - a not-yet-committed LISTEN command will not see any - row in pg_listener for the 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. - - - - - - Fix display of constant expressions in ORDER BY - and GROUP BY (Tom) - - - - An explictly casted constant would be shown incorrectly. This could - for example lead to corruption of a view definition during - dump and reload. - - - - - - Fix libpq to handle NOTICE messages correctly - during COPY OUT (Tom) - - - - 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. - - - - - - - - - - Release 7.4.19 - - - Release date - 2008-01-07 - - - - 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 - . - - - - Migration to Version 7.4.19 - - - 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. - - - - - - Changes - - - - - - Prevent functions in indexes from executing with the privileges of - the user running VACUUM, ANALYZE, etc (Tom) - - - - 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 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 VACUUM, ANALYZE, REINDEX, - and CLUSTER) to execute as the table owner rather than - the calling user, using the same privilege-switching mechanism already - used for SECURITY DEFINER functions. To prevent bypassing - this security measure, execution of SET SESSION - AUTHORIZATION and SET ROLE is now forbidden within a - SECURITY DEFINER context. (CVE-2007-6600) - - - - - - Repair assorted bugs in the regular-expression package (Tom, Will Drewry) - - - - 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) - - - - - - Require non-superusers who use /contrib/dblink to use only - password authentication, as a security measure (Joe) - - - - The fix that appeared for this in 7.4.18 was incomplete, as it plugged - the hole for only some dblink functions. (CVE-2007-6601, - CVE-2007-3278) - - - - - - Fix planner failure in some cases of WHERE false AND var IN - (SELECT ...) (Tom) - - - - - - Fix potential crash in translate() when using a multibyte - database encoding (Tom) - - - - - - Fix PL/Python to not crash on long exception messages (Alvaro) - - - - - - ecpg parser fixes (Michael) - - - - - - Make contrib/tablefunc's crosstab() handle - NULL rowid as a category in its own right, rather than crashing (Joe) - - - - - - Fix tsvector and tsquery output routines to - escape backslashes correctly (Teodor, Bruce) - - - - - - Fix crash of to_tsvector() on huge input strings (Teodor) - - - - - - Require a specific version of Autoconf to be used - when re-generating the configure script (Peter) - - - - This affects developers and packagers only. The change was made - to prevent accidental use of untested combinations of - Autoconf and PostgreSQL versions. - You can remove the version check if you really want to use a - different Autoconf version, but it's - your responsibility whether the result works or not. - - - - - - - - - - Release 7.4.18 - - - Release date - 2007-09-17 - - - - This release contains fixes from 7.4.17. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.18 - - - 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. - - - - - - Changes - - - - - - Prevent index corruption when a transaction inserts rows and - then aborts close to the end of a concurrent VACUUM - on the same table (Tom) - - - - - - Make CREATE DOMAIN ... DEFAULT NULL work properly (Tom) - - - - - - Fix excessive logging of SSL error messages (Tom) - - - - - - Fix crash when log_min_error_statement logging runs out - of memory (Tom) - - - - - - Prevent CLUSTER from failing - due to attempting to process temporary tables of other sessions (Alvaro) - - - - - - Require non-superusers who use /contrib/dblink to use only - password authentication, as a security measure (Joe) - - - - - - - - - - Release 7.4.17 - - - Release date - 2007-04-23 - - - - This release contains fixes from 7.4.16, - including a security fix. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.17 - - - 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. - - - - - - Changes - - - - - - Support explicit placement of the temporary-table schema within - search_path, and disable searching it for functions - and operators (Tom) - - - This is needed to allow a security-definer function to set a - truly secure value of 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 CREATE FUNCTION for more information. - - - - - - /contrib/tsearch2 crash fixes (Teodor) - - - - - - Fix potential-data-corruption bug in how VACUUM FULL handles - UPDATE chains (Tom, Pavan Deolasee) - - - - - - Fix PANIC during enlargement of a hash index (bug introduced in 7.4.15) - (Tom) - - - - - - - - - - Release 7.4.16 - - - Release date - 2007-02-05 - - - - 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 - . - - - - Migration to Version 7.4.16 - - - 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. - - - - - - Changes - - - - - - Remove security vulnerability that allowed connected users - to read backend memory (Tom) - - - 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. - - - - - - Fix rare bug wherein btree index page splits could fail - due to choosing an infeasible split point (Heikki Linnakangas) - - - - - - Fix for rare Assert() crash triggered by UNION (Tom) - - - - - - Tighten security of multi-byte character processing for UTF8 sequences - over three bytes long (Tom) - - - - - - - - - - Release 7.4.15 - - - Release date - 2007-01-08 - - - - This release contains a variety of fixes from 7.4.14. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.15 - - - 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. - - - - - - Changes - - - - - - Improve handling of getaddrinfo() on AIX (Tom) - - - - This fixes a problem with starting the statistics collector, - among other things. - - - - - - Fix failed to re-find parent key errors in - VACUUM (Tom) - - - - - - Fix bugs affecting multi-gigabyte hash indexes (Tom) - - - - - - Fix error when constructing an ARRAY[] made up of multiple - empty elements (Tom) - - - - - - to_number() and to_char(numeric) - are now STABLE, not IMMUTABLE, for - new initdb installs (Tom) - - - - This is because lc_numeric can potentially - change the output of these functions. - - - - - - Improve index usage of regular expressions that use parentheses (Tom) - - - - This improves psql \d performance also. - - - - - - - - - - Release 7.4.14 - - - Release date - 2006-10-16 - - - - This release contains a variety of fixes from 7.4.13. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.14 - - - 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. - - - - - - Changes - - -Fix core dump when an untyped literal is taken as -ANYARRAY -Fix string_to_array() to handle overlapping - matches for the separator string -For example, string_to_array('123xx456xxx789', 'xx'). - -Fix corner cases in pattern matching for - psql's \d commands -Fix index-corrupting bugs in /contrib/ltree - (Teodor) -Fix backslash escaping in /contrib/dbmirror -Adjust regression tests for recent changes in US DST laws - - - - - - - - Release 7.4.13 - - - Release date - 2006-05-23 - - - - 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 - . - - - - Migration to Version 7.4.13 - - - 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. - - - - 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 libpq's - PQescapeStringConn()) to perform string escaping, - rather than relying on ad hoc code to do it. - - - - - Changes - - -Change the server to reject invalidly-encoded multibyte -characters in all cases (Tatsuo, Tom) -While 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. - - -Reject unsafe uses of \' in string literals -As a server-side defense against SQL-injection attacks of the type -described in CVE-2006-2314, the server now only accepts '' and not -\' as a representation of ASCII single quote in SQL string -literals. By default, \' is rejected only when -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 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 -backslash_quote is in part to make it obvious that insecure -clients are insecure. - - -Modify libpq's string-escaping routines to be -aware of encoding considerations and -standard_conforming_strings -This fixes 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 PostgreSQL connections -concurrently should migrate to PQescapeStringConn() and -PQescapeByteaConn() to ensure that escaping is done correctly -for the settings in use in each database connection. Applications that -do string escaping by hand should be modified to rely on library -routines instead. - - -Fix some incorrect encoding conversion functions -win1251_to_iso, alt_to_iso, -euc_tw_to_big5, euc_tw_to_mic, -mic_to_euc_tw were all broken to varying -extents. - - -Clean up stray remaining uses of \' in strings -(Bruce, Jan) - -Fix bug that sometimes caused OR'd index scans to -miss rows they should have returned - -Fix WAL replay for case where a btree index has been -truncated - -Fix SIMILAR TO for patterns involving -| (Tom) - -Fix server to use custom DH SSL parameters correctly (Michael -Fuhr) - -Fix for Bonjour on Intel Macs (Ashley Clark) - -Fix various minor memory leaks - - - - - - - Release 7.4.12 - - - Release date - 2006-02-14 - - - - This release contains a variety of fixes from 7.4.11. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.12 - - - 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. - - - - - Changes - - - -Fix potential crash in SET -SESSION AUTHORIZATION (CVE-2006-0553) -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. - - -Fix bug with row visibility logic in self-inserted -rows (Tom) -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. - - -Fix race condition that could lead to file already -exists errors during pg_clog file creation -(Tom) - -Properly check DOMAIN constraints for -UNKNOWN parameters in prepared statements -(Neil) - -Fix to allow restoring dumps that have cross-schema -references to custom operators (Tom) - -Portability fix for testing presence of finite -and isinf during configure (Tom) - - - - - - - - Release 7.4.11 - - - Release date - 2006-01-09 - - - - This release contains a variety of fixes from 7.4.10. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.11 - - - 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 REINDEX indexes on textual - columns after updating, if you are affected by the locale or - plperl issues described below. - - - - - Changes - - - -Fix for protocol-level Describe messages issued -outside a transaction or in a failed transaction (Tom) - -Fix character string comparison for locales that consider -different character combinations as equal, such as Hungarian (Tom) -This might require REINDEX to fix existing indexes on -textual columns. - -Set locale environment variables during postmaster startup -to ensure that plperl won't change the locale later -This fixes a problem that occurred if the postmaster was -started with environment variables specifying a different locale than what -initdb had been told. Under these conditions, any use of -plperl was likely to lead to corrupt indexes. You might need -REINDEX to fix existing indexes on -textual columns if this has happened to you. - -Fix longstanding bug in strpos() and regular expression -handling in certain rarely used Asian multi-byte character sets (Tatsuo) - - -Fix bug in /contrib/pgcrypto gen_salt, -which caused it not to use all available salt space for MD5 and -XDES algorithms (Marko Kreen, Solar Designer) -Salts for Blowfish and standard DES are unaffected. - -Fix /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) - - - - - - - - Release 7.4.10 - - - Release date - 2005-12-12 - - - - This release contains a variety of fixes from 7.4.9. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.10 - - - 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. - - - - - Changes - - - -Fix race condition in transaction log management -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. - - -Prevent failure if client sends Bind protocol message -when current transaction is already aborted - -/contrib/ltree fixes (Teodor) - -AIX and HPUX compile fixes (Tom) - -Fix longstanding planning error for outer joins -This bug sometimes caused a bogus error RIGHT JOIN is -only supported with merge-joinable join conditions. - -Prevent core dump in pg_autovacuum when a -table has been dropped - - - - - - - Release 7.4.9 - - - Release date - 2005-10-04 - - - - This release contains a variety of fixes from 7.4.8. - For information about new features in the 7.4 major release, see - . - - - - Migration to Version 7.4.9 - - - 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. - - - - - Changes - - -Fix error that allowed VACUUM to remove -ctid chains too soon, and add more checking in code that follows -ctid links -This fixes a long-standing problem that could cause crashes in very rare -circumstances. -Fix CHAR() to properly pad spaces to the specified -length when using a multiple-byte character set (Yoshiyuki Asaba) -In prior releases, the padding of CHAR() was incorrect -because it only padded to the specified number of bytes without -considering how many characters were stored. -Fix the sense of the test for read-only transaction -in COPY -The code formerly prohibited COPY TO, where it should -prohibit COPY FROM. - -Fix planning problem with outer-join ON clauses that reference -only the inner-side relation -Further fixes for x FULL JOIN y ON true corner -cases -Make array_in and array_recv more -paranoid about validating their OID parameter -Fix missing rows in queries like UPDATE a=... WHERE -a... with GiST index on column a -Improve robustness of datetime parsing -Improve checking for partially-written WAL -pages -Improve robustness of signal handling when SSL is -enabled -Don't try to open more than max_files_per_process -files during postmaster startup -Various memory leakage fixes -Various portability improvements -Fix PL/PgSQL to handle var := var correctly when -the variable is of pass-by-reference type -Update contrib/tsearch2 to use current Snowball -code - - - - - - - Release 7.4.8 - - - Release date - 2005-05-09 - - - - 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 - . - - - - Migration to Version 7.4.8 - - - 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. - - - - 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.) - - - - The lesser problem is that the contrib/tsearch2 module - creates several functions that are misdeclared to return - internal when they do not accept internal arguments. - This breaks type safety for all functions using internal - arguments. - - - - 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. - - - - If you wish not to do an initdb, perform the following procedures instead. - As the database superuser, do: - - -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; - - - Next, if you have installed contrib/tsearch2, do: - - -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; - - - If this command fails with a message like function - "dex_init(text)" does not exist, then either tsearch2 - is not installed in this database, or you already did the update. - - - - The above procedures must be carried out in each database - of an installation, including template1, and ideally - including template0 as well. If you do not fix the - template databases then any subsequently created databases will contain - the same errors. template1 can be fixed in the same way - as any other database, but fixing template0 requires - additional steps. First, from any database issue: - -UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; - - Next connect to template0 and perform the above repair - procedures. Finally, do: - --- re-freeze template0: -VACUUM FREEZE; --- and protect it against future alterations: -UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - - - - - - Changes - - -Change encoding function signature to prevent -misuse -Change contrib/tsearch2 to avoid unsafe use of -INTERNAL function results -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 -This is an extremely serious bug since it could lead to apparent -data inconsistencies being briefly visible to applications. -Repair race condition between relation extension and -VACUUM -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. - -Fix comparisons of TIME WITH TIME ZONE values - -The comparison code was wrong in the case where the ---enable-integer-datetimes configuration switch had been used. -NOTE: if you have an index on a TIME WITH TIME ZONE column, -it will need to be REINDEXed after installing this update, because -the fix corrects the sort order of column values. - -Fix EXTRACT(EPOCH) for -TIME WITH TIME ZONE values -Fix mis-display of negative fractional seconds in -INTERVAL values - -This error only occurred when the ---enable-integer-datetimes configuration switch had been used. - -Ensure operations done during backend shutdown are counted by -statistics collector - -This is expected to resolve reports of 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. - -Additional buffer overrun checks in plpgsql -(Neil) -Fix pg_dump to dump trigger names containing % -correctly (Neil) -Fix contrib/pgcrypto for newer OpenSSL builds -(Marko Kreen) -Still more 64-bit fixes for -contrib/intagg -Prevent incorrect optimization of functions returning -RECORD -Prevent to_char(interval) from dumping core for -month-related formats -Prevent crash on COALESCE(NULL,NULL) -Fix array_map to call PL functions correctly -Fix permission checking in ALTER DATABASE RENAME -Fix ALTER LANGUAGE RENAME -Make RemoveFromWaitQueue clean up after itself - -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. - -Fix problem with untyped parameter appearing in -INSERT ... SELECT -Fix CLUSTER failure after -ALTER TABLE SET WITHOUT OIDS - - - - - - - Release 7.4.7 - - - Release date - 2005-01-31 - - - - 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 - . - - - - Migration to Version 7.4.7 - - - A dump/restore is not required for those running 7.4.X. - - - - - Changes - - -Disallow LOAD to non-superusers - -On platforms that will automatically execute initialization functions of a -shared library (this includes at least Windows and ELF-based Unixen), -LOAD can be used to make the server execute arbitrary code. -Thanks to NGS Software for reporting this. -Check that creator of an aggregate function has the right to -execute the specified transition functions - -This oversight made it possible to bypass denial of EXECUTE -permission on a function. -Fix security and 64-bit issues in -contrib/intagg -Add needed STRICT marking to some contrib functions (Kris -Jurka) -Avoid buffer overrun when plpgsql cursor declaration has too -many parameters (Neil) -Fix planning error for FULL and RIGHT outer joins - -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. - -Fix plperl for quote marks in tuple fields -Fix display of negative intervals in SQL and GERMAN -datestyles -Make age(timestamptz) do calculation in local timezone not -GMT - - - - - - - Release 7.4.6 - - - Release date - 2004-10-22 - - - - This release contains a variety of fixes from 7.4.5. - For information about new features in the 7.4 major release, see - . - - - - - Migration to Version 7.4.6 - - - A dump/restore is not required for those running 7.4.X. - - - - - Changes - - -Repair possible failure to update hint bits on disk - -Under rare circumstances this oversight could lead to -could not access transaction status failures, which qualifies -it as a potential-data-loss bug. - -Ensure that hashed outer join does not miss tuples - -Very large left joins using a hash join plan could fail to output unmatched -left-side rows given just the right data distribution. - -Disallow running pg_ctl as root - -This is to guard against any possible security issues. - -Avoid using temp files in /tmp in make_oidjoins_check - -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. - -Prevent forced backend shutdown from re-emitting prior command -result - -In rare cases, a client might think that its last command had succeeded when -it really had been aborted by forced database shutdown. - -Repair bug in pg_stat_get_backend_idset - -This could lead to misbehavior in some of the system-statistics views. - -Fix small memory leak in postmaster -Fix expected both swapped tables to have TOAST -tables bug - -This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN. - -Prevent pg_ctl restart from adding -D multiple times -Fix problem with NULL values in GiST indexes -:: is no longer interpreted as a variable in an -ECPG prepare statement - - - - - - - Release 7.4.5 - - - Release date - 2004-08-18 - - - - This release contains one serious bug fix over 7.4.4. - For information about new features in the 7.4 major release, see - . - - - - - Migration to Version 7.4.5 - - - A dump/restore is not required for those running 7.4.X. - - - - - Changes - - -Repair possible crash during concurrent B-tree index insertions - -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. - - - - - - - - Release 7.4.4 - - - Release date - 2004-08-16 - - - - This release contains a variety of fixes from 7.4.3. - For information about new features in the 7.4 major release, see - . - - - - - Migration to Version 7.4.4 - - - A dump/restore is not required for those running 7.4.X. - - - - - Changes - - -Prevent possible loss of committed transactions during crash - -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 PostgreSQL 7.1. - -Check HAVING restriction before evaluating result list of an -aggregate plan -Avoid crash when session's current user ID is deleted -Fix hashed crosstab for zero-rows case (Joe) -Force cache update after renaming a column in a foreign key -Pretty-print UNION queries correctly -Make psql handle \r\n newlines properly in COPY IN -pg_dump handled ACLs with grant options incorrectly -Fix thread support for OS X and Solaris -Updated JDBC driver (build 215) with various fixes -ECPG fixes -Translation updates (various contributors) - - - - - - - Release 7.4.3 - - - Release date - 2004-06-14 - - - - This release contains a variety of fixes from 7.4.2. - For information about new features in the 7.4 major release, see - . - - - - - Migration to Version 7.4.3 - - - A dump/restore is not required for those running 7.4.X. - - - - - Changes - - -Fix temporary memory leak when using non-hashed aggregates (Tom) -ECPG fixes, including some for Informix compatibility (Michael) -Fixes for compiling with thread-safety, particularly Solaris (Bruce) -Fix error in COPY IN termination when using the old network protocol (ljb) -Several important fixes in pg_autovacuum, including fixes for -large tables, unsigned oids, stability, temp tables, and debug mode -(Matthew T. O'Connor) -Fix problem with reading tar-format dumps on NetBSD and BSD/OS (Bruce) -Several JDBC fixes -Fix ALTER SEQUENCE RESTART where last_value equals the restart value (Tom) -Repair failure to recalculate nested sub-selects (Tom) -Fix problems with non-constant expressions in LIMIT/OFFSET -Support FULL JOIN with no join clause, such as X FULL JOIN Y ON TRUE (Tom) -Fix another zero-column table bug (Tom) -Improve handling of non-qualified identifiers in GROUP BY clauses in sub-selects (Tom) - -Select-list aliases within the sub-select will now take precedence over -names from outer query levels. - -Do not generate NATURAL CROSS JOIN when decompiling rules (Tom) -Add checks for invalid field length in binary COPY (Tom) - - This fixes a difficult-to-exploit security hole. - -Avoid locking conflict between ANALYZE and LISTEN/NOTIFY -Numerous translation updates (various contributors) - - - - - - - Release 7.4.2 - - - Release date - 2004-03-08 - - - - This release contains a variety of fixes from 7.4.1. - For information about new features in the 7.4 major release, see - . - - - - - Migration to Version 7.4.2 - - - 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. - - - - The more severe of the two errors is that data type anyarray - has the wrong alignment label; this is a problem because the - pg_statistic system catalog uses anyarray - columns. The mislabeling can cause planner misestimations and even - crashes when planning queries that involve WHERE clauses on - double-aligned columns (such as float8 and timestamp). - It is strongly recommended that all installations repair this error, - either by initdb or by following the manual repair procedure given - below. - - - - The lesser error is that the system view pg_settings - ought to be marked as having public update access, to allow - UPDATE pg_settings to be used as a substitute for - SET. This can also be fixed either by initdb or manually, - but it is not necessary to fix unless you want to use UPDATE - pg_settings. - - - - If you wish not to do an initdb, the following procedure will work - for fixing pg_statistic. As the database superuser, - do: - - --- 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; - - - 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 pg_statistic. - - - - To repair the pg_settings error, simply do: - -GRANT SELECT, UPDATE ON pg_settings TO PUBLIC; - - - - - The above procedures must be carried out in each database - of an installation, including template1, and ideally - including template0 as well. If you do not fix the - template databases then any subsequently created databases will contain - the same errors. template1 can be fixed in the same way - as any other database, but fixing template0 requires - additional steps. First, from any database issue: - -UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; - - Next connect to template0 and perform the above repair - procedures. Finally, do: - --- re-freeze template0: -VACUUM FREEZE; --- and protect it against future alterations: -UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - - - - - - Changes - - - Release 7.4.2 incorporates all the fixes included in release 7.3.6, - plus the following fixes: - - - -Fix pg_statistics alignment bug that could crash optimizer -See above for details about this problem. -Allow non-super users to update pg_settings -Fix several optimizer bugs, most of which led to -variable not found in subplan target lists errors -Avoid out-of-memory failure during startup of large multiple -index scan -Fix multibyte problem that could lead to out of -memory error during COPY IN -Fix problems with SELECT INTO / CREATE -TABLE AS from tables without OIDs -Fix problems with alter_table regression test -during parallel testing -Fix problems with hitting open file limit, especially on OS X (Tom) -Partial fix for Turkish-locale issues -initdb will succeed now in Turkish locale, but there are still some -inconveniences associated with the i/I problem. -Make pg_dump set client encoding on restore -Other minor pg_dump fixes -Allow ecpg to again use C keywords as column names (Michael) -Added ecpg WHENEVER NOT_FOUND to -SELECT/INSERT/UPDATE/DELETE (Michael) -Fix ecpg crash for queries calling set-returning functions (Michael) -Various other ecpg fixes (Michael) -Fixes for Borland compiler -Thread build improvements (Bruce) -Various other build fixes -Various JDBC fixes - - - - - - - Release 7.4.1 - - - Release date - 2003-12-22 - - - - This release contains a variety of fixes from 7.4. - For information about new features in the 7.4 major release, see - . - - - - - Migration to Version 7.4.1 - - - A dump/restore is not required for those - running 7.4. - - - - 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 initdb, or by running the following - sequence of SQL commands in each database (ideally including - template1) as a superuser in - psql, after installing the new release: - -DROP SCHEMA information_schema CASCADE; -\i /usr/local/pgsql/share/information_schema.sql - - Substitute your installation path in the second command. - - - - - - Changes - - -Fixed bug in CREATE SCHEMA parsing in ECPG (Michael) -Fix compile error when and are used together (Peter) -Fix for subqueries that used hash joins (Tom) - - Certain subqueries that used hash joins would crash because of - improperly shared structures. - -Fix free space map compaction bug (Tom) - - This fixes a bug where compaction of the free space map could lead - to a database server shutdown. - - -Fix for Borland compiler build of libpq (Bruce) -Fix netmask() and hostmask() to return the maximum-length masklen (Tom) - - Fix these functions to return values consistent with pre-7.4 - releases. - - -Several contrib/pg_autovacuum fixes - - Fixes include improper variable initialization, missing vacuum after - TRUNCATE, and duration computation overflow for long vacuums. - - -Allow compile of contrib/cube under Cygwin (Jason Tishler) -Fix Solaris use of password file when no passwords are defined (Tom) - - Fix crash on Solaris caused by use of any type of password - authentication when no passwords were defined. - - -JDBC fix for thread problems, other fixes -Fix for bytea index lookups (Joe) -Fix information schema for bit data types (Peter) -Force zero_damaged_pages to be on during recovery from WAL -Prevent some obscure cases of variable not in subplan target lists -Make PQescapeBytea and byteaout consistent with each other (Joe) -Escape bytea output for bytes > 0x7e(Joe) - - If different client encodings are used for bytea output and input, it - is possible for bytea values to be corrupted by the differing - encodings. This fix escapes all bytes that might be affected. - - -Added missing SPI_finish() calls to dblink's get_tuple_of_interest() (Joe) -New Czech FAQ -Fix information schema view constraint_column_usage for foreign keys (Peter) -ECPG fixes (Michael) -Fix bug with multiple IN subqueries and joins in the subqueries (Tom) -Allow COUNT('x') to work (Tom) -Install ECPG include files for Informix compatibility into separate directory (Peter) - - 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. - - -Fix SSL memory leak (Neil) - - This release fixes a bug in 7.4 where SSL didn't free all memory it allocated. - - -Prevent pg_service.conf from using service name as default dbname (Bruce) -Fix local ident authentication on FreeBSD (Tom) - - - - - - - Release 7.4 - - - Release date - 2003-11-17 - - - - Overview - - - Major changes in this release: - - - - - - IN / NOT IN subqueries are - now much more efficient - - - - - In previous releases, IN/NOT - IN 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 - IN will now usually be as fast as or faster - than an equivalent EXISTS subquery; this - reverses the conventional wisdom that applied to previous - releases. - - - - - - - Improved GROUP BY processing by using hash buckets - - - - - In previous releases, rows to be grouped had to be sorted - first. The 7.4 code can do GROUP BY - 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 sort_mem. - - - - - - - New multikey hash join capability - - - - - In previous releases, hash joins could only occur on single - keys. This release allows multicolumn hash joins. - - - - - - - Queries using the explicit JOIN syntax are - now better optimized - - - - - Prior releases evaluated queries using the explicit - JOIN 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. - - - - - - - Faster and more powerful regular expression code - - - - - 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. - - - - - - - Function-inlining for simple SQL functions - - - - - 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. - - - - - - - Full support for IPv6 connections and IPv6 address data types - - - - - 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. - - - - - - - Major improvements in SSL performance and reliability - - - - - Several people very familiar with the SSL API have overhauled - our SSL code to improve SSL key negotiation and error - recovery. - - - - - - - Make free space map efficiently reuse empty index pages, - and other free space management improvements - - - - - 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, VACUUM records empty index - pages and allows them to be reused for any future index rows. - - - - - - - SQL-standard information schema - - - - - The information schema provides a standardized and stable way - to access information about the schema objects defined in a - database. - - - - - - - Cursors conform more closely to the SQL standard - - - - - The commands FETCH and - MOVE have been overhauled to conform more - closely to the SQL standard. - - - - - - - Cursors can exist outside transactions - - - - - These cursors are also called holdable cursors. - - - - - - - New client-to-server protocol - - - - - 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 COPY failures. The older - protocol is still supported by both server and clients. - - - - - - - libpq and - ECPG applications are now fully - thread-safe - - - - - While previous libpq releases - already supported threads, this release improves thread safety - by fixing some non-thread-safe code that was used during - database connection startup. The configure - option must be used to - enable this feature. - - - - - - - New version of full-text indexing - - - - - A new full-text indexing suite is available in - contrib/tsearch2. - - - - - - - New autovacuum tool - - - - - The new autovacuum tool in - contrib/autovacuum monitors the database - statistics tables for - INSERT/UPDATE/DELETE - activity and automatically vacuums tables when needed. - - - - - - - Array handling has been improved and moved into the server core - - - - - Many array limitations have been removed, and arrays behave - more like fully-supported data types. - - - - - - - - - Migration to Version 7.4 - - - A dump/restore using pg_dump is - required for those wishing to migrate data from any previous - release. - - - - Observe the following incompatibilities: - - - - - - 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. - - - - - - 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. - - - - - - Inner joins using the explicit JOIN syntax - might behave differently because they are now better - optimized. - - - - - - A number of server configuration parameters have been renamed - for clarity, primarily those related to - logging. - - - - - - FETCH 0 or MOVE 0 now - does nothing. In prior releases, FETCH 0 - would fetch all remaining rows, and MOVE 0 - would move to the end of the cursor. - - - - - - FETCH and MOVE 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. - - - - - - COPY 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 \r and - \n instead. - - - - - - Trailing spaces are now trimmed when converting from type - char(n) to - varchar(n) or text. - This is what most people always expected to happen anyway. - - - - - - The data type float(p) now - measures p in binary digits, not decimal - digits. The new behavior follows the SQL standard. - - - - - - Ambiguous date values now must match the ordering specified by - the datestyle setting. In prior releases, a - date specification of 10/20/03 was interpreted as a - date in October even if 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 - datestyle. - - - - - - The functions oidrand, - oidsrand, and - userfntest have been removed. These - functions were determined to be no longer useful. - - - - - - String literals specifying time-varying date/time values, such - as 'now' or 'today' 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 - now(), current_timestamp, or - current_date should be used instead. - - - - In previous releases, there was special code so that strings - such as 'now' were interpreted at - 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 now() or current_timestamp. These - will work in all situations. - - - - - - The dollar sign ($) 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 ($n) are written - adjacent to operators. - - - - - - - - Changes - - - Below you will find a detailed account of the changes between - release 7.4 and the previous major release. - - - - Server Operation Changes - - - - - Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, - Bruce, Tom, Kurt Roeckx, Andrew Dunstan) - - - - - - Fix SSL to handle errors cleanly (Nathan Mueller) - - - In prior releases, certain SSL API error reports were not - handled correctly. This release fixes those problems. - - - - - - SSL protocol security and performance improvements (Sean Chittenden) - - - SSL key renegotiation was happening too frequently, causing poor - SSL performance. Also, initial key handling was improved. - - - - - - Print lock information when a deadlock is detected (Tom) - - - This allows easier debugging of deadlock situations. - - - - - - Update /tmp socket modification times - regularly to avoid their removal (Tom) - - - This should help prevent /tmp directory - cleaner administration scripts from removing server socket - files. - - - - Enable PAM for Mac OS X (Aaron Hillegass) - - - Make B-tree indexes fully WAL-safe (Tom) - - 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. - - - - Allow B-tree index compaction and empty page reuse (Tom) - - - - Fix inconsistent index lookups during split of first root page (Tom) - - - 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. - - - - Improve free space map allocation logic (Tom) - - - Preserve free space information between server restarts (Tom) - - 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. - - - - Add start time to pg_stat_activity (Neil) - New code to detect corrupt disk pages; erase with zero_damaged_pages (Tom) - New client/server protocol: faster, no username length limit, allow clean exit from COPY (Tom) - Add transaction status, table ID, column ID to client/server protocol (Tom) - Add binary I/O to client/server protocol (Tom) - Remove autocommit server setting; move to client applications (Tom) - New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter) - - - - - Performance Improvements - - - Add hashing for GROUP BY aggregates (Tom) - Make nested-loop joins be smarter about multicolumn indexes (Tom) - Allow multikey hash joins (Tom) - Improve constant folding (Tom) - Add ability to inline simple SQL functions (Tom) - - - Reduce memory usage for queries using complex functions (Tom) - - 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. - - - - - Improve GEQO optimizer performance (Tom) - - This release fixes several inefficiencies in the way the GEQO optimizer - manages potential query paths. - - - - - - Allow IN/NOT IN to be handled via hash - tables (Tom) - - - - - - Improve NOT IN (subquery) - performance (Tom) - - - - - - Allow most IN subqueries to be processed as - joins (Tom) - - - - - - Pattern matching operations can use indexes regardless of - locale (Peter) - - - There is no way for non-ASCII locales to use the standard - indexes for LIKE comparisons. This release - adds a way to create a special index for - LIKE. - - - - - Allow the postmaster to preload libraries using preload_libraries (Joe) - - 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. - - - - - - Improve optimizer cost computations, particularly for subqueries (Tom) - - - - - - Avoid sort when subquery ORDER BY matches upper query (Tom) - - - - - - Deduce that WHERE a.x = b.y AND b.y = 42 also - means a.x = 42 (Tom) - - - - - - Allow hash/merge joins on complex joins (Tom) - - - - - - Allow hash joins for more data types (Tom) - - - - - - Allow join optimization of explicit inner joins, disable with - join_collapse_limit (Tom) - - - - - - Add parameter from_collapse_limit to control - conversion of subqueries to joins (Tom) - - - - - - Use faster and more powerful regular expression code from Tcl - (Henry Spencer, Tom) - - - - - - Use bit-mapped relation sets in the optimizer (Tom) - - - - - Improve connection startup time (Tom) - - The new client/server protocol requires fewer network packets to - start a database session. - - - - - - Improve trigger/constraint performance (Stephan) - - - - - - Improve speed of col IN (const, const, const, ...) (Tom) - - - - - - Fix hash indexes which were broken in rare cases (Tom) - - - - Improve hash index concurrency and speed (Tom) - - 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. - - - - - Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul) - - Certain CPU's perform faster data copies when addresses are - 32-byte aligned. - - - - - Data type numeric reimplemented for better performance (Tom) - - numeric used to be stored in base 100. The new code - uses base 10000, for significantly better performance. - - - - - - - Server Configuration Changes - - - - Rename server parameter server_min_messages to log_min_messages (Bruce) - - This was done so most parameters that control the server logs - begin with log_. - - - - Rename show_*_stats to log_*_stats (Bruce) - Rename show_source_port to log_source_port (Bruce) - Rename hostname_lookup to log_hostname (Bruce) - - - Add checkpoint_warning to warn of excessive checkpointing (Bruce) - - 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. - - - - New read-only server parameters for localization (Tom) - - - - Change debug server log messages to output as DEBUG - rather than LOG (Bruce) - - - - - Prevent server log variables from being turned off by non-superusers (Bruce) - - This is a security feature so non-superusers cannot disable - logging that was enabled by the administrator. - - - - - - log_min_messages/client_min_messages now - controls debug_* output (Bruce) - - - This centralizes client debug information so all debug output - can be sent to either the client or server logs. - - - - - Add Mac OS X Rendezvous server support (Chris Campbell) - - This allows Mac OS X hosts to query the network for available - PostgreSQL servers. - - - - - - Add ability to print only slow statements using - log_min_duration_statement - (Christopher) - - - This is an often requested debugging feature that allows - administrators to see only slow queries in their server logs. - - - - - Allow pg_hba.conf to accept netmasks in CIDR format (Andrew Dunstan) - - This allows administrators to merge the host IP address and - netmask fields into a single CIDR field in pg_hba.conf. - - - - New read-only parameter is_superuser (Tom) - - - New parameter log_error_verbosity to control error detail (Tom) - - This works with the new error reporting feature to supply - additional error information like hints, file names and line - numbers. - - - - - postgres --describe-config now dumps server config variables (Aizaz Ahmed, Peter) - - This option is useful for administration tools that need to know - the configuration variable names and their minimums, maximums, - defaults, and descriptions. - - - - - - Add new columns in pg_settings: - context, type, source, - min_val, max_val (Joe) - - - - - - Make default shared_buffers 1000 and - max_connections 100, if possible (Tom) - - - Prior versions defaulted to 64 shared buffers so PostgreSQL - 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 - shared_buffers accordingly. - - - - - - New pg_hba.conf record type - hostnossl to prevent SSL connections (Jon - Jensen) - - - In prior releases, there was no way to prevent SSL connections - if both the client and server supported SSL. This option allows - that capability. - - - - - - Remove parameter geqo_random_seed - (Tom) - - - - - - Add server parameter regex_flavor to control regular expression processing (Tom) - - - - - - Make pg_ctl better handle nonstandard ports (Greg) - - - - - - - Query Changes - - - New SQL-standard information schema (Peter) - Add read-only transactions (Peter) - Print key name and value in foreign-key violation messages (Dmitry Tkach) - - - Allow users to see their own queries in pg_stat_activity (Kevin Brown) - - In prior releases, only the superuser could see query strings - using pg_stat_activity. Now ordinary users - can see their own query strings. - - - - - Fix aggregates in subqueries to match SQL standard (Tom) - - 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 - PostgreSQL releases did not handle - this fine point correctly. - - - - - Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews) - - By default, tables mentioned in the query are automatically - added to the FROM clause if they are not already - there. This is compatible with historic - POSTGRES behavior but is contrary to - the SQL standard. This option allows selecting - standard-compatible behavior. - - - - - Allow UPDATE ... SET col = DEFAULT (Rod) - - This allows UPDATE to set a column to its - declared default value. - - - - - Allow expressions to be used in LIMIT/OFFSET (Tom) - - In prior releases, LIMIT/OFFSET could - only use constants, not expressions. - - - - - Implement CREATE TABLE AS EXECUTE (Neil, Peter) - - - - - - Object Manipulation Changes - - - - Make CREATE SEQUENCE grammar more conforming to SQL:2003 (Neil) - - - - Add statement-level triggers (Neil) - - 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. - - - - - Add check constraints for domains (Rod) - - This greatly increases the usefulness of domains by allowing - them to use check constraints. - - - - - Add ALTER DOMAIN (Rod) - - This allows manipulation of existing domains. - - - - - Fix several zero-column table bugs (Tom) - - PostgreSQL supports zero-column tables. This fixes various bugs - that occur when using such tables. - - - - - Have ALTER TABLE ... ADD PRIMARY KEY add not-null constraint (Rod) - - In prior releases, ALTER TABLE ... ADD - PRIMARY would add a unique index, but not a not-null - constraint. That is fixed in this release. - - - - Add ALTER TABLE ... WITHOUT OIDS (Rod) - - This allows control over whether new and updated rows will have - an OID column. This is most useful for saving storage space. - - - - - - Add ALTER SEQUENCE to modify minimum, maximum, - increment, cache, cycle values (Rod) - - - - - Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera) - - This command is used by pg_dump to record the - cluster column for each table previously clustered. This - information is used by database-wide cluster to cluster all - previously clustered tables. - - - - Improve automatic type casting for domains (Rod, Tom) - Allow dollar signs in identifiers, except as first character (Tom) - Disallow dollar signs in operator names, so x=$1 works (Tom) - - - - Allow copying table schema using LIKE - subtable, also SQL:2003 - feature INCLUDING DEFAULTS (Rod) - - - - - - Add WITH GRANT OPTION clause to - GRANT (Peter) - - - This enabled GRANT to give other users the - ability to grant privileges on a object. - - - - - - - Utility Command Changes - - - - Add ON COMMIT clause to CREATE TABLE for temporary tables (Gavin) - - This adds the ability for a table to be dropped or all rows - deleted on transaction commit. - - - - - Allow cursors outside transactions using WITH HOLD (Neil) - - In previous releases, cursors were removed at the end of the - transaction that created them. Cursors can now be created with - the WITH HOLD option, which allows them to - continue to be accessed after the creating transaction has - committed. - - - - - FETCH 0 and MOVE 0 now do nothing (Bruce) - - In previous releases, FETCH 0 fetched all - remaining rows, and MOVE 0 moved to the end - of the cursor. - - - - - - Cause FETCH and MOVE to - return the number of rows fetched/moved, or zero if at the - beginning/end of cursor, per SQL standard (Bruce) - - - In prior releases, the row count returned by - FETCH and MOVE did not - accurately reflect the number of rows processed. - - - - - Properly handle SCROLL with cursors, or - report an error (Neil) - - Allowing random access (both forward and backward scrolling) to - some kinds of queries cannot be done without some additional - work. If SCROLL is specified when the cursor - is created, this additional work will be performed. Furthermore, - if the cursor has been created with NO SCROLL, - no random access is allowed. - - - - - - Implement SQL-compatible options FIRST, - LAST, ABSOLUTE n, - RELATIVE n for - FETCH and MOVE (Tom) - - - - - Allow EXPLAIN on DECLARE CURSOR (Tom) - - - - Allow CLUSTER to use index marked as pre-clustered by default (Alvaro Herrera) - - - - Allow CLUSTER to cluster all tables (Alvaro Herrera) - - This allows all previously clustered tables in a database to be - reclustered with a single command. - - - - Prevent CLUSTER on partial indexes (Tom) - - Allow DOS and Mac line-endings in COPY files (Bruce) - - - - Disallow literal carriage return as a data value, - backslash-carriage-return and \r are still allowed - (Bruce) - - - - - COPY changes (binary, \.) (Tom) - - - - Recover from COPY failure cleanly (Tom) - - - - Prevent possible memory leaks in COPY (Tom) - - - - Make TRUNCATE transaction-safe (Rod) - - TRUNCATE can now be used inside a - transaction. If the transaction aborts, the changes made by the - TRUNCATE are automatically rolled back. - - - - - - Allow prepare/bind of utility commands like - FETCH and EXPLAIN (Tom) - - - - - Add EXPLAIN EXECUTE (Neil) - - - - Improve VACUUM performance on indexes by reducing WAL traffic (Tom) - - - - Functional indexes have been generalized into indexes on expressions (Tom) - - 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. - - - - - - Have SHOW TRANSACTION ISOLATION match input - to SET TRANSACTION ISOLATION - (Tom) - - - - - - Have COMMENT ON DATABASE on nonlocal - database generate a warning, rather than an error (Rod) - - - - Database comments are stored in database-local tables so - comments on a database have to be stored in each database. - - - - - - Improve reliability of LISTEN/NOTIFY (Tom) - - - - - Allow REINDEX to reliably reindex nonshared system catalog indexes (Tom) - - 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 - pg_database, pg_shadow, and - pg_group. - - - - - - - Data Type and Function Changes - - - - - New server parameter extra_float_digits to - control precision display of floating-point numbers (Pedro - Ferreira, Tom) - - - This controls output precision which was causing regression - testing problems. - - - - Allow +1300 as a numeric time-zone specifier, for FJST (Tom) - - - - Remove rarely used functions oidrand, - oidsrand, and userfntest functions - (Neil) - - - - - Add md5() function to main server, already in contrib/pgcrypto (Joe) - - An MD5 function was frequently requested. For more complex - encryption capabilities, use - contrib/pgcrypto. - - - - Increase date range of timestamp (John Cochran) - - - - Change EXTRACT(EPOCH FROM timestamp) so - timestamp without time zone is assumed to be in - local time, not GMT (Tom) - - - - Trap division by zero in case the operating system doesn't prevent it (Tom) - Change the numeric data type internally to base 10000 (Tom) - New hostmask() function (Greg Wickham) - Fixes for to_char() and to_timestamp() (Karel) - - - - Allow functions that can take any argument data type and return - any data type, using anyelement and - anyarray (Joe) - - - This allows the creation of functions that can work with any - data type. - - - - - - Arrays can now be specified as ARRAY[1,2,3], - ARRAY[['a','b'],['c','d']], or - ARRAY[ARRAY[ARRAY[2]]] (Joe) - - - - - - Allow proper comparisons for arrays, including ORDER - BY and DISTINCT support - (Joe) - - - - Allow indexes on array columns (Joe) - Allow array concatenation with || (Joe) - - - - Allow WHERE qualification - expr op ANY/SOME/ALL - (array_expr) (Joe) - - - This allows arrays to behave like a list of values, for purposes - like SELECT * FROM tab WHERE col IN - (array_val). - - - - - - New array functions array_append, - array_cat, array_lower, - array_prepend, array_to_string, - array_upper, string_to_array (Joe) - - - - Allow user defined aggregates to use polymorphic functions (Joe) - Allow assignments to empty arrays (Joe) - - - - Allow 60 in seconds fields of time, - timestamp, and interval input values - (Tom) - - - Sixty-second values are needed for leap seconds. - - - - Allow cidr data type to be cast to text (Tom) - - Disallow invalid time zone names in SET TIMEZONE - - - - Trim trailing spaces when char is cast to - varchar or text (Tom) - - - - - - Make float(p) measure the precision - p in binary digits, not decimal digits - (Tom) - - - - - Add IPv6 support to the inet and cidr data types (Michael Graff) - - - - Add family() function to report whether address is IPv4 or IPv6 (Michael Graff) - - - - - Have SHOW datestyle generate output similar - to that used by SET datestyle (Tom) - - - - - - Make EXTRACT(TIMEZONE) and SET/SHOW - TIME ZONE follow the SQL convention for the sign of - time zone offsets, i.e., positive is east from UTC (Tom) - - - - - Fix date_trunc('quarter', ...) (Böjthe Zoltán) - - Prior releases returned an incorrect value for this function call. - - - - - Make initcap() more compatible with Oracle (Mike Nolan) - - initcap() now uppercases a letter appearing - after any non-alphanumeric character, rather than only after - whitespace. - - - - - Allow only datestyle field order for date values not in ISO-8601 format (Greg) - - - - - Add new datestyle values MDY, - DMY, and YMD to set input field order; - honor US and European for backward - compatibility (Tom) - - - - - - String literals like 'now' or - 'today' will no longer work as a column - default. Use functions such as now(), - current_timestamp instead. (change - required for prepared statements) (Tom) - - - - - Treat NaN as larger than any other value in min()/max() (Tom) - - NaN was already sorted after ordinary numeric values for most - purposes, but min() and max() didn't - get this right. - - - - - Prevent interval from suppressing :00 - seconds display - - - - - New functions pg_get_triggerdef(prettyprint) - and pg_conversion_is_visible() (Christopher) - - - - - Allow time to be specified as 040506 or 0405 (Tom) - - - - - Input date order must now be YYYY-MM-DD (with 4-digit year) or - match datestyle - - - - - - Make pg_get_constraintdef support - unique, primary-key, and check constraints (Christopher) - - - - - - - Server-Side Language Changes - - - - - Prevent PL/pgSQL crash when RETURN NEXT is - used on a zero-row record variable (Tom) - - - - - - Make PL/Python's spi_execute interface - handle null values properly (Andrew Bosma) - - - - - Allow PL/pgSQL to declare variables of composite types without %ROWTYPE (Tom) - - - - Fix PL/Python's _quote() function to handle big integers - - - - Make PL/Python an untrusted language, now called plpythonu (Kevin Jacobs, Tom) - - 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. - - - - - Allow polymorphic PL/pgSQL functions (Joe, Tom) - - - - Allow polymorphic SQL functions (Joe) - - - - - Improved compiled function caching mechanism in PL/pgSQL with - full support for polymorphism (Joe) - - - - - - Add new parameter $0 in PL/pgSQL representing the - function's actual return type (Joe) - - - - - - Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom) - - - - - - Fixed PL/Tcl's spi_prepare to accept fully - qualified type names in the parameter type list - (Jan) - - - - - - - psql Changes - - - - Add \pset pager always to always use pager (Greg) - - 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. - - - - Improve tab completion (Rod, Ross Reedstrom, Ian Barwick) - Reorder \? help into groupings (Harald Armin Massa, Bruce) - Add backslash commands for listing schemas, casts, and conversions (Christopher) - - - - \encoding now changes based on the server parameter - client_encoding (Tom) - - - In previous versions, \encoding was not aware - of encoding changes made using SET - client_encoding. - - - - - Save editor buffer into readline history (Ross) - - When \e is used to edit a query, the result is saved - in the readline history for retrieval using the up arrow. - - - - Improve \d display (Christopher) - Enhance HTML mode to be more standards-conforming (Greg) - - - New \set AUTOCOMMIT off capability (Tom) - - This takes the place of the removed server parameter autocommit. - - - - - New \set VERBOSITY to control error detail (Tom) - - This controls the new error reporting details. - - - - New prompt escape sequence %x to show transaction status (Tom) - Long options for psql are now available on all platforms - - - - - pg_dump Changes - - - Multiple pg_dump fixes, including tar format and large objects - Allow pg_dump to dump specific schemas (Neil) - - - Make pg_dump preserve column storage characteristics (Christopher) - - This preserves ALTER TABLE ... SET STORAGE information. - - - - Make pg_dump preserve CLUSTER characteristics (Christopher) - - - - Have pg_dumpall use GRANT/REVOKE to dump database-level privileges (Tom) - - - - - - Allow pg_dumpall to support the options - - - Prevent pg_dump from lowercasing identifiers specified on the command line (Tom) - - - - pg_dump options - and now do nothing, all dumps - use SET SESSION AUTHORIZATION - - - pg_dump no longer reconnects to switch users, but instead always - uses SET SESSION AUTHORIZATION. This will - reduce password prompting during restores. - - - - - Long options for pg_dump are now available on all platforms - - PostgreSQL now includes its own - long-option processing routines. - - - - - - - libpq Changes - - - - - Add function PQfreemem for freeing memory on - Windows, suggested for NOTIFY (Bruce) - - - Windows requires that memory allocated in a library be freed by - a function in the same library, hence - free() doesn't work for freeing memory - allocated by libpq. PQfreemem is the proper - way to free libpq memory, especially on Windows, and is - recommended for other platforms as well. - - - - - Document service capability, and add sample file (Bruce) - - This allows clients to look up connection information in a - central file on the client machine. - - - - - - Make PQsetdbLogin have the same defaults as - PQconnectdb (Tom) - - - - Allow libpq to cleanly fail when result sets are too large (Tom) - - - - Improve performance of function PQunescapeBytea (Ben Lamb) - - - - - - Allow thread-safe libpq with configure - option (Lee Kindness, - Philip Yarra) - - - - - - Allow function pqInternalNotice to accept a - format string and arguments instead of just a preformatted - message (Tom, Sean Chittenden) - - - - - - Control SSL negotiation with sslmode values - disable, allow, - prefer, and require (Jon - Jensen) - - - - - Allow new error codes and levels of text (Tom) - - - - Allow access to the underlying table and column of a query result (Tom) - - This is helpful for query-builder applications that want to know - the underlying table and column names associated with a specific - result set. - - - - Allow access to the current transaction status (Tom) - Add ability to pass binary data directly to the server (Tom) - - - - Add function PQexecPrepared and - PQsendQueryPrepared functions which perform - bind/execute of previously prepared statements (Tom) - - - - - - - JDBC Changes - - - Allow setNull on updateable result sets - Allow executeBatch on a prepared statement (Barry) - Support SSL connections (Barry) - Handle schema names in result sets (Paul Sorenson) - Add refcursor support (Nic Ferrier) - - - - - Miscellaneous Interface Changes - - - - Prevent possible memory leak or core dump during libpgtcl shutdown (Tom) - - - Add Informix compatibility to ECPG (Michael) - - This allows ECPG to process embedded C programs that were - written using certain Informix extensions. - - - - - Add type decimal to ECPG that is fixed length, for Informix (Michael) - - - - - Allow thread-safe embedded SQL programs with - configure option - (Lee Kindness, Bruce) - - - This allows multiple threads to access the database at the same - time. - - - - - Moved Python client PyGreSQL to (Marc) - - - - - - Source Code Changes - - - Prevent need for separate platform geometry regression result files (Tom) - Improved PPC locking primitive (Reinhard Max) - New function palloc0 to allocate and clear memory (Bruce) - Fix locking code for s390x CPU (64-bit) (Tom) - Allow OpenBSD to use local ident credentials (William Ahern) - Make query plan trees read-only to executor (Tom) - Add Darwin startup scripts (David Wheeler) - Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek) - Use our own version of getopt_long() if needed (Peter) - Convert administration scripts to C (Peter) - Bison >= 1.85 is now required to build the PostgreSQL grammar, if building from CVS - Merge documentation into one book (Peter) - Add Windows compatibility functions (Bruce) - Allow client interfaces to compile under MinGW (Bruce) - New ereport() function for error reporting (Tom) - Support Intel compiler on Linux (Peter) - Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil) - Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce) - - Remove option from configure - - This was no longer needed now that we have CREATE CONVERSION. - - - - Generate a compile error if spinlock code is not found (Bruce) - - Platforms without spinlock code will now fail to compile, rather - than silently using semaphores. This failure can be disabled - with a new configure option. - - - - - - - Contrib Changes - - - Change dbmirror license to BSD - Improve earthdistance (Bruno Wolff III) - Portability improvements to pgcrypto (Marko Kreen) - Prevent crash in xml (John Gray, Michael Richards) - Update oracle - Update mysql - Update cube (Bruno Wolff III) - Update earthdistance to use cube (Bruno Wolff III) - Update btree_gist (Oleg) - New tsearch2 full-text search module (Oleg, Teodor) - Add hash-based crosstab function to tablefuncs (Joe) - Add serial column to order connectby() siblings in tablefuncs (Nabil Sayegh,Joe) - Add named persistent connections to dblink (Shridhar Daithanka) - New pg_autovacuum allows automatic VACUUM (Matthew T. O'Connor) - Make pgbench honor environment variables PGHOST, PGPORT, PGUSER (Tatsuo) - Improve intarray (Teodor Sigaev) - Improve pgstattuple (Rod) - Fix bug in metaphone() in fuzzystrmatch - Improve adddepend (Rod) - Update spi/timetravel (Böjthe Zoltán) - Fix dbase - Remove array module because features now included by default (Joe) - - - - - - - Release 7.3.21 - - - Release date - 2008-01-07 - - - - This release contains a variety of fixes from 7.3.20, - including fixes for significant security issues. - - - - This is expected to be the last PostgreSQL release - in the 7.3.X series. Users are encouraged to update to a newer - release branch soon. - - - - Migration to Version 7.3.21 - - - 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. - - - - - - Changes - - - - - - Prevent functions in indexes from executing with the privileges of - the user running VACUUM, ANALYZE, etc (Tom) - - - - 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 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 VACUUM, ANALYZE, REINDEX, - and CLUSTER) to execute as the table owner rather than - the calling user, using the same privilege-switching mechanism already - used for SECURITY DEFINER functions. To prevent bypassing - this security measure, execution of SET SESSION - AUTHORIZATION and SET ROLE is now forbidden within a - SECURITY DEFINER context. (CVE-2007-6600) - - - - - - Require non-superusers who use /contrib/dblink to use only - password authentication, as a security measure (Joe) - - - - The fix that appeared for this in 7.3.20 was incomplete, as it plugged - the hole for only some dblink functions. (CVE-2007-6601, - CVE-2007-3278) - - - - - - Fix potential crash in translate() when using a multibyte - database encoding (Tom) - - - - - - Make contrib/tablefunc's crosstab() handle - NULL rowid as a category in its own right, rather than crashing (Joe) - - - - - - Require a specific version of Autoconf to be used - when re-generating the configure script (Peter) - - - - This affects developers and packagers only. The change was made - to prevent accidental use of untested combinations of - Autoconf and PostgreSQL versions. - You can remove the version check if you really want to use a - different Autoconf version, but it's - your responsibility whether the result works or not. - - - - - - - - - - Release 7.3.20 - - - Release date - 2007-09-17 - - - - This release contains fixes from 7.3.19. - - - - Migration to Version 7.3.20 - - - 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. - - - - - - Changes - - - - - - Prevent index corruption when a transaction inserts rows and - then aborts close to the end of a concurrent VACUUM - on the same table (Tom) - - - - - - Make CREATE DOMAIN ... DEFAULT NULL work properly (Tom) - - - - - - Fix crash when log_min_error_statement logging runs out - of memory (Tom) - - - - - - Require non-superusers who use /contrib/dblink to use only - password authentication, as a security measure (Joe) - - - - - - - - - - Release 7.3.19 - - - Release date - 2007-04-23 - - - - This release contains fixes from 7.3.18, - including a security fix. - - - - Migration to Version 7.3.19 - - - 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. - - - - - - Changes - - - - - - Support explicit placement of the temporary-table schema within - search_path, and disable searching it for functions - and operators (Tom) - - - This is needed to allow a security-definer function to set a - truly secure value of 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 CREATE FUNCTION for more information. - - - - - - Fix potential-data-corruption bug in how VACUUM FULL handles - UPDATE chains (Tom, Pavan Deolasee) - - - - - - - - - - Release 7.3.18 - - - Release date - 2007-02-05 - - - - This release contains a variety of fixes from 7.3.17, including - a security fix. - - - - Migration to Version 7.3.18 - - - 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. - - - - - - Changes - - - - - - Remove security vulnerability that allowed connected users - to read backend memory (Tom) - - - 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. - - - - - - Fix rare bug wherein btree index page splits could fail - due to choosing an infeasible split point (Heikki Linnakangas) - - - - - - Tighten security of multi-byte character processing for UTF8 sequences - over three bytes long (Tom) - - - - - - - - - - Release 7.3.17 - - - Release date - 2007-01-08 - - - - This release contains a variety of fixes from 7.3.16. - - - - Migration to Version 7.3.17 - - - 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. - - - - - - Changes - - - - - - to_number() and to_char(numeric) - are now STABLE, not IMMUTABLE, for - new initdb installs (Tom) - - - - This is because lc_numeric can potentially - change the output of these functions. - - - - - - Improve index usage of regular expressions that use parentheses (Tom) - - - - This improves psql \d performance also. - - - - - - - - - - Release 7.3.16 - - - Release date - 2006-10-16 - - - - This release contains a variety of fixes from 7.3.15. - - - - Migration to Version 7.3.16 - - - 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. - - - - - - Changes - - -Fix corner cases in pattern matching for - psql's \d commands -Fix index-corrupting bugs in /contrib/ltree - (Teodor) -Back-port 7.4 spinlock code to improve performance and support -64-bit architectures better -Fix SSL-related memory leak in libpq -Fix backslash escaping in /contrib/dbmirror -Adjust regression tests for recent changes in US DST laws - - - - - - - - Release 7.3.15 - - - Release date - 2006-05-23 - - - - This release contains a variety of fixes from 7.3.14, - including patches for extremely serious security issues. - - - - Migration to Version 7.3.15 - - - 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. - - - - 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 libpq's - PQescapeStringConn()) to perform string escaping, - rather than relying on ad hoc code to do it. - - - - - Changes - - -Change the server to reject invalidly-encoded multibyte -characters in all cases (Tatsuo, Tom) -While 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. - - -Reject unsafe uses of \' in string literals -As a server-side defense against SQL-injection attacks of the type -described in CVE-2006-2314, the server now only accepts '' and not -\' as a representation of ASCII single quote in SQL string -literals. By default, \' is rejected only when -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 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 -backslash_quote is in part to make it obvious that insecure -clients are insecure. - - -Modify libpq's string-escaping routines to be -aware of encoding considerations -This fixes libpq-using applications for the security -issues described in CVE-2006-2313 and CVE-2006-2314. -Applications that use multiple PostgreSQL connections -concurrently should migrate to PQescapeStringConn() and -PQescapeByteaConn() to ensure that escaping is done correctly -for the settings in use in each database connection. Applications that -do string escaping by hand should be modified to rely on library -routines instead. - - -Fix some incorrect encoding conversion functions -win1251_to_iso, alt_to_iso, -euc_tw_to_big5, euc_tw_to_mic, -mic_to_euc_tw were all broken to varying -extents. - - -Clean up stray remaining uses of \' in strings -(Bruce, Jan) - -Fix server to use custom DH SSL parameters correctly (Michael -Fuhr) - -Fix various minor memory leaks - - - - - - - Release 7.3.14 - - - Release date - 2006-02-14 - - - - This release contains a variety of fixes from 7.3.13. - - - - Migration to Version 7.3.14 - - - 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. - - - - - Changes - - - -Fix potential crash in SET -SESSION AUTHORIZATION (CVE-2006-0553) -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. - - -Fix bug with row visibility logic in self-inserted -rows (Tom) -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. - - -Fix race condition that could lead to file already -exists errors during pg_clog file creation -(Tom) - -Fix to allow restoring dumps that have cross-schema -references to custom operators (Tom) - -Portability fix for testing presence of finite -and isinf during configure (Tom) - - - - - - - - Release 7.3.13 - - - Release date - 2006-01-09 - - - - This release contains a variety of fixes from 7.3.12. - - - - Migration to Version 7.3.13 - - - 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 REINDEX indexes on textual - columns after updating, if you are affected by the locale or - plperl issues described below. - - - - - Changes - - - -Fix character string comparison for locales that consider -different character combinations as equal, such as Hungarian (Tom) -This might require REINDEX to fix existing indexes on -textual columns. - -Set locale environment variables during postmaster startup -to ensure that plperl won't change the locale later -This fixes a problem that occurred if the postmaster was -started with environment variables specifying a different locale than what -initdb had been told. Under these conditions, any use of -plperl was likely to lead to corrupt indexes. You might need -REINDEX to fix existing indexes on -textual columns if this has happened to you. - -Fix longstanding bug in strpos() and regular expression -handling in certain rarely used Asian multi-byte character sets (Tatsuo) - - -Fix bug in /contrib/pgcrypto gen_salt, -which caused it not to use all available salt space for MD5 and -XDES algorithms (Marko Kreen, Solar Designer) -Salts for Blowfish and standard DES are unaffected. - -Fix /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) - - - - - - - - Release 7.3.12 - - - Release date - 2005-12-12 - - - - This release contains a variety of fixes from 7.3.11. - - - - Migration to Version 7.3.12 - - - 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. - - - - - Changes - - - -Fix race condition in transaction log management -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. - - -/contrib/ltree fixes (Teodor) - -Fix longstanding planning error for outer joins -This bug sometimes caused a bogus error RIGHT JOIN is -only supported with merge-joinable join conditions. - -Prevent core dump in pg_autovacuum when a -table has been dropped - - - - - - - - Release 7.3.11 - - - Release date - 2005-10-04 - - - - This release contains a variety of fixes from 7.3.10. - - - - Migration to Version 7.3.11 - - - 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. - - - - - Changes - - -Fix error that allowed VACUUM to remove -ctid chains too soon, and add more checking in code that follows -ctid links -This fixes a long-standing problem that could cause crashes in very rare -circumstances. -Fix CHAR() to properly pad spaces to the specified -length when using a multiple-byte character set (Yoshiyuki Asaba) -In prior releases, the padding of CHAR() was incorrect -because it only padded to the specified number of bytes without -considering how many characters were stored. -Fix missing rows in queries like UPDATE a=... WHERE -a... with GiST index on column a -Improve checking for partially-written WAL -pages -Improve robustness of signal handling when SSL is -enabled -Various memory leakage fixes -Various portability improvements -Fix PL/PgSQL to handle var := var correctly when -the variable is of pass-by-reference type - - - - - - - Release 7.3.10 - - - Release date - 2005-05-09 - - - - This release contains a variety of fixes from 7.3.9, including several - security-related issues. - - - - Migration to Version 7.3.10 - - - 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. - - - - 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. - - - - If you wish not to do an initdb, perform the following procedure instead. - As the database superuser, do: - - -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; - - - - - The above procedure must be carried out in each database - of an installation, including template1, and ideally - including template0 as well. If you do not fix the - template databases then any subsequently created databases will contain - the same error. template1 can be fixed in the same way - as any other database, but fixing template0 requires - additional steps. First, from any database issue: - -UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; - - Next connect to template0 and perform the above repair - procedure. Finally, do: - --- re-freeze template0: -VACUUM FREEZE; --- and protect it against future alterations: -UPDATE pg_database SET datallowconn = false WHERE datname = 'template0'; - - - - - - Changes - - -Change encoding function signature to prevent -misuse -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 -This is an extremely serious bug since it could lead to apparent -data inconsistencies being briefly visible to applications. -Repair race condition between relation extension and -VACUUM -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. - -Fix comparisons of TIME WITH TIME ZONE values - -The comparison code was wrong in the case where the ---enable-integer-datetimes configuration switch had been used. -NOTE: if you have an index on a TIME WITH TIME ZONE column, -it will need to be REINDEXed after installing this update, because -the fix corrects the sort order of column values. - -Fix EXTRACT(EPOCH) for -TIME WITH TIME ZONE values -Fix mis-display of negative fractional seconds in -INTERVAL values - -This error only occurred when the ---enable-integer-datetimes configuration switch had been used. - -Additional buffer overrun checks in plpgsql -(Neil) -Fix pg_dump to dump trigger names containing % -correctly (Neil) -Prevent to_char(interval) from dumping core for -month-related formats -Fix contrib/pgcrypto for newer OpenSSL builds -(Marko Kreen) -Still more 64-bit fixes for -contrib/intagg -Prevent incorrect optimization of functions returning -RECORD - - - - - - - Release 7.3.9 - - - Release date - 2005-01-31 - - - - This release contains a variety of fixes from 7.3.8, including several - security-related issues. - - - - Migration to Version 7.3.9 - - - A dump/restore is not required for those running 7.3.X. - - - - - Changes - - -Disallow LOAD to non-superusers - -On platforms that will automatically execute initialization functions of a -shared library (this includes at least Windows and ELF-based Unixen), -LOAD can be used to make the server execute arbitrary code. -Thanks to NGS Software for reporting this. -Check that creator of an aggregate function has the right to -execute the specified transition functions - -This oversight made it possible to bypass denial of EXECUTE -permission on a function. -Fix security and 64-bit issues in -contrib/intagg -Add needed STRICT marking to some contrib functions (Kris -Jurka) -Avoid buffer overrun when plpgsql cursor declaration has too -many parameters (Neil) -Fix planning error for FULL and RIGHT outer joins - -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. - -Fix plperl for quote marks in tuple fields -Fix display of negative intervals in SQL and GERMAN -datestyles - - - - - - - Release 7.3.8 - - - Release date - 2004-10-22 - - - - This release contains a variety of fixes from 7.3.7. - - - - - Migration to Version 7.3.8 - - - A dump/restore is not required for those running 7.3.X. - - - - - Changes - - -Repair possible failure to update hint bits on disk - -Under rare circumstances this oversight could lead to -could not access transaction status failures, which qualifies -it as a potential-data-loss bug. - -Ensure that hashed outer join does not miss tuples - -Very large left joins using a hash join plan could fail to output unmatched -left-side rows given just the right data distribution. - -Disallow running pg_ctl as root - -This is to guard against any possible security issues. - -Avoid using temp files in /tmp in make_oidjoins_check - -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. - - - - - - - - Release 7.3.7 - - - Release date - 2004-08-16 - - - - This release contains one critical fix over 7.3.6, and some minor items. - - - - - Migration to Version 7.3.7 - - - A dump/restore is not required for those running 7.3.X. - - - - - Changes - - -Prevent possible loss of committed transactions during crash - -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 PostgreSQL 7.1. - -Remove asymmetrical word processing in tsearch (Teodor) -Properly schema-qualify function names when pg_dump'ing a CAST - - - - - - - Release 7.3.6 - - - Release date - 2004-03-02 - - - - This release contains a variety of fixes from 7.3.5. - - - - - Migration to Version 7.3.6 - - - A dump/restore is not required for those - running 7.3.*. - - - - - - Changes - - -Revert erroneous changes in rule permissions checking -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. - -Repair incorrect order of operations in -GetNewTransactionId() - -This bug could result in failure under out-of-disk-space conditions, including -inability to restart even after disk space is freed. - -Ensure configure selects -fno-strict-aliasing even when -an external value for CFLAGS is supplied - -On some platforms, building with -fstrict-aliasing causes bugs. - -Make pg_restore handle 64-bit off_t correctly - -This bug prevented proper restoration from archive files exceeding 4 GB. - -Make contrib/dblink not assume that local and remote type OIDs -match (Joe) -Quote connectby()'s start_with argument properly (Joe) -Don't crash when a rowtype argument to a plpgsql function is -NULL -Avoid generating invalid character encoding sequences in -corner cases when planning LIKE operations -Ensure text_position() cannot scan past end of source string -in multibyte cases (Korea PostgreSQL Users' Group) -Fix index optimization and selectivity estimates for LIKE -operations on bytea columns (Joe) - - - - - - - Release 7.3.5 - - - Release date - 2003-12-03 - - - - This has a variety of fixes from 7.3.4. - - - - - Migration to Version 7.3.5 - - - A dump/restore is not required for those - running 7.3.*. - - - - - Changes - - -Force zero_damaged_pages to be on during recovery from WAL -Prevent some obscure cases of variable not in subplan target lists -Force stats processes to detach from shared memory, ensuring cleaner shutdown -Make PQescapeBytea and byteaout consistent with each other (Joe) -Added missing SPI_finish() calls to dblink's get_tuple_of_interest() (Joe) -Fix for possible foreign key violation when rule rewrites INSERT (Jan) -Support qualified type names in PL/Tcl's spi_prepare command (Jan) -Make pg_dump handle a procedural language handler located in pg_catalog -Make pg_dump handle cases where a custom opclass is in another schema -Make pg_dump dump binary-compatible casts correctly (Jan) -Fix insertion of expressions containing subqueries into rule bodies -Fix incorrect argument processing in clusterdb script (Anand Ranganathan) -Fix problems with dropped columns in plpython triggers -Repair problems with to_char() reading past end of its input string (Karel) -Fix GB18030 mapping errors (Tatsuo) -Fix several problems with SSL error handling and asynchronous SSL I/O -Remove ability to bind a list of values to a single parameter in JDBC -(prevents possible SQL-injection attacks) -Fix some errors in HAVE_INT64_TIMESTAMP code paths -Fix corner case for btree search in parallel with first root page split - - - - - - - Release 7.3.4 - - - Release date - 2003-07-24 - - - - This has a variety of fixes from 7.3.3. - - - - - Migration to Version 7.3.4 - - - A dump/restore is not required for those - running 7.3.*. - - - - - Changes - - -Repair breakage in timestamp-to-date conversion for dates before 2000 -Prevent rare possibility of server startup failure (Tom) -Fix bugs in interval-to-time conversion (Tom) -Add constraint names in a few places in pg_dump (Rod) -Improve performance of functions with many parameters (Tom) -Fix to_ascii() buffer overruns (Tom) -Prevent restore of database comments from throwing an error (Tom) -Work around buggy strxfrm() present in some Solaris releases (Tom) -Properly escape jdbc setObject() strings to improve security (Barry) - - - - - - - Release 7.3.3 - - - Release date - 2003-05-22 - - - - This release contains a variety of fixes for version 7.3.2. - - - - Migration to Version 7.3.3 - - - A dump/restore is not required for those - running version 7.3.*. - - - - - Changes - - -Repair sometimes-incorrect computation of StartUpID after a crash -Avoid slowness with lots of deferred triggers in one transaction (Stephan) -Don't lock referenced row when UPDATE doesn't change foreign key's value (Jan) -Use -fPIC not -fpic on Sparc (Tom Callaway) -Repair lack of schema-awareness in contrib/reindexdb -Fix contrib/intarray error for zero-element result array (Teodor) -Ensure createuser script will exit on control-C (Oliver) -Fix errors when the type of a dropped column has itself been dropped -CHECKPOINT does not cause database panic on failure in noncritical steps -Accept 60 in seconds fields of timestamp, time, interval input values -Issue notice, not error, if TIMESTAMP, - TIME, or INTERVAL precision too large -Fix abstime-to-time cast function (fix is - not applied unless you initdb) -Fix pg_proc entry for - timestampt_izone (fix is not applied unless you - initdb) -Make EXTRACT(EPOCH FROM timestamp without time zone) treat input as local time -'now'::timestamptz gave wrong answer if timezone changed earlier in transaction -HAVE_INT64_TIMESTAMP code for time with timezone overwrote its input -Accept GLOBAL TEMP/TEMPORARY as a - synonym for TEMPORARY -Avoid improper schema-privilege-check failure in foreign-key triggers -Fix bugs in foreign-key triggers for SET DEFAULT action -Fix incorrect time-qual check in row fetch for - UPDATE and DELETE triggers -Foreign-key clauses were parsed but ignored in - ALTER TABLE ADD COLUMN -Fix createlang script breakage for case where handler function already exists -Fix misbehavior on zero-column tables in pg_dump, COPY, ANALYZE, other places -Fix misbehavior of func_error() on type names containing '%' -Fix misbehavior of replace() on strings containing '%' -Regular-expression patterns containing certain multibyte characters failed -Account correctly for NULLs in more cases in join size estimation -Avoid conflict with system definition of isblank() function or macro -Fix failure to convert large code point values in EUC_TW conversions (Tatsuo) -Fix error recovery for SSL_read/SSL_write calls -Don't do early constant-folding of type coercion expressions -Validate page header fields immediately after reading in any page -Repair incorrect check for ungrouped variables in unnamed joins -Fix buffer overrun in to_ascii (Guido Notari) -contrib/ltree fixes (Teodor) -Fix core dump in deadlock detection on machines where char is unsigned -Avoid running out of buffers in many-way indexscan (bug introduced in 7.3) -Fix planner's selectivity estimation functions to handle domains properly -Fix dbmirror memory-allocation bug (Steven Singer) -Prevent infinite loop in ln(numeric) due to roundoff error -GROUP BY got confused if there were multiple equal GROUP BY items -Fix bad plan when inherited UPDATE/DELETE references another inherited table -Prevent clustering on incomplete (partial or non-NULL-storing) indexes -Service shutdown request at proper time if it arrives while still starting up -Fix left-links in temporary indexes (could make backwards scans miss entries) -Fix incorrect handling of client_encoding setting in postgresql.conf (Tatsuo) -Fix failure to respond to pg_ctl stop -m fast after Async_NotifyHandler runs -Fix SPI for case where rule contains multiple statements of the same type -Fix problem with checking for wrong type of access privilege in rule query -Fix problem with EXCEPT in CREATE RULE -Prevent problem with dropping temp tables having serial columns -Fix replace_vars_with_subplan_refs failure in complex views -Fix regexp slowness in single-byte encodings (Tatsuo) -Allow qualified type names in CREATE CAST - and DROP CAST -Accept SETOF type[], which formerly had to - be written SETOF _type -Fix pg_dump core dump in some cases with procedural languages -Force ISO datestyle in pg_dump output, for portability (Oliver) -pg_dump failed to handle error return - from lo_read (Oleg Drokin) -pg_dumpall failed with groups having no members (Nick Eskelinen) -pg_dumpall failed to recognize --globals-only switch -pg_restore failed to restore blobs if -X disable-triggers is specified -Repair intrafunction memory leak in plpgsql -pltcl's elog command dumped core if given wrong parameters (Ian Harding) -plpython used wrong value of atttypmod (Brad McLean) -Fix improper quoting of boolean values in Python interface (D'Arcy) -Added addDataType() method to PGConnection interface for JDBC -Fixed various problems with updateable ResultSets for JDBC (Shawn Green) -Fixed various problems with DatabaseMetaData for JDBC (Kris Jurka, Peter Royal) -Fixed problem with parsing table ACLs in JDBC -Better error message for character set conversion problems in JDBC - - - - - - - Release 7.3.2 - - - Release date - 2003-02-04 - - - - This release contains a variety of fixes for version 7.3.1. - - - - - Migration to Version 7.3.2 - - - A dump/restore is not required for those - running version 7.3.*. - - - - - Changes - - -Restore creation of OID column in CREATE TABLE AS / SELECT INTO -Fix pg_dump core dump when dumping views having comments -Dump DEFERRABLE/INITIALLY DEFERRED constraints properly -Fix UPDATE when child table's column numbering differs from parent -Increase default value of max_fsm_relations -Fix problem when fetching backwards in a cursor for a single-row query -Make backward fetch work properly with cursor on SELECT DISTINCT query -Fix problems with loading pg_dump files containing contrib/lo usage -Fix problem with all-numeric user names -Fix possible memory leak and core dump during disconnect in libpgtcl -Make plpython's spi_execute command handle nulls properly (Andrew Bosma) -Adjust plpython error reporting so that its regression test passes again -Work with bison 1.875 -Handle mixed-case names properly in plpgsql's %type (Neil) -Fix core dump in pltcl when executing a query rewritten by a rule -Repair array subscript overruns (per report from Yichen Xie) -Reduce MAX_TIME_PRECISION from 13 to 10 in floating-point case -Correctly case-fold variable names in per-database and per-user settings -Fix coredump in plpgsql's RETURN NEXT when SELECT into record returns no rows -Fix outdated use of pg_type.typprtlen in python client interface -Correctly handle fractional seconds in timestamps in JDBC driver -Improve performance of getImportedKeys() in JDBC -Make shared-library symlinks work standardly on HPUX (Giles) -Repair inconsistent rounding behavior for timestamp, time, interval -SSL negotiation fixes (Nathan Mueller) -Make libpq's ~/.pgpass feature work when connecting with PQconnectDB -Update my2pg, ora2pg -Translation updates -Add casts between types lo and oid in contrib/lo -fastpath code now checks for privilege to call function - - - - - - - Release 7.3.1 - - - Release date - 2002-12-18 - - - - This release contains a variety of fixes for version 7.3. - - - - - Migration to Version 7.3.1 - - - A dump/restore is not required for those - running version 7.3. However, it should be noted that the main - PostgreSQL interface library, libpq, - has a new major version number for this release, which might require - recompilation of client code in certain cases. - - - - - Changes - - -Fix a core dump of COPY TO when client/server encodings don't match (Tom) -Allow pg_dump to work with pre-7.2 servers (Philip) -contrib/adddepend fixes (Tom) -Fix problem with deletion of per-user/per-database config settings (Tom) -contrib/vacuumlo fix (Tom) -Allow 'password' encryption even when pg_shadow contains MD5 passwords (Bruce) -contrib/dbmirror fix (Steven Singer) -Optimizer fixes (Tom) -contrib/tsearch fixes (Teodor Sigaev, Magnus) -Allow locale names to be mixed case (Nicolai Tufar) -Increment libpq library's major version number (Bruce) -pg_hba.conf error reporting fixes (Bruce, Neil) -Add SCO Openserver 5.0.4 as a supported platform (Bruce) -Prevent EXPLAIN from crashing server (Tom) -SSL fixes (Nathan Mueller) -Prevent composite column creation via ALTER TABLE (Tom) - - - - - - - Release 7.3 - - - Release date - 2002-11-27 - - - - Overview - - - Major changes in this release: - - - - - Schemas - - - 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. - - - - - - Drop Column - - - PostgreSQL now supports the - ALTER TABLE ... DROP COLUMN functionality. - - - - - - Table Functions - - - Functions returning multiple rows and/or multiple columns are - now much easier to use than before. You can call such a - table function in the SELECT - FROM clause, treating its output like a - table. Also, PL/pgSQL functions can - now return sets. - - - - - - Prepared Queries - - - PostgreSQL now supports prepared - queries, for improved performance. - - - - - - Dependency Tracking - - - PostgreSQL now records object - dependencies, which allows improvements in many areas. - DROP statements now take either - CASCADE or RESTRICT to control whether - dependent objects are also dropped. - - - - - - Privileges - - - Functions and procedural languages now have privileges, and - functions can be defined to run with the privileges of their - creator. - - - - - - Internationalization - - - Both multibyte and locale support are now always enabled. - - - - - - Logging - - - A variety of logging options have been enhanced. - - - - - - Interfaces - - - A large number of interfaces have been moved to http://gborg.postgresql.org - where they can be developed and released independently. - - - - - - Functions/Identifiers - - - By default, functions can now take up to 32 parameters, and - identifiers can be up to 63 bytes long. Also, OPAQUE - is now deprecated: there are specific pseudo-datatypes - to represent each of the former meanings of OPAQUE - in function argument and result types. - - - - - - - - - Migration to Version 7.3 - - - A dump/restore using 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: . - - - - Observe the following incompatibilities: - - - - - - Pre-6.3 clients are no longer supported. - - - - - - pg_hba.conf now has a column for the user - name and additional features. Existing files need to be - adjusted. - - - - - - Several postgresql.conf logging parameters - have been renamed. - - - - - - LIMIT #,# has been disabled; use - LIMIT # OFFSET #. - - - - - - INSERT statements with column lists must - specify a value for each specified column. For example, - INSERT INTO tab (col1, col2) VALUES ('val1') - is now invalid. It's still allowed to supply fewer columns than - expected if the INSERT does not have a column list. - - - - - - serial columns are no longer automatically - UNIQUE; thus, an index will not automatically be - created. - - - - - - A SET command inside an aborted transaction - is now rolled back. - - - - - - COPY 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 COPY command.) - - - - - - The data type timestamp is now equivalent to - timestamp without time zone, instead of - timestamp with time zone. - - - - - - Pre-7.3 databases loaded into 7.3 will not have the new object - dependencies for serial columns, unique - constraints, and foreign keys. See the directory - contrib/adddepend/ for a detailed - description and a script that will add such dependencies. - - - - - - An empty string ('') is no longer allowed as - the input into an integer field. Formerly, it was silently - interpreted as 0. - - - - - - - - Changes - - - Server Operation - -Add pg_locks view to show locks (Neil) -Security fixes for password negotiation memory allocation (Neil) -Remove support for version 0 FE/BE protocol (PostgreSQL 6.2 and earlier) (Tom) -Reserve the last few backend slots for superusers, add parameter superuser_reserved_connections to control this (Nigel J. Andrews) - - - - - Performance - -Improve startup by calling localtime() only once (Tom) -Cache system catalog information in flat files for faster startup (Tom) -Improve caching of index information (Tom) -Optimizer improvements (Tom, Fernando Nasser) -Catalog caches now store failed lookups (Tom) -Hash function improvements (Neil) -Improve performance of query tokenization and network handling (Peter) -Speed improvement for large object restore (Mario Weilguni) -Mark expired index entries on first lookup, saving later heap fetches (Tom) -Avoid excessive NULL bitmap padding (Manfred Koizar) -Add BSD-licensed qsort() for Solaris, for performance (Bruce) -Reduce per-row overhead by four bytes (Manfred Koizar) -Fix GEQO optimizer bug (Neil Conway) -Make WITHOUT OID actually save four bytes per row (Manfred Koizar) -Add default_statistics_target variable to specify ANALYZE buckets (Neil) -Use local buffer cache for temporary tables so no WAL overhead (Tom) -Improve free space map performance on large tables (Stephen Marshall, Tom) -Improved WAL write concurrency (Tom) - - - - - Privileges - -Add privileges on functions and procedural languages (Peter) -Add OWNER to CREATE DATABASE so superusers can create databases on behalf of unprivileged users (Gavin Sherry, Tom) -Add new object privilege bits EXECUTE and USAGE (Tom) -Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION (Tom) -Allow functions to be executed with the privilege of the function owner (Peter) - - - - - Server Configuration - -Server log messages now tagged with LOG, not DEBUG (Bruce) -Add user column to pg_hba.conf (Bruce) -Have log_connections output two lines in log file (Tom) -Remove debug_level from postgresql.conf, now server_min_messages (Bruce) -New ALTER DATABASE/USER ... SET command for per-user/database initialization (Peter) -New parameters server_min_messages and client_min_messages to control which messages are sent to the server logs or client applications (Bruce) -Allow pg_hba.conf to specify lists of users/databases separated by commas, group names prepended with +, and file names prepended with @ (Bruce) -Remove secondary password file capability and pg_password utility (Bruce) -Add variable db_user_namespace for database-local user names (Bruce) -SSL improvements (Bear Giles) -Make encryption of stored passwords the default (Bruce) -Allow pg_statistics to be reset by calling pg_stat_reset() (Christopher) -Add log_duration parameter (Bruce) -Rename debug_print_query to log_statement (Bruce) -Rename show_query_stats to show_statement_stats (Bruce) -Add param log_min_error_statement to print commands to logs on error (Gavin) - - - - - Queries - -Make cursors insensitive, meaning their contents do not change (Tom) -Disable LIMIT #,# syntax; now only LIMIT # OFFSET # supported (Bruce) -Increase identifier length to 63 (Neil, Bruce) -UNION fixes for merging >= 3 columns of different lengths (Tom) -Add DEFAULT key word to INSERT, e.g., INSERT ... (..., DEFAULT, ...) (Rod) -Allow views to have default values using ALTER COLUMN ... SET DEFAULT (Neil) -Fail on INSERTs with column lists that don't supply all column values, e.g., INSERT INTO tab (col1, col2) VALUES ('val1'); (Rod) -Fix for join aliases (Tom) -Fix for FULL OUTER JOINs (Tom) -Improve reporting of invalid identifier and location (Tom, Gavin) -Fix OPEN cursor(args) (Tom) -Allow 'ctid' to be used in a view and currtid(viewname) (Hiroshi) -Fix for CREATE TABLE AS with UNION (Tom) -SQL99 syntax improvements (Thomas) -Add statement_timeout variable to cancel queries (Bruce) -Allow prepared queries with PREPARE/EXECUTE (Neil) -Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce) -Add variable autocommit (Tom, David Van Wie) - - - - - Object Manipulation - -Make equals signs optional in CREATE DATABASE (Gavin Sherry) -Make ALTER TABLE OWNER change index ownership too (Neil) -New ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls TOAST storage, compression (John Gray) -Add schema support, CREATE/DROP SCHEMA (Tom) -Create schema for temporary tables (Tom) -Add variable search_path for schema search (Tom) -Add ALTER TABLE SET/DROP NOT NULL (Christopher) -New CREATE FUNCTION volatility levels (Tom) -Make rule names unique only per table (Tom) -Add 'ON tablename' clause to DROP RULE and COMMENT ON RULE (Tom) -Add ALTER TRIGGER RENAME (Joe) -New current_schema() and current_schemas() inquiry functions (Tom) -Allow functions to return multiple rows (table functions) (Joe) -Make WITH optional in CREATE DATABASE, for consistency (Bruce) -Add object dependency tracking (Rod, Tom) -Add RESTRICT/CASCADE to DROP commands (Rod) -Add ALTER TABLE DROP for non-CHECK CONSTRAINT (Rod) -Autodestroy sequence on DROP of table with SERIAL (Rod) -Prevent column dropping if column is used by foreign key (Rod) -Automatically drop constraints/functions when object is dropped (Rod) -Add CREATE/DROP OPERATOR CLASS (Bill Studenmund, Tom) -Add ALTER TABLE DROP COLUMN (Christopher, Tom, Hiroshi) -Prevent inherited columns from being removed or renamed (Alvaro Herrera) -Fix foreign key constraints to not error on intermediate database states (Stephan) -Propagate column or table renaming to foreign key constraints -Add CREATE OR REPLACE VIEW (Gavin, Neil, Tom) -Add CREATE OR REPLACE RULE (Gavin, Neil, Tom) -Have rules execute alphabetically, returning more predictable values (Tom) -Triggers are now fired in alphabetical order (Tom) -Add /contrib/adddepend to handle pre-7.3 object dependencies (Rod) -Allow better casting when inserting/updating values (Tom) - - - - - Utility Commands - -Have COPY TO output embedded carriage returns and newlines as \r and \n (Tom) -Allow DELIMITER in COPY FROM to be 8-bit clean (Tatsuo) -Make pg_dump use ALTER TABLE ADD PRIMARY KEY, for performance (Neil) -Disable brackets in multistatement rules (Bruce) -Disable VACUUM from being called inside a function (Bruce) -Allow dropdb and other scripts to use identifiers with spaces (Bruce) -Restrict database comment changes to the current database -Allow comments on operators, independent of the underlying function (Rod) -Rollback SET commands in aborted transactions (Tom) -EXPLAIN now outputs as a query (Tom) -Display condition expressions and sort keys in EXPLAIN (Tom) -Add 'SET LOCAL var = value' to set configuration variables for a single transaction (Tom) -Allow ANALYZE to run in a transaction (Bruce) -Improve COPY syntax using new WITH clauses, keep backward compatibility (Bruce) -Fix pg_dump to consistently output tags in non-ASCII dumps (Bruce) -Make foreign key constraints clearer in dump file (Rod) -Add COMMENT ON CONSTRAINT (Rod) -Allow COPY TO/FROM to specify column names (Brent Verner) -Dump UNIQUE and PRIMARY KEY constraints as ALTER TABLE (Rod) -Have SHOW output a query result (Joe) -Generate failure on short COPY lines rather than pad NULLs (Neil) -Fix CLUSTER to preserve all table attributes (Alvaro Herrera) -New pg_settings table to view/modify GUC settings (Joe) -Add smart quoting, portability improvements to pg_dump output (Peter) -Dump serial columns out as SERIAL (Tom) -Enable large file support, >2G for pg_dump (Peter, Philip Warner, Bruce) -Disallow TRUNCATE on tables that are involved in referential constraints (Rod) -Have TRUNCATE also auto-truncate the toast table of the relation (Tom) -Add clusterdb utility that will auto-cluster an entire database based on previous CLUSTER operations (Alvaro Herrera) -Overhaul pg_dumpall (Peter) -Allow REINDEX of TOAST tables (Tom) -Implemented START TRANSACTION, per SQL99 (Neil) -Fix rare index corruption when a page split affects bulk delete (Tom) -Fix ALTER TABLE ... ADD COLUMN for inheritance (Alvaro Herrera) - - - - - Data Types and Functions - -Fix factorial(0) to return 1 (Bruce) -Date/time/timezone improvements (Thomas) -Fix for array slice extraction (Tom) -Fix extract/date_part to report proper microseconds for timestamp (Tatsuo) -Allow text_substr() and bytea_substr() to read TOAST values more efficiently (John Gray) -Add domain support (Rod) -Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types (Thomas) -Allow alternate storage scheme of 64-bit integers for date/time types using --enable-integer-datetimes in configure (Thomas) -Make timezone(timestamptz) return timestamp rather than a string (Thomas) -Allow fractional seconds in date/time types for dates prior to 1BC (Thomas) -Limit timestamp data types to 6 decimal places of precision (Thomas) -Change timezone conversion functions from timetz() to timezone() (Thomas) -Add configuration variables datestyle and timezone (Tom) -Add OVERLAY(), which allows substitution of a substring in a string (Thomas) -Add SIMILAR TO (Thomas, Tom) -Add regular expression SUBSTRING(string FROM pat FOR escape) (Thomas) -Add LOCALTIME and LOCALTIMESTAMP functions (Thomas) -Add named composite types using CREATE TYPE typename AS (column) (Joe) -Allow composite type definition in the table alias clause (Joe) -Add new API to simplify creation of C language table functions (Joe) -Remove ODBC-compatible empty parentheses from calls to SQL99 functions for which these parentheses do not match the standard (Thomas) -Allow macaddr data type to accept 12 hex digits with no separators (Mike Wyer) -Add CREATE/DROP CAST (Peter) -Add IS DISTINCT FROM operator (Thomas) -Add SQL99 TREAT() function, synonym for CAST() (Thomas) -Add pg_backend_pid() to output backend pid (Bruce) -Add IS OF / IS NOT OF type predicate (Thomas) -Allow bit string constants without fully-specified length (Thomas) -Allow conversion between 8-byte integers and bit strings (Thomas) -Implement hex literal conversion to bit string literal (Thomas) -Allow table functions to appear in the FROM clause (Joe) -Increase maximum number of function parameters to 32 (Bruce) -No longer automatically create index for SERIAL column (Tom) -Add current_database() (Rod) -Fix cash_words() to not overflow buffer (Tom) -Add functions replace(), split_part(), to_hex() (Joe) -Fix LIKE for bytea as a right-hand argument (Joe) -Prevent crashes caused by SELECT cash_out(2) (Tom) -Fix to_char(1,'FM999.99') to return a period (Karel) -Fix trigger/type/language functions returning OPAQUE to return proper type (Tom) - - - - - Internationalization - -Add additional encodings: Korean (JOHAB), Thai (WIN874), Vietnamese (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC) (Eiji Tokuya) -Enable locale support by default (Peter) -Add locale variables (Peter) -Escape byes >= 0x7f for multibyte in PQescapeBytea/PQunescapeBytea (Tatsuo) -Add locale awareness to regular expression character classes -Enable multibyte support by default (Tatsuo) -Add GB18030 multibyte support (Bill Huang) -Add CREATE/DROP CONVERSION, allowing loadable encodings (Tatsuo, Kaori) -Add pg_conversion table (Tatsuo) -Add SQL99 CONVERT() function (Tatsuo) -pg_dumpall, pg_controldata, and pg_resetxlog now national-language aware (Peter) -New and updated translations - - - - - Server-side Languages - -Allow recursive SQL function (Peter) -Change PL/Tcl build to use configured compiler and Makefile.shlib (Peter) -Overhaul the PL/pgSQL FOUND variable to be more Oracle-compatible (Neil, Tom) -Allow PL/pgSQL to handle quoted identifiers (Tom) -Allow set-returning PL/pgSQL functions (Neil) -Make PL/pgSQL schema-aware (Joe) -Remove some memory leaks (Nigel J. Andrews, Tom) - - - - - psql - -Don't lowercase psql \connect database name for 7.2.0 compatibility (Tom) -Add psql \timing to time user queries (Greg Sabino Mullane) -Have psql \d show index information (Greg Sabino Mullane) -New psql \dD shows domains (Jonathan Eisler) -Allow psql to show rules on views (Paul ?) -Fix for psql variable substitution (Tom) -Allow psql \d to show temporary table structure (Tom) -Allow psql \d to show foreign keys (Rod) -Fix \? to honor \pset pager (Bruce) -Have psql reports its version number on startup (Tom) -Allow \copy to specify column names (Tom) - - - - - libpq - -Add ~/.pgpass to store host/user password combinations (Alvaro Herrera) -Add PQunescapeBytea() function to libpq (Patrick Welche) -Fix for sending large queries over non-blocking connections (Bernhard Herzog) -Fix for libpq using timers on Win9X (David Ford) -Allow libpq notify to handle servers with different-length identifiers (Tom) -Add libpq PQescapeString() and PQescapeBytea() to Windows (Bruce) -Fix for SSL with non-blocking connections (Jack Bates) -Add libpq connection timeout parameter (Denis A Ustimenko) - - - - - JDBC - -Allow JDBC to compile with JDK 1.4 (Dave) -Add JDBC 3 support (Barry) -Allows JDBC to set loglevel by adding ?loglevel=X to the connection URL (Barry) -Add Driver.info() message that prints out the version number (Barry) -Add updateable result sets (Raghu Nidagal, Dave) -Add support for callable statements (Paul Bethe) -Add query cancel capability -Add refresh row (Dave) -Fix MD5 encryption handling for multibyte servers (Jun Kawai) -Add support for prepared statements (Barry) - - - - - Miscellaneous Interfaces - -Fixed ECPG bug concerning octal numbers in single quotes (Michael) -Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce) -Improve Python interface (Elliot Lee, Andrew Johnson, Greg Copeland) -Add libpgtcl connection close event (Gerhard Hintermayer) -Move src/interfaces/libpq++ to http://gborg.postgresql.org (Marc, Bruce) -Move src/interfaces/odbc to http://gborg.postgresql.org (Marc) -Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce) -Move src/interfaces/perl5 to http://gborg.postgresql.org (Marc, Bruce) -Remove src/bin/pgaccess from main tree, now at http://www.pgaccess.org (Bruce) -Add pg_on_connection_loss command to libpgtcl (Gerhard Hintermayer, Tom) - - - - - Source Code - -Fix for parallel make (Peter) -AIX fixes for linking Tcl (Andreas Zeugswetter) -Allow PL/Perl to build under Cygwin (Jason Tishler) -Improve MIPS compiles (Peter, Oliver Elphick) -Require Autoconf version 2.53 (Peter) -Require readline and zlib by default in configure (Peter) -Allow Solaris to use Intimate Shared Memory (ISM), for performance (Scott Brunza, P.J. Josh Rovero) -Always enable syslog in compile, remove --enable-syslog option (Tatsuo) -Always enable multibyte in compile, remove --enable-multibyte option (Tatsuo) -Always enable locale in compile, remove --enable-locale option (Peter) -Fix for Win9x DLL creation (Magnus Naeslund) -Fix for link() usage by WAL code on Windows, BeOS (Jason Tishler) -Add sys/types.h to c.h, remove from main files (Peter, Bruce) -Fix AIX hang on SMP machines (Tomoyuki Niijima) -AIX SMP hang fix (Tomoyuki Niijima) -Fix pre-1970 date handling on newer glibc libraries (Tom) -Fix PowerPC SMP locking (Tom) -Prevent gcc -ffast-math from being used (Peter, Tom) -Bison >= 1.50 now required for developer builds -Kerberos 5 support now builds with Heimdal (Peter) -Add appendix in the User's Guide which lists SQL features (Thomas) -Improve loadable module linking to use RTLD_NOW (Tom) -New error levels WARNING, INFO, LOG, DEBUG[1-5] (Bruce) -New src/port directory holds replaced libc functions (Peter, Bruce) -New pg_namespace system catalog for schemas (Tom) -Add pg_class.relnamespace for schemas (Tom) -Add pg_type.typnamespace for schemas (Tom) -Add pg_proc.pronamespace for schemas (Tom) -Restructure aggregates to have pg_proc entries (Tom) -System relations now have their own namespace, pg_* test not required (Fernando Nasser) -Rename TOAST index names to be *_index rather than *_idx (Neil) -Add namespaces for operators, opclasses (Tom) -Add additional checks to server control file (Thomas) -New Polish FAQ (Marcin Mazurek) -Add Posix semaphore support (Tom) -Document need for reindex (Bruce) -Rename some internal identifiers to simplify Windows compile (Jan, Katherine Ward) -Add documentation on computing disk space (Bruce) -Remove KSQO from GUC (Bruce) -Fix memory leak in rtree (Kenneth Been) -Modify a few error messages for consistency (Bruce) -Remove unused system table columns (Peter) -Make system columns NOT NULL where appropriate (Tom) -Clean up use of sprintf in favor of snprintf() (Neil, Jukka Holappa) -Remove OPAQUE and create specific subtypes (Tom) -Cleanups in array internal handling (Joe, Tom) -Disallow pg_atoi('') (Bruce) -Remove parameter wal_files because WAL files are now recycled (Bruce) -Add version numbers to heap pages (Tom) - - - - - Contrib - -Allow inet arrays in /contrib/array (Neil) -GiST fixes (Teodor Sigaev, Neil) -Upgrade /contrib/mysql -Add /contrib/dbsize which shows table sizes without vacuum (Peter) -Add /contrib/intagg, integer aggregator routines (mlw) -Improve /contrib/oid2name (Neil, Bruce) -Improve /contrib/tsearch (Oleg, Teodor Sigaev) -Cleanups of /contrib/rserver (Alexey V. Borzov) -Update /contrib/oracle conversion utility (Gilles Darold) -Update /contrib/dblink (Joe) -Improve options supported by /contrib/vacuumlo (Mario Weilguni) -Improvements to /contrib/intarray (Oleg, Teodor Sigaev, Andrey Oktyabrski) -Add /contrib/reindexdb utility (Shaun Thomas) -Add indexing to /contrib/isbn_issn (Dan Weston) -Add /contrib/dbmirror (Steven Singer) -Improve /contrib/pgbench (Neil) -Add /contrib/tablefunc table function examples (Joe) -Add /contrib/ltree data type for tree structures (Teodor Sigaev, Oleg Bartunov) -Move /contrib/pg_controldata, pg_resetxlog into main tree (Bruce) -Fixes to /contrib/cube (Bruno Wolff) -Improve /contrib/fulltextindex (Christopher) - - - - - - - - Release 7.2.8 - - - Release date - 2005-05-09 - - - - This release contains a variety of fixes from 7.2.7, including one - security-related issue. - - - - Migration to Version 7.2.8 - - - A dump/restore is not required for those running 7.2.X. - - - - - Changes - - -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 -This is an extremely serious bug since it could lead to apparent -data inconsistencies being briefly visible to applications. -Repair race condition between relation extension and -VACUUM -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. - -Fix EXTRACT(EPOCH) for -TIME WITH TIME ZONE values -Additional buffer overrun checks in plpgsql -(Neil) -Fix pg_dump to dump index names and trigger names containing -% correctly (Neil) -Prevent to_char(interval) from dumping core for -month-related formats -Fix contrib/pgcrypto for newer OpenSSL builds -(Marko Kreen) - - - - - - - Release 7.2.7 - - - Release date - 2005-01-31 - - - - This release contains a variety of fixes from 7.2.6, including several - security-related issues. - - - - Migration to Version 7.2.7 - - - A dump/restore is not required for those running 7.2.X. - - - - - Changes - - -Disallow LOAD to non-superusers - -On platforms that will automatically execute initialization functions of a -shared library (this includes at least Windows and ELF-based Unixen), -LOAD can be used to make the server execute arbitrary code. -Thanks to NGS Software for reporting this. -Add needed STRICT marking to some contrib functions (Kris -Jurka) -Avoid buffer overrun when plpgsql cursor declaration has too -many parameters (Neil) -Fix planning error for FULL and RIGHT outer joins - -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. - -Fix display of negative intervals in SQL and GERMAN -datestyles - - - - - - - Release 7.2.6 - - - Release date - 2004-10-22 - - - - This release contains a variety of fixes from 7.2.5. - - - - - Migration to Version 7.2.6 - - - A dump/restore is not required for those running 7.2.X. - - - - - Changes - - -Repair possible failure to update hint bits on disk - -Under rare circumstances this oversight could lead to -could not access transaction status failures, which qualifies -it as a potential-data-loss bug. - -Ensure that hashed outer join does not miss tuples - -Very large left joins using a hash join plan could fail to output unmatched -left-side rows given just the right data distribution. - -Disallow running pg_ctl as root - -This is to guard against any possible security issues. - -Avoid using temp files in /tmp in make_oidjoins_check - -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. - -Update to newer versions of Bison - - - - - - - Release 7.2.5 - - - Release date - 2004-08-16 - - - - This release contains a variety of fixes from 7.2.4. - - - - - Migration to Version 7.2.5 - - - A dump/restore is not required for those running 7.2.X. - - - - - Changes - - -Prevent possible loss of committed transactions during crash - -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 PostgreSQL 7.1. - -Fix corner case for btree search in parallel with first root page split -Fix buffer overrun in to_ascii (Guido Notari) -Fix core dump in deadlock detection on machines where char is unsigned -Fix failure to respond to pg_ctl stop -m fast after Async_NotifyHandler runs -Repair memory leaks in pg_dump -Avoid conflict with system definition of isblank() function or macro - - - - - - Release 7.2.4 - - - Release date - 2003-01-30 - - - - This release contains a variety of fixes for version 7.2.3, - including fixes to prevent possible data loss. - - - - Migration to Version 7.2.4 - - - A dump/restore is not required for those - running version 7.2.*. - - - - - Changes - - -Fix some additional cases of VACUUM "No one parent tuple was found" error -Prevent VACUUM from being called inside a function (Bruce) -Ensure pg_clog updates are sync'd to disk before marking checkpoint complete -Avoid integer overflow during large hash joins -Make GROUP commands work when pg_group.grolist is large enough to be toasted -Fix errors in datetime tables; some timezone names weren't being recognized -Fix integer overflows in circle_poly(), path_encode(), path_add() (Neil) -Repair long-standing logic errors in lseg_eq(), lseg_ne(), lseg_center() - - - - - - - Release 7.2.3 - - - Release date - 2002-10-01 - - - - This release contains a variety of fixes for version 7.2.2, - including fixes to prevent possible data loss. - - - - Migration to Version 7.2.3 - - - A dump/restore is not required for those - running version 7.2.*. - - - - - Changes - - -Prevent possible compressed transaction log loss (Tom) -Prevent non-superuser from increasing most recent vacuum info (Tom) -Handle pre-1970 date values in newer versions of glibc (Tom) -Fix possible hang during server shutdown -Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima) -Fix pg_dump to properly dump FULL JOIN USING (Tom) - - - - - - - Release 7.2.2 - - - Release date - 2002-08-23 - - - - This release contains a variety of fixes for version 7.2.1. - - - - Migration to Version 7.2.2 - - - A dump/restore is not required for those - running version 7.2.*. - - - - - Changes - - -Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom) -Fix for compressed transaction log id wraparound (Tom) -Fix PQescapeBytea/PQunescapeBytea so that they handle bytes > 0x7f (Tatsuo) -Fix for psql and pg_dump crashing when invoked with non-existent long options (Tatsuo) -Fix crash when invoking geometric operators (Tom) -Allow OPEN cursor(args) (Tom) -Fix for rtree_gist index build (Teodor) -Fix for dumping user-defined aggregates (Tom) -contrib/intarray fixes (Oleg) -Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom) -Fix to pg_convert (Tatsuo) -Fix for crash with long DATA strings (Thomas, Neil) -Fix for repeat(), lpad(), rpad() and long strings (Neil) - - - - - - - Release 7.2.1 - - - Release date - 2002-03-21 - - - - This release contains a variety of fixes for version 7.2. - - - - Migration to Version 7.2.1 - - - A dump/restore is not required for those - running version 7.2. - - - - - Changes - - -Ensure that sequence counters do not go backwards after a crash (Tom) -Fix pgaccess kanji-conversion key binding (Tatsuo) -Optimizer improvements (Tom) -Cash I/O improvements (Tom) -New Russian FAQ -Compile fix for missing AuthBlockSig (Heiko) -Additional time zones and time zone fixes (Thomas) -Allow psql \connect to handle mixed case database and user names (Tom) -Return proper OID on command completion even with ON INSERT rules (Tom) -Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo) -Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo) -Improve handling of multiple UNIONs with different lengths (Tom) -contrib/btree_gist improvements (Teodor Sigaev) -contrib/tsearch dictionary improvements, see README.tsearch for an additional installation step (Thomas T. Thai, Teodor Sigaev) -Fix for array subscripts handling (Tom) -Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom) - - - - - - - Release 7.2 - - - Release date - 2002-02-04 - - - - Overview - - - This release improves PostgreSQL for use in - high-volume applications. - - - - Major changes in this release: - - - - - VACUUM - - - Vacuuming no longer locks tables, thus allowing normal user - access during the vacuum. A new VACUUM FULL - command does old-style vacuum by locking the table and - shrinking the on-disk copy of the table. - - - - - - Transactions - - - There is no longer a problem with installations that exceed - four billion transactions. - - - - - - OIDs - - - OIDs are now optional. Users can now create tables without - OIDs for cases where OID usage is excessive. - - - - - - Optimizer - - - The system now computes histogram column statistics during - ANALYZE, allowing much better optimizer choices. - - - - - - Security - - - 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. - - - - - - Statistics - - - Administrators can use the new table access statistics module - to get fine-grained information about table and index usage. - - - - - - Internationalization - - - Program and library messages can now be displayed in several - languages. - - - - - - - - - Migration to Version 7.2 - - - A dump/restore using pg_dump is required for - those wishing to migrate data from any previous release. - - - - Observe the following incompatibilities: - - - - - - The semantics of the VACUUM command have - changed in this release. You might wish to update your - maintenance procedures accordingly. - - - - - - In this release, comparisons using = NULL - will always return false (or NULL, more precisely). Previous - releases automatically transformed this syntax to IS - NULL. The old behavior can be re-enabled using a - postgresql.conf parameter. - - - - - - The pg_hba.conf and pg_ident.conf - configuration is now only reloaded after receiving a - SIGHUP signal, not with each connection. - - - - - - The function octet_length() now returns the uncompressed data length. - - - - - - The date/time value 'current' is no longer - available. You will need to rewrite your applications. - - - - - - The timestamp(), time(), - and interval() functions are no longer - available. Instead of timestamp(), use - timestamp 'string' or CAST. - - - - - - - The SELECT ... LIMIT #,# syntax will be removed - in the next release. You should change your queries to use - separate LIMIT and OFFSET clauses, e.g. LIMIT 10 OFFSET - 20. - - - - - Changes - - - Server Operation - -Create temporary files in a separate directory (Bruce) -Delete orphaned temporary files on postmaster startup (Bruce) -Added unique indexes to some system tables (Tom) -System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom) -Renamed pg_log to pg_clog (Tom) -Enable SIGTERM, SIGQUIT to kill backends (Jan) -Removed compile-time limit on number of backends (Tom) -Better cleanup for semaphore resource failure (Tatsuo, Tom) -Allow safe transaction ID wraparound (Tom) -Removed OIDs from some system tables (Tom) -Removed "triggered data change violation" error check (Tom) -SPI portal creation of prepared/saved plans (Jan) -Allow SPI column functions to work for system columns (Tom) -Long value compression improvement (Tom) -Statistics collector for table, index access (Jan) -Truncate extra-long sequence names to a reasonable value (Tom) -Measure transaction times in milliseconds (Thomas) -Fix TID sequential scans (Hiroshi) -Superuser ID now fixed at 1 (Peter E) -New pg_ctl "reload" option (Tom) - - - - - Performance - -Optimizer improvements (Tom) -New histogram column statistics for optimizer (Tom) -Reuse write-ahead log files rather than discarding them (Tom) -Cache improvements (Tom) -IS NULL, IS NOT NULL optimizer improvement (Tom) -Improve lock manager to reduce lock contention (Tom) -Keep relcache entries for index access support functions (Tom) -Allow better selectivity with NaN and infinities in NUMERIC (Tom) -R-tree performance improvements (Kenneth Been) -B-tree splits more efficient (Tom) - - - - - Privileges - -Change UPDATE, DELETE privileges to be distinct (Peter E) -New REFERENCES, TRIGGER privileges (Peter E) -Allow GRANT/REVOKE to/from more than one user at a time (Peter E) -New has_table_privilege() function (Joe Conway) -Allow non-superuser to vacuum database (Tom) -New SET SESSION AUTHORIZATION command (Peter E) -Fix bug in privilege modifications on newly created tables (Tom) -Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom) - - - - - Client Authentication - -Fork postmaster before doing authentication to prevent hangs (Peter E) -Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce) -Add a password authentication method that uses MD5 encryption (Bruce) -Allow encryption of stored passwords using MD5 (Bruce) -PAM authentication (Dominic J. Eidson) -Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce) - - - - - Server Configuration - -Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce) -New parameter to set default transaction isolation level (Peter E) -New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E) -New parameter to control memory usage by VACUUM (Tom) -New parameter to set client authentication timeout (Tom) -New parameter to set maximum number of open files (Tom) - - - - - Queries - -Statements added by INSERT rules now execute after the INSERT (Jan) -Prevent unadorned relation names in target list (Bruce) -NULLs now sort after all normal values in ORDER BY (Tom) -New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom) -New SHARE UPDATE EXCLUSIVE lock mode (Tom) -New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout) -Fix problem with LIMIT and subqueries (Tom) -Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom) -Fix nested EXCEPT/INTERSECT (Tom) - - - - - Schema Manipulation - -Fix SERIAL in temporary tables (Bruce) -Allow temporary sequences (Bruce) -Sequences now use int8 internally (Tom) -New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom) -Make OIDs optional using WITHOUT OIDS (Tom) -Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor) -Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne) -New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry) -Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne) -Allow column renaming in views -Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner) -Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo) -ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner) -DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom) -Add automatic return type data casting for SQL functions (Tom) -Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom) -Enable partial indexes (Martijn van Oosterhout) - - - - - Utility Commands - -Add RESET ALL, SHOW ALL (Marko Kreen) -CREATE/ALTER USER/GROUP now allow options in any order (Vince) -Add LOCK A, B, C functionality (Neil Padgett) -New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce) -New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom) -Disable COPY TO/FROM on views (Bruce) -COPY DELIMITERS string must be exactly one character (Tom) -VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout) -Fix privilege checks for CREATE INDEX (Tom) -Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom) - - - - - Data Types and Functions - -SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom) -Add convert(), convert2() (Tatsuo) -New function bit_length() (Peter E) -Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo) -CHAR(), VARCHAR() now reject strings that are too long (Peter E) -BIT VARYING now rejects bit strings that are too long (Peter E) -BIT now rejects bit strings that do not match declared size (Peter E) -INET, CIDR text conversion functions (Alex Pilosov) -INET, CIDR operators << and <<= indexable (Alex Pilosov) -Bytea \### now requires valid three digit octal number -Bytea comparison improvements, now supports =, <>, >, >=, <, and <= -Bytea now supports B-tree indexes -Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE -Bytea now supports concatenation -New bytea functions: position, substring, trim, btrim, and length -New encode() function mode, "escaped", converts minimally escaped bytea to/from text -Add pg_database_encoding_max_length() (Tatsuo) -Add pg_client_encoding() function (Tatsuo) -now() returns time with millisecond precision (Thomas) -New TIMESTAMP WITHOUT TIMEZONE data type (Thomas) -Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas) -New xid/int comparison functions (Hiroshi) -Add precision to TIME, TIMESTAMP, and INTERVAL data types (Thomas) -Modify type coercion logic to attempt binary-compatible functions first (Tom) -New encode() function installed by default (Marko Kreen) -Improved to_*() conversion functions (Karel Zak) -Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo) -New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen) -Correct description of translate() function (Bruce) -Add INTERVAL argument for SET TIME ZONE (Thomas) -Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas) -Optimize length functions when using single-byte encodings (Tatsuo) -Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom) -octet_length(text) now returns non-compressed length (Tatsuo, Bruce) -Handle "July" full name in date/time literals (Greg Sabino Mullane) -Some datatype() function calls now evaluated differently -Add support for Julian and ISO time specifications (Thomas) - - - - - Internationalization - -National language support in psql, pg_dump, libpq, and server (Peter E) -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) -Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo) -Add LATIN5,6,7,8,9,10 support (Tatsuo) -Add ISO 8859-5,6,7,8 support (Tatsuo) -Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo) -Make mic2ascii() non-ASCII aware (Tatsuo) -Reject invalid multibyte character sequences (Tatsuo) - - - - - <application>PL/pgSQL</> - -Now uses portals for SELECT loops, allowing huge result sets (Jan) -CURSOR and REFCURSOR support (Jan) -Can now return open cursors (Jan) -Add ELSEIF (Klaus Reger) -Improve PL/pgSQL error reporting, including location of error (Tom) -Allow IS or FOR key words in cursor declaration, for compatibility (Bruce) -Fix for SELECT ... FOR UPDATE (Tom) -Fix for PERFORM returning multiple rows (Tom) -Make PL/pgSQL use the server's type coercion code (Tom) -Memory leak fix (Jan, Tom) -Make trailing semicolon optional (Tom) - - - - - PL/Perl - -New untrusted PL/Perl (Alex Pilosov) -PL/Perl is now built on some platforms even if libperl is not shared (Peter E) - - - - - PL/Tcl - -Now reports errorInfo (Vsevolod Lobko) -Add spi_lastoid function (bob@redivi.com) - - - - - PL/Python - -...is new (Andrew Bosma) - - - - - <application>psql</> - -\d displays indexes in unique, primary groupings (Christopher Kings-Lynne) -Allow trailing semicolons in backslash commands (Greg Sabino Mullane) -Read password from /dev/tty if possible -Force new password prompt when changing user and database (Tatsuo, Tom) -Format the correct number of columns for Unicode (Patrice) - - - - - <application>libpq</> - -New function PQescapeString() to escape quotes in command strings (Florian Weimer) -New function PQescapeBytea() escapes binary strings for use as SQL string literals - - - - - JDBC - -Return OID of INSERT (Ken K) -Handle more data types (Ken K) -Handle single quotes and newlines in strings (Ken K) -Handle NULL variables (Ken K) -Fix for time zone handling (Barry Lind) -Improved Druid support -Allow eight-bit characters with non-multibyte server (Barry Lind) -Support BIT, BINARY types (Ned Wolpert) -Reduce memory usage (Michael Stephens, Dave Cramer) -Update DatabaseMetaData (Peter E) -Add DatabaseMetaData.getCatalogs() (Peter E) -Encoding fixes (Anders Bengtsson) -Get/setCatalog methods (Jason Davies) -DatabaseMetaData.getColumns() now returns column defaults (Jason Davies) -DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen) -Some JDBC1 and JDBC2 merging (Anders Bengtsson) -Transaction performance improvements (Barry Lind) -Array fixes (Greg Zoller) -Serialize addition -Fix batch processing (Rene Pijlman) -ExecSQL method reorganization (Anders Bengtsson) -GetColumn() fixes (Jeroen van Vianen) -Fix isWriteable() function (Rene Pijlman) -Improved passage of JDBC2 conformance tests (Rene Pijlman) -Add bytea type capability (Barry Lind) -Add isNullable() (Rene Pijlman) -JDBC date/time test suite fixes (Liam Stewart) -Fix for SELECT 'id' AS xxx FROM table (Dave Cramer) -Fix DatabaseMetaData to show precision properly (Mark Lillywhite) -New getImported/getExported keys (Jason Davies) -MD5 password encryption support (Jeremy Wohl) -Fix to actually use type cache (Ned Wolpert) - - - - - ODBC - -Remove query size limit (Hiroshi) -Remove text field size limit (Hiroshi) -Fix for SQLPrimaryKeys in multibyte mode (Hiroshi) -Allow ODBC procedure calls (Hiroshi) -Improve boolean handing (Aidan Mountford) -Most configuration options now settable via DSN (Hiroshi) -Multibyte, performance fixes (Hiroshi) -Allow driver to be used with iODBC or unixODBC (Peter E) -MD5 password encryption support (Bruce) -Add more compatibility functions to odbc.sql (Peter E) - - - - - <application>ECPG</> - -EXECUTE ... INTO implemented (Christof Petig) -Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig) -Fix for GRANT parameters (Lee Kindness) -Fix INITIALLY DEFERRED bug -Various bug fixes (Michael, Christof Petig) -Auto allocation for indicator variable arrays (int *ind_p=NULL) -Auto allocation for string arrays (char **foo_pp=NULL) -ECPGfree_auto_mem fixed -All function names with external linkage are now prefixed by ECPG -Fixes for arrays of structures (Michael) - - - - - Misc. Interfaces - -Python fix fetchone() (Gerhard Haring) -Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max) -Add Tcl COPY TO/FROM (ljb) -Prevent output of default index op class in pg_dump (Tom) -Fix libpgeasy memory leak (Bruce) - - - - - Build and Install - -Configure, dynamic loader, and shared library fixes (Peter E) -Fixes in QNX 4 port (Bernd Tegge) -Fixes in Cygwin and Windows ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov) -Fix for Windows socket communication failures (Magnus, Mikhail Terekhov) -Hurd compile fix (Oliver Elphick) -BeOS fixes (Cyril Velter) -Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo) -AIX fixes (Tatsuo, Andreas) -Fix parallel make (Peter E) -Install SQL language manual pages into OS-specific directories (Peter E) -Rename config.h to pg_config.h (Peter E) -Reorganize installation layout of header files (Peter E) - - - - - Source Code - -Remove SEP_CHAR (Bruce) -New GUC hooks (Tom) -Merge GUC and command line handling (Marko Kreen) -Remove EXTEND INDEX (Martijn van Oosterhout, Tom) -New pgjindent utility to indent java code (Bruce) -Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom) -pgindent fixes (Bruce, Tom) -Replace strcasecmp() with strcmp() where appropriate (Peter E) -Dynahash portability improvements (Tom) -Add 'volatile' usage in spinlock structures -Improve signal handling logic (Tom) - - - - - Contrib - -New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev) -New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev) -Add contrib/dblink for remote database access (Joe Conway) -contrib/ora2pg Oracle conversion utility (Gilles Darold) -contrib/xml XML conversion utility (John Gray) -contrib/fulltextindex fixes (Christopher Kings-Lynne) -New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway) -Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov) -New pg_upgrade utility (Bruce) -Add new pg_resetxlog options (Bruce, Tom) - - - - - - - - Release 7.1.3 - - - Release date - 2001-08-15 - - - - Migration to Version 7.1.3 - - - A dump/restore is not required for those running - 7.1.X. - - - - - Changes - - - -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) - - - - - - - - Release 7.1.2 - - - Release date - 2001-05-11 - - - - This has one fix from 7.1.1. - - - - - Migration to Version 7.1.2 - - - A dump/restore is not required for those running - 7.1.X. - - - - - Changes - - - -Fix PL/pgSQL SELECTs when returning no rows -Fix for psql backslash core dump -Referential integrity privilege fix -Optimizer fixes -pg_dump cleanups - - - - - - - - Release 7.1.1 - - - Release date - 2001-05-05 - - - - This has a variety of fixes from 7.1. - - - - - Migration to Version 7.1.1 - - - A dump/restore is not required for those running - 7.1. - - - - - Changes - - - -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) - - - - - - - - Release 7.1 - - - Release date - 2001-04-13 - - - - This release focuses on removing limitations that have existed in the - PostgreSQL code for many years. - - - - Major changes in this release: - - - - - - Write-ahead Log (WAL) - - - -To maintain database consistency in case of an operating system crash, -previous releases of PostgreSQL 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. - - - - - - - TOAST - - - - 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. - - - - - - - Outer Joins - - - -We now support outer joins. The UNION/NOT IN -workaround for outer joins is no longer required. We use the SQL92 -outer join syntax. - - - - - - - Function Manager - - - -The previous C function manager did not -handle null values properly, nor did it support 64-bit CPU'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. - - - - - - - Complex Queries - - - -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. - - - - - - - - Migration to Version 7.1 - - - A dump/restore using pg_dump is required for those wishing to migrate - data from any previous release. - - - - - Changes - - - -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 - - - - - - - - Release 7.0.3 - - - Release date - 2000-11-11 - - - - This has a variety of fixes from 7.0.2. - - - - - Migration to Version 7.0.3 - - - A dump/restore is not required for those running - 7.0.*. - - - - - Changes - - - -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) - - - - - - - - Release 7.0.2 - - - Release date - 2000-06-05 - - - - This is a repackaging of 7.0.1 with added documentation. - - - - - Migration to Version 7.0.2 - - - A dump/restore is not required for those running - 7.*. - - - - - Changes - - - -Added documentation to tarball. - - - - - - - - Release 7.0.1 - - - Release date - 2000-06-01 - - - - This is a cleanup release for 7.0. - - - - Migration to Version 7.0.1 - - - A dump/restore is not required for those running - 7.0. - - - - - Changes - - - -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) - - - - - - - Release 7.0 - - - Release date - 2000-05-08 - - - - This release contains improvements in many areas, demonstrating - the continued growth of PostgreSQL. - 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. - - - - Major changes in this release: - - - - - - Foreign Keys - - - - 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. - - - - - - - Optimizer Overhaul - - - - Continuing on work started a year ago, the optimizer has been - improved, allowing better query plan selection and faster performance - with less memory usage. - - - - - - - Updated psql - - - - psql, our interactive terminal monitor, has been - updated with a variety of new features. See the psql manual page for details. - - - - - - - Join Syntax - - - - SQL92 join syntax is now supported, though only as - INNER JOIN for this release. JOIN, - NATURAL JOIN, JOIN/USING, - and JOIN/ON are available, as are - column correlation names. - - - - - - - - Migration to Version 7.0 - - - A dump/restore using pg_dump - is required for those wishing to migrate data from any - previous release of PostgreSQL. - For those upgrading from 6.5.*, you can instead use - pg_upgrade to upgrade to this - release; however, a full dump/reload installation is always the - most robust method for upgrades. - - - - Interface and compatibility issues to consider for the new - release include: - - - - - - The date/time types datetime and - timespan have been superseded by the - SQL92-defined types timestamp and - interval. Although there has been some effort to - ease the transition by allowing - PostgreSQL to recognize - the deprecated type names and translate them to the new type - names, this mechanism cannot be completely transparent to - your existing application. - - - - - - 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. - - - - - - The JDBC and ODBC - interfaces have been upgraded and extended. - - - - - - The string function CHAR_LENGTH is now a - native function. Previous versions translated this into a call - to LENGTH, which could result in - ambiguity with other types implementing - LENGTH such as the geometric types. - - - - - - - Changes - - - -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 jens@jens.de) -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 mascarim@yahoo.com) -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 gatgul@voicenet.com -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 lamj@stat.cmu.edu) -Fixes for Alpha compiles -New multibyte encodings - - - - - - - Release 6.5.3 - - - Release date - 1999-10-13 - - - - This is basically a cleanup release for 6.5.2. We have added a new - PgAccess that was missing in 6.5.2, and installed an NT-specific fix. - - - - - Migration to Version 6.5.3 - - - A dump/restore is not required for those running - 6.5.*. - - - - Changes - - - -Updated version of pgaccess 0.98 -NT-specific patch -Fix dumping rules on inherited tables - - - - - - - - Release 6.5.2 - - - Release date - 1999-09-15 - - - - This is basically a cleanup release for 6.5.1. We have fixed a variety of - problems reported by 6.5.1 users. - - - - - Migration to Version 6.5.2 - - - A dump/restore is not required for those running - 6.5.*. - - - - - Changes - - - -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 - - - - - - - Release 6.5.1 - - - Release date - 1999-07-15 - - - - This is basically a cleanup release for 6.5. We have fixed a variety of - problems reported by 6.5 users. - - - - Migration to Version 6.5.1 - - - A dump/restore is not required for those running - 6.5. - - - - - Changes - - - -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) - - - - - - - Release 6.5 - - - Release date - 1999-06-09 - - - - 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. - - - - Here is a brief summary of the more notable changes: - - - - - Multiversion concurrency control(MVCC) - - - - 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 - PostgreSQL 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. - - - - - - - Hot backups from pg_dump - - - - pg_dump takes advantage of the new - MVCC features to give a consistent database dump/backup while - the database stays online and available for queries. - - - - - - - Numeric data type - - - - We now have a true numeric data type, with - user-specified precision. - - - - - - - Temporary tables - - - - Temporary tables are guaranteed to have unique names - within a database session, and are destroyed on session exit. - - - - - - - New SQL features - - - - 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. - - - - - - - Speedups - - - - We continue to speed up PostgreSQL, - thanks to the variety of talents within our team. We have - sped up memory allocation, optimization, table joins, and row - transfer routines. - - - - - - - Ports - - - - We continue to expand our port list, this time including - Windows NT/ix86 and NetBSD/arm32. - - - - - - - Interfaces - - - - Most interfaces have new versions, and existing functionality - has been improved. - - - - - - - Documentation - - - - New and updated material is present throughout the - documentation. New FAQs have been - contributed for SGI and AIX platforms. - The Tutorial has introductory information - on SQL from Stefan Simkovics. - For the User's Guide, there are - reference pages covering the postmaster and more utility - programs, and a new appendix - contains details on date/time behavior. - The Administrator's Guide has a new - chapter on troubleshooting from Tom Lane. - And the Programmer's Guide has a - description of query processing, also from Stefan, and details - on obtaining the PostgreSQL source - tree via anonymous CVS and - CVSup. - - - - - - - - Migration to Version 6.5 - - - A dump/restore using pg_dump - is required for those wishing to migrate data from any - previous release of PostgreSQL. - pg_upgrade can not - be used to upgrade to this release because the on-disk structure - of the tables has changed compared to previous releases. - - - - The new Multiversion Concurrency Control (MVCC) features can - give somewhat different behaviors in multiuser - environments. Read and understand the following section - to ensure that your existing applications will give you the - behavior you need. - - - - Multiversion Concurrency Control - - - 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 - SELECT 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. - - - - To ensure the actual existence of a row and protect it against - concurrent updates one must use SELECT FOR UPDATE or - an appropriate LOCK TABLE statement. This should be - taken into account when porting applications from previous releases of - PostgreSQL and other environments. - - - - Keep the above in mind if you are using - contrib/refint.* triggers for - referential integrity. Additional techniques are required now. One way is - to use LOCK parent_table IN SHARE ROW EXCLUSIVE MODE - command if a transaction is going to update/delete a primary key and - use LOCK parent_table IN SHARE MODE command if a - transaction is going to update/insert a foreign key. - - - - Note that if you run a transaction in SERIALIZABLE mode then you must - execute the LOCK commands above before execution of any - DML statement - (SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO) in the - transaction. - - - - - - 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. - - - - - - Changes - - - -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) - - - - - - - -Release 6.4.2 - - - Release date - 1998-12-20 - - - -The 6.4.1 release was improperly packaged. This also has one additional -bug fix. - - - - -Migration to Version 6.4.2 - - -A dump/restore is not required for those running -6.4.*. - - - -Changes - - - -Fix for datetime constant problem on some platforms(Thomas) - - - - - - - - -Release 6.4.1 - - - Release date - 1998-12-18 - - - -This is basically a cleanup release for 6.4. We have fixed a variety of -problems reported by 6.4 users. - - - - -Migration to Version 6.4.1 - - -A dump/restore is not required for those running -6.4. - - - -Changes - - - -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) - - - - - - - - -Release 6.4 - - - Release date - 1998-10-30 - - - -There are many 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: - - - - -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 Programmer's Guide. - - - - -Jan also contributed a second procedural language, PL/pgSQL, to go with the -original PL/pgTCL procedural language he contributed last release. - - - - - -We have optional multiple-byte character set support from Tatsuo Ishii -to complement our existing locale support. - - - - - -Client/server communications has been cleaned up, with better support for -asynchronous messages and interrupts thanks to Tom Lane. - - - - - -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 PostgreSQL. -There is a new chapter in the User's Guide -which covers this topic. - - - - - -Three new data types have been added. -Two types, inet and cidr, 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 User's Guide for details. -A fourth type, serial, is now supported by the parser as an -amalgam of the int4 type, a sequence, and a unique index. - - - - - -Several more SQL92-compatible syntax features have been -added, including INSERT DEFAULT VALUES - - - - - -The automatic configuration and installation system has received some -attention, and should be more robust for more platforms than it has ever -been. - - - - - - - -Migration to Version 6.4 - - -A dump/restore using pg_dump -or pg_dumpall -is required for those wishing to migrate data from any -previous release of PostgreSQL. - - - - -Changes - - - -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) - - - - - - -Release 6.3.2 - - - Release date - 1998-04-07 - - - -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. - - -Summary: - - - - -Repairs automatic configuration support for some platforms, including Linux, -from breakage inadvertently introduced in version 6.3.1. - - - - - -Correctly handles function calls on the left side of BETWEEN and LIKE clauses. - - - - - - -A dump/restore is NOT required for those running 6.3 or 6.3.1. A -make distclean, make, and 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 PostgreSQL libraries. - - -For upgrades from pre-6.3 installations, -refer to the installation and migration instructions for version 6.3. - - - - Changes - - - -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) - - - - - - - Release 6.3.1 - - - Release date - 1998-03-23 - - - - Summary: - - - - -Additional support for multibyte character sets. - - - - - -Repair byte ordering for mixed-endian clients and servers. - - - - - -Minor updates to allowed SQL syntax. - - - - - -Improvements to the configuration autodetection for installation. - - - - - - -A dump/restore is NOT required for those running 6.3. A -make distclean, make, and 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 PostgreSQL libraries. - - -For upgrades from pre-6.3 installations, -refer to the installation and migration instructions for version 6.3. - - - - Changes - - - -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) - - - - - - - Release 6.3 - - - Release date - 1998-03-01 - - - - There are many new features and improvements in this release. - Here is a brief, incomplete summary: - - - - - Many new SQL features, including - full SQL92 subselect capability - (everything is here but target-list subselects). - - - - - - Support for client-side environment variables to specify time zone and date style. - - - - - - Socket interface for client/server connection. This is the default now - so you might need to start postmaster with the - flag. - - - - - - Better password authorization mechanisms. Default table privileges have changed. - - - - - - Old-style time travel - has been removed. Performance has been improved. - - - - - - - - Bruce Momjian wrote the following notes to introduce the new release. - - - - - 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. - - - 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. - - - 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 pg_hba.conf. Also, for this - reason, the format of pg_hba.conf has changed. - - - Third, char() fields will now allow faster access than varchar() or - text. Specifically, the text and varchar() have a penalty for access to - any columns after the first column of this type. char() 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 varchar() or text. This and other - changes make 6.3 even faster than earlier releases. - - - We now have passwords definable independent of any Unix file. There are - new SQL USER commands. - See the Administrator's Guide 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 postgres 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. - - - 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. - - - We also have real deadlock detection code. No more sixty-second - timeouts. And the new locking code implements a FIFO better, so there - should be less resource starvation during heavy use. - - - 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. - - - For performance reasons, time travel is gone, but can be implemented - using triggers (see pgsql/contrib/spi/README). 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 /pgsql/interfaces for some new - ways to talk to PostgreSQL. - - - 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. - - - - Migration to Version 6.3 - - - A dump/restore using pg_dump - or pg_dumpall - is required for those wishing to migrate data from any - previous release of PostgreSQL. - - - - - Changes - - - -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 PostgreSQL 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 PostgreSQL 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) - - - - - - -Release 6.2.1 - - - Release date - 1997-10-17 - - - -6.2.1 is a bug-fix and usability release on 6.2. - - -Summary: - - - - -Allow strings to span lines, per SQL92. - - - - - -Include example trigger function for inserting user names on table updates. - - - - - - -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. - - - -Migration from version 6.2 to version 6.2.1 - - -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. - - -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. - - -Another way to avoid dump/reload is to use the following SQL command -from psql to update the existing system table: - - - update pg_aggregate set aggfinalfn = 'cash_div_flt8' - where aggname = 'avg' and aggbasetype = 790; - - - -This will need to be done to every existing database, including template1. - - - - - Changes - - - -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) - - - - - - -Release 6.2 - - - Release date - 1997-10-02 - - - -A dump/restore is required for those wishing to migrate data from -previous releases of PostgreSQL. - - - -Migration from version 6.1 to version 6.2 - - -This migration requires a complete dump of the 6.1 database and a -restore of the database in 6.2. - - -Note that the pg_dump and pg_dumpall utility from 6.2 should be used -to dump the 6.1 database. - - - - -Migration from version 1.<replaceable>x</> to version 6.2 - - -Those migrating from earlier 1.* releases should first upgrade to 1.09 -because the COPY output format was improved from the 1.02 release. - - - - - Changes - - - -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) - - - - - - -Release 6.1.1 - - - Release date - 1997-07-22 - - - -Migration from version 6.1 to version 6.1.1 - - -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. - - - - - Changes - - - -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) - - - - - - -Release 6.1 - - - Release date - 1997-06-08 - - - - The regression tests have been adapted and extensively modified for the - 6.1 release of PostgreSQL. - - - - Three new data types (datetime, timespan, and circle) have been added to - the native set of PostgreSQL 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. - - - - PostgreSQL 6.1 introduces a new, alternate -optimizer which uses genetic - 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 - set geqo to 'off' and reset geqo. - - - - 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 ./expected/*.out files reflect this - new interpretation, which might not be correct! - - - - The float8 regression test fails on at least some platforms. This is due - to differences in implementations of pow() and exp() and the signaling - mechanisms used for overflow and underflow conditions. - - - - The random results in the random test should cause the - random test to be failed, since the - regression tests are evaluated using a simple diff. However, - random does not seem to produce random results on my test - machine (Linux/gcc/i686). - - - -Migration to Version 6.1 - - -This migration requires a complete dump of the 6.0 database and a -restore of the database in 6.1. - - -Those migrating from earlier 1.* releases should first upgrade to 1.09 -because the COPY output format was improved from the 1.02 release. - - - - - Changes - - - -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 - - - - - - -Release 6.0 - - - Release date - 1997-01-29 - - - -A dump/restore is required for those wishing to migrate data from -previous releases of PostgreSQL. - - - -Migration from version 1.09 to version 6.0 - - -This migration requires a complete dump of the 1.09 database and a -restore of the database in 6.0. - - - - -Migration from pre-1.09 to version 6.0 - - -Those migrating from earlier 1.* releases should first upgrade to 1.09 -because the COPY output format was improved from the 1.02 release. - - - - - Changes - - - -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 - - - - - - -Release 1.09 - - - Release date - 1996-11-04 - - - -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. - - - - -Release 1.02 - - - Release date - 1996-08-01 - - - -Migration from version 1.02 to version 1.02.1 - - -Here is a new migration file for 1.02.1. It includes the 'copy' change -and a script to convert old ASCII files. - - - -The following notes are for the benefit of users who want to migrate -databases from Postgres95 1.01 and 1.02 to Postgres95 1.02.1. - - -If you are starting afresh with Postgres95 1.02.1 and do not need -to migrate old databases, you do not need to read any further. - - - - -In order to upgrade older Postgres95 version 1.01 or 1.02 databases to -version 1.02.1, the following steps are required: - - - - -Start up a new 1.02.1 postmaster - - - - -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 psql. If your - 1.01 or 1.02 database is named testdb and you have cut the commands - from the end of this file and saved them in addfunc.sql: - - % psql testdb -f addfunc.sql - - -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. - - - - - - -Dump/Reload Procedure - - -If you are trying to reload a pg_dump or text-mode, copy tablename to -stdout generated with a previous version, you will need to run the -attached sed 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. - - - sed 's/^\.$/\\./g' <in_file >out_file - - - -If you are loading an older binary copy or non-stdout copy, there is no -end-of-data character, and hence no conversion necessary. - - --- 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); - - - - - -Changes - - - -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 - - - - +&release-8.4; +&release-8.3; +&release-8.2; +&release-8.1; +&release-8.0; +&release-7.4; +&release-old; - -Release 1.01 - - - Release date - 1996-02-23 - - - - -Migration from version 1.0 to version 1.01 - - -The following notes are for the benefit of users who want to migrate -databases from Postgres95 1.0 to Postgres95 1.01. - - -If you are starting afresh with Postgres95 1.01 and do not need -to migrate old databases, you do not need to read any further. - - -In order to Postgres95 version 1.01 with databases created with -Postgres95 version 1.0, the following steps are required: - - - - -Set the definition of NAMEDATALEN in src/Makefile.global to 16 - and OIDNAMELEN to 20. - - - - -Decide whether you want to use Host based authentication. - - - - -If you do, you must create a file name pg_hba in your top-level data - directory (typically the value of your $PGDATA). src/libpq/pg_hba - shows an example syntax. - - - - -If you do not want host-based authentication, you can comment out - the line: - - HBA = 1 - - in src/Makefile.global - - - 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. - - - - - - - -Compile and install 1.01, but DO NOT do the initdb step. - - - - -Before doing anything else, terminate your 1.0 postmaster, and - backup your existing $PGDATA directory. - - - - -Set your PGDATA environment variable to your 1.0 databases, but set up - path up so that 1.01 binaries are being used. - - - - -Modify the file $PGDATA/PG_VERSION from 5.0 to 5.1 - - - - -Start up a new 1.01 postmaster - - - - -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 psql. - If your 1.0 database is name testdb: - - - % psql testdb -f 1.0_to_1.01.sql - - -and then execute the following commands (cut and paste from here): - - --- 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); - - - - - - - -Changes - - - -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 - - - - - - -Release 1.0 - - - Release date - 1995-09-05 - - - -Changes - - - -Copyright change: - * The copyright of Postgres 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 - - - - - - -<productname>Postgres95</productname> Release 0.03 - - - Release date - 1995-07-21 - - - -Changes - - -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. - - - - - - -<productname>Postgres95</productname> Release 0.02 - - - Release date - 1995-05-25 - - - -Changes - - - -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 - - - - - - -<productname>Postgres95</productname> Release 0.01 - - - Release date - 1995-05-01 - - - -Initial release. - - - - - Timing Results - - - These timing results are from running the regression test with the commands - - -% cd src/test/regress -% make all -% time make runtest - - - - 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. - - - - Version 6.5 - - - 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. - - - - Timing with fsync() disabled: - - - 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 - - - - - Timing with fsync() enabled: - - - Time System - 04:21 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486 - - - For the Linux system above, using UW-SCSI disks rather than (older) IDE - disks leads to a 50% improvement in speed on the regression test. - - - - -Version 6.4beta - - -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!). - - - - Time System - 02:26 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486 - - - - - -Version 6.3 - - -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!). - - - - 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 - - - - - -Version 6.1 - - - - 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 - - - - -]]>