[ https://issues.apache.org/jira/browse/CALCITE-4668?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
James Starr updated CALCITE-4668: --------------------------------- Summary: RelBuilder.join should only emit a correlate when a correlate variable is used (was: RelBuilder.join should only emit a correlate when a correlate variable exists) > RelBuilder.join should only emit a correlate when a correlate variable is used > ------------------------------------------------------------------------------ > > Key: CALCITE-4668 > URL: https://issues.apache.org/jira/browse/CALCITE-4668 > Project: Calcite > Issue Type: Improvement > Components: core > Reporter: James Starr > Priority: Major > Labels: pull-request-available > Time Spent: 10m > Remaining Estimate: 0h > > We generate correlated join when no correlate variable is present on the > right side. However, this could be simplified to emit a normal join. > Given: > {code:java} > final RelNode rel = builder > .scan("EMP") > .variable(v) > .scan("DEPT") > .join(JoinRelType.LEFT, > builder.equals(builder.field(2, 0, "SAL"), > builder.literal(1000)), > ImmutableSet.of(v.get().id)) > .build(); > {code} > Currently the following is emitted: > {code} > LogicalFilter(condition=[=($7, $8)]) > LogicalCorrelate(correlation=[$cor0], joinType=[left], > requiredColumns=[{0}]) > LogicalTableScan(table=[[scott, EMP]]) > LogicalFilter(condition=[=($cor0.DEPTNO, $0)]) > LogicalTableScan(table=[[scott, DEPT]]) > {code} > After the changes the following will be emitted: > {code} > LogicalJoin(condition=[=($7, $8)], joinType=[left]) > LogicalTableScan(table=[[scott, EMP]]) > LogicalTableScan(table=[[scott, DEPT]]) > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)