[CALCITE-2431] AssertionError: SqlUtil.getAncestry when providing completion 
hints for sub-schema


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

Branch: refs/heads/master
Commit: 466b3279dcc7a274349ecbbde94b562eb50a043b
Parents: 1a94885
Author: Vladimir Sitnikov <[email protected]>
Authored: Mon Jul 30 23:25:17 2018 +0300
Committer: Vladimir Sitnikov <[email protected]>
Committed: Tue Jul 31 00:01:09 2018 +0300

----------------------------------------------------------------------
 .../java/org/apache/calcite/sql/advise/SqlAdvisor.java  |  3 +--
 .../src/test/java/org/apache/calcite/test/JdbcTest.java | 12 ++++++++++++
 2 files changed, 13 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/466b3279/core/src/main/java/org/apache/calcite/sql/advise/SqlAdvisor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql/advise/SqlAdvisor.java 
b/core/src/main/java/org/apache/calcite/sql/advise/SqlAdvisor.java
index 5395fac..cafa612 100644
--- a/core/src/main/java/org/apache/calcite/sql/advise/SqlAdvisor.java
+++ b/core/src/main/java/org/apache/calcite/sql/advise/SqlAdvisor.java
@@ -241,8 +241,7 @@ public class SqlAdvisor {
       final SqlParserPos pos) {
     List<SqlNode> nodes = SqlUtil.getAncestry(root,
         input -> input instanceof SqlIdentifier
-            && Util.last(((SqlIdentifier) input).names)
-                .equals(UPPER_HINT_TOKEN),
+            && ((SqlIdentifier) input).names.contains(UPPER_HINT_TOKEN),
         input -> Objects.requireNonNull(input).getParserPosition()
             .startsAt(pos));
     assert nodes.get(0) == root;

http://git-wip-us.apache.org/repos/asf/calcite/blob/466b3279/core/src/test/java/org/apache/calcite/test/JdbcTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/JdbcTest.java 
b/core/src/test/java/org/apache/calcite/test/JdbcTest.java
index 65572dc..94507b5 100644
--- a/core/src/test/java/org/apache/calcite/test/JdbcTest.java
+++ b/core/src/test/java/org/apache/calcite/test/JdbcTest.java
@@ -429,6 +429,18 @@ public class JdbcTest {
             "id=; names=null; type=MATCH"));
   }
 
+  @Test public void testSqlAdvisorSubSchema()
+      throws SQLException, ClassNotFoundException {
+    adviseSql("select * from \"hr\".^.test_test_test",
+        CalciteAssert.checkResultUnordered(
+            "id=; names=null; type=MATCH",
+            "id=hr.dependents; names=[hr, dependents]; type=TABLE",
+            "id=hr.depts; names=[hr, depts]; type=TABLE",
+            "id=hr.emps; names=[hr, emps]; type=TABLE",
+            "id=hr.locations; names=[hr, locations]; type=TABLE",
+            "id=hr; names=[hr]; type=SCHEMA"));
+  }
+
   @Test public void testSqlAdvisorTableInSchema()
       throws SQLException, ClassNotFoundException {
     adviseSql("select * from \"hr\".^",

Reply via email to