@quereus/quereus 0.6.4 → 0.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -1
- package/dist/src/common/logger.d.ts +59 -0
- package/dist/src/common/logger.d.ts.map +1 -1
- package/dist/src/common/logger.js +68 -0
- package/dist/src/common/logger.js.map +1 -1
- package/dist/src/func/builtins/datetime.d.ts.map +1 -1
- package/dist/src/func/builtins/datetime.js +10 -5
- package/dist/src/func/builtins/datetime.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
- package/dist/src/planner/building/constraint-builder.js +4 -0
- package/dist/src/planner/building/constraint-builder.js.map +1 -1
- package/dist/src/planner/building/delete.d.ts.map +1 -1
- package/dist/src/planner/building/delete.js +2 -1
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +4 -1
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/update.d.ts.map +1 -1
- package/dist/src/planner/building/update.js +4 -2
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts +8 -2
- package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.js +11 -2
- package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
- package/dist/src/planner/validation/determinism-validator.d.ts +47 -0
- package/dist/src/planner/validation/determinism-validator.d.ts.map +1 -0
- package/dist/src/planner/validation/determinism-validator.js +63 -0
- package/dist/src/planner/validation/determinism-validator.js.map +1 -0
- package/dist/src/runtime/async-util.d.ts.map +1 -1
- package/dist/src/runtime/async-util.js +4 -3
- package/dist/src/runtime/async-util.js.map +1 -1
- package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
- package/dist/src/runtime/emit/add-constraint.js +3 -0
- package/dist/src/runtime/emit/add-constraint.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +84 -8
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emitters.d.ts.map +1 -1
- package/dist/src/runtime/emitters.js +2 -1
- package/dist/src/runtime/emitters.js.map +1 -1
- package/dist/src/runtime/types.d.ts +1 -0
- package/dist/src/runtime/types.d.ts.map +1 -1
- package/dist/src/runtime/types.js.map +1 -1
- package/dist/src/runtime/utils.d.ts +14 -0
- package/dist/src/runtime/utils.d.ts.map +1 -1
- package/dist/src/runtime/utils.js +40 -1
- package/dist/src/runtime/utils.js.map +1 -1
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +50 -0
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/util/ast-stringify.d.ts.map +1 -1
- package/dist/src/util/ast-stringify.js +14 -1
- package/dist/src/util/ast-stringify.js.map +1 -1
- package/dist/src/util/mutation-statement.d.ts +16 -0
- package/dist/src/util/mutation-statement.d.ts.map +1 -0
- package/dist/src/util/mutation-statement.js +92 -0
- package/dist/src/util/mutation-statement.js.map +1 -0
- package/dist/src/util/sql-literal.d.ts +11 -0
- package/dist/src/util/sql-literal.d.ts.map +1 -0
- package/dist/src/util/sql-literal.js +18 -0
- package/dist/src/util/sql-literal.js.map +1 -0
- package/dist/src/vtab/memory/table.d.ts +1 -2
- package/dist/src/vtab/memory/table.d.ts.map +1 -1
- package/dist/src/vtab/memory/table.js +3 -3
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/table.d.ts +23 -5
- package/dist/src/vtab/table.d.ts.map +1 -1
- package/dist/src/vtab/table.js +6 -0
- package/dist/src/vtab/table.js.map +1 -1
- package/package.json +1 -1
- package/src/common/logger.ts +75 -1
- package/src/func/builtins/datetime.ts +10 -5
- package/src/index.ts +4 -1
- package/src/planner/building/constraint-builder.ts +178 -173
- package/src/planner/building/delete.ts +5 -1
- package/src/planner/building/insert.ts +8 -1
- package/src/planner/building/update.ts +10 -2
- package/src/planner/nodes/dml-executor-node.ts +8 -2
- package/src/planner/validation/determinism-validator.ts +104 -0
- package/src/runtime/async-util.ts +4 -3
- package/src/runtime/emit/add-constraint.ts +3 -0
- package/src/runtime/emit/dml-executor.ts +105 -9
- package/src/runtime/emitters.ts +2 -1
- package/src/runtime/types.ts +3 -0
- package/src/runtime/utils.ts +41 -1
- package/src/schema/manager.ts +800 -742
- package/src/util/ast-stringify.ts +24 -1
- package/src/util/hash.ts +90 -90
- package/src/util/mutation-statement.ts +129 -0
- package/src/util/plugin-helper.ts +110 -110
- package/src/util/sql-literal.ts +22 -0
- package/src/vtab/memory/table.ts +3 -8
- package/src/vtab/table.ts +25 -10
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { insertToString, updateToString, deleteToString } from './ast-stringify.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds a deterministic INSERT statement for mutation logging.
|
|
4
|
+
* Creates an AST and uses insertToString for consistency.
|
|
5
|
+
*/
|
|
6
|
+
export function buildInsertStatement(tableSchema, newRow, contextRow) {
|
|
7
|
+
// Build INSERT AST
|
|
8
|
+
const stmt = {
|
|
9
|
+
type: 'insert',
|
|
10
|
+
table: { type: 'identifier', name: tableSchema.name },
|
|
11
|
+
columns: tableSchema.columns.map(col => col.name),
|
|
12
|
+
values: [newRow.map(sqlValueToLiteralExpr)],
|
|
13
|
+
contextValues: buildContextAssignments(tableSchema, contextRow)
|
|
14
|
+
};
|
|
15
|
+
return insertToString(stmt);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Builds a deterministic UPDATE statement for mutation logging.
|
|
19
|
+
*/
|
|
20
|
+
export function buildUpdateStatement(tableSchema, newRow, oldKeyValues, contextRow) {
|
|
21
|
+
const pkDef = tableSchema.primaryKeyDefinition;
|
|
22
|
+
// Build UPDATE AST
|
|
23
|
+
const stmt = {
|
|
24
|
+
type: 'update',
|
|
25
|
+
table: { type: 'identifier', name: tableSchema.name },
|
|
26
|
+
contextValues: buildContextAssignments(tableSchema, contextRow),
|
|
27
|
+
assignments: tableSchema.columns.map((col, idx) => ({
|
|
28
|
+
column: col.name,
|
|
29
|
+
value: sqlValueToLiteralExpr(newRow[idx])
|
|
30
|
+
})),
|
|
31
|
+
where: buildWhereClause(pkDef, oldKeyValues, tableSchema)
|
|
32
|
+
};
|
|
33
|
+
return updateToString(stmt);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Builds a deterministic DELETE statement for mutation logging.
|
|
37
|
+
*/
|
|
38
|
+
export function buildDeleteStatement(tableSchema, oldKeyValues, contextRow) {
|
|
39
|
+
const pkDef = tableSchema.primaryKeyDefinition;
|
|
40
|
+
// Build DELETE AST
|
|
41
|
+
const stmt = {
|
|
42
|
+
type: 'delete',
|
|
43
|
+
table: { type: 'identifier', name: tableSchema.name },
|
|
44
|
+
contextValues: buildContextAssignments(tableSchema, contextRow),
|
|
45
|
+
where: buildWhereClause(pkDef, oldKeyValues, tableSchema)
|
|
46
|
+
};
|
|
47
|
+
return deleteToString(stmt);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Converts a SqlValue to a LiteralExpr AST node.
|
|
51
|
+
*/
|
|
52
|
+
function sqlValueToLiteralExpr(value) {
|
|
53
|
+
return {
|
|
54
|
+
type: 'literal',
|
|
55
|
+
value: value
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Builds context assignments from context row values.
|
|
60
|
+
*/
|
|
61
|
+
function buildContextAssignments(tableSchema, contextRow) {
|
|
62
|
+
if (!contextRow || contextRow.length === 0 || !tableSchema.mutationContext) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
return tableSchema.mutationContext.map((ctx, idx) => ({
|
|
66
|
+
name: ctx.name,
|
|
67
|
+
value: sqlValueToLiteralExpr(contextRow[idx])
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Builds a WHERE clause for primary key matching.
|
|
72
|
+
* Returns an AND expression of pk_col = value for each PK column.
|
|
73
|
+
*/
|
|
74
|
+
function buildWhereClause(pkDef, keyValues, tableSchema) {
|
|
75
|
+
const conditions = pkDef.map((pkCol, idx) => ({
|
|
76
|
+
type: 'binary',
|
|
77
|
+
operator: '=',
|
|
78
|
+
left: { type: 'column', name: tableSchema.columns[pkCol.index].name },
|
|
79
|
+
right: sqlValueToLiteralExpr(keyValues[idx])
|
|
80
|
+
}));
|
|
81
|
+
if (conditions.length === 1) {
|
|
82
|
+
return conditions[0];
|
|
83
|
+
}
|
|
84
|
+
// Build nested AND expressions: (a AND b) AND c AND ...
|
|
85
|
+
return conditions.reduce((acc, cond) => ({
|
|
86
|
+
type: 'binary',
|
|
87
|
+
operator: 'and',
|
|
88
|
+
left: acc,
|
|
89
|
+
right: cond
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=mutation-statement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation-statement.js","sourceRoot":"","sources":["../../../src/util/mutation-statement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SqlValue } from '../common/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Converts a SqlValue to its SQL literal string representation.
|
|
4
|
+
* This is used for mutation logging to create deterministic, replayable SQL statements.
|
|
5
|
+
* Uses the existing expressionToString function for consistency.
|
|
6
|
+
*
|
|
7
|
+
* @param value The value to convert to a SQL literal
|
|
8
|
+
* @returns SQL literal string representation
|
|
9
|
+
*/
|
|
10
|
+
export declare function sqlValueToLiteral(value: SqlValue): string;
|
|
11
|
+
//# sourceMappingURL=sql-literal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-literal.d.ts","sourceRoot":"","sources":["../../../src/util/sql-literal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAInD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAQzD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { expressionToString } from './ast-stringify.js';
|
|
2
|
+
/**
|
|
3
|
+
* Converts a SqlValue to its SQL literal string representation.
|
|
4
|
+
* This is used for mutation logging to create deterministic, replayable SQL statements.
|
|
5
|
+
* Uses the existing expressionToString function for consistency.
|
|
6
|
+
*
|
|
7
|
+
* @param value The value to convert to a SQL literal
|
|
8
|
+
* @returns SQL literal string representation
|
|
9
|
+
*/
|
|
10
|
+
export function sqlValueToLiteral(value) {
|
|
11
|
+
// Create a literal expression AST node and use expressionToString
|
|
12
|
+
const literalExpr = {
|
|
13
|
+
type: 'literal',
|
|
14
|
+
value: value
|
|
15
|
+
};
|
|
16
|
+
return expressionToString(literalExpr);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=sql-literal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-literal.js","sourceRoot":"","sources":["../../../src/util/sql-literal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAe;IAChD,kEAAkE;IAClE,MAAM,WAAW,GAAoB;QACpC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,KAAK;KACZ,CAAC;IAEF,OAAO,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -5,7 +5,6 @@ import { type IndexSchema, type TableSchema } from '../../schema/table.js';
|
|
|
5
5
|
import type { MemoryTableConnection } from './layer/connection.js';
|
|
6
6
|
import type { FilterInfo } from '../filter-info.js';
|
|
7
7
|
import type { VirtualTableConnection } from '../connection.js';
|
|
8
|
-
import type { ConflictResolution } from '../../common/constants.js';
|
|
9
8
|
/**
|
|
10
9
|
* Represents a connection-specific instance of an in-memory table using the layer-based MVCC model.
|
|
11
10
|
* This class acts as a thin wrapper around the shared MemoryTableManager,
|
|
@@ -26,7 +25,7 @@ export declare class MemoryTable extends VirtualTable {
|
|
|
26
25
|
getConnection(): VirtualTableConnection | undefined;
|
|
27
26
|
query(filterInfo: FilterInfo): AsyncIterable<Row>;
|
|
28
27
|
/** Performs mutation through the connection's transaction layer */
|
|
29
|
-
update(
|
|
28
|
+
update(args: import('../table.js').UpdateArgs): Promise<Row | undefined>;
|
|
30
29
|
/** Begins a transaction for this connection */
|
|
31
30
|
begin(): Promise<void>;
|
|
32
31
|
/** Commits this connection's transaction */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/vtab/memory/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAyB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/vtab/memory/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAyB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAM/D;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAuB5C,oDAAoD;IACpD,SAAS,IAAI,WAAW,GAAG,SAAS;IAKpC,8CAA8C;IAC9C,UAAU,IAAI,OAAO;IAKrB,2DAA2D;YAC7C,gBAAgB;IAsB9B,kFAAkF;IAClF,aAAa,CAAC,gBAAgB,EAAE,qBAAqB,GAAG,IAAI;IAK5D,mEAAmE;IACnE,gBAAgB,IAAI,sBAAsB;IAK1C,yEAAyE;IACzE,aAAa,IAAI,sBAAsB,GAAG,SAAS;IAQ5C,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC;IAoBxD,mEAAmE;IAC7D,MAAM,CAAC,IAAI,EAAE,OAAO,aAAa,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAO9E,+CAA+C;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,4CAA4C;IACtC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAO7B,+CAA+C;IACzC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,+DAA+D;IACzD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,mDAAmD;IAC7C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtC,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,6CAA6C;IACvC,WAAW,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC9D,4DAA4D;IACtD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOjD"}
|
|
@@ -95,11 +95,11 @@ export class MemoryTable extends VirtualTable {
|
|
|
95
95
|
}
|
|
96
96
|
// Note: getBestAccessPlan is handled by the MemoryTableModule, not the table instance.
|
|
97
97
|
/** Performs mutation through the connection's transaction layer */
|
|
98
|
-
async update(
|
|
98
|
+
async update(args) {
|
|
99
99
|
const conn = await this.ensureConnection();
|
|
100
100
|
// Delegate mutation to the manager.
|
|
101
|
-
//
|
|
102
|
-
return this.manager.performMutation(conn, operation, values, oldKeyValues, onConflict);
|
|
101
|
+
// Note: mutationStatement is ignored by memory table (could be logged if needed)
|
|
102
|
+
return this.manager.performMutation(conn, args.operation, args.values, args.oldKeyValues, args.onConflict);
|
|
103
103
|
}
|
|
104
104
|
/** Begins a transaction for this connection */
|
|
105
105
|
async begin() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../../src/vtab/memory/table.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../../src/vtab/memory/table.ts"],"names":[],"mappings":"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"}
|
package/dist/src/vtab/table.d.ts
CHANGED
|
@@ -8,6 +8,21 @@ import type { RowOp } from '../common/types.js';
|
|
|
8
8
|
import type { ConflictResolution } from '../common/constants.js';
|
|
9
9
|
import type { VirtualTableConnection } from './connection.js';
|
|
10
10
|
import type { PlanNode } from '../planner/nodes/plan-node.js';
|
|
11
|
+
/**
|
|
12
|
+
* Arguments passed to VirtualTable.update() method.
|
|
13
|
+
*/
|
|
14
|
+
export interface UpdateArgs {
|
|
15
|
+
/** The operation to perform (insert, update, delete) */
|
|
16
|
+
operation: RowOp;
|
|
17
|
+
/** For INSERT/UPDATE, the values to insert/update. For DELETE, undefined */
|
|
18
|
+
values: Row | undefined;
|
|
19
|
+
/** For UPDATE/DELETE, the old key values of the row to modify. Undefined for INSERT */
|
|
20
|
+
oldKeyValues?: Row;
|
|
21
|
+
/** Conflict resolution mode (defaults to ABORT if unspecified) */
|
|
22
|
+
onConflict?: ConflictResolution;
|
|
23
|
+
/** Optional: Deterministic SQL statement that reproduces this mutation (if logMutations is enabled) */
|
|
24
|
+
mutationStatement?: string;
|
|
25
|
+
}
|
|
11
26
|
/**
|
|
12
27
|
* Base class representing a virtual table instance.
|
|
13
28
|
* Module implementations should subclass this to provide specific table behavior.
|
|
@@ -19,6 +34,12 @@ export declare abstract class VirtualTable {
|
|
|
19
34
|
readonly schemaName: string;
|
|
20
35
|
errorMessage?: string;
|
|
21
36
|
tableSchema?: TableSchema;
|
|
37
|
+
/**
|
|
38
|
+
* When true, the update() method will receive a mutationStatement parameter
|
|
39
|
+
* containing a deterministic SQL statement that reproduces the mutation.
|
|
40
|
+
* This enables replication, audit logging, and change data capture.
|
|
41
|
+
*/
|
|
42
|
+
wantStatements?: boolean;
|
|
22
43
|
constructor(db: Database, module: AnyVirtualTableModule, schemaName: string, tableName: string);
|
|
23
44
|
/**
|
|
24
45
|
* Sets an error message for the VTable
|
|
@@ -51,14 +72,11 @@ export declare abstract class VirtualTable {
|
|
|
51
72
|
executePlan?(db: Database, plan: PlanNode, ctx?: unknown): AsyncIterable<Row>;
|
|
52
73
|
/**
|
|
53
74
|
* Performs an INSERT, UPDATE, or DELETE operation
|
|
54
|
-
* @param
|
|
55
|
-
* @param values For INSERT/UPDATE, the values to insert/update. For DELETE, undefined
|
|
56
|
-
* @param oldKeyValues For UPDATE/DELETE, the old key values of the row to modify. Undefined for INSERT
|
|
57
|
-
* @param onConflict Conflict resolution mode (defaults to ABORT if unspecified)
|
|
75
|
+
* @param args Arguments object containing operation details and optional mutation statement
|
|
58
76
|
* @returns new row for INSERT/UPDATE, undefined for DELETE
|
|
59
77
|
* @throws QuereusError or ConstraintError on failure
|
|
60
78
|
*/
|
|
61
|
-
abstract update(
|
|
79
|
+
abstract update(args: UpdateArgs): Promise<Row | undefined>;
|
|
62
80
|
/**
|
|
63
81
|
* (Optional) Creates a new connection for transaction support.
|
|
64
82
|
* If implemented, this enables proper transaction isolation for this table.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/vtab/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D;;;GAGG;AACH,8BAAsB,YAAY;IACjC,SAAgB,MAAM,EAAE,qBAAqB,CAAC;IAC9C,SAAgB,EAAE,EAAE,QAAQ,CAAC;IAC7B,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,UAAU,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/vtab/table.ts"],"names":[],"mappings":"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"}
|
package/dist/src/vtab/table.js
CHANGED
|
@@ -9,6 +9,12 @@ export class VirtualTable {
|
|
|
9
9
|
schemaName;
|
|
10
10
|
errorMessage;
|
|
11
11
|
tableSchema;
|
|
12
|
+
/**
|
|
13
|
+
* When true, the update() method will receive a mutationStatement parameter
|
|
14
|
+
* containing a deterministic SQL statement that reproduces the mutation.
|
|
15
|
+
* This enables replication, audit logging, and change data capture.
|
|
16
|
+
*/
|
|
17
|
+
wantStatements;
|
|
12
18
|
constructor(db, module, schemaName, tableName) {
|
|
13
19
|
this.db = db;
|
|
14
20
|
this.module = module;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/vtab/table.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/vtab/table.ts"],"names":[],"mappings":"AA2BA;;;GAGG;AACH,MAAM,OAAgB,YAAY;IACjB,MAAM,CAAwB;IAC9B,EAAE,CAAW;IACb,SAAS,CAAS;IAClB,UAAU,CAAS;IAC5B,YAAY,CAAU;IACtB,WAAW,CAAe;IAEjC;;;;OAIG;IACI,cAAc,CAAW;IAEhC,YAAY,EAAY,EAAE,MAA6B,EAAE,UAAkB,EAAE,SAAiB;QAC7F,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACO,eAAe,CAAC,OAA2B;QACpD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAC7B,CAAC;CAqHD"}
|
package/package.json
CHANGED
package/src/common/logger.ts
CHANGED
|
@@ -19,5 +19,79 @@ const BASE_NAMESPACE = 'quereus';
|
|
|
19
19
|
* @returns A debug instance.
|
|
20
20
|
*/
|
|
21
21
|
export function createLogger(subNamespace: string): debug.Debugger {
|
|
22
|
-
|
|
22
|
+
return debug(`${BASE_NAMESPACE}:${subNamespace}`);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Enable Quereus debug logging programmatically.
|
|
27
|
+
*
|
|
28
|
+
* This is particularly useful in environments like React Native where
|
|
29
|
+
* environment variables are not available at runtime.
|
|
30
|
+
*
|
|
31
|
+
* @param pattern - Debug pattern to enable (default: 'quereus:*')
|
|
32
|
+
* Examples:
|
|
33
|
+
* - 'quereus:*' - all Quereus logs
|
|
34
|
+
* - 'quereus:vtab:*' - virtual table operations
|
|
35
|
+
* - 'quereus:vtab:memory' - memory table operations only
|
|
36
|
+
* - 'quereus:planner' - query planner logs
|
|
37
|
+
* - 'quereus:runtime' - VDBE execution (very verbose)
|
|
38
|
+
* - 'quereus:*,-quereus:runtime' - all except verbose runtime
|
|
39
|
+
* @param logFn - Optional custom log function. Defaults to console.log.
|
|
40
|
+
* Useful in environments where console.debug may be filtered.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* import { enableLogging } from '@quereus/quereus';
|
|
45
|
+
*
|
|
46
|
+
* // Enable all Quereus logs
|
|
47
|
+
* enableLogging();
|
|
48
|
+
*
|
|
49
|
+
* // Enable only memory table logs
|
|
50
|
+
* enableLogging('quereus:vtab:memory');
|
|
51
|
+
*
|
|
52
|
+
* // Enable all logs with custom output (e.g., React Native)
|
|
53
|
+
* enableLogging('quereus:*', console.log.bind(console));
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export function enableLogging(
|
|
57
|
+
pattern: string = `${BASE_NAMESPACE}:*`,
|
|
58
|
+
logFn?: (...args: unknown[]) => void
|
|
59
|
+
): void {
|
|
60
|
+
if (logFn) {
|
|
61
|
+
debug.log = logFn;
|
|
62
|
+
}
|
|
63
|
+
debug.enable(pattern);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Disable all Quereus debug logging.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* import { disableLogging } from '@quereus/quereus';
|
|
72
|
+
*
|
|
73
|
+
* disableLogging();
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export function disableLogging(): void {
|
|
77
|
+
debug.disable();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Check if logging is enabled for a specific namespace.
|
|
82
|
+
*
|
|
83
|
+
* @param namespace - The namespace to check (without 'quereus:' prefix)
|
|
84
|
+
* @returns true if logging is enabled for this namespace
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* import { isLoggingEnabled } from '@quereus/quereus';
|
|
89
|
+
*
|
|
90
|
+
* if (isLoggingEnabled('vtab:memory')) {
|
|
91
|
+
* // Perform expensive debug operations
|
|
92
|
+
* }
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export function isLoggingEnabled(namespace: string): boolean {
|
|
96
|
+
return debug.enabled(`${BASE_NAMESPACE}:${namespace}`);
|
|
23
97
|
}
|
|
@@ -309,8 +309,9 @@ function processDateTimeArgs(args: ReadonlyArray<SqlValue>): Temporal.ZonedDateT
|
|
|
309
309
|
// --- Function Implementations --- //
|
|
310
310
|
|
|
311
311
|
// date(timestring, modifier, ...)
|
|
312
|
+
// NOTE: Marked as non-deterministic because it accepts 'now' as a timestring
|
|
312
313
|
export const dateFunc = createScalarFunction(
|
|
313
|
-
{ name: 'date', numArgs: -1, deterministic:
|
|
314
|
+
{ name: 'date', numArgs: -1, deterministic: false },
|
|
314
315
|
(...args: SqlValue[]): SqlValue => {
|
|
315
316
|
const finalDt = processDateTimeArgs(args);
|
|
316
317
|
if (!finalDt) return null;
|
|
@@ -319,8 +320,9 @@ export const dateFunc = createScalarFunction(
|
|
|
319
320
|
);
|
|
320
321
|
|
|
321
322
|
// time(timestring, modifier, ...)
|
|
323
|
+
// NOTE: Marked as non-deterministic because it accepts 'now' as a timestring
|
|
322
324
|
export const timeFunc = createScalarFunction(
|
|
323
|
-
{ name: 'time', numArgs: -1, deterministic:
|
|
325
|
+
{ name: 'time', numArgs: -1, deterministic: false },
|
|
324
326
|
(...args: SqlValue[]): SqlValue => {
|
|
325
327
|
const finalDt = processDateTimeArgs(args);
|
|
326
328
|
if (!finalDt) return null;
|
|
@@ -329,8 +331,9 @@ export const timeFunc = createScalarFunction(
|
|
|
329
331
|
);
|
|
330
332
|
|
|
331
333
|
// datetime(timestring, modifier, ...)
|
|
334
|
+
// NOTE: Marked as non-deterministic because it accepts 'now' as a timestring
|
|
332
335
|
export const datetimeFunc = createScalarFunction(
|
|
333
|
-
{ name: 'datetime', numArgs: -1, deterministic:
|
|
336
|
+
{ name: 'datetime', numArgs: -1, deterministic: false },
|
|
334
337
|
(...args: SqlValue[]): SqlValue => {
|
|
335
338
|
const finalDt = processDateTimeArgs(args);
|
|
336
339
|
if (!finalDt) return null;
|
|
@@ -341,8 +344,9 @@ export const datetimeFunc = createScalarFunction(
|
|
|
341
344
|
);
|
|
342
345
|
|
|
343
346
|
// julianday(timestring, modifier, ...)
|
|
347
|
+
// NOTE: Marked as non-deterministic because it accepts 'now' as a timestring
|
|
344
348
|
export const juliandayFunc = createScalarFunction(
|
|
345
|
-
{ name: 'julianday', numArgs: -1, deterministic:
|
|
349
|
+
{ name: 'julianday', numArgs: -1, deterministic: false },
|
|
346
350
|
(...args: SqlValue[]): SqlValue => {
|
|
347
351
|
const finalDt = processDateTimeArgs(args);
|
|
348
352
|
if (!finalDt) return null;
|
|
@@ -352,8 +356,9 @@ export const juliandayFunc = createScalarFunction(
|
|
|
352
356
|
);
|
|
353
357
|
|
|
354
358
|
// strftime(format, timestring, modifier, ...)
|
|
359
|
+
// NOTE: Marked as non-deterministic because it accepts 'now' as a timestring
|
|
355
360
|
export const strftimeFunc = createScalarFunction(
|
|
356
|
-
{ name: 'strftime', numArgs: -1, deterministic:
|
|
361
|
+
{ name: 'strftime', numArgs: -1, deterministic: false },
|
|
357
362
|
(format: SqlValue, ...timeArgs: SqlValue[]): SqlValue => {
|
|
358
363
|
if (typeof format !== 'string') return null;
|
|
359
364
|
const finalDt = processDateTimeArgs(timeArgs);
|
package/src/index.ts
CHANGED
|
@@ -93,7 +93,7 @@ export type { TableSchema, IndexSchema as TableIndexSchema } from './schema/tabl
|
|
|
93
93
|
export type { ColumnSchema } from './schema/column.js';
|
|
94
94
|
|
|
95
95
|
// Runtime utilities
|
|
96
|
-
export { isAsyncIterable, asyncIterableToArray } from './runtime/utils.js';
|
|
96
|
+
export { isAsyncIterable, getAsyncIterator, asyncIterableToArray } from './runtime/utils.js';
|
|
97
97
|
|
|
98
98
|
// Function registration utilities
|
|
99
99
|
export {
|
|
@@ -138,3 +138,6 @@ export type {
|
|
|
138
138
|
// Debug and development utilities
|
|
139
139
|
export { serializePlanTree, formatPlanTree, formatPlanSummary, serializePlanTreeWithOptions } from './planner/debug.js';
|
|
140
140
|
export type { PlanDisplayOptions } from './planner/debug.js';
|
|
141
|
+
|
|
142
|
+
// Logging control (for environments like React Native where env vars aren't available)
|
|
143
|
+
export { enableLogging, disableLogging, isLoggingEnabled } from './common/logger.js';
|