xqhe has uploaded this change for review. ( 
http://gerrit.cloudera.org:8080/15047


Change subject: IMPALA-8361: Fix bound predicates optimization doesn't work for 
InlineView
......................................................................

IMPALA-8361: Fix bound predicates optimization doesn't work for
InlineView

This is improvement that migrated predicates of the nullable side of
the outer join into inline view.We should duplicate it and evaluate
after join.

For example:
EXPLAIN
SELECT count(*) FROM functional.alltypessmall a
LEFT JOIN
(SELECT id, upper(string_col) AS upper_val
FROM functional.alltypestiny) b ON a.id=b.id
WHERE b.upper_val='1';

+------------------------------------------------------------+
| Explain String                                             |
+------------------------------------------------------------+
| Max Per-Host Resource Reservation: Memory=1.95MB Threads=5 |
| Per-Host Resource Estimates: Memory=86MB                   |
| Codegen disabled by planner                                |
|                                                            |
| PLAN-ROOT SINK                                             |
| |                                                          |
| 06:AGGREGATE [FINALIZE]                                    |
| |  output: count:merge(*)                                  |
| |  row-size=8B cardinality=1                               |
| |                                                          |
| 05:EXCHANGE [UNPARTITIONED]                                |
| |                                                          |
| 03:AGGREGATE                                               |
| |  output: count(*)                                        |
| |  row-size=8B cardinality=1                               |
| |                                                          |
| 02:HASH JOIN [LEFT OUTER JOIN, BROADCAST]                  |
| |  hash predicates: a.id = id                              |
| |  other predicates: upper(string_col) = '1' <-eval after join
| |  row-size=21B cardinality=100                            |
| |                                                          |
| |--04:EXCHANGE [BROADCAST]                                 |
| |  |                                                       |
| |  01:SCAN HDFS [functional.alltypestiny]                  |
| |     HDFS partitions=4/4 files=4 size=460B                |
| |     predicates: upper(string_col) = '1'    <-push down   |
| |     row-size=17B cardinality=4                           |
| |                                                          |
| 00:SCAN HDFS [functional.alltypessmall a]                  |
|    HDFS partitions=4/4 files=4 size=6.32KB                 |
|    row-size=4B cardinality=100                             |
+------------------------------------------------------------+

Change-Id: I6c23a45aeb5dd1aa06a95c9aa8628ecbe37ef2c1
---
M fe/src/main/java/org/apache/impala/analysis/Analyzer.java
M fe/src/main/java/org/apache/impala/planner/SingleNodePlanner.java
M testdata/workloads/functional-planner/queries/PlannerTest/inline-view.test
3 files changed, 57 insertions(+), 3 deletions(-)



  git pull ssh://gerrit.cloudera.org:29418/Impala-ASF refs/changes/47/15047/2
--
To view, visit http://gerrit.cloudera.org:8080/15047
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6c23a45aeb5dd1aa06a95c9aa8628ecbe37ef2c1
Gerrit-Change-Number: 15047
Gerrit-PatchSet: 2
Gerrit-Owner: xqhe <hexianqing...@126.com>

Reply via email to