From: | Andy Fan <zhihuifan1213(at)163(dot)com> |
---|---|
To: | Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Cc: | Andres Freund <andres(at)anarazel(dot)de> |
Subject: | FullTransactionIdAdvance question |
Date: | 2024-09-20 09:38:40 |
Message-ID: | 87frpu4qcf.fsf@163.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
static inline void
FullTransactionIdAdvance(FullTransactionId *dest)
{
dest->value++;
/* see FullTransactionIdAdvance() */
if (FullTransactionIdPrecedes(*dest, FirstNormalFullTransactionId))
return;
while (XidFromFullTransactionId(*dest) < FirstNormalTransactionId)
dest->value++;
}
I understand this functiona as: 'dest->value++' increases the epoch when
necessary and we don't want use the TransactionId which is smaller than
FirstNormalTransactionId. But what is the point of the below code:
/* see FullTransactionIdAdvance() */
if (FullTransactionIdPrecedes(*dest, FirstNormalFullTransactionId))
return;
It looks to me it will be never true(I added a 'Assert(false);' above
the return, make check-world pass). and if it is true somehow, retruning
a XID which is smaller than FirstNormalTransactionId looks strange as
well. IIUC, should we remove it to save a prediction on each
GetNewTransactionId call?
--
Best Regards
Andy Fan
From | Date | Subject | |
---|---|---|---|
Next Message | shveta malik | 2024-09-20 09:44:14 | Re: Allow logical failover slots to wait on synchronous replication |
Previous Message | Hayato Kuroda (Fujitsu) | 2024-09-20 09:36:10 | RE: Using per-transaction memory contexts for storing decoded tuples |