2.00.9

版本下载

版本号: 2.00.9     二级兼容 2.00.8 和 1.30.20

发行日期: 2023-02-15

Linux64 binary | Linux64 JIT binary | Linux64 ABI binary | Windows64 binary | Windows64 JIT binary | Linux ARM64|

新功能

  • 支持使用数据类型符号 P 声明 DECIMAL 类型的常量数据。

  • 新增配置项 logicOrIgnoreNull,设置 or 函数在操作数中包含 NULL 时的处理方式。默认值为 true:当另一个操作数非零或为零时,返回 true 或 false。若需要 or 函数的行为和旧版本保持一致,则应该将该配置设置为 false。

  • case when 语句后支持使用 is null 判断。

  • 对 MVCC 表,新增配置项 mvccCheckpointThreshold 用于设置创建检查点的操作次数阈值;新增函数 forceMvccCheckpoint,用于手动触发创建 MVCC 表的检测点。

  • 新增功能 License Server,用于根据 license 的限制分配节点的硬件资源。新增相关函数 getLicenseServerResourceInfogetRegisteredNodeInfo,相关配置项 licenseServerSitebindCores

  • 新增配置项 thirdPartyAuthenticator,用于第三方系统校验用户权限。通过指定该参数,在用户登录时,系统会通过第三方系统进行权限验证。

  • 插件启动时会自动检查版本。

  • 新增集群间数据异步复制功能,将主集群数据复制到从集群,且保证主、从集群数据一致,实现了集群异地容灾。

  • 新增对 arrow 格式的支持。

  • 新增函数 getTSDBSortKeyEntry 支持查看每个分区的 sort key 信息。

  • 新增命令 setMaxConnections 用于在线修改当前节点的最大连接数。

  • 新增函数 demean,用于对数据去均值化处理。同时在响应式状态引擎中支持该函数。

  • 函数 dictsyncDict 新增参数 ordered 用于创建有序字典,支持键值对的顺序与输入顺序保持一致;支持两个字典的二元操作,以及字典和 scalar, vector的二元操作。

  • 新增累计窗口函数 cumnunique,用于统计元素累积的唯一值数量。同时在响应式状态引擎中支持该函数。

  • 新增函数 stringFormat,用于动态字符串的构建。

  • 新增函数 rowAlign 用于进行数据对齐,主要适用于金融场景的计算。

  • 新增函数 nanInfFill 用于替换 NaN 和 Inf 值。

  • 新增函数 byColumn,使高阶函数支持列内竖向计算。同时在流计算中支持该函数。

  • 新增函数 volumeBar 用于数据的累积分组。

  • 新增函数 enlist 用于将标量或向量,转化为由其作为元素值的向量或元组。

  • 新增运算符 eachAt(@),支持访问向量、矩阵、表、数组向量、元组、字典和函数。

  • 新增函数 latestKeyedTable, latestIndexedTable,用于创建时间序列相关的键值表和索引表。支持按时间列进行条件更新,只有值更大的新记录才会更新具有相同主键的原表中的记录。

  • 新增数据形式列式元组(columnar tuple),新增相关函数 isColumnarTuple, setColumnarTuple!

  • 新增部分兼容标准 SQL 的功能。包括:

    • 新增语句:drop(支持删库,删表操作),create local temporary table(支持创建本地临时内存表),alter(新增支持列名重命名,删除列),case when, union/union all, join on, with as(支持 with 关键字使用参数对列重命名)

    • 新增谓词:(not) between and, is null/is not null, (not) exists/not exist, any/all

    • 新增函数:nullIf, coalesce

    • 新增关键字:distinct(单个或多个字段去重),nulls first/nulls lastorder by 关键字)

  • 支持多表 join 语句,join 语法支持使用别名,且支持 join 的对象是一个 SQL 子查询。

  • 支持 select 常量时不指定别名,此时常量值将作为列名。

  • 支持条件语句中 in 等谓词以及运算符对 SQL 子查询返回的结果表进行操作。

  • 每次对 DFS 表进行 update/upsert/delete 操作,都会产生一个版本。系统会回收历史版本,回收时间由新增配的置项 oldChunkVersionRetentionTime 控制。用于设置历史版本 chunk 的保存时间。

  • 提供各大交易所的交易日历及用户自定义交易日历的功能,支持在函数 temporalAdd, resample, asFreq, transFreq 中根据用户及定义的交易日历进行计算。新增相关置项 marketHolidayDir,新增相关函数 addMarketHoliday, updateMarketHoliday, getMarketCalendar 用于增加更新和获取自定义交易日历信息。

  • 新增函数 genericStateIterate, genericTStateIterate 流数据中窗口迭代计算。

  • createWindowJoinEngine 支持数组向量的计算。

  • 新增函数 movingWindowDatatmovingWindowData,用于获取流计算中历史滑动窗口的数据。

  • 响应式状态引擎中支持 if-else 语句的计算。

功能改进

  • 支持 distinct 关键字,用于对单个或多个字段去重。暂时不支持其与 group by, context bypivot by 配合使用。

  • createTimeSeriesEngine, createDailyTimeSeriesEngine 的耗时统计参数由 "outputElapsedInMicroseconds" 修正为 "outputElapsedMicroseconds"。

  • getSessionMemoryStat 函数返回的 createTime 和 lastActiveTime 字段,由零时区时间改为当前时区的时间。

  • DolphinDB 的 between and 语句与标准 SQL 的 between and 语句兼容。

  • 添加了与创建、加载、删除跨进程共享内存表(IPCInMem 表)相关的日志信息,以便更好地跟踪和调试这些操作。

  • getClusterDFSTables 仅显示对用户可见的表。

  • createWindowJoinEngineleftTable 参数可以包含数组向量类型列。

  • subscribeTablehandler 参数支持指定为共享内存表、共享键值表或共享索引表。

  • cut 函数支持切分表和矩阵。

  • 有序字典支持单目窗口函数 cumsum 等。

  • 元数据文件添加 checksum。

  • 清空由 controller 转变为 follower 的控制节点的恢复事务,以避免 follower 节点的恢复日志过多地占用磁盘空间。

  • 支持在日志文件中输出备份恢复过程的相关信息。

  • 函数 interval 新增参数 closed, label, origin

  • 函数 getRecentJobs 新增返回值字段 clientIp 和 clientPort 用于获取客户端的 IP 和 Port 信息。

  • 函数 ema 新增参数 warmup,配置后前 window - 1 个窗口也会计算输出。

  • 高阶函数 accumulatereduce 支持输入一元函数和三元函数。

  • 响应式状态引擎和时间序列聚合引擎新增参数 outputElapsedMicroseconds 用于计算耗时统计。

  • 支持创建 DECIMAL 类型的数组向量。

  • 函数 rankrowRank 新增参数 precision,用于设置排序值的精度。

  • 函数 groups 参数 mode 支持 "vector", "tuple"。

  • 函数 linearTimeTrend 支持对矩阵和表的计算。

  • 对高阶函数做了以下修改:

    • 支持高阶函数迭用, eachLeft, eachRight, eachPre, eachPost, reduce 新增参数 consistent,支持子任务结果的类型和形式可以不一致。

    • 在默认情况下,eachLeft, eachRight, eachPre, eachPost, cross, accumulate, reduce 不再根据第一个子任务的计算结果来决定输出对象的形式,而是根据所有结果来决定输出对象的形式。

  • 函数 objectChecksum 支持 DECIMAL 类型。

  • 函数 rankrowRank 的参数 tiesMethod 支持使用 first 按照原数据的顺序排名。

  • 函数 cut 支持将数据拆分成标量。

  • 函数 split 支持输入字符串向量。

  • 函数 rowAt 支持以数组向量为索引。

  • 矩阵支持以 slice 方式取行元素。

  • 取消了创建 tuple 时其 size 不能超过1048576的限制。

  • 大部分计算函数支持 DECIMAL 数据类型。

  • 用函数 array 创建 tuple 时支持默认值为 STRING 类型。

  • 函数 memSize 可以显示 any vector 的内存占用。

  • 支持通过多线程 merge 不同分区的结果。降低了当列数较多的情况下查询最后数据合并的耗时。

  • getSessionMemoryStat 返回值增加了缓存状态的打印,包含维度表,表数据,cache engine,字典编码等缓存占用信息,以及流数据发布和订阅队列深度的信息。

  • 函数 setColumnComment 支持为 mvccTable 增加注释信息。

  • 优化了 TSDB 引擎的点查性能。

  • 提高了 TSDB 引擎配置 keepdulicates = last 时,select count(*) 的查询速度。

  • 矩阵支持混合使用 pair 和 vector 作为行列索引的值。

  • 支持在数据节点上调用权限相关的函数。

  • 调整了 regularArrayMemoryLimit 实际生效的参数值为配置值与 maxMemSize/2 中的较小值。

  • 修改了分布式库表数量的最大上限。

  • TSDB 除最后一列之外的 sortColumn,在查询时支持部分时间的自动转换。

  • 发布端通过订阅端发起的连接发送流数据,订阅端不需要额外提供监听端口。

  • 响应式状态引擎支持不定长的数组向量计算。

  • streamFilter 的参数 condition 支持传入内置函数。

  • 函数 replay 新增参数 sortColumns,相同回放时间戳的数据将根据该参数指定的字段进行排序。

  • 支持同构 N 对 1 回放和异构流数据表回放数据源时的数据源的自动对齐。

  • 在流计算引擎中调用滑动窗口函数时,window 的上限修改为 102400。

  • 优化了异构流数据表的回放性能。

  • streamEngineParser 支持解析 byRow 嵌套 contextby 函数,放入横截面引擎进行计算。

  • 响应式状态引擎使用 moving 函数时,支持计算数组向量。

  • 优化 createWindowJoinEnginewindow = 0:0 时的计算延迟。

  • 支持在流计算中使用高阶函数 accumulate

  • 优化了 genericTStateIterate 的性能。

  • 优化了 streamEngineParser 的解析性能。

  • 共享表 append/insert into 语句支持通过 transaction 语句实现事务。

  • 优化了分区表 ej 的性能。

  • 支持使用 select 子句中的列别名或者新创建的列作为 where 的过滤条件。

  • 优化了当 pivot by 最后一列为分区列时的性能。

  • context by 支持 matrix 和 table 的输入形式。

  • 提高了context bygroup by 的查询性能。

  • 优化了 lsj 在大数据量下的性能。

  • 支持 SQL 语句 where 条件里时间类型可以自动转换为 interval 分组的时间类型。

  • 为兼容标准 SQL,对部分函数行为做了调整:

    • 通过 join 函数进行连接时,必须为临时表指定表名。

    • distinct 语句返回的结果列列名会在原始列名前加“distinct_”。

    • in 语句后跟单列表,而无需将其转换为向量。

  • func 为内置函数名。

  • x[start:end] 的形式访问 array vector 的结果发生变化。如果 end>size(x),不再抛出异常,而是将超出范围的位置填充 NULL。

  • contextSum2 函数传入 array vector 时,会抛出异常而不是返回空值。

  • 在定义包含特殊符号的字符串时,使用双引号("")来包裹字符串,而不是使用反引号(`)。

  • interval 函数增加校验,当 X 输入数据为整型数据时,不能指定 explicitOffset=true。

  • 放开了在 SQL 查询使用 in 元组作为查询条件时,元组内元素个数的限制。

  • 改进了函数 getSystemCpuUsage 的返回值。

  • 改进了权限管理功能,包括:

    • 新增了更细粒度的表权限(TABLE_INSERT/TABLE_UPDATE/TABLE_DELETE),以及库权限(DB_INSERT/DB_UPDATE/DB_DELETE)。

    • 修改了 DB_MANAGE 的权限,不再支持创库,只支持对库进行 DDL 级别的操作管理。

    • 修改了 DB_OWNER 的权限,支持用户创建指定前缀的库,且会为 admin 用户自动赋予 DB_OWNER 权限。

    • 增加以下函数权限校验:getAllDBs, getClusterDFSDatabases, getDFSDatabases, getDFSTablesByDatabase,只有拥有 DB_MANAGE 或 DB_OWNER 权限的用户才能调用。

    • 新增了权限类型 QUERY_RESULT_MEM_LIMIT,TASK_GROUP_MEM_LIMIT 用于约束用户查询内存的上限。

    • 修改了 DDL/DML 操作的权限校验机制。

    • 增加参数校验:

      • 当 objs 的颗粒度与 accessType不匹配时,会报错。

      • 当赋予 TABLE_READ/TABLE_WRITE/DBOBJ_*/VIEW_EXEC 权限时,会检查对应的对象(DB/table/functionView)是否存在,如果不存在会报错。

      • 当对象(DB/table/functionView)被删除时,会回收对应的权限。如果再次创建同名的 db/table/functionView,则需要重新赋予权限。

      • 当 table 改名后,对应的权限依然保留。

    • 如果某个用户 grant 了某个表的权限,deny 了另一个表的权限,则升级到新版本后,该用户会拥有所有表的这个权限。

    • 权限管理相关函数可以在数据节点上执行。

  • 使用 JIT 来增强流数据引擎中自定义函数的性能。

  • JIT 支持 ratio operator。

  • JIT 支持 sum, avg, count, size, min, max, iif 等常用函数。

  • JIT 支持 moving

缺陷修复

  • 修复在同时满足以下条件时,server 重启会产生函数视图与 module 函数名冲突的问题:

    • 单节点模式

    • 添加 module 中的函数到 functionView 后再删除该函数视图

    • 配置项 preloadModules 指定了预加载该 module

    同时优化了在其它情况下,当函数视图与 module 函数发生冲突时的报错信息。

  • 服务器与客户端通过 SSL 通讯时,如果从服务器传输到客户端的数据量很大,可能会导致会话断开连接。

  • 在集群模式且设置数据库为 atomic='CHUNK' 的情况下,对于同一个数据库下分区数据分布在不同节点上的不同表进行连接时,结果有时不正确。

  • 状态引擎未处理 metrics 中的用户自定义函数的命名空间。

  • 通过 mskewmkurtosis 计算的数据中,若某个数据列连续存在相同值,且相同值的个数大于窗口长度(window),则计算结果不正确。

  • DolphinDB 的 ols 函数输入参数为矩阵时,若中间结果是奇异矩阵,则最后的计算结果和 Python statsmodels.OLS 的结果不一致。

  • 查询 MVCC 表,对字符串类型列使用 order by 时,不支持同时搭配 limit 0, k(或 limit k)。

  • 删除一个视图(dropFunctionView)时,由于写日志时未加锁,导致偶发宕机。

  • 等值连接(equi join, inner join)两个表,其中第一个连接列为 STRING 类型,第二个连接列为 NANOTIMESTAMP 类型时,返回结果不正确。

  • 通过 loadTable 加载表时,由于对表名校验不严格,导致分级存储数据丢失。

  • 禁用 SQL 的 select distinct 语句。SQL 语句中出现的 distinct 将按照函数的逻辑执行,即结果中返回的顺序不保证和原表中的相同,且列名为 distinct_xxx。

  • 如果 datanodeRestartInterval 的设置时间小于系统预定义值100,在安全关机情况下或重启集群时,数据节点会立刻被控制节点启动。

  • toJson 传入的 tuple 中包含数值型标量时,转换结果错误。

  • 如果字典中的 value 是ANY类型的向量,则使用 toJson 转换后会出现缺失元素的情况。

  • 使用 bar 查询分区表时,如果将 bar 的 interval 参数设置为 0,则可能会导致 server 崩溃。

  • 通过 replay 函数进行异构回放时,若输入标识为 SYMBOL 类型,则出现报错。此为 2.00.9 版本引入的 bug。

  • 因部分定时作业序列化失败而导致在重启后所有定时作业反序列化失败。

  • 通过 scheduleJob 设置的定时任务序列化失败但仍然生效。

  • array 函数的 defaultValue 参数指定为向量,导致 server 崩溃。

  • upsert! 函数的 newData 参数为非表类型时,导致 server 崩溃。

  • 使用 upsert! 更新表数据时,同时满足以下条件,导致更新失败:

    • 仅更新一条数据

    • newData 表中含有 NULL 值

    • 设置 ignoreNull=true

  • 通过 update 对 mvcc 表一次新增多列时出现类型不匹配的报错。

  • 通过 update from 语句更新 TSDB 引擎中设置了 keepDuplicates=LAST的表,结果不正确。

  • group by 一个包含特殊字符(控制字符、标点符号、数学符号和其它特殊符号等)的列时,返回结果里会忽略这些特殊字符。

  • 通过 addColumn 向 TSDB 引擎中的表添加列后导致数据错误以及宕机。

  • dropColumns! 不能删除顺序分区内存表。

  • 控制节点在加载本地磁盘分区表时可能出现宕机。

  • getClusterDFSTables 函数会返回已经删除或不存在的表。

  • 添加新的数据节点并执行 moveReplicas() 后,出现分区物理路径和元数据记录不一致。

  • N 对 N 流数据表回放时,如果某个 timePartition 中输入数据源为空表,则出现输出表数据错位。

  • window join 引擎的 nullFill 参数格式为 [[]],且指定 window=0:0 时,输出的行数和左表不一致。

  • 创建流数据引擎时,因未对某个内部变量进行初始化导致引擎偶尔创建失败。

  • 对 TSDB 引擎下的表并发写入和查询时,当发生 OOM 时,查询线程概率性出现 crash。

  • 分区物理文件夹不存在(手动删除)后,可能导致 flush 数据到磁盘时丢数据或者主动进行 flush 的操作(如 dropTable)卡住。

  • temporalAdd 函数的 unit 指定为 "M" 时,结果不正确。

  • 不同事务操作相同分区时,偶尔出现存储数据错误。

  • 对用户赋予 DB_READ 或 TABLE_READ 权限后,偶尔出现无法查询数据。

  • 在高可用集群环境中,若控制器节点在关闭时,raft 日志未能完全写入,当其重新启动时发生崩溃。

  • loadText 加载的 csv 文件中包含未配对的引号(""),导致 server 崩溃。

  • MVCC 表新增列后,通过 schema 查看表结构,或者通过 setColumnComment 对新增的列添加注释时,导致 server 崩溃。

  • 分区字段包含不可见字符导致 controller 和 datanode 版本号不一致。

  • TSDB 引擎不自动释放 symbolBase 对象。

  • byRow 函数对输入的列式元组(columnar tuple)应用非聚合函数,如果返回结果为 arrayVector 或者 anyVector,会导致 server 崩溃。

  • 更新内存表越界索引的数据,导致 server 崩溃。

  • 在高并发场景下,频繁登录用户,可能导致 server 崩溃。

  • StreamEngineParser 使用嵌套 UDF 函数 导致 server 崩溃。

  • window join 引擎设置输出计算耗时(outputElapsedMicroseconds=true),可能不输出结果。

  • lookup join 引擎的输入表包含数组向量类型列时,发生 OOM。

  • 流数据表订阅端重连时,如果发布端流数据表未定义,则会出现文件描述符泄露。

  • 更新 XSHG 和 XSHE 的 holiday 日历。

  • parseExpr 转换包含 lambda 函数的字符串,导致 server 崩溃。

  • parseExpr 转换的字符串末尾带分号时,出现报错。

  • 对组合分区表进行分组(group by)查询时,若同时满足以下条件,会导致 server 崩溃:

    • select 子句中包含部分聚合函数;

    • where 子句的条件中使用函数调用,且使用了 or 语句。

  • RepartitionDS 通过 query 参数查询连接(join)表,且 partitionType 参数指定为 VALUE 分区时,出现 server 崩溃。

  • 分区表的连接列未包含所有分区字段,且左、右表的部分分区字段具有相同的列名,对右表部分分区列进行过滤时,查询结果不正确。

  • 对按月进行值分区的 DFS 表,通过 where 条件对某月第一天数据进行过滤,查询结果不正确。

  • 查询语句中通过 order by 对列名为 DATE(大小写敏感)的列倒序排序,且搭配 limit 使用,导致 server 崩溃。

  • 对 DECIMAL 类型列进行 pivot by,且对 select 指定的列进行 rowSum 等分布式计算时,查询结果不正确。

  • 分组(group by)对多个查询列进行时间序列相关(例如 pre, rank 等)的聚合计算,查询结果不正确。

  • 高可用方案中客户端重复提交写入任务。

  • TSDB Compact 的时候发生 oom,产生的垃圾 levelFile 未回收。

  • 聚合函数运算得到的内存表,后续参与 move 等移动函数的运算时会修改本身内存表数据。

  • window join 的 metric 用匿名聚合函数时报错。

  • 按月分区,where 条件的时间类型和列的时间类型不同时且为当月的最后一天时,查询结果有缺失。

  • ols 自变量为字符串类型会导致 crash。

  • 使用 loadText 函数导入 string[] 的类型数据会导致 crash。

  • transaction 语句中使用 mvcc 表会导致 crash。

  • corr 函数与 deltas 函数联用,加了 as 之后结果不正确。

  • 当 TSDB 引擎包含 array vector 列时,upsert 会报错。

  • kill -9 直接关闭 server 后会导致一些 redo log 不回收。

  • 响应式状态引擎计算时,若表里面有 STRING 类型,偶尔会导致 crash。

  • submitJob 时,若 metacode 包含未定义变量,执行时会导致 crash。

  • 集群网络故障后网络恢复,有时会导致节点 crash。

  • 元编程计算时使用 partial function 并启用 context by 会导致结果不正确。

  • replayDSsqlObj 无法识别为 metacode,导致错误的报错。

  • rank 一个 array vector 导致 crash。

  • 若 lj 的左表为内存表,右表为分布式表,且右表的数据库路径包含多层目录(如数据库路径 dfs://mydbs/quotedb),则会报错。

  • createTimeSeriesAggregator,当 metric 包含 keyColumn 时,会报错。

  • trace 功能导致文件符泄露。

  • 高可用集群下当两个节点同时执行 getClusterPerf 函数会导致死锁。

  • accumulate 多次执行时偶尔会 crash。

  • createDailyTimeSeriesEngine 计算完成后,在一些场景下查询结果中的时间类型数据会报错。

  • TSDB 引擎下,表中启用了 sortKeyMappingHashFunction,集群环境下,在多线程并发查询时,偶尔会报错或崩溃。

  • 两个空的字符串相加后,isValid 判断结果为非空。

  • SQL 查询时多个过滤条件使用 or 连接,超过 128 个后返回结果为空。

  • loadText 时若抛出异常,在高压力下有时会导致死锁。

  • 函数添加到 FunctionView 后,查询得到的 body 少了一对括号。

  • 用下标对表取某一行记录时,返回的结果中 array vector 类型的字段结果不正确。

  • ftest 的结果会出现 inf。

  • 字符串向量超出索引切片时会导致 crash。

  • 高阶函数 each 作用于自定义函数,且输入参数为 table 类型时,有时会 crash。

  • 在内存中使用 moving 函数计算 arrayVector 时,minPeriods 大于等于 2 报错。

  • 创建 CrossSectionalEngine 后如果 append 的数据和 dummyTable 表结构不一致,不会抛出异常。

  • restoreDB 恢复 TSDB 数据库导致死锁。

  • loadTextEx 导入数据时若数据库为值分区,且导入的数据包含建库时分区列未覆盖的部分,则查询不到该部分对应数据。

  • 无法在通过 restoreDB 恢复的 TSDB 数据库中查询到数据。

  • join 分布式表时,列为非分区列,order by 分区列且查询中有 top 子句,结果不正确。

  • 序列化 rpcremoteRun 返回的部分应用函数(partial application)时报错。

  • 在 job log 达到 1G 后,生成新的 job log 时,旧的 job log 会被丢弃。

  • 根据配置项 openblasThreads 创建 open blas 线程数,而不是根据 CPU 核数创建。

Web客户端新功能

  • 编辑器顶栏增加代码地图、回车补全配置,显示代码执行状态、支持点击取消执行中的作业。

  • 增加复制行、删除行功能。

  • 用户在字典中可选中文本。

  • 支持显示 decimal32/64 数据及由其组成的 array vector。

  • 新增查看数据表结构的功能,用户可以查看前一百行数据,添加列。

  • 数据库表再展开后为列,并支持修改注释。

  • 终端的输出结果支持颜色。

Web客户端功能改进

  • 布局优化,表格移至底部以显示更多列。

  • 代码编辑器统一改为自动保存,无需手动保存。

  • 优化了页面加载速度。

  • 用户需要先登录才能查看数据节点日志。

  • 优化数据视图显示:表格底部显示表的行、列、类型信息;当表内容高度溢出时,总是显示水平滚动条。

  • 优化字体,降低了文件大小。

  • 变量面板变量显示更紧凑。

  • 导航栏顶部显示节点类型。

  • 优化了数据库无权限的错误提示。

  • 路径中含有“.”的数据库支持分级展示,如 dfs://aaa.bbb.ccc。

  • 作业管理中任务状态汉化,支持根据状态搜索。

  • 官网用户手册中的函数文档已同步至最新。

Web客户端缺陷修复

  • 修复鼠标悬浮在 append! 等函数时没有正确显示函数提示的问题。

  • 修复矩阵最后一页数据显示异常的问题。

  • 修复终端 refid 错误链接需要点击两次的问题。

  • 修复终端字体显示异常的问题。

  • 关键字高亮逻辑修改,解决了set(), values() 函数被高亮的问题。

  • 修复了绘制 k 线图时横坐标不对的问题。

  • 修复顶部导航栏样式泄漏到编辑器的函数文档区域的问题,修复后编辑器的函数文档顶部高度恢复正常。

  • 修复终端和数据视图中时间显示不正确的问题。

  • 优化了登录错误时显示的错误信息。

  • 数据库面板高度可调整。

  • 数据库列表解决了卡顿问题。

  • 修复了左侧数据库、变量、共享变量面板、高度、宽度及滚动操作相关的缺陷。