hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aihua Xu (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HIVE-11880) filter bug of UNION ALL when hive.ppd.remove.duplicatefilters=true and filter condition is type incompatible column
Date Wed, 30 Mar 2016 21:08:26 GMT

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

Aihua Xu updated HIVE-11880:
----------------------------
    Description: 
   For UNION ALL , when an union operator is constant column (such as '0L', BIGINT Type) 
and its corresponding column has incompatible type (such as INT type). 
  Query with filter condition on type incompatible column on this UNION ALL  will cause IndexOutOfBoundsException.

 Such as TPC-H table "orders",in  the following query:
 Type of 'orders'.'o_custkey' is INT normally,  while  the type of corresponding constant
column  "0" is BIGINT( `0L AS `o_custkey` ). 
 This following query (with filter "type incompatible column 'o_custkey' ")  will fail  with
 java.lang.IndexOutOfBoundsException : 

{code}
set hive.cbo.enable=false;
set hive.ppd.remove.duplicatefilters=true;
CREATE TABLE `orders`(
  `o_orderkey` int, 
  `o_custkey` int, 
  `o_orderstatus` string, 
  `o_totalprice` double, 
  `o_orderdate` string, 
  `o_orderpriority` string, 
  `o_clerk` string, 
  `o_shippriority` int, 
  `o_comment` string);

SELECT o_orderkey
FROM   (
              SELECT `o_orderkey` ,
                     `o_custkey`
              FROM   `orders`
              UNION ALL
              SELECT `o_orderkey`,
                     0L  AS `o_custkey`
              FROM   `orders`) `oo`
WHERE  o_custkey<10;
{code}

  was:
   For UNION ALL , when an union operator is constant column (such as '0L', BIGINT Type) 
and its corresponding column has incompatible type (such as INT type). 
  Query with filter condition on type incompatible column on this UNION ALL  will cause IndexOutOfBoundsException.

 Such as TPC-H table "orders",in  the following query:
 Type of 'orders'.'o_custkey' is INT normally,  while  the type of corresponding constant
column  "0" is BIGINT( `0L AS `o_custkey` ). 
 This query (with filter "type incompatible column 'o_custkey' ")  will fail  with  java.lang.IndexOutOfBoundsException
: 
{code}
SELECT Count(1)
FROM   (
              SELECT `o_orderkey` ,
                     `o_custkey`
              FROM   `orders`
              UNION ALL
              SELECT `o_orderkey`,
                     0L  AS `o_custkey`
              FROM   `orders`) `oo`
WHERE  o_custkey<100000 limit 4 ;
{code}
When 
{code}
set hive.ppd.remove.duplicatefilters=true
{code}


> filter bug  of UNION ALL when hive.ppd.remove.duplicatefilters=true and filter condition
is type incompatible column 
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-11880
>                 URL: https://issues.apache.org/jira/browse/HIVE-11880
>             Project: Hive
>          Issue Type: Bug
>          Components: Logical Optimizer
>    Affects Versions: 1.2.1
>            Reporter: WangMeng
>            Assignee: WangMeng
>         Attachments: HIVE-11880.01.patch, HIVE-11880.02.patch, HIVE-11880.03.patch, HIVE-11880.04.patch
>
>
>    For UNION ALL , when an union operator is constant column (such as '0L', BIGINT Type)
 and its corresponding column has incompatible type (such as INT type). 
>   Query with filter condition on type incompatible column on this UNION ALL  will cause
IndexOutOfBoundsException.
>  Such as TPC-H table "orders",in  the following query:
>  Type of 'orders'.'o_custkey' is INT normally,  while  the type of corresponding constant
column  "0" is BIGINT( `0L AS `o_custkey` ). 
>  This following query (with filter "type incompatible column 'o_custkey' ")  will fail
 with  java.lang.IndexOutOfBoundsException : 
> {code}
> set hive.cbo.enable=false;
> set hive.ppd.remove.duplicatefilters=true;
> CREATE TABLE `orders`(
>   `o_orderkey` int, 
>   `o_custkey` int, 
>   `o_orderstatus` string, 
>   `o_totalprice` double, 
>   `o_orderdate` string, 
>   `o_orderpriority` string, 
>   `o_clerk` string, 
>   `o_shippriority` int, 
>   `o_comment` string);
> SELECT o_orderkey
> FROM   (
>               SELECT `o_orderkey` ,
>                      `o_custkey`
>               FROM   `orders`
>               UNION ALL
>               SELECT `o_orderkey`,
>                      0L  AS `o_custkey`
>               FROM   `orders`) `oo`
> WHERE  o_custkey<10;
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message