[ 
https://issues.apache.org/jira/browse/HIVE-26577?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

xsys updated HIVE-26577:
------------------------
    Affects Version/s: 3.1.2

> Inconsistency between Hive documentation and actual behaviors: 
> TINYINT/SMALLINT/BIGINT lower bounds are not supported
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-26577
>                 URL: https://issues.apache.org/jira/browse/HIVE-26577
>             Project: Hive
>          Issue Type: Bug
>          Components: Parser
>    Affects Versions: 3.1.2
>            Reporter: xsys
>            Priority: Major
>
> h3. Describe the bug
> In Hive, we have a table where {{TINYINT}} is a part of its schema. We want 
> to insert the lower bound of TINYINT (-128Y) into the {{TINYINT}} column of 
> the table. We expect it to have the same behavior as the upper bound value 
> (127Y) that can be successfully inserted into the table. However, we 
> encountered the below exception:
> {code:java}
> FAILED: SemanticException [Error 10029]: Line 1:27 Invalid numerical constant 
> '128Y'{code}
> h3. Steps To Reproduce
> On [Hive 
> 3.1.2|https://archive.apache.org/dist/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz],
>  execute the following:
> {code:java}
> create table ws0(c1 TINYINT) ROW FORMAT SERDE 
> "org.apache.hadoop.hive.serde2.avro.AvroSerDe" STORED AS INPUTFORMAT 
> "org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat" OUTPUTFORMAT 
> "org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat" ;
> insert into ws0 values(-128Y);{code}
>  
> We encounter the following exception while inserting the lower bound of 
> TINYINT:
> {code:java}
> FAILED: SemanticException [Error 10029]: Line 1:27 Invalid numerical constant 
> '128Y'{code}
>  
> The upper bound value (127) is supported and we are able to insert 
> {{{}127Y{}}}. Additionally, we tried other ways to insert -128, which all 
> worked:
> {code:java}
> insert into ws0 values(-128);
> insert into ws0 values(cast (-128 as TINYINT));
> insert into ws0 values(cast ("-128" as TINYINT));{code}
> h3. Expected behavior
> The [Hive Data Types 
> documentation|https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27838462]
>  mentioned the lower bounds for TINYINT -128 / SMALLINT -32,768 / BIGINT 
> -9,223,372,036,854,775,808, which are expected to be successfully inserted 
> into tables:
>  * 
> [TINYINT|https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=82706456#LanguageManualTypes-tinyint]
>  (1-byte signed integer, from -128 to 127)
>  * 
> [SMALLINT|https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=82706456#LanguageManualTypes-smallint]
>  (2-byte signed integer, from -32,768 to 32,767)
>  * 
> [INT|https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=82706456#LanguageManualTypes-int]/INTEGER
>  (4-byte signed integer, from -2,147,483,648 to 2,147,483,647)\
>  * 
> [BIGINT|https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=82706456#LanguageManualTypes-bigint]
>  (8-byte signed integer, from -9,223,372,036,854,775,808 to 
> 9,223,372,036,854,775,807)
> *Additional context*
> The lower bounds of SMALLINT / BIGINT have the same exceptions, but INT works 
> fine.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to