Handle duplicate XIDs in txid_snapshot.

Heikki Linnakangas <heikki.linnakangas@iki.fi>

Commit: 479a36f23479417eb50b4eac74c0c0e1ce9cd7ee
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: 2014-05-15T15:31:00Z
Releases: 9.2.9
Handle duplicate XIDs in txid_snapshot.

The proc array can contain duplicate XIDs, when a transaction is just being
prepared for two-phase commit. To cope, remove any duplicates in
txid_current_snapshot(). Also ignore duplicates in the input functions, so
that if e.g. you have an old pg_dump file that already contains duplicates,
it will be accepted.

Report and fix by Jan Wieck. Backpatch to all supported versions.

Files

PathChange+/−
src/backend/utils/adt/txid.c modified +47 −12
src/test/regress/expected/txid.out modified +6 −4
src/test/regress/sql/txid.sql modified +1 −1