[ https://issues.apache.org/jira/browse/HIVE-18393?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sahil Takiar updated HIVE-18393: -------------------------------- Description: TimeStamp, Decimal, Double, Float, BigInt, Int, SmallInt, Tinyint and Boolean when read as String, Varchar or Char should return the correct data. Now this results in error for parquet tables. Test Case: {code} drop table if exists testAltCol; create table testAltCol (cId TINYINT, cTimeStamp TIMESTAMP, cDecimal DECIMAL(38,18), cDouble DOUBLE, cFloat FLOAT, cBigInt BIGINT, cInt INT, cSmallInt SMALLINT, cTinyint TINYINT, cBoolean BOOLEAN); insert into testAltCol values (1, '2017-11-07 09:02:49.999999999', 12345678901234567890.123456789012345678, 1.79e308, 3.4e38, 1234567890123456789, 1234567890, 12345, 123, TRUE); insert into testAltCol values (2, '1400-01-01 01:01:01.000000001', 1.1, 2.2, 3.3, 1, 2, 3, 4, FALSE); insert into testAltCol values (3, '1400-01-01 01:01:01.000000001', 10.1, 20.2, 30.3, 1234567890123456789, 1234567890, 12345, 123, TRUE); select cId, cTimeStamp from testAltCol order by cId; select cId, cDecimal, cDouble, cFloat from testAltCol order by cId; select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltCol order by cId; select cId, cBoolean from testAltCol order by cId; drop table if exists testAltColP; create table testAltColP stored as parquet as select * from testAltCol; select cId, cTimeStamp from testAltColP order by cId; select cId, cDecimal, cDouble, cFloat from testAltColP order by cId; select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId; select cId, cBoolean from testAltColP order by cId; alter table testAltColP replace columns (cId TINYINT, cTimeStamp STRING, cDecimal STRING, cDouble STRING, cFloat STRING, cBigInt STRING, cInt STRING, cSmallInt STRING, cTinyint STRING, cBoolean STRING); select cId, cTimeStamp from testAltColP order by cId; select cId, cDecimal, cDouble, cFloat from testAltColP order by cId; select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId; select cId, cBoolean from testAltColP order by cId; alter table testAltColP replace columns (cId TINYINT, cTimeStamp VARCHAR(100), cDecimal VARCHAR(100), cDouble VARCHAR(100), cFloat VARCHAR(100), cBigInt VARCHAR(100), cInt VARCHAR(100), cSmallInt VARCHAR(100), cTinyint VARCHAR(100), cBoolean VARCHAR(100)); select cId, cTimeStamp from testAltColP order by cId; select cId, cDecimal, cDouble, cFloat from testAltColP order by cId; select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId; select cId, cBoolean from testAltColP order by cId; alter table testAltColP replace columns (cId TINYINT, cTimeStamp CHAR(100), cDecimal CHAR(100), cDouble CHAR(100), cFloat CHAR(100), cBigInt CHAR(100), cInt CHAR(100), cSmallInt CHAR(100), cTinyint CHAR(100), cBoolean CHAR(100)); select cId, cTimeStamp from testAltColP order by cId; select cId, cDecimal, cDouble, cFloat from testAltColP order by cId; select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId; select cId, cBoolean from testAltColP order by cId; drop table if exists testAltColP; Error: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask Excerpt for log: 2018-01-05T15:54:05,756 ERROR [LocalJobRunner Map Task Executor #0] mr.ExecMapper: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row [Error getting row data with exception java.lang.UnsupportedOperationException: Cannot inspect org.apache.hadoop.hive.serde2.io.TimestampWritable at org.apache.hadoop.hive.ql.io.parquet.serde.primitive.ParquetStringInspector.getPrimitiveJavaObject(ParquetStringInspector.java:77) {code} was: TimeStamp, Decimal, Double, Float, BigInt, Int, SmallInt, Tinyint and Boolean when read as String, Varchar or Char should return the correct data. Now this results in error for parquet tables. Test Case: drop table if exists testAltCol; create table testAltCol (cId TINYINT, cTimeStamp TIMESTAMP, cDecimal DECIMAL(38,18), cDouble DOUBLE, cFloat FLOAT, cBigInt BIGINT, cInt INT, cSmallInt SMALLINT, cTinyint TINYINT, cBoolean BOOLEAN); insert into testAltCol values (1, '2017-11-07 09:02:49.999999999', 12345678901234567890.123456789012345678, 1.79e308, 3.4e38, 1234567890123456789, 1234567890, 12345, 123, TRUE); insert into testAltCol values (2, '1400-01-01 01:01:01.000000001', 1.1, 2.2, 3.3, 1, 2, 3, 4, FALSE); insert into testAltCol values (3, '1400-01-01 01:01:01.000000001', 10.1, 20.2, 30.3, 1234567890123456789, 1234567890, 12345, 123, TRUE); select cId, cTimeStamp from testAltCol order by cId; select cId, cDecimal, cDouble, cFloat from testAltCol order by cId; select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltCol order by cId; select cId, cBoolean from testAltCol order by cId; drop table if exists testAltColP; create table testAltColP stored as parquet as select * from testAltCol; select cId, cTimeStamp from testAltColP order by cId; select cId, cDecimal, cDouble, cFloat from testAltColP order by cId; select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId; select cId, cBoolean from testAltColP order by cId; alter table testAltColP replace columns (cId TINYINT, cTimeStamp STRING, cDecimal STRING, cDouble STRING, cFloat STRING, cBigInt STRING, cInt STRING, cSmallInt STRING, cTinyint STRING, cBoolean STRING); select cId, cTimeStamp from testAltColP order by cId; select cId, cDecimal, cDouble, cFloat from testAltColP order by cId; select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId; select cId, cBoolean from testAltColP order by cId; alter table testAltColP replace columns (cId TINYINT, cTimeStamp VARCHAR(100), cDecimal VARCHAR(100), cDouble VARCHAR(100), cFloat VARCHAR(100), cBigInt VARCHAR(100), cInt VARCHAR(100), cSmallInt VARCHAR(100), cTinyint VARCHAR(100), cBoolean VARCHAR(100)); select cId, cTimeStamp from testAltColP order by cId; select cId, cDecimal, cDouble, cFloat from testAltColP order by cId; select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId; select cId, cBoolean from testAltColP order by cId; alter table testAltColP replace columns (cId TINYINT, cTimeStamp CHAR(100), cDecimal CHAR(100), cDouble CHAR(100), cFloat CHAR(100), cBigInt CHAR(100), cInt CHAR(100), cSmallInt CHAR(100), cTinyint CHAR(100), cBoolean CHAR(100)); select cId, cTimeStamp from testAltColP order by cId; select cId, cDecimal, cDouble, cFloat from testAltColP order by cId; select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId; select cId, cBoolean from testAltColP order by cId; drop table if exists testAltColP; Error: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask Excerpt for log: 2018-01-05T15:54:05,756 ERROR [LocalJobRunner Map Task Executor #0] mr.ExecMapper: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row [Error getting row data with exception java.lang.UnsupportedOperationException: Cannot inspect org.apache.hadoop.hive.serde2.io.TimestampWritable at org.apache.hadoop.hive.ql.io.parquet.serde.primitive.ParquetStringInspector.getPrimitiveJavaObject(ParquetStringInspector.java:77) > Error returned when some other type is read as string from parquet tables > ------------------------------------------------------------------------- > > Key: HIVE-18393 > URL: https://issues.apache.org/jira/browse/HIVE-18393 > Project: Hive > Issue Type: Bug > Reporter: Janaki Lahorani > Assignee: Janaki Lahorani > Priority: Major > Fix For: 3.0.0 > > Attachments: HIVE-18393.1.patch, HIVE-18393.1.patch, > HIVE-18393.2.patch, HIVE-18393.3.patch > > > TimeStamp, Decimal, Double, Float, BigInt, Int, SmallInt, Tinyint and Boolean > when read as String, Varchar or Char should return the correct data. Now > this results in error for parquet tables. > Test Case: > {code} > drop table if exists testAltCol; > create table testAltCol > (cId TINYINT, > cTimeStamp TIMESTAMP, > cDecimal DECIMAL(38,18), > cDouble DOUBLE, > cFloat FLOAT, > cBigInt BIGINT, > cInt INT, > cSmallInt SMALLINT, > cTinyint TINYINT, > cBoolean BOOLEAN); > insert into testAltCol values > (1, > '2017-11-07 09:02:49.999999999', > 12345678901234567890.123456789012345678, > 1.79e308, > 3.4e38, > 1234567890123456789, > 1234567890, > 12345, > 123, > TRUE); > insert into testAltCol values > (2, > '1400-01-01 01:01:01.000000001', > 1.1, > 2.2, > 3.3, > 1, > 2, > 3, > 4, > FALSE); > insert into testAltCol values > (3, > '1400-01-01 01:01:01.000000001', > 10.1, > 20.2, > 30.3, > 1234567890123456789, > 1234567890, > 12345, > 123, > TRUE); > select cId, cTimeStamp from testAltCol order by cId; > select cId, cDecimal, cDouble, cFloat from testAltCol order by cId; > select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltCol order by cId; > select cId, cBoolean from testAltCol order by cId; > drop table if exists testAltColP; > create table testAltColP stored as parquet as select * from testAltCol; > select cId, cTimeStamp from testAltColP order by cId; > select cId, cDecimal, cDouble, cFloat from testAltColP order by cId; > select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId; > select cId, cBoolean from testAltColP order by cId; > alter table testAltColP replace columns > (cId TINYINT, > cTimeStamp STRING, > cDecimal STRING, > cDouble STRING, > cFloat STRING, > cBigInt STRING, > cInt STRING, > cSmallInt STRING, > cTinyint STRING, > cBoolean STRING); > select cId, cTimeStamp from testAltColP order by cId; > select cId, cDecimal, cDouble, cFloat from testAltColP order by cId; > select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId; > select cId, cBoolean from testAltColP order by cId; > alter table testAltColP replace columns > (cId TINYINT, > cTimeStamp VARCHAR(100), > cDecimal VARCHAR(100), > cDouble VARCHAR(100), > cFloat VARCHAR(100), > cBigInt VARCHAR(100), > cInt VARCHAR(100), > cSmallInt VARCHAR(100), > cTinyint VARCHAR(100), > cBoolean VARCHAR(100)); > select cId, cTimeStamp from testAltColP order by cId; > select cId, cDecimal, cDouble, cFloat from testAltColP order by cId; > select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId; > select cId, cBoolean from testAltColP order by cId; > alter table testAltColP replace columns > (cId TINYINT, > cTimeStamp CHAR(100), > cDecimal CHAR(100), > cDouble CHAR(100), > cFloat CHAR(100), > cBigInt CHAR(100), > cInt CHAR(100), > cSmallInt CHAR(100), > cTinyint CHAR(100), > cBoolean CHAR(100)); > select cId, cTimeStamp from testAltColP order by cId; > select cId, cDecimal, cDouble, cFloat from testAltColP order by cId; > select cId, cBigInt, cInt, cSmallInt, cTinyint from testAltColP order by cId; > select cId, cBoolean from testAltColP order by cId; > drop table if exists testAltColP; > Error: > FAILED: Execution Error, return code 2 from > org.apache.hadoop.hive.ql.exec.mr.MapRedTask > Excerpt for log: > 2018-01-05T15:54:05,756 ERROR [LocalJobRunner Map Task Executor #0] > mr.ExecMapper: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime > Error while processing row [Error getting row data with exception > java.lang.UnsupportedOperationException: Cannot inspect > org.apache.hadoop.hive.serde2.io.TimestampWritable > at > org.apache.hadoop.hive.ql.io.parquet.serde.primitive.ParquetStringInspector.getPrimitiveJavaObject(ParquetStringInspector.java:77) > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)