Skip to content

sql: v20.2.0: panic: unexpected node type when constructing plan for ALTER DATABASE _ OWNER TO _ #56861

@cockroach-teamcity

Description

@cockroach-teamcity

This issue was autofiled by Sentry. It represents a crash or reported error on a live cluster with telemetry enabled.

Sentry link: https://sentry.io/organizations/cockroach-labs/issues/2039644062/?referrer=webhooks_plugin

Panic message:

exec_factory_util.go:44: unexpected node type
--
*errutil.leafError: unexpected node type (1)
exec_factory_util.go:44: *withstack.withStack (top exception)
*assert.withAssertionFailure
conn_executor.go:506: *withstack.withStack (2)
*safedetails.withSafeDetails: while executing: ALTER DATABASE _ OWNER TO _ (3)
conn_executor.go:506: *withstack.withStack (4)
(check the extra data payloads)

Stacktrace (expand for inline code snippets):

r := recover()
h.ex.closeWrapper(ctx, r)
}()
in pkg/sql.(*Server).ServeConn.func1
/usr/local/go/src/runtime/panic.go#L678-L680 in runtime.gopanic
default:
panic(errors.AssertionFailedf("unexpected node type %T", node))
}
in pkg/sql.constructPlan.func1
}
assignPlan(&res.main, root)
if len(subqueries) > 0 {
in pkg/sql.constructPlan
}
return constructPlan(ef.planner, root, subqueries, cascades, checks)
}
in pkg/sql.(*execFactory).ConstructPlan
var err error
p.WrappedPlan, err = f.wrappedFactory.ConstructPlan(
p.Root.WrappedNode(), wrappedSubqueries, wrappedCascades, wrappedChecks,
in pkg/sql/opt/exec/explain.(*Factory).ConstructPlan
}
return b.factory.ConstructPlan(plan.root, b.subqueries, b.cascades, b.checks)
}
in pkg/sql/opt/exec/execbuilder.(*Builder).Build
bld := execbuilder.New(explainFactory, mem, &opc.catalog, mem.RootExpr(), evalCtx, allowAutoCommit)
plan, err := bld.Build()
if err != nil {
in pkg/sql.(*optPlanningCtx).runExecBuilder
// If we got here, we did not create a plan above.
return opc.runExecBuilder(
&p.curPlan,
in pkg/sql.(*planner).makeOptimizerPlan
if err := planner.makeOptimizerPlan(ctx); err != nil {
log.VEventf(ctx, 1, "optimizer plan failed: %v", err)
in pkg/sql.(*connExecutor).makeExecPlan
// between here and there needs to happen even if there's an error.
err := ex.makeExecPlan(ctx, planner)
// We'll be closing the plan manually below after execution; this
in pkg/sql.(*connExecutor).dispatchToExecutionEngine
p.autoCommit = os.ImplicitTxn.Get() && !ex.server.cfg.TestingKnobs.DisableAutoCommit
if err := ex.dispatchToExecutionEngine(ctx, p, res); err != nil {
return nil, nil, err
in pkg/sql.(*connExecutor).execStmtInOpenState
} else {
ev, payload, err = ex.execStmtInOpenState(ctx, stmt, res, pinfo)
}
in pkg/sql.(*connExecutor).execStmt
stmtCtx := withStatement(ctx, ex.curStmt)
ev, payload, err = ex.execStmt(stmtCtx, curStmt, stmtRes, nil /* pinfo */)
return err
in pkg/sql.(*connExecutor).execCmd.func1
return err
}()
// Note: we write to ex.statsCollector.phaseTimes, instead of ex.phaseTimes,
in pkg/sql.(*connExecutor).execCmd
var err error
if err = ex.execCmd(ex.Ctx()); err != nil {
if errors.IsAny(err, io.EOF, errDrainingComplete) {
in pkg/sql.(*connExecutor).run
}()
return h.ex.run(ctx, s.pool, reserved, cancel)
}
in pkg/sql.(*Server).ServeConn
reservedOwned = false // We're about to pass ownership away.
retErr = sqlServer.ServeConn(ctx, connHandler, reserved, cancelConn)
}()
in pkg/sql/pgwire.(*conn).processCommandsAsync.func1
/usr/local/go/src/runtime/asm_amd64.s#L1356-L1358 in runtime.goexit

pkg/sql/conn_executor.go in pkg/sql.(*Server).ServeConn.func1 at line 506
/usr/local/go/src/runtime/panic.go in runtime.gopanic at line 679
pkg/sql/exec_factory_util.go in pkg/sql.constructPlan.func1 at line 44
pkg/sql/exec_factory_util.go in pkg/sql.constructPlan at line 47
pkg/sql/opt_exec_factory.go in pkg/sql.(*execFactory).ConstructPlan at line 1026
pkg/sql/opt/exec/explain/explain_factory.go in pkg/sql/opt/exec/explain.(*Factory).ConstructPlan at line 151
pkg/sql/opt/exec/execbuilder/builder.go in pkg/sql/opt/exec/execbuilder.(*Builder).Build at line 141
pkg/sql/plan_opt.go in pkg/sql.(*optPlanningCtx).runExecBuilder at line 581
pkg/sql/plan_opt.go in pkg/sql.(*planner).makeOptimizerPlan at line 265
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).makeExecPlan at line 901
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).dispatchToExecutionEngine at line 780
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).execStmtInOpenState at line 639
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).execStmt at line 114
pkg/sql/conn_executor.go in pkg/sql.(*connExecutor).execCmd.func1 at line 1465
pkg/sql/conn_executor.go in pkg/sql.(*connExecutor).execCmd at line 1467
pkg/sql/conn_executor.go in pkg/sql.(*connExecutor).run at line 1391
pkg/sql/conn_executor.go in pkg/sql.(*Server).ServeConn at line 508
pkg/sql/pgwire/conn.go in pkg/sql/pgwire.(*conn).processCommandsAsync.func1 at line 626
/usr/local/go/src/runtime/asm_amd64.s in runtime.goexit at line 1357
Tag Value
Cockroach Release v20.2.0
Cockroach SHA: 150c591
Platform linux amd64
Distribution CCL
Environment v20.2.0
Command start-single-node
Go Version ``
# of CPUs
# of Goroutines

Metadata

Metadata

Labels

C-bugCode not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.O-sentryOriginated from an in-the-wild panic report.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions