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.
--
Regrads,
Japin Li.
ChengDu WenWu Information Technology Co.,Ltd.
From c079d8f33a0eb65b8ee9fc1f53c6c358e7ea1516 Mon Sep 17 00:00:00 2001
From: Japin Li <japinli@hotmail.com>
Date: Tue, 25 Oct 2022 23:00:22 +0800
Subject: [PATCH v1 1/1] Remove outdated comment for TransactionIdSetTreeStatus
Commit 06da3c570f eliminates the marking of subtransactions as
SUBCOMMITTED in pg_clog during their commit, however, it introduces
an outdated comment.
---
src/backend/access/transam/clog.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index a7dfcfb4da..77d9894dab 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -146,9 +146,7 @@ static void TransactionIdSetPageStatusInternal(TransactionId xid, int nsubxids,
* 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
+ * page1: set t,t1 as committed
* 3. update pages2-3:
* page2: set t2,t3 as committed
* page3: set t4 as committed
--
2.25.1