Files
go-omni/reports/gormAcceptance.md

2.5 KiB
Raw Blame History

v0.14.1-preview GORM 可选适配验收

日期:2026-09-24。GORM v2 API,固定 gorm.io/gorm v1.31.2、gorm.io/driver/mysql v1.6.0。没有修改接入项目业务,也未使用业务数据库。

已通过的检查

  • 原池身份与限额保持;初始化错误、已取消 context、版本查询超时都保留原因,且不会关闭借用池。
  • 原生命名策略、默认事务保护、错误翻译、PreparedStmt 查询和嵌套事务保持可用。成功后启动 context 取消不会影响新请求。
  • SQL 日志级别、慢查询、ErrRecordNotFound 忽略、占位符过滤、错误详情显式开关、requestId/traceId、并发 LogMode 副本与 UTF-8 截断。
  • 真实 MySQL 8.4:TLS、同池连接、事务提交/错误回滚/panic 回滚、嵌套 savepoint 回滚、唯一约束、查询取消和后续恢复;参数与重复键错误中的值不进入默认日志。
  • 实际生成 MySQL 项目,只扩展项目拥有的 svc 字段与 Init,main/运行期不改;生成检查通过,ORM 随项目池关闭。既有 MySQL TLS/mTLS 与 HTTP 限额回归一并执行。
  • go list -deps 确认核心 App、database、database/mysql 的编译依赖不包含 GORM。

本地命令:

GO_OMNI_SCAFFOLD_INTEGRATION=1 go test -race ./... -count=1 -timeout=300s
go vet ./...
go build ./...
python3 scripts/verifyConnector.py --local --gorm --report reports/gormLocal.json

本地数据库报告 的 MySQL 限制为 1 CPU、768 MiB、128 PIDs,只绑定 localhost;测试使用临时凭据/证书,结束后清理容器和消费者。实库用例通过脚本显式启用,不能把普通 go test 下的 skip 当作实库通过。

发布后的远程验收命令:

python3 scripts/verifyConnector.py --version v0.14.1-preview --gorm --report reports/gormRemote.json
python3 scripts/verifyManagedRelease.py --version v0.14.1-preview --report reports/gormManagedRemote.json

远程脚本从空缓存读取固定版本,并检查 CLI/消费者版本、module 校验值和没有本地 replace;结果发布后单独归档,代码标签保持不变。

边界

本版真实数据库只验收 MySQL。自定义方言工厂必须使用给定连接池;额外连接池由其所有者管理,不自动纳入当前池生命周期。GORM 默认不启用 PrepareStmt;显式启用时保留第三方缓存语义,其清理接口及后台 goroutine 的限制已在 适配文档 说明。默认 SQL 参数隐藏不等于自动脱敏原始 SQL 字面量。