last_row return wrong result
General Questions
A general question should be related to TDengine's user's manual, user experience, milestones, business cooperations etc.
根据issue295和issue293
查询超级表下属子表的值只需要使用last_row关键字。但是我测试过程中出现了last_row返回的数据不正确的问题。
测试的过程如下
使用表名的最后四位作为小数,时间戳的毫秒作为整数生成数值,对应的时间作为时间写入到数据库中。
当我使用last_row关键字进行查询的时候发现数据居然和我生成的规则不一致,比如时间为2024-02-08 16:53:27.817表名为abcdefghijklmnopqrstuvwxyzabc0147的数据,按照生成逻辑应该是817.147,实际查询也是这样。
不过使用last_row关键字进行查询的时候可能就会出现时间与数值的逻辑不对应的结果。这里是对应的截图,子表和超级表查询都会出现这个问题。
补充:
我的集群有三台4C8G虚拟机
taos版本是3.2.2.0
使用的是springboot进行插入,可能会有多线程写入的可能。
建库语句
create database kkstable CACHEMODEL 'last_row' DURATION 30 WAL_FSYNC_PERIOD 60000 KEEP 3650 REPLICA 1 VGROUPS 3 STT_TRIGGER 1
建表语句create stable kkstable.kksstable (ts timestamp,current float) TAGS (kks binary(33));
测试过程中使用last_row关键字进行查询发现current字段数值不变,ts字段一直在变。
把缓存模式从last_row改为了last_value就处理了,不知道是不是说明理解不清晰。
看起来像bug
可以加我微信远程排查一下
a15652223354
https://github.com/zhujiaxin/tdengine-24754-reproduce
复现仓库已创建。
看起来像bug
可以加我微信远程排查一下
a15652223354
已经添加了,貌似只有float类型的数据才会出这个问题~
碰到类似的问题,last_row存储的数据不会被删掉,即使数据过期被全部删除之后,执行select count(*)结果返回0,last_row模式还是会显示最后一条数据。