You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by xi...@apache.org on 2022/05/09 06:22:16 UTC
[calcite] branch main updated: [CALCITE-5139] Improve Join print plan to add the CorrelationId info
This is an automated email from the ASF dual-hosted git repository.
xiong pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/main by this push:
new 9fadc8f35e [CALCITE-5139] Improve Join print plan to add the CorrelationId info
9fadc8f35e is described below
commit 9fadc8f35e76aec54e797bf4d1e83ec0479a047d
Author: NobiGo <no...@gmail.com>
AuthorDate: Sun May 8 11:28:07 2022 +0800
[CALCITE-5139] Improve Join print plan to add the CorrelationId info
---
core/src/main/java/org/apache/calcite/rel/core/Join.java | 1 +
core/src/test/java/org/apache/calcite/test/RelBuilderTest.java | 10 +++++-----
.../test/resources/org/apache/calcite/test/TopDownOptTest.xml | 4 ++--
3 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Join.java b/core/src/main/java/org/apache/calcite/rel/core/Join.java
index 17b1e8bd11..0e461cd783 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Join.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Join.java
@@ -215,6 +215,7 @@ public abstract class Join extends BiRel implements Hintable {
return super.explainTerms(pw)
.item("condition", condition)
.item("joinType", joinType.lowerName)
+ .itemIf("variablesSet", variablesSet, !variablesSet.isEmpty())
.itemIf(
"systemFields",
getSystemFieldList(),
diff --git a/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java b/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
index 6f13e8736c..88a7cbad42 100644
--- a/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
+++ b/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
@@ -2419,7 +2419,7 @@ public class RelBuilderTest {
.build();
// Note that the join is emitted since the query is not actually a correlated.
final String expected = ""
- + "LogicalJoin(condition=[=($5, 1000)], joinType=[left])\n"
+ + "LogicalJoin(condition=[=($5, 1000)], joinType=[left], variablesSet=[[$cor0]])\n"
+ " LogicalTableScan(table=[[scott, EMP]])\n"
+ " LogicalTableScan(table=[[scott, DEPT]])\n";
assertThat(root, hasTree(expected));
@@ -4204,7 +4204,7 @@ public class RelBuilderTest {
@Test void testSimpleSemiCorrelateViaJoin() {
RelNode root = buildSimpleCorrelateWithJoin(JoinRelType.SEMI);
final String expected = ""
- + "LogicalJoin(condition=[=($7, $8)], joinType=[semi])\n"
+ + "LogicalJoin(condition=[=($7, $8)], joinType=[semi], variablesSet=[[$cor0]])\n"
+ " LogicalTableScan(table=[[scott, EMP]])\n"
+ " LogicalTableScan(table=[[scott, DEPT]])\n";
assertThat(
@@ -4228,7 +4228,7 @@ public class RelBuilderTest {
@Test void testSimpleAntiCorrelateViaJoin() {
RelNode root = buildSimpleCorrelateWithJoin(JoinRelType.ANTI);
final String expected = ""
- + "LogicalJoin(condition=[=($7, $8)], joinType=[anti])\n"
+ + "LogicalJoin(condition=[=($7, $8)], joinType=[anti], variablesSet=[[$cor0]])\n"
+ " LogicalTableScan(table=[[scott, EMP]])\n"
+ " LogicalTableScan(table=[[scott, DEPT]])\n";
assertThat(
@@ -4251,7 +4251,7 @@ public class RelBuilderTest {
@Test void testSimpleLeftCorrelateViaJoin() {
RelNode root = buildSimpleCorrelateWithJoin(JoinRelType.LEFT);
final String expected = ""
- + "LogicalJoin(condition=[=($7, $8)], joinType=[left])\n"
+ + "LogicalJoin(condition=[=($7, $8)], joinType=[left], variablesSet=[[$cor0]])\n"
+ " LogicalTableScan(table=[[scott, EMP]])\n"
+ " LogicalTableScan(table=[[scott, DEPT]])\n";
assertThat(
@@ -4275,7 +4275,7 @@ public class RelBuilderTest {
@Test void testSimpleInnerCorrelateViaJoin() {
RelNode root = buildSimpleCorrelateWithJoin(JoinRelType.INNER);
final String expected = ""
- + "LogicalJoin(condition=[=($7, $8)], joinType=[inner])\n"
+ + "LogicalJoin(condition=[=($7, $8)], joinType=[inner], variablesSet=[[$cor0]])\n"
+ " LogicalTableScan(table=[[scott, EMP]])\n"
+ " LogicalTableScan(table=[[scott, DEPT]])\n";
assertThat("Join with correlate id but never used should be simplified to a join.",
diff --git a/core/src/test/resources/org/apache/calcite/test/TopDownOptTest.xml b/core/src/test/resources/org/apache/calcite/test/TopDownOptTest.xml
index a2eba172fd..b84bee83ed 100644
--- a/core/src/test/resources/org/apache/calcite/test/TopDownOptTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/TopDownOptTest.xml
@@ -38,7 +38,7 @@ LogicalProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4], Y=[$5
<Resource name="planAfter">
<![CDATA[
EnumerableProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4], Y=[$5], unit=[$6], COORD_NE=[ROW($7, ROW($8, $9))], ACCTNO=[$10], TYPE=[$11], BALANCE=[$12])
- EnumerableBatchNestedLoopJoin(condition=[AND(>($0, $10), <($3, $11))], joinType=[left], batchSize=[100])
+ EnumerableBatchNestedLoopJoin(condition=[AND(>($0, $10), <($3, $11))], joinType=[left], variablesSet=[[$cor0, $cor1, $cor2, $cor3, $cor4, $cor5, $cor6, $cor7, $cor8, $cor9, $cor10, $cor11, $cor12, $cor13, $cor14, $cor15, $cor16, $cor17, $cor18, $cor19, $cor20, $cor21, $cor22, $cor23, $cor24, $cor25, $cor26, $cor27, $cor28, $cor29, $cor30, $cor31, $cor32, $cor33, $cor34, $cor35, $cor36, $cor37, $cor38, $cor39, $cor40, $cor41, $cor42, $cor43, $cor44, $cor45, $cor46, $cor47, $cor48, $cor4 [...]
EnumerableSort(sort0=[$0], sort1=[$3], dir0=[DESC], dir1=[DESC])
EnumerableProject(CONTACTNO=[$0], FNAME=[$1], LNAME=[$2], EMAIL=[$3], X=[$4.X], Y=[$4.Y], unit=[$4.unit], M=[$5.M], A=[$5.SUB.A], B=[$5.SUB.B])
EnumerableTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]])
@@ -67,7 +67,7 @@ LogicalSort(sort0=[$0], sort1=[$1], dir0=[DESC], dir1=[DESC])
</Resource>
<Resource name="planAfter">
<![CDATA[
-EnumerableBatchNestedLoopJoin(condition=[AND(>($0, $3), <($1, $4))], joinType=[inner], batchSize=[100])
+EnumerableBatchNestedLoopJoin(condition=[AND(>($0, $3), <($1, $4))], joinType=[inner], variablesSet=[[$cor0, $cor1, $cor2, $cor3, $cor4, $cor5, $cor6, $cor7, $cor8, $cor9, $cor10, $cor11, $cor12, $cor13, $cor14, $cor15, $cor16, $cor17, $cor18, $cor19, $cor20, $cor21, $cor22, $cor23, $cor24, $cor25, $cor26, $cor27, $cor28, $cor29, $cor30, $cor31, $cor32, $cor33, $cor34, $cor35, $cor36, $cor37, $cor38, $cor39, $cor40, $cor41, $cor42, $cor43, $cor44, $cor45, $cor46, $cor47, $cor48, $cor49, [...]
EnumerableLimit(fetch=[10])
EnumerableSort(sort0=[$0], sort1=[$1], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ASC])
EnumerableProject(ENAME=[$1], JOB=[$2], MGR=[$3])