3.00.5
涉及保持一致性或兼容行业惯例的修改
-
系统初始化脚本文件 dolphindb.dos 中新增了
covarp及其对应的系列函数。升级 server 时需要同步更新该文件。 -
流订阅 topic 格式发生变化:
-
旧版本格式为 host:port:nodeAlias/tableName/actionName,如
localhost:8848:nodeA/trades/demo -
新版本常规订阅普通流表格式保持不变,仍为 host:port:nodeAlias/tableName/actionName
-
新版本常规订阅高可用流表格式为 clusterName_RaftGroupId/tableName/actionName
-
新版本高可用订阅普通流表格式为 host:port:nodeAlias/tableName/actionName/subNodeAlias
-
新版本高可用订阅高可用流表格式为 clusterName_RaftGroupId/tableName/actionName/subNodeAlias
-
-
弃用配置项 streamingHADiskLimit,streamingHAPurgeInterval。
-
配置项 streamingHADir 更名为 streamingHALogDir,默认值修改为 /log/streamingHALog。
-
启用流数据高可用前,必须在配置文件中设置配置项 clusterName,否则无法启用。
-
函数
haStreamTable的参数 cacheLimit 更名为 cacheSize。 -
高可用流表不再支持增加列(
addColumn)。 -
取消高可用订阅时,必须指定 raftGroup,否则取消订阅失败。
-
流引擎暂不支持高可用,引擎的 raftGroup 参数暂不生效。
-
弃用函数
amortizingFixedRateBondDirtyPrice,convertibleFixedRateBondDirtyPrice,callableFixedRateBondDirtyPrice,floatingRateBondDirtyPrice,crmwCBond,cds,irs。 -
配置项 OLAPCacheEngineSize 和 TSDBCacheEngineSize 不能超过该节点配置项 maxMemSize 的 50%,超过会导致节点启动失败。函数
setOLAPCacheEngineSize和setTSDBCacheEngineSize在线调整超出限制时报错。 -
函数
restoreSettings执行后,当前用户会被强制退出登录,需再次登录以获得对应权限。 -
createTimeSeriesEngine和createDailyTimeSeriesEngine在指定 fill 时,旧版本不会填充数组向量列,新版本会填充。 -
createTimeSeriesEngine和createDailyTimeSeriesEngine在指定多个 windowSize 时:-
旧版本仅在每个窗口都有数据时输出。
-
新版本在最大窗口有数据时输出,没有数据的窗口对应的因子返回空值。
metrics=[<last(col1)>, <last(col2)>] st1 = streamTable(1000000:0, `timestamp`col1`col2,[TIMESTAMP,DOUBLE,DOUBLE]) st2 = streamTable(100:0,`timestamp`col1`col2,[TIMESTAMP,DOUBLE,DOUBLE]); demoEngine=createDailyTimeSeriesEngine(name="demoEngine",windowSize=[1000, 5000],step=1000,metrics=metrics,dummyTable=st1,outputTable=st2,timeColumn=`timestamp); timestampv = temporalAdd(2026.01.01T00:00:00.001, [0, 1, 2, 4, 8], "s") col1 = double(1..5) col2 = double(11..15) tmp = table(timestampv as timestamp, col1 as col1, col2 as col2) demoEngine.append!(tmp) st2 /* 旧版本: timestamp col1 col2 ----------------------- ---- ---- 2026.01.01T00:00:01.000 1 11 2026.01.01T00:00:02.000 2 12 2026.01.01T00:00:03.000 3 13 2026.01.01T00:00:05.000 4 14 新版本: timestamp col1 col2 ----------------------- ---- ---- 2026.01.01T00:00:01.000 1 11 2026.01.01T00:00:02.000 2 12 2026.01.01T00:00:03.000 3 13 2026.01.01T00:00:04.000 13 2026.01.01T00:00:05.000 4 14 2026.01.01T00:00:06.000 14 2026.01.01T00:00:07.000 14 2026.01.01T00:00:08.000 14 */ -
-
createWindowJoinEngine和createNearestJoinEngine当 window 不为 0:0 时:-
旧版本不支持输出非聚合结果,新版本支持
-
当 metric 的计算结果不为数组向量而输出表对应的列为数组向量时,旧版本报错,新版本会自动将结果转换成数组向量
-
-
createWindowJoinEngine和createNearestJoinEngine旧版本左表数组向量列可作为接收向量为参数的聚合函数,新版本不再支持,但可通过函数byRow实现,如下例所示。share streamTable(1:0, `timev`sym`id`price, [TIMESTAMP, SYMBOL, INT, DOUBLE[]]) as leftTable share streamTable(1:0, `timev`sym`id`val, [TIMESTAMP, SYMBOL, INT, INT]) as rightTable output = table(1:0, `timev`sym`price`val`factor, [TIMESTAMP, SYMBOL, DOUBLE[], INT[], DOUBLE]) wjEngine=createWindowJoinEngine(name="testWindowJoin", leftTable=leftTable, rightTable=rightTable, outputTable=output, window=0:0, metrics=<[price, val, percentile(price, 20)]>, matchingColumn="sym", timeColumn="timev", useSystemTime=false, garbageSize=5000, maxDelayedTime=3000,outputElapsedMicroseconds=false, sortByTime=false) // 旧版本正常运行 // 新版本报错 Invalid metric percentile(price, 20). Usage: percentile(X, percent, [interpolation='linear']). X must be a numeric vector. // 新版本可使用如下脚本实现原计算逻辑逻辑 wjEngine=createWindowJoinEngine(name="testWindowJoin", leftTable=leftTable, rightTable=rightTable, outputTable=output, window=0:0, metrics=<[price, val, byRow(percentile{,20}, price)]>, matchingColumn="sym", timeColumn="timev", useSystemTime=false, garbageSize=5000, maxDelayedTime=3000,outputElapsedMicroseconds=false, sortByTime=false) -
最近邻关联引擎
createNearestJoinEngine旧版本 metrics 不支持左表数组向量列直接作为计算指标,新版本支持。 -
多表 JOIN 中 ON 子句内不再支持使用聚合函数。
-
配置项 enableORCA 的默认值由 true 修改为 false。
-
Orca 新增权限管理,操作需具备相应权限。
-
跨集群授权读取 Orca 中流表的权限类型由 TABLE_READ 改为 ORCA_TABLE_READ。
-
INSTRUMENT 类型对象中,notional 字段拆分为 notionalAmount 和 notionalCurrency。
-
MKTDATA 类型中的 mktDataType 字段,原 Spot 类型更名为 Price。
-
函数
getClusterDFSDatabases和getClusterDFSTables不再允许非管理员用户查看系统创建的 Orca 专用库表。管理员可通过设置参数 includeSysDb 和 includeSysTable 查看。 -
dropStreamTable不再支持 Orca 流表,如需删除请使用dropOrcaStreamTable;dropStreamEngine 不再支持 Orca 引擎,如需删除请使用dropStreamGraph删除其所属流图。
缺陷修复带来的系统影响
-
内存表运算中,时间类型数据相加的结果类型发生变化:
-
旧版本结果为时间类型
-
新版本结果为整型
t1 = table([2026.01.01,2026.01.02,2026.01.03] as timeCol) t2 = table([2026.02.01,2026.02.02,2026.02.03] as timeCol) t1 + t2 /* 旧版本结果: timeCol ---------- 2026.01.01 2026.01.02 2026.01.03 新版本结果: timeCol ------- 40939 40941 40943 */ -
-
对数组向量调用函数
row和at时,行为发生变化:-
row:旧版本以
row(start:end)的方式获取连续多行结果错误,新版本修正 -
at:旧版本支持以
at([index1 index2])的方式获取指定行,新版本报错,可改写为at([index1,index2])
a = array(INT[], 0, 15).append!([1 2 3, 5 6, 7 8 9, 10 11 12 15]) a.row(0:2) /* 旧版本 output:[1,5] 新版本 output:[[1,2,3],[5,6]] */ a.at([1 2]) /* 旧版本 output:[[5,6],[7,8,9]] 新版本报错: Invalid index 新版本修改为 a.at([1,2]),output:[[5,6],[7,8,9]] */ -
-
当发布订阅功能关闭(配置项 maxPubConnections=0)时,函数
getStreamingStat行为发生变化:-
旧版本正常执行
-
新版本报错
-
-
当数据写入键值流表时,如果键值列的数据类型不一致,写入行为发生变化:
-
旧版本先根据键值列的原始数据去重,再转换类型,最终写入
-
新版本先转换数据类型,根据转换后的键值列数据去重,最终写入
kt = keyedStreamTable(`date,1:0,`date`value,[DATE,DOUBLE]) kt.append!(table(2026.01.01 12:00:00.000 as date, 1.1 as value)) kt.append!(table(2026.01.01 12:00:01.000 as date, 2.2 as value)) kt.size() /* 旧版本 output:2 新版本 output:1 */ -
-
异常检测引擎
createAnomalyDetectionEngine增加对 metrics 的校验,当其不是布尔表达式时:-
旧版本正常执行
-
新版本报错
-
升级注意事项
由于权限文件存在兼容性问题,升级前需要备份权限相关的 ACL 文件;若使用了 Raft 集群,还需备份 Raft 相关的文件。需要备份的文件列表如下:
| 部署环境 | HomeDir 路径参考 | 需要备份的文件 |
|---|---|---|
| 单节点 | <YourPath>/server/local8848 |
<homeDir>/sysmgmt /
|
| 普通集群 | <YourPath>/server/cluster/data/<controllerAlias> |
<homeDir>/sysmgmt/
|
| 高可用集群 |
<YourPath>/server/clusterDemo/data/<controllerAlias_k> Raft 组所有控制节点都需要备份 |
<homeDir>/sysmgmt/
<homeDir>/raft/
|
