[ 
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)

Reply via email to