Skip to content

sql: internal error when creating partial index with predicate that references a UDF #155488

Description

@mgartner
CREATE FUNCTION is_even(i INT) RETURNS BOOL AS $$
  SELECT i % 2 = 0;
$$ LANGUAGE SQL IMMUTABLE;

CREATE TABLE t (
  k INT PRIMARY KEY,
  a INT,
  INDEX (a) WHERE is_even(k)
);

CREATE INDEX partial_idx ON t(a) WHERE is_even(k);
-- ERROR: internal error: executing declarative schema change PostCommitPhase stage 7 of 7 with 1 ValidationType op (rollback=false) for CREATE INDEX: VERIFY INDEX: unexpected expression during partial index normalization: *memo.ProjectExpr
-- SQLSTATE: XX000
-- DETAIL: stack trace:
-- pkg/sql/opt/optbuilder/partial_index.go:198: buildPartialIndexPredicate()
-- pkg/sql/opt/optbuilder/partial_index.go:99: addPartialIndexPredicatesForTable()
-- pkg/sql/opt/optbuilder/select.go:755: buildScan()
-- pkg/sql/opt/optbuilder/select.go:484: buildScanFromTableRef()
-- pkg/sql/opt/optbuilder/select.go:280: buildDataSource()
-- pkg/sql/opt/optbuilder/select.go:89: buildDataSource()
-- pkg/sql/opt/optbuilder/select.go:1404: buildFromTablesRightDeep()
-- pkg/sql/opt/optbuilder/select.go:1381: buildFromTables()
-- pkg/sql/opt/optbuilder/select.go:1306: buildFrom()
-- pkg/sql/opt/optbuilder/select.go:1222: buildSelectClause()
-- pkg/sql/opt/optbuilder/select.go:1154: buildSelectStmtWithoutParens()
-- pkg/sql/opt/optbuilder/select.go:1106: func1()
-- pkg/sql/opt/optbuilder/with.go:110: processWiths()
-- pkg/sql/opt/optbuilder/select.go:1105: buildSelect()
-- pkg/sql/opt/optbuilder/builder.go:393: buildStmt()
-- pkg/sql/opt/optbuilder/builder.go:331: buildStmtAtRootWithScope()
-- pkg/sql/opt/optbuilder/builder.go:307: buildStmtAtRoot()
-- pkg/sql/opt/optbuilder/builder.go:286: Build()
-- pkg/sql/plan_opt.go:855: buildExecMemo()
-- pkg/sql/plan_opt.go:261: makeOptimizerPlan()
-- pkg/sql/conn_executor_exec.go:3199: makeExecPlan()
-- pkg/sql/conn_executor_exec.go:2775: dispatchToExecutionEngine()
-- pkg/sql/conn_executor_exec.go:1067: execStmtInOpenState()
-- pkg/sql/conn_executor_exec.go:175: func2()
-- pkg/sql/conn_executor_exec.go:4394: execWithProfiling()
-- pkg/sql/conn_executor_exec.go:174: execStmt()
-- pkg/sql/conn_executor.go:2374: func1()
-- pkg/sql/conn_executor.go:2379: execCmd()
-- pkg/sql/conn_executor.go:2287: run()
-- pkg/sql/internal.go:258: func2()
-- src/runtime/asm_arm64.s:1223: goexit()

Jira issue: CRDB-55454

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-partial-indexesRelating to partial indexes.A-schema-changesC-bugCode not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.E-quick-winLikely to be a quick win for someone experienced.O-qaT-sql-queriesSQL Queries Teamdocs-known-limitation

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Bugs to Fix

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions