Hi,
On 2020-07-20 17:27:30 +0300, Marko Tiikkaja wrote:
> It appears that when logical decoding sends out the data from the output
> plugin, it is not guaranteed that the decoded transaction's effects are
> visible on the source server. Is this the way it's supposed to work?
At the moment the visibility behaviour is basically the same as crash
recovery / standbys. And they just look at the WAL...
> If so, would doing something like this in the output plugin be reasonable?
>
> TransactionId xid = transaction->xid;
> if (transaction->is_known_as_subxact)
> xid = transaction->toplevel_xid;
>
> if (TransactionIdIsInProgress(xid))
> XactLockTableWait(xid, NULL, NULL, XLTW_None);
I'd not be surprised if this had a potential to cause deadlocks.
Greetings,
Andres Freund