dssysolyatin commented on code in PR #4354:
URL: https://github.com/apache/calcite/pull/4354#discussion_r2070664611
##########
core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java:
##########
@@ -1227,6 +1227,16 @@ private void substituteSubQuery(Blackboard bb, SubQuery
subQuery) {
// Otherwise, let convertExists translate
// values list into an inline table for the
// reference to Q below.
+ } else if (query instanceof SqlSelect) {
+ // During JOIN ON condition processing, bb.root is
+ // initially null but subquery expansion requires
+ // a non-null bb.root. For IN/NOT IN subqueries
+ // processed via convertExists, we use the join's
+ // left input as bb.root. Exception: in UPDATE queries,
+ // bb.inputs remains null and subquery rewriting is skipped.
+ if (bb.inputs != null && bb.inputs.size() == 2) {
Review Comment:
> Currently, only when there is a subquery in the join on condition, bb.root
will be null and query will be of SqlSelect type. I wrote bb.inputs.size() == 2
in the code to confirm that bb.inputs does have the two inputs to join
Is it possible to use `bb.scope` to check if it's a join (`JoinScope`) ? The
current statement is probably correct for now, but it might be difficult to
debug if any issues come up later
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]