cockroachdb / cockroachdb/cockroach

sql: return type mismatch error in plpgsql function returning composite type

Open
#114,854 2 comments 0 reactions 0 assignees View on GitHub
A-sql-plpgsql C-bug O-pg-regress O-qa P-3 T-sql-queries
Dominant language
Go
Stars
32.5k
Forks
4.1k
PR merge metrics
PR metrics pending

Description

Repro:
```
create type compostype as (x int, y varchar);
create or replace function compos() returns compostype as $$
declare x int := 42;
begin
return x;
end;
$$ language plpgsql;
select * from compos();
```

Stacktrace:
```
ERROR: internal error: runtime error: index out of range [0] with length 0
SQLSTATE: XX000
DETAIL: stack trace:
github.com/cockroachdb/cockroach/pkg/util/errorutil/catch.go:29: ShouldCatch()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:211: func1()
GOROOT/src/runtime/panic.go:914: gopanic()
GOROOT/src/runtime/panic.go:114: goPanicIndex()
github.com/cockroachdb/cockroach/pkg/sql/sem/tree/expr.go:1703: NewTypedColumnAccessExpr()
github.com/cockroachdb/cockroach/pkg/sql/opt/norm/fold_constants_funcs.go:610: FoldColumnAccess()
github.com/cockroachdb/cockroach/bazel-out/darwin-fastbuild/bin/pkg/sql/opt/norm/factory.og.go:20645: ConstructColumnAccess()
github.com/cockroachdb/cockroach/bazel-out/darwin-fastbuild/bin/pkg/sql/opt/norm/factory.og.go:23690: Replace()
github.com/cockroachdb/cockroach/pkg/sql/opt/norm/inline_funcs.go:78: func1()
github.com/cockroachdb/cockroach/pkg/sql/opt/norm/inline_funcs.go:80: inlineConstants()
github.com/cockroachdb/cockroach/pkg/sql/opt/norm/inline_funcs.go:40: InlineProjectionConstants()
github.com/cockroachdb/cockroach/bazel-out/darwin-fastbuild/bin/pkg/sql/opt/norm/factory.og.go:1598: ConstructProject()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/project.go:62: constructProject()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/routine.go:379: finishBuildLastStmt()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/routine.go:304: buildRoutine()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/routine.go:66: buildUDF()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scalar.go:551: buildFunction()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/scalar.go:332: buildScalar()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/srfs.go:152: buildZip()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:184: buildDataSource()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:94: buildDataSource()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1435: buildFromWithLateral()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1359: buildFromTables()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1289: buildFrom()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1205: buildSelectClause()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1141: buildSelectStmtWithoutParens()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1099: func1()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/with.go:116: processWiths()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1098: buildSelect()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:341: buildStmt()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:285: buildStmtAtRootWithScope()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:266: buildStmtAtRoot()

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.
```

postgres returns the following error:
```
ERROR: cannot return non-composite value from function returning composite type
CONTEXT: PL/pgSQL function compos() line 4 at RETURN
```

Found in pg_regress plpgsql

Jira issue: CRDB-33718

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.