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-19T18:51:23Z
Lists: pgsql-hackers

Attachments

On Sun, Apr 19, 2026 at 11:10 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> Peter Eisentraut <peter@eisentraut.org> writes:
> > I have committed the patches 0001 through 0003.
>
> Coverity is complaining that rsi.isDone may be used uninitialized in
> ExecForPortionOfLeftovers.  It's correct: that function is not obeying
> the function call protocol, and it's only accidental that it's not
> failing.  In ValuePerCall mode the caller is supposed to initialize
> isDone (and isnull too) before each call.  The canonical reference
> for this is execSRF.c, and it does that.  So I think we need something
> like the attached.

Thanks for the patch! Your changes look good to me.

> I notice that execSRF.c also runs pgstat_init_function_usage and
> pgstat_end_function_usage around each call.  That's not too important
> right now, but I wonder whether we should add it while we're looking
> at this.  It would perhaps be important once we support user-defined
> withoutPortionProcs.

I agree we should do that. Here is a patch with that added to your changes.

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.

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 →
  1. Make ExecForPortionOfLeftovers() obey SRF protocol.

  2. Add isolation tests for UPDATE/DELETE FOR PORTION OF

  3. Add UPDATE/DELETE FOR PORTION OF

  4. Record range constructor functions in pg_range

  5. Add range_minus_multi and multirange_minus_multi functions

  6. doc: Add section for temporal tables

  7. Add assertion check for WAL receiver state during stream-archive transition