You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2016/05/02 03:33:28 UTC

hive git commit: HIVE-13462 : HiveResultSetMetaData.getPrecision() fails for NULL columns (Jason Dere via Ashutosh Chauhan)

Repository: hive
Updated Branches:
  refs/heads/master 2b593376d -> 35227eb3c


HIVE-13462 : HiveResultSetMetaData.getPrecision() fails for NULL columns (Jason Dere via Ashutosh Chauhan)

Signed-off-by: Ashutosh Chauhan <ha...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/35227eb3
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/35227eb3
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/35227eb3

Branch: refs/heads/master
Commit: 35227eb3caa3f58577171199402a98ee385d6a6b
Parents: 2b59337
Author: Jason Dere <jd...@hortonworks.com>
Authored: Fri Apr 8 12:59:00 2016 -0800
Committer: Ashutosh Chauhan <ha...@apache.org>
Committed: Sun May 1 18:32:56 2016 -0700

----------------------------------------------------------------------
 .../org/apache/hive/jdbc/TestJdbcDriver2.java   | 25 ++++++++++++++------
 .../java/org/apache/hive/jdbc/JdbcColumn.java   | 13 ++++++----
 2 files changed, 26 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/35227eb3/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
----------------------------------------------------------------------
diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
index 965627f..73bc620 100644
--- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
+++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
@@ -1605,14 +1605,14 @@ public class TestJdbcDriver2 {
 
     ResultSet res = stmt.executeQuery(
         "select c1, c2, c3, c4, c5 as a, c6, c7, c8, c9, c10, c11, c12, " +
-            "c1*2, sentences(null, null, null) as b, c17, c18, c20, c21, c22, c23 from " + dataTypeTableName +
+            "c1*2, sentences(null, null, null) as b, c17, c18, c20, c21, c22, c23, null as null_val from " + dataTypeTableName +
         " limit 1");
     ResultSetMetaData meta = res.getMetaData();
 
     ResultSet colRS = con.getMetaData().getColumns(null, null,
         dataTypeTableName.toLowerCase(), null);
 
-    assertEquals(20, meta.getColumnCount());
+    assertEquals(21, meta.getColumnCount());
 
     assertTrue(colRS.next());
 
@@ -1876,6 +1876,14 @@ public class TestJdbcDriver2 {
     assertEquals(15, meta.getPrecision(19));
     assertEquals(0, meta.getScale(19));
 
+    assertEquals("c22", colRS.getString("COLUMN_NAME"));
+    assertEquals(Types.CHAR, colRS.getInt("DATA_TYPE"));
+    assertEquals("char", colRS.getString("TYPE_NAME").toLowerCase());
+    assertEquals(meta.getPrecision(19), colRS.getInt("COLUMN_SIZE"));
+    assertEquals(meta.getScale(19), colRS.getInt("DECIMAL_DIGITS"));
+
+    assertTrue(colRS.next());
+
     assertEquals("c23", meta.getColumnName(20));
     assertEquals(Types.BINARY, meta.getColumnType(20));
     assertEquals("binary", meta.getColumnTypeName(20));
@@ -1883,11 +1891,14 @@ public class TestJdbcDriver2 {
     assertEquals(Integer.MAX_VALUE, meta.getPrecision(20));
     assertEquals(0, meta.getScale(20));
 
-    assertEquals("c22", colRS.getString("COLUMN_NAME"));
-    assertEquals(Types.CHAR, colRS.getInt("DATA_TYPE"));
-    assertEquals("char", colRS.getString("TYPE_NAME").toLowerCase());
-    assertEquals(meta.getPrecision(19), colRS.getInt("COLUMN_SIZE"));
-    assertEquals(meta.getScale(19), colRS.getInt("DECIMAL_DIGITS"));
+    assertTrue(colRS.next());
+
+    assertEquals("null_val", meta.getColumnName(21));
+    assertEquals(Types.NULL, meta.getColumnType(21));
+    assertEquals("void", meta.getColumnTypeName(21));
+    assertEquals(4, meta.getColumnDisplaySize(21));
+    assertEquals(0, meta.getPrecision(21));
+    assertEquals(0, meta.getScale(21));
 
     for (int i = 1; i <= meta.getColumnCount(); i++) {
       assertFalse(meta.isAutoIncrement(i));

http://git-wip-us.apache.org/repos/asf/hive/blob/35227eb3/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java
----------------------------------------------------------------------
diff --git a/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java b/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java
index 5aed679..38918f0 100644
--- a/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java
+++ b/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java
@@ -156,6 +156,8 @@ public class JdbcColumn {
       return Type.ARRAY_TYPE;
     } else if ("struct".equalsIgnoreCase(type)) {
       return Type.STRUCT_TYPE;
+    } else if ("void".equalsIgnoreCase(type) || "null".equalsIgnoreCase(type)) {
+      return Type.NULL_TYPE;
     }
     throw new SQLException("Unrecognized column type: " + type);
   }
@@ -165,11 +167,7 @@ public class JdbcColumn {
   }
 
   public static int hiveTypeToSqlType(String type) throws SQLException {
-    if ("void".equalsIgnoreCase(type) || "null".equalsIgnoreCase(type)) {
-      return Types.NULL;
-    } else {
-      return hiveTypeToSqlType(typeStringToHiveType(type));
-    }
+    return hiveTypeToSqlType(typeStringToHiveType(type));
   }
 
   static String getColumnTypeName(String type) throws SQLException {
@@ -225,6 +223,8 @@ public class JdbcColumn {
     // according to hiveTypeToSqlType possible options are:
     int columnType = hiveTypeToSqlType(hiveType);
     switch(columnType) {
+    case Types.NULL:
+      return 4; // "NULL"
     case Types.BOOLEAN:
       return columnPrecision(hiveType, columnAttributes);
     case Types.CHAR:
@@ -266,6 +266,8 @@ public class JdbcColumn {
     int columnType = hiveTypeToSqlType(hiveType);
     // according to hiveTypeToSqlType possible options are:
     switch(columnType) {
+    case Types.NULL:
+      return 0;
     case Types.BOOLEAN:
       return 1;
     case Types.CHAR:
@@ -320,6 +322,7 @@ public class JdbcColumn {
     int columnType = hiveTypeToSqlType(hiveType);
     // according to hiveTypeToSqlType possible options are:
     switch(columnType) {
+    case Types.NULL:
     case Types.BOOLEAN:
     case Types.CHAR:
     case Types.VARCHAR: