This release contains a variety of fixes from 8.0.1. For information about new features in the 8.0 major release, see Section E.122, « Release 8.0 ».
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.
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)