]> granicus.if.org Git - postgresql/commitdiff
Set replication origin when decoding commit records.
authorAndres Freund <andres@anarazel.de>
Sun, 8 Nov 2015 22:01:53 +0000 (23:01 +0100)
committerAndres Freund <andres@anarazel.de>
Sun, 8 Nov 2015 23:03:35 +0000 (00:03 +0100)
By accident the replication origin was not set properly in
DecodeCommit(). That's bad because the origin is passed to the output
plugins origin filter, and accessible from the output plugin via
ReorderBufferTXN->origin_id.  Accessing the origin of individual changes
worked before the fix, which is why this wasn't notices earlier.

Reported-By: Craig Ringer
Author: Craig Ringer
Discussion: CAMsr+YFhBJLp=qfSz3-J+0P1zLkE8zNXM2otycn20QRMx380gw@mail.gmail.com
Backpatch: 9.5, where replication origins where introduced

src/backend/replication/logical/decode.c

index c629da317ebc9a6c3639a2c8dc9c72ea5ce9417e..9f606875c862c4d6fa5b00787b348f5cdec09590 100644 (file)
@@ -450,7 +450,7 @@ DecodeCommit(LogicalDecodingContext *ctx, XLogRecordBuffer *buf,
 {
        XLogRecPtr      origin_lsn = InvalidXLogRecPtr;
        XLogRecPtr      commit_time = InvalidXLogRecPtr;
-       XLogRecPtr      origin_id = InvalidRepOriginId;
+       XLogRecPtr      origin_id = XLogRecGetOrigin(buf->record);
        int                     i;
 
        if (parsed->xinfo & XACT_XINFO_HAS_ORIGIN)