fix: v0.7.3 数据正确性与边界窗口收尾 — INSERT 语句级原子(三引擎+Aria PK 批内重复)/ 索引列 IS NULL 恒空 / delete RESTRICT 破坏索引 / queryStream 子查询静默空结果 / ALTER DROP 索引残留 / UNIQUE INDEX 存量校验 / SELECT * 别名投影 / WAL BEGIN/ROLLBACK 事务边界 / aria $in 与级联重复扫描性能 / $and 等值下推 / ANALYZE 索引统计 / React-Vue hooks 生命周期 / 迁移主键兜底 + 58 回归
This commit is contained in:
Vendored
+13
-7
@@ -164,7 +164,7 @@ interface MetonaPlugin {
|
||||
/** 销毁 */
|
||||
destroy(): void;
|
||||
}
|
||||
declare const VERSION = "0.7.2";
|
||||
declare const VERSION = "0.7.3";
|
||||
|
||||
/**
|
||||
* metona-sqlark Plugin — 插件系统
|
||||
@@ -803,12 +803,20 @@ declare class MemoryEngine implements IStorageEngine {
|
||||
name: string;
|
||||
}): Promise<void>;
|
||||
insert(tableName: string, rows: Record<string, unknown>[]): Promise<string[]>;
|
||||
/** v0.7.3: 按主键取已验证行(KVStoreEngine 持久化 validated 行用,含 default/类型归一) */
|
||||
getRow(tableName: string, pkValue: string): Record<string, unknown> | null;
|
||||
find(tableName: string, query: QueryPlan): Promise<Record<string, unknown>[]>;
|
||||
/** v0.4.0: 流式查询 — 逐行回调(单次迭代,不物化结果数组) */
|
||||
findStream(tableName: string, query: QueryPlan, onRow: (row: Record<string, unknown>) => void): Promise<number>;
|
||||
update(tableName: string, query: QueryPlan, updates: Record<string, unknown>): Promise<number>;
|
||||
/**
|
||||
* v0.7.2: 更新唯一性预检 — 批内互查(多条行更新到同一唯一值)+ 索引查
|
||||
* v0.7.3: 插入唯一性预检 —— 批内互查(本批前几行写入同一唯一值)
|
||||
* + 索引查(表中已有行)。与 update 的 checkUpdateUniqueness 对称,
|
||||
* 两阶段 insert 预检阶段调用(索引尚未反映本批写入)。
|
||||
*/
|
||||
private checkInsertUniqueness;
|
||||
/**
|
||||
* v0.7.3: 更新唯一性预检 — 批内互查(多条行更新到同一唯一值)+ 索引查
|
||||
* (排除自身旧条目)。阶段 1 中索引尚未更新,批内互查避免"两行同时改到
|
||||
* 同一新值"绕过唯一约束。
|
||||
*/
|
||||
@@ -821,7 +829,9 @@ declare class MemoryEngine implements IStorageEngine {
|
||||
/**
|
||||
* v0.4.2-fix: ON UPDATE 外键级联 — 被引用表主键变更时处理引用表:
|
||||
* RESTRICT 抛错 / CASCADE 更新 FK 值 / SET NULL 置空。
|
||||
* 分两阶段:先全量 RESTRICT 检查(任何修改前),再执行级联(防部分修改)。
|
||||
* v0.7.3-perf: 删除冗余的阶段 1 RESTRICT 扫描 —— checkUpdateRestrict 已在
|
||||
* 两阶段 update 预检(阶段 1b)覆盖 RESTRICT 与 SET NULL+required,
|
||||
* 此处任何修改前重复全表扫描纯属浪费。直接执行 CASCADE / SET NULL。
|
||||
*/
|
||||
private applyUpdateCascade;
|
||||
delete(tableName: string, query: QueryPlan): Promise<number>;
|
||||
@@ -843,8 +853,6 @@ declare class MemoryEngine implements IStorageEngine {
|
||||
private getPrimaryKey;
|
||||
private validateRow;
|
||||
private checkType;
|
||||
/** O(1) 唯一性检查:利用哈希索引 */
|
||||
private checkUniqueness;
|
||||
/** 索引查找 */
|
||||
private tryIndexLookup;
|
||||
/** 更新索引 */
|
||||
@@ -1145,8 +1153,6 @@ declare class AriaEngine implements IStorageEngine {
|
||||
private trimAllCaches;
|
||||
/** 检查内存预算,超出时强制 flush + GC */
|
||||
private checkMemoryBudget;
|
||||
/** 估算 WAL 大小(字节) */
|
||||
getWALEstimatedSize(): number;
|
||||
/**
|
||||
* ANALYZE: 收集表统计信息
|
||||
* 返回行数、平均行大小、索引深度等
|
||||
|
||||
Reference in New Issue
Block a user