fix: v0.7.2 语句级原子性 + 事务 DDL 拒绝 + 约束/绑定硬化 — 6 项修复 + 43 回归 + CI 重型套件串行
- UPDATE 语句级部分提交(P1,四引擎):两阶段全量预检后执行,批内唯一互查, 任何一行失败整句不执行(aria 场景 WAL 与内存不再错位) - 事务内 ALTER/CREATE INDEX/DROP INDEX 残留(P1):Memory/KVStore 显式拒绝 (对齐 Aria),createTable/dropTable 保持可回滚 - SET NULL 级联绕过 required 约束(P1):预检阶段整体拒绝 FOREIGN_KEY_VIOLATION - bindParameters 注释误判(P2):行注释/块注释中的 ? 与引号不再参与绑定 - 未闭合字符串静默接受 → lexer 抛 PARSE_ERROR;未知 where 操作符抛 QUERY_ERROR - UPDATE undefined 覆盖列值 → 语义化为不更新(null 仍置空) - Hybrid 写穿透非原子(P1):磁盘失败自动重载内存对齐磁盘再抛原错误 - CI:Run tests 拆常规并行 + 重型串行(runInBand),重型测试超时余量提升, 性能护栏 kv 120→240s / opfs 150→300s(仍拦截悬崖回归) - 测试 1155 → 1198(74 套件),覆盖率 89.82% 保持
This commit is contained in:
+8
-6
@@ -42,22 +42,23 @@ src/
|
||||
├── index.ts # Entry point, global API (MetonaSqlark + MeSqlark)
|
||||
├── core.ts # MetonaSqlark main class
|
||||
├── constants.ts # Types, defaults, enums, errors
|
||||
├── utils.ts # Utility functions
|
||||
├── connection-manager.ts # Connection pool (connect/disconnect)
|
||||
├── engine/ # Storage engines
|
||||
│ ├── interface.ts # IStorageEngine interface
|
||||
│ ├── memory.ts # MemoryEngine (Map-based)
|
||||
│ ├── indexeddb.ts # IndexedDBEngine (browser persistence)
|
||||
│ ├── opfs.ts # OPFSEngine (Origin Private File System)
|
||||
│ ├── kvstore_engine.ts # KVStoreEngine (disk mode, self-built KV store)
|
||||
│ ├── kvstore/ # KVStore (log + snapshot + atomic multi-key write)
|
||||
│ └── aria/ # AriaEngine (LSM-Tree page storage engine)
|
||||
│ ├── index/ # LSM / MemTable / SSTable / Bloom / MergeIterator
|
||||
│ ├── page/ # 4KB slotted page format
|
||||
│ ├── buffer/ # Buffer Pool (LRU eviction)
|
||||
│ ├── wal/ # Write-Ahead Log + Checkpoint
|
||||
│ ├── transaction/ # MVCC manager
|
||||
│ ├── store/ # Backends (IndexedDB / OPFS / Memory)
|
||||
│ ├── store/ # Backends (OPFS / KVStore / Memory / Encrypted)
|
||||
│ ├── locks.ts # Web Locks multi-tab exclusive lock
|
||||
│ └── compression/ # LZ4
|
||||
├── hybrid/ # HybridEngine (write-through)
|
||||
├── migration/ # Legacy IndexedDB migration tool (one-shot)
|
||||
├── table/ # Table management & Schema validation
|
||||
├── query/ # Query system
|
||||
│ ├── ast.ts # SQL AST type definitions
|
||||
@@ -68,12 +69,13 @@ src/
|
||||
├── sql/ # SQL parser
|
||||
│ ├── tokens.ts # Token types & keywords
|
||||
│ ├── lexer.ts # Tokenizer
|
||||
│ └── parser.ts # Recursive descent parser
|
||||
│ ├── parser.ts # Recursive descent parser
|
||||
│ └── params.ts # Parameter binding (? placeholders)
|
||||
├── transaction/ # Transaction manager
|
||||
├── plugin/ # Plugin system (14 lifecycle hooks)
|
||||
└── integrations/ # React & Vue hooks
|
||||
|
||||
tests/ # Test suite (1022 test cases, 62 suites + 7 e2e)
|
||||
tests/ # Test suite (1198 test cases, 74 suites + 12 e2e)
|
||||
tests/helpers/ # 共享测试工具(OPFS mock 等)
|
||||
tests/e2e/ # Playwright e2e(真实 Chromium + OPFS)
|
||||
site/ # Documentation site (index / docs / demo)
|
||||
|
||||
Reference in New Issue
Block a user