[
https://issues.apache.org/jira/browse/HIVE-9645?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14321152#comment-14321152
]
Gopal V commented on HIVE-9645:
-------------------------------
The type changes based on the WHERE clause, which is strange.
{code}
SELECT cfloat, cbigint, coalesce(cfloat, cbigint, 0)
FROM alltypesorc
{code}
is <float, long, float>
vs <void, void, int>
{code}
SELECT cfloat, cbigint, coalesce(cfloat, cbigint, 0)
FROM alltypesorc
WHERE (cfloat IS NULL AND cbigint IS NULL) LIMIT 10;
{code}
depending on the optimizer replacing NULL params.
> Constant folding case NULL equality
> -----------------------------------
>
> Key: HIVE-9645
> URL: https://issues.apache.org/jira/browse/HIVE-9645
> Project: Hive
> Issue Type: Bug
> Components: Logical Optimizer
> Affects Versions: 1.2.0
> Reporter: Gopal V
> Assignee: Ashutosh Chauhan
> Attachments: HIVE-9645.1.patch, HIVE-9645.2.patch, HIVE-9645.patch
>
>
> Hive logical optimizer does not follow the Null scan codepath when
> encountering a NULL = 1;
> NULL = 1 is not evaluated as false in the constant propogation implementation.
> {code}
> hive> explain select count(1) from store_sales where null=1;
> ...
> TableScan
> alias: store_sales
> filterExpr: (null = 1) (type: boolean)
> Statistics: Num rows: 550076554 Data size: 49570324480
> Basic stats: COMPLETE Column stats: COMPLETE
> Filter Operator
> predicate: (null = 1) (type: boolean)
> Statistics: Num rows: 275038277 Data size: 0 Basic stats:
> PARTIAL Column stats: COMPLETE
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)