Manu Zhang created SPARK-58894:
----------------------------------

             Summary: Detect cyclic view references in nested subqueries
                 Key: SPARK-58894
                 URL: https://issues.apache.org/jira/browse/SPARK-58894
             Project: Spark
          Issue Type: Bug
          Components: SQL
    Affects Versions: 5.0.0
            Reporter: Manu Zhang


`ViewHelper.checkCyclicViewReference` only inspects the root of each 
logical-plan expression when looking for subquery expressions. It detects an 
`EXISTS` subquery when that subquery is the expression root, but misses scalar 
and other subqueries nested inside larger expressions.

For example:

{code:sql}
CREATE VIEW view1 AS SELECT * FROM jt;
CREATE VIEW view2 AS SELECT * FROM view1;
ALTER VIEW view1 AS SELECT * FROM jt WHERE id = (SELECT id FROM view2);
{code}

The last statement should fail with `RECURSIVE_VIEW`, reporting the cycle 
`view1 -> view2 -> view1`. Instead, the cyclic definition can be accepted and 
fail later during view resolution with the maximum nested-view-depth error.

The cyclic-view check should traverse complete expression trees and inspect the 
plan of every nested `SubqueryExpression`. Add regression coverage for a scalar 
subquery nested below an equality predicate.




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to