[ 
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)

Reply via email to