[ https://issues.apache.org/jira/browse/CALCITE-4668?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17372473#comment-17372473 ]
Stamatis Zampetakis commented on CALCITE-4668: ---------------------------------------------- [~jamesstarr] Looking again at the code I was wondering why {{RIGHT}} and {{FULL}} joins are invalid if the correlation id is not used? With your proposal when a correlation id is not used then you emit a normal join instead of correlate so don't completely get it why a normal {{RIGHT}} or {{FULL}} join are invalid? > RelBuilder.join should convert Correlate to Join if correlation variable is > unused > ---------------------------------------------------------------------------------- > > 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)