THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
- 不需要解压的查询
- 范围查询
Select s1 where time > 3 and time < 10
Group by - 需要解压进行插值计算的查询
- 点查询
Select s1 where time = 3- 需要注意 time = 3 的前后两点,是否跨page
- 调用 SDTDecoder
- S1 time = 3 的数据点经过压缩,并存在了磁盘,直接返回该点
- S1 time = 3 的数据点不存在,找到s1 time = 3 的前后两个数据点并进行插值计算
- 点查询
点查询
- Ie time = x,page1, page2, page3 ..
- return null
- 在该ts 第一个和最后一个时间戳之外,不进行插值计算
- 遍历pageReaders 的时候,记录 maxPrevPair, minNextPair
- 若存在time = 3 的数据点,直接返回
- 若最后遍历完getValue == null,则通过 maxPrevPair, minNextPair 进行插值计算
- 遍历pageData 的时候,记录maxPrevPage, minNextPage 若生成pageReaders.size == 0,则通过 maxPrevPage, minNextPage 进行unpack page,decoder 返回插值计算的结果select s1 from root.sg.d where time = x
- 若x < page1.startime || x > page3.endtime
- 在该ts 第一个和最后一个时间戳之外,不进行插值计算
- 若x >= page2.startime && x <= page2.endtime
- 遍历pageReaders 的时候,记录 maxPrevPair, minNextPair
- 若存在time = 3 的数据点,直接返回
- 若最后遍历完getValue == null,则通过 maxPrevPair, minNextPair 进行插值计算
- 若x >= page2.endtime && x <= page3.starttime
- 遍历pageData 的时候,记录maxPrevPage, minNextPage
- 若生成pageReaders.size == 0,则通过 maxPrevPage, minNextPage 进行unpack page,decoder 返回插值计算的结果
范围查询
- 与当前逻辑一致,直接返回压缩后的结果集,不进行插值计算
...