`BatchPointGet` may read inconsistent data compared to `PointGet`.
Author: YangKeaoCreated Sep 11, 2026Updated Sep 17, 2026
Labelstype/bugsig/sql-infraseverity/majorcomponent/ddlaffects-8.1affects-8.5found-by-aiaffects-26.3
Bug Report
Please answer these questions before submitting your issue. Thanks!
1. Minimal reproduce step (Required)
CREATE TABLE t (a INT PRIMARY KEY, b INT, c INT)
PARTITION BY RANGE (a) (PARTITION p1 VALUES LESS THAN (10), PARTITION p2 VALUES LESS THAN (20));
ALTER TABLE t ADD UNIQUE INDEX idx_b (b) GLOBAL;
INSERT INTO t VALUES (1,1,1),(11,11,11);
-- Block at StateDeleteReorganization
SELECT * FROM t WHERE b = 1; -- Point_Get -> Empty
SELECT * FROM t WHERE b IN (1); -- Batch_Point_Get -> Return (1,1,1)(BUG)
SELECT * FROM t WHERE b IN (1,11);-- Batch_Point_Get -> Return (1,1,1) and (11,11,11)2. What did you expect to see? (Required)
The result of BatchPointGet and PointGet are the same.
3. What did you see instead (Required)
The results are different.
4. What is your TiDB version? (Required)
Source: pingcap/tidb