pgsql: Correct logical decoding restore behaviour for subtransactions. - Mailing list pgsql-committers

From Andres Freund
Subject pgsql: Correct logical decoding restore behaviour for subtransactions.
Date
Msg-id E1brI93-0006Ce-NS@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Correct logical decoding restore behaviour for subtransactions.

Before initializing iteration over a subtransaction's changes, the last
few changes were not spilled to disk. That's correct if the transaction
didn't spill to disk, but otherwise... This bug can lead to missed or
misorderd subtransaction contents when they were spilled to disk.

Move spilling of the remaining in-memory changes to
ReorderBufferIterTXNInit(), where it can easily be applied to the top
transaction and, if present, subtransactions.

Since this code had too many bugs already, noticeably increase test
coverage.

Fixes: #14319
Reported-By: Huan Ruan
Discussion: <20160909012610.20024.58169@wrigleys.postgresql.org>
Backport: 9,4-, where logical decoding was added

Branch
------
REL9_5_STABLE

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

Modified Files
--------------
contrib/test_decoding/Makefile                  |   2 +-
contrib/test_decoding/expected/spill.out        | 256 ++++++++++++++++++++++++
contrib/test_decoding/sql/spill.sql             | 179 +++++++++++++++++
src/backend/replication/logical/reorderbuffer.c |  13 +-
4 files changed, 444 insertions(+), 6 deletions(-)


pgsql-committers by date:

Previous
From: Andres Freund
Date:
Subject: pgsql: Correct logical decoding restore behaviour for subtransactions.
Next
From: Heikki Linnakangas
Date:
Subject: pgsql: Update comment.