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 2014/10/19 01:06:22 UTC

git commit: [OPTIQ-439] SqlValidatorUtil.uniquify() may not terminate under some conditions

Repository: incubator-optiq
Updated Branches:
  refs/heads/master 59191a7ad -> b4918cc45


[OPTIQ-439] SqlValidatorUtil.uniquify() may not terminate under some conditions


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

Branch: refs/heads/master
Commit: b4918cc4542230e346b56f329bea53dffa6fba17
Parents: 59191a7
Author: Julian Hyde <ju...@gmail.com>
Authored: Wed Oct 15 16:38:32 2014 -0400
Committer: Julian Hyde <ju...@gmail.com>
Committed: Sat Oct 18 15:33:08 2014 -0700

----------------------------------------------------------------------
 .../org/eigenbase/sql/validate/SqlValidatorUtil.java  |  2 +-
 .../org/eigenbase/test/SqlToRelConverterTest.java     | 11 +++++++++++
 .../resources/org/eigenbase/test/RelOptRulesTest.xml  | 13 +++++++------
 .../org/eigenbase/test/SqlToRelConverterTest.xml      | 14 ++++++++++++++
 4 files changed, 33 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/b4918cc4/core/src/main/java/org/eigenbase/sql/validate/SqlValidatorUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/eigenbase/sql/validate/SqlValidatorUtil.java b/core/src/main/java/org/eigenbase/sql/validate/SqlValidatorUtil.java
index b4a0de4..3a9e919 100644
--- a/core/src/main/java/org/eigenbase/sql/validate/SqlValidatorUtil.java
+++ b/core/src/main/java/org/eigenbase/sql/validate/SqlValidatorUtil.java
@@ -381,7 +381,7 @@ public class SqlValidatorUtil {
   public static final Suggester F_SUGGESTER =
       new Suggester() {
         public String apply(String original, int attempt, int size) {
-          return Util.first(original, "$f") + size;
+          return Util.first(original, "$f") + Math.max(size, attempt);
         }
       };
 }

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/b4918cc4/core/src/test/java/org/eigenbase/test/SqlToRelConverterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/eigenbase/test/SqlToRelConverterTest.java b/core/src/test/java/org/eigenbase/test/SqlToRelConverterTest.java
index 5ab6546..7dd37d9 100644
--- a/core/src/test/java/org/eigenbase/test/SqlToRelConverterTest.java
+++ b/core/src/test/java/org/eigenbase/test/SqlToRelConverterTest.java
@@ -411,6 +411,17 @@ public class SqlToRelConverterTest extends SqlToRelTestBase {
         "${plan}");
   }
 
+  /** Test case for
+   * <a href="https://issues.apache.org/jira/browse/OPTIQ-439">[OPTIQ-439]
+   * SqlValidatorUtil.uniquify() may not terminate under some
+   * conditions</a>. */
+  @Test public void testGroupAlias() {
+    check("select \"$f2\", max(x), max(x + 1)\n"
+        + "from (values (1, 2)) as t(\"$f2\", x)\n"
+        + "group by \"$f2\"",
+        "${plan}");
+  }
+
   @Test public void testOrderGroup() {
     check(
         "select deptno, count(*) "

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/b4918cc4/core/src/test/resources/org/eigenbase/test/RelOptRulesTest.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/org/eigenbase/test/RelOptRulesTest.xml b/core/src/test/resources/org/eigenbase/test/RelOptRulesTest.xml
index 4ef190a..372f7ea 100644
--- a/core/src/test/resources/org/eigenbase/test/RelOptRulesTest.xml
+++ b/core/src/test/resources/org/eigenbase/test/RelOptRulesTest.xml
@@ -2213,9 +2213,9 @@ ProjectRel(X=[$0], EXPR$1=[$2], Y=[$1])
     <TestCase name="testPushFilterWithRank">
         <Resource name="sql">
             <![CDATA[select e1.ename, r
-from (select ename, rank() over(partition by  deptno order by sal) as r from emp) e1
-where r < 2
-]]>
+from (
+  select ename,   rank() over(partition by  deptno order by sal) as r   from emp) e1
+where r < 2]]>
         </Resource>
         <Resource name="planBefore">
             <![CDATA[
@@ -2237,9 +2237,10 @@ ProjectRel(ENAME=[$0], R=[$1])
     <TestCase name="testPushFilterWithRankExpr">
         <Resource name="sql">
             <![CDATA[select e1.ename, r
-from (select ename, rank() over(partition by  deptno order by sal) as r + 1 from emp) e1
-where r < 2
-]]>
+from (
+  select ename,
+  rank() over(partition by  deptno order by sal) + 1 as r   from emp) e1
+where r < 2]]>
         </Resource>
         <Resource name="planBefore">
             <![CDATA[

http://git-wip-us.apache.org/repos/asf/incubator-optiq/blob/b4918cc4/core/src/test/resources/org/eigenbase/test/SqlToRelConverterTest.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/org/eigenbase/test/SqlToRelConverterTest.xml b/core/src/test/resources/org/eigenbase/test/SqlToRelConverterTest.xml
index c598bfe..435360a 100644
--- a/core/src/test/resources/org/eigenbase/test/SqlToRelConverterTest.xml
+++ b/core/src/test/resources/org/eigenbase/test/SqlToRelConverterTest.xml
@@ -1963,4 +1963,18 @@ ProjectRel(ENAME=[$0])
 ]]>
         </Resource>
     </TestCase>
+    <TestCase name="testGroupAlias">
+        <Resource name="sql">
+            <![CDATA[select "$f2", max(x), max(x + 1)
+from (values (1, 2)) as t("$f2", x)
+group by "$f2"]]>
+        </Resource>
+        <Resource name="plan">
+            <![CDATA[
+AggregateRel(group=[{0}], EXPR$1=[MAX($1)], EXPR$2=[MAX($2)])
+  ProjectRel($f2=[$0], EXPR$1=[$1], $f3=[+($1, 1)])
+    ValuesRel(tuples=[[{ 1, 2 }]])
+]]>
+        </Resource>
+    </TestCase>
 </Root>