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

danny0405 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 eed3d1b  [CALCITE-3940] Hint item can not parse correctly if the name 
is right after token /*+
eed3d1b is described below

commit eed3d1b408f7720b7dae1c8529a4236895617f67
Author: yuzhao.cyz <[email protected]>
AuthorDate: Mon Apr 20 12:07:18 2020 +0800

    [CALCITE-3940] Hint item can not parse correctly if the name is right after 
token /*+
---
 core/src/main/codegen/templates/Parser.jj                   |  2 +-
 .../java/org/apache/calcite/sql/parser/SqlParserTest.java   | 13 ++++++++++---
 .../java/org/apache/calcite/sql/test/SqlAdvisorTest.java    | 12 +++++++-----
 3 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/core/src/main/codegen/templates/Parser.jj 
b/core/src/main/codegen/templates/Parser.jj
index db60271..cefe343 100644
--- a/core/src/main/codegen/templates/Parser.jj
+++ b/core/src/main/codegen/templates/Parser.jj
@@ -7643,7 +7643,7 @@ of the 'normal states'.
 
 <DEFAULT, DQID, BTID> TOKEN :
 {
-    < HINT_BEG: "/*+" ~["/"] >
+    < HINT_BEG: "/*+">
 |   < COMMENT_END: "*/" >
 }
 
diff --git 
a/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java 
b/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java
index df6c180..8340105 100644
--- a/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java
+++ b/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java
@@ -8644,19 +8644,26 @@ public class SqlParserTest {
   }
 
   @Test void testQueryHint() {
-    final String sql = "select "
+    final String sql1 = "select "
         + "/*+ properties(k1='v1', k2='v2', 'a.b.c'='v3'), "
         + "no_hash_join, Index(idx1, idx2), "
         + "repartition(3) */ "
         + "empno, ename, deptno from emps";
-    final String expected = "SELECT\n"
+    final String expected1 = "SELECT\n"
         + "/*+ `PROPERTIES`(`K1` = 'v1', `K2` = 'v2', 'a.b.c' = 'v3'), "
         + "`NO_HASH_JOIN`, "
         + "`INDEX`(`IDX1`, `IDX2`), "
         + "`REPARTITION`(3) */\n"
         + "`EMPNO`, `ENAME`, `DEPTNO`\n"
         + "FROM `EMPS`";
-    sql(sql).ok(expected);
+    sql(sql1).ok(expected1);
+    // Hint item right after the token "/*+"
+    final String sql2 = "select /*+properties(k1='v1', k2='v2')*/ empno from 
emps";
+    final String expected2 = "SELECT\n"
+        + "/*+ `PROPERTIES`(`K1` = 'v1', `K2` = 'v2') */\n"
+        + "`EMPNO`\n"
+        + "FROM `EMPS`";
+    sql(sql2).ok(expected2);
   }
 
   @Test void testTableHintsInQuery() {
diff --git a/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java 
b/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java
index d0f9788..ebfd102 100644
--- a/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java
+++ b/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java
@@ -58,7 +58,7 @@ class SqlAdvisorTest extends SqlValidatorTestCase {
       SqlTestFactory.INSTANCE.withValidator(SqlAdvisorValidator::new);
 
   private static final List<String> STAR_KEYWORD =
-      Arrays.asList(
+      Collections.singletonList(
           "KEYWORD(*)");
 
   protected static final List<String> FROM_KEYWORDS =
@@ -105,7 +105,7 @@ class SqlAdvisorTest extends SqlValidatorTestCase {
           "TABLE(B)");
 
   private static final List<String> EMP_TABLE =
-      Arrays.asList(
+      Collections.singletonList(
           "TABLE(EMP)");
 
   protected static final List<String> FETCH_OFFSET =
@@ -242,7 +242,8 @@ class SqlAdvisorTest extends SqlValidatorTestCase {
           "KEYWORD(ALL)",
           "KEYWORD(DISTINCT)",
           "KEYWORD(STREAM)",
-          "KEYWORD(*)");
+          "KEYWORD(*)",
+          "KEYWORD(/*+)");
 
   private static final List<String> ORDER_KEYWORDS =
       Arrays.asList(
@@ -325,7 +326,7 @@ class SqlAdvisorTest extends SqlValidatorTestCase {
           "KEYWORD(WINDOW)");
 
   private static final List<String> A_TABLE =
-      Arrays.asList(
+      Collections.singletonList(
           "TABLE(A)");
 
   protected static final List<String> JOIN_KEYWORDS =
@@ -339,6 +340,7 @@ class SqlAdvisorTest extends SqlValidatorTestCase {
           "KEYWORD(ORDER)",
           "KEYWORD(()",
           "KEYWORD(EXTEND)",
+          "KEYWORD(/*+)",
           "KEYWORD(AS)",
           "KEYWORD(USING)",
           "KEYWORD(OUTER)",
@@ -1579,6 +1581,6 @@ class SqlAdvisorTest extends SqlValidatorTestCase {
     String simplified =
         "SELECT * FROM [DEPT] a WHERE _suggest_ and deptno < 5";
     assertSimplify(sql, simplified);
-    assertComplete(sql, EXPR_KEYWORDS, Arrays.asList("TABLE(a)"), 
DEPT_COLUMNS);
+    assertComplete(sql, EXPR_KEYWORDS, Collections.singletonList("TABLE(a)"), 
DEPT_COLUMNS);
   }
 }

Reply via email to