@@ -226,7 +226,7 @@ func (b *Builder) buildIfConditional(inScope *scope, n ast.IfStatementCondition,
226226 return outScope
227227}
228228
229- func BuildProcedureHelper (ctx * sql.Context , cat sql.Catalog , inScope * scope , db sql.Database , asOf sql.Expression , proc sql.StoredProcedureDetails ) * plan.Procedure {
229+ func BuildProcedureHelper (ctx * sql.Context , cat sql.Catalog , inScope * scope , db sql.Database , asOf sql.Expression , proc sql.StoredProcedureDetails ) ( * plan.Procedure , * sql. QueryFlags ) {
230230 // TODO: new builder necessary?
231231 b := New (ctx , cat , nil , nil )
232232 b .DisableAuth ()
@@ -272,7 +272,7 @@ func BuildProcedureHelper(ctx *sql.Context, cat sql.Catalog, inScope *scope, db
272272 bodyScope .node ,
273273 proc .CreatedAt ,
274274 proc .ModifiedAt ,
275- )
275+ ), b . qFlags
276276}
277277
278278func (b * Builder ) buildCall (inScope * scope , c * ast.Call ) (outScope * scope ) {
@@ -303,6 +303,7 @@ func (b *Builder) buildCall(inScope *scope, c *ast.Call) (outScope *scope) {
303303 }
304304
305305 var proc * plan.Procedure
306+ var innerQFlags * sql.QueryFlags
306307 procName := c .ProcName .Name .String ()
307308 esp , err := b .cat .ExternalStoredProcedure (b .ctx , procName , len (c .Params ))
308309 if err != nil {
@@ -315,7 +316,13 @@ func (b *Builder) buildCall(inScope *scope, c *ast.Call) (outScope *scope) {
315316 procDetails , ok , err = spdb .GetStoredProcedure (b .ctx , procName )
316317 if err == nil {
317318 if ok {
318- proc = BuildProcedureHelper (b .ctx , b .cat , inScope , db , asOf , procDetails )
319+ proc , innerQFlags = BuildProcedureHelper (b .ctx , b .cat , inScope , db , asOf , procDetails )
320+ // TODO: somewhat hacky way of preserving this flag
321+ // This is necessary so that the resolveSubqueries analyzer rule
322+ // will apply NodeExecBuilder to Subqueries in procedure body
323+ if innerQFlags .IsSet (sql .QFlagScalarSubquery ) {
324+ b .qFlags .Set (sql .QFlagScalarSubquery )
325+ }
319326 } else {
320327 err = sql .ErrStoredProcedureDoesNotExist .New (procName )
321328 }
0 commit comments