diff --git a/enginetest/queries/table_func_scripts.go b/enginetest/queries/table_func_scripts.go index 8653775372..ebf307fc94 100644 --- a/enginetest/queries/table_func_scripts.go +++ b/enginetest/queries/table_func_scripts.go @@ -222,4 +222,20 @@ var TableFunctionScriptTests = []ScriptTest{ JoinTypes: []plan.JoinType{plan.JoinTypeLookup}, ExpectedIndexes: []string{"y"}, }, + { + SetUpScript: []string{ + ` +create procedure proc(in x int) +begin + select * from sequence_table('x', x); +end; +`, + }, + Query: "call proc(3)", + Expected: []sql.Row{ + {0}, + {1}, + {2}, + }, + }, } diff --git a/sql/procedures/interpreter_logic.go b/sql/procedures/interpreter_logic.go index 7841439958..8c4b7341ae 100644 --- a/sql/procedures/interpreter_logic.go +++ b/sql/procedures/interpreter_logic.go @@ -148,6 +148,14 @@ func replaceVariablesInExpr(ctx *sql.Context, stack *InterpreterStack, expr ast. } e.Exprs[i] = newExpr.(ast.SelectExpr) } + case *ast.TableFuncExpr: + for i := range e.Exprs { + newExpr, err := replaceVariablesInExpr(ctx, stack, e.Exprs[i], asOf) + if err != nil { + return nil, err + } + e.Exprs[i] = newExpr.(ast.SelectExpr) + } case *ast.Set: for _, setExpr := range e.Exprs { newExpr, err := replaceVariablesInExpr(ctx, stack, setExpr.Expr, asOf)