## E.108. Release 9.1.24

Release date: 2016-10-27

This release contains a variety of fixes from 9.1.23. For information about new features in the 9.1 major release, see Section E.132.

This is expected to be the last PostgreSQL release in the 9.1.X series. Users are encouraged to update to a newer release branch soon.

### E.108.1. Migration to Version 9.1.24

A dump/restore is not required for those running 9.1.X.

However, if you are upgrading from a version earlier than 9.1.16, see Section E.116.

### E.108.2. Changes

- Fix EvalPlanQual rechecks involving CTE scans (Tom Lane)

  The recheck would always see the CTE as returning no rows, typically leading to failure to update rows that were recently updated.

- Fix improper repetition of previous results from hashed aggregation in a subquery (Andrew Gierth)

  The test to see if we can reuse a previously-computed hash table of the aggregate state values neglected the possibility of an outer query reference appearing in an aggregate argument expression. A change in the value of such a reference should lead to recalculating the hash table, but did not.

- Fix timeout length when `VACUUM` is waiting for exclusive table lock so that it can truncate the table (Simon Riggs)

  The timeout was meant to be 50 milliseconds, but it was actually only 50 microseconds, causing `VACUUM` to give up on truncation much more easily than intended. Set it to the intended value.

- Remove artificial restrictions on the values accepted by `numeric_in()` and `numeric_recv()` (Tom Lane)

  We allow numeric values up to the limit of the storage format (more than `1e100000`), so it seems fairly pointless that `numeric_in()` rejected scientific-notation exponents above 1000. Likewise, it was silly for `numeric_recv()` to reject more than 1000 digits in an input value.

- Avoid very-low-probability data corruption due to testing tuple visibility without holding buffer lock (Thomas Munro, Peter Geoghegan, Tom Lane)

- Fix file descriptor leakage when truncating a temporary relation of more than 1GB (Andres Freund)

- Disallow starting a standalone backend with `standby_mode` turned on (Michael Paquier)

  This can't do anything useful, since there will be no WAL receiver process to fetch more WAL data; and it could result in misbehavior in code that wasn't designed with this situation in mind.

- Don't try to share SSL contexts across multiple connections in libpq (Heikki Linnakangas)

  This led to assorted corner-case bugs, particularly when trying to use different SSL parameters for different connections.

- Avoid corner-case memory leak in libpq (Tom Lane)

  The reported problem involved leaking an error report during `PQreset()`, but there might be related cases.

- Make ecpg's `--help` and `--version` options work consistently with our other executables (Haribabu Kommi)

- Fix `contrib/intarray/bench/bench.pl` to print the results of the `EXPLAIN` it does when given the `-e` option (Daniel Gustafsson)

- Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane)

  If a dynamic time zone abbreviation does not match any entry in the referenced time zone, treat it as equivalent to the time zone name. This avoids unexpected failures when IANA removes abbreviations from their time zone database, as they did in tzdata release 2016f and seem likely to do again in the future. The consequences were not limited to not recognizing the individual abbreviation; any mismatch caused the `pg_timezone_abbrevs` view to fail altogether.

- Update time zone data files to tzdata release 2016h for DST law changes in Palestine and Turkey, plus historical corrections for Turkey and some regions of Russia. Switch to numeric abbreviations for some time zones in Antarctica, the former Soviet Union, and Sri Lanka.

  The IANA time zone database previously provided textual abbreviations for all time zones, sometimes making up abbreviations that have little or no currency among the local population. They are in process of reversing that policy in favor of using numeric UTC offsets in zones where there is no evidence of real-world use of an English abbreviation. At least for the time being, PostgreSQL will continue to accept such removed abbreviations for timestamp input. But they will not be shown in the `pg_timezone_names` view nor used for output.

  In this update, `AMT` is no longer shown as being in use to mean Armenia Time. Therefore, we have changed the `Default` abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4.