[
https://issues.apache.org/jira/browse/HIVE-5771?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14047086#comment-14047086
]
Ted Xu commented on HIVE-5771:
------------------------------
Hi [~ashutoshc], thanks for looking into that issue. I don't have enough
context on HIVE-7232, but the issue is still there after HIVE-7232 is patched.
I looked into subquery_views.q, it seems there is an extra filter predicate
which breaks the query. Notice the following hive.log segment:
{code}
2014-06-29 01:20:00,662 INFO ppd.OpProcFactory
(OpProcFactory.java:process(209)) - Processing for FIL(37)
2014-06-29 01:20:00,663 INFO ppd.OpProcFactory
(OpProcFactory.java:logExpr(601)) - Pushdown Predicates of FIL For Alias :
sq_1_notin_nullcheck
2014-06-29 01:20:00,663 INFO ppd.OpProcFactory
(OpProcFactory.java:logExpr(604)) - (_col0 = 0)
2014-06-29 01:20:00,663 INFO ppd.OpProcFactory
(OpProcFactory.java:process(549)) - Processing for SEL(36)
2014-06-29 01:20:00,663 INFO ppd.OpProcFactory
(OpProcFactory.java:logExpr(601)) - Pushdown Predicates of SEL For Alias :
sq_1_notin_nullcheck
2014-06-29 01:20:00,663 INFO ppd.OpProcFactory
(OpProcFactory.java:logExpr(604)) - (_col0 = 0)
2014-06-29 01:20:00,663 INFO ppd.OpProcFactory
(OpProcFactory.java:process(549)) - Processing for GBY(35)
2014-06-29 01:20:00,664 INFO ppd.OpProcFactory
(OpProcFactory.java:process(549)) - Processing for RS(34)
2014-06-29 01:20:00,666 INFO ppd.OpProcFactory
(OpProcFactory.java:process(549)) - Processing for GBY(33)
2014-06-29 01:20:00,667 INFO ppd.OpProcFactory
(OpProcFactory.java:process(549)) - Processing for SEL(32)
2014-06-29 01:20:00,667 INFO ppd.OpProcFactory
(OpProcFactory.java:process(209)) - Processing for FIL(31)
2014-06-29 01:20:00,667 INFO ppd.OpProcFactory
(OpProcFactory.java:logExpr(601)) - Pushdown Predicates of FIL For Alias : sq_1
2014-06-29 01:20:00,667 INFO ppd.OpProcFactory
(OpProcFactory.java:logExpr(604)) - ((_col0 is null or _col1 is null) or
_col2 is null)
{code}
FIL37 has a constant predicate (_col0 = 0), which is supposed to be predicated
to following operators, which breaks FIL31. The query don't contain such
predicate, I'm not sure if it is introduced by exist in clause.
> Constant propagation optimizer for Hive
> ---------------------------------------
>
> Key: HIVE-5771
> URL: https://issues.apache.org/jira/browse/HIVE-5771
> Project: Hive
> Issue Type: Improvement
> Components: Query Processor
> Reporter: Ted Xu
> Assignee: Ted Xu
> Attachments: HIVE-5771.1.patch, HIVE-5771.10.patch,
> HIVE-5771.11.patch, HIVE-5771.12.patch, HIVE-5771.2.patch, HIVE-5771.3.patch,
> HIVE-5771.4.patch, HIVE-5771.5.patch, HIVE-5771.6.patch, HIVE-5771.7.patch,
> HIVE-5771.8.patch, HIVE-5771.9.patch, HIVE-5771.patch,
> HIVE-5771.patch.javaonly
>
>
> Currently there is no constant folding/propagation optimizer, all expressions
> are evaluated at runtime.
> HIVE-2470 did a great job on evaluating constants on UDF initializing phase,
> however, it is still a runtime evaluation and it doesn't propagate constants
> from a subquery to outside.
> It may reduce I/O and accelerate process if we introduce such an optimizer.
--
This message was sent by Atlassian JIRA
(v6.2#6252)