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}.
*/