Re: FOR PORTION OF bugs

From: Paul A Jungwirth <pj(at)illuminatedcomputing(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Cc: Peter Eisentraut <peter(at)eisentraut(dot)org>, Noah Misch <noah(at)leadboat(dot)com>
Subject: Re: FOR PORTION OF bugs
Date: 2026-09-06 03:31:44
Message-ID: CA+renyWPFKGw3+kSOA4kcW-mEuVMb=xRSrQ6d+Sem-3xiPLfig@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Sep 3, 2026 at 9:26 PM Paul A Jungwirth
<pj(at)illuminatedcomputing(dot)com> wrote:
>
> D1: A DO INSTEAD rule skips inserting leftovers. (Already reported by [0].)
> D2: PREPARE requires casting parameters in FOR PORTION OF bounds (e.g. $1::date), but we should coerce these automatically.
> D3: EXPLAIN (GENERIC_PLAN) fails with `no value found for parameter 1`
> D4: EXPLAIN with `FOR PORTION OF (null)` raises an error about the null target.
> D5: elog if the range column's default opclass is for a concrete range type, not anyrange.
> D6: Under plain inheritance, statement-level insert triggers fire against the parent table, not the child.
> D7: Error hint is misleading if a temporal leftover's BEFORE trigger modifies a row that is later changed by the top-level statement.
> D8: A temporal leftover is not inserted if its BEFORE INSERT trigger returns null. (Already reported by [1].)
> D9: FOR PORTION OF bound expressions are evaluated more than once. A function declared STABLE but not actually STABLE would get inconsistent results. Also reachable with current_setting() + set_config().
> D10: EXPLAIN evaluates functions in the FOR PORTION OF bounds.
> D11: A WITH CHECK OPTION failure blames the temporal leftover when it should blame the original update.
> D12: pg_get_ruledef deparses a null bound as NULL::unknown not NULL::date.
> D13: Docs should clarify that you need permission on the range column.
> D14: Error message is misleading for a view referencing the range column twice.

All of these have patches now and are in the Open Items list. Some of
these shared a root cause, so there is a single patch fixing D2-D12
(coercing parameters in FOR PORTION OF bounds) and another fixing
D3-D4-D10 (evaluating bounds within EXPLAIN).

Three of these items are just improving error messages. One is a
doc-only update. And I don't think D9 is the kind of thing we
usually consider a bug. The rest look pretty important to me. But they
are all in Open Items for now.

Yours,

--
Paul ~{:-)
pj(at)illuminatedcomputing(dot)com

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Xuneng Zhou 2026-09-06 04:03:20 Re: Implement waiting for wal lsn replay: reloaded
Previous Message Sagar Shedge 2026-09-06 02:39:31 postgres_fdw: push down FETCH FIRST .. WITH TIES when server version allows