stardb/CHANGELOG.MD

60 lines
2.7 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.

# Changelog
本文档记录 StarDB 的主要变更。
## [Unreleased] - 2026-03-20
### Added
- 新增可判定错误类型(`errors.Is` 友好):
- 生命周期:`ErrDBNotInitialized` `ErrTxNotInitialized` `ErrStmtNotInitialized`
- 参数/目标校验:`ErrQueryEmpty` `ErrTargetNil` `ErrTargetNotPointer`
- 映射与批量写入:`ErrColumnNotFound` `ErrNoInsertValues` `ErrBatchRowValueCountMismatch`
- 新增流式查询能力DB / Tx / Stmt
- `QueryRaw` / `QueryRawContext`
- `ScanEach` / `ScanEachContext`
- `ScanEachORM` / `ScanEachORMContext`
- 新增 NULL 安全取值:
- `GetNullString` `GetNullInt64` `GetNullFloat64` `GetNullBool` `GetNullTime`
- 新增 ORM 行为开关:
- `SetStrictORM(true)` 启用严格列检查
- `ClearReflectCache()` 清理反射缓存
- 新增 SQL 运行时可观测能力:
- Hook`SetSQLHooks` `SetSQLBeforeHook` `SetSQLAfterHook`
- 慢 SQL 阈值:`SetSQLSlowThreshold`
- 指纹:`SetSQLFingerprintEnabled` `SetSQLFingerprintMode` `SetSQLFingerprintKeepComments`
- 指纹计数:`SetSQLFingerprintCounterEnabled` `SQLFingerprintCounters` `ResetSQLFingerprintCounters`
- Context 元信息:`SQLHookMetaFromContext` `BatchExecMetaFromContext`
- 新增占位符方言适配:
- `SetPlaceholderStyle(PlaceholderQuestion|PlaceholderDollar)``?` / `$1,$2...`
- 新增批量插入分片控制:
- `SetBatchInsertMaxRows`
- `SetBatchInsertMaxParams`
- 常见驱动参数上限自动识别SQLite / PostgreSQL / MySQL / SQL Server
### Changed
- 批量写入在开启分片或触发参数阈值时,改为事务内多分片执行,降低单条 SQL 过大风险。
- 分片批量写入结果语义明确:
- `RowsAffected()` 返回分片累计值
- `LastInsertId()` 返回最后一个分片的 insert id
- 内部结构按模块归档到 `internal/`,保持外部 API 稳定:
- `internal/convert`
- `internal/scanutil`
- `internal/sqlplaceholder`
- `internal/sqlruntime`
- README 重写为面向使用场景的说明,补齐能力边界、接入顺序和 API 细节。
### Behavior Notes
- 默认查询 `Query` 仍为内存模式(解析到 `StarRows`)。
- 关闭内存预读时,使用 `QueryRaw` / `ScanEach` / `ScanEachORM`
- SQL Hook、指纹与指纹计数默认关闭需显式开启。
- 批量分片关闭条件:`maxRows <= 0``maxParams <= 0` 且未命中驱动自动阈值。
### Tests
- 新增/补强测试覆盖:
- 流式查询与流式 ORM
- NULL 安全取值
- 严格 ORM 行为
- 占位符转换
- SQL Hook、慢 SQL 阈值、指纹模式、注释保留开关、指纹计数
- BatchInsert 分片(按行数/参数)、失败回滚与结果语义