## E.168. Release 9.2.1

Release date: 2012-09-24

This release contains a variety of fixes from 9.2.0. For information about new features in the 9.2 major release, see Section E.169.

### E.168.1. Migration to Version 9.2.1

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

However, you may need to perform `REINDEX` and/or `VACUUM` operations to recover from the effects of the data corruption bug described in the first changelog item below.

### E.168.2. Changes

- Fix persistence marking of shared buffers during WAL replay (Jeff Davis)

  This mistake can result in buffers not being written out during checkpoints, resulting in data corruption if the server later crashes without ever having written those buffers. Corruption can occur on any server following crash recovery, but it is significantly more likely to occur on standby slave servers since those perform much more WAL replay. There is a low probability of corruption of btree and GIN indexes. There is a much higher probability of corruption of table “visibility maps”, which might lead to wrong answers from index-only scans. Table data proper cannot be corrupted by this bug.

  While no index corruption due to this bug is known to have occurred in the field, as a precautionary measure it is recommended that production installations `REINDEX` all btree and GIN indexes at a convenient time after upgrading to 9.2.1.

  Also, it is recommended to perform a `VACUUM` of all tables while having `vacuum_freeze_table_age` set to zero. This will fix any incorrect visibility map data. `vacuum_cost_delay` can be adjusted to reduce the performance impact of vacuuming, while causing it to take longer to finish.

- Fix possible incorrect sorting of output from queries involving `WHERE `indexed_column` IN (`list_of_values`)` (Tom Lane)

- Fix planner failure for queries involving `GROUP BY` expressions along with window functions and aggregates (Tom Lane)

- Fix planner's assignment of executor parameters (Tom Lane)

  This error could result in wrong answers from queries that scan the same `WITH` subquery multiple times.

- Improve planner's handling of join conditions in index scans (Tom Lane)

- Improve selectivity estimation for text search queries involving prefixes, i.e. `word``:*` patterns (Tom Lane)

- Fix delayed recognition of permissions changes (Tom Lane)

  A command that needed no locks other than ones its transaction already had might fail to notice a concurrent `GRANT` or `REVOKE` that committed since the start of its transaction.

- Fix `ANALYZE` to not fail when a column is a domain over an array type (Tom Lane)

- Prevent PL/Perl from crashing if a recursive PL/Perl function is redefined while being executed (Tom Lane)

- Work around possible misoptimization in PL/Perl (Tom Lane)

  Some Linux distributions contain an incorrect version of `pthread.h` that results in incorrect compiled code in PL/Perl, leading to crashes if a PL/Perl function calls another one that throws an error.

- Remove unnecessary dependency on pg_config from pg_upgrade (Peter Eisentraut)

- Update time zone data files to tzdata release 2012f for DST law changes in Fiji