pgsql: logical decoding: old/newtuple in spooled UPDATE changes was swi

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: logical decoding: old/newtuple in spooled UPDATE changes was swi
Date: 2016-03-06 02:16:50
Message-ID: E1acOFW-0001Z9-0e@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

logical decoding: old/newtuple in spooled UPDATE changes was switched around.

Somehow I managed to flip the order of restoring old & new tuples when
de-spooling a change in a large transaction from disk. This happens to
only take effect when a change is spooled to disk which has old/new
versions of the tuple. That only is the case for UPDATEs where he
primary key changed or where replica identity is changed to FULL.

The tests didn't catch this because either spooled updates, or updates
that changed primary keys, were tested; not both at the same time.

Found while adding tests for the following commit.

Backpatch: 9.4, where logical decoding was added

Branch
------
REL9_5_STABLE

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

Modified Files
--------------
contrib/test_decoding/expected/ddl.out | 15 +++++++++++++++
contrib/test_decoding/sql/ddl.sql | 12 ++++++++++++
src/backend/replication/logical/reorderbuffer.c | 20 ++++++++++----------
3 files changed, 37 insertions(+), 10 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Andres Freund 2016-03-06 02:16:52 pgsql: logical decoding: Tell reorderbuffer about all xids.
Previous Message Andres Freund 2016-03-06 02:16:47 pgsql: logical decoding: Tell reorderbuffer about all xids.