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: