groupby语句报错index out of range

【 TiDB 使用环境】测试
【 TiDB 版本】v6.5.0
背景:集群开始是v6.1.0版本,使用v5.4版本的备份指定库还原数据后,升级到了v6.5.0版本。

执行下列语句报错:SQL 错误 [1105] [HY000]: runtime error: index out of range [976] with length 971
image

最开始的时候,两句都报错,执行analyze table之后,只有第二句报错了。如何排查?

执行ADMIN CHECK TABLE tbs_d_cust_consume_target_cust后报错

index: PRIMARY, handle: 30186, index-values:“handle: 30186, values: [KindString 8 KindMysqlTime 2022-06-23 00:00:00 KindString 11001 KindString 会员卡 KindString VIP KindInt64 30186]” != record-values:“”

有最小复现例子吗?

我尝试复现一下

是不是数据量太大,导致查询失败

不是,数据量很小。

看起来是index 的bug,恭喜你~

admin check 先检查下 数据索引一致性

我也觉得有可能是。不过也可能是备份还原的问题,我跨大版本做的备份还原。

我也想到了这个,晚点试一下。

类似的bug遇到过好多。调整执行计划或许能调整过来

out of range 的 bug 在 6.5 还没消除吗?我记得 2.x 就有了

:yum:这是一个长期的工作,经过好几次迭代处理了~

您这个是版本跨越太大导致的吗 ???

果然报错了

#### Error 8223

`ERROR 8223 (HY000): data inconsistency in table: t2, index: i1, handle: {hello, hello}, index-values:"" != record-values:"handle: {hello, hello}, values: [KindString hello KindString hello]"`

上述错误表明,`index-values` 为空,`record-values` 不为空,说明不存在对应的索引,但存在对应的行。

还不确定

这个数据是有复现步骤了么?
使用新建的表及数据可以复现么

1、admin check说明索引和数据不一致
2、可能导致这种情况的原因有很多,比如老版本中如果开启batch dml,可能会导致此问题。
3、通常删除索引重新创建可以解决该问题
4、analyze table之后不报错的原因,可能是执行计划发生改变,没有走上有问题的索引

初步确定原因是br跨版本还原导致的

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