Re: Confused about TransactionIdSetTreeStatus

Heikki Linnakangas <hlinnaka@iki.fi>

From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Japin Li <japinli@hotmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-10-25T19:44:46Z
Lists: pgsql-hackers
On 25/10/2022 18:09, Japin Li wrote:
> 
> On Tue, 25 Oct 2022 at 22:46, Heikki Linnakangas <hlinnaka@iki.fi> wrote:
>> On 25/10/2022 12:02, Japin Li wrote:
>>> 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
> 
> Thanks for your explanation.  Attach a patch to remove the outdated comment.

Applied, thanks!

- Heikki




Commits

  1. Update outdated comment for TransactionIdSetTreeStatus

  2. Rework subtransaction commit protocol for hot standby.