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 指定的窗口的起始位置。 -
ols
和wls
在 mode 为2的时候,新增一个输出 Residual。同时新增一个函数residual
用于计算回归的残差。 -
in(X, Y) 函数的参数 Y 支持为 NULL,当 Y 为无类型的 NULL 时,函数的返回值为 false 或每一个值为 false 的 vector。
-
计算节点(computing node)支持客户端的所有操作。
-
SQL pivot 产生的表列名不再特殊处理,即直接使用 pivot 的值作为列名。
-
函数
rank
,denseRank
,cumrank
,rowRank
和rowDenseRank
支持 percent 形式。 -
kmeans
支持自定义质心。 -
window join 增加对
varp
,stdp
,prod
,skew
和kurtosis
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”。 -
kurtosis
和skew
在流计算引擎中结果精度较低。 -
createDailyTimeSeriesEngine
使用 force Trigger 导致计算结果有 session 区间之外的时间。 -
TimeSeriesEngine 指定 fill 并且两个分组之间时间相差较大,计算结果可能出错。
-
createAsofJoinEngine
数据乱序时结果不对。 -
没有输出表时,横截面引擎作为返回表会报字段缺失错误。
-
一个引用的数据表调用函数
colNames
无法返回列名。 -
saveText
保存空表时候会抛异常。 -
cumvarp
和cumstdp
应用在矩阵上时错误地调用了cumvar
和cumstd
,导致计算结果变成基于样本的方差和标准差。 -
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 使用
min
和max
函数,应该返回对应的时间类型,但实际上返回一个长整型。 -
mskew
输入的值过大会出现非法值INF。 -
使用
funcByName
且参数为聚合函数时,和 context by 同时使用结果只会返回一行。 -
window join 在右表时间列有重复值时计算结果不正确。
-
自定义函数中的常量均被标记为 static,使用时必须先复制。函数序列化时丢失了static标记。
-
JIT 版本的数据节点在
loadColumn
的时候,若发生 OOM,则会 crash。