Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

oak-db 更新日志

当前 package4.0.2
最新 tag4.0.1
覆盖区间4.0.0..4.0.1 / 4.0.1..HEAD

4.0.2 未发布(区间:4.0.1..HEAD

未发布migration 和 SQL translator 是主要变化面。
  • schema migration 不再输出数据库物理外键 SQL,ref 语义改由列注释中的 oak_ref: 元数据保存和反查;初始化阶段也不再单独补外键。
  • index.config.unique 现在被视为 Oak 框架层语义,MySQL / PostgreSQL 建表和 migration 不再生成 UNIQUE INDEX DDL;历史唯一索引会被规划为普通索引重建。
  • migration 计划补充引用注释、覆盖索引 include、浮点 / decimal 类型归一化、更保守的 rename candidate 判断,以及 nullable geometry 的方言差异处理。
  • MySQL / PostgreSQL update expression 翻译补齐,支持 $case、布尔 / null 常量、日期 floor / ceil 月年单位等;JSON / JSONB 属性中的普通对象不会再被误判为表达式。
  • Geo / SingleGeo 字段补齐字段级过滤:$within$contains$intersects$distance 会分别翻译为 PostGIS / MySQL 空间函数,点数组会归一化为闭合 polygon。
  • decimal 读写边界收紧:数据库返回的 decimal / numeric 保留为字符串以避免精度丢失,decimal update 的直接赋值要求字符串或 $expr
  • PostgreSQL money 查询结果转换为整数,聚合和投影结果通过 resultColumnMap 映射避免长路径别名或特殊聚合键破坏结果回填。
  • MySQL / PostgreSQL connector 增加 OAK_DB_LOG_SQL 开关;MySQL disconnect() 会先回滚仍挂起的事务连接再关闭连接池。
  • 新增 SQLite store 与 schema migration 支持,并把数据库驱动改为按需动态装载;安装检查只要求 MySQL、PostgreSQL、SQLite 中至少存在一个兼容驱动,消费端不使用的可选驱动不会被根入口强制加载。
  • 驱动解析同时以 process.cwd() 和 oak-db 自身目录为查找根。即使 oak-db 通过 file:、workspace/link 或发布包安装,只要消费应用根安装了兼容的 mysql2pgbetter-sqlite3,运行时就能解析;不要求驱动成为 oak-db 的直接依赖。
  • XOR filter SQL、JSON path predicate、JSON boolean predicate、unset 带点字面量 key、translateCreateEntity 结束分号等修复同步进存储层。
  • 新增 VitePress 版 oak-db 使用指南,补充 query、aggregate、JSON、update expression、migration、方言边界和真实数据库测试覆盖。
主要 diff 文件:src/sqlTranslator.tssrc/MySQL/*src/PostgreSQL/*src/migration.tssrc/utils/*test/*docs/*

4.0.1(tag:4.0.1,区间:4.0.0..4.0.1

已发布该 tag 主要是版本发布标记和依赖版本对齐,未发现独立的行为变化。

升级注意

外键语义:如果项目以前依赖数据库物理外键兜底一致性,需要把约束迁移到 Oak checker / trigger,并确认引用字段索引足够支撑查询。升级后 ref 关系主要通过 Oak schema 和列注释元数据维持,不再通过数据库 FK 约束维持。
唯一索引语义:index.config.unique 不再对应数据库唯一索引。需要硬性唯一约束的项目必须在 Oak checker 或业务规则里实现,否则历史数据库唯一索引在迁移收敛时可能被重建为普通索引。