allisonwang-db opened a new pull request #33527:
URL: https://github.com/apache/spark/pull/33527


   This PR cherry picks https://github.com/apache/spark/pull/33235 to 
branch-3.2 to fix test failures introduced by 
https://github.com/apache/spark/pull/33284.
   
   ### What changes were proposed in this pull request?
   This PR allows the `Project` node to host outer references in scalar 
subqueries when `decorrelateInnerQuery` is enabled. It is already supported by 
the new decorrelation framework and the `RewriteCorrelatedScalarSubquery` rule.
   
   Note currently by default all correlated subqueries will be decorrelated, 
which is not necessarily the most optimal approach. Consider `SELECT (SELECT 
c1) FROM t`. This should be optimized as `SELECT c1 FROM t` instead of 
rewriting it as a left outer join. This will be done in a separate PR to 
optimize correlated scalar/lateral subqueries with OneRowRelation.
   
   ### Why are the changes needed?
   To allow more types of correlated scalar subqueries.
   
   ### Does this PR introduce _any_ user-facing change?
   Yes. This PR allows outer query column references in the SELECT cluase of a 
correlated scalar subquery. For example:
   ```sql
   SELECT (SELECT c1) FROM t;
   ```
   Before this change:
   ```
   org.apache.spark.sql.AnalysisException: Expressions referencing the outer 
query are not supported
   outside of WHERE/HAVING clauses
   ```
   
   After this change:
   ```
   +------------------+
   |scalarsubquery(c1)|
   +------------------+
   |0                 |
   |1                 |
   +------------------+
   ```
   
   ### How was this patch tested?
   Added unit tests and SQL tests.
   
   (cherry picked from commit ca348e50a4edbd857ec86e4e9693fa4bcbab54b7)
   Signed-off-by: allisonwang-db <[email protected]>
   


-- 
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]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to