From 3d0a5212952cd0d7741d0a1d58c91db56766b71b Mon Sep 17 00:00:00 2001 From: Hadi Moshayedi Date: Mon, 24 Jun 2019 12:09:05 +0200 Subject: [PATCH] Show just coordinator plan in some test outputs. --- .../expected/multi_select_distinct.out | 60 +++++-------------- .../regress/expected/multi_test_helpers.out | 13 ++++ .../regress/sql/multi_select_distinct.sql | 6 ++ src/test/regress/sql/multi_test_helpers.sql | 14 +++++ 4 files changed, 48 insertions(+), 45 deletions(-) diff --git a/src/test/regress/expected/multi_select_distinct.out b/src/test/regress/expected/multi_select_distinct.out index c09d4bb97..9360c6238 100644 --- a/src/test/regress/expected/multi_select_distinct.out +++ b/src/test/regress/expected/multi_select_distinct.out @@ -1204,58 +1204,38 @@ SELECT DISTINCT ON (o_custkey) o_custkey, l_orderkey 14 | 11011 (10 rows) +SELECT coordinator_plan($Q$ EXPLAIN (COSTS FALSE) SELECT DISTINCT ON (o_custkey) o_custkey, l_orderkey FROM lineitem_hash_part JOIN orders_hash_part ON (l_orderkey = o_orderkey) WHERE o_custkey < 15 ORDER BY 1,2; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- +$Q$); + coordinator_plan +----------------------------------------------------------------- Unique -> Sort Sort Key: remote_scan.o_custkey, remote_scan.l_orderkey -> Custom Scan (Citus Real-Time) Task Count: 4 - Tasks Shown: One of 4 - -> Task - Node: host=localhost port=57637 dbname=regression - -> Unique - -> Sort - Sort Key: orders_hash_part.o_custkey, lineitem_hash_part.l_orderkey - -> Hash Join - Hash Cond: (lineitem_hash_part.l_orderkey = orders_hash_part.o_orderkey) - -> Seq Scan on lineitem_hash_part_360041 lineitem_hash_part - -> Hash - -> Seq Scan on orders_hash_part_360045 orders_hash_part - Filter: (o_custkey < 15) -(17 rows) +(5 rows) -- explain without order by -- notice master plan has order by on distinct on column +SELECT coordinator_plan($Q$ EXPLAIN (COSTS FALSE) SELECT DISTINCT ON (o_custkey) o_custkey, l_orderkey FROM lineitem_hash_part JOIN orders_hash_part ON (l_orderkey = o_orderkey) WHERE o_custkey < 15; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- +$Q$); + coordinator_plan +------------------------------------------- Unique -> Sort Sort Key: remote_scan.o_custkey -> Custom Scan (Citus Real-Time) Task Count: 4 - Tasks Shown: One of 4 - -> Task - Node: host=localhost port=57637 dbname=regression - -> Unique - -> Sort - Sort Key: orders_hash_part.o_custkey - -> Hash Join - Hash Cond: (lineitem_hash_part.l_orderkey = orders_hash_part.o_orderkey) - -> Seq Scan on lineitem_hash_part_360041 lineitem_hash_part - -> Hash - -> Seq Scan on orders_hash_part_360045 orders_hash_part - Filter: (o_custkey < 15) -(17 rows) +(5 rows) -- each customer's each order's first l_partkey SELECT DISTINCT ON (o_custkey, l_orderkey) o_custkey, l_orderkey, l_linenumber, l_partkey @@ -1303,30 +1283,20 @@ SELECT DISTINCT ON (o_custkey, l_orderkey) o_custkey, l_orderkey, l_linenumber, (36 rows) -- explain without order by +SELECT coordinator_plan($Q$ EXPLAIN (COSTS FALSE) SELECT DISTINCT ON (o_custkey, l_orderkey) o_custkey, l_orderkey, l_linenumber, l_partkey FROM lineitem_hash_part JOIN orders_hash_part ON (l_orderkey = o_orderkey) WHERE o_custkey < 20; - QUERY PLAN ----------------------------------------------------------------------------------------------------------------- +$Q$); + coordinator_plan +----------------------------------------------------------------- Unique -> Sort Sort Key: remote_scan.o_custkey, remote_scan.l_orderkey -> Custom Scan (Citus Real-Time) Task Count: 4 - Tasks Shown: One of 4 - -> Task - Node: host=localhost port=57637 dbname=regression - -> Unique - -> Sort - Sort Key: orders_hash_part.o_custkey, lineitem_hash_part.l_orderkey - -> Hash Join - Hash Cond: (lineitem_hash_part.l_orderkey = orders_hash_part.o_orderkey) - -> Seq Scan on lineitem_hash_part_360041 lineitem_hash_part - -> Hash - -> Seq Scan on orders_hash_part_360045 orders_hash_part - Filter: (o_custkey < 20) -(17 rows) +(5 rows) -- each customer's each order's last l_partkey SELECT DISTINCT ON (o_custkey, l_orderkey) o_custkey, l_orderkey, l_linenumber, l_partkey diff --git a/src/test/regress/expected/multi_test_helpers.out b/src/test/regress/expected/multi_test_helpers.out index c72a4487b..4bc18f8e8 100644 --- a/src/test/regress/expected/multi_test_helpers.out +++ b/src/test/regress/expected/multi_test_helpers.out @@ -120,3 +120,16 @@ BEGIN END IF; END; $$LANGUAGE plpgsql; +-- Create a function to ignore worker plans in explain output +CREATE OR REPLACE FUNCTION coordinator_plan(explain_commmand text, out query_plan text) +RETURNS SETOF TEXT AS $$ +BEGIN + FOR query_plan IN execute explain_commmand LOOP + RETURN next; + IF query_plan LIKE '%Task Count:%' + THEN + RETURN; + END IF; + END LOOP; + RETURN; +END; $$ language plpgsql; diff --git a/src/test/regress/sql/multi_select_distinct.sql b/src/test/regress/sql/multi_select_distinct.sql index 52f4b1aa9..4ba6dee7c 100644 --- a/src/test/regress/sql/multi_select_distinct.sql +++ b/src/test/regress/sql/multi_select_distinct.sql @@ -411,18 +411,22 @@ SELECT DISTINCT ON (o_custkey) o_custkey, l_orderkey WHERE o_custkey < 15 ORDER BY 1,2; +SELECT coordinator_plan($Q$ EXPLAIN (COSTS FALSE) SELECT DISTINCT ON (o_custkey) o_custkey, l_orderkey FROM lineitem_hash_part JOIN orders_hash_part ON (l_orderkey = o_orderkey) WHERE o_custkey < 15 ORDER BY 1,2; +$Q$); -- explain without order by -- notice master plan has order by on distinct on column +SELECT coordinator_plan($Q$ EXPLAIN (COSTS FALSE) SELECT DISTINCT ON (o_custkey) o_custkey, l_orderkey FROM lineitem_hash_part JOIN orders_hash_part ON (l_orderkey = o_orderkey) WHERE o_custkey < 15; +$Q$); -- each customer's each order's first l_partkey SELECT DISTINCT ON (o_custkey, l_orderkey) o_custkey, l_orderkey, l_linenumber, l_partkey @@ -431,10 +435,12 @@ SELECT DISTINCT ON (o_custkey, l_orderkey) o_custkey, l_orderkey, l_linenumber, ORDER BY 1,2,3; -- explain without order by +SELECT coordinator_plan($Q$ EXPLAIN (COSTS FALSE) SELECT DISTINCT ON (o_custkey, l_orderkey) o_custkey, l_orderkey, l_linenumber, l_partkey FROM lineitem_hash_part JOIN orders_hash_part ON (l_orderkey = o_orderkey) WHERE o_custkey < 20; +$Q$); -- each customer's each order's last l_partkey SELECT DISTINCT ON (o_custkey, l_orderkey) o_custkey, l_orderkey, l_linenumber, l_partkey diff --git a/src/test/regress/sql/multi_test_helpers.sql b/src/test/regress/sql/multi_test_helpers.sql index 8577ec74b..6dd0f1c16 100644 --- a/src/test/regress/sql/multi_test_helpers.sql +++ b/src/test/regress/sql/multi_test_helpers.sql @@ -118,3 +118,17 @@ BEGIN END IF; END; $$LANGUAGE plpgsql; + +-- Create a function to ignore worker plans in explain output +CREATE OR REPLACE FUNCTION coordinator_plan(explain_commmand text, out query_plan text) +RETURNS SETOF TEXT AS $$ +BEGIN + FOR query_plan IN execute explain_commmand LOOP + RETURN next; + IF query_plan LIKE '%Task Count:%' + THEN + RETURN; + END IF; + END LOOP; + RETURN; +END; $$ language plpgsql;