2.00.2

版本下载

发行日期: 2021-11-05

Linux64 binary | Linux64 JIT binary | Linux64 ABI binary | Windows64 binary | Windows64 JIT binary

新功能

  • 修改 iif 函数在 condition 包含空值时的行为。旧版本中 condition 的元素包含空值被当作 false 处理。新版本中如果为空值,对应的结果也为空值。

  • 矩阵进行 accumulate 等计算时放开8192行的限制。

  • 对维度表的并发执行写入、更新等操作时,不再抛出事务冲突异常。

  • 数据节点重启时,redolog 的回放会在日志中输出详细的进度。

  • SQL 语句中的 interval 功能(按时间聚合)移除 range 参数,同时增加可选参数 explicitOffset,默认值为 false。当该参数为 true 时,可以将第一个窗口的起始位置指定为 where 指定的窗口的起始位置。

  • olswls 在 mode 为2的时候,新增一个输出 Residual。同时新增一个函数 residual 用于计算回归的残差。

  • in(X, Y) 函数的参数 Y 支持为 NULL,当 Y 为无类型的 NULL 时,函数的返回值为 false 或每一个值为 false 的 vector。

  • 计算节点(computing node)支持客户端的所有操作。

  • SQL pivot 产生的表列名不再特殊处理,即直接使用 pivot 的值作为列名。

  • 函数 rank, denseRank, cumrank, rowRankrowDenseRank 支持 percent 形式。

  • kmeans 支持自定义质心。

  • window join 增加对 varp, stdp, prod, skewkurtosis 5个聚合函数的优化。

  • 支持对非数值类型进行 unpivot

  • 滑动窗口函数系列如 msum,当输入数据为 indexed matrix 或 indexed series 时,窗口支持时间偏移窗口类型。

  • 优化了 TSDB 引擎中 dropPartition 的性能。

  • TSDB 新增配置选项 TSDBBlockSize,可以指定 TSDB 存储时一个 block 的大小。

  • database 函数新增可选参数 atomic。当 atomic 取值为 'CHUNK' 时,写入操作只保证分区的原子性,此时也允许多个并发线程同时写入该数据库的同一个分区。

缺陷修复

  • TSDB 引擎生成的文件非常多(超过1亿个)的时候,重启会卡住。

  • TSDB 引擎的 checkPoint 文件堆积而没有删除。

  • TSDB 引擎下删除文件时,如果与后台的 merge 操作并发,有时候会导致 merge 尝试读取已被删除的文件而 crash。

  • TSDB 引擎下,写入有时会有对应事务处于 pending 状态,导致该分区无法写入数据。

  • TSDB 引擎在数据库中有 blob 列时,有时查询数据或者后台 merge 的时候会报错。

  • 大压力写入数据时,偶发写任务卡住的情况。

  • Cache Engine 处理不当,导致 symbose base 一直无法被回收。如果随着时间推移,包含 SYMBOL 类型的分区一直增加,导致内存使用量一直缓慢上升。

  • 如果事务有 rollback,则 redo log 不会被回收。

  • 写入更新删除并发时,读取文件时会出现有时读到的数据比预期少,或者某些表会有空行,或者有些 chunk 状态不正确。

  • 多次写入时重启会报:“returned from name node didn't contain any site”。

  • 控制节点高可用,重启 leader,偶尔会导致数据节点 crash。

  • 由于 raft 模块在 leader 切换时处理不当,导致控制节点在高可用的情况下,同一个 chunk 在数据节点上有时候会对应多个 chunkId。

  • 控制节点在高可用的情况下,频繁切换 leader,导致写入或查询过程中任务卡住。

  • 在大量并发线程同时增加不存在的值分区时,由于线程的冲突和重试时间太短,导致某些新增值分区添加失败,抛出异常。

  • 使用非字符串非 SYMBOL 类型的值去更新分布式表的 SYMBOL 类型列,会导致 symbol base 被破坏。

  • 集群的数据节点在重启时收到大量的客户端请求,有可能在后续的鉴权中,出现登录了却当作 guest 处理的情况。

  • tableInsert 将一个包含多行数据但某些列缺失的字典插入内存表时报异常。

  • replay 回放三个数据表表时,会出现两个表的回放速度明显快于第三个表。

  • replay 回放到持久化流数据表log会报错:“Error in Replayer::output: Immutable sub vector doesn't support method serialize”。

  • kurtosisskew 在流计算引擎中结果精度较低。

  • createDailyTimeSeriesEngine 使用 force Trigger 导致计算结果有 session 区间之外的时间。

  • TimeSeriesEngine 指定 fill 并且两个分组之间时间相差较大,计算结果可能出错。

  • createAsofJoinEngine 数据乱序时结果不对。

  • 没有输出表时,横截面引擎作为返回表会报字段缺失错误。

  • 一个引用的数据表调用函数 colNames 无法返回列名。

  • saveText 保存空表时候会抛异常。

  • cumvarpcumstdp 应用在矩阵上时错误地调用了 cumvarcumstd,导致计算结果变成基于样本的方差和标准差。

  • try catch 语句的 catch 部分包含多行代码时,实际上只有第一行代码会被执行。

  • 模块中有系统同名函数时,parseExpr 指定模块,没有优先取模块中的函数。

  • interval 函数在时间列为分区列且 duration 可以整除分区列的单位时,会多生成数据,这个 bug 是在 2.00.1 中引入的。

  • interval 函数指定 step 参数且处理的列存在缺失的区间时,结果不正确。

  • order by 在第二列为负数时,且第二列或之后的数据为浮点数(DOUBLE 或 FLOAT),且一个小组的数据的个数小于等于7个,且包含两个以上的负数,会导致负数之间的相对排序错误。

  • 诸如 exec col1 from t group by col1 的 sql 语句返回结果不是向量。

  • 对 huge temporal vector 使用 minmax 函数,应该返回对应的时间类型,但实际上返回一个长整型。

  • mskew 输入的值过大会出现非法值INF。

  • 使用 funcByName 且参数为聚合函数时,和 context by 同时使用结果只会返回一行。

  • window join 在右表时间列有重复值时计算结果不正确。

  • 自定义函数中的常量均被标记为 static,使用时必须先复制。函数序列化时丢失了static标记。

  • JIT 版本的数据节点在 loadColumn 的时候,若发生 OOM,则会 crash。