pgsql: Expand virtual generated columns before sublink pull-up

From: Richard Guo <rguo(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Expand virtual generated columns before sublink pull-up
Date: 2025-07-22 02:23:08
Message-ID: E1ue2eq-0007MI-02@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Expand virtual generated columns before sublink pull-up

Currently, we expand virtual generated columns after we have pulled up
any SubLinks within the query's quals. This ensures that the virtual
generated column references within SubLinks that should be transformed
into joins are correctly expanded. This approach works well and has
posed no issues.

In an upcoming patch, we plan to centralize the collection of catalog
information needed early in the planner. This will help avoid
repeated table_open/table_close calls for relations in the rangetable.
Since this information is required during sublink pull-up, we are
moving the expansion of virtual generated columns to occur beforehand.

To achieve this, if any EXISTS SubLinks can be pulled up, their
rangetables are processed just before pulling them up.

Author: Richard Guo <guofenglinux(at)gmail(dot)com>
Reviewed-by: Robert Haas <robertmhaas(at)gmail(dot)com>
Reviewed-by: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Discussion: https://postgr.es/m/CAMbWs4-bFJ1At4btk5wqbezdu8PLtQ3zv-aiaY3ry9Ymm=jgFQ@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/e0d05295268e3811e6743403cb779f21d1662426

Modified Files
--------------
src/backend/optimizer/plan/planner.c | 17 ++++++++--------
src/backend/optimizer/plan/subselect.c | 27 +++++++++++++++++++++++++
src/backend/optimizer/prep/prepjointree.c | 20 ++++++++----------
src/include/optimizer/prep.h | 2 +-
src/test/regress/expected/generated_virtual.out | 22 ++++++++++++++++++++
src/test/regress/sql/generated_virtual.sql | 9 +++++++++
6 files changed, 76 insertions(+), 21 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2025-07-22 05:00:43 pgsql: ecpg: Fix NULL pointer dereference during connection lookup
Previous Message Christoph Berg 2025-07-21 20:52:12 Re: pgsql: Introduce pg_shmem_allocations_numa view