Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Fix thinko introduced in 2bef06d516460 et al.
authorAndres Freund <andres@anarazel.de>
Sun, 6 Aug 2017 03:52:53 +0000 (20:52 -0700)
committerAndres Freund <andres@anarazel.de>
Sun, 6 Aug 2017 21:21:25 +0000 (14:21 -0700)
The callers for GetOldestSafeDecodingTransactionId() all inverted the
argument for the argument introduced in 2bef06d516460. Luckily this
appears to be inconsequential for the moment, as we wait for
concurrent in-progress transaction when assembling a
snapshot. Additionally this could only make a difference when adding a
second logical slot, because only a pre-existing slot could cause an
issue by lowering the returned xid dangerously much.

Reported-By: Antonin Houska
Discussion: https://postgr.es/m/32704.1496993134@localhost
Backport: 9.4-, where 2bef06d516460 was backpatched to.

src/backend/replication/logical/logical.c
src/backend/replication/logical/snapbuild.c

index 6a570d0e81088861404a2a9adeadcbfa67d77c5f..3745edb445d4598266d5ae9d48dcba5f6ef5d009 100644 (file)
@@ -327,7 +327,7 @@ CreateInitDecodingContext(char *plugin,
     */
    LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE);
 
-   xmin_horizon = GetOldestSafeDecodingTransactionId(need_full_snapshot);
+   xmin_horizon = GetOldestSafeDecodingTransactionId(!need_full_snapshot);
 
    slot->effective_catalog_xmin = xmin_horizon;
    slot->data.catalog_xmin = xmin_horizon;
index 9359fc2386db4dedab37508a228e9ea0c3bf0dcf..03ca4ba6f6118f65616e562ed52c0da382b38f38 100644 (file)
@@ -595,7 +595,7 @@ SnapBuildExportSnapshot(SnapBuild *builder)
        TransactionId safeXid;
 
        LWLockAcquire(ProcArrayLock, LW_SHARED);
-       safeXid = GetOldestSafeDecodingTransactionId(true);
+       safeXid = GetOldestSafeDecodingTransactionId(false);
        LWLockRelease(ProcArrayLock);
 
        Assert(TransactionIdPrecedesOrEquals(safeXid, snap->xmin));