]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Add convenience view to stats import test.
authorNathan Bossart <nathan@postgresql.org>
Fri, 13 Mar 2026 20:04:10 +0000 (15:04 -0500)
committerNathan Bossart <nathan@postgresql.org>
Fri, 13 Mar 2026 20:04:10 +0000 (15:04 -0500)
Presently, many statements in stats_import.sql select all columns
from the pg_stats system view.  A proposed follow-up commit would
add columns to this view (some of which are not stable across test
runs), breaking all of these tests.  This commit introduces a
convenience view for those statements so that future changes are
minimally disruptive.

Author: Corey Huinker <corey.huinker@gmail.com>
Reviewed-by: Sami Imseih <samimseih@gmail.com>
Discussion: https://postgr.es/m/CADkLM%3DcoCVy92QkVUUTLdo5eO2bMDtwMrzRn_8miAhX%2BuPaqXg%40mail.gmail.com

src/test/regress/expected/stats_import.out
src/test/regress/sql/stats_import.sql

index c7adb783da2117b8f86aa7b1e4651a70016606a6..0aa9f6573768e673fe16d03ae8f9ed94bebbbc12 100644 (file)
@@ -1,5 +1,17 @@
 CREATE SCHEMA stats_import;
 --
+-- Convenience view for columns of pg_stats that are stable across test runs.
+--
+CREATE VIEW stats_import.pg_stats_stable AS
+  SELECT schemaname, tablename, attname, inherited, null_frac, avg_width,
+      n_distinct, most_common_vals::text as most_common_vals,
+      most_common_freqs, histogram_bounds::text AS histogram_bounds,
+      correlation, most_common_elems::text AS most_common_elems,
+      most_common_elem_freqs, elem_count_histogram,
+      range_length_histogram::text AS range_length_histogram, range_empty_frac,
+      range_bounds_histogram::text AS range_bounds_histogram
+  FROM pg_stats;
+--
 -- Setup functions for set-difference convenience functions
 --
 -- Test to detect any new columns added to pg_statistic.  If any columns
@@ -643,7 +655,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -670,7 +682,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -695,7 +707,7 @@ WARNING:  unrecognized argument name: "nope"
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -721,7 +733,7 @@ WARNING:  argument "most_common_vals" must be specified when argument "most_comm
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -747,7 +759,7 @@ WARNING:  argument "most_common_freqs" must be specified when argument "most_com
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -775,7 +787,7 @@ WARNING:  argument "most_common_freqs" must be specified when argument "most_com
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -802,7 +814,7 @@ WARNING:  invalid input syntax for type integer: "four"
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -827,7 +839,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -853,7 +865,7 @@ WARNING:  "histogram_bounds" array must not contain null values
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -877,7 +889,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -903,7 +915,7 @@ WARNING:  argument "elem_count_histogram" array must not contain null values
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -928,7 +940,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -956,7 +968,7 @@ DETAIL:  Cannot set STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM or STATISTIC_KIND_BOUN
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -982,7 +994,7 @@ WARNING:  argument "range_empty_frac" must be specified when argument "range_len
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -1008,7 +1020,7 @@ WARNING:  argument "range_length_histogram" must be specified when argument "ran
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -1033,7 +1045,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -1060,7 +1072,7 @@ DETAIL:  Cannot set STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM or STATISTIC_KIND_BOUN
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -1084,7 +1096,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -1112,7 +1124,7 @@ DETAIL:  Cannot set STATISTIC_KIND_MCELEM or STATISTIC_KIND_DECHIST.
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -1140,7 +1152,7 @@ DETAIL:  Cannot set STATISTIC_KIND_MCELEM or STATISTIC_KIND_DECHIST.
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -1166,7 +1178,7 @@ WARNING:  argument "most_common_elem_freqs" must be specified when argument "mos
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -1192,7 +1204,7 @@ WARNING:  argument "most_common_elems" must be specified when argument "most_com
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -1217,7 +1229,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -1244,7 +1256,7 @@ DETAIL:  Cannot set STATISTIC_KIND_MCELEM or STATISTIC_KIND_DECHIST.
 (1 row)
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -3362,8 +3374,9 @@ SELECT COUNT(*) FROM stats_import.test_range_expr_null
 (1 row)
 
 DROP SCHEMA stats_import CASCADE;
-NOTICE:  drop cascades to 18 other objects
-DETAIL:  drop cascades to view stats_import.pg_statistic_flat_t
+NOTICE:  drop cascades to 19 other objects
+DETAIL:  drop cascades to view stats_import.pg_stats_stable
+drop cascades to view stats_import.pg_statistic_flat_t
 drop cascades to function stats_import.pg_statistic_flat(text)
 drop cascades to function stats_import.pg_statistic_get_difference(text,text)
 drop cascades to view stats_import.pg_stats_ext_flat_t
index 0518bbf6f425669aea911933af03db1c762b25c5..0bfa3d44cef3bbc2e4fbbfef4d92190dd5f6a55a 100644 (file)
@@ -1,5 +1,18 @@
 CREATE SCHEMA stats_import;
 
+--
+-- Convenience view for columns of pg_stats that are stable across test runs.
+--
+CREATE VIEW stats_import.pg_stats_stable AS
+  SELECT schemaname, tablename, attname, inherited, null_frac, avg_width,
+      n_distinct, most_common_vals::text as most_common_vals,
+      most_common_freqs, histogram_bounds::text AS histogram_bounds,
+      correlation, most_common_elems::text AS most_common_elems,
+      most_common_elem_freqs, elem_count_histogram,
+      range_length_histogram::text AS range_length_histogram, range_empty_frac,
+      range_bounds_histogram::text AS range_bounds_histogram
+  FROM pg_stats;
+
 --
 -- Setup functions for set-difference convenience functions
 --
@@ -521,7 +534,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     'n_distinct', 0.6::real);
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -540,7 +553,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     'null_frac', 0.4::real);
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -556,7 +569,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     'nope', 0.5::real);
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -573,7 +586,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -590,7 +603,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -608,7 +621,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -626,7 +639,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -643,7 +656,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -660,7 +673,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -676,7 +689,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -693,7 +706,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -710,7 +723,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -728,7 +741,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -745,7 +758,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -762,7 +775,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -779,7 +792,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -796,7 +809,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -812,7 +825,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -830,7 +843,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -848,7 +861,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -865,7 +878,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -882,7 +895,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -899,7 +912,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false
@@ -916,7 +929,7 @@ SELECT pg_catalog.pg_restore_attribute_stats(
     );
 
 SELECT *
-FROM pg_stats
+FROM stats_import.pg_stats_stable
 WHERE schemaname = 'stats_import'
 AND tablename = 'test'
 AND inherited = false