From: | Richard Guo <guofenglinux(at)gmail(dot)com> |
---|---|
To: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: expand virtual generated columns in get_relation_constraints() |
Date: | 2025-09-11 02:16:29 |
Message-ID: | CAMbWs4-fbJbX_zwOsbRs0TVRF_BP6Sb4ZT3QC4OhearYBHamdw@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, Sep 3, 2025 at 11:05 PM Peter Eisentraut <peter(at)eisentraut(dot)org> wrote:
> We (I) missed expanding virtual generated columns in
> get_relation_constraints() in plancat.c. That way, some opportunities
> for constraint exclusion will be missed if a constraint contains virtual
> generated columns, as can be shown in the attached test case (thanks to
> Richard Guo). Simple fix attached.
I'm afraid this fix isn't thorough: it covers only CHECK constraints
but not NOT NULL or partitioning constraints. For example,
create table vt (a int, b int generated always as (a * 2) virtual not null);
set constraint_exclusion to on;
explain (costs off) select * from vt where b is null;
QUERY PLAN
-----------------------------
Seq Scan on vt
Filter: ((a * 2) IS NULL)
(2 rows)
We should get a dummy Result rather than a SeqScan.
What I have in mind is something like the attached v2, which covers
all types of constraints.
- Richard
Attachment | Content-Type | Size |
---|---|---|
v2-0001-Expand-virtual-generated-columns-in-constraint-ex.patch | application/octet-stream | 3.4 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Smith | 2025-09-11 02:31:29 | Re: Add support for specifying tables in pg_createsubscriber. |
Previous Message | jian he | 2025-09-11 01:34:35 | Re: someone else to do the list of acknowledgments |