Skip to content

sql: panic during fast path uniqueness check duplicate key violation #115377

@mgartner

Description

@mgartner

The following test causes a panic:

# LogicTest: multiregion-9node-3region-3azs !metamorphic-batch-sizes

statement ok
SET CLUSTER SETTING kv.closed_timestamp.side_transport_interval = '10ms';

statement ok
SET CLUSTER SETTING kv.closed_timestamp.target_duration = '10ms';

statement ok
CREATE DATABASE multi_region_test_db PRIMARY REGION "ca-central-1" REGIONS "ap-southeast-2", "us-east-1" SURVIVE REGION FAILURE;

statement ok
USE multi_region_test_db

statement ok
CREATE TABLE t (
  k INT PRIMARY KEY,
  a INT,
  b INT,
  UNIQUE (a, b)
) LOCALITY REGIONAL BY ROW

statement ok
INSERT INTO t VALUES (1, 10, 100)

query T
EXPLAIN
INSERT INTO t VALUES (2, 10, 100)
----
distribution: local
vectorized: true
·
• insert fast path
  into: t(k, a, b, crdb_region)
  auto commit
  uniqueness check: t@t_pkey
  uniqueness check: t@t_a_b_key
  size: 5 columns, 1 row

statement ok
INSERT INTO t VALUES (2, 11, 100)

# ‼️The following statement causes a panic.
statement ok
INSERT INTO t VALUES (2, 10, 101)

The stacktrace:

* ERROR: a SQL panic has occurred while executing the following statement:
* INSERT INTO t VALUES (2, 10, 101)
*
*
* ERROR: a panic has occurred!
* runtime error: index out of range [2] with length 2
* (1) attached stack trace
*   -- stack trace:
*   | github.com/cockroachdb/cockroach/pkg/sql.(*Server).ServeConn.func1
*   | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor.go:949
*   | [...repeated from below...]
* Wraps: (2) while executing: INSERT INTO _ VALUES (_, _, __more1_10__)
* 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:949
*   | runtime.gopanic
*   | 	GOROOT/src/runtime/panic.go:914
*   | github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError.func1
*   | 	github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:58
*   | runtime.gopanic
*   | 	GOROOT/src/runtime/panic.go:914
*   | runtime.goPanicIndex
*   | 	GOROOT/src/runtime/panic.go:114
*   | github.com/cockroachdb/cockroach/pkg/sql/opt/exec/execbuilder.mkFastPathUniqueCheckErr
*   | 	github.com/cockroachdb/cockroach/pkg/sql/opt/exec/execbuilder/mutation.go:890
*   | github.com/cockroachdb/cockroach/pkg/sql/opt/exec/execbuilder.(*Builder).tryBuildFastPathInsert.func1
*   | 	github.com/cockroachdb/cockroach/pkg/sql/opt/exec/execbuilder/mutation.go:201
*   | github.com/cockroachdb/cockroach/pkg/sql.(*insertFastPathCheck).errorForRow
*   | 	github.com/cockroachdb/cockroach/pkg/sql/insert_fast_path.go:151
*   | github.com/cockroachdb/cockroach/pkg/sql.(*insertFastPathNode).runUniqChecks
*   | 	github.com/cockroachdb/cockroach/pkg/sql/insert_fast_path.go:317
*   | github.com/cockroachdb/cockroach/pkg/sql.(*insertFastPathNode).BatchedNext
*   | 	github.com/cockroachdb/cockroach/pkg/sql/insert_fast_path.go:496
*   | github.com/cockroachdb/cockroach/pkg/sql.(*rowCountNode).startExec
*   | 	github.com/cockroachdb/cockroach/pkg/sql/plan_batch.go:173
*   | github.com/cockroachdb/cockroach/pkg/sql.startExec.func2
*   | 	github.com/cockroachdb/cockroach/pkg/sql/plan.go:520
*   | github.com/cockroachdb/cockroach/pkg/sql.(*planVisitor).visitInternal.func1
*   | 	github.com/cockroachdb/cockroach/pkg/sql/walk.go:112
*   | github.com/cockroachdb/cockroach/pkg/sql.(*planVisitor).visitInternal
*   | 	github.com/cockroachdb/cockroach/pkg/sql/walk.go:299
*   | github.com/cockroachdb/cockroach/pkg/sql.(*planVisitor).visit
*   | 	github.com/cockroachdb/cockroach/pkg/sql/walk.go:79
*   | github.com/cockroachdb/cockroach/pkg/sql.walkPlan
*   | 	github.com/cockroachdb/cockroach/pkg/sql/walk.go:43
*   | github.com/cockroachdb/cockroach/pkg/sql.startExec
*   | 	github.com/cockroachdb/cockroach/pkg/sql/plan.go:523
*   | github.com/cockroachdb/cockroach/pkg/sql.(*planNodeToRowSource).Start
*   | 	github.com/cockroachdb/cockroach/pkg/sql/plan_node_to_row_source.go:175
*   | github.com/cockroachdb/cockroach/pkg/sql/colflow.(*FlowCoordinator).Start.func1
*   | 	github.com/cockroachdb/cockroach/pkg/sql/colflow/flow_coordinator.go:120
*   | github.com/cockroachdb/cockroach/pkg/sql/colexecerror.CatchVectorizedRuntimeError
*   | 	github.com/cockroachdb/cockroach/pkg/sql/colexecerror/error.go:92
*   | github.com/cockroachdb/cockroach/pkg/sql/colflow.(*FlowCoordinator).Start
*   | 	github.com/cockroachdb/cockroach/pkg/sql/colflow/flow_coordinator.go:119
*   | github.com/cockroachdb/cockroach/pkg/sql/execinfra.(*ProcessorBaseNoHelper).Run
*   | 	github.com/cockroachdb/cockroach/pkg/sql/execinfra/processorsbase.go:725
*   | github.com/cockroachdb/cockroach/pkg/sql/flowinfra.(*FlowBase).Run
*   | 	github.com/cockroachdb/cockroach/pkg/sql/flowinfra/flow.go:579
*   | github.com/cockroachdb/cockroach/pkg/sql/colflow.(*vectorizedFlow).Run
*   | 	github.com/cockroachdb/cockroach/pkg/sql/colflow/vectorized_flow.go:305
*   | github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).Run
*   | 	github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:910
*   | github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).PlanAndRun
*   | 	github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:1957
*   | github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).PlanAndRunAll.func3
*   | 	github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:1672
*   | github.com/cockroachdb/cockroach/pkg/sql.(*DistSQLPlanner).PlanAndRunAll
*   | 	github.com/cockroachdb/cockroach/pkg/sql/distsql_running.go:1675
*   | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execWithDistSQLEngine
*   | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:2358
*   | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).dispatchToExecutionEngine
*   | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1898
*   | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmtInOpenState
*   | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:1108
*   | github.com/cockroachdb/cockroach/pkg/sql.(*connExecutor).execStmt.func1
*   | 	github.com/cockroachdb/cockroach/pkg/sql/conn_executor_exec.go:146
* Wraps: (4) runtime error: index out of range [2] with length 2
* Error types: (1) *withstack.withStack (2) *safedetails.withSafeDetails (3) *withstack.withStack (4) runtime.boundsError
*
panic: runtime error: index out of range [2] with length 2 [recovered]
	panic: runtime error: index out of range [2] with length 2 [recovered]
	panic: runtime error: index out of range [2] with length 2

Jira issue: CRDB-34002

Metadata

Metadata

Assignees

Labels

C-bugCode not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.GA-blockerO-qaT-sql-queriesSQL Queries Teambranch-release-23.2Used to mark GA and release blockers, technical advisories, and bugs for 23.2v23.2.1

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions