[
https://issues.apache.org/jira/browse/HIVE-9278?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14268662#comment-14268662
]
Navis commented on HIVE-9278:
-----------------------------
[~ashutoshc] In caching, identity was checked by comparing toString(). But for
UDFs (not GenericUDF), these return always same class name
(org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge) making them shared
between different expressions. In the testcase, "length(key)" and
"reverse(key)" are both UDFs, resulting length(key)=reverse(key) always. Now
it's checked correctly with ExprNodeDesc itself (with isSame() method).
> Cached expression feature broken in one case
> --------------------------------------------
>
> Key: HIVE-9278
> URL: https://issues.apache.org/jira/browse/HIVE-9278
> Project: Hive
> Issue Type: Bug
> Affects Versions: 0.14.0
> Reporter: Matt McCline
> Assignee: Navis
> Priority: Critical
> Attachments: HIVE-9278.1.patch.txt
>
>
> Different query result depending on whether hive.cache.expr.evaluation is
> true or false. When true, no query results are produced (this is wrong).
> The q file:
> {noformat}
> set hive.cache.expr.evaluation=true;
> CREATE TABLE cache_expr_repro (date_str STRING);
> LOAD DATA LOCAL INPATH '../../data/files/cache_expr_repro.txt' INTO TABLE
> cache_expr_repro;
> SELECT MONTH(date_str) AS `mon`, CAST((MONTH(date_str) - 1) / 3 + 1 AS int)
> AS `quarter`, YEAR(date_str) AS `year` FROM cache_expr_repro WHERE
> ((CAST((MONTH(date_str) - 1) / 3 + 1 AS int) = 1) AND (YEAR(date_str) =
> 2015)) GROUP BY MONTH(date_str), CAST((MONTH(date_str) - 1) / 3 + 1 AS int),
> YEAR(date_str) ;
> {noformat}
> cache_expr_repro.txt
> {noformat}
> 2015-01-01 00:00:00
> 2015-02-01 00:00:00
> 2015-01-01 00:00:00
> 2015-02-01 00:00:00
> 2015-01-01 00:00:00
> 2015-01-01 00:00:00
> 2015-02-01 00:00:00
> 2015-02-01 00:00:00
> 2015-01-01 00:00:00
> 2015-01-01 00:00:00
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)