You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by vl...@apache.org on 2018/07/30 21:03:16 UTC
[2/5] calcite git commit: [CALCITE-2429] NPE:
SqlValidatorImpl.lookupFieldNamespace when SQL Advisor observes non-existing
field
[CALCITE-2429] NPE: SqlValidatorImpl.lookupFieldNamespace when SQL Advisor observes non-existing field
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/a18a3800
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/a18a3800
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/a18a3800
Branch: refs/heads/master
Commit: a18a380095c9f0bb3da9912748a5b368e547134f
Parents: 6496cb7
Author: Vladimir Sitnikov <si...@gmail.com>
Authored: Mon Jul 30 23:21:07 2018 +0300
Committer: Vladimir Sitnikov <si...@gmail.com>
Committed: Tue Jul 31 00:00:34 2018 +0300
----------------------------------------------------------------------
.../org/apache/calcite/sql/validate/SqlValidatorImpl.java | 3 +++
core/src/test/java/org/apache/calcite/test/JdbcTest.java | 8 ++++++++
2 files changed, 11 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/a18a3800/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java b/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java
index 7edcd7b..3bb0cd4 100644
--- a/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java
+++ b/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java
@@ -4831,6 +4831,9 @@ public class SqlValidatorImpl implements SqlValidatorWithHints {
SqlValidatorNamespace lookupFieldNamespace(RelDataType rowType, String name) {
final SqlNameMatcher nameMatcher = catalogReader.nameMatcher();
final RelDataTypeField field = nameMatcher.field(rowType, name);
+ if (field == null) {
+ return null;
+ }
return new FieldNamespace(this, field.getType());
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/a18a3800/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 c1595b3..8261b8d 100644
--- a/core/src/test/java/org/apache/calcite/test/JdbcTest.java
+++ b/core/src/test/java/org/apache/calcite/test/JdbcTest.java
@@ -413,6 +413,14 @@ public class JdbcTest {
"id=empid; names=[empid]; type=COLUMN"));
}
+ @Test public void testSqlAdvisorNonExistingColumn()
+ throws SQLException, ClassNotFoundException {
+ adviseSql("select e.empdid_wrong_name.^ from \"hr\".\"emps\" e",
+ CalciteAssert.checkResultUnordered(
+ "id=*; names=[*]; type=KEYWORD",
+ "id=; names=null; type=MATCH"));
+ }
+
@Test public void testSqlAdvisorTableInSchema()
throws SQLException, ClassNotFoundException {
adviseSql("select * from \"hr\".^",