The fix for locales and plperl in 8.0.6 might make an REINDEX necessary.
Changes from 8.0.5 to 8.0.6:
- Fix Windows code so that postmaster will continue rather than exit if
there is no more room in ShmemBackendArray (Magnus)
- 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)
- Set locale environment variables during postmaster startup to ensure
that plperl won't change the locale later
- Allow more flexible relocation of installation directories (Tom)
- 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)
- 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)
Changes from 8.0.6 to 8.0.7:
- Fix potential crash in SET SESSION AUTHORIZATION (CVE-2006-0553)
- Fix bug with row visibility logic in self-inserted rows (Tom)
- 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)
Changes since 8.0.4:
* 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
previous 8.0.x release, no dump-and-restore is necessary. Changes
from version 8.0.3 include:
postgresql80-client:
- Clarify comment for pgsql-hier-query option to note that it is
considered buggy by PostgreSQL developers.
* Make psql -f filename return a nonzero exit code when opening the
file fails
* Change pg_dump to handle inherited check constraints more reliably
postgresql80-server:
* 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
* Fix PL/PgSQL to handle var := var correctly when the variable is of
pass-by-reference type
postgresql80-plperl:
* Fix PL/Perl %_SHARED so it's actually shared
of "ldopts" used to link in the embedded perl interpreter. This fixes
PR pkg/31293.
The PostgreSQL configure code tries to be extra-clever with only using
its own logic for determining which directories to add to the rpath.
However, we don't really need PostgreSQL's configure to do this since
the Perl config already provides the full set of flags for linking,
including the appropriate rpath flags, and the rpaths flags determined
by Perl (at least in pkgsrc) are guaranteed to match the ones needed
PostgreSQL to link the plperl.so module.
Bump the PKGREVISION of databases/postgresql80-plperl to 1.
* Become maintainer for the postgresql80-* packages (ok'd by recht)
* Libtoolize postgresql80 build so that the shared libraries and
loadable shared modules are built using libtool. This should make
PostgreSQL 8.0.x in pkgsrc build correctly on more pkgsrc-supported
platforms. This is accomplished with the Makefile.libtool file
which replaces the Makefile.shlib file in the PostgreSQL distribution.
* Add libltdl modifications from the postgresql74-* packages so that
this can work on Interix (untested).
* Fix some mismatches between static function declarations and their
subsesquent definitions in the src/timezone module. Fixes provided
by Georg Schwarz.
* Convert PGSQL_USE_HIER into the PKG_OPTION "pgsql-hier-query", and
teach both postgresql80-client and postgresql80-server to use it.
* Use BUILDLINK_TRANSFORM's "rm" action to remove unwanted compiler
flags.
* Remove zlib/buildlink3.mk from postgresql80-client/buildlink3.mk
as zlib is only used by the pg_dump client.
* Convert some files in files/* into patches that can be fed back
to the PostgreSQL team.
* Install data and documentation files into share/postgresql instead
of share/postgresql80 -- it's only possible to install one PostgreSQL
version at a time in pkgsrc, and the new paths more closely match
the rest of the installation paths.
* Add more mirrors to the MASTER_SITES list, and add a new variable
POSTGRESQL_MIRRORS_SORT that has the same syntax as MASTER_SORT that
can help people pick a nearby mirror.
* Nuke references to libpgtcl which is no longer distributed as part
of a standard PostgreSQL installation as of version 8.0.
* Provide better documentation for Makefile.custom.
* Avoid linking in the pthread library in the correct way on NetBSD
by setting DLOPEN_REQUIRE_PTHREADS=no. Also, provide better
documentation on why we can't enable thread-safety in the PostgreSQL
libraries on NetBSD (at least for now).
* Preliminary support for installing postgresql80-* into a separate
subdirectory under ${LOCALBASE} so possibly allow for multiple
installations of PostgreSQL on the same machine. Note that THIS
DOES NOT WORK YET.
* Update the hierarchical-queries patch to "8.0.3-0.5.5" which fixes
a bug which was crashing the backend when PRIOR was used in the
target list. The _level_ column is no longer automatically added
to target list. This makes it possible to use hierarchical queries
as IN subqueries. To get _level_ back you just have to explicitly
mention it in target list.
Bump the following PKGREVISIONs:
postgresql80-client -> 2
postgresql80-server -> 2
postgresql80 -> 1
This release contains a variety of fixes from 8.0.2, including several
security-related issues.
__________________________________________________________________
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 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 procedure given
below. The errors at least allow unprivileged database users to crash
their server process, and may 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 "REINDEX"ed 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
pkgsrc specific change:
Instead of setting CONFIGURE_ART let configure find the template to use
iteself.
While at it do some structual changes to packages and merge
the lib and docs package has been merged into the client package.
Also enable Rendezvous support on Darwin.
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 "fsync_writethrough"
(Magnus, Bruce)
This setting causes PostgreSQL to write through any disk-drive
write cache when writing to WAL. This behavior was formerly called
"fsync", but was renamed because it acts quite differently from
"fsync" on other platforms.
* Enable the wal_sync_method setting of "open_datasync" on Windows,
and make it the default for that platform (Magnus, Bruce)
Because the default is no longer "fsync_writethrough", data loss is
possible during a power failure if the disk drive has write caching
enabled. To turn off the write cache on Windows, from the Device
Manager, choose the drive properties, then Policies.
* 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 "eventlog" (Magnus)
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)
for those wishing to migrate data from any previous release.
Major changes relative to 7.4.x:
* Savepoints
* Point-in-Time recovery
* Tablespaces
* Improved buffer management
* ALTER TABLE column management improvements
Full list of changes is available at:
http://www.postgresql.org/docs/8.0/static/release.html#RELEASE-8-0
Also note that PostgreSQL server listens also on localhost (127.0.0.1)
by default now.