You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2018/01/18 23:02:27 UTC

[1/2] calcite git commit: [CALCITE-2118] RelToSqlConverter should only generate "*" if field names match (Sam Waggoner)

Repository: calcite
Updated Branches:
  refs/heads/master 522f65487 -> 961b8bd2d


[CALCITE-2118] RelToSqlConverter should only generate "*" if field names match (Sam Waggoner)

Close apache/calcite#610


Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/adc1bb26
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/adc1bb26
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/adc1bb26

Branch: refs/heads/master
Commit: adc1bb265c45cef92c26b028c2fe4cc9bdead3f3
Parents: 522f654
Author: Sam Waggoner <sa...@gmail.com>
Authored: Thu Jan 18 09:04:17 2018 -0800
Committer: Julian Hyde <jh...@apache.org>
Committed: Thu Jan 18 13:30:10 2018 -0800

----------------------------------------------------------------------
 .../calcite/rel/rel2sql/RelToSqlConverter.java  |  2 +-
 .../calcite/rel/rel2sql/SqlImplementor.java     |  9 +++++--
 .../rel/rel2sql/RelToSqlConverterTest.java      | 27 ++++++++++++++++++++
 3 files changed, 35 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/adc1bb26/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java b/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
index 5e9cfc2..2afda14 100644
--- a/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
+++ b/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
@@ -173,7 +173,7 @@ public class RelToSqlConverter extends SqlImplementor
   public Result visit(Project e) {
     Result x = visitChild(0, e.getInput());
     parseCorrelTable(e, x);
-    if (isStar(e.getChildExps(), e.getInput().getRowType())) {
+    if (isStar(e.getChildExps(), e.getInput().getRowType(), e.getRowType())) {
       return x;
     }
     final Builder builder =

http://git-wip-us.apache.org/repos/asf/calcite/blob/adc1bb26/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java b/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
index 0faacf5..b8a51b0 100644
--- a/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
+++ b/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
@@ -122,7 +122,11 @@ public abstract class SqlImplementor {
     selectList.add(node);
   }
 
-  public static boolean isStar(List<RexNode> exps, RelDataType inputRowType) {
+  /** Returns whether a list of expressions projects all fields, in order,
+   * from the input, with the same names. */
+  public static boolean isStar(List<RexNode> exps, RelDataType inputRowType,
+      RelDataType projectRowType) {
+    assert exps.size() == projectRowType.getFieldCount();
     int i = 0;
     for (RexNode ref : exps) {
       if (!(ref instanceof RexInputRef)) {
@@ -131,7 +135,8 @@ public abstract class SqlImplementor {
         return false;
       }
     }
-    return i == inputRowType.getFieldCount();
+    return i == inputRowType.getFieldCount()
+        && inputRowType.getFieldNames().equals(projectRowType.getFieldNames());
   }
 
   public static boolean isStar(RexProgram program) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/adc1bb26/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
index e194456..54cb4cd 100644
--- a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
+++ b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
@@ -2261,6 +2261,33 @@ public class RelToSqlConverterTest {
         .ok(expectedOracle);
   }
 
+  /** Test case for
+   * <a href="https://issues.apache.org/jira/browse/CALCITE-2118">[CALCITE-2118]
+   * RelToSqlConverter should only generate "*" if field names match</a>. */
+  @Test public void testPreserveAlias() {
+    final String sql = "select \"warehouse_class_id\" as \"id\",\n"
+        + " \"description\"\n"
+        + "from \"warehouse_class\"";
+    final String expected = ""
+        + "SELECT \"warehouse_class_id\" AS \"id\", \"description\"\n"
+        + "FROM \"foodmart\".\"warehouse_class\"";
+    sql(sql).ok(expected);
+
+    final String sql2 = "select \"warehouse_class_id\", \"description\"\n"
+        + "from \"warehouse_class\"";
+    final String expected2 = "SELECT *\n"
+        + "FROM \"foodmart\".\"warehouse_class\"";
+    sql(sql2).ok(expected2);
+  }
+
+  @Test public void testPreservePermutation() {
+    final String sql = "select \"description\", \"warehouse_class_id\"\n"
+        + "from \"warehouse_class\"";
+    final String expected = "SELECT \"description\", \"warehouse_class_id\"\n"
+        + "FROM \"foodmart\".\"warehouse_class\"";
+    sql(sql).ok(expected);
+  }
+
   /** Fluid interface to run tests. */
   private static class Sql {
     private CalciteAssert.SchemaSpec schemaSpec;


[2/2] calcite git commit: [CALCITE-2139] Upgrade maven checkstyle plugin, and fix formatting (Vijay Kumar)

Posted by jh...@apache.org.
[CALCITE-2139] Upgrade maven checkstyle plugin, and fix formatting (Vijay Kumar)

Upgrade maven-checkstyle-plugin from 2.17 (checkstyle 6.11.2) to
3.0.0 (checkstyle 6.18).

Close apache/calcite#609

Change-Id: Ic025aabf3e84278d79d8034e2857bdf3382b7df3


Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/961b8bd2
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/961b8bd2
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/961b8bd2

Branch: refs/heads/master
Commit: 961b8bd2db61a9e0af99b727462d82c23694b88f
Parents: adc1bb2
Author: vijayk <vk...@hortonworks.com>
Authored: Thu Jan 18 14:37:57 2018 +0530
Committer: Julian Hyde <jh...@apache.org>
Committed: Thu Jan 18 14:32:58 2018 -0800

----------------------------------------------------------------------
 .../java/org/apache/calcite/rel/rules/ProjectToWindowRule.java     | 2 +-
 pom.xml                                                            | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/961b8bd2/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
index 2a37522..4b7a4dc 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
@@ -196,7 +196,7 @@ public abstract class ProjectToWindowRule extends RelOptRule {
                         return program.expandLocalRef(a0);
                       }
                     }),
-              calc.getRowType().getFieldNames());
+                calc.getRowType().getFieldNames());
           }
           return relBuilder.build();
         }

http://git-wip-us.apache.org/repos/asf/calcite/blob/961b8bd2/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9655174..dcd367d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,7 +100,7 @@ limitations under the License.
     <jmh.version>1.12</jmh.version>
     <jsoup.version>1.10.2</jsoup.version>
     <junit.version>4.12</junit.version>
-    <maven-checkstyle-plugin.version>2.17</maven-checkstyle-plugin.version>
+    <maven-checkstyle-plugin.version>3.0.0</maven-checkstyle-plugin.version>
     <maven-dependency-plugin.version>2.10</maven-dependency-plugin.version>
     <!-- Apache 18 has 3.0.1, but need 3.0.2 for [MSOURCES-94]. -->
     <maven-jar-plugin.version>3.0.2</maven-jar-plugin.version>