[
https://issues.apache.org/jira/browse/TAJO-1350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14383050#comment-14383050
]
ASF GitHub Bot commented on TAJO-1350:
--------------------------------------
Github user sirpkt commented on the pull request:
https://github.com/apache/tajo/pull/384#issuecomment-86769740
+1
By the way, during the test, I found that there still exists some more room
to improve push filter down.
{code}
select
n1.n_nationkey,
n1.n_name,
n2.n_name
from nation n1, nation n2, nation n3 where (n1.n_nationkey in (1,2) or
n2.n_nationkey in (2)) and n2.n_nationkey = n3.n_nationkey and n1.n_nationkey =
n2.n_nationkey
order by n1.n_nationkey;
{code}
For above query, resulting optimized query plan is
{code}
PROJECTION(5)
=> Targets: default.n1.n_nationkey (INT4), default.n1.n_name (TEXT),
default.n2.n_name (TEXT)
=> out schema: {(3) default.n1.n_nationkey (INT4), default.n1.n_name
(TEXT), default.n2.n_name (TEXT)}
=> in schema: {(4) default.n1.n_nationkey (INT4), default.n1.n_name
(TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)}
SORT(4)
=> Sort Keys: default.n1.n_nationkey (INT4) (asc)
SELECTION(3)
=> Search Cond: default.n1.n_nationkey (INT4) IN (1, 2) OR
default.n2.n_nationkey (INT4) IN (2)
JOIN(10)(INNER)
=> Join Cond: default.n2.n_nationkey (INT4) =
default.n3.n_nationkey (INT4)
=> target list: default.n1.n_nationkey (INT4), default.n1.n_name
(TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey (INT4)
=> out schema: {(4) default.n1.n_nationkey (INT4),
default.n1.n_name (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey
(INT4)}
=> in schema: {(5) default.n1.n_nationkey (INT4),
default.n1.n_name (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey
(INT4), default.n3.n_nationkey (INT4)}
SCAN(2) on default.nation as n3
=> target list: default.n3.n_nationkey (INT4)
=> out schema: {(1) default.n3.n_nationkey (INT4)}
=> in schema: {(4) default.n3.n_nationkey (INT4),
default.n3.n_name (TEXT), default.n3.n_regionkey (INT4), default.n3.n_comment
(TEXT)}
JOIN(9)(INNER)
=> Join Cond: default.n1.n_nationkey (INT4) =
default.n2.n_nationkey (INT4)
=> target list: default.n1.n_nationkey (INT4),
default.n1.n_name (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey
(INT4)
=> out schema: {(4) default.n1.n_nationkey (INT4),
default.n1.n_name (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey
(INT4)}
=> in schema: {(4) default.n1.n_nationkey (INT4),
default.n1.n_name (TEXT), default.n2.n_name (TEXT), default.n2.n_nationkey
(INT4)}
SCAN(1) on default.nation as n2
=> target list: default.n2.n_name (TEXT),
default.n2.n_nationkey (INT4)
=> out schema: {(2) default.n2.n_name (TEXT),
default.n2.n_nationkey (INT4)}
=> in schema: {(4) default.n2.n_nationkey (INT4),
default.n2.n_name (TEXT), default.n2.n_regionkey (INT4), default.n2.n_comment
(TEXT)}
SCAN(0) on default.nation as n1
=> target list: default.n1.n_nationkey (INT4),
default.n1.n_name (TEXT)
=> out schema: {(2) default.n1.n_nationkey (INT4),
default.n1.n_name (TEXT)}
=> in schema: {(4) default.n1.n_nationkey (INT4),
default.n1.n_name (TEXT), default.n1.n_regionkey (INT4), default.n1.n_comment
(TEXT)}
{code}
It would be more nice if we can do SELECTION(3) just after JOIN(9).
I think, After TAJO-1310 is resolved, we can further enhance filter push
down with new join filter feature.
> Refactor FilterPushDownRule::visitJoin() into well-defined, small methods
> -------------------------------------------------------------------------
>
> Key: TAJO-1350
> URL: https://issues.apache.org/jira/browse/TAJO-1350
> Project: Tajo
> Issue Type: Improvement
> Components: planner/optimizer
> Reporter: Hyunsik Choi
> Assignee: Jihoon Son
> Fix For: 0.11.0
>
> Attachments: TAJO-1350.patch, TAJO-1350_2.patch, TAJO-1350_3.patch,
> TAJO-1350_4.patch
>
>
> FilterPushDownRule::visitJoin() is too long and complicated. It handles
> various cases in a single method. We need to refactor this method into
> several small and well-defined methods.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)