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 2017/01/29 18:09:40 UTC

calcite git commit: [CALCITE-1572] JdbcSchema throws exception when detecting nullable columns (Wu Xiang)

Repository: calcite
Updated Branches:
  refs/heads/master beb465334 -> 2d7e1f1a6


[CALCITE-1572] JdbcSchema throws exception when detecting nullable columns (Wu Xiang)

Close apache/calcite#357


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

Branch: refs/heads/master
Commit: 2d7e1f1a6649c085c88f8d81410363800a5b91ae
Parents: beb4653
Author: Wu Xiang <wu...@hulu.com>
Authored: Fri Jan 20 14:26:41 2017 +0000
Committer: Julian Hyde <jh...@apache.org>
Committed: Sat Jan 28 22:22:24 2017 -0800

----------------------------------------------------------------------
 .../org/apache/calcite/adapter/jdbc/JdbcSchema.java    |  2 +-
 .../java/org/apache/calcite/test/JdbcAdapterTest.java  | 13 +++++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/2d7e1f1a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcSchema.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcSchema.java b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcSchema.java
index 41d05d2..5ac3a38 100644
--- a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcSchema.java
+++ b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcSchema.java
@@ -283,7 +283,7 @@ public class JdbcSchema implements Schema {
       }
       RelDataType sqlType =
           sqlType(typeFactory, dataType, precision, scale, typeString);
-      boolean nullable = resultSet.getBoolean(11);
+      boolean nullable = resultSet.getInt(11) != DatabaseMetaData.columnNoNulls;
       fieldInfo.add(columnName, sqlType).nullable(nullable);
     }
     resultSet.close();

http://git-wip-us.apache.org/repos/asf/calcite/blob/2d7e1f1a/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java b/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java
index 02db883..336c361 100644
--- a/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java
+++ b/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java
@@ -827,6 +827,19 @@ public class JdbcAdapterTest {
     });
   }
 
+  /** Test case for
+   * <a href="https://issues.apache.org/jira/browse/CALCITE-1572">[CALCITE-1572]
+   * JdbcSchema throws exception when detecting nullable columns</a>. */
+  @Test public void testColumnNullability() throws Exception {
+    final String sql = "select \"employee_id\", \"position_id\"\n"
+        + "from \"foodmart\".\"employee\" limit 10";
+    CalciteAssert.model(JdbcTest.FOODMART_MODEL)
+        .query(sql)
+        .runs()
+        .returnsCount(10)
+        .typeIs("[employee_id INTEGER NOT NULL, position_id INTEGER]");
+  }
+
   /** Acquires a lock, and releases it when closed. */
   static class LockWrapper implements AutoCloseable {
     private final Lock lock;