Skip to content

Commit 20c43ab

Browse files
committed
sql: prevent panic when using UDF as EXECUTE argument
Fixes cockroachdb#99008 Release note (bug fix): A bug has been fixed that caused nodes to crash when attempting to `EXECUTE` a prepared statement with an argument that referenced a user-defined function. This bug was present since user-defined functions were introduced in version 22.2.
1 parent cdf6d15 commit 20c43ab

File tree

11 files changed

+69
-2
lines changed

11 files changed

+69
-2
lines changed

pkg/ccl/logictestccl/tests/3node-tenant/generated_test.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/sql/execute.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ func (p *planner) fillInPlaceholders(
3535
}
3636

3737
qArgs := make(tree.QueryArguments, len(params))
38-
var semaCtx tree.SemaContext
3938
for i, e := range params {
4039
idx := tree.PlaceholderIdx(i)
4140

@@ -54,7 +53,7 @@ func (p *planner) fillInPlaceholders(
5453
}
5554
}
5655
typedExpr, err := schemaexpr.SanitizeVarFreeExpr(
57-
ctx, e, typ, "EXECUTE parameter" /* context */, &semaCtx, volatility.Volatile, true, /*allowAssignmentCast*/
56+
ctx, e, typ, "EXECUTE parameter" /* context */, p.SemaCtx(), volatility.Volatile, true, /*allowAssignmentCast*/
5857
)
5958
if err != nil {
6059
return nil, pgerror.WithCandidateCode(err, pgcode.WrongObjectType)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
statement ok
2+
CREATE FUNCTION f() RETURNS INT LANGUAGE SQL AS $$ SELECT 1 $$
3+
4+
statement ok
5+
PREPARE p AS SELECT $1::INT
6+
7+
statement error pgcode 0A000 cannot evaluate function in this context
8+
EXECUTE p(f())

pkg/sql/logictest/tests/fakedist-disk/generated_test.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/sql/logictest/tests/fakedist-vec-off/generated_test.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/sql/logictest/tests/fakedist/generated_test.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/sql/logictest/tests/local-legacy-schema-changer/generated_test.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/sql/logictest/tests/local-mixed-22.2-23.1/generated_test.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/sql/logictest/tests/local-vec-off/generated_test.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/sql/logictest/tests/local/generated_test.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)