Re: Add notification on BEGIN ATOMIC SQL functions using temp relations
Jim Jones <jim.jones@uni-muenster.de>
From: Jim Jones <jim.jones@uni-muenster.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: "David G. Johnston" <david.g.johnston@gmail.com>,
Pavel Stehule <pavel.stehule@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-09-21T22:02:21Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Improve detection of implicitly-temporary views.
- 698fa924b11a 19 (unreleased) landed
-
Issue a NOTICE if a created function depends on any temp objects.
- 572c40ba94ef 19 (unreleased) landed
Attachments
- v2-0001-Disallow-BEGIN-ATOMIC-functions-depending-on-temp.patch (text/x-patch) patch v2-0001
On 9/21/25 19:34, Tom Lane wrote: > Jim Jones <jim.jones@uni-muenster.de> writes: >> That's indeed a much larger problem. Calling it from a session silently >> delivers a "wrong" result --- I was expecting an error. > > Yeah, me too. See > > https://www.postgresql.org/message-id/2736425.1758475979%40sss.pgh.pa.us > The attached PoC now raises an ERROR instead of a WARNING. A boolean is now computed in fmgr_sql_validator(), set to true if the function has a prosqlbody (BEGIN ATOMIC) and is defined in a non-temporary schema. This flag is then used to call check_sql_fn_statements(). In check_sql_fn_statements(): if the new flag is true, it scans the function body and raises an error if any temporary relations are found; if it's false, it skips that check. In returning.sql there was a query that creates a BEGIN ATOMIC function using on a temporary table. I changed the table to permanent. Best regards, Jim