3.00.5

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

新功能

  • 新增配置项 maxRecursiveDepth,用于设置最大递归深度。

  • 新增支持在单点登录流程中使用 HTTP 协议。

  • 新增配置项 oauthAllowPasswordLoginNodes,指定允许使用账号密码方式登录的节点别名。

  • 支持模块市场相关功能:

    • 新增函数 listRemoteModules,用于列出模块市场中匹配的模块名。

    • 新增函数 installModule,用于下载指定模块文件到节点模块目录下。

    • 新增函数 getLoadedModules,用于展示已加载模块的版本信息。

  • 低延时引擎增加 License 控制,需申请特殊 License 才可使用。

  • 新增函数 encryptModule,用于对 dos 文件进行加密。

  • 支持商用版 license server 在调用 setLicenseServerUserResource 后在线更新客户端 license 过期时间。

  • 新增函数 addCacheRulesForComputeGroupremoveCacheRulesForComputeGroupgetCacheRulesForComputeGroup,用于管理计算组的缓存表。

  • getClusterDFSDatabases 新增参数 includeSysDb,用于控制是否返回系统库; getClusterDFSTables 新增参数 includeSysTable,用于控制是否返回系统表。

  • MCP Server 新增对 HTTPS 加密连接的支持。

  • 新增高阶函数 nothrowCall,以与 call 相同的方式调用函数但默认不抛出运行时错误。

  • 新增函数 remove!,用于删除向量或元组指定位置的元素。

  • 新增函数 movingValid,用于按非空数据构造窗口进行滑动窗口计算。

  • 新增函数 rowFilterAndSortrowMergeAndSort,用于对数组向量或列式元组过滤,排序与合并。

  • 新增函数 toColumnarTupletoTuple,分别用于在 group by 场景下输出结果为列式元组和元组。

  • 支持高可用 MVCC 表:

    • 新增函数 haMvccTable,用于创建高可用 MVCC 表。

    • 新增函数 loadHaMvccTable,用于获取高可用 MVCC 表句柄。

    • 新增函数 dropHaMvccTable,用于删除高可用 MVCC 表。

    • 新增相关运维函数 getHaMvccRaftGroupsgetHaMvccLeadergetHaMvccTableInfocheckpointHaMvccisCheckpointingHaMvcc

  • 新增函数 qcut,用于按分位数对数值向量进行分组,并返回每个元素对应的分位数组别序号或标签。

  • 支持通过 plot 函数对 SURFACE 类型数据进行绘制,生成 3D 曲面图。

  • 新增函数 yearFrac,用于计算年份比例。

  • 新增函数 histogram,用于计算数据样本的直方图。

  • 新增总体协方差计算相关函数,支持批计算和流计算:covarpmcovarptmcovarpcumcovarpmcovarpTopNtmcovarpTopNcumcovarpTopNrowCovarp

  • 新增向量相似度与距离计算函数:

    • 新增函数 minkowski,用于计算向量的闵可夫斯基距离。

    • 新增函数 seuclidean,用于计算向量的标准化欧式距离。

    • 新增函数 cosine,用于计算向量的余弦相似度。

    • 新增函数 mahalanobis,用于计算向量的马氏距离。

  • 新增函数 appendEventWithResponse,用于同步发送事件并阻塞等待匹配的响应事件返回。

  • 支持响应式状态引擎和时序引擎设置 lowLatency=true 的场景下处理数组向量。

  • 新增稀疏状态事件引擎 SparseReactiveStateEngine,支持指定不同指标以不同条件触发计算。

  • 流数据支持数据状态标识:

    • 新增函数 changelogStreamTable,用于创建附带状态标识的流表。

    • 新增函数 getStreamTableChangelog,用于获取带状态表示的流表数据。

    • 新增函数 StreamGraph::changelogSourceDStream::changelogSink,支持 Orca 中使用附带状态标识的流表。

    • 新增函数 peekAppend,用于获取测试数据加入引擎当前状态后的输出结果。

  • 支持在高可用流表上通过 setStreamTableTimestamp 设置流表的时间戳列。

  • 新增 Orca 权限:ORCA_GRAPH_CREATE、ORCA_GRAPH_DROP、ORCA_GRAPH_CONTROL、ORCA_TABLE_CREATE、ORCA_TABLE_DROP、ORCA_TABLE_READ、ORCA_TABLE_WRITE、ORCA_ENGINE_MANAGE、ORCA_MANAGE。

  • Orca 支持通过 reactiveStatelessEngine 创建无状态引擎。

  • 新增函数 matchedRowCount 获取当前 session 中最后一次执行的 INSERT INTO / UPDATE / DELETE语句所影响的行数。

  • 新增函数 getStreamingSQLSubscriptionInfo,用于查询指定流式 SQL 的元数据信息。

  • 支持标准 SQL 写法 insert into table_name1 (colName1 [, colName2, ...]) select col_name(s) from table_name2 对部分列进行插入。

  • 新增函数 runExternalQuery,用于执行外部数据库 SQL 查询。

  • sql 函数新增参数 cgroupBy,支持构建包含 cgroup by 子句的元代码。

  • 新增实时曲线曲面构建流引擎 createMktDataEngine

  • 新增实时定价流引擎 createPricingEngine,用于金融产品的实时定价。

  • 新增函数 cmFutVolatilitySurfaceBuilder,用于构建商品期货期权波动率曲面。

  • 新增函数 cmFutAmericanOptionPricer,用于商品期货美式期权定价。

  • 新增函数 cmFutEuropeanOptionPricer,用于商品期货欧式期权定价。

  • 新增函数 eqDividendCurveBuilder,用于构建权益类分红曲线。

  • 新增函数 eqVolatilitySurfaceBuilder,用于构建权益类期权波动率曲面。

  • 新增函数 eqEuropeanOptionPricer,用于权益类欧式期权定价。

  • 新增函数 eqAmericanOptionPricer,用于权益类美式期权定价。

  • 新增函数 eqProxyVolatilitySurfaceBuilder,用于构建权益类代理波动率曲面。

  • instrumentPricerportfolioPricer 支持 MktDataEngine 与 UDF 作为 marketData

  • 支持在 bondInstrumentCalculator 中计算含权债(OptionBond)。

功能优化

  • 优化 licenseServer 客户端启动流程,支持备机认证启动。

  • 优化单点登录(SSO)流程: 修复 SSO 请求中默认端口导致的 HTTP 请求错误问题。 优化 oauthUserField 配置项,支持从嵌套 JSON 中解析用户名。

  • 优化写入卷选择逻辑,支持根据各卷的空闲空间百分比进行加权分配写入。

  • 支持 ARM 版本 server 通过插件市场执行 listRemotePlugins 查看远程插件列表,并通过 installPlugin 下载并安装插件。

  • 支持在 getAclAuditLoggetAuditLog 的返回结果中展示节点名称(node alias)。

  • 加强 ORCA 系统表权限管控,不再对非管理员用户可见。

  • listMCPPromptslistMCPTools 增加权限控制。

  • 新增配置项 enableDynamicScriptOptimization,用于控制是否启用脚本引擎优化。

  • 新增配置项 enableTransferCompressionToComputeNode 和函数 enableTransferCompressionToComputeNode,用于控制数据节点向计算节点发送数据时是否开启压缩。

  • 配置项 enableORCA 默认值调整为 false。

  • 优化启动阶段的日志信息。

  • 新增 TSDBCacheEngineSize 参数校验,限制其不超过节点 maxMemSize 的 50%。

  • 增强 getTables 的权限校验逻辑,避免无库表权限的用户在猜中库名时仍可获取表名信息。

  • 支持对 DFS 分区表执行 share 操作。

  • 优化语法异常信息,新增输出出错所在的行号。

  • 优化 createCrossSectionalEngine 函数的报错信息,现在在 metrics 中使用函数时会正确返回具体的错误提示。

  • 优化 wjtwindow 函数的报错信息。

  • 支持通过赋值语句或可修改函数(如 append!clear! 等)修改 DolphinDB 对象(元组、字典)的成员。

  • attributeTypes 支持通过类名获取属性及其类型。

  • 支持对 API 传入的字符串,根据字段类型自动转换为 DOUBLE、FLOAT 或 DECIMAL,并插入表中。

  • 提升 cdfNormal 的计算精度。

  • 支持 movingWindowData 函数输入为数组向量。

  • getFunctionViews 新增返回函数视图的创建者与创建时间信息。

  • getSessionMemoryStat 支持统计主键引擎(PKEY)的缓存信息。

  • 优化 Orca 跨集群查询的性能。

  • 支持通过 addReactiveMetrics 为 ORCA 的 NarrowReactiveStateEngine 添加 Metrics,不再报错 “orca engine does not support adding metrics”。

  • 优化文本存储引擎的模糊匹配查询性能。

  • 响应式无状态引擎支持指定不同指标以不同条件触发计算。

  • 支持在响应式状态引擎中对数组向量调用 movingWindowData

  • 支持在响应式状态引擎中使用内置函数 mimaxLastmiminLast

  • createCrossSectionalEngine 支持处理列式元组。

  • 优化 getStreamingStat,数据没有被消费时,subWorkers 表仍会显示 workerId。

  • 优化 subscribeTable 的线程分配算法,在不指定 hash 时优先分配空闲线程。

  • 优化持久化流表在重新加载过程中的内存占用。

  • createCEPEngine支持多个输出表,emitEvent 支持指定输出表。

  • createDataViewEngine新增参数 includeOperationType,支持在输出结果中包含每条数据记录的变更类型。

  • 重构流数据高可用功能。

  • 重构函数 DStream::udfEngine

  • 优化时序聚合引擎性能。

  • 优化快照合成引擎的窗口数据覆盖规则。

  • 流订阅根 job ID 改为随机 UUID。

  • 优化 SQL 引擎性能。

  • 优化 context by 的查询性能。

  • 支持 contextbyfuncArgs 传入元组。

  • 优化 try-catch 的捕获的异常信息,提供行号。

  • 优化 WindowJoinEngine 与 NearestJoinEngine 的性能。

  • 优化 JOIN 性能。

  • 优化债券和国债期货的 instrument 和 marketData 的匹配规则。

  • 优化 FICC 相关计算函数。

  • 函数fxVolatilitySurfaceBuilder 新增可选参数 surfaceName,用于指定生成的外汇期权波动率曲面名称。

  • bondPricerbondFuturesPricerirDepositPricerfxForwardPricerfxSwapPricerfxSwapPricerfxEuropeanOptionPricer 支持批量定价。

  • 函数 createorderbooksnapshotengine 支持将上交所基金的即时成交信息统计到委托明细。

  • 优化 orderbookEngine 在盘口倒挂场景下的 WARNING 日志打印策略。

故障修复

  • 将 SYMBOL 类型字段设置为 TSDB 引擎的 sortKey,导致节点偶发崩溃。

  • 增加配置项访问安全校验:

    • 新增配置项 enableConfigAccessControl,用于控制在访问配置项时是否启用权限校验。

    • 新增函数 getOauthClientSecret,用于管理员用户安全地获取敏感配置项 oauthClientSecret 的值。

    • 修改函数 getConfig/getConfigure 执行逻辑,当启用配置访问控制时,将会依据配置项安全级别及当前用户权限过滤返回结果。

  • 在执行分区更新后,TSDB 引擎过度打印日志导致日志文件异常增大并占满磁盘。此为 2.00.15 版本引入的问题。

  • 在高可用集群中,当各 controller 并发执行 getClusterPerf 的数量超过工作线程的数量时,可能导致系统无响应。

  • 在并发提交多个任务时,偶发任务调度异常导致系统无法响应。

  • 在高可用集群中,当控制节点配置 lanCluster=0 时,从节点无法安全关机。

  • 从 3.00.0.x - 3.00.2.x 升级至 3.00.4.x 时,旧版本中若存在包含 Catalog 相关脚本的函数视图或定时作业,可能导致节点无法启动。

  • dropTable 与数据写入同时执行导致集群卡住。

  • 修复偶发 jobcheckpoint 文件描述符泄露的问题。

  • 修复使用 xdb 连接后,远程执行脚本偶发报错的问题。

  • 修复高可用集群在执行 moveReplicas 时,因缓存句柄未失效导致查询结果偶发不一致的问题。

  • getUserHardwareUsage 返回的内存值可能因自动类型转换错误导致精度不足,从而出现异常(负数)。该问题由 2.00.15 版本引入。

  • 修复 bar 函数在处理 TIME 等时间类型时可能生成超过类型上限的异常值的问题。

  • adfullerregression ='n' 时,若返回值中的 adfStat>0,则 pValue 计算错误。

  • 由于 mr 函数缺少入参类型验证,在传入空的数据源时,导致 server 崩溃。

  • 修复 linearTimeTrend 在窗口大于 1024 时结果计算错误的问题。

  • 修复 saveText 导出 CSV 时对 SYMBOL 类型字段中引号处理出错的问题。

  • 修复 getUserTableAccessRecords 在查询范围跨越两个及以上 job 文件时报错的问题。

  • 修复在存在计算组的集群中执行 DDL 操作时,触发不符合预期的权限报错的问题。

  • 修复有多个返回值且有一个返回值为入参的函数在 each/loop 中执行时返回结果错误的问题。

  • 修复在数组向量上使用 at / row 函数时的异常行为问题。

  • 修复 getStreamTables 的 totalRows 字段溢出的问题。

  • 修复 mstd 计算错误的问题。

  • 修复 round 可能发生溢出的问题。

  • 修复在 OOM 场景下 getSessionMemoryStat()OLAPTablet 内存统计错误,导致缓存清理逻辑失效的问题。

  • 修复 percentile 计算可能触发段错误的问题。

  • 通过 subscribeTable 订阅流表时,若 filter 参数指定的函数中输出表结构与输入流表不一致,系统不会输出数据,也不会报错。

  • 向通过 setStreamTableTimestamp 指定时间戳列的流表中插入空向量数据时可能导致系统崩溃。

  • 当同一流表存在多个本地订阅时,通过 enableTableShareAndCachePurge 设置的缓存清理偶发失效。

  • 当通过 enableTableShareAndCachePurge 设置自动清理共享流数据表时,如果订阅是通过断开连接而非 unsubscribe 取消的,缓存数据未能被正确清理,导致表行数超过设定的 cacheSize 限制。

  • registerStreamingSQL 解析驼峰命名的字段名失败。

  • 当流式 SQL 查询的键值表写入单条包含列式元组的数据时报错。

  • createReactiveStateEnginemetrics 中非法使用自定义类方法,导致 server 崩溃。现已修复为在检测到异常时返回错误提示。

  • createReactiveStateEnginemetrics 返回多个数组向量时报错。

  • 若在 createReactiveStateEnginemetrics 中使用无状态函数,并且通过 as 指定的返回值别名与该函数的入参同名,则会报错。

  • 在 3.00.X 版本集群上订阅 2.00.X 版本集群发布的流数据失败。

  • 在时序聚合引擎中,当使用 lastlastNot 以及返回多个值的聚合函数时,如果指定了 keyPurgeFreqInSec 参数,会产生错误的结果。

  • 使用 warmupStreamEngine 预热时序聚合引擎后,当向引擎写入新数据时,引擎输出了所有预热数据的计算结果,而不是仅输出新数据的计算结果。

  • 修复在注册包含 now() 的流式 SQL 时可能导致节点崩溃的问题。

  • 修复键值表被声明为流式输入表后,同 key 数据更新写入时报错的问题。

  • 修复响应式状态引擎用 deltas 处理 DECIMAL64 类型列结果不正确的问题。

  • 修复了因流数据表字段包含 ANY 类型导致订阅追加数据时触发报错的问题。

  • 查询表时,如果聚合计算的 GROUP BY 列包含 BLOB 类型可能发生内存泄漏。此为 2.00.11 版本引入的问题。

  • SQL 语句内换行,行首为运算符报错。

  • SQL 聚合计算偶发导致服务器崩溃。

  • 在使用 update ... context by ... 语句更新共享内存表时,系统报错:A snapshot table doesn't support data update。

  • 通过 INSERT 语句插入数据时,如果某列以连续两个 VOID 类型的 NULL 开头,插入将失败。

  • 修复在 TSDB/IOTDB 引擎的分区表查询中,select 使用嵌套三元运算符 ?: 时无法正确解析所需列名的问题。

  • 当流式 SQL 左连接的左表先更新数据,右表再更新数据时,结果不符合预期。

  • 修复在出现 == is not a unary operator 语法错误时,错误消息不会显示所在行号的问题。

  • 修复 nulls lastnulls first 某些情况下结果错误的问题。

  • 修复在分布式表查询中使用 prev 可能触发报错的问题。

  • 修复在 TSDB 表查询包含 group by 且分组字段包含 sortkey,并在执行过程中发生 OOM 时,可能导致节点崩溃的问题。

  • 修复两个分区内存表 unionAll 后查询失败的问题。

  • 修复在分布式 TSDB 表上使用 csort by ... desc 结合 context by 查询时,排序在部分条件下偶发不生效的问题。

  • 修复 context by在特定场景下导致查询分布式表失败的问题。

  • 修复对内存表执行 group by 分组聚合时, std 计算可能出错的问题。

  • 修复在深交所(XSHE)订单簿计算中,输入委托单的 BuyNo / SellNo 为 NULL 时导致计算报错的问题。