Re: Confused about TransactionIdSetTreeStatus

From: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
To: Japin Li <japinli(at)hotmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Confused about TransactionIdSetTreeStatus
Date: 2022-10-25 14:46:49
Message-ID: 8eaf673a-b434-54c8-c31f-8c624b9b5fb3@iki.fi
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 25/10/2022 12:02, Japin Li wrote:
> I'm a bit confused about TransactionIdSetTreeStatus, the comment says if
> subtransactions cross multiple CLOG pages, it will mark the subxids, that
> are on the same page as the main transaction, as sub-committed, and then
> set main transaction and subtransactions to committed (step 2).
>
> * Example:
> * TransactionId t commits and has subxids t1, t2, t3, t4
> * t is on page p1, t1 is also on p1, t2 and t3 are on p2, t4 is on p3
> * 1. update pages2-3:
> * page2: set t2,t3 as sub-committed
> * page3: set t4 as sub-committed
> * 2. update page1:
> * set t1 as sub-committed,
> * then set t as committed,
> then set t1 as committed
> * 3. update pages2-3:
> * page2: set t2,t3 as committed
> * page3: set t4 as committed
>
> However, the code marks the main transaction and subtransactions directly
> to the committed.

Hmm, yeah, step 2 in this example doesn't match reality. We actually set
t and t1 directly as committed. The explanation above that comment is
correct, but the example is not. It used to work the way the example
says, but that was changed in commit
06da3c570f21394003fc392d80f54862f7dec19f. Ironically, that commit also
added the outdated comment.

The correct example would be:

TransactionId t commits and has subxids t1, t2, t3, t4 t is on page p1,
t1 is also on p1, t2 and t3 are on p2, t4 is on p3
1. update pages2-3:
page2: set t2,t3 as sub-committed
page3: set t4 as sub-committed
2. update page1:
page1: set t,t1 as committed,
3. update pages2-3:
page2: set t2,t3 as committed
page3: set t4 as committed

- Heikki

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message David Christensen 2022-10-25 14:55:21 Re: [PATCHES] Post-special page storage TDE support
Previous Message Andrew Dunstan 2022-10-25 14:26:41 Re: [PATCH] Add `verify-system` sslmode to use system CA pool for server cert