diff --git a/src/test/regress/expected/drop_column_partitioned_table.out b/src/test/regress/expected/drop_column_partitioned_table.out index a32602511..57ef66d7c 100644 --- a/src/test/regress/expected/drop_column_partitioned_table.out +++ b/src/test/regress/expected/drop_column_partitioned_table.out @@ -226,78 +226,55 @@ EXPLAIN (COSTS FALSE) INSERT INTO sensors_2003 VALUES (3, '2003-01-01', row_to_j -> Result (7 rows) +SELECT public.explain_has_single_task( + $$ EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors WHERE measureid = 3 AND eventdatetime = '2000-02-02'; - QUERY PLAN + $$ +); + explain_has_single_task --------------------------------------------------------------------- - Custom Scan (Citus Adaptive) - Task Count: 1 - Tasks Shown: All - -> Task - Node: host=localhost port=xxxxx dbname=regression - -> Aggregate - -> Index Only Scan using sensors_2000_pkey_2580005 on sensors_2000_2580005 sensors - Index Cond: ((measureid = 3) AND (eventdatetime = '2000-02-02'::date)) -(8 rows) - -EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2000 WHERE measureid = 3; - QUERY PLAN ---------------------------------------------------------------------- - Custom Scan (Citus Adaptive) - Task Count: 1 - Tasks Shown: All - -> Task - Node: host=localhost port=xxxxx dbname=regression - -> Aggregate - -> Bitmap Heap Scan on sensors_2000_2580005 sensors_xxx - Recheck Cond: (measureid = 3) - -> Bitmap Index Scan on sensors_2000_pkey_2580005 - Index Cond: (measureid = 3) -(10 rows) - -EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2001 WHERE measureid = 3; - QUERY PLAN ---------------------------------------------------------------------- - Custom Scan (Citus Adaptive) - Task Count: 1 - Tasks Shown: All - -> Task - Node: host=localhost port=xxxxx dbname=regression - -> Aggregate - -> Bitmap Heap Scan on sensors_2001_2580009 sensors_xxx - Recheck Cond: (measureid = 3) - -> Bitmap Index Scan on sensors_2001_pkey_2580009 - Index Cond: (measureid = 3) -(10 rows) - -EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2002 WHERE measureid = 3; - QUERY PLAN ---------------------------------------------------------------------- - Custom Scan (Citus Adaptive) - Task Count: 1 - Tasks Shown: All - -> Task - Node: host=localhost port=xxxxx dbname=regression - -> Aggregate - -> Bitmap Heap Scan on sensors_2002_2580013 sensors_xxx - Recheck Cond: (measureid = 3) - -> Bitmap Index Scan on sensors_2002_pkey_2580013 - Index Cond: (measureid = 3) -(10 rows) + t +(1 row) +SELECT public.explain_has_single_task( + $$ EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2003 WHERE measureid = 3; - QUERY PLAN + $$ +); + explain_has_single_task --------------------------------------------------------------------- - Custom Scan (Citus Adaptive) - Task Count: 1 - Tasks Shown: All - -> Task - Node: host=localhost port=xxxxx dbname=regression - -> Aggregate - -> Bitmap Heap Scan on sensors_2003_2580017 sensors_xxx - Recheck Cond: (measureid = 3) - -> Bitmap Index Scan on sensors_2003_pkey_2580017 - Index Cond: (measureid = 3) -(10 rows) + t +(1 row) + +SELECT public.explain_has_single_task( + $$ +EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2000 WHERE measureid = 3; + $$ +); + explain_has_single_task +--------------------------------------------------------------------- + t +(1 row) + +SELECT public.explain_has_single_task( + $$ +EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2001 WHERE measureid = 3; + $$ +); + explain_has_single_task +--------------------------------------------------------------------- + t +(1 row) + +SELECT public.explain_has_single_task( + $$ +EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2002 WHERE measureid = 3; + $$ +); + explain_has_single_task +--------------------------------------------------------------------- + t +(1 row) -- execute 7 times to make sure it is re-cached EXECUTE drop_col_prepare_insert(3, '2000-10-01', row_to_json(row(1))); diff --git a/src/test/regress/expected/multi_test_helpers.out b/src/test/regress/expected/multi_test_helpers.out index 34f44361f..f46e6bcc8 100644 --- a/src/test/regress/expected/multi_test_helpers.out +++ b/src/test/regress/expected/multi_test_helpers.out @@ -57,6 +57,20 @@ BEGIN END LOOP; RETURN false; END; $$ language plpgsql; +--helper function to check there is a single task +CREATE OR REPLACE FUNCTION explain_has_single_task(explain_command text) +RETURNS BOOLEAN AS $$ +DECLARE + query_plan text; +BEGIN + FOR query_plan IN EXECUTE explain_command LOOP + IF query_plan ILIKE '%Task Count: 1%' + THEN + RETURN true; + END IF; + END LOOP; + RETURN false; +END; $$ language plpgsql; -- helper function to quickly run SQL on the whole cluster CREATE OR REPLACE FUNCTION run_command_on_coordinator_and_workers(p_sql text) RETURNS void LANGUAGE plpgsql AS $$ diff --git a/src/test/regress/sql/drop_column_partitioned_table.sql b/src/test/regress/sql/drop_column_partitioned_table.sql index 719c6c0bb..d57ad3805 100644 --- a/src/test/regress/sql/drop_column_partitioned_table.sql +++ b/src/test/regress/sql/drop_column_partitioned_table.sql @@ -111,11 +111,36 @@ EXPLAIN (COSTS FALSE) INSERT INTO sensors_2001 VALUES (3, '2001-01-01', row_to_j EXPLAIN (COSTS FALSE) INSERT INTO sensors_2002 VALUES (3, '2002-01-01', row_to_json(row(1))); EXPLAIN (COSTS FALSE) INSERT INTO sensors_2003 VALUES (3, '2003-01-01', row_to_json(row(1))); +SELECT public.explain_has_single_task( + $$ EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors WHERE measureid = 3 AND eventdatetime = '2000-02-02'; -EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2000 WHERE measureid = 3; -EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2001 WHERE measureid = 3; -EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2002 WHERE measureid = 3; + $$ +); + +SELECT public.explain_has_single_task( + $$ EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2003 WHERE measureid = 3; + $$ +); + +SELECT public.explain_has_single_task( + $$ +EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2000 WHERE measureid = 3; + $$ +); + +SELECT public.explain_has_single_task( + $$ +EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2001 WHERE measureid = 3; + $$ +); + +SELECT public.explain_has_single_task( + $$ +EXPLAIN (COSTS FALSE) SELECT count(*) FROM sensors_2002 WHERE measureid = 3; + $$ +); + -- execute 7 times to make sure it is re-cached EXECUTE drop_col_prepare_insert(3, '2000-10-01', row_to_json(row(1))); diff --git a/src/test/regress/sql/multi_test_helpers.sql b/src/test/regress/sql/multi_test_helpers.sql index 2cf3bc98a..8c035c8e2 100644 --- a/src/test/regress/sql/multi_test_helpers.sql +++ b/src/test/regress/sql/multi_test_helpers.sql @@ -63,6 +63,21 @@ BEGIN RETURN false; END; $$ language plpgsql; +--helper function to check there is a single task +CREATE OR REPLACE FUNCTION explain_has_single_task(explain_command text) +RETURNS BOOLEAN AS $$ +DECLARE + query_plan text; +BEGIN + FOR query_plan IN EXECUTE explain_command LOOP + IF query_plan ILIKE '%Task Count: 1%' + THEN + RETURN true; + END IF; + END LOOP; + RETURN false; +END; $$ language plpgsql; + -- helper function to quickly run SQL on the whole cluster CREATE OR REPLACE FUNCTION run_command_on_coordinator_and_workers(p_sql text) RETURNS void LANGUAGE plpgsql AS $$