Skip to content

sql: v22.1.1: expected *DTimestampTZ, found *tree.Placeholder for with_min_timestamp #86243

@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/3507166854/?referrer=webhooks_plugin

Panic message:

datum.go:2773: expected *DTimestampTZ, found *tree.Placeholder
(1) attached stack trace
-- stack trace:
| github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn.func1
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:746
| runtime.gopanic
| GOROOT/src/runtime/panic.go:1038
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree.MustBeDTimestampTZ
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree/datum.go:2773
| github.com/cockroachdb/cockroach/pkg/sql/sem/builtins.glob..func159
| github.com/cockroachdb/cockroach/pkg/sql/sem/builtins/builtins.go:2703
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FuncExpr).Eval
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree/eval.go:4377
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree.EvalAsOfTimestamp
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree/as_of.go:206
| github.com/cockroachdb/cockroach/pkg/sql.(*planner).EvalAsOfTimestamp
| github.com/cockroachdb/cockroach/pkg/sql/exec_util.go:1781
| github.com/cockroachdb/cockroach/pkg/sql.(*planner).isAsOf
| github.com/cockroachdb/cockroach/pkg/sql/exec_util.go:1835
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).handleAOST
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:746
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).populatePrepared
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:267
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).prepare.func1
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:235
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).prepare
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:240
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).addPreparedStmt
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:102
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execPrepare
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:63
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1976
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1800
| github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:748
| github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync.func1
| github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:724
Wraps: (2) while executing: SELECT _, _ FROM _ AS OF SYSTEM TIME with_min_timestamp($2) WHERE _ = ANY ($1)
Wraps: (3) attached stack trace
-- stack trace:
| github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn.func1
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:746
| runtime.gopanic
| GOROOT/src/runtime/panic.go:1038
| [...repeated from below...]
Wraps: (4) assertion failure
Wraps: (5) attached stack trace
-- stack trace:
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree.MustBeDTimestampTZ
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree/datum.go:2773
| github.com/cockroachdb/cockroach/pkg/sql/sem/builtins.glob..func159
| github.com/cockroachdb/cockroach/pkg/sql/sem/builtins/builtins.go:2703
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree.(*FuncExpr).Eval
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree/eval.go:4377
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree.EvalAsOfTimestamp
| github.com/cockroachdb/cockroach/pkg/sql/sem/tree/as_of.go:206
| github.com/cockroachdb/cockroach/pkg/sql.(*planner).EvalAsOfTimestamp
| github.com/cockroachdb/cockroach/pkg/sql/exec_util.go:1781
| github.com/cockroachdb/cockroach/pkg/sql.(*planner).isAsOf
| github.com/cockroachdb/cockroach/pkg/sql/exec_util.go:1835
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).handleAOST
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:746
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).populatePrepared
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:267
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).prepare.func1
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:235
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).prepare
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:240
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).addPreparedStmt
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:102
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execPrepare
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor_prepare.go:63
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execCmd
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1976
| github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).run
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1800
| github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn
| github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:748
| github.com/cockroachdb/cockroach/pkg/sql/pgwire.(*conn).processCommandsAsync.func1
| github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:724
| runtime.goexit
| GOROOT/src/runtime/asm_amd64.s:1581
Wraps: (6) expected *DTimestampTZ, found *tree.Placeholder
Error types: (1) *withstack.withStack (2) *safedetails.withSafeDetails (3) *withstack.withStack (4) *assert.withAssertionFailure (5) *withstack.withStack (6) *errutil.leafError
-- report composition:
*errutil.leafError: expected *DTimestampTZ, found *tree.Placeholder
datum.go:2773: *withstack.withStack (top exception)
*assert.withAssertionFailure
conn_executor.go:746: *withstack.withStack (1)
*safedetails.withSafeDetails: while executing: SELECT _, _ FROM _ AS OF SYSTEM TIME with_min_timestamp($2) WHERE _ = ANY ($1)
conn_executor.go:746: *withstack.withStack (2)
(check the extra data payloads)

Stacktrace (expand for inline code snippets):

r := recover()
h.ex.closeWrapper(ctx, r)
}()
in pkg/sql.(*Server).ServeConn.func1
GOROOT/src/runtime/panic.go#L1037-L1039 in runtime.gopanic
if !ok {
panic(errors.AssertionFailedf("expected *DTimestampTZ, found %T", e))
}
in pkg/sql/sem/tree.MustBeDTimestampTZ
Fn: func(ctx *tree.EvalContext, args tree.Datums) (tree.Datum, error) {
return withMinTimestamp(ctx, tree.MustBeDTimestampTZ(args[0]).Time)
},
in pkg/sql/sem/builtins.glob..func159
res, err := expr.fn.Fn(ctx, args)
if err != nil {
in pkg/sql/sem/tree.(*FuncExpr).Eval
d, err := te.Eval(evalCtx)
if err != nil {
in pkg/sql/sem/tree.EvalAsOfTimestamp

cockroach/pkg/sql/exec_util.go

Lines 1780 to 1782 in 242d13b

) (tree.AsOfSystemTime, error) {
asOf, err := tree.EvalAsOfTimestamp(ctx, asOfClause, &p.semaCtx, p.EvalContext(), opts...)
if err != nil {
in pkg/sql.(*planner).EvalAsOfTimestamp

cockroach/pkg/sql/exec_util.go

Lines 1834 to 1836 in 242d13b

}
asOfRet, err := p.EvalAsOfTimestamp(ctx, asOf, tree.EvalAsOfTimestampOptionAllowBoundedStaleness)
if err != nil {
in pkg/sql.(*planner).isAsOf
p := &ex.planner
asOf, err := p.isAsOf(ctx, stmt)
if err != nil {
in pkg/sql.(*connExecutor).handleAOST
p.extendedEvalCtx.PrepareOnly = true
if err := ex.handleAOST(ctx, p.stmt.AST); err != nil {
return 0, err
in pkg/sql.(*connExecutor).populatePrepared
p.semaCtx.Annotations = tree.MakeAnnotations(stmt.NumAnnotations)
flags, err = ex.populatePrepared(ctx, txn, placeholderHints, p)
return err
in pkg/sql.(*connExecutor).prepare.func1
// Use the existing transaction.
if err := prepare(ctx, ex.state.mu.txn); err != nil && origin != PreparedStatementOriginSessionMigration {
return nil, err
in pkg/sql.(*connExecutor).prepare
// Prepare the query. This completes the typing of placeholders.
prepared, err := ex.prepare(ctx, stmt, placeholderHints, rawTypeHints, origin)
if err != nil {
in pkg/sql.(*connExecutor).addPreparedStmt
stmt := makeStatement(parseCmd.Statement, ex.generateID())
_, err := ex.addPreparedStmt(
ctx,
in pkg/sql.(*connExecutor).execPrepare
stmtCtx := withStatement(ctx, ex.curStmtAST)
ev, payload = ex.execPrepare(stmtCtx, tcmd)
case DescribeStmt:
in pkg/sql.(*connExecutor).execCmd
var err error
if err = ex.execCmd(); 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
GOROOT/src/runtime/asm_amd64.s#L1580-L1582 in runtime.goexit

pkg/sql/conn_executor.go in pkg/sql.(*Server).ServeConn.func1 at line 746
GOROOT/src/runtime/panic.go in runtime.gopanic at line 1038
pkg/sql/sem/tree/datum.go in pkg/sql/sem/tree.MustBeDTimestampTZ at line 2773
pkg/sql/sem/builtins/builtins.go in pkg/sql/sem/builtins.glob..func159 at line 2703
pkg/sql/sem/tree/eval.go in pkg/sql/sem/tree.(*FuncExpr).Eval at line 4377
pkg/sql/sem/tree/as_of.go in pkg/sql/sem/tree.EvalAsOfTimestamp at line 206
pkg/sql/exec_util.go in pkg/sql.(*planner).EvalAsOfTimestamp at line 1781
pkg/sql/exec_util.go in pkg/sql.(*planner).isAsOf at line 1835
pkg/sql/conn_executor_exec.go in pkg/sql.(*connExecutor).handleAOST at line 746
pkg/sql/conn_executor_prepare.go in pkg/sql.(*connExecutor).populatePrepared at line 267
pkg/sql/conn_executor_prepare.go in pkg/sql.(*connExecutor).prepare.func1 at line 235
pkg/sql/conn_executor_prepare.go in pkg/sql.(*connExecutor).prepare at line 240
pkg/sql/conn_executor_prepare.go in pkg/sql.(*connExecutor).addPreparedStmt at line 102
pkg/sql/conn_executor_prepare.go in pkg/sql.(*connExecutor).execPrepare at line 63
pkg/sql/conn_executor.go in pkg/sql.(*connExecutor).execCmd at line 1976
pkg/sql/conn_executor.go in pkg/sql.(*connExecutor).run at line 1800
pkg/sql/conn_executor.go in pkg/sql.(*Server).ServeConn at line 748
pkg/sql/pgwire/conn.go in pkg/sql/pgwire.(*conn).processCommandsAsync.func1 at line 724
GOROOT/src/runtime/asm_amd64.s in runtime.goexit at line 1581
Tag Value
Cockroach Release v22.1.1
Cockroach SHA: 242d13b
Platform linux amd64
Distribution CCL
Environment v22.1.1
Command server
Go Version ``
# of CPUs
# of Goroutines

Jira issue: CRDB-18647

Metadata

Metadata

Assignees

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