## E.338. 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 Section E.340.

### E.338.1. 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.

### E.338.2. 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)