feat: v0.7.0 参数化查询 + 事务增量 flush + 复合主键语义硬化 + EXPLAIN 真实索引信息
- 参数化查询 db.query(sql, params):词法层 ? 绑定 + SQL 字面量安全编码 ('' 转义/注入防护);参数计数不匹配 PARAM_ERROR;对象参数显式拒绝 - KVStoreEngine 事务增量 flush:行级变更追踪,commit 仅写改动行 (1000 行表改 1 行:日志 1 条目 vs 整表 1000 条目);级联影响表漏写修复 (txFullTables 同步加入 txDirtyTables);移除每次 commit 全量 checkpoint (阈值自动 checkpoint + close 统一截断) - 复合主键显式拒绝:createSchema 校验期 SCHEMA_ERROR + ALTER ADD 主键列防护 (此前静默取第一个主键,其余标记失效) - EXPLAIN usingIndex 真实命中信息:pk / index:col / none 测试 1126 → 1147(72 套件);行覆盖率 89.8%;版本 0.7.0
This commit is contained in:
Vendored
+16
-3
@@ -164,7 +164,7 @@ interface MetonaPlugin {
|
||||
/** 销毁 */
|
||||
destroy(): void;
|
||||
}
|
||||
declare const VERSION = "0.6.3";
|
||||
declare const VERSION = "0.7.0";
|
||||
|
||||
/**
|
||||
* metona-sqlark Plugin — 插件系统
|
||||
@@ -676,8 +676,12 @@ declare class MetonaSqlark {
|
||||
dropTable(name: string): Promise<void>;
|
||||
/** 获取所有表名 */
|
||||
getTableNames(): Promise<string[]>;
|
||||
/** 执行 SQL 字符串查询 */
|
||||
query(sql: string): Promise<unknown>;
|
||||
/**
|
||||
* 执行 SQL 字符串查询。
|
||||
* v0.7.0: 支持位置参数(`?`)—— `db.query('SELECT * FROM t WHERE id = ?', ['1'])`。
|
||||
* 参数按 SQL 字面量安全编码(字符串 '' 转义),杜绝 SQL 注入。
|
||||
*/
|
||||
query(sql: string, params?: unknown[]): Promise<unknown>;
|
||||
/**
|
||||
* 流式查询:逐行回调,不一次性物化全部结果(大表友好)。
|
||||
* 支持简单 SELECT(WHERE/LIMIT/OFFSET/列投影);
|
||||
@@ -895,6 +899,15 @@ declare class KVStoreEngine implements IStorageEngine {
|
||||
private txDirtyTables;
|
||||
/** 事务中发生 schema 变更(DDL)—— commit 时持久化 schema */
|
||||
private txSchemaChanged;
|
||||
/**
|
||||
* v0.7.0: 事务行级变更记录(table → pk → put/delete)。
|
||||
* commit 时按行增量 flush(此前整表 diff:大表事务改 1 行也重写全表)。
|
||||
*/
|
||||
private txChanges;
|
||||
/** v0.7.0: 无法行级追踪的表(主键变更/级联影响表)→ commit 时整表 diff */
|
||||
private txFullTables;
|
||||
/** v0.7.0: 事务内 clear 的表 → commit 时清空 KV 行 */
|
||||
private txClearedTables;
|
||||
constructor(medium?: IStorageBackend, checkpointThreshold?: number);
|
||||
private rowKey;
|
||||
private rowPrefix;
|
||||
|
||||
Reference in New Issue
Block a user