diff options
Diffstat (limited to 'src/backend/replication/logical/reorderbuffer.c')
-rw-r--r-- | src/backend/replication/logical/reorderbuffer.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c index e2a502c4431..6ad7e7de76c 100644 --- a/src/backend/replication/logical/reorderbuffer.c +++ b/src/backend/replication/logical/reorderbuffer.c @@ -935,8 +935,12 @@ ReorderBufferIterTXNInit(ReorderBuffer *rb, ReorderBufferTXN *txn) ReorderBufferChange *cur_change; if (txn->nentries != txn->nentries_mem) + { + /* serialize remaining changes */ + ReorderBufferSerializeTXN(rb, txn); ReorderBufferRestoreChanges(rb, txn, &state->entries[off].fd, &state->entries[off].segno); + } cur_change = dlist_head_element(ReorderBufferChange, node, &txn->changes); @@ -960,10 +964,13 @@ ReorderBufferIterTXNInit(ReorderBuffer *rb, ReorderBufferTXN *txn) ReorderBufferChange *cur_change; if (cur_txn->nentries != cur_txn->nentries_mem) + { + /* serialize remaining changes */ + ReorderBufferSerializeTXN(rb, cur_txn); ReorderBufferRestoreChanges(rb, cur_txn, &state->entries[off].fd, &state->entries[off].segno); - + } cur_change = dlist_head_element(ReorderBufferChange, node, &cur_txn->changes); @@ -1367,10 +1374,6 @@ ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid, txn->origin_id = origin_id; txn->origin_lsn = origin_lsn; - /* serialize the last bunch of changes if we need start earlier anyway */ - if (txn->nentries_mem != txn->nentries) - ReorderBufferSerializeTXN(rb, txn); - /* * If this transaction didn't have any real changes in our database, it's * OK not to have a snapshot. Note that ReorderBufferCommitChild will have |