[
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 optimized 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 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}
> 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 optimized 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]