hsyuan commented on a change in pull request #1157: [CALCITE-2969] Improve design of join-like relational expressions URL: https://github.com/apache/calcite/pull/1157#discussion_r279157499
########## File path: core/src/main/java/org/apache/calcite/rel/core/Join.java ########## @@ -230,6 +237,17 @@ public boolean isSemiJoinDone() { return false; } + /** + * Returns whether this LogicalJoin is a semi-join but does + * not comes from decorrelate. + * + * @return true if this is semi but without correlate variables. + */ + public boolean isNonCorrelateSemiJoin() { + return (this.variablesSet == null || this.variablesSet.size() == 0) + && joinType == JoinRelType.SEMI; + } Review comment: @danny0405 The purpose of transforming a correlate to a join is getting rid of Variables. @zabetak It is in RelDecorrelator, which is not rule based, sadly. Some SubqueryRemoveRule will transform subquery into Correlate, some SubqueryRemoveRule will directly transform subquery into a Join. :( ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services