]> granicus.if.org Git - postgresql/commitdiff
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:19 +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 3ea80253d36aad44a3d6acea632d1d6903618ea3..f44533eb7f75b8ee26aa8963eaf2eacd1342df76 100644 (file)
@@ -284,7 +284,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 43ec8e494399a62646614ba3dfeff3594b211df9..901e95ede4f6aa70f0c852f6572f8d43ec03f283 100644 (file)
@@ -592,7 +592,7 @@ SnapBuildExportSnapshot(SnapBuild *builder)
                TransactionId safeXid;
 
                LWLockAcquire(ProcArrayLock, LW_SHARED);
-               safeXid = GetOldestSafeDecodingTransactionId(true);
+               safeXid = GetOldestSafeDecodingTransactionId(false);
                LWLockRelease(ProcArrayLock);
 
                Assert(TransactionIdPrecedesOrEquals(safeXid, snap->xmin));