Re: logical decoding and replication of sequences, take 2
От | Dilip Kumar |
---|---|
Тема | Re: logical decoding and replication of sequences, take 2 |
Дата | |
Msg-id | CAFiTN-sA0fs6xAsqDGOO7i5avz-jQ-i9-xZR4Wk7J9C=4n0BQg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: logical decoding and replication of sequences, take 2 (Tomas Vondra <tomas.vondra@enterprisedb.com>) |
Ответы |
Re: logical decoding and replication of sequences, take 2
Re: logical decoding and replication of sequences, take 2 |
Список | pgsql-hackers |
On Wed, Aug 16, 2023 at 7:57 PM Tomas Vondra <tomas.vondra@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
В списке pgsql-hackers по дате отправления: