db/CHANGELOG.md

92 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 变更记录 - @go/db
## [1.0.11] - 2026-05-13
- **基础设施对齐**:
- 移除 `encoding/json` 原生依赖,全面切换至 `apigo.cc/go/cast.UnmarshalJSON` 以增强类型兼容性。
- 移除测试代码中对 `os.Remove` 的直接调用,统一切换至 `apigo.cc/go/file.Remove` 以支持隔离文件系统。
- **稳定性增强**:
- 验证并更新了测试用例,确保在 Go 1.25.0 环境下的执行稳定性。
- 更新 `TEST.md` 性能基准,反映基础设施对齐后的最新指标。
## [1.0.10] - 2026-05-10
- **功能增强**:
- 全面支持“复杂标识符”:改进了 `LIKE` 拦截逻辑中的正则表达式,支持带引号(`` ` ``, `"`, `'`, `[]`)和特殊字符(如 `-`)的表名与字段名。
- 优化 `cleanIdentifier`:能够更精准地剥离多段式标识符(如 `table.column`)中的包装引号。
- 增强 `getFTSMatchSQLParts``extractTableName`:确保在各种引用风格下均能正确定位影子列和源表。
- **基础设施对齐**:
- 升级 `apigo.cc/go/log``v1.3.2`
- **测试增强**:
- 新增 `TestComplexIdentifierFTS` 验证复杂标识符下的全文检索重定向。
- 修复并增强 `TestAutonomousFTS` 以支持多种引用风格的兼容性测试。
## [1.3.0] - 2026-05-12
- **基础设施对齐**:
- 官方发布 v1.3.0 对齐版本。
## [1.0.11] - 2026-05-11
- **基础设施对齐**:
- 最终基础设施对齐。
## [1.0.10] - 2026-05-10
- **基础设施对齐**:
- 升级 `apigo.cc/go/redis``v1.0.8`
- 验证了 `redis.NewIDMaker` API 变更后的集成稳定性。
- 增强了 ID 生成器的集成测试,覆盖了 Redis 路径。
## [1.0.9] - 2026-05-09
- **基础设施对齐**:
- 升级 `apigo.cc/go/log``v1.1.13`
-`DBInfoLog``DBErrorLog` 实现 `Reset()` 方法,以遵循 `log` 的强制 Reset 契约。
- 调整 `DBLog` 内的字段 `pos` 索引,从 `6` 开始紧凑排列,消除索引空洞。
- **测试增强**:
- 修复多个测试用例 (`TestSmartDelete`, `TestGenericQuery`, `TestTableProbing`, `TestVersionControl`) 中因使用 `sqlite://:memory:` DSN 导致的初始化失败问题。
- 引入 `test_util.go``ResetAllForTest()`,确保测试间的全局状态隔离。
## [1.0.6] - 2026-05-05
### 优化
- **日志体系重构**:
- 引入 `DBInfoLog``DBErrorLog` 类型化日志,分别继承 `log.InfoLog``log.ErrorLog`
- 利用 `log` 包的新特性实现“零手动”调用栈捕获,业务端仅需关注错误信息和 SQL 现场。
- 进一步解耦业务字段与日志元数据。
### 优化
- **日志自主化**:
- 将数据库日志逻辑从 `log` 包迁移至 `db` 包,实现日志格式与业务逻辑的深度绑定。
- 自定义 `DBLog` 结构,利用 `log.GetEntry[DBLog]()` 对象池加速,并支持完整的错误堆栈捕获。
- 接入 `log.Log` 的自动填充能力,精简元数据维护逻辑。
## [1.0.4] - 2026-05-04
### 优化
- **日志增强**:升级 `apigo.cc/go/log` 至 v1.0.1,并重构数据库日志逻辑,利用新版 `log.DB` API 直接支持错误字段和调用栈捕获,提升排障效率。
## [1.0.3] - 2026-05-04
### 新增
- **自动随机 ID (Auto Random ID)**:当表主键或唯一索引字段类型为 `char(8/10/12/14)` 且值为空时,自动填充分布式唯一 ID。
- **智能 ID 生成器**自动适配数据库类型MySQL 右旋散列、PostgreSQL 时间单调、SQLite 纯随机),优先使用 Redis 分布式生成器。
## [1.0.2] - 2026-05-04
### 修复
- **PostgreSQL 增强**:补全了 `getTable` 中的元数据探测逻辑,使 `autoVersion` 和影子删除在 PostgreSQL 下可自动启用。
- **错误处理一致性**:统一了 `QueryResult``ExecResult` 的错误传播逻辑,确保 `r.Error` 在数据处理阶段也能正确记录。
- **单元测试修复**:修正了 `DB_test.go` 中因 SQLite 时区差异导致的 `TestInsertReplaceUpdateDelete` 偶发失败。
### 优化
- **性能提升**:在 `Base.go` 中引入了 `sync.Map` 缓存结构体反射解析结果,减少 SQL 生成过程中的反射开销。
## [1.0.1] - 2026-05-03
### 新增
- **架构 DSL (Schema-as-Code)**:支持通过文本 DSL 定义并自动同步数据库结构。
- **影子删除 (Shadow Deletion)**:支持 `SD` 标记,使用 `db.Remove` 自动将删除数据移动到 `_deleted` 后缀的备份表中。
- **乐观锁与版本控制**:支持 `db.Update` 自动处理版本递增与冲突检测。
- **泛型支持**:新增 `db.ToSlice[T]``db.To[T]`,提供类型安全的查询结果映射。
- **PostgreSQL 支持**:初步支持 PostgreSQL 的架构同步逻辑。
- **AI 友好文档**:新增 `db.SchemaMarkdown()` 自动生成 Markdown 格式的数据库模型文档。
### 优化
- 重构了 `makeResults` 逻辑,预计算 Struct 字段映射,显著提升大数据集下的查询性能。
- 完善了 SQLite 的 `DATETIME` 与 Go `time.Time` 的自动转换逻辑。
- 所有的文档和注释已本地化为中文。
### 修复
- 修复了 `Tx` 结构体中的拼写错误 `isCommitedOrRollbacked``isCommittedOrRollbacked`
- 统一了全模块的参数命名规范:`requestSql` -> `query``wheres` -> `conditions`