diff --git a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java index add1a1919b..a28f2f4563 100644 --- a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java +++ b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java @@ -165,12 +165,24 @@ public Object deserialize(Writable blob) throws SerDeException { switch (hiveColumnTypes[i].getPrimitiveCategory()) { case INT: + if (rowVal instanceof Number) { + rowVal = ((Number)rowVal).intValue(); + } else { + rowVal = Integer.valueOf(rowVal.toString()); + } + break; case SHORT: + if (rowVal instanceof Number) { + rowVal = ((Number)rowVal).shortValue(); + } else { + rowVal = Short.valueOf(rowVal.toString()); + } + break; case BYTE: if (rowVal instanceof Number) { - rowVal = ((Number)rowVal).intValue(); + rowVal = ((Number)rowVal).byteValue(); } else { - rowVal = Integer.valueOf(rowVal.toString()); + rowVal = Byte.valueOf(rowVal.toString()); } break; case LONG: