Noticed during the 2026-09-02 review fixes (parser-depth work, #484): #456's UDF/StoredProc descent lives in ParseStatement, but a StmtCursor's statements go down the cursor branch of ParseStatementAndChildren and never reach it — so a UDF called inside a cursor's operation plans contributes no body statements to analysis. Feature gap from #456's scope, not a recursion risk (the depth guard now carries through both branches).
Cheap to check with a cursor-over-UDF fixture; the fix is routing the cursor branch's statements through the same descent.
Noticed during the 2026-09-02 review fixes (parser-depth work, #484): #456's UDF/StoredProc descent lives in ParseStatement, but a StmtCursor's statements go down the cursor branch of ParseStatementAndChildren and never reach it — so a UDF called inside a cursor's operation plans contributes no body statements to analysis. Feature gap from #456's scope, not a recursion risk (the depth guard now carries through both branches).
Cheap to check with a cursor-over-UDF fixture; the fix is routing the cursor branch's statements through the same descent.