Index: jdbc/src/test/org/apache/hive/jdbc/TestJdbcDriver2.java =================================================================== --- jdbc/src/test/org/apache/hive/jdbc/TestJdbcDriver2.java (revision 1479992) +++ jdbc/src/test/org/apache/hive/jdbc/TestJdbcDriver2.java (working copy) @@ -925,7 +925,7 @@ assertEquals("a", meta.getColumnName(5)); assertEquals(Types.VARCHAR, meta.getColumnType(5)); - assertEquals("string", meta.getColumnTypeName(5)); + assertEquals("array", meta.getColumnTypeName(5)); assertEquals(Integer.MAX_VALUE, meta.getColumnDisplaySize(5)); assertEquals(Integer.MAX_VALUE, meta.getPrecision(5)); assertEquals(0, meta.getScale(5)); @@ -938,7 +938,7 @@ assertEquals("c6", meta.getColumnName(6)); assertEquals(Types.VARCHAR, meta.getColumnType(6)); - assertEquals("string", meta.getColumnTypeName(6)); + assertEquals("map", meta.getColumnTypeName(6)); assertEquals(Integer.MAX_VALUE, meta.getColumnDisplaySize(6)); assertEquals(Integer.MAX_VALUE, meta.getPrecision(6)); assertEquals(0, meta.getScale(6)); @@ -951,7 +951,7 @@ assertEquals("c7", meta.getColumnName(7)); assertEquals(Types.VARCHAR, meta.getColumnType(7)); - assertEquals("string", meta.getColumnTypeName(7)); + assertEquals("map", meta.getColumnTypeName(7)); assertEquals(Integer.MAX_VALUE, meta.getColumnDisplaySize(7)); assertEquals(Integer.MAX_VALUE, meta.getPrecision(7)); assertEquals(0, meta.getScale(7)); @@ -964,7 +964,7 @@ assertEquals("c8", meta.getColumnName(8)); assertEquals(Types.VARCHAR, meta.getColumnType(8)); - assertEquals("string", meta.getColumnTypeName(8)); + assertEquals("struct", meta.getColumnTypeName(8)); assertEquals(Integer.MAX_VALUE, meta.getColumnDisplaySize(8)); assertEquals(Integer.MAX_VALUE, meta.getPrecision(8)); assertEquals(0, meta.getScale(8)); @@ -1042,7 +1042,7 @@ assertEquals("b", meta.getColumnName(14)); assertEquals(Types.VARCHAR, meta.getColumnType(14)); - assertEquals("string", meta.getColumnTypeName(14)); + assertEquals("array", meta.getColumnTypeName(14)); assertEquals(Integer.MAX_VALUE, meta.getColumnDisplaySize(14)); assertEquals(Integer.MAX_VALUE, meta.getPrecision(14)); assertEquals(0, meta.getScale(14)); Index: jdbc/src/java/org/apache/hive/jdbc/Utils.java =================================================================== --- jdbc/src/java/org/apache/hive/jdbc/Utils.java (revision 1479992) +++ jdbc/src/java/org/apache/hive/jdbc/Utils.java (working copy) @@ -134,11 +134,11 @@ return Types.DECIMAL; } else if ("binary".equalsIgnoreCase(type)) { return Types.BINARY; - } else if (type.startsWith("map<")) { + } else if ("map".equalsIgnoreCase(type)) { return Types.VARCHAR; - } else if (type.startsWith("array<")) { + } else if ("array".equalsIgnoreCase(type)) { return Types.VARCHAR; - } else if (type.startsWith("struct<")) { + } else if ("struct".equalsIgnoreCase(type)) { return Types.VARCHAR; } throw new SQLException("Unrecognized column type: " + type); Index: jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java =================================================================== --- jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java (revision 1479992) +++ jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java (working copy) @@ -495,6 +495,12 @@ return getTimestampValue(tColumnValue.getStringVal()); case DECIMAL_TYPE: return getBigDecimalValue(tColumnValue.getStringVal()); + case ARRAY_TYPE: + return getStringValue(tColumnValue.getStringVal()); + case MAP_TYPE: + return getStringValue(tColumnValue.getStringVal()); + case STRUCT_TYPE: + return getStringValue(tColumnValue.getStringVal()); default: throw new SQLException("Unrecognized column type:" + columnType); } Index: jdbc/src/java/org/apache/hive/jdbc/HiveResultSetMetaData.java =================================================================== --- jdbc/src/java/org/apache/hive/jdbc/HiveResultSetMetaData.java (revision 1479992) +++ jdbc/src/java/org/apache/hive/jdbc/HiveResultSetMetaData.java (working copy) @@ -116,12 +116,12 @@ return serdeConstants.DECIMAL_TYPE_NAME; } else if ("binary".equalsIgnoreCase(type)) { return serdeConstants.BINARY_TYPE_NAME; - } else if (type.startsWith("map<")) { - return serdeConstants.STRING_TYPE_NAME; - } else if (type.startsWith("array<")) { - return serdeConstants.STRING_TYPE_NAME; - } else if (type.startsWith("struct<")) { - return serdeConstants.STRING_TYPE_NAME; + } else if ("map".equalsIgnoreCase(type)) { + return serdeConstants.MAP_TYPE_NAME; + } else if ("array".equalsIgnoreCase(type)) { + return serdeConstants.LIST_TYPE_NAME; + } else if ("struct".equalsIgnoreCase(type)) { + return serdeConstants.STRUCT_TYPE_NAME; } throw new SQLException("Unrecognized column type: " + type); Index: service/src/java/org/apache/hive/service/cli/Type.java =================================================================== --- service/src/java/org/apache/hive/service/cli/Type.java (revision 1479992) +++ service/src/java/org/apache/hive/service/cli/Type.java (working copy) @@ -63,23 +63,23 @@ false, false), ARRAY_TYPE("ARRAY", java.sql.Types.VARCHAR, - TTypeId.STRING_TYPE, + TTypeId.ARRAY_TYPE, true, true), MAP_TYPE("MAP", java.sql.Types.VARCHAR, - TTypeId.STRING_TYPE, + TTypeId.MAP_TYPE, true, true), STRUCT_TYPE("STRUCT", java.sql.Types.VARCHAR, - TTypeId.STRING_TYPE, + TTypeId.STRUCT_TYPE, true, false), UNION_TYPE("UNIONTYPE", java.sql.Types.VARCHAR, - TTypeId.STRING_TYPE, + TTypeId.UNION_TYPE, true, false), USER_DEFINED_TYPE(null, java.sql.Types.VARCHAR, - TTypeId.STRING_TYPE, + TTypeId.USER_DEFINED_TYPE, true, false); private final String name;