From a2b3e8668cb9cfc7b66040214333414a5cd2d32c Mon Sep 17 00:00:00 2001 From: Noel Kwan Date: Mon, 18 Nov 2024 16:13:31 +0800 Subject: [PATCH] more planner tests --- .../testdata/input/explain_json_format.yaml | 26 + .../testdata/input/explain_xml_format.yaml | 26 + .../testdata/input/explain_yaml_format.yaml | 26 + .../testdata/output/explain_json_format.yaml | 2006 +++++++++++++++++ .../testdata/output/explain_xml_format.yaml | 26 + .../testdata/output/explain_yaml_format.yaml | 1194 ++++++++++ 6 files changed, 3304 insertions(+) diff --git a/src/frontend/planner_test/tests/testdata/input/explain_json_format.yaml b/src/frontend/planner_test/tests/testdata/input/explain_json_format.yaml index c3dfe86b1c61a..71f9470a040a2 100644 --- a/src/frontend/planner_test/tests/testdata/input/explain_json_format.yaml +++ b/src/frontend/planner_test/tests/testdata/input/explain_json_format.yaml @@ -14,5 +14,31 @@ sql: | CREATE TABLE t (v1 int); explain (physical, format json) create materialized view m1 as SELECT approx_percentile(0.5) WITHIN GROUP (order by v1) from t; + expected_outputs: + - explain_output +- name: test long json output format (stream) + sql: | + create table t1(a int, b int); + create table t2(c int primary key, d int); + explain (physical, format json) create materialized view m1 as SELECT + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col1, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col2, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col3, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col4, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col5, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col6, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col7, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col8, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col9, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col10, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col11, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col12, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col13, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col14, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col15, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col16, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col17, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col18 + from t1; expected_outputs: - explain_output \ No newline at end of file diff --git a/src/frontend/planner_test/tests/testdata/input/explain_xml_format.yaml b/src/frontend/planner_test/tests/testdata/input/explain_xml_format.yaml index 2243408b41fb8..aa83ec3b67a4d 100644 --- a/src/frontend/planner_test/tests/testdata/input/explain_xml_format.yaml +++ b/src/frontend/planner_test/tests/testdata/input/explain_xml_format.yaml @@ -14,5 +14,31 @@ sql: | CREATE TABLE t (v1 int); explain (physical, format xml) create materialized view m1 as SELECT approx_percentile(0.5) WITHIN GROUP (order by v1) from t; + expected_outputs: + - explain_output +- name: test long xml output format (stream) + sql: | + create table t1(a int, b int); + create table t2(c int primary key, d int); + explain (physical, format xml) create materialized view m1 as SELECT + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col1, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col2, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col3, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col4, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col5, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col6, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col7, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col8, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col9, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col10, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col11, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col12, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col13, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col14, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col15, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col16, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col17, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col18 + from t1; expected_outputs: - explain_output \ No newline at end of file diff --git a/src/frontend/planner_test/tests/testdata/input/explain_yaml_format.yaml b/src/frontend/planner_test/tests/testdata/input/explain_yaml_format.yaml index 6f3e925dc2ea7..be1c68d787c9c 100644 --- a/src/frontend/planner_test/tests/testdata/input/explain_yaml_format.yaml +++ b/src/frontend/planner_test/tests/testdata/input/explain_yaml_format.yaml @@ -14,5 +14,31 @@ sql: | CREATE TABLE t (v1 int); explain (physical, format yaml) create materialized view m1 as SELECT approx_percentile(0.5) WITHIN GROUP (order by v1) from t; + expected_outputs: + - explain_output +- name: test long yaml output format (stream) + sql: | + create table t1(a int, b int); + create table t2(c int primary key, d int); + explain (physical, format yaml) create materialized view m1 as SELECT + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col1, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col2, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col3, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col4, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col5, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col6, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col7, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col8, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col9, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col10, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col11, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col12, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col13, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col14, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col15, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col16, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col17, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col18 + from t1; expected_outputs: - explain_output \ No newline at end of file diff --git a/src/frontend/planner_test/tests/testdata/output/explain_json_format.yaml b/src/frontend/planner_test/tests/testdata/output/explain_json_format.yaml index 9017c0609c253..d2b8d43771c96 100644 --- a/src/frontend/planner_test/tests/testdata/output/explain_json_format.yaml +++ b/src/frontend/planner_test/tests/testdata/output/explain_json_format.yaml @@ -145,3 +145,2009 @@ } ] } +- name: test long json output format (stream) + sql: | + create table t1(a int, b int); + create table t2(c int primary key, d int); + explain (physical, format json) create materialized view m1 as SELECT + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col1, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col2, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col3, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col4, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col5, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col6, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col7, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col8, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col9, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col10, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col11, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col12, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col13, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col14, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col15, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col16, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col17, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col18 + from t1; + explain_output: | + { + "name": "StreamMaterialize", + "fields": { + "columns": [ + "col1", + "col2", + "col3", + "col4", + "col5", + "col6", + "col7", + "col8", + "col9", + "col10", + "col11", + "col12", + "col13", + "col14", + "col15", + "col16", + "col17", + "col18", + "t1._row_id(hidden)", + "t1.b(hidden)", + "t1.a(hidden)", + "t1.b#1(hidden)", + "t1.b#2(hidden)", + "t1.b#3(hidden)", + "t1.b#4(hidden)", + "t1.b#5(hidden)", + "t1.b#6(hidden)", + "t1.b#7(hidden)", + "t1.b#8(hidden)", + "t1.b#9(hidden)", + "t1.b#10(hidden)", + "t1.b#11(hidden)", + "t1.b#12(hidden)", + "t1.b#13(hidden)", + "t1.b#14(hidden)", + "t1.b#15(hidden)", + "t1.b#16(hidden)", + "t1.b#17(hidden)", + "t1.b#18(hidden)" + ], + "pk_columns": [ + "t1._row_id", + "t1.b", + "t1.a", + "t1.b#1", + "t1.b#2", + "t1.b#3", + "t1.b#4", + "t1.b#5", + "t1.b#6", + "t1.b#7", + "t1.b#8", + "t1.b#9", + "t1.b#10", + "t1.b#11", + "t1.b#12", + "t1.b#13", + "t1.b#14", + "t1.b#15", + "t1.b#16", + "t1.b#17", + "t1.b#18" + ], + "pk_conflict": "NoCheck", + "stream_key": [ + "t1._row_id", + "t1.b", + "t1.a", + "t1.b#1", + "t1.b#2", + "t1.b#3", + "t1.b#4", + "t1.b#5", + "t1.b#6", + "t1.b#7", + "t1.b#8", + "t1.b#9", + "t1.b#10", + "t1.b#11", + "t1.b#12", + "t1.b#13", + "t1.b#14", + "t1.b#15", + "t1.b#16", + "t1.b#17", + "t1.b#18" + ] + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "Coalesce(t1.b, 0:Int32) as $expr1", + "Coalesce(t1.b, 0:Int32) as $expr2", + "Coalesce(t1.b, 0:Int32) as $expr3", + "Coalesce(t1.b, 0:Int32) as $expr4", + "Coalesce(t1.b, 0:Int32) as $expr5", + "Coalesce(t1.b, 0:Int32) as $expr6", + "Coalesce(t1.b, 0:Int32) as $expr7", + "Coalesce(t1.b, 0:Int32) as $expr8", + "Coalesce(t1.b, 0:Int32) as $expr9", + "Coalesce(t1.b, 0:Int32) as $expr10", + "Coalesce(t1.b, 0:Int32) as $expr11", + "Coalesce(t1.b, 0:Int32) as $expr12", + "Coalesce(t1.b, 0:Int32) as $expr13", + "Coalesce(t1.b, 0:Int32) as $expr14", + "Coalesce(t1.b, 0:Int32) as $expr15", + "Coalesce(t1.b, 0:Int32) as $expr16", + "Coalesce(t1.b, 0:Int32) as $expr17", + "Coalesce(t1.b, 0:Int32) as $expr18", + "t1._row_id", + "t1.b", + "t1.a", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b", + "type": "LeftOuter" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashJoin", + "fields": { + "predicate": "t1.a = t2.c", + "type": "Inner" + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a)" + }, + "children": [ + { + "name": "StreamProject", + "fields": { + "exprs": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamHashAgg", + "fields": { + "aggs": [ + "count" + ], + "group_key": [ + "t1.a", + "t1.b" + ] + }, + "children": [ + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t1.a, t1.b)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "a", + "b", + "_row_id" + ], + "table": "t1" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "StreamExchange", + "fields": { + "dist": "HashShard(t2.c)" + }, + "children": [ + { + "name": "StreamTableScan", + "fields": { + "columns": [ + "c" + ], + "table": "t2" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } diff --git a/src/frontend/planner_test/tests/testdata/output/explain_xml_format.yaml b/src/frontend/planner_test/tests/testdata/output/explain_xml_format.yaml index ac1ff48badf67..c4a81e2a7057e 100644 --- a/src/frontend/planner_test/tests/testdata/output/explain_xml_format.yaml +++ b/src/frontend/planner_test/tests/testdata/output/explain_xml_format.yaml @@ -17,3 +17,29 @@ explain (physical, format xml) create materialized view m1 as SELECT approx_percentile(0.5) WITHIN GROUP (order by v1) from t; explain_output: | StreamMaterializeapprox_percentileNoCheckStreamGlobalApproxPercentile0.5:Float640.01:Float64StreamExchangeSingleStreamLocalApproxPercentile$expr10.5:Float640.01:Float64StreamProjectt.v1::Float64 as $expr1t._row_idStreamTableScanv1_row_idt
+- name: test long xml output format (stream) + sql: | + create table t1(a int, b int); + create table t2(c int primary key, d int); + explain (physical, format xml) create materialized view m1 as SELECT + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col1, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col2, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col3, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col4, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col5, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col6, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col7, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col8, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col9, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col10, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col11, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col12, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col13, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col14, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col15, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col16, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col17, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col18 + from t1; + explain_output: | + StreamMaterializecol1col2col3col4col5col6col7col8col9col10col11col12col13col14col15col16col17col18t1._row_id(hidden)t1.b(hidden)t1.a(hidden)t1.b#1(hidden)t1.b#2(hidden)t1.b#3(hidden)t1.b#4(hidden)t1.b#5(hidden)t1.b#6(hidden)t1.b#7(hidden)t1.b#8(hidden)t1.b#9(hidden)t1.b#10(hidden)t1.b#11(hidden)t1.b#12(hidden)t1.b#13(hidden)t1.b#14(hidden)t1.b#15(hidden)t1.b#16(hidden)t1.b#17(hidden)t1.b#18(hidden)t1._row_idt1.bt1.at1.b#1t1.b#2t1.b#3t1.b#4t1.b#5t1.b#6t1.b#7t1.b#8t1.b#9t1.b#10t1.b#11t1.b#12t1.b#13t1.b#14t1.b#15t1.b#16t1.b#17t1.b#18NoCheckt1._row_idt1.bt1.at1.b#1t1.b#2t1.b#3t1.b#4t1.b#5t1.b#6t1.b#7t1.b#8t1.b#9t1.b#10t1.b#11t1.b#12t1.b#13t1.b#14t1.b#15t1.b#16t1.b#17t1.b#18StreamProjectCoalesce(t1.b, 0:Int32) as $expr1Coalesce(t1.b, 0:Int32) as $expr2Coalesce(t1.b, 0:Int32) as $expr3Coalesce(t1.b, 0:Int32) as $expr4Coalesce(t1.b, 0:Int32) as $expr5Coalesce(t1.b, 0:Int32) as $expr6Coalesce(t1.b, 0:Int32) as $expr7Coalesce(t1.b, 0:Int32) as $expr8Coalesce(t1.b, 0:Int32) as $expr9Coalesce(t1.b, 0:Int32) as $expr10Coalesce(t1.b, 0:Int32) as $expr11Coalesce(t1.b, 0:Int32) as $expr12Coalesce(t1.b, 0:Int32) as $expr13Coalesce(t1.b, 0:Int32) as $expr14Coalesce(t1.b, 0:Int32) as $expr15Coalesce(t1.b, 0:Int32) as $expr16Coalesce(t1.b, 0:Int32) as $expr17Coalesce(t1.b, 0:Int32) as $expr18t1._row_idt1.bt1.at1.bt1.bt1.bt1.bt1.bt1.bt1.bt1.bt1.bt1.bt1.bt1.bt1.bt1.bt1.bt1.bt1.bt1.bStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamHashJoint1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.bLeftOuterStreamExchangeHashShard(t1.a)StreamTableScanab_row_idt1
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
StreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idt1
StreamExchangeHashShard(t2.c)StreamTableScanct2
diff --git a/src/frontend/planner_test/tests/testdata/output/explain_yaml_format.yaml b/src/frontend/planner_test/tests/testdata/output/explain_yaml_format.yaml index 5386fe211fccd..ecfb2bf8863b0 100644 --- a/src/frontend/planner_test/tests/testdata/output/explain_yaml_format.yaml +++ b/src/frontend/planner_test/tests/testdata/output/explain_yaml_format.yaml @@ -87,3 +87,1197 @@ - _row_id table: t children: [] +- name: test long yaml output format (stream) + sql: | + create table t1(a int, b int); + create table t2(c int primary key, d int); + explain (physical, format yaml) create materialized view m1 as SELECT + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col1, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col2, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col3, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col4, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col5, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col6, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col7, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col8, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col9, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col10, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col11, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col12, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col13, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col14, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col15, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col16, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col17, + COALESCE((SELECT b FROM t2 WHERE t1.a = t2.c), 0) col18 + from t1; + explain_output: | + name: StreamMaterialize + fields: + columns: + - col1 + - col2 + - col3 + - col4 + - col5 + - col6 + - col7 + - col8 + - col9 + - col10 + - col11 + - col12 + - col13 + - col14 + - col15 + - col16 + - col17 + - col18 + - t1._row_id(hidden) + - t1.b(hidden) + - t1.a(hidden) + - t1.b#1(hidden) + - t1.b#2(hidden) + - t1.b#3(hidden) + - t1.b#4(hidden) + - t1.b#5(hidden) + - t1.b#6(hidden) + - t1.b#7(hidden) + - t1.b#8(hidden) + - t1.b#9(hidden) + - t1.b#10(hidden) + - t1.b#11(hidden) + - t1.b#12(hidden) + - t1.b#13(hidden) + - t1.b#14(hidden) + - t1.b#15(hidden) + - t1.b#16(hidden) + - t1.b#17(hidden) + - t1.b#18(hidden) + pk_columns: + - t1._row_id + - t1.b + - t1.a + - t1.b#1 + - t1.b#2 + - t1.b#3 + - t1.b#4 + - t1.b#5 + - t1.b#6 + - t1.b#7 + - t1.b#8 + - t1.b#9 + - t1.b#10 + - t1.b#11 + - t1.b#12 + - t1.b#13 + - t1.b#14 + - t1.b#15 + - t1.b#16 + - t1.b#17 + - t1.b#18 + pk_conflict: NoCheck + stream_key: + - t1._row_id + - t1.b + - t1.a + - t1.b#1 + - t1.b#2 + - t1.b#3 + - t1.b#4 + - t1.b#5 + - t1.b#6 + - t1.b#7 + - t1.b#8 + - t1.b#9 + - t1.b#10 + - t1.b#11 + - t1.b#12 + - t1.b#13 + - t1.b#14 + - t1.b#15 + - t1.b#16 + - t1.b#17 + - t1.b#18 + children: + - name: StreamProject + fields: + exprs: + - Coalesce(t1.b, 0:Int32) as $expr1 + - Coalesce(t1.b, 0:Int32) as $expr2 + - Coalesce(t1.b, 0:Int32) as $expr3 + - Coalesce(t1.b, 0:Int32) as $expr4 + - Coalesce(t1.b, 0:Int32) as $expr5 + - Coalesce(t1.b, 0:Int32) as $expr6 + - Coalesce(t1.b, 0:Int32) as $expr7 + - Coalesce(t1.b, 0:Int32) as $expr8 + - Coalesce(t1.b, 0:Int32) as $expr9 + - Coalesce(t1.b, 0:Int32) as $expr10 + - Coalesce(t1.b, 0:Int32) as $expr11 + - Coalesce(t1.b, 0:Int32) as $expr12 + - Coalesce(t1.b, 0:Int32) as $expr13 + - Coalesce(t1.b, 0:Int32) as $expr14 + - Coalesce(t1.b, 0:Int32) as $expr15 + - Coalesce(t1.b, 0:Int32) as $expr16 + - Coalesce(t1.b, 0:Int32) as $expr17 + - Coalesce(t1.b, 0:Int32) as $expr18 + - t1._row_id + - t1.b + - t1.a + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamHashJoin + fields: + predicate: t1.a IS NOT DISTINCT FROM t1.a AND t1.b IS NOT DISTINCT FROM t1.b + type: LeftOuter + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: [] + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + - t1.b + children: + - name: StreamHashJoin + fields: + predicate: t1.a = t2.c + type: Inner + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a) + children: + - name: StreamProject + fields: + exprs: + - t1.a + - t1.b + children: + - name: StreamHashAgg + fields: + aggs: + - count + group_key: + - t1.a + - t1.b + children: + - name: StreamExchange + fields: + dist: HashShard(t1.a, t1.b) + children: + - name: StreamTableScan + fields: + columns: + - a + - b + - _row_id + table: t1 + children: [] + - name: StreamExchange + fields: + dist: HashShard(t2.c) + children: + - name: StreamTableScan + fields: + columns: + - c + table: t2 + children: []