2.00.15

注:
同时建议阅读兼容性说明

新功能

  • 新增一系列函数与配置项,以增强登录安全性,包括(2.00.15.1):
    • 支持配置登录失败自动锁定
    • 手动锁定/解锁用户、查看用户锁定状态
    • 自定义密码复杂度规则、密码有效期提醒及防止密码复用等功能。
  • 新增配置项 enableStructuredAuditLog,支持开启结构化二进制格式的审计日志。(2.00.15.1
  • 新增函数 scramClientFirstscramClientFinal,并为 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,用于查询当前集群中所有由指定用户创建的数据库。
  • 新增函数 gmd5rowGmd5,用于计算 MD5 哈希值。
  • 新增函数 cubicHermiteSplineFit,用于对一组数值向量进行三次埃尔米特(Hermite)插值。
  • 新增函数 rms,用于计算均方根。
  • 新增函数 boxcox,通过 Box-Cox 变换将输入数据转换为近似正态分布。
  • 新增函数 arima,用于实现差分整合移动平均自回归模型(ARIMA),以进行时间序列分析。
  • 新增函数 runSQL,通过支持变量传递参数,有效防范 SQL 注入风险。
  • 新增函数 getSlaveReplicationExecutionStatus,支持在从集群数据节点上获取每个线程异步复制任务的执行状态。
  • 新增支持通过 setDynamicConfig 函数在线修改 enableNullSafeJoin 配置项。同时,新增函数 getEnableNullSafeJoin 用于获取在线修改后的 enableNullSafeJoin 配置值。
  • 新增内存在线事务处理(IMOLTP)引擎,支持将所有数据存储在内存中。
  • 新增物联网点位管理(IOTDB)引擎,支持设备点位管理功能。
  • 新增 notLikenotBetweennotIn SQL 谓词及其对应函数,以支持更多匹配条件。

功能优化

  • 优化存算分离以下功能(2.00.15.1):
    • 支持在单个节点上指定多个物理路径作为缓存目录。
    • 计算节点的内存缓存容量上限单位由 MB 修改为 GB。
    • 在安全关机后,计算节点的内存缓存会自动刷新到磁盘。
    • 新增函数支持创建数据预热任务,将指定数据缓存至计算组。并支持任务状态查询。
    • 新增函数 getComputeNodeCacheDetails,用于查看当前计算节点具体缓存信息。
    • clearComputeNodeCache 新增参数 databasetable,支持清空指定数据库或表的内存和磁盘缓存。
    • 支持对磁盘缓存的数据进行压缩。
  • 在分布式查询中,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,可根据索引向量 indexX 进行插值。
  • 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 语法模式下,查询语句中若使用窗口函数的 leadlag 函数会导致 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 函数的 XY 为表且列数不同导致 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 崩溃。