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 2c85877..cc1a767 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 @@ -50,6 +50,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hive.common.type.HiveIntervalDayTime; +import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.metastore.TableType; @@ -893,6 +895,54 @@ public void testDataTypes() throws Exception { assertFalse(res.next()); } + @Test + public void testIntervalTypes() throws Exception { + Statement stmt = con.createStatement(); + + // Since interval types not currently supported as table columns, need to create them + // as expressions. + ResultSet res = stmt.executeQuery( + "select case when c17 is null then null else interval '1' year end as col1," + + " c17 - c17 as col2 from " + dataTypeTableName + " order by col1"); + ResultSetMetaData meta = res.getMetaData(); + + assertEquals("col1", meta.getColumnLabel(1)); + assertEquals(java.sql.Types.OTHER, meta.getColumnType(1)); + assertEquals("interval_year_month", meta.getColumnTypeName(1)); + assertEquals(11, meta.getColumnDisplaySize(1)); + assertEquals(11, meta.getPrecision(1)); + assertEquals(0, meta.getScale(1)); + assertEquals(HiveIntervalYearMonth.class.getName(), meta.getColumnClassName(1)); + + assertEquals("col2", meta.getColumnLabel(2)); + assertEquals(java.sql.Types.OTHER, meta.getColumnType(2)); + assertEquals("interval_day_time", meta.getColumnTypeName(2)); + assertEquals(29, meta.getColumnDisplaySize(2)); + assertEquals(29, meta.getPrecision(2)); + assertEquals(0, meta.getScale(2)); + assertEquals(HiveIntervalDayTime.class.getName(), meta.getColumnClassName(2)); + + // row 1 - results should be null + assertTrue(res.next()); + // skip the last (partitioning) column since it is always non-null + for (int i = 1; i < meta.getColumnCount(); i++) { + assertNull("Column " + i + " should be null", res.getObject(i)); + } + + // row 2 - results should be null + assertTrue(res.next()); + for (int i = 1; i < meta.getColumnCount(); i++) { + assertNull("Column " + i + " should be null", res.getObject(i)); + } + + // row 3 + assertTrue(res.next()); + assertEquals("1-0", res.getString(1)); + assertEquals(1, ((HiveIntervalYearMonth) res.getObject(1)).getYears()); + assertEquals("0 00:00:00.000000000", res.getString(2)); + assertEquals(0, ((HiveIntervalDayTime) res.getObject(2)).getDays()); + } + private void doTestSelectAll(String tableName, int maxRows, int fetchSize) throws Exception { boolean isPartitionTable = tableName.equals(partitionedTableName); diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java b/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java index cd1916f..98d0370 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveBaseResultSet.java @@ -44,6 +44,8 @@ import java.util.List; import java.util.Map; +import org.apache.hadoop.hive.common.type.HiveIntervalDayTime; +import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth; import org.apache.hive.service.cli.TableSchema; import org.apache.hive.service.cli.Type; @@ -443,6 +445,10 @@ private Object evaluate(Type type, Object value) { return new BigDecimal((String)value); case DATE_TYPE: return Date.valueOf((String) value); + case INTERVAL_YEAR_MONTH_TYPE: + return HiveIntervalYearMonth.valueOf((String) value); + case INTERVAL_DAY_TIME_TYPE: + return HiveIntervalDayTime.valueOf((String) value); case ARRAY_TYPE: case MAP_TYPE: case STRUCT_TYPE: diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index 764a3f1..9798204 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -173,6 +173,7 @@ public HiveConnection(String uri, Properties info) throws SQLException { supportedProtocols.add(TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V5); supportedProtocols.add(TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V6); supportedProtocols.add(TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V7); + supportedProtocols.add(TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8); // open client session openSession(); diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveResultSetMetaData.java b/jdbc/src/java/org/apache/hive/jdbc/HiveResultSetMetaData.java index 3fcdd56..aa6f58a 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveResultSetMetaData.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveResultSetMetaData.java @@ -21,6 +21,7 @@ import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.List; +import org.apache.hive.service.cli.Type; /** * HiveResultSetMetaData. @@ -43,9 +44,13 @@ public String getCatalogName(int column) throws SQLException { throw new SQLException("Method not supported"); } + private Type getHiveType(int column) throws SQLException { + return JdbcColumn.typeStringToHiveType(columnTypes.get(toZeroIndex(column))); + } + public String getColumnClassName(int column) throws SQLException { - int columnType = getColumnType(column); - return JdbcColumn.columnClassName(columnType, columnAttributes.get(toZeroIndex(column))); + return JdbcColumn.columnClassName(getHiveType(column), + columnAttributes.get(toZeroIndex(column))); } public int getColumnCount() throws SQLException { @@ -53,9 +58,8 @@ public int getColumnCount() throws SQLException { } public int getColumnDisplaySize(int column) throws SQLException { - int columnType = getColumnType(column); - - return JdbcColumn.columnDisplaySize(columnType, columnAttributes.get(toZeroIndex(column))); + return JdbcColumn.columnDisplaySize(getHiveType(column), + columnAttributes.get(toZeroIndex(column))); } public String getColumnLabel(int column) throws SQLException { @@ -79,15 +83,13 @@ public String getColumnTypeName(int column) throws SQLException { } public int getPrecision(int column) throws SQLException { - int columnType = getColumnType(column); - - return JdbcColumn.columnPrecision(columnType, columnAttributes.get(toZeroIndex(column))); + return JdbcColumn.columnPrecision(getHiveType(column), + columnAttributes.get(toZeroIndex(column))); } public int getScale(int column) throws SQLException { - int columnType = getColumnType(column); - - return JdbcColumn.columnScale(columnType, columnAttributes.get(toZeroIndex(column))); + return JdbcColumn.columnScale(getHiveType(column), + columnAttributes.get(toZeroIndex(column))); } public String getSchemaName(int column) throws SQLException { diff --git a/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java b/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java index 4383f56..a185cac 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java +++ b/jdbc/src/java/org/apache/hive/jdbc/JdbcColumn.java @@ -18,7 +18,10 @@ package org.apache.hive.jdbc; +import org.apache.hadoop.hive.common.type.HiveIntervalDayTime; +import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth; import org.apache.hadoop.hive.serde.serdeConstants; +import org.apache.hive.service.cli.Type; import java.math.BigInteger; import java.sql.Date; @@ -64,10 +67,12 @@ public String getType() { return type; } - static String columnClassName(int columnType, JdbcColumnAttributes columnAttributes) + static String columnClassName(Type hiveType, JdbcColumnAttributes columnAttributes) throws SQLException { - // according to hiveTypeToSqlType possible options are: + int columnType = hiveTypeToSqlType(hiveType); switch(columnType) { + case Types.NULL: + return "null"; case Types.BOOLEAN: return Boolean.class.getName(); case Types.CHAR: @@ -93,7 +98,17 @@ static String columnClassName(int columnType, JdbcColumnAttributes columnAttribu return BigInteger.class.getName(); case Types.BINARY: return byte[].class.getName(); - case Types.JAVA_OBJECT: + case Types.OTHER: + case Types.JAVA_OBJECT: { + switch (hiveType) { + case INTERVAL_YEAR_MONTH_TYPE: + return HiveIntervalYearMonth.class.getName(); + case INTERVAL_DAY_TIME_TYPE: + return HiveIntervalDayTime.class.getName(); + default: + return String.class.getName(); + } + } case Types.ARRAY: case Types.STRUCT: return String.class.getName(); @@ -102,6 +117,53 @@ static String columnClassName(int columnType, JdbcColumnAttributes columnAttribu } } + static Type typeStringToHiveType(String type) throws SQLException { + if ("string".equalsIgnoreCase(type)) { + return Type.STRING_TYPE; + } else if ("varchar".equalsIgnoreCase(type)) { + return Type.VARCHAR_TYPE; + } else if ("char".equalsIgnoreCase(type)) { + return Type.CHAR_TYPE; + } else if ("float".equalsIgnoreCase(type)) { + return Type.FLOAT_TYPE; + } else if ("double".equalsIgnoreCase(type)) { + return Type.DOUBLE_TYPE; + } else if ("boolean".equalsIgnoreCase(type)) { + return Type.BOOLEAN_TYPE; + } else if ("tinyint".equalsIgnoreCase(type)) { + return Type.TINYINT_TYPE; + } else if ("smallint".equalsIgnoreCase(type)) { + return Type.SMALLINT_TYPE; + } else if ("int".equalsIgnoreCase(type)) { + return Type.INT_TYPE; + } else if ("bigint".equalsIgnoreCase(type)) { + return Type.BIGINT_TYPE; + } else if ("date".equalsIgnoreCase(type)) { + return Type.DATE_TYPE; + } else if ("timestamp".equalsIgnoreCase(type)) { + return Type.TIMESTAMP_TYPE; + } else if ("interval_year_month".equalsIgnoreCase(type)) { + return Type.INTERVAL_YEAR_MONTH_TYPE; + } else if ("interval_day_time".equalsIgnoreCase(type)) { + return Type.INTERVAL_DAY_TIME_TYPE; + } else if ("decimal".equalsIgnoreCase(type)) { + return Type.DECIMAL_TYPE; + } else if ("binary".equalsIgnoreCase(type)) { + return Type.BINARY_TYPE; + } else if ("map".equalsIgnoreCase(type)) { + return Type.MAP_TYPE; + } else if ("array".equalsIgnoreCase(type)) { + return Type.ARRAY_TYPE; + } else if ("struct".equalsIgnoreCase(type)) { + return Type.STRUCT_TYPE; + } + throw new SQLException("Unrecognized column type: " + type); + } + + public static int hiveTypeToSqlType(Type hiveType) throws SQLException { + return hiveType.toJavaSQLType(); + } + public static int hiveTypeToSqlType(String type) throws SQLException { if ("string".equalsIgnoreCase(type)) { return Types.VARCHAR; @@ -127,6 +189,10 @@ public static int hiveTypeToSqlType(String type) throws SQLException { return Types.DATE; } else if ("timestamp".equalsIgnoreCase(type)) { return Types.TIMESTAMP; + } else if ("interval_year_month".equalsIgnoreCase(type)) { + return Types.OTHER; + } else if ("interval_day_time".equalsIgnoreCase(type)) { + return Types.OTHER; } else if ("decimal".equalsIgnoreCase(type)) { return Types.DECIMAL; } else if ("binary".equalsIgnoreCase(type)) { @@ -137,6 +203,8 @@ public static int hiveTypeToSqlType(String type) throws SQLException { return Types.ARRAY; } else if ("struct".equalsIgnoreCase(type)) { return Types.STRUCT; + } else if ("void".equalsIgnoreCase(type) || "null".equalsIgnoreCase(type)) { + return Types.NULL; } throw new SQLException("Unrecognized column type: " + type); } @@ -168,11 +236,15 @@ static String getColumnTypeName(String type) throws SQLException { return serdeConstants.TIMESTAMP_TYPE_NAME; } else if ("date".equalsIgnoreCase(type)) { return serdeConstants.DATE_TYPE_NAME; + } else if ("interval_year_month".equalsIgnoreCase(type)) { + return serdeConstants.INTERVAL_YEAR_MONTH_TYPE_NAME; + } else if ("interval_day_time".equalsIgnoreCase(type)) { + return serdeConstants.INTERVAL_DAY_TIME_TYPE_NAME; } else if ("decimal".equalsIgnoreCase(type)) { return serdeConstants.DECIMAL_TYPE_NAME; } else if ("binary".equalsIgnoreCase(type)) { return serdeConstants.BINARY_TYPE_NAME; - } else if ("void".equalsIgnoreCase(type)) { + } else if ("void".equalsIgnoreCase(type) || "null".equalsIgnoreCase(type)) { return serdeConstants.VOID_TYPE_NAME; } else if (type.equalsIgnoreCase("map")) { return serdeConstants.MAP_TYPE_NAME; @@ -185,26 +257,27 @@ static String getColumnTypeName(String type) throws SQLException { throw new SQLException("Unrecognized column type: " + type); } - static int columnDisplaySize(int columnType, JdbcColumnAttributes columnAttributes) + static int columnDisplaySize(Type hiveType, JdbcColumnAttributes columnAttributes) throws SQLException { // according to hiveTypeToSqlType possible options are: + int columnType = hiveTypeToSqlType(hiveType); switch(columnType) { case Types.BOOLEAN: - return columnPrecision(columnType, columnAttributes); + return columnPrecision(hiveType, columnAttributes); case Types.CHAR: case Types.VARCHAR: - return columnPrecision(columnType, columnAttributes); + return columnPrecision(hiveType, columnAttributes); case Types.BINARY: return Integer.MAX_VALUE; // hive has no max limit for binary case Types.TINYINT: case Types.SMALLINT: case Types.INTEGER: case Types.BIGINT: - return columnPrecision(columnType, columnAttributes) + 1; // allow +/- + return columnPrecision(hiveType, columnAttributes) + 1; // allow +/- case Types.DATE: return 10; case Types.TIMESTAMP: - return columnPrecision(columnType, columnAttributes); + return columnPrecision(hiveType, columnAttributes); // see http://download.oracle.com/javase/6/docs/api/constant-values.html#java.lang.Float.MAX_EXPONENT case Types.FLOAT: @@ -213,8 +286,10 @@ static int columnDisplaySize(int columnType, JdbcColumnAttributes columnAttribut case Types.DOUBLE: return 25; // e.g. -(17#).e-#### case Types.DECIMAL: - return columnPrecision(columnType, columnAttributes) + 2; // '-' sign and '.' + return columnPrecision(hiveType, columnAttributes) + 2; // '-' sign and '.' + case Types.OTHER: case Types.JAVA_OBJECT: + return columnPrecision(hiveType, columnAttributes); case Types.ARRAY: case Types.STRUCT: return Integer.MAX_VALUE; @@ -223,8 +298,9 @@ static int columnDisplaySize(int columnType, JdbcColumnAttributes columnAttribut } } - static int columnPrecision(int columnType, JdbcColumnAttributes columnAttributes) + static int columnPrecision(Type hiveType, JdbcColumnAttributes columnAttributes) throws SQLException { + int columnType = hiveTypeToSqlType(hiveType); // according to hiveTypeToSqlType possible options are: switch(columnType) { case Types.BOOLEAN: @@ -255,7 +331,19 @@ static int columnPrecision(int columnType, JdbcColumnAttributes columnAttributes return 29; case Types.DECIMAL: return columnAttributes.precision; - case Types.JAVA_OBJECT: + case Types.OTHER: + case Types.JAVA_OBJECT: { + switch (hiveType) { + case INTERVAL_YEAR_MONTH_TYPE: + // -yyyyyyy-mm : should be more than enough + return 11; + case INTERVAL_DAY_TIME_TYPE: + // -ddddddddd hh:mm:ss.nnnnnnnnn + return 29; + default: + return Integer.MAX_VALUE; + } + } case Types.ARRAY: case Types.STRUCT: return Integer.MAX_VALUE; @@ -264,8 +352,9 @@ static int columnPrecision(int columnType, JdbcColumnAttributes columnAttributes } } - static int columnScale(int columnType, JdbcColumnAttributes columnAttributes) + static int columnScale(Type hiveType, JdbcColumnAttributes columnAttributes) throws SQLException { + int columnType = hiveTypeToSqlType(hiveType); // according to hiveTypeToSqlType possible options are: switch(columnType) { case Types.BOOLEAN: @@ -286,6 +375,7 @@ static int columnScale(int columnType, JdbcColumnAttributes columnAttributes) return 9; case Types.DECIMAL: return columnAttributes.scale; + case Types.OTHER: case Types.JAVA_OBJECT: case Types.ARRAY: case Types.STRUCT: diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java index 2758eb0..47378cf 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java @@ -620,10 +620,10 @@ static private boolean areColTypesCompatible(String oldType, String newType) { */ static public boolean validateColumnType(String type) { int last = 0; - boolean lastAlphaDigit = Character.isLetterOrDigit(type.charAt(last)); + boolean lastAlphaDigit = isValidTypeChar(type.charAt(last)); for (int i = 1; i <= type.length(); i++) { if (i == type.length() - || Character.isLetterOrDigit(type.charAt(i)) != lastAlphaDigit) { + || isValidTypeChar(type.charAt(i)) != lastAlphaDigit) { String token = type.substring(last, i); last = i; if (!hiveThriftTypeMap.contains(token)) { @@ -635,6 +635,10 @@ static public boolean validateColumnType(String type) { return true; } + private static boolean isValidTypeChar(char c) { + return Character.isLetterOrDigit(c) || c == '_'; + } + public static String validateSkewedColNames(List cols) { if (null == cols) { return null; @@ -720,6 +724,12 @@ public static void setSerdeParam(SerDeInfo sdi, Properties schema, "timestamp"); typeToThriftTypeMap.put( org.apache.hadoop.hive.serde.serdeConstants.DECIMAL_TYPE_NAME, "decimal"); + typeToThriftTypeMap.put( + org.apache.hadoop.hive.serde.serdeConstants.INTERVAL_YEAR_MONTH_TYPE_NAME, + org.apache.hadoop.hive.serde.serdeConstants.INTERVAL_YEAR_MONTH_TYPE_NAME); + typeToThriftTypeMap.put( + org.apache.hadoop.hive.serde.serdeConstants.INTERVAL_DAY_TIME_TYPE_NAME, + org.apache.hadoop.hive.serde.serdeConstants.INTERVAL_DAY_TIME_TYPE_NAME); } static Set hiveThriftTypeMap; //for validation diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index b9e15a1..ee2a402 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -186,6 +186,8 @@ TokenToTypeName.put(HiveParser.TOK_DATE, serdeConstants.DATE_TYPE_NAME); TokenToTypeName.put(HiveParser.TOK_DATETIME, serdeConstants.DATETIME_TYPE_NAME); TokenToTypeName.put(HiveParser.TOK_TIMESTAMP, serdeConstants.TIMESTAMP_TYPE_NAME); + TokenToTypeName.put(HiveParser.TOK_INTERVAL_YEAR_MONTH, serdeConstants.INTERVAL_YEAR_MONTH_TYPE_NAME); + TokenToTypeName.put(HiveParser.TOK_INTERVAL_DAY_TIME, serdeConstants.INTERVAL_DAY_TIME_TYPE_NAME); TokenToTypeName.put(HiveParser.TOK_DECIMAL, serdeConstants.DECIMAL_TYPE_NAME); } diff --git a/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde/test/ThriftTestObj.java b/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde/test/ThriftTestObj.java index 1b708dd..dda3c5f 100644 --- a/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde/test/ThriftTestObj.java +++ b/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde/test/ThriftTestObj.java @@ -528,7 +528,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, ThriftTestObj struc struct.field3 = new ArrayList(_list0.size); for (int _i1 = 0; _i1 < _list0.size; ++_i1) { - InnerStruct _elem2; // required + InnerStruct _elem2; // optional _elem2 = new InnerStruct(); _elem2.read(iprot); struct.field3.add(_elem2); @@ -636,7 +636,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, ThriftTestObj struct struct.field3 = new ArrayList(_list5.size); for (int _i6 = 0; _i6 < _list5.size; ++_i6) { - InnerStruct _elem7; // required + InnerStruct _elem7; // optional _elem7 = new InnerStruct(); _elem7.read(iprot); struct.field3.add(_elem7); diff --git a/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/Complex.java b/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/Complex.java index 07ea8b9..ff0c1f2 100644 --- a/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/Complex.java +++ b/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/Complex.java @@ -1211,7 +1211,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, Complex struct) thr struct.lint = new ArrayList(_list18.size); for (int _i19 = 0; _i19 < _list18.size; ++_i19) { - int _elem20; // required + int _elem20; // optional _elem20 = iprot.readI32(); struct.lint.add(_elem20); } @@ -1229,7 +1229,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, Complex struct) thr struct.lString = new ArrayList(_list21.size); for (int _i22 = 0; _i22 < _list21.size; ++_i22) { - String _elem23; // required + String _elem23; // optional _elem23 = iprot.readString(); struct.lString.add(_elem23); } @@ -1247,7 +1247,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, Complex struct) thr struct.lintString = new ArrayList(_list24.size); for (int _i25 = 0; _i25 < _list24.size; ++_i25) { - IntString _elem26; // required + IntString _elem26; // optional _elem26 = new IntString(); _elem26.read(iprot); struct.lintString.add(_elem26); @@ -1610,7 +1610,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, Complex struct) thro struct.lint = new ArrayList(_list57.size); for (int _i58 = 0; _i58 < _list57.size; ++_i58) { - int _elem59; // required + int _elem59; // optional _elem59 = iprot.readI32(); struct.lint.add(_elem59); } @@ -1623,7 +1623,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, Complex struct) thro struct.lString = new ArrayList(_list60.size); for (int _i61 = 0; _i61 < _list60.size; ++_i61) { - String _elem62; // required + String _elem62; // optional _elem62 = iprot.readString(); struct.lString.add(_elem62); } @@ -1636,7 +1636,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, Complex struct) thro struct.lintString = new ArrayList(_list63.size); for (int _i64 = 0; _i64 < _list63.size; ++_i64) { - IntString _elem65; // required + IntString _elem65; // optional _elem65 = new IntString(); _elem65.read(iprot); struct.lintString.add(_elem65); diff --git a/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/MegaStruct.java b/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/MegaStruct.java index 386fef9..fba49e4 100644 --- a/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/MegaStruct.java +++ b/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/MegaStruct.java @@ -2280,7 +2280,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, MegaStruct struct) _val19 = new ArrayList(_list20.size); for (int _i21 = 0; _i21 < _list20.size; ++_i21) { - String _elem22; // required + String _elem22; // optional _elem22 = iprot.readString(); _val19.add(_elem22); } @@ -2310,7 +2310,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, MegaStruct struct) _val26 = new ArrayList(_list27.size); for (int _i28 = 0; _i28 < _list27.size; ++_i28) { - MiniStruct _elem29; // required + MiniStruct _elem29; // optional _elem29 = new MiniStruct(); _elem29.read(iprot); _val26.add(_elem29); @@ -2333,7 +2333,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, MegaStruct struct) struct.my_stringlist = new ArrayList(_list30.size); for (int _i31 = 0; _i31 < _list30.size; ++_i31) { - String _elem32; // required + String _elem32; // optional _elem32 = iprot.readString(); struct.my_stringlist.add(_elem32); } @@ -2351,7 +2351,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, MegaStruct struct) struct.my_structlist = new ArrayList(_list33.size); for (int _i34 = 0; _i34 < _list33.size; ++_i34) { - MiniStruct _elem35; // required + MiniStruct _elem35; // optional _elem35 = new MiniStruct(); _elem35.read(iprot); struct.my_structlist.add(_elem35); @@ -2370,7 +2370,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, MegaStruct struct) struct.my_enumlist = new ArrayList(_list36.size); for (int _i37 = 0; _i37 < _list36.size; ++_i37) { - MyEnum _elem38; // required + MyEnum _elem38; // optional _elem38 = MyEnum.findByValue(iprot.readI32()); struct.my_enumlist.add(_elem38); } @@ -2388,7 +2388,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, MegaStruct struct) struct.my_stringset = new HashSet(2*_set39.size); for (int _i40 = 0; _i40 < _set39.size; ++_i40) { - String _elem41; // required + String _elem41; // optional _elem41 = iprot.readString(); struct.my_stringset.add(_elem41); } @@ -2406,7 +2406,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, MegaStruct struct) struct.my_enumset = new HashSet(2*_set42.size); for (int _i43 = 0; _i43 < _set42.size; ++_i43) { - MyEnum _elem44; // required + MyEnum _elem44; // optional _elem44 = MyEnum.findByValue(iprot.readI32()); struct.my_enumset.add(_elem44); } @@ -2424,7 +2424,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, MegaStruct struct) struct.my_structset = new HashSet(2*_set45.size); for (int _i46 = 0; _i46 < _set45.size; ++_i46) { - MiniStruct _elem47; // required + MiniStruct _elem47; // optional _elem47 = new MiniStruct(); _elem47.read(iprot); struct.my_structset.add(_elem47); @@ -3023,7 +3023,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, MegaStruct struct) t _val95 = new ArrayList(_list96.size); for (int _i97 = 0; _i97 < _list96.size; ++_i97) { - String _elem98; // required + String _elem98; // optional _elem98 = iprot.readString(); _val95.add(_elem98); } @@ -3047,7 +3047,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, MegaStruct struct) t _val102 = new ArrayList(_list103.size); for (int _i104 = 0; _i104 < _list103.size; ++_i104) { - MiniStruct _elem105; // required + MiniStruct _elem105; // optional _elem105 = new MiniStruct(); _elem105.read(iprot); _val102.add(_elem105); @@ -3064,7 +3064,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, MegaStruct struct) t struct.my_stringlist = new ArrayList(_list106.size); for (int _i107 = 0; _i107 < _list106.size; ++_i107) { - String _elem108; // required + String _elem108; // optional _elem108 = iprot.readString(); struct.my_stringlist.add(_elem108); } @@ -3077,7 +3077,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, MegaStruct struct) t struct.my_structlist = new ArrayList(_list109.size); for (int _i110 = 0; _i110 < _list109.size; ++_i110) { - MiniStruct _elem111; // required + MiniStruct _elem111; // optional _elem111 = new MiniStruct(); _elem111.read(iprot); struct.my_structlist.add(_elem111); @@ -3091,7 +3091,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, MegaStruct struct) t struct.my_enumlist = new ArrayList(_list112.size); for (int _i113 = 0; _i113 < _list112.size; ++_i113) { - MyEnum _elem114; // required + MyEnum _elem114; // optional _elem114 = MyEnum.findByValue(iprot.readI32()); struct.my_enumlist.add(_elem114); } @@ -3104,7 +3104,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, MegaStruct struct) t struct.my_stringset = new HashSet(2*_set115.size); for (int _i116 = 0; _i116 < _set115.size; ++_i116) { - String _elem117; // required + String _elem117; // optional _elem117 = iprot.readString(); struct.my_stringset.add(_elem117); } @@ -3117,7 +3117,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, MegaStruct struct) t struct.my_enumset = new HashSet(2*_set118.size); for (int _i119 = 0; _i119 < _set118.size; ++_i119) { - MyEnum _elem120; // required + MyEnum _elem120; // optional _elem120 = MyEnum.findByValue(iprot.readI32()); struct.my_enumset.add(_elem120); } @@ -3130,7 +3130,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, MegaStruct struct) t struct.my_structset = new HashSet(2*_set121.size); for (int _i122 = 0; _i122 < _set121.size; ++_i122) { - MiniStruct _elem123; // required + MiniStruct _elem123; // optional _elem123 = new MiniStruct(); _elem123.read(iprot); struct.my_structset.add(_elem123); diff --git a/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/PropValueUnion.java b/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/PropValueUnion.java index aa56dc9..a50a508 100644 --- a/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/PropValueUnion.java +++ b/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/PropValueUnion.java @@ -300,7 +300,7 @@ protected Object standardSchemeReadValue(org.apache.thrift.protocol.TProtocol ip lString = new ArrayList(_list0.size); for (int _i1 = 0; _i1 < _list0.size; ++_i1) { - String _elem2; // required + String _elem2; // optional _elem2 = iprot.readString(); lString.add(_elem2); } @@ -423,7 +423,7 @@ protected Object tupleSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot lString = new ArrayList(_list9.size); for (int _i10 = 0; _i10 < _list9.size; ++_i10) { - String _elem11; // required + String _elem11; // optional _elem11 = iprot.readString(); lString.add(_elem11); } diff --git a/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/SetIntString.java b/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/SetIntString.java index 676f2b2..334d225 100644 --- a/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/SetIntString.java +++ b/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/SetIntString.java @@ -431,7 +431,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, SetIntString struct struct.sIntString = new HashSet(2*_set82.size); for (int _i83 = 0; _i83 < _set82.size; ++_i83) { - IntString _elem84; // required + IntString _elem84; // optional _elem84 = new IntString(); _elem84.read(iprot); struct.sIntString.add(_elem84); @@ -530,7 +530,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, SetIntString struct) struct.sIntString = new HashSet(2*_set87.size); for (int _i88 = 0; _i88 < _set87.size; ++_i88) { - IntString _elem89; // required + IntString _elem89; // optional _elem89 = new IntString(); _elem89.read(iprot); struct.sIntString.add(_elem89); diff --git a/service/if/TCLIService.thrift b/service/if/TCLIService.thrift index 6f1a4ca..baf583f 100644 --- a/service/if/TCLIService.thrift +++ b/service/if/TCLIService.thrift @@ -57,6 +57,9 @@ enum TProtocolVersion { // V7 adds support for delegation token based connection HIVE_CLI_SERVICE_PROTOCOL_V7 + + // V8 adds support for interval types + HIVE_CLI_SERVICE_PROTOCOL_V8 } enum TTypeId { @@ -79,7 +82,9 @@ enum TTypeId { NULL_TYPE, DATE_TYPE, VARCHAR_TYPE, - CHAR_TYPE + CHAR_TYPE, + INTERVAL_YEAR_MONTH_TYPE, + INTERVAL_DAY_TIME_TYPE } const set PRIMITIVE_TYPES = [ @@ -97,7 +102,9 @@ const set PRIMITIVE_TYPES = [ TTypeId.NULL_TYPE, TTypeId.DATE_TYPE, TTypeId.VARCHAR_TYPE, - TTypeId.CHAR_TYPE + TTypeId.CHAR_TYPE, + TTypeId.INTERVAL_YEAR_MONTH_TYPE, + TTypeId.INTERVAL_DAY_TIME_TYPE ] const set COMPLEX_TYPES = [ @@ -133,6 +140,8 @@ const map TYPE_NAMES = { TTypeId.DATE_TYPE: "DATE" TTypeId.VARCHAR_TYPE: "VARCHAR" TTypeId.CHAR_TYPE: "CHAR" + TTypeId.INTERVAL_YEAR_MONTH_TYPE: "INTERVAL_YEAR_MONTH" + TTypeId.INTERVAL_DAY_TIME_TYPE: "INTERVAL_DAY_TIME" } // Thrift does not support recursively defined types or forward declarations, @@ -323,7 +332,7 @@ union TColumnValue { 4: TI32Value i32Val // INT 5: TI64Value i64Val // BIGINT, TIMESTAMP 6: TDoubleValue doubleVal // FLOAT, DOUBLE - 7: TStringValue stringVal // STRING, LIST, MAP, STRUCT, UNIONTYPE, BINARY, DECIMAL, NULL + 7: TStringValue stringVal // STRING, LIST, MAP, STRUCT, UNIONTYPE, BINARY, DECIMAL, NULL, INTERVAL_YEAR_MONTH, INTERVAL_DAY_TIME } // Represents a row in a rowset. @@ -542,7 +551,7 @@ struct TOperationHandle { // which operations may be executed. struct TOpenSessionReq { // The version of the HiveServer2 protocol that the client is using. - 1: required TProtocolVersion client_protocol = TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V7 + 1: required TProtocolVersion client_protocol = TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8 // Username and password for authentication. // Depending on the authentication scheme being used, @@ -561,7 +570,7 @@ struct TOpenSessionResp { 1: required TStatus status // The protocol version that the server is using. - 2: required TProtocolVersion serverProtocolVersion = TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V7 + 2: required TProtocolVersion serverProtocolVersion = TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8 // Session Handle 3: optional TSessionHandle sessionHandle diff --git a/service/src/gen/thrift/gen-cpp/TCLIService_constants.cpp b/service/src/gen/thrift/gen-cpp/TCLIService_constants.cpp index f20f38f..d1551b5 100644 --- a/service/src/gen/thrift/gen-cpp/TCLIService_constants.cpp +++ b/service/src/gen/thrift/gen-cpp/TCLIService_constants.cpp @@ -26,6 +26,8 @@ TCLIServiceConstants::TCLIServiceConstants() { PRIMITIVE_TYPES.insert((TTypeId::type)17); PRIMITIVE_TYPES.insert((TTypeId::type)18); PRIMITIVE_TYPES.insert((TTypeId::type)19); + PRIMITIVE_TYPES.insert((TTypeId::type)20); + PRIMITIVE_TYPES.insert((TTypeId::type)21); COMPLEX_TYPES.insert((TTypeId::type)10); COMPLEX_TYPES.insert((TTypeId::type)11); @@ -55,6 +57,8 @@ TCLIServiceConstants::TCLIServiceConstants() { TYPE_NAMES.insert(std::make_pair((TTypeId::type)17, "DATE")); TYPE_NAMES.insert(std::make_pair((TTypeId::type)18, "VARCHAR")); TYPE_NAMES.insert(std::make_pair((TTypeId::type)19, "CHAR")); + TYPE_NAMES.insert(std::make_pair((TTypeId::type)20, "INTERVAL_YEAR_MONTH")); + TYPE_NAMES.insert(std::make_pair((TTypeId::type)21, "INTERVAL_DAY_TIME")); CHARACTER_MAXIMUM_LENGTH = "characterMaximumLength"; diff --git a/service/src/gen/thrift/gen-cpp/TCLIService_types.cpp b/service/src/gen/thrift/gen-cpp/TCLIService_types.cpp index 326d25b..86eeea3 100644 --- a/service/src/gen/thrift/gen-cpp/TCLIService_types.cpp +++ b/service/src/gen/thrift/gen-cpp/TCLIService_types.cpp @@ -17,7 +17,8 @@ int _kTProtocolVersionValues[] = { TProtocolVersion::HIVE_CLI_SERVICE_PROTOCOL_V4, TProtocolVersion::HIVE_CLI_SERVICE_PROTOCOL_V5, TProtocolVersion::HIVE_CLI_SERVICE_PROTOCOL_V6, - TProtocolVersion::HIVE_CLI_SERVICE_PROTOCOL_V7 + TProtocolVersion::HIVE_CLI_SERVICE_PROTOCOL_V7, + TProtocolVersion::HIVE_CLI_SERVICE_PROTOCOL_V8 }; const char* _kTProtocolVersionNames[] = { "HIVE_CLI_SERVICE_PROTOCOL_V1", @@ -26,9 +27,10 @@ const char* _kTProtocolVersionNames[] = { "HIVE_CLI_SERVICE_PROTOCOL_V4", "HIVE_CLI_SERVICE_PROTOCOL_V5", "HIVE_CLI_SERVICE_PROTOCOL_V6", - "HIVE_CLI_SERVICE_PROTOCOL_V7" + "HIVE_CLI_SERVICE_PROTOCOL_V7", + "HIVE_CLI_SERVICE_PROTOCOL_V8" }; -const std::map _TProtocolVersion_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(7, _kTProtocolVersionValues, _kTProtocolVersionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL)); +const std::map _TProtocolVersion_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(8, _kTProtocolVersionValues, _kTProtocolVersionNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL)); int _kTTypeIdValues[] = { TTypeId::BOOLEAN_TYPE, @@ -50,7 +52,9 @@ int _kTTypeIdValues[] = { TTypeId::NULL_TYPE, TTypeId::DATE_TYPE, TTypeId::VARCHAR_TYPE, - TTypeId::CHAR_TYPE + TTypeId::CHAR_TYPE, + TTypeId::INTERVAL_YEAR_MONTH_TYPE, + TTypeId::INTERVAL_DAY_TIME_TYPE }; const char* _kTTypeIdNames[] = { "BOOLEAN_TYPE", @@ -72,9 +76,11 @@ const char* _kTTypeIdNames[] = { "NULL_TYPE", "DATE_TYPE", "VARCHAR_TYPE", - "CHAR_TYPE" + "CHAR_TYPE", + "INTERVAL_YEAR_MONTH_TYPE", + "INTERVAL_DAY_TIME_TYPE" }; -const std::map _TTypeId_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(20, _kTTypeIdValues, _kTTypeIdNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL)); +const std::map _TTypeId_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(22, _kTTypeIdValues, _kTTypeIdNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL)); int _kTStatusCodeValues[] = { TStatusCode::SUCCESS_STATUS, diff --git a/service/src/gen/thrift/gen-cpp/TCLIService_types.h b/service/src/gen/thrift/gen-cpp/TCLIService_types.h index d2942ab..7bceabd 100644 --- a/service/src/gen/thrift/gen-cpp/TCLIService_types.h +++ b/service/src/gen/thrift/gen-cpp/TCLIService_types.h @@ -24,7 +24,8 @@ struct TProtocolVersion { HIVE_CLI_SERVICE_PROTOCOL_V4 = 3, HIVE_CLI_SERVICE_PROTOCOL_V5 = 4, HIVE_CLI_SERVICE_PROTOCOL_V6 = 5, - HIVE_CLI_SERVICE_PROTOCOL_V7 = 6 + HIVE_CLI_SERVICE_PROTOCOL_V7 = 6, + HIVE_CLI_SERVICE_PROTOCOL_V8 = 7 }; }; @@ -51,7 +52,9 @@ struct TTypeId { NULL_TYPE = 16, DATE_TYPE = 17, VARCHAR_TYPE = 18, - CHAR_TYPE = 19 + CHAR_TYPE = 19, + INTERVAL_YEAR_MONTH_TYPE = 20, + INTERVAL_DAY_TIME_TYPE = 21 }; }; @@ -1946,8 +1949,8 @@ class TOpenSessionReq { static const char* ascii_fingerprint; // = "C8FD0F306A16C16BDA7B57F58BFAE5B2"; static const uint8_t binary_fingerprint[16]; // = {0xC8,0xFD,0x0F,0x30,0x6A,0x16,0xC1,0x6B,0xDA,0x7B,0x57,0xF5,0x8B,0xFA,0xE5,0xB2}; - TOpenSessionReq() : client_protocol((TProtocolVersion::type)6), username(), password() { - client_protocol = (TProtocolVersion::type)6; + TOpenSessionReq() : client_protocol((TProtocolVersion::type)7), username(), password() { + client_protocol = (TProtocolVersion::type)7; } @@ -2022,8 +2025,8 @@ class TOpenSessionResp { static const char* ascii_fingerprint; // = "CFE7D7F4E9EC671F2518ED74FEE9F163"; static const uint8_t binary_fingerprint[16]; // = {0xCF,0xE7,0xD7,0xF4,0xE9,0xEC,0x67,0x1F,0x25,0x18,0xED,0x74,0xFE,0xE9,0xF1,0x63}; - TOpenSessionResp() : serverProtocolVersion((TProtocolVersion::type)6) { - serverProtocolVersion = (TProtocolVersion::type)6; + TOpenSessionResp() : serverProtocolVersion((TProtocolVersion::type)7) { + serverProtocolVersion = (TProtocolVersion::type)7; } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/service/ThriftHive.java b/service/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/service/ThriftHive.java index 745e6cc..1c44789 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/service/ThriftHive.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/service/ThriftHive.java @@ -3023,7 +3023,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, fetchN_result struc struct.success = new ArrayList(_list0.size); for (int _i1 = 0; _i1 < _list0.size; ++_i1) { - String _elem2; // required + String _elem2; // optional _elem2 = iprot.readString(); struct.success.add(_elem2); } @@ -3122,7 +3122,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, fetchN_result struct struct.success = new ArrayList(_list5.size); for (int _i6 = 0; _i6 < _list5.size; ++_i6) { - String _elem7; // required + String _elem7; // optional _elem7 = iprot.readString(); struct.success.add(_elem7); } @@ -3785,7 +3785,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, fetchAll_result str struct.success = new ArrayList(_list8.size); for (int _i9 = 0; _i9 < _list8.size; ++_i9) { - String _elem10; // required + String _elem10; // optional _elem10 = iprot.readString(); struct.success.add(_elem10); } @@ -3884,7 +3884,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, fetchAll_result stru struct.success = new ArrayList(_list13.size); for (int _i14 = 0; _i14 < _list13.size; ++_i14) { - String _elem15; // required + String _elem15; // optional _elem15 = iprot.readString(); struct.success.add(_elem15); } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TBinaryColumn.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TBinaryColumn.java index 1ac28a2..6b1b054 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TBinaryColumn.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TBinaryColumn.java @@ -451,7 +451,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TBinaryColumn struc struct.values = new ArrayList(_list110.size); for (int _i111 = 0; _i111 < _list110.size; ++_i111) { - ByteBuffer _elem112; // required + ByteBuffer _elem112; // optional _elem112 = iprot.readBinary(); struct.values.add(_elem112); } @@ -535,7 +535,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TBinaryColumn struct struct.values = new ArrayList(_list115.size); for (int _i116 = 0; _i116 < _list115.size; ++_i116) { - ByteBuffer _elem117; // required + ByteBuffer _elem117; // optional _elem117 = iprot.readBinary(); struct.values.add(_elem117); } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TBoolColumn.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TBoolColumn.java index b2bda35..efd571c 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TBoolColumn.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TBoolColumn.java @@ -449,7 +449,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TBoolColumn struct) struct.values = new ArrayList(_list54.size); for (int _i55 = 0; _i55 < _list54.size; ++_i55) { - boolean _elem56; // required + boolean _elem56; // optional _elem56 = iprot.readBool(); struct.values.add(_elem56); } @@ -533,7 +533,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TBoolColumn struct) struct.values = new ArrayList(_list59.size); for (int _i60 = 0; _i60 < _list59.size; ++_i60) { - boolean _elem61; // required + boolean _elem61; // optional _elem61 = iprot.readBool(); struct.values.add(_elem61); } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TByteColumn.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TByteColumn.java index defdec0..169bfde 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TByteColumn.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TByteColumn.java @@ -449,7 +449,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TByteColumn struct) struct.values = new ArrayList(_list62.size); for (int _i63 = 0; _i63 < _list62.size; ++_i63) { - byte _elem64; // required + byte _elem64; // optional _elem64 = iprot.readByte(); struct.values.add(_elem64); } @@ -533,7 +533,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TByteColumn struct) struct.values = new ArrayList(_list67.size); for (int _i68 = 0; _i68 < _list67.size; ++_i68) { - byte _elem69; // required + byte _elem69; // optional _elem69 = iprot.readByte(); struct.values.add(_elem69); } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TCLIServiceConstants.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TCLIServiceConstants.java index c290ed8..25a38b1 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TCLIServiceConstants.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TCLIServiceConstants.java @@ -50,6 +50,8 @@ PRIMITIVE_TYPES.add(org.apache.hive.service.cli.thrift.TTypeId.DATE_TYPE); PRIMITIVE_TYPES.add(org.apache.hive.service.cli.thrift.TTypeId.VARCHAR_TYPE); PRIMITIVE_TYPES.add(org.apache.hive.service.cli.thrift.TTypeId.CHAR_TYPE); + PRIMITIVE_TYPES.add(org.apache.hive.service.cli.thrift.TTypeId.INTERVAL_YEAR_MONTH_TYPE); + PRIMITIVE_TYPES.add(org.apache.hive.service.cli.thrift.TTypeId.INTERVAL_DAY_TIME_TYPE); } public static final Set COMPLEX_TYPES = new HashSet(); @@ -88,6 +90,8 @@ TYPE_NAMES.put(org.apache.hive.service.cli.thrift.TTypeId.DATE_TYPE, "DATE"); TYPE_NAMES.put(org.apache.hive.service.cli.thrift.TTypeId.VARCHAR_TYPE, "VARCHAR"); TYPE_NAMES.put(org.apache.hive.service.cli.thrift.TTypeId.CHAR_TYPE, "CHAR"); + TYPE_NAMES.put(org.apache.hive.service.cli.thrift.TTypeId.INTERVAL_YEAR_MONTH_TYPE, "INTERVAL_YEAR_MONTH"); + TYPE_NAMES.put(org.apache.hive.service.cli.thrift.TTypeId.INTERVAL_DAY_TIME_TYPE, "INTERVAL_DAY_TIME"); } public static final String CHARACTER_MAXIMUM_LENGTH = "characterMaximumLength"; diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TDoubleColumn.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TDoubleColumn.java index 88926c8..4fc5454 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TDoubleColumn.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TDoubleColumn.java @@ -449,7 +449,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TDoubleColumn struc struct.values = new ArrayList(_list94.size); for (int _i95 = 0; _i95 < _list94.size; ++_i95) { - double _elem96; // required + double _elem96; // optional _elem96 = iprot.readDouble(); struct.values.add(_elem96); } @@ -533,7 +533,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TDoubleColumn struct struct.values = new ArrayList(_list99.size); for (int _i100 = 0; _i100 < _list99.size; ++_i100) { - double _elem101; // required + double _elem101; // optional _elem101 = iprot.readDouble(); struct.values.add(_elem101); } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TGetTablesReq.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TGetTablesReq.java index d0c3059..c973fcc 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TGetTablesReq.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TGetTablesReq.java @@ -715,7 +715,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TGetTablesReq struc struct.tableTypes = new ArrayList(_list172.size); for (int _i173 = 0; _i173 < _list172.size; ++_i173) { - String _elem174; // required + String _elem174; // optional _elem174 = iprot.readString(); struct.tableTypes.add(_elem174); } @@ -856,7 +856,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TGetTablesReq struct struct.tableTypes = new ArrayList(_list177.size); for (int _i178 = 0; _i178 < _list177.size; ++_i178) { - String _elem179; // required + String _elem179; // optional _elem179 = iprot.readString(); struct.tableTypes.add(_elem179); } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TI16Column.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TI16Column.java index e997bd9..c836630 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TI16Column.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TI16Column.java @@ -449,7 +449,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TI16Column struct) struct.values = new ArrayList(_list70.size); for (int _i71 = 0; _i71 < _list70.size; ++_i71) { - short _elem72; // required + short _elem72; // optional _elem72 = iprot.readI16(); struct.values.add(_elem72); } @@ -533,7 +533,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TI16Column struct) t struct.values = new ArrayList(_list75.size); for (int _i76 = 0; _i76 < _list75.size; ++_i76) { - short _elem77; // required + short _elem77; // optional _elem77 = iprot.readI16(); struct.values.add(_elem77); } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TI32Column.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TI32Column.java index 3cdd2a5..6c6c5f3 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TI32Column.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TI32Column.java @@ -449,7 +449,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TI32Column struct) struct.values = new ArrayList(_list78.size); for (int _i79 = 0; _i79 < _list78.size; ++_i79) { - int _elem80; // required + int _elem80; // optional _elem80 = iprot.readI32(); struct.values.add(_elem80); } @@ -533,7 +533,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TI32Column struct) t struct.values = new ArrayList(_list83.size); for (int _i84 = 0; _i84 < _list83.size; ++_i84) { - int _elem85; // required + int _elem85; // optional _elem85 = iprot.readI32(); struct.values.add(_elem85); } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TI64Column.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TI64Column.java index c8fc41f..cc383ed 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TI64Column.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TI64Column.java @@ -449,7 +449,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TI64Column struct) struct.values = new ArrayList(_list86.size); for (int _i87 = 0; _i87 < _list86.size; ++_i87) { - long _elem88; // required + long _elem88; // optional _elem88 = iprot.readI64(); struct.values.add(_elem88); } @@ -533,7 +533,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TI64Column struct) t struct.values = new ArrayList(_list91.size); for (int _i92 = 0; _i92 < _list91.size; ++_i92) { - long _elem93; // required + long _elem93; // optional _elem93 = iprot.readI64(); struct.values.add(_elem93); } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TOpenSessionReq.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TOpenSessionReq.java index 6aa7c43..c048161 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TOpenSessionReq.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TOpenSessionReq.java @@ -141,7 +141,7 @@ public String getFieldName() { } public TOpenSessionReq() { - this.client_protocol = org.apache.hive.service.cli.thrift.TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V7; + this.client_protocol = org.apache.hive.service.cli.thrift.TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8; } @@ -188,7 +188,7 @@ public TOpenSessionReq deepCopy() { @Override public void clear() { - this.client_protocol = org.apache.hive.service.cli.thrift.TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V7; + this.client_protocol = org.apache.hive.service.cli.thrift.TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8; this.username = null; this.password = null; diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TOpenSessionResp.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TOpenSessionResp.java index 28706be..351f78b 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TOpenSessionResp.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TOpenSessionResp.java @@ -141,7 +141,7 @@ public String getFieldName() { } public TOpenSessionResp() { - this.serverProtocolVersion = org.apache.hive.service.cli.thrift.TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V7; + this.serverProtocolVersion = org.apache.hive.service.cli.thrift.TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8; } @@ -191,7 +191,7 @@ public TOpenSessionResp deepCopy() { @Override public void clear() { this.status = null; - this.serverProtocolVersion = org.apache.hive.service.cli.thrift.TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V7; + this.serverProtocolVersion = org.apache.hive.service.cli.thrift.TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V8; this.sessionHandle = null; this.configuration = null; diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TProtocolVersion.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TProtocolVersion.java index ad54ff3..a4279d2 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TProtocolVersion.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TProtocolVersion.java @@ -18,7 +18,8 @@ HIVE_CLI_SERVICE_PROTOCOL_V4(3), HIVE_CLI_SERVICE_PROTOCOL_V5(4), HIVE_CLI_SERVICE_PROTOCOL_V6(5), - HIVE_CLI_SERVICE_PROTOCOL_V7(6); + HIVE_CLI_SERVICE_PROTOCOL_V7(6), + HIVE_CLI_SERVICE_PROTOCOL_V8(7); private final int value; @@ -53,6 +54,8 @@ public static TProtocolVersion findByValue(int value) { return HIVE_CLI_SERVICE_PROTOCOL_V6; case 6: return HIVE_CLI_SERVICE_PROTOCOL_V7; + case 7: + return HIVE_CLI_SERVICE_PROTOCOL_V8; default: return null; } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TRow.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TRow.java index 8e58aa5..a44cfb0 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TRow.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TRow.java @@ -354,7 +354,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TRow struct) throws struct.colVals = new ArrayList(_list46.size); for (int _i47 = 0; _i47 < _list46.size; ++_i47) { - TColumnValue _elem48; // required + TColumnValue _elem48; // optional _elem48 = new TColumnValue(); _elem48.read(iprot); struct.colVals.add(_elem48); @@ -425,7 +425,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TRow struct) throws struct.colVals = new ArrayList(_list51.size); for (int _i52 = 0; _i52 < _list51.size; ++_i52) { - TColumnValue _elem53; // required + TColumnValue _elem53; // optional _elem53 = new TColumnValue(); _elem53.read(iprot); struct.colVals.add(_elem53); diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TRowSet.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TRowSet.java index 4bb5749..d16c8a4 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TRowSet.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TRowSet.java @@ -549,7 +549,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TRowSet struct) thr struct.rows = new ArrayList(_list118.size); for (int _i119 = 0; _i119 < _list118.size; ++_i119) { - TRow _elem120; // required + TRow _elem120; // optional _elem120 = new TRow(); _elem120.read(iprot); struct.rows.add(_elem120); @@ -568,7 +568,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TRowSet struct) thr struct.columns = new ArrayList(_list121.size); for (int _i122 = 0; _i122 < _list121.size; ++_i122) { - TColumn _elem123; // required + TColumn _elem123; // optional _elem123 = new TColumn(); _elem123.read(iprot); struct.columns.add(_elem123); @@ -673,7 +673,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TRowSet struct) thro struct.rows = new ArrayList(_list128.size); for (int _i129 = 0; _i129 < _list128.size; ++_i129) { - TRow _elem130; // required + TRow _elem130; // optional _elem130 = new TRow(); _elem130.read(iprot); struct.rows.add(_elem130); @@ -687,7 +687,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TRowSet struct) thro struct.columns = new ArrayList(_list131.size); for (int _i132 = 0; _i132 < _list131.size; ++_i132) { - TColumn _elem133; // required + TColumn _elem133; // optional _elem133 = new TColumn(); _elem133.read(iprot); struct.columns.add(_elem133); diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TStatus.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TStatus.java index cb5010f..24a746e 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TStatus.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TStatus.java @@ -698,7 +698,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TStatus struct) thr struct.infoMessages = new ArrayList(_list134.size); for (int _i135 = 0; _i135 < _list134.size; ++_i135) { - String _elem136; // required + String _elem136; // optional _elem136 = iprot.readString(); struct.infoMessages.add(_elem136); } @@ -848,7 +848,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TStatus struct) thro struct.infoMessages = new ArrayList(_list139.size); for (int _i140 = 0; _i140 < _list139.size; ++_i140) { - String _elem141; // required + String _elem141; // optional _elem141 = iprot.readString(); struct.infoMessages.add(_elem141); } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TStringColumn.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TStringColumn.java index 5398056..3dae460 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TStringColumn.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TStringColumn.java @@ -449,7 +449,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TStringColumn struc struct.values = new ArrayList(_list102.size); for (int _i103 = 0; _i103 < _list102.size; ++_i103) { - String _elem104; // required + String _elem104; // optional _elem104 = iprot.readString(); struct.values.add(_elem104); } @@ -533,7 +533,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TStringColumn struct struct.values = new ArrayList(_list107.size); for (int _i108 = 0; _i108 < _list107.size; ++_i108) { - String _elem109; // required + String _elem109; // optional _elem109 = iprot.readString(); struct.values.add(_elem109); } diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TTableSchema.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TTableSchema.java index e2882c2..ff5e54d 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TTableSchema.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TTableSchema.java @@ -354,7 +354,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TTableSchema struct struct.columns = new ArrayList(_list38.size); for (int _i39 = 0; _i39 < _list38.size; ++_i39) { - TColumnDesc _elem40; // required + TColumnDesc _elem40; // optional _elem40 = new TColumnDesc(); _elem40.read(iprot); struct.columns.add(_elem40); @@ -425,7 +425,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TTableSchema struct) struct.columns = new ArrayList(_list43.size); for (int _i44 = 0; _i44 < _list43.size; ++_i44) { - TColumnDesc _elem45; // required + TColumnDesc _elem45; // optional _elem45 = new TColumnDesc(); _elem45.read(iprot); struct.columns.add(_elem45); diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TTypeDesc.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TTypeDesc.java index d6a6d23..251f86a 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TTypeDesc.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TTypeDesc.java @@ -354,7 +354,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, TTypeDesc struct) t struct.types = new ArrayList(_list30.size); for (int _i31 = 0; _i31 < _list30.size; ++_i31) { - TTypeEntry _elem32; // required + TTypeEntry _elem32; // optional _elem32 = new TTypeEntry(); _elem32.read(iprot); struct.types.add(_elem32); @@ -425,7 +425,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, TTypeDesc struct) th struct.types = new ArrayList(_list35.size); for (int _i36 = 0; _i36 < _list35.size; ++_i36) { - TTypeEntry _elem37; // required + TTypeEntry _elem37; // optional _elem37 = new TTypeEntry(); _elem37.read(iprot); struct.types.add(_elem37); diff --git a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TTypeId.java b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TTypeId.java index b857367..40f0589 100644 --- a/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TTypeId.java +++ b/service/src/gen/thrift/gen-javabean/org/apache/hive/service/cli/thrift/TTypeId.java @@ -31,7 +31,9 @@ NULL_TYPE(16), DATE_TYPE(17), VARCHAR_TYPE(18), - CHAR_TYPE(19); + CHAR_TYPE(19), + INTERVAL_YEAR_MONTH_TYPE(20), + INTERVAL_DAY_TIME_TYPE(21); private final int value; @@ -92,6 +94,10 @@ public static TTypeId findByValue(int value) { return VARCHAR_TYPE; case 19: return CHAR_TYPE; + case 20: + return INTERVAL_YEAR_MONTH_TYPE; + case 21: + return INTERVAL_DAY_TIME_TYPE; default: return null; } diff --git a/service/src/gen/thrift/gen-py/TCLIService/TCLIService-remote b/service/src/gen/thrift/gen-py/TCLIService/TCLIService-remote old mode 100644 new mode 100755 diff --git a/service/src/gen/thrift/gen-py/TCLIService/constants.py b/service/src/gen/thrift/gen-py/TCLIService/constants.py index 9b1e2f7..eafcb05 100644 --- a/service/src/gen/thrift/gen-py/TCLIService/constants.py +++ b/service/src/gen/thrift/gen-py/TCLIService/constants.py @@ -25,6 +25,8 @@ 17, 18, 19, + 20, + 21, ]) COMPLEX_TYPES = set([ 10, @@ -57,6 +59,8 @@ 17 : "DATE", 18 : "VARCHAR", 19 : "CHAR", + 20 : "INTERVAL_YEAR_MONTH", + 21 : "INTERVAL_DAY_TIME", } CHARACTER_MAXIMUM_LENGTH = "characterMaximumLength" PRECISION = "precision" diff --git a/service/src/gen/thrift/gen-py/TCLIService/ttypes.py b/service/src/gen/thrift/gen-py/TCLIService/ttypes.py index 0957c12..068727c 100644 --- a/service/src/gen/thrift/gen-py/TCLIService/ttypes.py +++ b/service/src/gen/thrift/gen-py/TCLIService/ttypes.py @@ -24,6 +24,7 @@ class TProtocolVersion: HIVE_CLI_SERVICE_PROTOCOL_V5 = 4 HIVE_CLI_SERVICE_PROTOCOL_V6 = 5 HIVE_CLI_SERVICE_PROTOCOL_V7 = 6 + HIVE_CLI_SERVICE_PROTOCOL_V8 = 7 _VALUES_TO_NAMES = { 0: "HIVE_CLI_SERVICE_PROTOCOL_V1", @@ -33,6 +34,7 @@ class TProtocolVersion: 4: "HIVE_CLI_SERVICE_PROTOCOL_V5", 5: "HIVE_CLI_SERVICE_PROTOCOL_V6", 6: "HIVE_CLI_SERVICE_PROTOCOL_V7", + 7: "HIVE_CLI_SERVICE_PROTOCOL_V8", } _NAMES_TO_VALUES = { @@ -43,6 +45,7 @@ class TProtocolVersion: "HIVE_CLI_SERVICE_PROTOCOL_V5": 4, "HIVE_CLI_SERVICE_PROTOCOL_V6": 5, "HIVE_CLI_SERVICE_PROTOCOL_V7": 6, + "HIVE_CLI_SERVICE_PROTOCOL_V8": 7, } class TTypeId: @@ -66,6 +69,8 @@ class TTypeId: DATE_TYPE = 17 VARCHAR_TYPE = 18 CHAR_TYPE = 19 + INTERVAL_YEAR_MONTH_TYPE = 20 + INTERVAL_DAY_TIME_TYPE = 21 _VALUES_TO_NAMES = { 0: "BOOLEAN_TYPE", @@ -88,6 +93,8 @@ class TTypeId: 17: "DATE_TYPE", 18: "VARCHAR_TYPE", 19: "CHAR_TYPE", + 20: "INTERVAL_YEAR_MONTH_TYPE", + 21: "INTERVAL_DAY_TIME_TYPE", } _NAMES_TO_VALUES = { @@ -111,6 +118,8 @@ class TTypeId: "DATE_TYPE": 17, "VARCHAR_TYPE": 18, "CHAR_TYPE": 19, + "INTERVAL_YEAR_MONTH_TYPE": 20, + "INTERVAL_DAY_TIME_TYPE": 21, } class TStatusCode: @@ -3245,7 +3254,7 @@ class TOpenSessionReq: thrift_spec = ( None, # 0 - (1, TType.I32, 'client_protocol', None, 6, ), # 1 + (1, TType.I32, 'client_protocol', None, 7, ), # 1 (2, TType.STRING, 'username', None, None, ), # 2 (3, TType.STRING, 'password', None, None, ), # 3 (4, TType.MAP, 'configuration', (TType.STRING,None,TType.STRING,None), None, ), # 4 @@ -3354,7 +3363,7 @@ class TOpenSessionResp: thrift_spec = ( None, # 0 (1, TType.STRUCT, 'status', (TStatus, TStatus.thrift_spec), None, ), # 1 - (2, TType.I32, 'serverProtocolVersion', None, 6, ), # 2 + (2, TType.I32, 'serverProtocolVersion', None, 7, ), # 2 (3, TType.STRUCT, 'sessionHandle', (TSessionHandle, TSessionHandle.thrift_spec), None, ), # 3 (4, TType.MAP, 'configuration', (TType.STRING,None,TType.STRING,None), None, ), # 4 ) diff --git a/service/src/gen/thrift/gen-py/hive_service/ThriftHive-remote b/service/src/gen/thrift/gen-py/hive_service/ThriftHive-remote old mode 100644 new mode 100755 diff --git a/service/src/gen/thrift/gen-rb/t_c_l_i_service_constants.rb b/service/src/gen/thrift/gen-rb/t_c_l_i_service_constants.rb index 1c9b91c..4b8ddae 100644 --- a/service/src/gen/thrift/gen-rb/t_c_l_i_service_constants.rb +++ b/service/src/gen/thrift/gen-rb/t_c_l_i_service_constants.rb @@ -23,6 +23,8 @@ PRIMITIVE_TYPES = Set.new([ 17, 18, 19, + 20, + 21, ]) COMPLEX_TYPES = Set.new([ @@ -58,6 +60,8 @@ TYPE_NAMES = { 17 => %q"DATE", 18 => %q"VARCHAR", 19 => %q"CHAR", + 20 => %q"INTERVAL_YEAR_MONTH", + 21 => %q"INTERVAL_DAY_TIME", } CHARACTER_MAXIMUM_LENGTH = %q"characterMaximumLength" diff --git a/service/src/gen/thrift/gen-rb/t_c_l_i_service_types.rb b/service/src/gen/thrift/gen-rb/t_c_l_i_service_types.rb index 220434e..b482533 100644 --- a/service/src/gen/thrift/gen-rb/t_c_l_i_service_types.rb +++ b/service/src/gen/thrift/gen-rb/t_c_l_i_service_types.rb @@ -14,8 +14,9 @@ module TProtocolVersion HIVE_CLI_SERVICE_PROTOCOL_V5 = 4 HIVE_CLI_SERVICE_PROTOCOL_V6 = 5 HIVE_CLI_SERVICE_PROTOCOL_V7 = 6 - VALUE_MAP = {0 => "HIVE_CLI_SERVICE_PROTOCOL_V1", 1 => "HIVE_CLI_SERVICE_PROTOCOL_V2", 2 => "HIVE_CLI_SERVICE_PROTOCOL_V3", 3 => "HIVE_CLI_SERVICE_PROTOCOL_V4", 4 => "HIVE_CLI_SERVICE_PROTOCOL_V5", 5 => "HIVE_CLI_SERVICE_PROTOCOL_V6", 6 => "HIVE_CLI_SERVICE_PROTOCOL_V7"} - VALID_VALUES = Set.new([HIVE_CLI_SERVICE_PROTOCOL_V1, HIVE_CLI_SERVICE_PROTOCOL_V2, HIVE_CLI_SERVICE_PROTOCOL_V3, HIVE_CLI_SERVICE_PROTOCOL_V4, HIVE_CLI_SERVICE_PROTOCOL_V5, HIVE_CLI_SERVICE_PROTOCOL_V6, HIVE_CLI_SERVICE_PROTOCOL_V7]).freeze + HIVE_CLI_SERVICE_PROTOCOL_V8 = 7 + VALUE_MAP = {0 => "HIVE_CLI_SERVICE_PROTOCOL_V1", 1 => "HIVE_CLI_SERVICE_PROTOCOL_V2", 2 => "HIVE_CLI_SERVICE_PROTOCOL_V3", 3 => "HIVE_CLI_SERVICE_PROTOCOL_V4", 4 => "HIVE_CLI_SERVICE_PROTOCOL_V5", 5 => "HIVE_CLI_SERVICE_PROTOCOL_V6", 6 => "HIVE_CLI_SERVICE_PROTOCOL_V7", 7 => "HIVE_CLI_SERVICE_PROTOCOL_V8"} + VALID_VALUES = Set.new([HIVE_CLI_SERVICE_PROTOCOL_V1, HIVE_CLI_SERVICE_PROTOCOL_V2, HIVE_CLI_SERVICE_PROTOCOL_V3, HIVE_CLI_SERVICE_PROTOCOL_V4, HIVE_CLI_SERVICE_PROTOCOL_V5, HIVE_CLI_SERVICE_PROTOCOL_V6, HIVE_CLI_SERVICE_PROTOCOL_V7, HIVE_CLI_SERVICE_PROTOCOL_V8]).freeze end module TTypeId @@ -39,8 +40,10 @@ module TTypeId DATE_TYPE = 17 VARCHAR_TYPE = 18 CHAR_TYPE = 19 - VALUE_MAP = {0 => "BOOLEAN_TYPE", 1 => "TINYINT_TYPE", 2 => "SMALLINT_TYPE", 3 => "INT_TYPE", 4 => "BIGINT_TYPE", 5 => "FLOAT_TYPE", 6 => "DOUBLE_TYPE", 7 => "STRING_TYPE", 8 => "TIMESTAMP_TYPE", 9 => "BINARY_TYPE", 10 => "ARRAY_TYPE", 11 => "MAP_TYPE", 12 => "STRUCT_TYPE", 13 => "UNION_TYPE", 14 => "USER_DEFINED_TYPE", 15 => "DECIMAL_TYPE", 16 => "NULL_TYPE", 17 => "DATE_TYPE", 18 => "VARCHAR_TYPE", 19 => "CHAR_TYPE"} - VALID_VALUES = Set.new([BOOLEAN_TYPE, TINYINT_TYPE, SMALLINT_TYPE, INT_TYPE, BIGINT_TYPE, FLOAT_TYPE, DOUBLE_TYPE, STRING_TYPE, TIMESTAMP_TYPE, BINARY_TYPE, ARRAY_TYPE, MAP_TYPE, STRUCT_TYPE, UNION_TYPE, USER_DEFINED_TYPE, DECIMAL_TYPE, NULL_TYPE, DATE_TYPE, VARCHAR_TYPE, CHAR_TYPE]).freeze + INTERVAL_YEAR_MONTH_TYPE = 20 + INTERVAL_DAY_TIME_TYPE = 21 + VALUE_MAP = {0 => "BOOLEAN_TYPE", 1 => "TINYINT_TYPE", 2 => "SMALLINT_TYPE", 3 => "INT_TYPE", 4 => "BIGINT_TYPE", 5 => "FLOAT_TYPE", 6 => "DOUBLE_TYPE", 7 => "STRING_TYPE", 8 => "TIMESTAMP_TYPE", 9 => "BINARY_TYPE", 10 => "ARRAY_TYPE", 11 => "MAP_TYPE", 12 => "STRUCT_TYPE", 13 => "UNION_TYPE", 14 => "USER_DEFINED_TYPE", 15 => "DECIMAL_TYPE", 16 => "NULL_TYPE", 17 => "DATE_TYPE", 18 => "VARCHAR_TYPE", 19 => "CHAR_TYPE", 20 => "INTERVAL_YEAR_MONTH_TYPE", 21 => "INTERVAL_DAY_TIME_TYPE"} + VALID_VALUES = Set.new([BOOLEAN_TYPE, TINYINT_TYPE, SMALLINT_TYPE, INT_TYPE, BIGINT_TYPE, FLOAT_TYPE, DOUBLE_TYPE, STRING_TYPE, TIMESTAMP_TYPE, BINARY_TYPE, ARRAY_TYPE, MAP_TYPE, STRUCT_TYPE, UNION_TYPE, USER_DEFINED_TYPE, DECIMAL_TYPE, NULL_TYPE, DATE_TYPE, VARCHAR_TYPE, CHAR_TYPE, INTERVAL_YEAR_MONTH_TYPE, INTERVAL_DAY_TIME_TYPE]).freeze end module TStatusCode @@ -947,7 +950,7 @@ class TOpenSessionReq CONFIGURATION = 4 FIELDS = { - CLIENT_PROTOCOL => {:type => ::Thrift::Types::I32, :name => 'client_protocol', :default => 6, :enum_class => ::TProtocolVersion}, + CLIENT_PROTOCOL => {:type => ::Thrift::Types::I32, :name => 'client_protocol', :default => 7, :enum_class => ::TProtocolVersion}, USERNAME => {:type => ::Thrift::Types::STRING, :name => 'username', :optional => true}, PASSWORD => {:type => ::Thrift::Types::STRING, :name => 'password', :optional => true}, CONFIGURATION => {:type => ::Thrift::Types::MAP, :name => 'configuration', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}, :optional => true} @@ -974,7 +977,7 @@ class TOpenSessionResp FIELDS = { STATUS => {:type => ::Thrift::Types::STRUCT, :name => 'status', :class => ::TStatus}, - SERVERPROTOCOLVERSION => {:type => ::Thrift::Types::I32, :name => 'serverProtocolVersion', :default => 6, :enum_class => ::TProtocolVersion}, + SERVERPROTOCOLVERSION => {:type => ::Thrift::Types::I32, :name => 'serverProtocolVersion', :default => 7, :enum_class => ::TProtocolVersion}, SESSIONHANDLE => {:type => ::Thrift::Types::STRUCT, :name => 'sessionHandle', :class => ::TSessionHandle, :optional => true}, CONFIGURATION => {:type => ::Thrift::Types::MAP, :name => 'configuration', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}, :optional => true} } diff --git a/service/src/java/org/apache/hive/service/cli/ColumnValue.java b/service/src/java/org/apache/hive/service/cli/ColumnValue.java index 9b48396..40144cf 100644 --- a/service/src/java/org/apache/hive/service/cli/ColumnValue.java +++ b/service/src/java/org/apache/hive/service/cli/ColumnValue.java @@ -24,6 +24,8 @@ import org.apache.hadoop.hive.common.type.HiveChar; import org.apache.hadoop.hive.common.type.HiveDecimal; +import org.apache.hadoop.hive.common.type.HiveIntervalDayTime; +import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth; import org.apache.hadoop.hive.common.type.HiveVarchar; import org.apache.hive.service.cli.thrift.TBoolValue; import org.apache.hive.service.cli.thrift.TByteValue; @@ -144,6 +146,22 @@ private static TColumnValue stringValue(HiveDecimal value) { return TColumnValue.stringVal(tStrValue); } + private static TColumnValue stringValue(HiveIntervalYearMonth value) { + TStringValue tStrValue = new TStringValue(); + if (value != null) { + tStrValue.setValue(value.toString()); + } + return TColumnValue.stringVal(tStrValue); + } + + private static TColumnValue stringValue(HiveIntervalDayTime value) { + TStringValue tStrValue = new TStringValue(); + if (value != null) { + tStrValue.setValue(value.toString()); + } + return TColumnValue.stringVal(tStrValue); + } + public static TColumnValue toTColumnValue(Type type, Object value) { switch (type) { case BOOLEAN_TYPE: @@ -170,6 +188,10 @@ public static TColumnValue toTColumnValue(Type type, Object value) { return dateValue((Date)value); case TIMESTAMP_TYPE: return timestampValue((Timestamp)value); + case INTERVAL_YEAR_MONTH_TYPE: + return stringValue((HiveIntervalYearMonth) value); + case INTERVAL_DAY_TIME_TYPE: + return stringValue((HiveIntervalDayTime) value); case DECIMAL_TYPE: return stringValue(((HiveDecimal)value)); case BINARY_TYPE: diff --git a/service/src/java/org/apache/hive/service/cli/Type.java b/service/src/java/org/apache/hive/service/cli/Type.java index 92d237d..a96d2ac 100644 --- a/service/src/java/org/apache/hive/service/cli/Type.java +++ b/service/src/java/org/apache/hive/service/cli/Type.java @@ -69,6 +69,12 @@ TIMESTAMP_TYPE("TIMESTAMP", java.sql.Types.TIMESTAMP, TTypeId.TIMESTAMP_TYPE), + INTERVAL_YEAR_MONTH_TYPE("INTERVAL_YEAR_MONTH", + java.sql.Types.OTHER, + TTypeId.INTERVAL_YEAR_MONTH_TYPE), + INTERVAL_DAY_TIME_TYPE("INTERVAL_DAY_TIME", + java.sql.Types.OTHER, + TTypeId.INTERVAL_DAY_TIME_TYPE), BINARY_TYPE("BINARY", java.sql.Types.BINARY, TTypeId.BINARY_TYPE),