-
Notifications
You must be signed in to change notification settings - Fork 4.1k
opt: better validation of column numeric references #61563
Copy link
Copy link
Closed
Labels
C-bugCode not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.T-sql-queriesSQL Queries TeamSQL Queries Team
Description
When a query refers to a table by numeric reference (descriptor ID), it can also select a subset of columns (by column ID). It is possible that one of the specified columns is a computed column that depends on a column that is not specified. At least with virtual columns, this is not handled correctly:
CREATE TABLE public.t (
a INT8 NOT NULL,
b INT8 NULL,
c INT8 NULL AS (a + b) VIRTUAL,
CONSTRAINT "primary" PRIMARY KEY (a ASC),
FAMILY "primary" (a, b)
)
> select * from [52(1,3) AS t];
ERROR: internal error: scanned virtual column depends on non-scanned column
SQLSTATE: XX000
DETAIL: stack trace:
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:560: func1()
github.com/cockroachdb/cockroach/pkg/sql/opt/colset.go:55: func1()
github.com/cockroachdb/cockroach/pkg/util/fast_int_set.go:165: ForEach()
github.com/cockroachdb/cockroach/pkg/sql/opt/colset.go:55: ForEach()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:557: buildScan()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:410: buildScanFromTableRef()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:219: buildDataSource()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:59: buildDataSource()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1190: buildFromTablesRightDeep()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1167: buildFromTables()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1094: buildFrom()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:1015: buildSelectClause()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:963: buildSelectStmtWithoutParens()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:936: func1()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/with.go:29: processWiths()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/select.go:935: buildSelect()
github.com/cockroachdb/cockroach/pkg/sql/opt/optbuilder/builder.go:265: buildStmt()
I think this operation should be disallowed.
Jira issue: CRDB-2995
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
C-bugCode not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.T-sql-queriesSQL Queries TeamSQL Queries Team
Type
Projects
Status
Done