From dbe42eb26bf6113e85d8c137e629c242b71fed23 Mon Sep 17 00:00:00 2001 From: Max Hoffman Date: Mon, 17 Mar 2025 11:59:49 -0700 Subject: [PATCH] [planbuilder] nil database doesn't panic building procedure call --- enginetest/enginetests.go | 1 + sql/planbuilder/proc.go | 3 +++ 2 files changed, 4 insertions(+) diff --git a/enginetest/enginetests.go b/enginetest/enginetests.go index 4e254f619e..2b3c78b40b 100644 --- a/enginetest/enginetests.go +++ b/enginetest/enginetests.go @@ -4877,6 +4877,7 @@ func TestNoDatabaseSelected(t *testing.T, harness Harness) { AssertErrWithCtx(t, e, harness, ctx, "create table a (b int primary key)", nil, sql.ErrNoDatabaseSelected) AssertErrWithCtx(t, e, harness, ctx, "show tables", nil, sql.ErrNoDatabaseSelected) AssertErrWithCtx(t, e, harness, ctx, "show triggers", nil, sql.ErrNoDatabaseSelected) + AssertErrWithCtx(t, e, harness, ctx, "call non_existent_proc()", nil, sql.ErrNoDatabaseSelected) _, _, _, err := e.Query(ctx, "ROLLBACK") require.NoError(t, err) diff --git a/sql/planbuilder/proc.go b/sql/planbuilder/proc.go index 8f8d9045b4..2080a96bbb 100644 --- a/sql/planbuilder/proc.go +++ b/sql/planbuilder/proc.go @@ -311,6 +311,9 @@ func (b *Builder) buildCall(inScope *scope, c *ast.Call) (outScope *scope) { } else if b.ctx.GetCurrentDatabase() != "" { db = b.currentDb() } + if db == nil { + b.handleErr(sql.ErrNoDatabaseSelected.New()) + } var proc *plan.Procedure var innerQFlags *sql.QueryFlags