On Wed, Aug 16, 2023 at 7:57 PM Tomas Vondra <tomas.von...@enterprisedb.com> wrote: >
I was reading through 0001, I noticed this comment in ReorderBufferSequenceIsTransactional() function + * To decide if a sequence change should be handled as transactional or applied + * immediately, we track (sequence) relfilenodes created by each transaction. + * We don't know if the current sub-transaction was already assigned to the + * top-level transaction, so we need to check all transactions. It says "We don't know if the current sub-transaction was already assigned to the top-level transaction, so we need to check all transactions". But IIRC as part of the steaming of in-progress transactions we have ensured that whenever we are logging the first change by any subtransaction we include the top transaction ID in it. Refer this code LogicalDecodingProcessRecord(LogicalDecodingContext *ctx, XLogReaderState *record) { ... /* * If the top-level xid is valid, we need to assign the subxact to the * top-level xact. We need to do this for all records, hence we do it * before the switch. */ if (TransactionIdIsValid(txid)) { ReorderBufferAssignChild(ctx->reorder, txid, XLogRecGetXid(record), buf.origptr); } } -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com