Repository navigation
ZH Release Notes 2.1.1
2.1.1 修复游标时间转换和 IoTDB 批次物理列身份,增加可复用的适配器契约测试,并自动选择 Docker 回归后端。Template → adapter SPI → 后端主干设计、公共 API、com.alandevise.tsgate.* 包、tsdb.* 配置项、Java 17 及既有 Spring Boot/客户端/服务端基线保持不变。
本版本仅在 GitHub 发布:源码及发行附件。2.1.1 不发布到 Maven Central;Central 已公开的坐标仍为 2.1.0,不会自动获得本轮修复。2.1.0 发布记录及其历史验证证据继续保留。
| 范围 | 2.1.1 的行为 |
|---|---|
| 游标时间转换 | 数值结果时间必须有限、无小数部分且处于有符号 long 范围。小数、NaN、无穷和溢出不再静默转换成其他时间戳;保留 Instant/ISO 时间既有毫秒语义,以及普通时间别名的优先级和失败回退。时间页 hasNext=true 而最后返回行无法提供有效续页时间时,模板抛 QUERY_ERROR。严格游标仍要求每个返回行都具备全部物理游标列。 |
| IoTDB 批次预检 | 列角色/类型校验与预备行的值统一使用 Locale.ROOT 小写物理身份。同一记录的大小写重复列,包括 TAG/FIELD 重叠和 null 字段,均以 METADATA_ERROR、NOT_COMMITTED 及零数据库 I/O 拒绝。不同记录中兼容的大小写变体合并为一个 Tablet 列并保留所有值;角色/类型冲突在借连接前拒绝完整批次。调用方原始记录和键不变。 |
| 可复用适配器契约 | 共享测试夹具/断言与机器可检查的能力表覆盖公共参数/count、配置快照、生命周期、批次预检/提交以及查询/分页契约。能力分为支持、不支持和需要配置,保留各后端错误分类差异;不支持的能力验证 UNSUPPORTED_OPERATION,不能静默跳过。测试基础设施不引入生产能力 SPI 或运行时依赖。 |
| Docker CI | 相关 Pull Request/push 按改动路径选择 Docker 后端;共享 core/构建输入覆盖全部受影响后端,InfluxDB 1.x 改动同时覆盖 OpenGemini。OpenGemini 常规检查覆盖 1.4.1/1.5.2 单节点;发行标签和完整手动运行覆盖两个版本各自的单节点、三节点三副本集群。报告记录选中/排除范围、源码身份、版本与清理结果。 |
时间游标仍需边界时间戳唯一,才能避免漏掉同时间的其他记录;本版本不增加纳秒游标或跨页快照。IoTDB 的新拒绝针对歧义/冲突输入,正常兼容写入保持原用法。InfluxDB 1.x HTTP 400 仍属于不确定提交;OpenGemini 的 HTTP 整数精度和索引异步可见性边界不变。
声明任何 2.1.1 依赖前,须先将准确发行源码安装到本地 Maven 仓库。使用 Java 17+、Maven 3.9+:
git clone --branch v2.1.1 --depth 1 https://github.com/AlanDevise/TsGate.git tsgate-2.1.1
cd tsgate-2.1.1
mvn clean install安装会提供版本一致的父 POM、BOM、adapter 和 starter。成功后,业务可以使用如下依赖:
<dependency>
<groupId>io.github.alandevise</groupId>
<artifactId>tsgate-iotdb-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>全部 TsGate 依赖和显式导入的 TsGate BOM 须统一为 2.1.1。GitHub 发行不会使 Maven Central 可以解析该版本;其他机器也需安装同版源码,或使用业务自建制品仓库。需要直接从 Central 引入时,继续使用一致的 2.1.0 依赖。后端启用和运行参数见开始使用。
2026-10-07(Asia/Shanghai) 的本地验证在冻结源码提交 7c7cf76 上通过。各报告确认源码清单和 Git 提交均未改变。这些是新运行的 2.1.1 结果,历史 2.1.0 数量另行保留。
| 范围 | 实际结果/证据 |
|---|---|
| JDK 17/Boot 2.7.18、JDK 21/Boot 3.5.14、JDK 25/Boot 4.1.0 单测回归 |
三个运行时组合各通过 1,078 项,失败、错误、跳过均为零。报告:unit-jdk17/summary.json、unit-jdk21/summary.json、unit-jdk25/summary.json。 |
| 本地 IoTDB/InfluxDB 1.x/InfluxDB 3 Docker 读写及回归,包括 IoTDB 单个 Tablet 至少 12 行混合大小写 |
115 项通过,失败、错误、跳过均为零。准确服务端:IoTDB 2.0.10、InfluxDB OSS 1.13.1、InfluxDB 3 Core 3.11.5;Temurin 17/Boot 2.7.18。报告:docker-existing/summary.json。 |
| OpenGemini 1.4.1 与 1.5.2,各自单节点及三节点三副本集群 |
每种部署通过 44 项,共 176 项,失败、错误、跳过均为零;两个真实三节点集群均使用三副本。报告:opengemini-matrix/summary.json。 |
| 运行器/工作流检查、能力矩阵和无签名发行归档检查 |
27 份无签名发行 JAR 归档检查通过;51 项 Python 检查通过(core/CI/制品验证器 34 项、OpenGemini 运行器 17 项),actionlint 1.7.7 及 YAML 语法检查通过。报告:unit-jdk17/release-artifacts.json、python-core.log、python-opengemini.log。 |
| 发行源码 SHA、报告位置与自建容器/网络清理 | 完整 SHA:7c7cf76100085891131080ca0fddf2273a4dfa0e。报告位于 .local-test/release-2.1.1-20261007/。全部自建既有后端容器及 OpenGemini 容器/网络均已移除,清理无失败。 |
远程 CI: main 分支运行与 v2.1.1 标签完整运行均已完成并通过,包括各自验证门禁,对应相同源码 7c7cf76100085891131080ca0fddf2273a4dfa0e。main 验证 OpenGemini 1.4.1、1.5.2 两个单节点;标签运行全部九个任务通过,覆盖 OpenGemini 四种版本/拓扑组合,包括真实三节点三副本集群。上方本地测试数量与远程运行结果分别记录;公开摘要见发行附件 release-verification.json。
代表性测试通过仅证明报告中对应版本、配置与操作;不认证未测试的数据库版本、TLS/认证部署或故障切换。复现命令与 CI 范围见测试与发布。
TsGate · Wiki home · 文档首页 · Apache-2.0 · NOTICE
Compatibility claims apply only to documented capabilities and verified versions. 兼容性承诺仅适用于已列明的能力和已验证的版本。