2.00.15
注:
同时建议阅读兼容性说明。
新功能
- 新增一系列函数与配置项,以增强登录安全性,包括(2.00.15.1):
- 支持配置登录失败自动锁定
- 手动锁定/解锁用户、查看用户锁定状态
- 自定义密码复杂度规则、密码有效期提醒及防止密码复用等功能。
- 新增配置项 enableStructuredAuditLog,支持开启结构化二进制格式的审计日志。(2.00.15.1)
- 新增函数
scramClientFirst和scramClientFinal,并为createUser函数新增 authMode 参数,以支持 SCRAM (Salted Challenge Response Authentication Mechanism) 协议。(2.00.15.1) - 新增配置项 enableHctEncryption,设置是否使用海光密码技术HCT(Hygon Cryptographic Technology)对静态加密、DolphinModule 加密进行加速。(2.00.15.1)
- 新增支持数据静态加密(Transparent Data Encryption,简称 TDE)。
- 新增支持数据传输加密。
- 增强登录安全性。
- 新增支持数据脱敏。
- 新增配置项 maxJoinTaskRetry,用于设置在内存紧张时单个SQL JOIN 子任务的最大重试次数。
- 新增配置项 allowTSDBLevel3Compaction,用于设置是否启用 level 3 层级的 Level File
的合并。同时,
triggerTSDBCompaction函数新增参数 level, 用于指定触发哪一层级的 Level File 合并。 - 新增函数
floatingRateBondDirtyPrice,用于计算浮息债每 100 面值的含息价格。 - 新增函数
callableFixedRateBondDirtyPrice,用于计算含权固息债的含息价格。 - 新增函数
convertibleFixedRateBondDirtyPrice,用于计算固息可转债每 100 面值的含息价格 。 - 新增函数
amortizingFixedRateBondDirtyPrice,用于计算摊还本金固息债券每 100 面值的含息价格。 - 新增函数
getDFSDatabasesByOwner,用于查询当前集群中所有由指定用户创建的数据库。 - 新增函数
gmd5和rowGmd5,用于计算 MD5 哈希值。 - 新增函数
cubicHermiteSplineFit,用于对一组数值向量进行三次埃尔米特(Hermite)插值。 - 新增函数
rms,用于计算均方根。 - 新增函数
boxcox,通过 Box-Cox 变换将输入数据转换为近似正态分布。 - 新增函数
arima,用于实现差分整合移动平均自回归模型(ARIMA),以进行时间序列分析。 - 新增函数
runSQL,通过支持变量传递参数,有效防范 SQL 注入风险。 - 新增函数
getSlaveReplicationExecutionStatus,支持在从集群数据节点上获取每个线程异步复制任务的执行状态。 - 新增支持通过
setDynamicConfig函数在线修改 enableNullSafeJoin 配置项。同时,新增函数getEnableNullSafeJoin用于获取在线修改后的 enableNullSafeJoin 配置值。 - 新增内存在线事务处理(IMOLTP)引擎,支持将所有数据存储在内存中。
- 新增物联网点位管理(IOTDB)引擎,支持设备点位管理功能。
- 新增
notLike、notBetween、notInSQL 谓词及其对应函数,以支持更多匹配条件。
功能优化
- 优化存算分离以下功能(2.00.15.1):
- 支持在单个节点上指定多个物理路径作为缓存目录。
- 计算节点的内存缓存容量上限单位由 MB 修改为 GB。
- 在安全关机后,计算节点的内存缓存会自动刷新到磁盘。
- 新增函数支持创建数据预热任务,将指定数据缓存至计算组。并支持任务状态查询。
- 新增函数
getComputeNodeCacheDetails,用于查看当前计算节点具体缓存信息。 clearComputeNodeCache新增参数 database 和 table,支持清空指定数据库或表的内存和磁盘缓存。- 支持对磁盘缓存的数据进行压缩。
- 在分布式查询中,WHERE 条件中存在 CHAR 类型常量与 STRING 类型的分区列进行比较,未能正确报错。现在系统会抛出错误提示。(2.00.15.1)
- 优化了 TSDB 引擎在读取值分区列时的性能。(2.00.15.1)
createOrderBookSnapshotEngine进行如下优化(2.00.15.1):- 新增参数 securitySubType,支持设置生成订单簿的证券子类型。
- 订单簿引擎优化了即时成交记录的订单类型(orderType),由限价单调整为市价单。
- 支持在流数据表和内存表中定义 ANY 类型的字段。(2.00.15.1)
- 备份日志文件新增了 updateTime 字段。(2.00.15.1)
- 打印日志支持记录 MVCC 表的操作信息。 (2.00.15.1)
- 提升 DELETE 语句性能。(2.00.15.1)
- 提升了批处理作业在高负载高并发场景下执行的稳定性。
- 优化节点启动时反序列化函数视图和定时任务文件的处理逻辑:若反序列化的方法定义中包含字典,且字典的值为函数定义,此前会导致相关函数视图和定时任务反序列化失败,启动异常关闭,现调整为直接抛出错误提示。
- 当存在库级别的表权限时,
getClusterDFSDatabases支持显示对应的库。 - 权限 QUERY_RESULT_MEM_LIMIT 和TASK_GROUP_MEM_LIMIT 支持对用户组进行管理。
- 审计功能支持记录数据库的所有登录登出,权限修改,新建连接,配置文件修改等操作。
- 用户级别资源跟踪支持监控用户的网络使用流量。
- FICC 相关函数的枚举类型参数支持字符串类型或 DURATION 类型。
schema函数支持返回表名与表的键值列。loadText支持 DECIMAL128 类型。sortBy!函数支持空表内存表。garch函数支持 DECIMAL 类型。- 当
aggrTopN函数的输入参数为有类型的空向量时,函数将返回一个空向量,而不再触发报错。 bfill/ffill支持 array vector 类型。interpolate函数新增参数 index,可根据索引向量 index 对 X 进行插值。- tmTopN 系列函数支持交易日历的 DURATION。
iif函数的 trueResult/falseTesult 支持 tuple。- 高阶函数新增参数 assembleRule,支持使用 4 种规则处理子任务。
transpose函数支持将多个字典合并成一个表,且表的列支持 array vector 和 tuple 类型 ;支持将嵌套字典转化成表。- 提升 TSDB 的并发查询性能。
createLookupJoinEngine新增参数 isInnerJoin,支持进行内连接。createOrderBookSnapshotEngine进行如下优化:- 新增参数 includeImmediateExecution,支持委托明细中统计即时成交的信息。
- 加强计算性能的稳定性。
- 订单簿基础字段中 abnormal 为 true 的行为包含通过 forceTriggerTime 参数强制触发的当前合成的批次和之后的快照数据。
createDailyTimeSeriesEngine新增参数 mergeLastWindow,支持计算最后一个不完整的窗口。enableTablePersistence新增参数 preCache,用于指定在 server 启动时从持久化流表加载到内存的记录条数。- SQL 查询语句新增支持不区分 true,false 关键字的大小写。
- 配置 enableNullSafeJoin=false 时,支持并行执行 join 操作。
- 提升了 SQL 并发查询的稳定性。
- UPDATE 语句支持更新内存表的 array vector 列。支持向内存表中添加 ANY 类型的列。
- 通过 UPDATE/DELETE 语句更新/删除分区表数据时,支持分区剪枝。
- 字典的 key 可以是关键词,比如 context。
故障修复
- 调用自定义递归函数造成内存泄漏。(2.00.15.1)
- 通过
dropColumns!删除键值内存表中的列时,若键值内存表中某个列名包含大写字母,则会报错。(2.00.15.1) - 共享键值内存表进行表连接操作会报错。(2.00.15.1)
- 通过
addNode新增节点后,在不重启集群的情况下,系统不会自动为新节点设置代理节点。(2.00.15.1) - 启用增强安全验证时,密码过期后的提示信息不对。(2.00.15.1)
- 在内存表中使用
ols函数结合 PIVOT BY 查询多组数据时,会报错 “The number of observations must be more than the number of factors.”。(2.00.15.1) - 执行
decimalFormat(0, "0.00E0")导致系统陷入死循环。(2.00.15.1) - 在 MySQL 语法模式下,查询语句中若使用窗口函数的
lead、lag函数会导致 server 崩溃。(2.00.15.1) - 向 latestKeyedStreamTable 写入空表导致 server 崩溃。(2.00.15.1)
- 修复了通过
append!向分布式分区表表追加分布式分区表导致 server 崩溃的问题,现执行该操作时系统将返回错误提示。(2.00.15.1) - 并发写入键值内存表导致 server 崩溃。(2.00.15.1)
- 分区剪枝后,由于 pivot by 缺少过滤条件,TSDB 引擎因并发读取磁盘数据,导致 server 崩溃。(2.00.15.1)
corr函数的 X 和 Y 为表且列数不同导致 server 崩溃。(2.00.15.1)- 修复了 SQL UPDATE/DELETE 语句与 WHERE EXISTS 搭配使用导致 server 崩溃的问题,现禁止这种用法。(2.00.15.1)
- 当 TSDB 的 Level File 包含 array vector 时,读取该文件可能出错。
- 当 Py 插件通过 globalDynamicLib 配置的路径不存在时,server 未报错。
- 恢复分区副本后,读取的分区数据不符合预期。
- 当查询主键列数大于 1 的 keyedTable/indexedTable 时,若查询空的 SYMBOL 类型向量时,可能导致 serve 崩溃。
- 高可用集群下,在自动新增分区后,如果不调用
loadTable重新加载表,而是继续使用旧的句柄(handle),可能无法查询到新分区的数据。 - 在 FunctionView 中,若包含多表连接且其中涉及标准的 CROSS JOIN 时,服务器重启后偶尔可能导致函数视图的结果出现不正确。
- debug 模式下执行流订阅,可能会出现部分订阅分配不到线程。
- SQL SELECT 中使用了返回多个值的自定义聚合函数时,且 GROUP BY 语句使用了 interval,会导致查询报错。
- 高阶函数的输入函数为自定义函数,且该函数返回它的输入参数时,可能导致高级函数的计算结果不正确。
segmentby计算 DECIMAL128 类型数据时,出现精度丢失。- 进行异构回放时,若重新划分了数据源的时间列(
replayDS指定了参数 timeRepartitionSchema),导致输出的数据乱序。 - 在 N 对 N 回放时,如果数据中某个分区为空,可能会导致其中某些输出表的数据缺失。
- 通过 addMetric 函数为 LeftSemiJoinEngine 添加指标后,若新指标中的列未在创建引擎时的 metrics 参数中指定,则可能导致引擎计算结果出现错误。
- 流数据消费速度慢,引发队列阻塞,进而导致内存急剧上升。
streamFilter函数的 filter['handler'] 指定的自定义函数中使用funcByName会报错找不到函数。- 在响应式状态引擎的状态函数
moving中指定自定义函数的部分应用时,出现类型解析错误。 - 通过
getStreamEngineStat查询订单簿快照引擎的 numGroups 不正确。 - 当集群因节点离线导致部分分区不在线时,在可用节点上执行多表 join 查询时,可能出现列名不存在的报错。
- 当对 TSDB 中的库表进行频繁的并发更新和查询操作时,可能会导致查询结果返回为空。
- 并发执行 SQL 语句进行多表连接(其中一个表是子查询),且 from 的对象是一个子查询时,可能导致 server 崩溃。
- 查询 TSDB 表时,若在 GROUP BY 子句中指定了 sortColumn 列,并在 SELECT 语句中调用了
nunique函数,且该函数的参数类型为 STRING 或 SYMBOL,则会导致查询报错。 makeKey函数应用于 WHERE 语句时,当其入参不符合预期时,可能导致 server 崩溃。- 在 GROUP BY 分组查询中,对 SELECT 语句中的第一行为空的 STRING 类型列进行 max 求值的结果不正确。
- 若建表时为 LONG 或 NANOTIMESTAMP 类型的列指定 delta of delta 压缩算法,当 delta-of-delta 值溢出时,会出现数据刷盘失败。
- 证书格式不匹配导致在线更新时出现宕机。
-
插件依赖的 OpenSSL 版本与 server 不一致时,导致 server 崩溃。
