## E.308. 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 Section E.317.

### E.308.1. 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 Section E.309.

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