diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/replication/logical/tablesync.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/backend/replication/logical/tablesync.c b/src/backend/replication/logical/tablesync.c index 108326bef1c..b4b48d92cf4 100644 --- a/src/backend/replication/logical/tablesync.c +++ b/src/backend/replication/logical/tablesync.c @@ -705,17 +705,20 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos) { char *slotname; char *err; + char relstate; + XLogRecPtr relstate_lsn; /* Check the state of the table synchronization. */ StartTransactionCommand(); + relstate = GetSubscriptionRelState(MyLogicalRepWorker->subid, + MyLogicalRepWorker->relid, + &relstate_lsn, false); + CommitTransactionCommand(); + SpinLockAcquire(&MyLogicalRepWorker->relmutex); - MyLogicalRepWorker->relstate = - GetSubscriptionRelState(MyLogicalRepWorker->subid, - MyLogicalRepWorker->relid, - &MyLogicalRepWorker->relstate_lsn, - false); + MyLogicalRepWorker->relstate = relstate; + MyLogicalRepWorker->relstate_lsn = relstate_lsn; SpinLockRelease(&MyLogicalRepWorker->relmutex); - CommitTransactionCommand(); /* * To build a slot name for the sync work, we are limited to NAMEDATALEN - |