[
https://issues.apache.org/jira/browse/HIVE-22233?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ganesha Shreedhara updated HIVE-22233:
--------------------------------------
Description:
Casting a column value to TINYINT is giving incorrect result when vectorized
mode of the reduce-side GROUP BY query execution is enabled by setting
hive.vectorized.execution.reduce.groupby.enabled parameter. This issue is only
when the sub query has SUM/COUNT aggregation operations in IF condition.
*Steps to reproduce:*
{code:java}
create table test(id int);
insert into test values (1);
SELECT CAST(col AS TINYINT) col_cast FROM ( SELECT IF(SUM(1) > 0, 1, 0) col
FROM test) x;
{code}
*Result:*
{code:java}
0{code}
*Expected result:*
{code:java}
1{code}
We get the expected result when
*hive.vectorized.execution.reduce.groupby.enabled* parameter is disabled.
We also get the expected result when we don't CAST or don't have SUM/COUNT
aggregation in IF condition.
The following queries give correct result when
hive.vectorized.execution.reduce.groupby.enabled is set.
{code:java}
SELECT CAST(col AS INT) col_cast FROM ( SELECT IF(SUM(1) > 0, 1, 0) col FROM
test) x;
SELECT col FROM ( SELECT IF(SUM(1) > 0, 1, 0) col FROM test) x;
SELECT CAST(col AS TINYINT) col_cast FROM ( SELECT IF(2 > 1, 1, 0) col FROM
test) x;
SELECT CAST(col AS TINYINT) col_cast FROM ( SELECT IF(true, 1, 0) col FROM
test) x;
{code}
This issue is only when we use *CAST(col AS TINYINT)* along with *IF(SUM(1) >
0, 1, 0)* or *IF(COUNT(1) > 0, 1, 0)* in sub query.
was:
Casting a column value to TINYINT is giving incorrect result when vectorized
execution is enabled. This is only when the sub query as SUM/COUNT aggregation
operations in IF condition.
*Steps to reproduce:*
{code:java}
create table test(id int);
insert into test values (1);
SELECT CAST(col AS TINYINT) col_cast FROM ( SELECT IF(SUM(1) > 0, 1, 0) col
FROM test) x;
{code}
*Result:*
{code:java}
0{code}
*Expected result:*
{code:java}
1{code}
We get the expected result when hive.vectorized.execution.enabled is disabled.
We also get the expected result when we don't CAST or don't have SUM/COUNT
aggregation in IF condition.
The following queries give correct result when vectorized execution is enabled.
{code:java}
SELECT CAST(col AS INT) col_cast FROM ( SELECT IF(SUM(1) > 0, 1, 0) col FROM
test) x;
SELECT col FROM ( SELECT IF(SUM(1) > 0, 1, 0) col FROM test) x;
SELECT CAST(col AS TINYINT) col_cast FROM ( SELECT IF(2 > 1, 1, 0) col FROM
test) x;
SELECT CAST(col AS TINYINT) col_cast FROM ( SELECT IF(true, 1, 0) col FROM
test) x;
{code}
This issue is only when we use *CAST(col AS TINYINT)* along with *IF(SUM(1) >
0, 1, 0)* or *IF(COUNT(1) > 0, 1, 0)* in sub query.
> Wrong result with vectorized execution when column value is casted to TINYINT
> -----------------------------------------------------------------------------
>
> Key: HIVE-22233
> URL: https://issues.apache.org/jira/browse/HIVE-22233
> Project: Hive
> Issue Type: Bug
> Components: Vectorization
> Affects Versions: 3.1.1, 2.3.4, 2.3.6
> Reporter: Ganesha Shreedhara
> Priority: Major
>
> Casting a column value to TINYINT is giving incorrect result when vectorized
> mode of the reduce-side GROUP BY query execution is enabled by setting
> hive.vectorized.execution.reduce.groupby.enabled parameter. This issue is
> only when the sub query has SUM/COUNT aggregation operations in IF condition.
>
>
> *Steps to reproduce:*
> {code:java}
> create table test(id int);
> insert into test values (1);
> SELECT CAST(col AS TINYINT) col_cast FROM ( SELECT IF(SUM(1) > 0, 1, 0) col
> FROM test) x;
> {code}
>
> *Result:*
> {code:java}
> 0{code}
> *Expected result:*
> {code:java}
> 1{code}
>
> We get the expected result when
> *hive.vectorized.execution.reduce.groupby.enabled* parameter is disabled.
> We also get the expected result when we don't CAST or don't have SUM/COUNT
> aggregation in IF condition.
> The following queries give correct result when
> hive.vectorized.execution.reduce.groupby.enabled is set.
> {code:java}
> SELECT CAST(col AS INT) col_cast FROM ( SELECT IF(SUM(1) > 0, 1, 0) col FROM
> test) x;
> SELECT col FROM ( SELECT IF(SUM(1) > 0, 1, 0) col FROM test) x;
> SELECT CAST(col AS TINYINT) col_cast FROM ( SELECT IF(2 > 1, 1, 0) col FROM
> test) x;
> SELECT CAST(col AS TINYINT) col_cast FROM ( SELECT IF(true, 1, 0) col FROM
> test) x;
> {code}
>
> This issue is only when we use *CAST(col AS TINYINT)* along with *IF(SUM(1) >
> 0, 1, 0)* or *IF(COUNT(1) > 0, 1, 0)* in sub query.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)