You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Harish Butani (JIRA)" <ji...@apache.org> on 2014/08/26 22:37:57 UTC

[jira] [Created] (OPTIQ-388) Have the FieldTrimmer handle SemiJoins

Harish Butani created OPTIQ-388:
-----------------------------------

             Summary: Have the FieldTrimmer handle SemiJoins
                 Key: OPTIQ-388
                 URL: https://issues.apache.org/jira/browse/OPTIQ-388
             Project: Optiq
          Issue Type: Bug
            Reporter: Harish Butani
            Assignee: Julian Hyde
         Attachments: OPTIQ-388.1.patch

For e.g. for the following query:
{code}
select s.deptno from (select * from dept where exists (
  select * from emp
  where emp.deptno = dept.deptno
  and emp.sal > 100)) s join customer.account on s.deptno = account.acctno
{code}

Projection of DeptNo should get pushed below SemiJoin
{code}
ProjectRel(DEPTNO=[$0])
  JoinRel(condition=[=($0, $1)], joinType=[inner])
    SemiJoinRel(condition=[=($0, $1)], joinType=[inner])
      ProjectRel(DEPTNO=[$0])
        TableAccessRel(table=[[CATALOG, SALES, DEPT]])
      ProjectRel($f01=[$2])
        JoinRel(condition=[=($1, $2)], joinType=[inner])
          FilterRel(condition=[>($0, 100)])
            ProjectRel(SAL=[$5], DEPTNO=[$7])
              TableAccessRel(table=[[CATALOG, SALES, EMP]])
          AggregateRel(group=[{0}])
            ProjectRel($f0=[$0])
              ProjectRel(DEPTNO=[$0])
                TableAccessRel(table=[[CATALOG, SALES, DEPT]])
    ProjectRel(ACCTNO=[$0])
      TableAccessRel(table=[[CATALOG, CUSTOMER, ACCOUNT]])
{code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)