@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.
Files changed (97) hide show
  1. package/README.md +19 -1
  2. package/dist/src/common/logger.d.ts +59 -0
  3. package/dist/src/common/logger.d.ts.map +1 -1
  4. package/dist/src/common/logger.js +68 -0
  5. package/dist/src/common/logger.js.map +1 -1
  6. package/dist/src/func/builtins/datetime.d.ts.map +1 -1
  7. package/dist/src/func/builtins/datetime.js +10 -5
  8. package/dist/src/func/builtins/datetime.js.map +1 -1
  9. package/dist/src/index.d.ts +2 -1
  10. package/dist/src/index.d.ts.map +1 -1
  11. package/dist/src/index.js +3 -1
  12. package/dist/src/index.js.map +1 -1
  13. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  14. package/dist/src/planner/building/constraint-builder.js +4 -0
  15. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  16. package/dist/src/planner/building/delete.d.ts.map +1 -1
  17. package/dist/src/planner/building/delete.js +2 -1
  18. package/dist/src/planner/building/delete.js.map +1 -1
  19. package/dist/src/planner/building/insert.d.ts.map +1 -1
  20. package/dist/src/planner/building/insert.js +4 -1
  21. package/dist/src/planner/building/insert.js.map +1 -1
  22. package/dist/src/planner/building/update.d.ts.map +1 -1
  23. package/dist/src/planner/building/update.js +4 -2
  24. package/dist/src/planner/building/update.js.map +1 -1
  25. package/dist/src/planner/nodes/dml-executor-node.d.ts +8 -2
  26. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  27. package/dist/src/planner/nodes/dml-executor-node.js +11 -2
  28. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  29. package/dist/src/planner/validation/determinism-validator.d.ts +47 -0
  30. package/dist/src/planner/validation/determinism-validator.d.ts.map +1 -0
  31. package/dist/src/planner/validation/determinism-validator.js +63 -0
  32. package/dist/src/planner/validation/determinism-validator.js.map +1 -0
  33. package/dist/src/runtime/async-util.d.ts.map +1 -1
  34. package/dist/src/runtime/async-util.js +4 -3
  35. package/dist/src/runtime/async-util.js.map +1 -1
  36. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  37. package/dist/src/runtime/emit/add-constraint.js +3 -0
  38. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  39. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  40. package/dist/src/runtime/emit/dml-executor.js +84 -8
  41. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  42. package/dist/src/runtime/emitters.d.ts.map +1 -1
  43. package/dist/src/runtime/emitters.js +2 -1
  44. package/dist/src/runtime/emitters.js.map +1 -1
  45. package/dist/src/runtime/types.d.ts +1 -0
  46. package/dist/src/runtime/types.d.ts.map +1 -1
  47. package/dist/src/runtime/types.js.map +1 -1
  48. package/dist/src/runtime/utils.d.ts +14 -0
  49. package/dist/src/runtime/utils.d.ts.map +1 -1
  50. package/dist/src/runtime/utils.js +40 -1
  51. package/dist/src/runtime/utils.js.map +1 -1
  52. package/dist/src/schema/manager.d.ts.map +1 -1
  53. package/dist/src/schema/manager.js +50 -0
  54. package/dist/src/schema/manager.js.map +1 -1
  55. package/dist/src/util/ast-stringify.d.ts.map +1 -1
  56. package/dist/src/util/ast-stringify.js +14 -1
  57. package/dist/src/util/ast-stringify.js.map +1 -1
  58. package/dist/src/util/mutation-statement.d.ts +16 -0
  59. package/dist/src/util/mutation-statement.d.ts.map +1 -0
  60. package/dist/src/util/mutation-statement.js +92 -0
  61. package/dist/src/util/mutation-statement.js.map +1 -0
  62. package/dist/src/util/sql-literal.d.ts +11 -0
  63. package/dist/src/util/sql-literal.d.ts.map +1 -0
  64. package/dist/src/util/sql-literal.js +18 -0
  65. package/dist/src/util/sql-literal.js.map +1 -0
  66. package/dist/src/vtab/memory/table.d.ts +1 -2
  67. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  68. package/dist/src/vtab/memory/table.js +3 -3
  69. package/dist/src/vtab/memory/table.js.map +1 -1
  70. package/dist/src/vtab/table.d.ts +23 -5
  71. package/dist/src/vtab/table.d.ts.map +1 -1
  72. package/dist/src/vtab/table.js +6 -0
  73. package/dist/src/vtab/table.js.map +1 -1
  74. package/package.json +1 -1
  75. package/src/common/logger.ts +75 -1
  76. package/src/func/builtins/datetime.ts +10 -5
  77. package/src/index.ts +4 -1
  78. package/src/planner/building/constraint-builder.ts +178 -173
  79. package/src/planner/building/delete.ts +5 -1
  80. package/src/planner/building/insert.ts +8 -1
  81. package/src/planner/building/update.ts +10 -2
  82. package/src/planner/nodes/dml-executor-node.ts +8 -2
  83. package/src/planner/validation/determinism-validator.ts +104 -0
  84. package/src/runtime/async-util.ts +4 -3
  85. package/src/runtime/emit/add-constraint.ts +3 -0
  86. package/src/runtime/emit/dml-executor.ts +105 -9
  87. package/src/runtime/emitters.ts +2 -1
  88. package/src/runtime/types.ts +3 -0
  89. package/src/runtime/utils.ts +41 -1
  90. package/src/schema/manager.ts +800 -742
  91. package/src/util/ast-stringify.ts +24 -1
  92. package/src/util/hash.ts +90 -90
  93. package/src/util/mutation-statement.ts +129 -0
  94. package/src/util/plugin-helper.ts +110 -110
  95. package/src/util/sql-literal.ts +22 -0
  96. package/src/vtab/memory/table.ts +3 -8
  97. 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(operation: 'insert' | 'update' | 'delete', values: Row | undefined, oldKeyValues?: Row, onConflict?: ConflictResolution): Promise<Row | undefined>;
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;AAE/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIpE;;;;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,CACX,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACzC,MAAM,EAAE,GAAG,GAAG,SAAS,EACvB,YAAY,CAAC,EAAE,GAAG,EAClB,UAAU,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAO3B,+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"}
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(operation, values, oldKeyValues, onConflict) {
98
+ async update(args) {
99
99
  const conn = await this.ensureConnection();
100
100
  // Delegate mutation to the manager.
101
- // This assumes manager.performMutation will be updated to this signature and logic.
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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"}
@@ -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 operation The operation to perform (insert, update, delete)
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(operation: RowOp, values: Row | undefined, oldKeyValues?: Row, onConflict?: ConflictResolution): Promise<Row | undefined>;
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":"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"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/vtab/table.ts"],"names":[],"mappings":"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"}
@@ -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":"AAWA;;;GAGG;AACH,MAAM,OAAgB,YAAY;IACjB,MAAM,CAAwB;IAC9B,EAAE,CAAW;IACb,SAAS,CAAS;IAClB,UAAU,CAAS;IAC5B,YAAY,CAAU;IACtB,WAAW,CAAe;IAEjC,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;CA6HD"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quereus/quereus",
3
- "version": "0.6.4",
3
+ "version": "0.6.6",
4
4
  "type": "module",
5
5
  "description": "Federated SQL query processor",
6
6
  "publisher": "Got Choices Foundation",
@@ -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
- return debug(`${BASE_NAMESPACE}:${subNamespace}`);
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: true },
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: true },
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: true },
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: true },
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: true },
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';