tiflash查询结果不对

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【问题】 当前遇到的问题
查询(多表join,t_product是其中一个表)结果行数比实际得少.
具体经过:表t_product,80多列,在v5.0.1版本创建tiflash表会失败,最近升级到v5.0.2后,创建tiflash成功了.但是,不久后业务反馈:查到的结果行数比mysql查到的结果少;更奇怪的是,拿mysql查到的id在tidb上in 语法指定id查询,可以全部查到.不指定id反而查到更少(少很多).且能稳定重现.对比执行计划发现:指定id查,走tikv,不指定id查,走tiflash; 最后,tiflash删掉该表查询验证,结果也是对的.所以判断是tiflash的问题.

【TiDB 版本】
Release Version: v5.0.2
Edition: Community
Git Commit Hash: dc40a093a0058b95fc859f60d4b84337dbdff9f6
Git Branch: heads/refs/tags/v5.0.2
UTC Build Time: 2021-06-07 08:42:39
GoVersion: go1.13
Race Enabled: false
TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
Check Table Before Drop: false

关注ing,看看论坛里有没有熟悉这一块的大佬来回答下

我猜t_product 列太多才触发这个bug,不过没证据

  1. 麻烦具体说明下,比如:表结构,查询sql ,explain analyze sql 使用 tikv 和tiflash 的结果。
  2. mysql 查询结果等,多谢。

已私信回复您

如果可以请重新添加下复现问题,多谢。

已私信回复您

请问有相关的信息反馈吗

您好,看执行计划,没有找到问题。目前的方法可能需要您帮忙测试一下,缩小范围。

  1. 分别指定走 tikv 和 tiflash ,每次减少一个 filter (即 where 条件),看看再哪个条件导致的查询结果不一致。辛苦了,多谢。
  2. 或者就是可以给一个可以复现的最小测试数据,我们来测试也可以,多谢。

最新的测试结果已私聊您。

去掉以下的条件可以得到完整的结果,同时在4.0.11版本存在一样的问题
and UNIX_TIMESTAMP() BETWEEN b.begin_date and b.end_date

或者把上述条件改为以下,也可得到完整的结果
and b.begin_date <= UNIX_TIMESTAMP() and b.end_date >= UNIX_TIMESTAMP()