in 子查询中,数值重复,结果异常

Bug 反馈
清晰准确地描述您发现的问题,提供任何可能复现问题的步骤有助于研发同学及时处理问题
【 TiDB 版本】v7.1.0+
【 Bug 的影响】
查询结果错误
【可能的问题复现步骤】
建表:
CREATE TABLE in_test (
id bigint(20) unsigned NOT NULL ,
name varchar(45) NOT NULL,
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */,
KEY inx_name (name),
KEY idx_create_time (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
PARTITION BY HASH (id) PARTITIONS 128;
插入数据:
insert into in_test(id,name)
values(6700402571,‘张三’),(1624923463,‘李四’),(5837848666,‘王五’),(6542259574,‘赵六’);
查询数据:
SELECT id,name FROM in_test WHERE id IN
(1624923463, 1624923463, 5837848666, 5837848666, 6700402571, 6700402571, 6542259574,6542259574);
查询结果:


执行计划:

第三方工具,sqlyog:


2 个赞

sqlyog是连同一个tidb查的还是mysql查的

同一个tidb server查的

表为非聚簇表,再次查询,没有任何问题。
看来就是聚簇表的BUG了

同一个库同样的sql不应该返回不同,可以看看原因

其他的小伙伴可以复现吗?

1 个赞

Release Version: v7.3.0
Edition: Community
Git Commit Hash: 40b72e7a9a4fc9670d4c5d974dd503a3c6097471
Git Branch: heads/refs/tags/v7.3.0
UTC Build Time: 2023-08-08 10:08:14
GoVersion: go1.20.7
Race Enabled: false
Check Table Before Drop: false
Store: tikv

7.3.0可以复现,去掉hash PARTITION 后结果正常。

https://github.com/pingcap/tidb/issues/46779

github上看着也提交了一遍。

1 个赞

那就是hash partition + 聚簇表 产生的bug了

哟呵,蹭问题蹭够快的 :thinking:

https://github.com/pingcap/tidb/issues/46779

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。