跳转至

iotdb Apache IoTDB 1.3.2

## 功能与改进

- 存储模块:提升 insertRecords 接口的写入性能
- 查询模块:新增 Explain Analyze 语句(监控单个 SQL 执行的每个阶段所花费的时间)
- 查询模块:新增 UDAF(用户自定义聚合函数)框架
- 查询模块:新增 MaxBy/MinBy 函数,支持检索最大/最小值及其对应的时间戳
- 查询模块:提升值过滤查询的性能
- 数据同步:路径匹配支持路径模式
- 数据同步:支持元数据同步(包括时间序列及相关属性、权限等)
- 流处理:新增 Alter Pipe 语句,支持 Pipe 任务插件的热更新
- 系统模块:系统数据点统计现在包括通过加载 TsFile 导入的数据统计
- 脚本和工具:新增本地升级备份工具(通过硬链接备份原始数据)
- 脚本和工具:新增导出数据/导入数据脚本,支持以 CSV、TsFile 格式或 SQL 语句导出数据
- 脚本和工具:Windows 环境现在支持通过窗口名称区分 ConfigNode、DataNode 和 Cli

## Bug 修复

- 优化因超时删除数据库时发生 NullPointerException(NPE)的错误信息
- 为 notifyLeaderReady、notifyLeaderChanged 和 procedure worker 添加日志
- 添加文件合并时对现有错误数据的兼容处理
- 修复查询过程中刷新空文件导致的死锁问题
- 修复 Ratis 在读、写和删除操作期间无响应的问题
- 修复加载和合并操作中的并发 Bug
- 修复系统在某些场景下压缩比记录为负数的问题
- 修复合并任务内存估算期间发生的 ConcurrentModificationException 问题
- 修复并发写入、自动创建和删除数据库时可能发生的潜在死锁问题

## 变更内容

- 删除写入内存控制参数
- Pipe:通过在 Pipe 重启后强制启动 PipeHistoricalDataRegionTsFileExtractor 确保至少一次语义
- 将 AbstractCompactionEstimator 文件信息缓存的同步块分离
- Pipe:使用 clusterId 判断目标集群是否为源集群
- 存储引擎:修复因多线程安全问题导致的 wal 删除线程异常
- PBTree:修复死锁并重构写入/更新接口
- 移除 SQL `merge`
- 加载:在成功加载后触发最后刷新时间映射和 tsfile 资源降级
- JDBC:getDouble 添加类型检查
- 移除副本不一致的无限重试逻辑以避免潜在问题
- Pipe:支持在接收器 IP 规范中使用 "sink.host" 和 "connector.host" 键
- 修复 DataNode 重启时 Ratis 查询不重试的问题
- Pipe:支持 alter pipe SQL 的替换和修改模式
- 存储引擎:将 DeviceCache 放入存储引擎的总内存中
- 提升 IT 框架支持重启集群
- 修复参数 dn_multi_dir_strategy 的拼写错误
- 升级 GitHub Action 版本以修复警告
- 引入 UDAF(用户定义聚合函数)
- Pipe:将解析事件逻辑移入 PipeProcessorSubtask 以分离 CPU 密集型和 IO 密集型任务
- DataNodeDevicePathCache 应使用 memtable 的空闲内存
- Pipe:恢复 "Pipe: stop pipe using restarting strategy to unpin the wal's reference count to avoid WAL stacking" 以避免子任务异常处理期间不必要的 pipe 删除
- Pipe:移除 stuck restart 逻辑中的 mayLinkedTsFileCountReachDangerousThreshold 判断
- Pipe:修复处理器在一段时间内遇到内存不足时崩溃的 Bug
- Pipe:减少 pipe 日志并控制日志打印频率
- 修复 MQTTService 中的内存泄漏
- Pipe:模式解析修剪:当模式在数据库以下级别时,如果 tsfiles / tablets 完全匹配模式,则可以跳过解析逻辑
- 升级 org.apache.commons:commons-compress 从 1.21 到 1.26.0
- 升级 ip 从 2.0.0 到 2.0.1 在 /iotdb-connector/grafana-plugin 中
- Pipe:修复因历史提取器取消刷新导致的潜在丢失点 Bug
- 修复使用 'merge' 命令的问题
- Pipe:修复 CN 无法感知 meta sync 中 drop pipe 失败并可能导致不断跳过 drop pipe 的 Bug
- 优化在 `aggregation with align by device` 情况下的分布式计划
- 修复 group by time interval 中的数字溢出问题
- 修复因过滤器和偏移下推导致的合并重叠数据处理中的 Bug
- 引入聚合函数 MinBy
- 添加 Procedure 的恢复 IT,并删除 ProcedureStore
- PBTree:实现用于 MNode 管理的双缓冲容器
- 优化刷新 memtable 检查
- 增强对 ISO_LOCAL_DATE_TIME 时间戳格式的支持
- IT:恢复一些重启 IT 中的更改,以便在重启失败时使错误日志更清晰
- 将 CI 更改为 GitHub CI
- feat(bat):添加标题并设置格式
- 修复 PBTree.SchemaFile 中的死锁
- 修复 root 权限丢失和授予角色的问题
- 支持在 insert 语句中将时间列放置在任意列索引
- 使 Drop database 超时返回消息更详细
- 修复 VolatileSubtreeIterator 如果新缓冲区中的所有节点都不合格则缺少更新缓冲区的问题
- Pbtree:使用磁盘和缓冲区上的归并排序迭代 MNode
- 添加 FileUtils.moveFileSafe 函数
- 为数据分区分配添加日志
- 修复 IoTDBPreparedStatement 实现 addBatch 功能的问题
- 修正用户、角色和过程文件夹的默认路径
- 在 IoTDBConfig 中缓存 clusterId
- 实现新的计划优化器:PredicatePushDown
- 优化 ConfigNode ConsensusManager 初始化逻辑
- 当 configLeader 存在时不等待重试
- 更快地修复数据
- 升级 org.scala-lang:scala-library 从 2.12.18 到 2.12.19
- 升级 flink.version 从 1.17.0 到 1.17.2
- 添加 show current_timestamp 语句