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

### E.339.1. Migration to Version 8.0.1

A dump/restore is not required for those running 8.0.0.

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