Description
Currently, Spark has limited support for correlated subqueries. It only allows Filter to have outer column references and does not support non-equality predicates when the subquery is aggregated. Please see https://issues.apache.org/jira/browse/SPARK-18455 for more details on how subquery decorrelation works in Spark.
The task here is to implement the technique introduced in "Unnesting Arbitrary Queries" by T. Neumann; A. Kemper
(http://www.btw-2015.de/res/proceedings/Hauptband/Wiss/Neumann-Unnesting_Arbitrary_Querie.pdf). This allows Spark to have outer query column references other than Filter, decorrelate subqueries with more types of operators, and support correlated non-equality predicates.
This will also enable supporting lateral derived table (https://issues.apache.org/jira/browse/SPARK-34382) in the future.