EXPLAIN FOR CONNECTION can fail with: runtime error index out of range [3] with length 0
- Dominant language
- Go
- Stars
- 40.5k
- Forks
- 6.2k
- PR merge metrics
- PR metrics pending
Description
## Bug Report
Please answer these questions before submitting your issue. Thanks!
### 1. Minimal reproduce step (Required)
Not easy to reproduce, but while running my tests from https://github.com/mjonss/tidb-optimizer-calibration I occationally get this.
I ran it's version cc5076d748740af5d4fe483829754502f0e02777 like `./tidb-optimizer-calibration -n 7 -s 1M,5M,10M -c 0.0075,0.01,0.02,0.05,0.075,0.1,0.15,0.2 -f 1000` and had already started tiup with `tiup playground --kv 3 --tiflash 0` on a mini PC with 64GB ram.
### 2. What did you expect to see? (Required)
`❌ Error running scenario index_10M_2000000: failed to get actual execution plan: Error 1105 (HY000): runtime error: index out of range [682] with length 0`
With the following trace from the TiDB instance:
```
runtime error: index out of range [3] with length 0
github.com/pingcap/errors.Trace
/root/go/pkg/mod/github.com/pingcap/errors@v0.11.5-0.20241219054535-6b8c588c3122/juju_adaptor.go:15
github.com/pingcap/tidb/pkg/util.GetRecoverError
/workspace/source/tidb/pkg/util/util.go:288
github.com/pingcap/tidb/pkg/executor/internal/exec.Next.func1
/workspace/source/tidb/pkg/executor/internal/exec/executor.go:440
runtime.gopanic
/usr/local/go/src/runtime/panic.go:791
runtime.goPanicIndex
/usr/local/go/src/runtime/panic.go:115
github.com/influxdata/tdigest.CentroidList.Less
/root/go/pkg/mod/github.com/influxdata/tdigest@v0.0.1/centroid.go:52
sort.partitionEqual
/usr/local/go/src/sort/zsortinterface.go:181
sort.pdqsort
/usr/local/go/src/sort/zsortinterface.go:109
sort.pdqsort
/usr/local/go/src/sort/zsortinterface.go:121
sort.Sort
/usr/local/go/src/sort/sort.go:51
github.com/influxdata/tdigest.(*TDigest).process
/root/go/pkg/mod/github.com/influxdata/tdigest@v0.0.1/tdigest.go:95
github.com/influxdata/tdigest.(*TDigest).Quantile
/root/go/pkg/mod/github.com/influxdata/tdigest@v0.0.1/tdigest.go:164
github.com/pingcap/tidb/pkg/util/execdetails.(*Percentile[...]).GetPercentile
/workspace/source/tidb/pkg/util/execdetails/execdetails.go:639
github.com/pingcap/tidb/pkg/distsql.(*selectResultRuntimeStats).String
/workspace/source/tidb/pkg/distsql/select_result.go:772
github.com/pingcap/tidb/pkg/util/execdetails.(*RootRuntimeStats).String
/workspace/source/tidb/pkg/util/execdetails/execdetails.go:1376
github.com/pingcap/tidb/pkg/planner/core.getRuntimeInfoStr
/workspace/source/tidb/pkg/planner/core/common_plans.go:1087
github.com/pingcap/tidb/pkg/planner/core.(*Explain).prepareOperatorInfo
/workspace/source/tidb/pkg/planner/core/common_plans.go:1146
github.com/pingcap/tidb/pkg/planner/core.(*Explain).explainFlatOpInRowFormat
/workspace/source/tidb/pkg/planner/core/common_plans.go:1071
github.com/pingcap/tidb/pkg/planner/core.(*Explain).explainFlatPlanInRowFormat
/workspace/source/tidb/pkg/planner/core/common_plans.go:1012
github.com/pingcap/tidb/pkg/planner/core.(*Explain).RenderResult
/workspace/source/tidb/pkg/planner/core/common_plans.go:964
github.com/pingcap/tidb/pkg/executor.(*ExplainExec).generateExplainInfo
/workspace/source/tidb/pkg/executor/explain.go:152
github.com/pingcap/tidb/pkg/executor.(*ExplainExec).Next
/workspace/source/tidb/pkg/executor/explain.go:75
github.com/pingcap/tidb/pkg/executor/internal/exec.Next
/workspace/source/tidb/pkg/executor/internal/exec/executor.go:456
github.com/pingcap/tidb/pkg/executor.(*ExecStmt).next
/workspace/source/tidb/pkg/executor/adapter.go:1304
github.com/pingcap/tidb/pkg/executor.(*recordSet).Next
/workspace/source/tidb/pkg/executor/adapter.go:172
github.com/pingcap/tidb/pkg/server/internal/resultset.(*tidbResultSet).Next
/workspace/source/tidb/pkg/server/internal/resultset/resultset.go:72
github.com/pingcap/tidb/pkg/server.(*clientConn).writeChunks
/workspace/source/tidb/pkg/server/conn.go:2326
github.com/pingcap/tidb/pkg/server.(*clientConn).writeResultSet
/workspace/source/tidb/pkg/server/conn.go:2269
github.com/pingcap/tidb/pkg/server.(*clientConn).handleStmt
/workspace/source/tidb/pkg/server/conn.go:2072
github.com/pingcap/tidb/pkg/server.(*clientConn).handleQuery
/workspace/source/tidb/pkg/server/conn.go:1780
github.com/pingcap/tidb/pkg/server.(*clientConn).dispatch
/workspace/source/tidb/pkg/server/conn.go:1379
github.com/pingcap/tidb/pkg/server.(*clientConn).Run
/workspace/source/tidb/pkg/server/conn.go:1148
```
### 3. What did you see instead (Required)
No error
### 4. What is your TiDB version? (Required)
```
tidb_version(): Release Version: v8.5.3
Edition: Community
Git Commit Hash: dc2548aac79a712265e831cff2a3a896bc0a5a38
Git Branch: HEAD
UTC Build Time: 2025-07-31 13:54:43
GoVersion: go1.23.8
Race Enabled: false
Check Table Before Drop: false
Store: tikv
```
Contributor guide
Assessment
This issue has not been assessed yet.