[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\".^",
