Add convenience view to stats import test.

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
This commit is contained in:
Nathan Bossart 2026-03-13 15:04:10 -05:00
parent ce5d489166
commit 233bbdf031
2 changed files with 76 additions and 50 deletions

View 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

View 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