diff --git a/src/test/regress/base_schedule b/src/test/regress/base_schedule index 3b94b1d23..0be704c87 100644 --- a/src/test/regress/base_schedule +++ b/src/test/regress/base_schedule @@ -2,7 +2,7 @@ # Only run few basic tests to set up a testing environment # ---------- test: multi_cluster_management -test: multi_test_helpers multi_create_fdw +test: multi_test_helpers_local multi_create_fdw test: multi_test_catalog_views test: multi_create_table multi_behavioral_analytics_create_table test: multi_load_data diff --git a/src/test/regress/multi_mx_schedule b/src/test/regress/multi_mx_schedule index 9a7fadb50..932922c73 100644 --- a/src/test/regress/multi_mx_schedule +++ b/src/test/regress/multi_mx_schedule @@ -14,7 +14,7 @@ # Tests around schema changes, these are run first, so there's no preexisting objects. # --- test: multi_extension -test: multi_test_helpers +test: multi_test_helpers_local test: multi_mx_node_metadata test: multi_cluster_management test: multi_mx_function_table_reference diff --git a/src/test/regress/multi_schedule b/src/test/regress/multi_schedule index e75bde7e2..942459f72 100644 --- a/src/test/regress/multi_schedule +++ b/src/test/regress/multi_schedule @@ -25,7 +25,7 @@ test: multi_cluster_management test: alter_role_propagation test: propagate_extension_commands test: escape_extension_name -test: multi_test_helpers +test: multi_test_helpers_local test: multi_test_catalog_views test: multi_table_ddl test: multi_name_lengths diff --git a/src/test/regress/multi_schedule_hyperscale b/src/test/regress/multi_schedule_hyperscale index bbf6db5bf..5e8c87072 100644 --- a/src/test/regress/multi_schedule_hyperscale +++ b/src/test/regress/multi_schedule_hyperscale @@ -19,7 +19,7 @@ # remove / add node operations, we do not want any preexisting objects before # propagate_extension_commands # --- -test: multi_test_helpers_shadow +test: multi_test_helpers test: multi_test_catalog_views test: multi_name_resolution diff --git a/src/test/regress/sql/multi_test_helpers.sql b/src/test/regress/sql/multi_test_helpers.sql index 93823ea7a..fae60f243 100644 --- a/src/test/regress/sql/multi_test_helpers.sql +++ b/src/test/regress/sql/multi_test_helpers.sql @@ -1,5 +1,8 @@ -- File to create functions and helpers needed for subsequent tests +-- Some of the tests fail but without them some other tests fail. So failing parts +-- are removed to create shadow tests. This is one of them. + -- create a helper function to create objects on each node CREATE OR REPLACE FUNCTION run_command_on_master_and_workers(p_sql text) RETURNS void LANGUAGE plpgsql AS $$ @@ -88,43 +91,6 @@ BEGIN END; $func$; -CREATE OR REPLACE FUNCTION wait_until_metadata_sync(timeout INTEGER DEFAULT 15000) - RETURNS void - LANGUAGE C STRICT - AS 'citus'; - --- set sync intervals to less than 15s so wait_until_metadata_sync never times out -ALTER SYSTEM SET citus.metadata_sync_interval TO 3000; -ALTER SYSTEM SET citus.metadata_sync_retry_interval TO 500; -SELECT pg_reload_conf(); - --- Verifies pg_dist_node and pg_dist_palcement in the given worker matches the ones in coordinator -CREATE OR REPLACE FUNCTION verify_metadata(hostname TEXT, port INTEGER, master_port INTEGER DEFAULT 57636) - RETURNS BOOLEAN - LANGUAGE sql - AS $$ -SELECT wait_until_metadata_sync(); -WITH dist_node_summary AS ( - SELECT 'SELECT jsonb_agg(ROW(nodeid, groupid, nodename, nodeport, isactive) ORDER BY nodeid) FROM pg_dist_node' as query -), dist_node_check AS ( - SELECT count(distinct result) = 1 AS matches - FROM dist_node_summary CROSS JOIN LATERAL - master_run_on_worker(ARRAY[hostname, 'localhost'], ARRAY[port, master_port], - ARRAY[dist_node_summary.query, dist_node_summary.query], - false) -), dist_placement_summary AS ( - SELECT 'SELECT jsonb_agg(pg_dist_placement ORDER BY shardid) FROM pg_dist_placement)' AS query -), dist_placement_check AS ( - SELECT count(distinct result) = 1 AS matches - FROM dist_placement_summary CROSS JOIN LATERAL - master_run_on_worker(ARRAY[hostname, 'localhost'], ARRAY[port, master_port], - ARRAY[dist_placement_summary.query, dist_placement_summary.query], - false) -) -SELECT dist_node_check.matches AND dist_placement_check.matches -FROM dist_node_check CROSS JOIN dist_placement_check -$$; - -- -- Procedure for creating shards for range partitioned distributed table. -- @@ -141,17 +107,3 @@ BEGIN END LOOP; END; $$ LANGUAGE plpgsql; - - --- partition_task_list_results tests the internal PartitionTasklistResults function -CREATE OR REPLACE FUNCTION pg_catalog.partition_task_list_results(resultIdPrefix text, - query text, - target_table regclass, - binaryFormat bool DEFAULT true) - RETURNS TABLE(resultId text, - nodeId int, - rowCount bigint, - targetShardId bigint, - targetShardIndex int) - LANGUAGE C STRICT VOLATILE - AS 'citus', $$partition_task_list_results$$; diff --git a/src/test/regress/sql/multi_test_helpers_local.sql b/src/test/regress/sql/multi_test_helpers_local.sql new file mode 100644 index 000000000..301cc3f89 --- /dev/null +++ b/src/test/regress/sql/multi_test_helpers_local.sql @@ -0,0 +1,54 @@ +-- This file adds to multi_test_helpers.sql set of files we only need to run +-- in local tests + +\include_relative multi_test_helpers.sql + +CREATE OR REPLACE FUNCTION wait_until_metadata_sync(timeout INTEGER DEFAULT 15000) + RETURNS void + LANGUAGE C STRICT + AS 'citus'; + +-- set sync intervals to less than 15s so wait_until_metadata_sync never times out +ALTER SYSTEM SET citus.metadata_sync_interval TO 3000; +ALTER SYSTEM SET citus.metadata_sync_retry_interval TO 500; +SELECT pg_reload_conf(); + +-- Verifies pg_dist_node and pg_dist_palcement in the given worker matches the ones in coordinator +CREATE OR REPLACE FUNCTION verify_metadata(hostname TEXT, port INTEGER, master_port INTEGER DEFAULT 57636) + RETURNS BOOLEAN + LANGUAGE sql + AS $$ +SELECT wait_until_metadata_sync(); +WITH dist_node_summary AS ( + SELECT 'SELECT jsonb_agg(ROW(nodeid, groupid, nodename, nodeport, isactive) ORDER BY nodeid) FROM pg_dist_node' as query +), dist_node_check AS ( + SELECT count(distinct result) = 1 AS matches + FROM dist_node_summary CROSS JOIN LATERAL + master_run_on_worker(ARRAY[hostname, 'localhost'], ARRAY[port, master_port], + ARRAY[dist_node_summary.query, dist_node_summary.query], + false) +), dist_placement_summary AS ( + SELECT 'SELECT jsonb_agg(pg_dist_placement ORDER BY shardid) FROM pg_dist_placement)' AS query +), dist_placement_check AS ( + SELECT count(distinct result) = 1 AS matches + FROM dist_placement_summary CROSS JOIN LATERAL + master_run_on_worker(ARRAY[hostname, 'localhost'], ARRAY[port, master_port], + ARRAY[dist_placement_summary.query, dist_placement_summary.query], + false) +) +SELECT dist_node_check.matches AND dist_placement_check.matches +FROM dist_node_check CROSS JOIN dist_placement_check +$$; + +-- partition_task_list_results tests the internal PartitionTasklistResults function +CREATE OR REPLACE FUNCTION pg_catalog.partition_task_list_results(resultIdPrefix text, + query text, + target_table regclass, + binaryFormat bool DEFAULT true) + RETURNS TABLE(resultId text, + nodeId int, + rowCount bigint, + targetShardId bigint, + targetShardIndex int) + LANGUAGE C STRICT VOLATILE + AS 'citus', $$partition_task_list_results$$;