| From: | Paul A Jungwirth <pj(at)illuminatedcomputing(dot)com> |
|---|---|
| To: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
| Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: FOR PORTION OF should reject GENERATED columns |
| Date: | 2026-06-29 06:29:12 |
| Message-ID: | CA+renyVec2yhFXWkNN178-qN4s5BAY6WFqq66ou3bHxSzUkArQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Sat, Jun 27, 2026 at 12:05 AM Peter Eisentraut <peter(at)eisentraut(dot)org> wrote:
>
> > The test about BEGIN ATOMIC functions now shows that the analysis-time
> > check prevents you from defining the function.
>
> Hmm, I think doing it in the parser won't actually work if you are
> writing through a view. For example, with the v4 patch, the following
> does not error:
>
> CREATE TABLE t (a int, b int4range GENERATED ALWAYS AS (int4range(a, a +
> 1)) STORED);
> CREATE VIEW v AS SELECT * FROM t;
> DELETE FROM v FOR PORTION OF b FROM 1 TO 2;
>
> So we need to push it later after all.
>
> But maybe it would fit in the planner, near where the volatility check
> is being moved to?
That's a good catch. Here is a version that checks in the planner,
with your example added to the test cases. This is a little nicer than
the executor, since rangeVar hasn't been converted to an expression
yet (for VIRTUAL columns).
Yours,
--
Paul ~{:-)
pj(at)illuminatedcomputing(dot)com
| Attachment | Content-Type | Size |
|---|---|---|
| v5-0001-Forbid-GENERATED-columns-in-FOR-PORTION-OF.patch | text/x-patch | 8.7 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | vignesh C | 2026-06-29 06:57:04 | Re: DOCS - clarify CREATE SUBSCRIPTION only synchronizes sequences when copy_data=true |
| Previous Message | Fujii Masao | 2026-06-29 06:23:28 | Re: Remove the refint contrib module (for v20) |