v9-0004-Add-range-stats-to-pg_stats_ext_exprs.patch
text/x-patch
Filename: v9-0004-Add-range-stats-to-pg_stats_ext_exprs.patch
Type: text/x-patch
Part: 3
Patch
Format: format-patch
Series: patch v9-0004
Subject: Add range stats to pg_stats_ext_exprs.
| File | + | − |
|---|---|---|
| src/backend/catalog/system_views.sql | 22 | 1 |
| src/test/regress/expected/rules.out | 25 | 1 |
From 6e0ea807b12407d8c5136056089a8c6fef3da49c Mon Sep 17 00:00:00 2001
From: Corey Huinker <corey.huinker@gmail.com>
Date: Mon, 9 Feb 2026 09:35:48 -0500
Subject: [PATCH v9 4/5] Add range stats to pg_stats_ext_exprs.
When this view was introduced in a4d75c86bf15, the statistics
range_length_histogram, range_empty_frac, and range_bounds_histogram
were omitted. This oversight was harmless until
pg_restore_extended_stats() was introduced, which created the need to
expose range-related stats from stxdexpr.
---
src/backend/catalog/system_views.sql | 23 ++++++++++++++++++++++-
src/test/regress/expected/rules.out | 26 +++++++++++++++++++++++++-
2 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql
index 7553f31fef0..1ea8f1faa9e 100644
--- a/src/backend/catalog/system_views.sql
+++ b/src/backend/catalog/system_views.sql
@@ -363,7 +363,28 @@ CREATE VIEW pg_stats_ext_exprs WITH (security_barrier) AS
WHEN (stat.a).stakind3 = 5 THEN (stat.a).stanumbers3
WHEN (stat.a).stakind4 = 5 THEN (stat.a).stanumbers4
WHEN (stat.a).stakind5 = 5 THEN (stat.a).stanumbers5
- END) AS elem_count_histogram
+ END) AS elem_count_histogram,
+ (CASE
+ WHEN (stat.a).stakind1 = 6 THEN (stat.a).stavalues1
+ WHEN (stat.a).stakind2 = 6 THEN (stat.a).stavalues2
+ WHEN (stat.a).stakind3 = 6 THEN (stat.a).stavalues3
+ WHEN (stat.a).stakind4 = 6 THEN (stat.a).stavalues4
+ WHEN (stat.a).stakind5 = 6 THEN (stat.a).stavalues5
+ END) AS range_length_histogram,
+ (CASE
+ WHEN (stat.a).stakind1 = 6 THEN (stat.a).stanumbers1[1]
+ WHEN (stat.a).stakind2 = 6 THEN (stat.a).stanumbers2[1]
+ WHEN (stat.a).stakind3 = 6 THEN (stat.a).stanumbers3[1]
+ WHEN (stat.a).stakind4 = 6 THEN (stat.a).stanumbers4[1]
+ WHEN (stat.a).stakind5 = 6 THEN (stat.a).stanumbers5[1]
+ END) AS range_empty_frac,
+ (CASE
+ WHEN (stat.a).stakind1 = 7 THEN (stat.a).stavalues1
+ WHEN (stat.a).stakind2 = 7 THEN (stat.a).stavalues2
+ WHEN (stat.a).stakind3 = 7 THEN (stat.a).stavalues3
+ WHEN (stat.a).stakind4 = 7 THEN (stat.a).stavalues4
+ WHEN (stat.a).stakind5 = 7 THEN (stat.a).stavalues5
+ END) AS range_bounds_histogram
FROM pg_statistic_ext s JOIN pg_class c ON (c.oid = s.stxrelid)
LEFT JOIN pg_statistic_ext_data sd ON (s.oid = sd.stxoid)
LEFT JOIN pg_namespace cn ON (cn.oid = c.relnamespace)
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index f4ee2bd7459..f9bc213e5a1 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -2696,7 +2696,31 @@ pg_stats_ext_exprs| SELECT cn.nspname AS schemaname,
WHEN ((stat.a).stakind4 = 5) THEN (stat.a).stanumbers4
WHEN ((stat.a).stakind5 = 5) THEN (stat.a).stanumbers5
ELSE NULL::real[]
- END AS elem_count_histogram
+ END AS elem_count_histogram,
+ CASE
+ WHEN ((stat.a).stakind1 = 6) THEN (stat.a).stavalues1
+ WHEN ((stat.a).stakind2 = 6) THEN (stat.a).stavalues2
+ WHEN ((stat.a).stakind3 = 6) THEN (stat.a).stavalues3
+ WHEN ((stat.a).stakind4 = 6) THEN (stat.a).stavalues4
+ WHEN ((stat.a).stakind5 = 6) THEN (stat.a).stavalues5
+ ELSE NULL::anyarray
+ END AS range_length_histogram,
+ CASE
+ WHEN ((stat.a).stakind1 = 6) THEN (stat.a).stanumbers1[1]
+ WHEN ((stat.a).stakind2 = 6) THEN (stat.a).stanumbers2[1]
+ WHEN ((stat.a).stakind3 = 6) THEN (stat.a).stanumbers3[1]
+ WHEN ((stat.a).stakind4 = 6) THEN (stat.a).stanumbers4[1]
+ WHEN ((stat.a).stakind5 = 6) THEN (stat.a).stanumbers5[1]
+ ELSE NULL::real
+ END AS range_empty_frac,
+ CASE
+ WHEN ((stat.a).stakind1 = 7) THEN (stat.a).stavalues1
+ WHEN ((stat.a).stakind2 = 7) THEN (stat.a).stavalues2
+ WHEN ((stat.a).stakind3 = 7) THEN (stat.a).stavalues3
+ WHEN ((stat.a).stakind4 = 7) THEN (stat.a).stavalues4
+ WHEN ((stat.a).stakind5 = 7) THEN (stat.a).stavalues5
+ ELSE NULL::anyarray
+ END AS range_bounds_histogram
FROM (((((pg_statistic_ext s
JOIN pg_class c ON ((c.oid = s.stxrelid)))
LEFT JOIN pg_statistic_ext_data sd ON ((s.oid = sd.stxoid)))
--
2.53.0