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

Xianqing He updated IMPALA-10412:
---------------------------------
    Description: 
ConvertToCNFRule can be apply to view table, so the predicate can be pushed 
down to scan node.

e.g.
{code:java}
CREATE VIEW rawdata.test_cnf AS
SELECT
-- +straight_join
 events.*, users.p_channel p_channel_profile FROM rawdata.event_ros_p7 events 
LEFT OUTER JOIN
-- +BROADCAST
 rawdata.profile_wos_p7 users ON events.user_id = users.id
{code}
 
{code:java}
select event_id, p_query from test_cnf where p_query='a' or (p_package_id='b' 
and p_channel_profile='d');
{code}
 

the plan
{code:java}
PLAN-ROOT SINK
|
04:EXCHANGE [UNPARTITIONED]
|
02:HASH JOIN [LEFT OUTER JOIN, BROADCAST]
|  hash predicates: events.user_id = users.id
|  other predicates: events.p_query = 'a' OR users.p_channel = 'd'
|  row-size=79B cardinality=6.31M
|
|--03:EXCHANGE [BROADCAST]
|  |
|  01:SCAN KUDU [rawdata.profile_wos_p7 users]
|     row-size=35B cardinality=151.23M
|
00:SCAN HDFS [rawdata.event_ros_p7 events]
   partitions=21/23 files=1410 size=10.99GB
   predicates: events.p_query = 'a' OR events.p_package_id = 'b'
   row-size=44B cardinality=6.31M
{code}
 

 

  was:
ConvertToCNFRule can be apply to view table, so the predicate can be pushed 
down to can node.

e.g.
{code:java}
CREATE VIEW rawdata.test_cnf AS
SELECT
-- +straight_join
 events.*, users.p_channel p_channel_profile FROM rawdata.event_ros_p7 events 
LEFT OUTER JOIN
-- +BROADCAST
 rawdata.profile_wos_p7 users ON events.user_id = users.id
{code}
 
{code:java}
select event_id, p_query from test_cnf where p_query='a' or (p_package_id='b' 
and p_channel_profile='d');
{code}
 

the plan
{code:java}
PLAN-ROOT SINK
|
04:EXCHANGE [UNPARTITIONED]
|
02:HASH JOIN [LEFT OUTER JOIN, BROADCAST]
|  hash predicates: events.user_id = users.id
|  other predicates: events.p_query = 'a' OR users.p_channel = 'd'
|  row-size=79B cardinality=6.31M
|
|--03:EXCHANGE [BROADCAST]
|  |
|  01:SCAN KUDU [rawdata.profile_wos_p7 users]
|     row-size=35B cardinality=151.23M
|
00:SCAN HDFS [rawdata.event_ros_p7 events]
   partitions=21/23 files=1410 size=10.99GB
   predicates: events.p_query = 'a' OR events.p_package_id = 'b'
   row-size=44B cardinality=6.31M
{code}
 

 


> ConvertToCNFRule can be apply to view table
> -------------------------------------------
>
>                 Key: IMPALA-10412
>                 URL: https://issues.apache.org/jira/browse/IMPALA-10412
>             Project: IMPALA
>          Issue Type: Improvement
>          Components: Frontend
>    Affects Versions: Impala 4.0
>            Reporter: gaoxiaoqing
>            Assignee: gaoxiaoqing
>            Priority: Minor
>             Fix For: Impala 4.0
>
>
> ConvertToCNFRule can be apply to view table, so the predicate can be pushed 
> down to scan node.
> e.g.
> {code:java}
> CREATE VIEW rawdata.test_cnf AS
> SELECT
> -- +straight_join
>  events.*, users.p_channel p_channel_profile FROM rawdata.event_ros_p7 events 
> LEFT OUTER JOIN
> -- +BROADCAST
>  rawdata.profile_wos_p7 users ON events.user_id = users.id
> {code}
>  
> {code:java}
> select event_id, p_query from test_cnf where p_query='a' or (p_package_id='b' 
> and p_channel_profile='d');
> {code}
>  
> the plan
> {code:java}
> PLAN-ROOT SINK
> |
> 04:EXCHANGE [UNPARTITIONED]
> |
> 02:HASH JOIN [LEFT OUTER JOIN, BROADCAST]
> |  hash predicates: events.user_id = users.id
> |  other predicates: events.p_query = 'a' OR users.p_channel = 'd'
> |  row-size=79B cardinality=6.31M
> |
> |--03:EXCHANGE [BROADCAST]
> |  |
> |  01:SCAN KUDU [rawdata.profile_wos_p7 users]
> |     row-size=35B cardinality=151.23M
> |
> 00:SCAN HDFS [rawdata.event_ros_p7 events]
>    partitions=21/23 files=1410 size=10.99GB
>    predicates: events.p_query = 'a' OR events.p_package_id = 'b'
>    row-size=44B cardinality=6.31M
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to