Fix typo in ReorderBufferIterTXNInit().
authorTom Lane
Thu, 30 Jun 2016 16:37:02 +0000 (12:37 -0400)
committerTom Lane
Thu, 30 Jun 2016 16:37:02 +0000 (12:37 -0400)
This looks like it would cause changes from subtransactions to be missed
by the iterator being constructed, if those changes had been spilled to
disk previously.  This implies that large subtransactions might be lost
(in whole or in part) by logical replication.  Found and fixed by
Petru-Florin Mihancea, per bug #14208.

Report: <20160622144830[email protected]>

src/backend/replication/logical/reorderbuffer.c

index 1b6aa7b60f27318a198779def428433dfad27122..9b5642a51627a1047c1bd778b178784236fbe132 100644 (file)
@@ -897,7 +897,7 @@ ReorderBufferIterTXNInit(ReorderBuffer *rb, ReorderBufferTXN *txn)
        {
            ReorderBufferChange *cur_change;
 
-           if (txn->nentries != txn->nentries_mem)
+           if (cur_txn->nentries != cur_txn->nentries_mem)
                ReorderBufferRestoreChanges(rb, cur_txn,
                                            &state->entries[off].fd,
                                            &state->entries[off].segno);