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_id
+- 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_idStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScancStreamProjectt1.at1.bt1.bStreamHashJoint1.a = t2.cInnerStreamExchangeHashShard(t1.a)StreamProjectt1.at1.bStreamHashAggcountt1.at1.bStreamExchangeHashShard(t1.a, t1.b)StreamTableScanab_row_idStreamExchangeHashShard(t2.c)StreamTableScanc
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: []