pgsql: Add support for extended statistics on virtual generated columns

From: Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Add support for extended statistics on virtual generated columns
Date: 2026-04-01 16:06:56
Message-ID: E1w7y5n-002Tth-0w@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Add support for extended statistics on virtual generated columns.

This allows both univariate and multivariate statistics to be built on
virtual generated columns and expressions that refer to virtual
generated columns. The restriction disallowing extended statistics on
a single column is lifted in the case of a single virtual generated
column, since it is treated as a single expression.

In the catalogs, references to virtual generated columns are stored
as-is. They are expanded at ANALYZE time to build the statistics, and
at planning time to allow the optimizer to make use of the statistics.
This allows the statistics to be correctly rebuilt using ANALYZE, if a
column's generation expression is altered (which causes any existing
statistics data to be deleted).

Author: Yugo Nagata <nagata(at)sraoss(dot)co(dot)jp>
Reviewed-by: Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com>
Discussion: https://postgr.es/m/20250422181006.dd6f9d1d81299f5b2ad55e1a@sraoss.co.jp

Branch
------
master

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

Modified Files
--------------
doc/src/sgml/ref/alter_table.sgml | 12 ++-
doc/src/sgml/ref/create_statistics.sgml | 30 +++++--
src/backend/commands/statscmds.c | 143 +++++++++++++++++---------------
src/backend/optimizer/util/plancat.c | 3 +
src/backend/statistics/extended_stats.c | 13 ++-
src/test/regress/expected/stats_ext.out | 95 ++++++++++++++++-----
src/test/regress/sql/stats_ext.sql | 54 ++++++++----
7 files changed, 233 insertions(+), 117 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Álvaro Herrera 2026-04-01 16:17:55 pgsql: Fix vicinity of tuple_insert to use uint32, not int, for options
Previous Message Nathan Bossart 2026-04-01 14:49:46 pgsql: doc: Add missing description for DROP SUBSCRIPTION IF EXISTS.