You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by ho...@apache.org on 2019/03/06 02:52:50 UTC
[calcite] branch master updated: [CALCITE-2891] Alias suggester
failed to suggest name based on original name incrementally (Haisheng Yuan)
This is an automated email from the ASF dual-hosted git repository.
hongze 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 92562a0 [CALCITE-2891] Alias suggester failed to suggest name based on original name incrementally (Haisheng Yuan)
92562a0 is described below
commit 92562a0f213fc1edc66e25f9c88e15bacb9085df
Author: Haisheng Yuan <h....@alibaba-inc.com>
AuthorDate: Mon Mar 4 23:06:44 2019 -0600
[CALCITE-2891] Alias suggester failed to suggest name based on original name incrementally (Haisheng Yuan)
Close apache/calcite#1085
---
.../java/org/apache/calcite/tools/RelBuilder.java | 3 ++-
.../org/apache/calcite/test/RelBuilderTest.java | 29 +++++++++++++++++++++-
2 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/tools/RelBuilder.java b/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
index 9dfba8b..ccb987c 100644
--- a/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
+++ b/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
@@ -1207,6 +1207,7 @@ public class RelBuilder {
for (int i = 0; i < fieldNameList.size(); ++i) {
final RexNode node = nodeList.get(i);
String name = fieldNameList.get(i);
+ String originalName = name;
Field field;
if (name == null || uniqueNameList.contains(name)) {
int j = 0;
@@ -1214,7 +1215,7 @@ public class RelBuilder {
j = i;
}
do {
- name = SqlValidatorUtil.F_SUGGESTER.apply(name, j, j++);
+ name = SqlValidatorUtil.F_SUGGESTER.apply(originalName, j, j++);
} while (uniqueNameList.contains(name));
fieldNameList.set(i, name);
}
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 635c1d7..fa5a150 100644
--- a/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
+++ b/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java
@@ -1535,11 +1535,38 @@ public class RelBuilderTest {
.build();
final String expected = ""
+ "LogicalFilter(condition=[>($1, $2)])\n"
- + " LogicalProject($f1=[20], $f12=[10], DEPTNO=[$7])\n"
+ + " LogicalProject($f1=[20], $f2=[10], DEPTNO=[$7])\n"
+ " LogicalTableScan(table=[[scott, EMP]])\n";
assertThat(root, hasTree(expected));
}
+ /**
+ * Tests that project field name aliases are suggested incrementally.
+ */
+ @Test public void testAliasSuggester() {
+ final RelBuilder builder = RelBuilder.create(config().build());
+ RelNode root = builder.scan("EMP")
+ .project(builder.field(0),
+ builder.field(0),
+ builder.field(0),
+ builder.field(0),
+ builder.field(0),
+ builder.field(0),
+ builder.field(0),
+ builder.field(0),
+ builder.field(0),
+ builder.field(0),
+ builder.field(0),
+ builder.field(0))
+ .build();
+ final String expected = ""
+ + "LogicalProject(EMPNO=[$0], EMPNO0=[$0], EMPNO1=[$0], "
+ + "EMPNO2=[$0], EMPNO3=[$0], EMPNO4=[$0], EMPNO5=[$0], "
+ + "EMPNO6=[$0], EMPNO7=[$0], EMPNO8=[$0], EMPNO9=[$0], EMPNO10=[$0])\n"
+ + " LogicalTableScan(table=[[scott, EMP]])\n";
+ assertThat(root, hasTree(expected));
+ }
+
@Test public void testAliasAggregate() {
final RelBuilder builder = RelBuilder.create(config().build());
RelNode root =