Open cockroach-teamcity opened 2 years ago
Repro:
SELECT array_length('{}', 1);
Let me know if I can help with this. To convert that to an array, we need to use the tree.ParseDArrayFromString
function which my team has done work on.
I think throwing an error would be ok. Here's PostgreSQL 14.5:
michae2=# SELECT array_length('{a}'::text[], 1);
array_length
--------------
1
(1 row)
michae2=# SELECT array_length('{}'::text[], 1);
array_length
--------------
(1 row)
michae2=# SELECT array_length('{a}', 1);
2022-10-17 14:04:57.274 PDT [15585] ERROR: could not determine polymorphic type because input has type unknown
2022-10-17 14:04:57.274 PDT [15585] STATEMENT: SELECT array_length('{a}', 1);
ERROR: could not determine polymorphic type because input has type unknown
michae2=# SELECT array_length('{}', 1);
2022-10-17 14:03:47.327 PDT [15585] ERROR: could not determine polymorphic type because input has type unknown
2022-10-17 14:03:47.327 PDT [15585] STATEMENT: SELECT array_length('{}', 1);
ERROR: could not determine polymorphic type because input has type unknown
And here's tip of master (v22.2.0-alpha.3-1196-g7be0b20edb):
demo@127.0.0.1:26257/defaultdb> SELECT array_length('{a}'::string[], 1);
array_length
----------------
1
(1 row)
Time: 1ms total (execution 1ms / network 0ms)
demo@127.0.0.1:26257/defaultdb> SELECT array_length('{}'::string[], 1);
array_length
----------------
NULL
(1 row)
Time: 1ms total (execution 0ms / network 0ms)
demo@127.0.0.1:26257/defaultdb> SELECT array_length('{a}', 1);
ERROR: unknown signature: array_length(string, int)
SQLSTATE: 42883
demo@127.0.0.1:26257/defaultdb> SELECT array_length('{}', 1);
ERROR: internal error: expected *DArray, found *tree.DString
SQLSTATE: XX000
DETAIL: stack trace:
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/datum.go:4359: MustBeDArray()
github.com/cockroachdb/cockroach/pkg/sql/sem/builtins/builtins.go:3473: func179()
github.com/cockroachdb/cockroach/pkg/sql/sem/eval/expr.go:479: EvalFuncExpr()
github.com/cockroachdb/cockroach/bazel-out/darwin-fastbuild/bin/pkg/sql/sem/tree/eval_expr_generated.go:266: Eval()
github.com/cockroachdb/cockroach/pkg/sql/sem/eval/expr.go:26: Expr()
github.com/cockroachdb/cockroach/pkg/sql/opt/norm/fold_constants_funcs.go:636: FoldFunction()
github.com/cockroachdb/cockroach/bazel-out/darwin-fastbuild/bin/pkg/sql/opt/norm/factory.og.go:19928: ConstructFunction()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scalar.go:560: buildFunction()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scalar.go:333: buildScalar()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/project.go:181: buildProjectionList()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1081: buildSelectClause()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1000: buildSelectStmtWithoutParens()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:969: func1()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/with.go:116: processWiths()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:968: buildSelect()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:305: buildStmt()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:252: buildStmtAtRoot()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:226: Build()
github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:563: buildExecMemo()
github.com/cockroachdb/cockroach/pkg/sql/plan_opt.go:231: makeOptimizerPlan()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1477: makeExecPlan()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1102: dispatchToExecutionEngine()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:731: execStmtInOpenState()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:129: func1()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:2423: execWithProfiling()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:128: execStmt()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1921: func1()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1926: execCmd()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:1846: run()
github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:828: ServeConn()
github.com/cockroachdb/cockroach/pkg/sql/pgwire/conn.go:728: func1()
GOROOT/src/runtime/asm_amd64.s:1594: goexit()
HINT: You have encountered an unexpected error.
Please check the public issue tracker to check whether this problem is
already tracked. If you cannot find it there, please report the error
with details by creating a new issue.
If you would rather not post publicly, please contact us directly
using the support form.
We appreciate your feedback.
This is a regression in 22.1.0. On 21.2.17 we return an error instead of asserting:
demo@127.0.0.1:26257/defaultdb> SELECT array_length('{}', 1);
ERROR: unknown signature: array_length(string, int)
SQLSTATE: 42883
We have marked this issue as stale because it has been inactive for 12 months. If this issue is still relevant, removing the stale label or adding a comment will keep it active. Otherwise, we'll close it in 10 days to keep the issue queue tidy.
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/3670620999/?referrer=webhooks_plugin
Panic message:
Stacktrace (expand for inline code snippets):
https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/sem/tree/datum.go#L4201-L4203 in pkg/sql/sem/tree.MustBeDArray https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/sem/builtins/builtins.go#L3477-L3479 in pkg/sql/sem/builtins.glob..func200 https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/sem/tree/eval.go#L4392-L4394 in pkg/sql/sem/tree.(*FuncExpr).Eval https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/opt/norm/fold_constants_funcs.go#L622-L624 in pkg/sql/opt/norm.(*CustomFuncs).FoldFunction https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/bazel-out/k8-opt/bin/pkg/sql/opt/norm/factory.og.go#L19857-L19859 in pkg/sql/opt/norm.(*Factory).ConstructFunction https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/opt/optbuilder/scalar.go#L542-L544 in pkg/sql/opt/optbuilder.(*Builder).buildFunction https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/opt/optbuilder/scalar.go#L321-L323 in pkg/sql/opt/optbuilder.(*Builder).buildScalar https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/opt/optbuilder/project.go#L180-L182 in pkg/sql/opt/optbuilder.(*Builder).buildProjectionList https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/opt/optbuilder/select.go#L1008-L1010 in pkg/sql/opt/optbuilder.(*Builder).buildSelectClause https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/opt/optbuilder/select.go#L927-L929 in pkg/sql/opt/optbuilder.(*Builder).buildSelectStmtWithoutParens https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/opt/optbuilder/select.go#L900-L902 in pkg/sql/opt/optbuilder.(*Builder).buildSelect.func1 https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/opt/optbuilder/with.go#L114-L116 in pkg/sql/opt/optbuilder.(*Builder).processWiths https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/opt/optbuilder/select.go#L899-L901 in pkg/sql/opt/optbuilder.(*Builder).buildSelect https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/opt/optbuilder/builder.go#L280-L282 in pkg/sql/opt/optbuilder.(*Builder).buildStmt https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/opt/optbuilder/builder.go#L240-L242 in pkg/sql/opt/optbuilder.(*Builder).buildStmtAtRoot https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/opt/optbuilder/builder.go#L214-L216 in pkg/sql/opt/optbuilder.(*Builder).Build https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/plan_opt.go#L411-L413 in pkg/sql.(*optPlanningCtx).buildReusableMemo https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/plan_opt.go#L151-L153 in pkg/sql.(*planner).prepareUsingOptimizer https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/conn_executor_prepare.go#L286-L288 in pkg/sql.(*connExecutor).populatePrepared https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/conn_executor_prepare.go#L238-L240 in pkg/sql.(*connExecutor).prepare.func2 https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/conn_executor_prepare.go#L243-L245 in pkg/sql.(*connExecutor).prepare https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/conn_executor_prepare.go#L106-L108 in pkg/sql.(*connExecutor).addPreparedStmt https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/conn_executor_prepare.go#L67-L69 in pkg/sql.(*connExecutor).execPrepare https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/conn_executor.go#L1992-L1994 in pkg/sql.(*connExecutor).execCmd https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/conn_executor.go#L1816-L1818 in pkg/sql.(*connExecutor).run https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/conn_executor.go#L762-L764 in pkg/sql.(*Server).ServeConn https://github.com/cockroachdb/cockroach/blob/bdcab67f778617515597f1012f37f14f622b15a0/pkg/sql/pgwire/conn.go#L727-L729 in pkg/sql/pgwire.(*conn).processCommandsAsync.func1 GOROOT/src/runtime/asm_amd64.s#L1580-L1582 in runtime.goexitv22.1.8
Jira issue: CRDB-20524