From: | Heikki Linnakangas <hlinnaka(at)iki(dot)fi> |
---|---|
To: | Noah Misch <noah(at)leadboat(dot)com> |
Cc: | Andres Freund <andres(at)anarazel(dot)de>, Nathan Bossart <nathandbossart(at)gmail(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: A few patches to clarify snapshot management |
Date: | 2025-08-22 10:36:29 |
Message-ID: | 1cc5c19e-c9fd-4abe-a528-f5c60c8dab3d@iki.fi |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 20/08/2025 03:37, Noah Misch wrote:
> On Tue, Aug 19, 2025 at 11:45:01PM +0300, Heikki Linnakangas wrote:
>> How about the attached, then? It reverts the GetTransactionSnapshot()
>> change. But to still catch at least some of the invalid uses of the historic
>> snapshot, it adds checks to heap_beginscan() and index_beginscan(), to
>> complain if they are called on a non-catalog relation with a historic
>> snapshot.
>
>> @@ -1143,6 +1143,15 @@ heap_beginscan(Relation relation, Snapshot snapshot,
>> if (!(snapshot && IsMVCCSnapshot(snapshot)))
>> scan->rs_base.rs_flags &= ~SO_ALLOW_PAGEMODE;
>>
>> + /* Check that a historic snapshot is not used for non-catalog tables */
>> + if (snapshot &&
>> + IsHistoricMVCCSnapshot(snapshot) &&
>> + !RelationIsAccessibleInLogicalDecoding(relation))
>> + {
>> + elog(ERROR, "cannot query non-catalog table \"%s\" during logical decoding",
>> + RelationGetRelationName(relation));
>> + }
>> +
>
> I feel post-beta3 is late for debut of restrictions like this. How about a
> pure revert, then add those restrictions in v19? Should be s/elog/ereport/,
> also.
Ok, fair. I committed the revert to v18, and the revert + additional
checks to master.
- Heikki
From | Date | Subject | |
---|---|---|---|
Next Message | Maxim Orlov | 2025-08-22 10:37:21 | Re: Add 64-bit XIDs into PostgreSQL 15 |
Previous Message | Dilip Kumar | 2025-08-22 10:34:33 | Potential problem in commit f777d773878 and 4f7f7b03758 |