Re: Confused about TransactionIdSetTreeStatus

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: Confused about TransactionIdSetTreeStatus
Дата
Msg-id 8eaf673a-b434-54c8-c31f-8c624b9b5fb3@iki.fi
обсуждение исходный текст
Ответ на Confused about TransactionIdSetTreeStatus  (Japin Li <japinli@hotmail.com>)
Ответы Re: Confused about TransactionIdSetTreeStatus  (Japin Li <japinli@hotmail.com>)
Список 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




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

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: Re: [PATCH] Add `verify-system` sslmode to use system CA pool for server cert
Следующее
От: David Christensen
Дата:
Сообщение: Re: [PATCHES] Post-special page storage TDE support