Re: BUG #18280: logical decoding build wrong snapshot for subtransactions
feichanghong <feichanghong@qq.com>
From: feichanghong <feichanghong@qq.com>
To: Amit Kapila <amit.kapila16@gmail.com>
Cc: pgsql-bugs <pgsql-bugs@lists.postgresql.org>
Date: 2024-01-23T12:27:59Z
Lists: pgsql-bugs
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix catalog lookup due to wrong snapshot for subtransactions during decoding.
- b793a416bfa8 15.6 landed
- 6b77048e571d 14.11 landed
-
Fix catalog lookup with the wrong snapshot during logical decoding.
- 272248a0c1b1 15.0 cited
Thank you for your attention. > On Jan 23, 2024, at 19:42, Amit Kapila <amit.kapila16@gmail.com> wrote: > > On Wed, Jan 10, 2024 at 7:56 PM feichanghong <feichanghong@qq.com> wrote: >> >>> SnapBuildXidSetCatalogChanges (introduced in 272248a) skipping the check for >>> the sub-transactions when the parent transaction has been marked as >>> containing catalog changes should be the root cause of the problem. >> >> My fix is to remove the ReorderBufferXidHasCatalogChanges condition from the SnapBuildXidSetCatalogChanges function. This approach has a false positive; the subtransactions that didn't change catalog to the snapshot are also added to the commit list. But that won't be a problem since we use snapshot built during decoding only to read system catalogs, as 272248a's commit message says. >> > > Thanks, your analysis sounds correct to me. BTW, I think this should > occur only in 15 and 14 because in prior branches we didn't check if > the xact has catalog changes before marking its subxacts. From 16 > onwards, we already accurately serialize the xacts and subxacts that > have made any catalog changes, so this problem shouldn't be there. Can > you please once verify the same? > Yes, I verified versions 11 to 16 one by one, and this problem only occurs in 14 and 15. Best Regards, Fei Changhong Alibaba Cloud Computing Ltd.