#68048·tidb

executor: query with TiFlash MPP and ORDER BY ... COLLATE ..., id LIMIT 1 panics with index out of range

Author: lilinghaiCreated Apr 25, 2026Updated Sep 17, 2026
Labelstype/bugsig/executionseverity/majormay-affects-7.1may-affects-7.5may-affects-8.1may-affects-8.5

Bug Report

1. Minimal reproduce step (Required)

sql
DROP DATABASE IF EXISTS gc_min_issue;
CREATE DATABASE gc_min_issue;
USE gc_min_issue;

DROP TABLE IF EXISTS t_min_cmp;
CREATE TABLE t_min_cmp (
  id bigint NOT NULL,
  a int DEFAULT NULL,
  b int DEFAULT NULL,
  s varchar(1) DEFAULT NULL,
  PRIMARY KEY (id)
);

INSERT INTO t_min_cmp VALUES (1, 0, 1, 'y');

ALTER TABLE t_min_cmp SET TIFLASH REPLICA 1;

-- wait until TiFlash replica becomes available
SELECT TABLE_SCHEMA, TABLE_NAME, REPLICA_COUNT, AVAILABLE, PROGRESS
FROM information_schema.tiflash_replica
WHERE TABLE_SCHEMA = 'gc_min_issue' AND TABLE_NAME = 't_min_cmp';

SET @@tidb_isolation_read_engines = 'tiflash';
SET @@tidb_allow_mpp = 1;
SET @@tidb_enforce_mpp = 1;

SELECT id
FROM t_min_cmp
WHERE a = 0 AND b = 1
ORDER BY s COLLATE utf8mb4_general_ci, id
LIMIT 1;

2. What did you expect to see? (Required)

The query should return:

1

3. What did you see instead (Required)

The query fails with:

ERROR 1105 (HY000): runtime error: index out of range [2] with length 2

The original larger reproduction that was minimized to the SQL above produced the following complete recovered panic stack in TiDB logs:

[2026/04/25 09:30:52.810 +00:00] [WARN] [conn.go:1246] ["command dispatched failed"] [conn=2533367824] [session_alias=] [connInfo="id:2533367824, addr:10.200.0.166:50066 status:10, collation:utf8mb4_general_ci, user:root"] [command=Query] [status="inTxn:0, autocommit:1"] [sql=" SELECT `id` FROM `t_plain` WHERE `a` IS NULL AND `d` LIKE '%A%' ORDER BY (`s` COLLATE utf8mb4_general_ci) , `id` LIMIT 1"] [txn_mode=PESSIMISTIC] [timestamp=465858580392443905] [err="runtime error: index out of range [2] with length 2
github.com/pingcap/errors.Trace
	/go/pkg/mod/github.com/pingcap/[email protected]/juju_adaptor.go:15
github.com/pingcap/tidb/pkg/util.GetRecoverError
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/util/util.go:296
github.com/pingcap/tidb/pkg/executor/internal/exec.Next.func1
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/executor/internal/exec/executor.go:545
runtime.gopanic
	/go/pkg/mod/golang.org/[email protected]/src/runtime/panic.go:783
runtime.goPanicIndex
	/go/pkg/mod/golang.org/[email protected]/src/runtime/panic.go:115
github.com/pingcap/tidb/pkg/util/chunk.(*Chunk).swapColumn
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/util/chunk/chunk.go:256
github.com/pingcap/tidb/pkg/util/chunk.(*ColumnSwapHelper).SwapColumns
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/util/chunk/chunk_util.go:306
github.com/pingcap/tidb/pkg/expression.(*EvaluatorSuite).Run
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/expression/evaluator.go:139
github.com/pingcap/tidb/pkg/executor.(*ProjectionExec).unParallelExecute
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/executor/projection.go:227
github.com/pingcap/tidb/pkg/executor.(*ProjectionExec).Next
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/executor/projection.go:205
github.com/pingcap/tidb/pkg/executor/internal/exec.Next
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/executor/internal/exec/executor.go:576
github.com/pingcap/tidb/pkg/executor.(*ProjectionExec).unParallelExecute
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/executor/projection.go:218
github.com/pingcap/tidb/pkg/executor.(*ProjectionExec).Next
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/executor/projection.go:205
github.com/pingcap/tidb/pkg/executor/internal/exec.Next
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/executor/internal/exec/executor.go:576
github.com/pingcap/tidb/pkg/executor.(*ExecStmt).next
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/executor/adapter.go:1453
github.com/pingcap/tidb/pkg/executor.(*recordSet).Next
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/executor/adapter.go:190
github.com/pingcap/tidb/pkg/server/internal/resultset.(*tidbResultSet).Next
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/server/internal/resultset/resultset.go:186
github.com/pingcap/tidb/pkg/server.(*clientConn).writeChunks
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/server/conn.go:2449
github.com/pingcap/tidb/pkg/server.(*clientConn).writeResultSet
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/server/conn.go:2376
github.com/pingcap/tidb/pkg/server.(*clientConn).handleStmt
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/server/conn.go:2161
github.com/pingcap/tidb/pkg/server.(*clientConn).handleQuery
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/server/conn.go:1870
github.com/pingcap/tidb/pkg/server.(*clientConn).dispatch
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/server/conn.go:1460
github.com/pingcap/tidb/pkg/server.(*clientConn).Run
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/server/conn.go:1196
github.com/pingcap/tidb/pkg/server.(*Server).onConn
	/home/jenkins/agent/workspace/build-common/go/src/github.com/pingcap/tidb/pkg/server/server.go:791
runtime.goexit
	/go/pkg/mod/golang.org/[email protected]/src/runtime/asm_amd64.s:1693"]

4. What is your TiDB version? (Required)

Release Version: v9.0.0
Git Commit Hash: 4ae7a12ae7884061a9b095584fd22bc3eab23112
UTC Build Time: 2026-04-25 02:22:25
GoVersion: go1.25.9
Store: tikv