mirror of https://github.com/citusdata/citus.git
242 lines
17 KiB
Plaintext
242 lines
17 KiB
Plaintext
--
|
|
-- MULTI_LARGE_TABLE_PLANNING
|
|
--
|
|
-- Tests that cover large table join planning. Note that we explicitly start a
|
|
-- transaction block here so that we don't emit debug messages with changing
|
|
-- transaction ids in them. Also, we set the executor type to task tracker
|
|
-- executor here, as we cannot run repartition jobs with real time executor.
|
|
SET citus.next_shard_id TO 690000;
|
|
SET citus.enable_unique_job_ids TO off;
|
|
-- print whether we're using version > 9 to make version-specific tests clear
|
|
SHOW server_version \gset
|
|
SELECT substring(:'server_version', '\d+')::int > 9 AS version_above_nine;
|
|
version_above_nine
|
|
--------------------
|
|
t
|
|
(1 row)
|
|
|
|
BEGIN;
|
|
SET client_min_messages TO DEBUG4;
|
|
SET citus.large_table_shard_count TO 2;
|
|
SET citus.task_executor_type TO 'task-tracker';
|
|
-- Debug4 log messages display jobIds within them. We explicitly set the jobId
|
|
-- sequence here so that the regression output becomes independent of the number
|
|
-- of jobs executed prior to running this test.
|
|
-- Multi-level repartition join to verify our projection columns are correctly
|
|
-- referenced and propagated across multiple repartition jobs. The test also
|
|
-- validates that only the minimal necessary projection columns are transferred
|
|
-- between jobs.
|
|
SELECT
|
|
l_partkey, o_orderkey, count(*)
|
|
FROM
|
|
lineitem, part, orders, customer
|
|
WHERE
|
|
l_orderkey = o_orderkey AND
|
|
l_partkey = p_partkey AND
|
|
c_custkey = o_custkey AND
|
|
(l_quantity > 5.0 OR l_extendedprice > 1200.0) AND
|
|
p_size > 8 AND o_totalprice > 10.0 AND
|
|
c_acctbal < 5000.0 AND l_partkey < 1000
|
|
GROUP BY
|
|
l_partkey, o_orderkey
|
|
ORDER BY
|
|
l_partkey, o_orderkey;
|
|
DEBUG: join prunable for intervals [1,1509] and [8997,14946]
|
|
DEBUG: join prunable for intervals [1509,4964] and [8997,14946]
|
|
DEBUG: join prunable for intervals [2951,4455] and [8997,14946]
|
|
DEBUG: join prunable for intervals [4480,5986] and [8997,14946]
|
|
DEBUG: join prunable for intervals [8997,10560] and [1,5986]
|
|
DEBUG: join prunable for intervals [10560,12036] and [1,5986]
|
|
DEBUG: join prunable for intervals [12036,13473] and [1,5986]
|
|
DEBUG: join prunable for intervals [13473,14947] and [1,5986]
|
|
DEBUG: generated sql query for task 3
|
|
DETAIL: query string: "SELECT lineitem.l_partkey, orders.o_orderkey, lineitem.l_quantity, lineitem.l_extendedprice, orders.o_custkey FROM (lineitem_290000 lineitem JOIN orders_290008 orders ON ((lineitem.l_orderkey = orders.o_orderkey))) WHERE ((lineitem.l_partkey < 1000) AND (orders.o_totalprice > 10.0))"
|
|
DEBUG: generated sql query for task 6
|
|
DETAIL: query string: "SELECT lineitem.l_partkey, orders.o_orderkey, lineitem.l_quantity, lineitem.l_extendedprice, orders.o_custkey FROM (lineitem_290001 lineitem JOIN orders_290008 orders ON ((lineitem.l_orderkey = orders.o_orderkey))) WHERE ((lineitem.l_partkey < 1000) AND (orders.o_totalprice > 10.0))"
|
|
DEBUG: generated sql query for task 9
|
|
DETAIL: query string: "SELECT lineitem.l_partkey, orders.o_orderkey, lineitem.l_quantity, lineitem.l_extendedprice, orders.o_custkey FROM (lineitem_290002 lineitem JOIN orders_290008 orders ON ((lineitem.l_orderkey = orders.o_orderkey))) WHERE ((lineitem.l_partkey < 1000) AND (orders.o_totalprice > 10.0))"
|
|
DEBUG: generated sql query for task 12
|
|
DETAIL: query string: "SELECT lineitem.l_partkey, orders.o_orderkey, lineitem.l_quantity, lineitem.l_extendedprice, orders.o_custkey FROM (lineitem_290003 lineitem JOIN orders_290008 orders ON ((lineitem.l_orderkey = orders.o_orderkey))) WHERE ((lineitem.l_partkey < 1000) AND (orders.o_totalprice > 10.0))"
|
|
DEBUG: generated sql query for task 15
|
|
DETAIL: query string: "SELECT lineitem.l_partkey, orders.o_orderkey, lineitem.l_quantity, lineitem.l_extendedprice, orders.o_custkey FROM (lineitem_290004 lineitem JOIN orders_290009 orders ON ((lineitem.l_orderkey = orders.o_orderkey))) WHERE ((lineitem.l_partkey < 1000) AND (orders.o_totalprice > 10.0))"
|
|
DEBUG: generated sql query for task 18
|
|
DETAIL: query string: "SELECT lineitem.l_partkey, orders.o_orderkey, lineitem.l_quantity, lineitem.l_extendedprice, orders.o_custkey FROM (lineitem_290005 lineitem JOIN orders_290009 orders ON ((lineitem.l_orderkey = orders.o_orderkey))) WHERE ((lineitem.l_partkey < 1000) AND (orders.o_totalprice > 10.0))"
|
|
DEBUG: generated sql query for task 21
|
|
DETAIL: query string: "SELECT lineitem.l_partkey, orders.o_orderkey, lineitem.l_quantity, lineitem.l_extendedprice, orders.o_custkey FROM (lineitem_290006 lineitem JOIN orders_290009 orders ON ((lineitem.l_orderkey = orders.o_orderkey))) WHERE ((lineitem.l_partkey < 1000) AND (orders.o_totalprice > 10.0))"
|
|
DEBUG: generated sql query for task 24
|
|
DETAIL: query string: "SELECT lineitem.l_partkey, orders.o_orderkey, lineitem.l_quantity, lineitem.l_extendedprice, orders.o_custkey FROM (lineitem_290007 lineitem JOIN orders_290009 orders ON ((lineitem.l_orderkey = orders.o_orderkey))) WHERE ((lineitem.l_partkey < 1000) AND (orders.o_totalprice > 10.0))"
|
|
DEBUG: assigned task 6 to node localhost:57637
|
|
DEBUG: assigned task 3 to node localhost:57638
|
|
DEBUG: assigned task 12 to node localhost:57637
|
|
DEBUG: assigned task 9 to node localhost:57638
|
|
DEBUG: assigned task 18 to node localhost:57637
|
|
DEBUG: assigned task 15 to node localhost:57638
|
|
DEBUG: assigned task 24 to node localhost:57637
|
|
DEBUG: assigned task 21 to node localhost:57638
|
|
DEBUG: join prunable for intervals [1,1000] and [6001,7000]
|
|
DEBUG: join prunable for intervals [6001,7000] and [1,1000]
|
|
DEBUG: generated sql query for task 3
|
|
DETAIL: query string: "SELECT "pg_merge_job_0001.task_000025".intermediate_column_1_0, "pg_merge_job_0001.task_000025".intermediate_column_1_1, "pg_merge_job_0001.task_000025".intermediate_column_1_2, "pg_merge_job_0001.task_000025".intermediate_column_1_3, "pg_merge_job_0001.task_000025".intermediate_column_1_4 FROM (pg_merge_job_0001.task_000025 "pg_merge_job_0001.task_000025" JOIN part_290011 part ON (("pg_merge_job_0001.task_000025".intermediate_column_1_0 = part.p_partkey))) WHERE (part.p_size > 8)"
|
|
DEBUG: generated sql query for task 6
|
|
DETAIL: query string: "SELECT "pg_merge_job_0001.task_000034".intermediate_column_1_0, "pg_merge_job_0001.task_000034".intermediate_column_1_1, "pg_merge_job_0001.task_000034".intermediate_column_1_2, "pg_merge_job_0001.task_000034".intermediate_column_1_3, "pg_merge_job_0001.task_000034".intermediate_column_1_4 FROM (pg_merge_job_0001.task_000034 "pg_merge_job_0001.task_000034" JOIN part_280002 part ON (("pg_merge_job_0001.task_000034".intermediate_column_1_0 = part.p_partkey))) WHERE (part.p_size > 8)"
|
|
DEBUG: pruning merge fetch taskId 1
|
|
DETAIL: Creating dependency on merge taskId 25
|
|
DEBUG: pruning merge fetch taskId 4
|
|
DETAIL: Creating dependency on merge taskId 34
|
|
DEBUG: assigned task 3 to node localhost:57637
|
|
DEBUG: assigned task 6 to node localhost:57638
|
|
DEBUG: join prunable for intervals [1,1000] and [1001,2000]
|
|
DEBUG: join prunable for intervals [1,1000] and [6001,7000]
|
|
DEBUG: join prunable for intervals [1001,2000] and [1,1000]
|
|
DEBUG: join prunable for intervals [1001,2000] and [6001,7000]
|
|
DEBUG: join prunable for intervals [6001,7000] and [1,1000]
|
|
DEBUG: join prunable for intervals [6001,7000] and [1001,2000]
|
|
DEBUG: generated sql query for task 3
|
|
DETAIL: query string: "SELECT "pg_merge_job_0002.task_000007".intermediate_column_2_0 AS l_partkey, "pg_merge_job_0002.task_000007".intermediate_column_2_1 AS o_orderkey, count(*) AS count FROM (pg_merge_job_0002.task_000007 "pg_merge_job_0002.task_000007" JOIN customer_290010 customer ON ((customer.c_custkey = "pg_merge_job_0002.task_000007".intermediate_column_2_4))) WHERE ((("pg_merge_job_0002.task_000007".intermediate_column_2_2 > 5.0) OR ("pg_merge_job_0002.task_000007".intermediate_column_2_3 > 1200.0)) AND (customer.c_acctbal < 5000.0)) GROUP BY "pg_merge_job_0002.task_000007".intermediate_column_2_0, "pg_merge_job_0002.task_000007".intermediate_column_2_1"
|
|
DEBUG: generated sql query for task 6
|
|
DETAIL: query string: "SELECT "pg_merge_job_0002.task_000010".intermediate_column_2_0 AS l_partkey, "pg_merge_job_0002.task_000010".intermediate_column_2_1 AS o_orderkey, count(*) AS count FROM (pg_merge_job_0002.task_000010 "pg_merge_job_0002.task_000010" JOIN customer_280001 customer ON ((customer.c_custkey = "pg_merge_job_0002.task_000010".intermediate_column_2_4))) WHERE ((("pg_merge_job_0002.task_000010".intermediate_column_2_2 > 5.0) OR ("pg_merge_job_0002.task_000010".intermediate_column_2_3 > 1200.0)) AND (customer.c_acctbal < 5000.0)) GROUP BY "pg_merge_job_0002.task_000010".intermediate_column_2_0, "pg_merge_job_0002.task_000010".intermediate_column_2_1"
|
|
DEBUG: generated sql query for task 9
|
|
DETAIL: query string: "SELECT "pg_merge_job_0002.task_000013".intermediate_column_2_0 AS l_partkey, "pg_merge_job_0002.task_000013".intermediate_column_2_1 AS o_orderkey, count(*) AS count FROM (pg_merge_job_0002.task_000013 "pg_merge_job_0002.task_000013" JOIN customer_280000 customer ON ((customer.c_custkey = "pg_merge_job_0002.task_000013".intermediate_column_2_4))) WHERE ((("pg_merge_job_0002.task_000013".intermediate_column_2_2 > 5.0) OR ("pg_merge_job_0002.task_000013".intermediate_column_2_3 > 1200.0)) AND (customer.c_acctbal < 5000.0)) GROUP BY "pg_merge_job_0002.task_000013".intermediate_column_2_0, "pg_merge_job_0002.task_000013".intermediate_column_2_1"
|
|
DEBUG: pruning merge fetch taskId 1
|
|
DETAIL: Creating dependency on merge taskId 7
|
|
DEBUG: pruning merge fetch taskId 4
|
|
DETAIL: Creating dependency on merge taskId 10
|
|
DEBUG: pruning merge fetch taskId 7
|
|
DETAIL: Creating dependency on merge taskId 13
|
|
DEBUG: assigned task 6 to node localhost:57637
|
|
DEBUG: assigned task 9 to node localhost:57638
|
|
DEBUG: assigned task 3 to node localhost:57637
|
|
DEBUG: completed cleanup query for job 3
|
|
DEBUG: completed cleanup query for job 3
|
|
DEBUG: completed cleanup query for job 2
|
|
DEBUG: completed cleanup query for job 2
|
|
DEBUG: completed cleanup query for job 1
|
|
DEBUG: completed cleanup query for job 1
|
|
l_partkey | o_orderkey | count
|
|
-----------+------------+-------
|
|
18 | 12005 | 1
|
|
79 | 5121 | 1
|
|
91 | 2883 | 1
|
|
222 | 9413 | 1
|
|
278 | 1287 | 1
|
|
309 | 2374 | 1
|
|
318 | 321 | 1
|
|
321 | 5984 | 1
|
|
337 | 10403 | 1
|
|
350 | 13698 | 1
|
|
358 | 4323 | 1
|
|
364 | 9347 | 1
|
|
416 | 640 | 1
|
|
426 | 10855 | 1
|
|
450 | 35 | 1
|
|
484 | 3843 | 1
|
|
504 | 14566 | 1
|
|
510 | 13569 | 1
|
|
532 | 3175 | 1
|
|
641 | 134 | 1
|
|
669 | 10944 | 1
|
|
716 | 2885 | 1
|
|
738 | 4355 | 1
|
|
802 | 2534 | 1
|
|
824 | 9287 | 1
|
|
864 | 3175 | 1
|
|
957 | 4293 | 1
|
|
960 | 10980 | 1
|
|
963 | 4580 | 1
|
|
(29 rows)
|
|
|
|
SELECT
|
|
l_partkey, o_orderkey, count(*)
|
|
FROM
|
|
lineitem, orders
|
|
WHERE
|
|
l_suppkey = o_shippriority AND
|
|
l_quantity < 5.0 AND o_totalprice <> 4.0
|
|
GROUP BY
|
|
l_partkey, o_orderkey
|
|
ORDER BY
|
|
l_partkey, o_orderkey;
|
|
DEBUG: generated sql query for task 2
|
|
DETAIL: query string: "SELECT l_partkey, l_suppkey FROM lineitem_290000 lineitem WHERE (l_quantity < 5.0)"
|
|
DEBUG: generated sql query for task 4
|
|
DETAIL: query string: "SELECT l_partkey, l_suppkey FROM lineitem_290001 lineitem WHERE (l_quantity < 5.0)"
|
|
DEBUG: generated sql query for task 6
|
|
DETAIL: query string: "SELECT l_partkey, l_suppkey FROM lineitem_290002 lineitem WHERE (l_quantity < 5.0)"
|
|
DEBUG: generated sql query for task 8
|
|
DETAIL: query string: "SELECT l_partkey, l_suppkey FROM lineitem_290003 lineitem WHERE (l_quantity < 5.0)"
|
|
DEBUG: generated sql query for task 10
|
|
DETAIL: query string: "SELECT l_partkey, l_suppkey FROM lineitem_290004 lineitem WHERE (l_quantity < 5.0)"
|
|
DEBUG: generated sql query for task 12
|
|
DETAIL: query string: "SELECT l_partkey, l_suppkey FROM lineitem_290005 lineitem WHERE (l_quantity < 5.0)"
|
|
DEBUG: generated sql query for task 14
|
|
DETAIL: query string: "SELECT l_partkey, l_suppkey FROM lineitem_290006 lineitem WHERE (l_quantity < 5.0)"
|
|
DEBUG: generated sql query for task 16
|
|
DETAIL: query string: "SELECT l_partkey, l_suppkey FROM lineitem_290007 lineitem WHERE (l_quantity < 5.0)"
|
|
DEBUG: assigned task 4 to node localhost:57637
|
|
DEBUG: assigned task 2 to node localhost:57638
|
|
DEBUG: assigned task 8 to node localhost:57637
|
|
DEBUG: assigned task 6 to node localhost:57638
|
|
DEBUG: assigned task 12 to node localhost:57637
|
|
DEBUG: assigned task 10 to node localhost:57638
|
|
DEBUG: assigned task 16 to node localhost:57637
|
|
DEBUG: assigned task 14 to node localhost:57638
|
|
DEBUG: generated sql query for task 2
|
|
DETAIL: query string: "SELECT o_orderkey, o_shippriority FROM orders_290008 orders WHERE (o_totalprice <> 4.0)"
|
|
DEBUG: generated sql query for task 4
|
|
DETAIL: query string: "SELECT o_orderkey, o_shippriority FROM orders_290009 orders WHERE (o_totalprice <> 4.0)"
|
|
DEBUG: assigned task 4 to node localhost:57637
|
|
DEBUG: assigned task 2 to node localhost:57638
|
|
DEBUG: join prunable for task partitionId 0 and 1
|
|
DEBUG: join prunable for task partitionId 0 and 2
|
|
DEBUG: join prunable for task partitionId 0 and 3
|
|
DEBUG: join prunable for task partitionId 1 and 0
|
|
DEBUG: join prunable for task partitionId 1 and 2
|
|
DEBUG: join prunable for task partitionId 1 and 3
|
|
DEBUG: join prunable for task partitionId 2 and 0
|
|
DEBUG: join prunable for task partitionId 2 and 1
|
|
DEBUG: join prunable for task partitionId 2 and 3
|
|
DEBUG: join prunable for task partitionId 3 and 0
|
|
DEBUG: join prunable for task partitionId 3 and 1
|
|
DEBUG: join prunable for task partitionId 3 and 2
|
|
DEBUG: generated sql query for task 3
|
|
DETAIL: query string: "SELECT "pg_merge_job_0004.task_000017".intermediate_column_4_0 AS l_partkey, "pg_merge_job_0005.task_000005".intermediate_column_5_0 AS o_orderkey, count(*) AS count FROM (pg_merge_job_0004.task_000017 "pg_merge_job_0004.task_000017" JOIN pg_merge_job_0005.task_000005 "pg_merge_job_0005.task_000005" ON (("pg_merge_job_0004.task_000017".intermediate_column_4_1 = "pg_merge_job_0005.task_000005".intermediate_column_5_1))) WHERE true GROUP BY "pg_merge_job_0004.task_000017".intermediate_column_4_0, "pg_merge_job_0005.task_000005".intermediate_column_5_0"
|
|
DEBUG: generated sql query for task 6
|
|
DETAIL: query string: "SELECT "pg_merge_job_0004.task_000026".intermediate_column_4_0 AS l_partkey, "pg_merge_job_0005.task_000008".intermediate_column_5_0 AS o_orderkey, count(*) AS count FROM (pg_merge_job_0004.task_000026 "pg_merge_job_0004.task_000026" JOIN pg_merge_job_0005.task_000008 "pg_merge_job_0005.task_000008" ON (("pg_merge_job_0004.task_000026".intermediate_column_4_1 = "pg_merge_job_0005.task_000008".intermediate_column_5_1))) WHERE true GROUP BY "pg_merge_job_0004.task_000026".intermediate_column_4_0, "pg_merge_job_0005.task_000008".intermediate_column_5_0"
|
|
DEBUG: generated sql query for task 9
|
|
DETAIL: query string: "SELECT "pg_merge_job_0004.task_000035".intermediate_column_4_0 AS l_partkey, "pg_merge_job_0005.task_000011".intermediate_column_5_0 AS o_orderkey, count(*) AS count FROM (pg_merge_job_0004.task_000035 "pg_merge_job_0004.task_000035" JOIN pg_merge_job_0005.task_000011 "pg_merge_job_0005.task_000011" ON (("pg_merge_job_0004.task_000035".intermediate_column_4_1 = "pg_merge_job_0005.task_000011".intermediate_column_5_1))) WHERE true GROUP BY "pg_merge_job_0004.task_000035".intermediate_column_4_0, "pg_merge_job_0005.task_000011".intermediate_column_5_0"
|
|
DEBUG: generated sql query for task 12
|
|
DETAIL: query string: "SELECT "pg_merge_job_0004.task_000044".intermediate_column_4_0 AS l_partkey, "pg_merge_job_0005.task_000014".intermediate_column_5_0 AS o_orderkey, count(*) AS count FROM (pg_merge_job_0004.task_000044 "pg_merge_job_0004.task_000044" JOIN pg_merge_job_0005.task_000014 "pg_merge_job_0005.task_000014" ON (("pg_merge_job_0004.task_000044".intermediate_column_4_1 = "pg_merge_job_0005.task_000014".intermediate_column_5_1))) WHERE true GROUP BY "pg_merge_job_0004.task_000044".intermediate_column_4_0, "pg_merge_job_0005.task_000014".intermediate_column_5_0"
|
|
DEBUG: pruning merge fetch taskId 1
|
|
DETAIL: Creating dependency on merge taskId 17
|
|
DEBUG: pruning merge fetch taskId 2
|
|
DETAIL: Creating dependency on merge taskId 5
|
|
DEBUG: pruning merge fetch taskId 4
|
|
DETAIL: Creating dependency on merge taskId 26
|
|
DEBUG: pruning merge fetch taskId 5
|
|
DETAIL: Creating dependency on merge taskId 8
|
|
DEBUG: pruning merge fetch taskId 7
|
|
DETAIL: Creating dependency on merge taskId 35
|
|
DEBUG: pruning merge fetch taskId 8
|
|
DETAIL: Creating dependency on merge taskId 11
|
|
DEBUG: pruning merge fetch taskId 10
|
|
DETAIL: Creating dependency on merge taskId 44
|
|
DEBUG: pruning merge fetch taskId 11
|
|
DETAIL: Creating dependency on merge taskId 14
|
|
DEBUG: assigned task 3 to node localhost:57637
|
|
DEBUG: assigned task 6 to node localhost:57638
|
|
DEBUG: assigned task 9 to node localhost:57637
|
|
DEBUG: assigned task 12 to node localhost:57638
|
|
DEBUG: completed cleanup query for job 6
|
|
DEBUG: completed cleanup query for job 6
|
|
DEBUG: completed cleanup query for job 4
|
|
DEBUG: completed cleanup query for job 4
|
|
DEBUG: completed cleanup query for job 5
|
|
DEBUG: completed cleanup query for job 5
|
|
l_partkey | o_orderkey | count
|
|
-----------+------------+-------
|
|
(0 rows)
|
|
|
|
-- Reset client logging level to its previous value
|
|
SET client_min_messages TO NOTICE;
|
|
COMMIT;
|