Re: SQL:2011 Application Time Update & Delete
Paul A Jungwirth <pj@illuminatedcomputing.com>
From: Paul A Jungwirth <pj@illuminatedcomputing.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Peter Eisentraut <peter@eisentraut.org>, Chao Li <li.evan.chao@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-20T15:48:31Z
Lists: pgsql-hackers
On Mon, Apr 20, 2026 at 7:33 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> > I was curious why execSRF.c uses `rsinfo.isDone != ExprMultipleResult`
> > for the finalize parameter, because I don't think a SRF should ever
> > return ExprSingleResult, right? So I guess it is just to be cautious.
> > Makes sense. I followed that approach.
>
> It's been awhile, but I think these specs were set with the intention
> that if a plain function were somehow called as a SRF, it would act as
> though it were a SRF returning one row. We haven't quite reached that
> with this patch --- I think it'd be an infinite loop as
> ExecForPortionOfLeftovers() stands. I'm content with the way things
> are though, given that it should always be the case that special
> privileges are needed to mark a function as being a
> withoutPortionProcs function.
>
> But speaking of infinite loops, should this one contain a
> CHECK_FOR_INTERRUPTS call? It's hard to conceive of a case where
> the value would be broken down finely enough for that to be a
> problem, but ...
A rangetype could only loop 0-2 times; a multirange 0-1. So I don't
think we need it. Eventually user-defined types could loop more, but a
design that inserts many records every time you change something seems
like a bad idea. Maybe I would add it anyway just out of caution, but
I suspect it's excessive.
Yours,
--
Paul ~{:-)
pj@illuminatedcomputing.com
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Make ExecForPortionOfLeftovers() obey SRF protocol.
- 207cb2abcba0 19 (unreleased) landed
-
Add isolation tests for UPDATE/DELETE FOR PORTION OF
- b6ccd30d8ff6 19 (unreleased) landed
-
Add UPDATE/DELETE FOR PORTION OF
- 8e72d914c528 19 (unreleased) landed
-
Record range constructor functions in pg_range
- c257ba839718 19 (unreleased) landed
-
Add range_minus_multi and multirange_minus_multi functions
- 5eed8ce50ce9 19 (unreleased) landed
-
doc: Add section for temporal tables
- e4d8a2af07f5 19 (unreleased) landed
-
Add assertion check for WAL receiver state during stream-archive transition
- 65f4976189b6 19 (unreleased) cited