CREATE SCHEMA "statistics'TestTarget"; SET search_path TO "statistics'TestTarget"; SET citus.next_shard_id TO 980000; SET client_min_messages TO WARNING; SET citus.shard_count TO 32; SET citus.shard_replication_factor TO 1; CREATE TABLE t1 (a int, b int); CREATE STATISTICS s1 ON a,b FROM t1; CREATE STATISTICS s2 ON a,b FROM t1; CREATE STATISTICS s3 ON a,b FROM t1; CREATE STATISTICS s4 ON a,b FROM t1; -- test altering stats target -- test alter target before distribution ALTER STATISTICS s1 SET STATISTICS 3; -- since max value for target is 10000, this will automatically be lowered ALTER STATISTICS s2 SET STATISTICS 999999; WARNING: lowering statistics target to 10000 SELECT create_distributed_table('t1', 'b'); create_distributed_table --------------------------------------------------------------------- (1 row) -- test alter target before distribution ALTER STATISTICS s3 SET STATISTICS 46; \c - - - :worker_1_port -- for stxstattarget, re-interpret -1 as null to avoid adding another test output for pg < 17 -- Changed stxstattarget in pg_statistic_ext to use nullable representation, removing explicit -1 for default statistics target in PostgreSQL 17. -- https://github.com/postgres/postgres/commit/012460ee93c304fbc7220e5b55d9d0577fc766ab SELECT nullif(stxstattarget, -1) AS stxstattarget, stxrelid::regclass FROM pg_statistic_ext WHERE stxnamespace IN ( SELECT oid FROM pg_namespace WHERE nspname IN ('statistics''TestTarget') ) AND stxname SIMILAR TO '%\_\d+' ORDER BY nullif(stxstattarget, -1) IS NULL DESC, -- Make sure null values are handled consistently nullif(stxstattarget, -1) NULLS FIRST, -- Use NULLS FIRST to ensure consistent placement of nulls stxrelid::regclass ASC; stxstattarget | stxrelid --------------------------------------------------------------------- | "statistics'TestTarget".t1_980000 | "statistics'TestTarget".t1_980002 | "statistics'TestTarget".t1_980004 | "statistics'TestTarget".t1_980006 | "statistics'TestTarget".t1_980008 | "statistics'TestTarget".t1_980010 | "statistics'TestTarget".t1_980012 | "statistics'TestTarget".t1_980014 | "statistics'TestTarget".t1_980016 | "statistics'TestTarget".t1_980018 | "statistics'TestTarget".t1_980020 | "statistics'TestTarget".t1_980022 | "statistics'TestTarget".t1_980024 | "statistics'TestTarget".t1_980026 | "statistics'TestTarget".t1_980028 | "statistics'TestTarget".t1_980030 3 | "statistics'TestTarget".t1_980000 3 | "statistics'TestTarget".t1_980002 3 | "statistics'TestTarget".t1_980004 3 | "statistics'TestTarget".t1_980006 3 | "statistics'TestTarget".t1_980008 3 | "statistics'TestTarget".t1_980010 3 | "statistics'TestTarget".t1_980012 3 | "statistics'TestTarget".t1_980014 3 | "statistics'TestTarget".t1_980016 3 | "statistics'TestTarget".t1_980018 3 | "statistics'TestTarget".t1_980020 3 | "statistics'TestTarget".t1_980022 3 | "statistics'TestTarget".t1_980024 3 | "statistics'TestTarget".t1_980026 3 | "statistics'TestTarget".t1_980028 3 | "statistics'TestTarget".t1_980030 46 | "statistics'TestTarget".t1_980000 46 | "statistics'TestTarget".t1_980002 46 | "statistics'TestTarget".t1_980004 46 | "statistics'TestTarget".t1_980006 46 | "statistics'TestTarget".t1_980008 46 | "statistics'TestTarget".t1_980010 46 | "statistics'TestTarget".t1_980012 46 | "statistics'TestTarget".t1_980014 46 | "statistics'TestTarget".t1_980016 46 | "statistics'TestTarget".t1_980018 46 | "statistics'TestTarget".t1_980020 46 | "statistics'TestTarget".t1_980022 46 | "statistics'TestTarget".t1_980024 46 | "statistics'TestTarget".t1_980026 46 | "statistics'TestTarget".t1_980028 46 | "statistics'TestTarget".t1_980030 10000 | "statistics'TestTarget".t1_980000 10000 | "statistics'TestTarget".t1_980002 10000 | "statistics'TestTarget".t1_980004 10000 | "statistics'TestTarget".t1_980006 10000 | "statistics'TestTarget".t1_980008 10000 | "statistics'TestTarget".t1_980010 10000 | "statistics'TestTarget".t1_980012 10000 | "statistics'TestTarget".t1_980014 10000 | "statistics'TestTarget".t1_980016 10000 | "statistics'TestTarget".t1_980018 10000 | "statistics'TestTarget".t1_980020 10000 | "statistics'TestTarget".t1_980022 10000 | "statistics'TestTarget".t1_980024 10000 | "statistics'TestTarget".t1_980026 10000 | "statistics'TestTarget".t1_980028 10000 | "statistics'TestTarget".t1_980030 (64 rows) \c - - - :master_port -- the first one should log a notice that says statistics object does not exist ALTER STATISTICS IF EXISTS stats_that_doesnt_exists SET STATISTICS 0; NOTICE: statistics object "stats_that_doesnt_exists" does not exist, skipping -- these three should error out as ALTER STATISTICS syntax doesn't support these with IF EXISTS clause -- if output of any of these three changes, we should support them and update the test output here ALTER STATISTICS IF EXISTS stats_that_doesnt_exists RENAME TO this_should_error_out; ERROR: syntax error at or near "RENAME" ALTER STATISTICS IF EXISTS stats_that_doesnt_exists OWNER TO CURRENT_USER; ERROR: syntax error at or near "OWNER" ALTER STATISTICS IF EXISTS stats_that_doesnt_exists SET SCHEMA "statistics'Test"; ERROR: syntax error at or near "SCHEMA" SET client_min_messages TO WARNING; DROP SCHEMA "statistics'TestTarget" CASCADE;