Re:[BUG] Incorrect historic snapshot may be serialized to disk during fast-forwarding

From: ocean_li_996 <ocean_li_996(at)163(dot)com>
To: cca5507 <cca5507(at)qq(dot)com>
Cc: pgsql-hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re:[BUG] Incorrect historic snapshot may be serialized to disk during fast-forwarding
Date: 2025-11-23 02:15:24
Message-ID: 1f1c51f3.4ed.19aae7e9de0.Coremail.ocean_li_996@163.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi ChangAo,

Thanks for your analyze and report.

At 2025-11-23 00:07:59, "cca5507" <cca5507(at)qq(dot)com> wrote:
>The main reason is that we don't handle XLOG_HEAP2_NEW_CID during fast-forwarding, so we don't consider the insert as having a catalog change.

Yeah. Refers to code below:
```
case XLOG_HEAP2_NEW_CID:
if (!ctx->fast_forward)
{
xl_heap_new_cid *xlrec;

xlrec = (xl_heap_new_cid *) XLogRecGetData(buf->record);
SnapBuildProcessNewCid(builder, xid, buf->origptr, xlrec);

break;
}
```
It is clear that transaction is skipped set has catalog change (in SnapBuildProcessNewCid) duraing fast forward.

However, in practice this does not cause any actual issues, because for the "real" system catalogs (those not

specified via user_catalog_table and thus critical for decoding), any HEAP2_NEW_CID changes are always accompanied

by some invalid messages. As a result, they are ultimately marked as catalog changes.

Still, from a code perspective, I would prefer fixing this behavior for logical consistency across the snapshot

builder, even if it doesn’t manifest as a runtime problem today. But we can not provide a test case.

>Attach a patch to fix it.

The patch in attachment is better for me. What do you think?

Bset regards,
Haiyang Li

Attachment Content-Type Size
v2-0001-Handle-XLOG_HEAP2_NEW_CID-in-fast-forward.patch application/octet-stream 1.5 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Thomas Munro 2025-11-23 03:10:15 Re: PRI?64 vs Visual Studio (2022)
Previous Message * Neustradamus * 2025-11-23 01:44:18 Re: RFC 9266: Channel Bindings for TLS 1.3 support