summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/regress/expected/stats_import.out337
-rw-r--r--src/test/regress/sql/stats_import.sql306
2 files changed, 436 insertions, 207 deletions
diff --git a/src/test/regress/expected/stats_import.out b/src/test/regress/expected/stats_import.out
index 1f46d5e7854..48d6392b4ad 100644
--- a/src/test/regress/expected/stats_import.out
+++ b/src/test/regress/expected/stats_import.out
@@ -14,7 +14,8 @@ CREATE TABLE stats_import.test(
) WITH (autovacuum_enabled = false);
SELECT
pg_catalog.pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'relpages', 18::integer,
'reltuples', 21::real,
'relallvisible', 24::integer,
@@ -36,7 +37,7 @@ ORDER BY relname;
test | 18 | 21 | 24 | 27
(1 row)
-SELECT pg_clear_relation_stats('stats_import.test'::regclass);
+SELECT pg_clear_relation_stats('stats_import', 'test');
pg_clear_relation_stats
-------------------------
@@ -45,33 +46,49 @@ SELECT pg_clear_relation_stats('stats_import.test'::regclass);
--
-- relstats tests
--
---- error: relation is wrong type
+-- error: schemaname missing
SELECT pg_catalog.pg_restore_relation_stats(
- 'relation', 0::oid,
+ 'relname', 'test',
'relpages', 17::integer);
-WARNING: argument "relation" has type "oid", expected type "regclass"
-ERROR: "relation" cannot be NULL
+ERROR: "schemaname" cannot be NULL
+-- error: relname missing
+SELECT pg_catalog.pg_restore_relation_stats(
+ 'schemaname', 'stats_import',
+ 'relpages', 17::integer);
+ERROR: "relname" cannot be NULL
+--- error: schemaname is wrong type
+SELECT pg_catalog.pg_restore_relation_stats(
+ 'schemaname', 3.6::float,
+ 'relname', 'test',
+ 'relpages', 17::integer);
+WARNING: argument "schemaname" has type "double precision", expected type "text"
+ERROR: "schemaname" cannot be NULL
+--- error: relname is wrong type
+SELECT pg_catalog.pg_restore_relation_stats(
+ 'schemaname', 'stats_import',
+ 'relname', 0::oid,
+ 'relpages', 17::integer);
+WARNING: argument "relname" has type "oid", expected type "text"
+ERROR: "relname" cannot be NULL
-- error: relation not found
SELECT pg_catalog.pg_restore_relation_stats(
- 'relation', 0::oid::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'nope',
'relpages', 17::integer);
-ERROR: could not open relation with OID 0
+ERROR: relation "stats_import.nope" does not exist
-- error: odd number of variadic arguments cannot be pairs
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'relallvisible');
ERROR: variadic arguments must be name/value pairs
HINT: Provide an even number of variadic arguments that can be divided into pairs.
-- error: argument name is NULL
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
NULL, '17'::integer);
-ERROR: name at variadic position 3 is NULL
--- error: argument name is not a text type
-SELECT pg_restore_relation_stats(
- 'relation', '0'::oid::regclass,
- 17, '17'::integer);
-ERROR: name at variadic position 3 has type "integer", expected type "text"
+ERROR: name at variadic position 5 is NULL
-- starting stats
SELECT relpages, reltuples, relallvisible, relallfrozen
FROM pg_class
@@ -84,7 +101,8 @@ WHERE oid = 'stats_import.test_i'::regclass;
-- regular indexes have special case locking rules
BEGIN;
SELECT pg_catalog.pg_restore_relation_stats(
- 'relation', 'stats_import.test_i'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test_i',
'relpages', 18::integer);
pg_restore_relation_stats
---------------------------
@@ -132,7 +150,8 @@ WHERE oid = 'stats_import.part_parent'::regclass;
--
BEGIN;
SELECT pg_catalog.pg_restore_relation_stats(
- 'relation', 'stats_import.part_parent_i'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'part_parent_i',
'relpages', 2::integer);
pg_restore_relation_stats
---------------------------
@@ -166,7 +185,8 @@ WHERE oid = 'stats_import.part_parent_i'::regclass;
-- ok: set all relstats, with version, no bounds checking
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'version', 150000::integer,
'relpages', '-17'::integer,
'reltuples', 400::real,
@@ -187,7 +207,8 @@ WHERE oid = 'stats_import.test'::regclass;
-- ok: set just relpages, rest stay same
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'relpages', '16'::integer);
pg_restore_relation_stats
---------------------------
@@ -204,7 +225,8 @@ WHERE oid = 'stats_import.test'::regclass;
-- ok: set just reltuples, rest stay same
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'reltuples', '500'::real);
pg_restore_relation_stats
---------------------------
@@ -221,7 +243,8 @@ WHERE oid = 'stats_import.test'::regclass;
-- ok: set just relallvisible, rest stay same
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'relallvisible', 5::integer);
pg_restore_relation_stats
---------------------------
@@ -238,7 +261,8 @@ WHERE oid = 'stats_import.test'::regclass;
-- ok: just relallfrozen
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'version', 150000::integer,
'relallfrozen', 3::integer);
pg_restore_relation_stats
@@ -256,7 +280,8 @@ WHERE oid = 'stats_import.test'::regclass;
-- warn: bad relpages type, rest updated
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'relpages', 'nope'::text,
'reltuples', 400.0::real,
'relallvisible', 4::integer,
@@ -277,7 +302,8 @@ WHERE oid = 'stats_import.test'::regclass;
-- unrecognized argument name, rest ok
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'relpages', '171'::integer,
'nope', 10::integer);
WARNING: unrecognized argument name: "nope"
@@ -295,8 +321,7 @@ WHERE oid = 'stats_import.test'::regclass;
(1 row)
-- ok: clear stats
-SELECT pg_catalog.pg_clear_relation_stats(
- relation => 'stats_import.test'::regclass);
+SELECT pg_catalog.pg_clear_relation_stats(schemaname => 'stats_import', relname => 'test');
pg_clear_relation_stats
-------------------------
@@ -313,50 +338,71 @@ WHERE oid = 'stats_import.test'::regclass;
-- invalid relkinds for statistics
CREATE SEQUENCE stats_import.testseq;
SELECT pg_catalog.pg_restore_relation_stats(
- 'relation', 'stats_import.testseq'::regclass);
+ 'schemaname', 'stats_import',
+ 'relname', 'testseq');
ERROR: cannot modify statistics for relation "testseq"
DETAIL: This operation is not supported for sequences.
-SELECT pg_catalog.pg_clear_relation_stats(
- 'stats_import.testseq'::regclass);
+SELECT pg_catalog.pg_clear_relation_stats(schemaname => 'stats_import', relname => 'testseq');
ERROR: cannot modify statistics for relation "testseq"
DETAIL: This operation is not supported for sequences.
CREATE VIEW stats_import.testview AS SELECT * FROM stats_import.test;
-SELECT pg_catalog.pg_restore_relation_stats(
- 'relation', 'stats_import.testview'::regclass);
-ERROR: cannot modify statistics for relation "testview"
-DETAIL: This operation is not supported for views.
-SELECT pg_catalog.pg_clear_relation_stats(
- 'stats_import.testview'::regclass);
+SELECT pg_catalog.pg_clear_relation_stats(schemaname => 'stats_import', relname => 'testview');
ERROR: cannot modify statistics for relation "testview"
DETAIL: This operation is not supported for views.
--
-- attribute stats
--
--- error: object does not exist
+-- error: schemaname missing
+SELECT pg_catalog.pg_restore_attribute_stats(
+ 'relname', 'test',
+ 'attname', 'id',
+ 'inherited', false::boolean,
+ 'null_frac', 0.1::real);
+ERROR: "schemaname" cannot be NULL
+-- error: schema does not exist
+SELECT pg_catalog.pg_restore_attribute_stats(
+ 'schemaname', 'nope',
+ 'relname', 'test',
+ 'attname', 'id',
+ 'inherited', false::boolean,
+ 'null_frac', 0.1::real);
+ERROR: schema "nope" does not exist
+-- error: relname missing
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', '0'::oid::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.1::real);
-ERROR: could not open relation with OID 0
--- error: relation null
+ERROR: "relname" cannot be NULL
+-- error: relname does not exist
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', NULL::oid::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'nope',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.1::real);
-ERROR: "relation" cannot be NULL
+ERROR: relation "stats_import.nope" does not exist
+-- error: relname null
+SELECT pg_catalog.pg_restore_attribute_stats(
+ 'schemaname', 'stats_import',
+ 'relname', NULL,
+ 'attname', 'id',
+ 'inherited', false::boolean,
+ 'null_frac', 0.1::real);
+ERROR: "relname" cannot be NULL
-- error: NULL attname
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', NULL::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', NULL,
'inherited', false::boolean,
'null_frac', 0.1::real);
ERROR: must specify either attname or attnum
-- error: attname doesn't exist
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'nope'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'nope',
'inherited', false::boolean,
'null_frac', 0.1::real,
'avg_width', 2::integer,
@@ -364,36 +410,41 @@ SELECT pg_catalog.pg_restore_attribute_stats(
ERROR: column "nope" of relation "test" does not exist
-- error: both attname and attnum
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'attnum', 1::smallint,
'inherited', false::boolean,
'null_frac', 0.1::real);
ERROR: cannot specify both attname and attnum
-- error: neither attname nor attnum
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'inherited', false::boolean,
'null_frac', 0.1::real);
ERROR: must specify either attname or attnum
-- error: attribute is system column
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'xmin'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'xmin',
'inherited', false::boolean,
'null_frac', 0.1::real);
ERROR: cannot modify statistics on system column "xmin"
-- error: inherited null
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', NULL::boolean,
'null_frac', 0.1::real);
ERROR: "inherited" cannot be NULL
-- ok: just the fixed values, with version, no stakinds
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'version', 150000::integer,
'null_frac', 0.2::real,
@@ -421,7 +472,8 @@ AND attname = 'id';
-- for any stat-having relation.
--
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'attnum', 1::smallint,
'inherited', false::boolean,
'null_frac', 0.4::real);
@@ -443,8 +495,9 @@ AND attname = 'id';
-- warn: unrecognized argument name, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.2::real,
'nope', 0.5::real);
@@ -467,8 +520,9 @@ AND attname = 'id';
-- warn: mcv / mcf null mismatch part 1, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.21::real,
'most_common_freqs', '{0.1,0.2,0.3}'::real[]
@@ -492,8 +546,9 @@ AND attname = 'id';
-- warn: mcv / mcf null mismatch part 2, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.21::real,
'most_common_vals', '{1,2,3}'::text
@@ -517,8 +572,9 @@ AND attname = 'id';
-- warn: mcf type mismatch, mcv-pair fails, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.22::real,
'most_common_vals', '{2,1,3}'::text,
@@ -544,8 +600,9 @@ AND attname = 'id';
-- warn: mcv cast failure, mcv-pair fails, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.23::real,
'most_common_vals', '{2,four,3}'::text,
@@ -570,8 +627,9 @@ AND attname = 'id';
-- ok: mcv+mcf
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'most_common_vals', '{2,1,3}'::text,
'most_common_freqs', '{0.3,0.25,0.05}'::real[]
@@ -594,8 +652,9 @@ AND attname = 'id';
-- warn: NULL in histogram array, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.24::real,
'histogram_bounds', '{1,NULL,3,4}'::text
@@ -619,8 +678,9 @@ AND attname = 'id';
-- ok: histogram_bounds
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'histogram_bounds', '{1,2,3,4}'::text
);
@@ -642,8 +702,9 @@ AND attname = 'id';
-- warn: elem_count_histogram null element, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'tags'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'tags',
'inherited', false::boolean,
'null_frac', 0.25::real,
'elem_count_histogram', '{1,1,NULL,1,1,1,1,1}'::real[]
@@ -667,8 +728,9 @@ AND attname = 'tags';
-- ok: elem_count_histogram
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'tags'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'tags',
'inherited', false::boolean,
'null_frac', 0.26::real,
'elem_count_histogram', '{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}'::real[]
@@ -691,8 +753,9 @@ AND attname = 'tags';
-- warn: range stats on a scalar type, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.27::real,
'range_empty_frac', 0.5::real,
@@ -718,8 +781,9 @@ AND attname = 'id';
-- warn: range_empty_frac range_length_hist null mismatch, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'arange'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'arange',
'inherited', false::boolean,
'null_frac', 0.28::real,
'range_length_histogram', '{399,499,Infinity}'::text
@@ -743,8 +807,9 @@ AND attname = 'arange';
-- warn: range_empty_frac range_length_hist null mismatch part 2, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'arange'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'arange',
'inherited', false::boolean,
'null_frac', 0.29::real,
'range_empty_frac', 0.5::real
@@ -768,8 +833,9 @@ AND attname = 'arange';
-- ok: range_empty_frac + range_length_hist
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'arange'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'arange',
'inherited', false::boolean,
'range_empty_frac', 0.5::real,
'range_length_histogram', '{399,499,Infinity}'::text
@@ -792,8 +858,9 @@ AND attname = 'arange';
-- warn: range bounds histogram on scalar, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.31::real,
'range_bounds_histogram', '{"[-1,1)","[0,4)","[1,4)","[1,100)"}'::text
@@ -818,8 +885,9 @@ AND attname = 'id';
-- ok: range_bounds_histogram
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'arange'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'arange',
'inherited', false::boolean,
'range_bounds_histogram', '{"[-1,1)","[0,4)","[1,4)","[1,100)"}'::text
);
@@ -841,8 +909,9 @@ AND attname = 'arange';
-- warn: cannot set most_common_elems for range type, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'arange'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'arange',
'inherited', false::boolean,
'null_frac', 0.32::real,
'most_common_elems', '{3,1}'::text,
@@ -868,8 +937,9 @@ AND attname = 'arange';
-- warn: scalars can't have mcelem, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.33::real,
'most_common_elems', '{1,3}'::text,
@@ -895,8 +965,9 @@ AND attname = 'id';
-- warn: mcelem / mcelem mismatch, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'tags'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'tags',
'inherited', false::boolean,
'null_frac', 0.34::real,
'most_common_elems', '{one,two}'::text
@@ -920,8 +991,9 @@ AND attname = 'tags';
-- warn: mcelem / mcelem null mismatch part 2, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'tags'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'tags',
'inherited', false::boolean,
'null_frac', 0.35::real,
'most_common_elem_freqs', '{0.3,0.2,0.2,0.3}'::real[]
@@ -945,8 +1017,9 @@ AND attname = 'tags';
-- ok: mcelem
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'tags'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'tags',
'inherited', false::boolean,
'most_common_elems', '{one,three}'::text,
'most_common_elem_freqs', '{0.3,0.2,0.2,0.3,0.0}'::real[]
@@ -969,8 +1042,9 @@ AND attname = 'tags';
-- warn: scalars can't have elem_count_histogram, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.36::real,
'elem_count_histogram', '{1,1,1,1,1,1,1,1,1,1}'::real[]
@@ -1022,8 +1096,9 @@ SELECT s.schemaname, s.tablename, s.attname, s.inherited, r.*
FROM pg_catalog.pg_stats AS s
CROSS JOIN LATERAL
pg_catalog.pg_restore_attribute_stats(
- 'relation', ('stats_import.' || s.tablename || '_clone')::regclass,
- 'attname', s.attname,
+ 'schemaname', 'stats_import',
+ 'relname', s.tablename::text || '_clone',
+ 'attname', s.attname::text,
'inherited', s.inherited,
'version', 150000,
'null_frac', s.null_frac,
@@ -1200,9 +1275,10 @@ AND attname = 'arange';
(1 row)
SELECT pg_catalog.pg_clear_attribute_stats(
- relation => 'stats_import.test'::regclass,
- attname => 'arange'::name,
- inherited => false::boolean);
+ schemaname => 'stats_import',
+ relname => 'test',
+ attname => 'arange',
+ inherited => false);
pg_clear_attribute_stats
--------------------------
@@ -1219,6 +1295,53 @@ AND attname = 'arange';
0
(1 row)
+-- temp tables
+CREATE TEMP TABLE stats_temp(i int);
+SELECT pg_restore_relation_stats(
+ 'schemaname', 'pg_temp',
+ 'relname', 'stats_temp',
+ 'relpages', '-19'::integer,
+ 'reltuples', 401::real,
+ 'relallvisible', 5::integer,
+ 'relallfrozen', 3::integer);
+ pg_restore_relation_stats
+---------------------------
+ t
+(1 row)
+
+SELECT relname, relpages, reltuples, relallvisible, relallfrozen
+FROM pg_class
+WHERE oid = 'pg_temp.stats_temp'::regclass
+ORDER BY relname;
+ relname | relpages | reltuples | relallvisible | relallfrozen
+------------+----------+-----------+---------------+--------------
+ stats_temp | -19 | 401 | 5 | 3
+(1 row)
+
+SELECT pg_catalog.pg_restore_attribute_stats(
+ 'schemaname', 'pg_temp',
+ 'relname', 'stats_temp',
+ 'attname', 'i',
+ 'inherited', false::boolean,
+ 'null_frac', 0.0123::real
+ );
+ pg_restore_attribute_stats
+----------------------------
+ t
+(1 row)
+
+SELECT tablename, null_frac
+FROM pg_stats
+WHERE schemaname like 'pg_temp%'
+AND tablename = 'stats_temp'
+AND inherited = false
+AND attname = 'i';
+ tablename | null_frac
+------------+-----------
+ stats_temp | 0.0123
+(1 row)
+
+DROP TABLE stats_temp;
DROP SCHEMA stats_import CASCADE;
NOTICE: drop cascades to 6 other objects
DETAIL: drop cascades to type stats_import.complex_type
diff --git a/src/test/regress/sql/stats_import.sql b/src/test/regress/sql/stats_import.sql
index 0ec590688c2..d140733a750 100644
--- a/src/test/regress/sql/stats_import.sql
+++ b/src/test/regress/sql/stats_import.sql
@@ -17,7 +17,8 @@ CREATE TABLE stats_import.test(
SELECT
pg_catalog.pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'relpages', 18::integer,
'reltuples', 21::real,
'relallvisible', 24::integer,
@@ -32,37 +33,52 @@ FROM pg_class
WHERE oid = 'stats_import.test'::regclass
ORDER BY relname;
-SELECT pg_clear_relation_stats('stats_import.test'::regclass);
+SELECT pg_clear_relation_stats('stats_import', 'test');
--
-- relstats tests
--
---- error: relation is wrong type
+-- error: schemaname missing
SELECT pg_catalog.pg_restore_relation_stats(
- 'relation', 0::oid,
+ 'relname', 'test',
+ 'relpages', 17::integer);
+
+-- error: relname missing
+SELECT pg_catalog.pg_restore_relation_stats(
+ 'schemaname', 'stats_import',
+ 'relpages', 17::integer);
+
+--- error: schemaname is wrong type
+SELECT pg_catalog.pg_restore_relation_stats(
+ 'schemaname', 3.6::float,
+ 'relname', 'test',
+ 'relpages', 17::integer);
+
+--- error: relname is wrong type
+SELECT pg_catalog.pg_restore_relation_stats(
+ 'schemaname', 'stats_import',
+ 'relname', 0::oid,
'relpages', 17::integer);
-- error: relation not found
SELECT pg_catalog.pg_restore_relation_stats(
- 'relation', 0::oid::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'nope',
'relpages', 17::integer);
-- error: odd number of variadic arguments cannot be pairs
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'relallvisible');
-- error: argument name is NULL
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
NULL, '17'::integer);
--- error: argument name is not a text type
-SELECT pg_restore_relation_stats(
- 'relation', '0'::oid::regclass,
- 17, '17'::integer);
-
-- starting stats
SELECT relpages, reltuples, relallvisible, relallfrozen
FROM pg_class
@@ -71,7 +87,8 @@ WHERE oid = 'stats_import.test_i'::regclass;
-- regular indexes have special case locking rules
BEGIN;
SELECT pg_catalog.pg_restore_relation_stats(
- 'relation', 'stats_import.test_i'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test_i',
'relpages', 18::integer);
SELECT mode FROM pg_locks
@@ -108,7 +125,8 @@ WHERE oid = 'stats_import.part_parent'::regclass;
BEGIN;
SELECT pg_catalog.pg_restore_relation_stats(
- 'relation', 'stats_import.part_parent_i'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'part_parent_i',
'relpages', 2::integer);
SELECT mode FROM pg_locks
@@ -127,7 +145,8 @@ WHERE oid = 'stats_import.part_parent_i'::regclass;
-- ok: set all relstats, with version, no bounds checking
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'version', 150000::integer,
'relpages', '-17'::integer,
'reltuples', 400::real,
@@ -140,7 +159,8 @@ WHERE oid = 'stats_import.test'::regclass;
-- ok: set just relpages, rest stay same
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'relpages', '16'::integer);
SELECT relpages, reltuples, relallvisible, relallfrozen
@@ -149,7 +169,8 @@ WHERE oid = 'stats_import.test'::regclass;
-- ok: set just reltuples, rest stay same
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'reltuples', '500'::real);
SELECT relpages, reltuples, relallvisible, relallfrozen
@@ -158,7 +179,8 @@ WHERE oid = 'stats_import.test'::regclass;
-- ok: set just relallvisible, rest stay same
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'relallvisible', 5::integer);
SELECT relpages, reltuples, relallvisible, relallfrozen
@@ -167,7 +189,8 @@ WHERE oid = 'stats_import.test'::regclass;
-- ok: just relallfrozen
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'version', 150000::integer,
'relallfrozen', 3::integer);
@@ -177,7 +200,8 @@ WHERE oid = 'stats_import.test'::regclass;
-- warn: bad relpages type, rest updated
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'relpages', 'nope'::text,
'reltuples', 400.0::real,
'relallvisible', 4::integer,
@@ -189,7 +213,8 @@ WHERE oid = 'stats_import.test'::regclass;
-- unrecognized argument name, rest ok
SELECT pg_restore_relation_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'relpages', '171'::integer,
'nope', 10::integer);
@@ -198,8 +223,7 @@ FROM pg_class
WHERE oid = 'stats_import.test'::regclass;
-- ok: clear stats
-SELECT pg_catalog.pg_clear_relation_stats(
- relation => 'stats_import.test'::regclass);
+SELECT pg_catalog.pg_clear_relation_stats(schemaname => 'stats_import', relname => 'test');
SELECT relpages, reltuples, relallvisible
FROM pg_class
@@ -209,48 +233,70 @@ WHERE oid = 'stats_import.test'::regclass;
CREATE SEQUENCE stats_import.testseq;
SELECT pg_catalog.pg_restore_relation_stats(
- 'relation', 'stats_import.testseq'::regclass);
+ 'schemaname', 'stats_import',
+ 'relname', 'testseq');
-SELECT pg_catalog.pg_clear_relation_stats(
- 'stats_import.testseq'::regclass);
+SELECT pg_catalog.pg_clear_relation_stats(schemaname => 'stats_import', relname => 'testseq');
CREATE VIEW stats_import.testview AS SELECT * FROM stats_import.test;
-SELECT pg_catalog.pg_restore_relation_stats(
- 'relation', 'stats_import.testview'::regclass);
-
-SELECT pg_catalog.pg_clear_relation_stats(
- 'stats_import.testview'::regclass);
+SELECT pg_catalog.pg_clear_relation_stats(schemaname => 'stats_import', relname => 'testview');
--
-- attribute stats
--
--- error: object does not exist
+-- error: schemaname missing
+SELECT pg_catalog.pg_restore_attribute_stats(
+ 'relname', 'test',
+ 'attname', 'id',
+ 'inherited', false::boolean,
+ 'null_frac', 0.1::real);
+
+-- error: schema does not exist
+SELECT pg_catalog.pg_restore_attribute_stats(
+ 'schemaname', 'nope',
+ 'relname', 'test',
+ 'attname', 'id',
+ 'inherited', false::boolean,
+ 'null_frac', 0.1::real);
+
+-- error: relname missing
+SELECT pg_catalog.pg_restore_attribute_stats(
+ 'schemaname', 'stats_import',
+ 'attname', 'id',
+ 'inherited', false::boolean,
+ 'null_frac', 0.1::real);
+
+-- error: relname does not exist
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', '0'::oid::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'nope',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.1::real);
--- error: relation null
+-- error: relname null
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', NULL::oid::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', NULL,
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.1::real);
-- error: NULL attname
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', NULL::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', NULL,
'inherited', false::boolean,
'null_frac', 0.1::real);
-- error: attname doesn't exist
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'nope'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'nope',
'inherited', false::boolean,
'null_frac', 0.1::real,
'avg_width', 2::integer,
@@ -258,36 +304,41 @@ SELECT pg_catalog.pg_restore_attribute_stats(
-- error: both attname and attnum
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'attnum', 1::smallint,
'inherited', false::boolean,
'null_frac', 0.1::real);
-- error: neither attname nor attnum
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'inherited', false::boolean,
'null_frac', 0.1::real);
-- error: attribute is system column
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'xmin'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'xmin',
'inherited', false::boolean,
'null_frac', 0.1::real);
-- error: inherited null
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', NULL::boolean,
'null_frac', 0.1::real);
-- ok: just the fixed values, with version, no stakinds
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'version', 150000::integer,
'null_frac', 0.2::real,
@@ -307,7 +358,8 @@ AND attname = 'id';
-- for any stat-having relation.
--
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
'attnum', 1::smallint,
'inherited', false::boolean,
'null_frac', 0.4::real);
@@ -321,8 +373,9 @@ AND attname = 'id';
-- warn: unrecognized argument name, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.2::real,
'nope', 0.5::real);
@@ -336,8 +389,9 @@ AND attname = 'id';
-- warn: mcv / mcf null mismatch part 1, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.21::real,
'most_common_freqs', '{0.1,0.2,0.3}'::real[]
@@ -352,8 +406,9 @@ AND attname = 'id';
-- warn: mcv / mcf null mismatch part 2, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.21::real,
'most_common_vals', '{1,2,3}'::text
@@ -368,8 +423,9 @@ AND attname = 'id';
-- warn: mcf type mismatch, mcv-pair fails, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.22::real,
'most_common_vals', '{2,1,3}'::text,
@@ -385,8 +441,9 @@ AND attname = 'id';
-- warn: mcv cast failure, mcv-pair fails, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.23::real,
'most_common_vals', '{2,four,3}'::text,
@@ -402,8 +459,9 @@ AND attname = 'id';
-- ok: mcv+mcf
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'most_common_vals', '{2,1,3}'::text,
'most_common_freqs', '{0.3,0.25,0.05}'::real[]
@@ -418,8 +476,9 @@ AND attname = 'id';
-- warn: NULL in histogram array, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.24::real,
'histogram_bounds', '{1,NULL,3,4}'::text
@@ -434,8 +493,9 @@ AND attname = 'id';
-- ok: histogram_bounds
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'histogram_bounds', '{1,2,3,4}'::text
);
@@ -449,8 +509,9 @@ AND attname = 'id';
-- warn: elem_count_histogram null element, rest get set
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'tags'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'tags',
'inherited', false::boolean,
'null_frac', 0.25::real,
'elem_count_histogram', '{1,1,NULL,1,1,1,1,1}'::real[]
@@ -465,8 +526,9 @@ AND attname = 'tags';
-- ok: elem_count_histogram
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'tags'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'tags',
'inherited', false::boolean,
'null_frac', 0.26::real,
'elem_count_histogram', '{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}'::real[]
@@ -481,8 +543,9 @@ AND attname = 'tags';
-- warn: range stats on a scalar type, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.27::real,
'range_empty_frac', 0.5::real,
@@ -498,8 +561,9 @@ AND attname = 'id';
-- warn: range_empty_frac range_length_hist null mismatch, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'arange'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'arange',
'inherited', false::boolean,
'null_frac', 0.28::real,
'range_length_histogram', '{399,499,Infinity}'::text
@@ -514,8 +578,9 @@ AND attname = 'arange';
-- warn: range_empty_frac range_length_hist null mismatch part 2, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'arange'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'arange',
'inherited', false::boolean,
'null_frac', 0.29::real,
'range_empty_frac', 0.5::real
@@ -530,8 +595,9 @@ AND attname = 'arange';
-- ok: range_empty_frac + range_length_hist
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'arange'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'arange',
'inherited', false::boolean,
'range_empty_frac', 0.5::real,
'range_length_histogram', '{399,499,Infinity}'::text
@@ -546,8 +612,9 @@ AND attname = 'arange';
-- warn: range bounds histogram on scalar, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.31::real,
'range_bounds_histogram', '{"[-1,1)","[0,4)","[1,4)","[1,100)"}'::text
@@ -562,8 +629,9 @@ AND attname = 'id';
-- ok: range_bounds_histogram
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'arange'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'arange',
'inherited', false::boolean,
'range_bounds_histogram', '{"[-1,1)","[0,4)","[1,4)","[1,100)"}'::text
);
@@ -577,8 +645,9 @@ AND attname = 'arange';
-- warn: cannot set most_common_elems for range type, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'arange'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'arange',
'inherited', false::boolean,
'null_frac', 0.32::real,
'most_common_elems', '{3,1}'::text,
@@ -594,8 +663,9 @@ AND attname = 'arange';
-- warn: scalars can't have mcelem, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.33::real,
'most_common_elems', '{1,3}'::text,
@@ -611,8 +681,9 @@ AND attname = 'id';
-- warn: mcelem / mcelem mismatch, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'tags'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'tags',
'inherited', false::boolean,
'null_frac', 0.34::real,
'most_common_elems', '{one,two}'::text
@@ -627,8 +698,9 @@ AND attname = 'tags';
-- warn: mcelem / mcelem null mismatch part 2, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'tags'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'tags',
'inherited', false::boolean,
'null_frac', 0.35::real,
'most_common_elem_freqs', '{0.3,0.2,0.2,0.3}'::real[]
@@ -643,8 +715,9 @@ AND attname = 'tags';
-- ok: mcelem
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'tags'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'tags',
'inherited', false::boolean,
'most_common_elems', '{one,three}'::text,
'most_common_elem_freqs', '{0.3,0.2,0.2,0.3,0.0}'::real[]
@@ -659,8 +732,9 @@ AND attname = 'tags';
-- warn: scalars can't have elem_count_histogram, rest ok
SELECT pg_catalog.pg_restore_attribute_stats(
- 'relation', 'stats_import.test'::regclass,
- 'attname', 'id'::name,
+ 'schemaname', 'stats_import',
+ 'relname', 'test',
+ 'attname', 'id',
'inherited', false::boolean,
'null_frac', 0.36::real,
'elem_count_histogram', '{1,1,1,1,1,1,1,1,1,1}'::real[]
@@ -707,8 +781,9 @@ SELECT s.schemaname, s.tablename, s.attname, s.inherited, r.*
FROM pg_catalog.pg_stats AS s
CROSS JOIN LATERAL
pg_catalog.pg_restore_attribute_stats(
- 'relation', ('stats_import.' || s.tablename || '_clone')::regclass,
- 'attname', s.attname,
+ 'schemaname', 'stats_import',
+ 'relname', s.tablename::text || '_clone',
+ 'attname', s.attname::text,
'inherited', s.inherited,
'version', 150000,
'null_frac', s.null_frac,
@@ -853,9 +928,10 @@ AND inherited = false
AND attname = 'arange';
SELECT pg_catalog.pg_clear_attribute_stats(
- relation => 'stats_import.test'::regclass,
- attname => 'arange'::name,
- inherited => false::boolean);
+ schemaname => 'stats_import',
+ relname => 'test',
+ attname => 'arange',
+ inherited => false);
SELECT COUNT(*)
FROM pg_stats
@@ -864,4 +940,34 @@ AND tablename = 'test'
AND inherited = false
AND attname = 'arange';
+-- temp tables
+CREATE TEMP TABLE stats_temp(i int);
+SELECT pg_restore_relation_stats(
+ 'schemaname', 'pg_temp',
+ 'relname', 'stats_temp',
+ 'relpages', '-19'::integer,
+ 'reltuples', 401::real,
+ 'relallvisible', 5::integer,
+ 'relallfrozen', 3::integer);
+
+SELECT relname, relpages, reltuples, relallvisible, relallfrozen
+FROM pg_class
+WHERE oid = 'pg_temp.stats_temp'::regclass
+ORDER BY relname;
+
+SELECT pg_catalog.pg_restore_attribute_stats(
+ 'schemaname', 'pg_temp',
+ 'relname', 'stats_temp',
+ 'attname', 'i',
+ 'inherited', false::boolean,
+ 'null_frac', 0.0123::real
+ );
+
+SELECT tablename, null_frac
+FROM pg_stats
+WHERE schemaname like 'pg_temp%'
+AND tablename = 'stats_temp'
+AND inherited = false
+AND attname = 'i';
+DROP TABLE stats_temp;
DROP SCHEMA stats_import CASCADE;