This is an automated email from the ASF dual-hosted git repository.

yanlin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git


The following commit(s) were added to refs/heads/master by this push:
     new 2916b83  [CALCITE-3583] Exchange operator deserialize fail when the 
RexInput has no RelCollcation (Xzh)
2916b83 is described below

commit 2916b83712b517430e71c1c22042e484ee900589
Author: xzh <[email protected]>
AuthorDate: Tue Sep 14 20:25:07 2021 +0800

    [CALCITE-3583] Exchange operator deserialize fail when the RexInput has no 
RelCollcation (Xzh)
---
 .../main/java/org/apache/calcite/rel/core/Exchange.java  |  3 +--
 .../test/java/org/apache/calcite/plan/RelWriterTest.java | 16 ++++++++++++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/core/src/main/java/org/apache/calcite/rel/core/Exchange.java 
b/core/src/main/java/org/apache/calcite/rel/core/Exchange.java
index aa83aad..974f617 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Exchange.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Exchange.java
@@ -70,8 +70,7 @@ public abstract class Exchange extends SingleRel {
    * Creates an Exchange by parsing serialized output.
    */
   protected Exchange(RelInput input) {
-    this(input.getCluster(), input.getTraitSet().plus(input.getCollation()),
-        input.getInput(),
+    this(input.getCluster(), input.getTraitSet(), input.getInput(),
         RelDistributionTraitDef.INSTANCE.canonize(input.getDistribution()));
   }
 
diff --git a/core/src/test/java/org/apache/calcite/plan/RelWriterTest.java 
b/core/src/test/java/org/apache/calcite/plan/RelWriterTest.java
index bdc9ca3..98e6d8a 100644
--- a/core/src/test/java/org/apache/calcite/plan/RelWriterTest.java
+++ b/core/src/test/java/org/apache/calcite/plan/RelWriterTest.java
@@ -520,6 +520,22 @@ class RelWriterTest {
     assertThat(s, is(XX2));
   }
 
+  @Test public void testExchange() {
+    final FrameworkConfig config = RelBuilderTest.config().build();
+    final RelBuilder builder = RelBuilder.create(config);
+    final RelNode rel = builder
+        .scan("EMP")
+        .exchange(RelDistributions.hash(ImmutableList.of(0, 1)))
+        .build();
+    final String relJson = RelOptUtil.dumpPlan("", rel,
+        SqlExplainFormat.JSON, SqlExplainLevel.EXPPLAN_ATTRIBUTES);
+    String s = deserializeAndDumpToTextFormat(getSchema(rel), relJson);
+    final String expected = ""
+        + "LogicalExchange(distribution=[hash[0, 1]])\n"
+        + "  LogicalTableScan(table=[[scott, EMP]])\n";
+    assertThat(s, isLinux(expected));
+  }
+
   /**
    * Unit test for {@link org.apache.calcite.rel.externalize.RelJsonReader}.
    */

Reply via email to