diff --git a/src/test/regress/multi_schedule b/src/test/regress/multi_schedule index 088a7b8bd..daccee2a6 100644 --- a/src/test/regress/multi_schedule +++ b/src/test/regress/multi_schedule @@ -59,6 +59,7 @@ test: pg13 pg12 test: pg14 test: tableam drop_column_partitioned_table + # ---------- # Miscellaneous tests to check our query planning behavior # ---------- @@ -74,20 +75,31 @@ test: join_pushdown test: multi_subquery_union multi_subquery_in_where_clause multi_subquery_misc statement_cancel_error_message test: multi_agg_distinct multi_limit_clause_approximate multi_outer_join_reference multi_single_relation_subquery multi_prepare_plsql set_role_in_transaction test: multi_reference_table multi_select_for_update relation_access_tracking pg13_with_ties -test: custom_aggregate_support aggregate_support tdigest_aggregate_support +test: check_mx +test: custom_aggregate_support +test: check_mx +test: aggregate_support +test: check_mx +test: tdigest_aggregate_support +test: check_mx test: multi_average_expression multi_working_columns multi_having_pushdown having_subquery +test: check_mx test: multi_array_agg multi_limit_clause multi_orderby_limit_pushdown +test: check_mx test: multi_jsonb_agg multi_jsonb_object_agg multi_json_agg multi_json_object_agg bool_agg ch_bench_having chbenchmark_all_queries expression_reference_join anonymous_columns +test: check_mx test: ch_bench_subquery_repartition test: multi_agg_type_conversion multi_count_type_conversion recursive_relation_planning_restriction_pushdown test: multi_partition_pruning single_hash_repartition_join unsupported_lateral_subqueries test: multi_join_pruning multi_hash_pruning intermediate_result_pruning test: multi_null_minmax_value_pruning cursors +test: check_mx test: modification_correctness test: multi_query_directory_cleanup test: multi_task_assignment_policy multi_cross_shard test: multi_utility_statements test: multi_dropped_column_aliases foreign_key_restriction_enforcement +test: check_mx test: binary_protocol test: alter_table_set_access_method test: alter_distributed_table @@ -95,6 +107,7 @@ test: issue_5248 issue_5099 test: object_propagation_debug test: undistribute_table test: run_command_on_all_nodes +test: check_mx # --------- @@ -108,3 +121,4 @@ test: ensure_no_intermediate_data_leak # -------- test: ensure_no_shared_connection_leak test: check_mx + diff --git a/src/test/regress/sql/aggregate_support.sql b/src/test/regress/sql/aggregate_support.sql index 5f235c4cf..c5bbca6d5 100644 --- a/src/test/regress/sql/aggregate_support.sql +++ b/src/test/regress/sql/aggregate_support.sql @@ -87,6 +87,9 @@ begin return x * 2; end; $$; +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + create aggregate psum(int, int)( sfunc=psum_sfunc, combinefunc=psum_combinefunc, @@ -155,6 +158,9 @@ begin if coalesce(s1,'') > coalesce(s2,'') then return s1; else return s2; end i end; $$; +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + create aggregate binstragg(text, text)( sfunc=binstragg_sfunc, combinefunc=binstragg_combinefunc, @@ -247,6 +253,9 @@ select regr_syy(u1.user_id, u2.user_id) filter (where '0300030' LIKE '%3%')::int from users_table u1, events_table u2 where u1.user_id = u2.user_id; +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + -- multiple aggs with filters select regr_syy(u1.user_id, u2.user_id) filter (where u1.value_1 < 5)::numeric(10,3), regr_syy(u1.value_1, u2.value_2) filter (where u1.user_id < 5)::numeric(10,3) from users_table u1, events_table u2 @@ -464,6 +473,9 @@ RETURN $1 * $1; END; $function$; +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + SET citus.enable_metadata_sync TO OFF; CREATE OR REPLACE FUNCTION square_func(int) RETURNS int @@ -475,6 +487,9 @@ END; $function$; RESET citus.enable_metadata_sync; +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + SELECT const_function(1), string_agg(a::character, ',') FROM t1; SELECT const_function(1), count(b) FROM t1; SELECT const_function(1), count(b), 10 FROM t1; @@ -523,6 +538,9 @@ SELECT PERCENTILE_DISC(.25) WITHIN GROUP (ORDER BY agg_col) FROM dist_table LEFT JOIN ref_table ON TRUE; +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + SELECT PERCENTILE_DISC(.25) WITHIN GROUP (ORDER BY agg_col) FROM (SELECT *, random() FROM dist_table) a; @@ -553,6 +571,9 @@ SELECT create_distributed_table('dummy_tbl','a'); create function dummy_fnc(a dummy_tbl, d double precision) RETURNS dummy_tbl AS $$SELECT 1;$$ LANGUAGE sql; +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + -- test in tx block -- shouldn't distribute, as citus.create_object_propagation is set to deferred BEGIN; @@ -562,8 +583,14 @@ COMMIT; -- verify not distributed SELECT run_command_on_workers($$select aggfnoid from pg_aggregate where aggfnoid::text like '%dependent_agg%';$$); +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + drop aggregate dependent_agg ( double precision); +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + -- now try with create_object_propagation = immediate SET citus.create_object_propagation TO immediate; -- should distribute, as citus.create_object_propagation is set to immediate @@ -572,9 +599,15 @@ BEGIN; create aggregate dependent_agg (float8) (stype=dummy_tbl, sfunc=dummy_fnc); COMMIT; +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + -- verify distributed SELECT run_command_on_workers($$select aggfnoid from pg_aggregate where aggfnoid::text like '%dependent_agg%';$$); +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + drop aggregate dependent_agg ( double precision); -- now try with create_object_propagation = automatic @@ -585,6 +618,9 @@ BEGIN; create aggregate dependent_agg (float8) (stype=dummy_tbl, sfunc=dummy_fnc); COMMIT; +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + -- verify distributed SELECT run_command_on_workers($$select aggfnoid from pg_aggregate where aggfnoid::text like '%dependent_agg%';$$); @@ -593,6 +629,9 @@ SELECT run_command_on_workers($$SELECT count(*) from pg_catalog.pg_dist_object w RESET citus.create_object_propagation; +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + -- drop and test outside of tx block drop aggregate dependent_agg (float8); -- verify that the aggregate is removed from pg_dist_object, on each worker @@ -601,8 +640,14 @@ create aggregate dependent_agg (float8) (stype=dummy_tbl, sfunc=dummy_fnc); --verify SELECT run_command_on_workers($$select aggfnoid from pg_aggregate where aggfnoid::text like '%dependent_agg%';$$); +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + DROP TABLE dummy_tbl CASCADE; +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + SET citus.create_object_propagation TO automatic; begin; create type typ1 as (a int); @@ -611,6 +656,9 @@ begin; commit; RESET citus.create_object_propagation; +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; + SELECT run_command_on_workers($$select aggfnoid from pg_aggregate where aggfnoid::text like '%dependent_agg%';$$); set client_min_messages to error; diff --git a/src/test/regress/sql/check_mx.sql b/src/test/regress/sql/check_mx.sql index f2da78316..a6a5e211c 100644 --- a/src/test/regress/sql/check_mx.sql +++ b/src/test/regress/sql/check_mx.sql @@ -23,3 +23,6 @@ SELECT unnest(result::text[]) AS unnested_result FROM run_command_on_workers($$SELECT activate_node_snapshot()$$) EXCEPT SELECT unnest(activate_node_snapshot()); + +SELECT pg_identify_object_as_address(classid, objid, objsubid), * from pg_catalog.pg_dist_object; +SELECT unnest(result::text[]) FROM run_command_on_workers($$select array_agg(pg_identify_object_as_address(classid, objid, objsubid)) from pg_catalog.pg_dist_object$$) order by 1; \ No newline at end of file