4.8 KiB
4.8 KiB
Changelog
All notable changes to MetonaSqlark will be documented in this file.
[0.1.14] - 2026-07-26
Fixed
- IndexedDB 事务原子性:
flushToIDB改为单 IDB 事务包裹 clear+insert,消除崩溃丢数据风险 - 多标签页冲突:
open()添加onversionchange监听,其他标签页升级版本时自动关闭过期连接 - Memory 引擎幂等:
open()重复调用安全无副作用 - 关闭时清理
onversionchange监听器,防止内存泄漏
[0.1.13] - 2026-07-26
Added
- 事务回滚机制:
IStorageEngine新增beginTransaction/commitTransaction/rollbackTransaction接口- MemoryEngine: 快照式回滚(深拷贝 tables/schemas/indexes)
- IndexedDBEngine: 延迟写入策略(事务中仅写内存,commit 批量刷 IDB)
- OPFSEngine: 快照式回滚(commit 批量写文件)
- HybridEngine: 同时代理内存+磁盘引擎事务
- 子查询支持: SQL Parser + Executor 支持
IN (SELECT ...)和op (SELECT ...)子查询- AST 新增
SubqueryExpression类型 - Parser 在 IN 和比较运算符后检测子查询
- Executor 新增
resolveSubqueries()递归解析,自动执行子查询并替换为具体值
- AST 新增
- 外键级联操作: ColumnDef 新增
onDelete/onUpdate选项- 支持
CASCADE(递归级联删除)、SET NULL、RESTRICT - SQL Parser 解析
REFERENCES table(col) ON DELETE CASCADE ON UPDATE CASCADE - MemoryEngine 内置
cascadeDelete()递归级联逻辑
- 支持
- 连接池管理:
MetonaSqlark.connect()静态方法- 同名数据库复用已打开实例,引用计数管理
db.disconnect()释放连接,归零自动 closeMetonaSqlark.disconnectAll()强制关闭所有连接
Changed
TransactionManager.execute()调用引擎层 begin/commit/rollback 实现真正原子性- IndexedDBEngine CRUD 事务感知:活跃事务中延迟 IDB 写入
- ASTColumnDef / astColumnToColumnDef 支持 references/onDelete/onUpdate 透传
Fixed
- IndexedDBEngine 事务中 find/count 从内存缓存读取(保证读到未提交变更)
- SQL Parser parseColumnDef 循环条件扩展,避免 REFERENCES 语法解析中断
[0.1.12] - 2026-07-26
Added
MeSqlark别名导出,与MetonaSqlark完全等价metona-sqlark.cjs.jsCommonJS 构建产物- 完善的
where-matcher.ts消除 220+ 行重复代码 $col列引用支持 JOIN ON 条件$and/$or嵌套支持(字段级 + 顶层)$not逻辑非操作符$like正则缓存加速projectColumns列投影支持table.column格式DISTINCT去重支持(O(n) 时间,列值拼接优化)- 测试覆盖率提升至 93.46%(264 测试/15 套件)
Changed
where-matcher统一 MemoryEngine / IndexedDBEngine / Executor 的 WHERE 逻辑- JOIN ON 匹配支持
$col语法 - LIKE 正则改为缓存式编译
- Executor DISTINCT 用列值拼接代替 JSON.stringify
- JOIN 嵌套循环连接优化:避免 ON 时对象扩散
Fixed
- IndexedDBEngine
update/delete方法正确同步内存缓存 - OPFSEngine
getTableNames兼容entries()返回值 - SQL Parser 正确处理字符串转义字符
- SQL Parser 正确处理表别名(无 AS 关键字)
- SQL Parser 解析
IS NULL/IS NOT NULL/NOT LIKE peekTokenIs方法正确暴露给语法分析- 多处边界条件空值/假值处理
[0.1.11] - 2026-07-25
Added
- React 集成 hooks:
useQuery,useTable,useDatabase - Vue 集成 composables:
useSqlarkQuery,useSqlarkTable,useSqlarkDatabase - 发布订阅系统:
subscribe(),emit() - 数据迁移系统:
addMigration(),migrateTo() - 导入导出:
exportTable(),exportAll(),importTable() - 完整 SQL 解析器:
Lexer+Parser(递归下降) - SQL 支持: SELECT, INSERT, UPDATE, DELETE, CREATE TABLE, DROP TABLE
- JOIN 支持: INNER, LEFT, RIGHT, CROSS
- GROUP BY + HAVING + 聚合函数 (COUNT, SUM, AVG, MIN, MAX)
- DISTINCT, ORDER BY, LIMIT, OFFSET
- WHERE 条件: AND, OR, NOT, IN, LIKE, IS NULL
- Query Builder 链式 API:
select().where().orderBy().limit().execute() - 插件系统: 14 种生命周期钩子 + PluginManager
- Metadata 系统: ColumnDef 完整约束 (type/primaryKey/required/unique/index/default/references/maxLength/min/max)
Changed
- 架构重构为分层设计:Engine → QueryExecutor → Table/QueryBuilder → SQL Parser → Public API
- AST 作为统一中间表示,SQL 和 QueryBuilder 行为完全一致
- 测试框架完善:core / edge / groupby / join / query-system / sql / table / engine / transaction / plugin / hybrid 全覆盖
[0.0.1] - 2026-07-24
Added
- 初始项目骨架
- TypeScript 配置(严格模式)
- Rollup 构建(UMD / ESM / CJS / min / .d.ts)
- Jest + jsdom 测试环境
- ESLint + @typescript-eslint
- Gitea Actions CI 工作流
- 示例站点(index / demo / docs)
- 构建脚本 build.sh