AngersZhuuuu commented on issue #26431: [SPARK-29769][SQL] Support "exists/not exists" condition as all type Join's on cpndition URL: https://github.com/apache/spark/pull/26431#issuecomment-551354121 > do you mean the optimizer rule `PushPredicateThroughJoin` is the culprit that forbids "exists/not exists" condition in outer joins? My last pr make it can be analyzed since I make it can resolve Subqueries in join condition. But for exists, in current master, you can use `inner/right outer` but you can't use `left outer/full outer/ left ant/ left semi` , since in origin `PushPredicateThroughJoin `, origin `split()` will solve leftEvaluateCondition first, in our test query `exists` is not about left or right, then will be be pased to leftEvaluateCondition, then if you meet `RIGHT OUTER JOIN`, it will build a new LeftChild. then it change exists condition to a LeftSemi join. But if you are `LEFT OUTER JOIN` it will build a new RightChild, exists condition was passed to leftEvaluateCondition, so it won't be solved, and it will be a unresolved PhysicalPlan as I show in jira.
---------------------------------------------------------------- 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: [email protected] With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
