pgsql: Make HEAP_LOCK/HEAP2_LOCK_UPDATED replay reset HEAP_XMAX_INVALID - Mailing list pgsql-committers

From Andres Freund
Subject pgsql: Make HEAP_LOCK/HEAP2_LOCK_UPDATED replay reset HEAP_XMAX_INVALID
Date
Msg-id E1bOBBe-000534-U9@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Make HEAP_LOCK/HEAP2_LOCK_UPDATED replay reset HEAP_XMAX_INVALID.

0ac5ad5 started to compress infomask bits in WAL records. Unfortunately
the replay routines for XLOG_HEAP_LOCK/XLOG_HEAP2_LOCK_UPDATED forgot to
reset the HEAP_XMAX_INVALID (and some other) hint bits.

Luckily that's not problematic in the majority of cases, because after a
crash/on a standby row locks aren't meaningful. Unfortunately that does
not hold true in the presence of prepared transactions. This means that
after a crash, or after promotion, row level locks held by a prepared,
but not yet committed, prepared transaction might not be enforced.

Discussion: 20160715192319.ubfuzim4zv3rqnxv@alap3.anarazel.de
Backpatch: 9.3, the oldest branch on which 0ac5ad5 is present.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/a4d357bfbd56bd876817fb74f46525dbb3184bc2

Modified Files
--------------
src/backend/access/heap/heapam.c | 4 ++++
1 file changed, 4 insertions(+)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Avoid invalidating all foreign-join cached plans when user mappi
Next
From: Andres Freund
Date:
Subject: pgsql: Make HEAP_LOCK/HEAP2_LOCK_UPDATED replay reset HEAP_XMAX_INVALID