Re: [HACKERS] logical decoding of two-phase transactions

Поиск
Список
Период
Сортировка
От Dilip Kumar
Тема Re: [HACKERS] logical decoding of two-phase transactions
Дата
Msg-id CAFiTN-sjAJ6mHpUJYCqiHF6-8+u-6sQWHQg5dUEH8LhdeASNwg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [HACKERS] logical decoding of two-phase transactions  (Amit Kapila <amit.kapila16@gmail.com>)
Ответы Re: [HACKERS] logical decoding of two-phase transactions  (Amit Kapila <amit.kapila16@gmail.com>)
Список pgsql-hackers
On Wed, Sep 30, 2020 at 2:36 PM Amit Kapila <amit.kapila16@gmail.com> wrote:
>
> On Tue, Sep 29, 2020 at 8:04 PM Dilip Kumar <dilipbalaut@gmail.com> wrote:
> >
> > I have started looking into you latest patches,  as of now I have a
> > few comments.
> >
> > v6-0001
> >
> > @@ -1987,7 +2072,7 @@ ReorderBufferProcessTXN(ReorderBuffer *rb,
> > ReorderBufferTXN *txn,
> >   prev_lsn = change->lsn;
> >
> >   /* Set the current xid to detect concurrent aborts. */
> > - if (streaming)
> > + if (streaming || rbtxn_prepared(change->txn))
> >   {
> >   curtxn = change->txn;
> >   SetupCheckXidLive(curtxn->xid);
> > @@ -2249,7 +2334,6 @@ ReorderBufferProcessTXN(ReorderBuffer *rb,
> > ReorderBufferTXN *txn,
> >   break;
> >   }
> >   }
> > -
> >
> > For streaming transaction we need to check the xid everytime because
> > there could concurrent a subtransaction abort, but
> > for two-phase we don't need to call SetupCheckXidLive everytime,
> > because we are sure that transaction is going to be
> > the same throughout the processing.
> >
>
> While decoding transactions at 'prepare' time there could be multiple
> sub-transactions like in the case below. Won't that be impacted if we
> follow your suggestion here?
>
> postgres=# Begin;
> BEGIN
> postgres=*# insert into t1 values(1,'aaa');
> INSERT 0 1
> postgres=*# savepoint s1;
> SAVEPOINT
> postgres=*# insert into t1 values(2,'aaa');
> INSERT 0 1
> postgres=*# savepoint s2;
> SAVEPOINT
> postgres=*# insert into t1 values(3,'aaa');
> INSERT 0 1
> postgres=*# Prepare Transaction 'foo';
> PREPARE TRANSACTION

But once we prepare the transaction, we can not rollback individual
subtransaction.  We can only rollback the main transaction so instead
of setting individual subxact  as CheckXidLive, we can just set the
main XID so no need to check on every command. Just set it before
start processing.


-- 
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Amit Kapila
Дата:
Сообщение: Re: Resetting spilled txn statistics in pg_stat_replication
Следующее
От: Amit Kapila
Дата:
Сообщение: Re: Logical replication CPU-bound with TRUNCATE/DROP/CREATE many tables