@quereus/quereus 0.16.3 → 0.17.0
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 +17 -1
- package/dist/src/core/database-events.d.ts.map +1 -1
- package/dist/src/core/database-events.js +3 -2
- package/dist/src/core/database-events.js.map +1 -1
- package/dist/src/core/database-transaction.d.ts +31 -4
- package/dist/src/core/database-transaction.d.ts.map +1 -1
- package/dist/src/core/database-transaction.js +68 -2
- package/dist/src/core/database-transaction.js.map +1 -1
- package/dist/src/core/database.d.ts +6 -4
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +15 -73
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/statement.d.ts +2 -2
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +25 -28
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/func/builtins/datetime.d.ts +21 -0
- package/dist/src/func/builtins/datetime.d.ts.map +1 -1
- package/dist/src/func/builtins/datetime.js +452 -368
- package/dist/src/func/builtins/datetime.js.map +1 -1
- package/dist/src/func/builtins/index.d.ts.map +1 -1
- package/dist/src/func/builtins/index.js +4 -1
- package/dist/src/func/builtins/index.js.map +1 -1
- package/dist/src/parser/lexer.d.ts.map +1 -1
- package/dist/src/parser/lexer.js +55 -50
- package/dist/src/parser/lexer.js.map +1 -1
- package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
- package/dist/src/runtime/emit/transaction.js +18 -46
- package/dist/src/runtime/emit/transaction.js.map +1 -1
- package/dist/src/util/async-iterator.d.ts +30 -0
- package/dist/src/util/async-iterator.d.ts.map +1 -0
- package/dist/src/util/async-iterator.js +101 -0
- package/dist/src/util/async-iterator.js.map +1 -0
- package/dist/src/vtab/events.d.ts.map +1 -1
- package/dist/src/vtab/events.js +6 -3
- package/dist/src/vtab/events.js.map +1 -1
- package/dist/src/vtab/memory/layer/connection.d.ts +11 -7
- package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/connection.js +32 -44
- package/dist/src/vtab/memory/layer/connection.js.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.d.ts +1 -0
- package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.js +5 -15
- package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -262,6 +262,22 @@ While Quereus supports standard SQL syntax, it has several distinctive design ch
|
|
|
262
262
|
- Row-level CHECKs that reference other tables (e.g., via subqueries) are automatically deferred and enforced at COMMIT using the same optimized engine as global assertions. No `DEFERRABLE` or `SET CONSTRAINTS` management is required by the user.
|
|
263
263
|
- **Determinism Enforcement**: CHECK constraints and DEFAULT values must use only deterministic expressions. Non-deterministic values (like `datetime('now')` or `random()`) must be passed via mutation context to ensure captured statements are replayable. See [Runtime Documentation](../docs/runtime.md#determinism-validation).
|
|
264
264
|
|
|
265
|
+
### Sequential ID Generation
|
|
266
|
+
|
|
267
|
+
Quereus has no built-in auto-increment or sequence objects. Instead, batch ID generation composes naturally from existing features: mutation context captures a non-deterministic seed once, a window function provides a deterministic per-row ordinal, and a scalar or table-valued function produces the final ID. For example, inserting with timestamp-derived IDs:
|
|
268
|
+
|
|
269
|
+
```sql
|
|
270
|
+
insert into orders (id, customer_id, total)
|
|
271
|
+
with context base_ts = epoch_ms('now')
|
|
272
|
+
select
|
|
273
|
+
base_ts * 1000 + row_number() over (order by c.customer_id),
|
|
274
|
+
c.customer_id,
|
|
275
|
+
c.total
|
|
276
|
+
from (select customer_id, sum(price) as total from cart_items group by customer_id) c;
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
The `WITH CONTEXT` boundary captures `epoch_ms('now')` as a literal, and `row_number() over (order by ...)` assigns a deterministic ordinal over a declared ordering. The entire statement is replayable. For richer formats (ULIDs, UUIDv7), register a deterministic scalar UDF that encodes `(seed, counter)` into the desired format — or use a lateral join to a deterministic TVF when multiple columns are needed per generated row.
|
|
280
|
+
|
|
265
281
|
## Current Status
|
|
266
282
|
|
|
267
283
|
Quereus is a feature-complete SQL query processor with a modern planner and instruction-based runtime architecture. The engine successfully handles complex SQL workloads including joins, window functions, subqueries, CTEs, constraints, and comprehensive DML/DDL operations.
|
|
@@ -338,7 +354,7 @@ This layered approach aims for broad coverage via the logic tests while using pr
|
|
|
338
354
|
* **Scalar:** `lower`, `upper`, `length`, `substr`/`substring`, `abs`, `round`, `coalesce`, `nullif`, `like`, `glob`, `typeof`
|
|
339
355
|
* **Aggregate:** `count`, `sum`, `avg`, `min`, `max`, `group_concat`, `json_group_array`, `json_group_object`
|
|
340
356
|
* **Window Functions:** Complete implementation with `row_number`, `rank`, `dense_rank`, `ntile` (ranking); `count`, `sum`, `avg`, `min`, `max` with OVER clause (aggregates); Full frame specification support (`ROWS BETWEEN`, `UNBOUNDED PRECEDING/FOLLOWING`); `NULLS FIRST/LAST` ordering
|
|
341
|
-
* **Date/Time:** `date`, `time`, `datetime`, `julianday`, `strftime` (supports common formats and modifiers)
|
|
357
|
+
* **Date/Time:** `date`, `time`, `datetime`, `julianday`, `strftime` (supports common formats and modifiers), `epoch_s`, `epoch_ms`, `epoch_s_frac` (Unix epoch conversions with strict parsing)
|
|
342
358
|
* **JSON:** `json_valid`, `json_schema`, `json_type`, `json_extract`, `json_quote`, `json_array`, `json_object`, `json_insert`, `json_replace`, `json_set`, `json_remove`, `json_array_length`, `json_patch`
|
|
343
359
|
* **Query Analysis:** `query_plan`, `scheduler_program`, `execution_trace` (debugging and performance analysis)
|
|
344
360
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-events.d.ts","sourceRoot":"","sources":["../../../src/core/database-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"database-events.d.ts","sourceRoot":"","sources":["../../../src/core/database-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { createLogger } from '../common/logger.js';
|
|
13
13
|
const log = createLogger('core:database-events');
|
|
14
|
+
const errorLog = log.extend('error');
|
|
14
15
|
/**
|
|
15
16
|
* Central event emitter for database-level reactivity.
|
|
16
17
|
*
|
|
@@ -214,7 +215,7 @@ export class DatabaseEventEmitter {
|
|
|
214
215
|
listener(dbEvent);
|
|
215
216
|
}
|
|
216
217
|
catch (e) {
|
|
217
|
-
|
|
218
|
+
errorLog('Data change listener error on %s.%s (%s): %O', dbEvent.schemaName, dbEvent.tableName, dbEvent.type, e);
|
|
218
219
|
}
|
|
219
220
|
}
|
|
220
221
|
}
|
|
@@ -241,7 +242,7 @@ export class DatabaseEventEmitter {
|
|
|
241
242
|
listener(dbEvent);
|
|
242
243
|
}
|
|
243
244
|
catch (e) {
|
|
244
|
-
|
|
245
|
+
errorLog('Schema change listener error on %s %s %s: %O', dbEvent.type, dbEvent.objectType, dbEvent.objectName, e);
|
|
245
246
|
}
|
|
246
247
|
}
|
|
247
248
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-events.js","sourceRoot":"","sources":["../../../src/core/database-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,MAAM,GAAG,GAAG,YAAY,CAAC,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"database-events.js","sourceRoot":"","sources":["../../../src/core/database-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,8 @@ export declare class TransactionManager {
|
|
|
48
48
|
private changeLog;
|
|
49
49
|
/** Savepoint layers for change tracking */
|
|
50
50
|
private changeLogLayers;
|
|
51
|
+
/** Stack of active savepoint names (ordered by creation) */
|
|
52
|
+
private savepointStack;
|
|
51
53
|
/** Flag to prevent new connections from starting transactions during constraint evaluation */
|
|
52
54
|
private evaluatingDeferredConstraints;
|
|
53
55
|
/** Flag indicating we're in a coordinated multi-connection commit */
|
|
@@ -116,11 +118,36 @@ export declare class TransactionManager {
|
|
|
116
118
|
getChangedKeyTuples(base: string): SqlValue[][];
|
|
117
119
|
/** Clear all change tracking */
|
|
118
120
|
clearChangeLog(): void;
|
|
119
|
-
/**
|
|
120
|
-
|
|
121
|
+
/**
|
|
122
|
+
* Creates a named savepoint, pushing it onto the stack.
|
|
123
|
+
* Returns the depth index for use by connections.
|
|
124
|
+
*/
|
|
125
|
+
createSavepoint(name: string): number;
|
|
126
|
+
/**
|
|
127
|
+
* Finds a savepoint by name, returning its stack index.
|
|
128
|
+
* Throws if the savepoint does not exist.
|
|
129
|
+
*/
|
|
130
|
+
findSavepoint(name: string): number;
|
|
131
|
+
/**
|
|
132
|
+
* Releases a named savepoint, merging its layer (and any above it) into the parent.
|
|
133
|
+
* Per SQL semantics, RELEASE removes the named savepoint and all savepoints
|
|
134
|
+
* created after it.
|
|
135
|
+
* Returns the target depth index for connection coordination.
|
|
136
|
+
*/
|
|
137
|
+
releaseSavepoint(name: string): number;
|
|
138
|
+
/**
|
|
139
|
+
* Rolls back to a named savepoint, discarding all layers above it.
|
|
140
|
+
* Per SQL standard, the savepoint itself is preserved (not consumed) —
|
|
141
|
+
* it can be rolled back to again or released later.
|
|
142
|
+
* A fresh layer is created for the preserved savepoint.
|
|
143
|
+
* Returns the target depth index for connection coordination.
|
|
144
|
+
*/
|
|
145
|
+
rollbackToSavepoint(name: string): number;
|
|
146
|
+
/** Begin a new savepoint layer for change tracking */
|
|
147
|
+
private beginSavepointLayer;
|
|
121
148
|
/** Rollback the current savepoint layer */
|
|
122
|
-
rollbackSavepointLayer
|
|
149
|
+
private rollbackSavepointLayer;
|
|
123
150
|
/** Release the current savepoint layer, merging into parent */
|
|
124
|
-
releaseSavepointLayer
|
|
151
|
+
private releaseSavepointLayer;
|
|
125
152
|
}
|
|
126
153
|
//# sourceMappingURL=database-transaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-transaction.d.ts","sourceRoot":"","sources":["../../../src/core/database-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAMvF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,UAAU,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACzC,+CAA+C;IAC/C,iBAAiB,IAAI,sBAAsB,EAAE,CAAC;IAC9C,qCAAqC;IACrC,eAAe,IAAI,oBAAoB,CAAC;IACxC,wCAAwC;IACxC,sBAAsB,IAAI,uBAAuB,CAAC;IAClD,0CAA0C;IAC1C,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,iDAAiD;IACjD,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED;;;;;;GAMG;AACH,qBAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"database-transaction.d.ts","sourceRoot":"","sources":["../../../src/core/database-transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,8 @@ export class TransactionManager {
|
|
|
30
30
|
changeLog = new Map();
|
|
31
31
|
/** Savepoint layers for change tracking */
|
|
32
32
|
changeLogLayers = [];
|
|
33
|
+
/** Stack of active savepoint names (ordered by creation) */
|
|
34
|
+
savepointStack = [];
|
|
33
35
|
/** Flag to prevent new connections from starting transactions during constraint evaluation */
|
|
34
36
|
evaluatingDeferredConstraints = false;
|
|
35
37
|
/** Flag indicating we're in a coordinated multi-connection commit */
|
|
@@ -306,12 +308,76 @@ export class TransactionManager {
|
|
|
306
308
|
clearChangeLog() {
|
|
307
309
|
this.changeLog.clear();
|
|
308
310
|
this.changeLogLayers = [];
|
|
311
|
+
this.savepointStack = [];
|
|
309
312
|
this.ctx.getDeferredConstraints().clear();
|
|
310
313
|
}
|
|
311
314
|
// ============================================================================
|
|
312
|
-
// Savepoint
|
|
315
|
+
// Savepoint Management
|
|
313
316
|
// ============================================================================
|
|
314
|
-
/**
|
|
317
|
+
/**
|
|
318
|
+
* Creates a named savepoint, pushing it onto the stack.
|
|
319
|
+
* Returns the depth index for use by connections.
|
|
320
|
+
*/
|
|
321
|
+
createSavepoint(name) {
|
|
322
|
+
const depth = this.savepointStack.length;
|
|
323
|
+
this.savepointStack.push(name);
|
|
324
|
+
this.beginSavepointLayer();
|
|
325
|
+
return depth;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Finds a savepoint by name, returning its stack index.
|
|
329
|
+
* Throws if the savepoint does not exist.
|
|
330
|
+
*/
|
|
331
|
+
findSavepoint(name) {
|
|
332
|
+
// Search from top of stack to find the most recent savepoint with this name
|
|
333
|
+
for (let i = this.savepointStack.length - 1; i >= 0; i--) {
|
|
334
|
+
if (this.savepointStack[i] === name)
|
|
335
|
+
return i;
|
|
336
|
+
}
|
|
337
|
+
throw new QuereusError(`No such savepoint: ${name}`, StatusCode.ERROR);
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Releases a named savepoint, merging its layer (and any above it) into the parent.
|
|
341
|
+
* Per SQL semantics, RELEASE removes the named savepoint and all savepoints
|
|
342
|
+
* created after it.
|
|
343
|
+
* Returns the target depth index for connection coordination.
|
|
344
|
+
*/
|
|
345
|
+
releaseSavepoint(name) {
|
|
346
|
+
const index = this.findSavepoint(name);
|
|
347
|
+
const layersToRelease = this.savepointStack.length - index;
|
|
348
|
+
// Release layers from top down to the target, merging each into its parent
|
|
349
|
+
for (let i = 0; i < layersToRelease; i++) {
|
|
350
|
+
this.releaseSavepointLayer();
|
|
351
|
+
}
|
|
352
|
+
this.savepointStack.length = index;
|
|
353
|
+
return index;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Rolls back to a named savepoint, discarding all layers above it.
|
|
357
|
+
* Per SQL standard, the savepoint itself is preserved (not consumed) —
|
|
358
|
+
* it can be rolled back to again or released later.
|
|
359
|
+
* A fresh layer is created for the preserved savepoint.
|
|
360
|
+
* Returns the target depth index for connection coordination.
|
|
361
|
+
*/
|
|
362
|
+
rollbackToSavepoint(name) {
|
|
363
|
+
const index = this.findSavepoint(name);
|
|
364
|
+
const layersAbove = this.savepointStack.length - index - 1;
|
|
365
|
+
// Rollback layers above the target savepoint
|
|
366
|
+
for (let i = 0; i < layersAbove; i++) {
|
|
367
|
+
this.rollbackSavepointLayer();
|
|
368
|
+
}
|
|
369
|
+
// Rollback the target savepoint's own layer
|
|
370
|
+
this.rollbackSavepointLayer();
|
|
371
|
+
// Remove savepoints above the target from the name stack
|
|
372
|
+
this.savepointStack.length = index + 1;
|
|
373
|
+
// Re-create a fresh layer for the preserved savepoint
|
|
374
|
+
this.beginSavepointLayer();
|
|
375
|
+
return index;
|
|
376
|
+
}
|
|
377
|
+
// ============================================================================
|
|
378
|
+
// Savepoint Layer Management (internal)
|
|
379
|
+
// ============================================================================
|
|
380
|
+
/** Begin a new savepoint layer for change tracking */
|
|
315
381
|
beginSavepointLayer() {
|
|
316
382
|
this.changeLogLayers.push(new Map());
|
|
317
383
|
this.ctx.getDeferredConstraints().beginLayer();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-transaction.js","sourceRoot":"","sources":["../../../src/core/database-transaction.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database-transaction.js","sourceRoot":"","sources":["../../../src/core/database-transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -326,10 +326,12 @@ export declare class Database implements TransactionManagerContext, AssertionEva
|
|
|
326
326
|
_recordInsert(baseTable: string, newKey: SqlValue[]): void;
|
|
327
327
|
_recordDelete(baseTable: string, oldKey: SqlValue[]): void;
|
|
328
328
|
_recordUpdate(baseTable: string, oldKey: SqlValue[], newKey: SqlValue[]): void;
|
|
329
|
-
/**
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
329
|
+
/** Create a named savepoint, returning its depth index */
|
|
330
|
+
_createSavepoint(name: string): number;
|
|
331
|
+
/** Release a named savepoint (merges layers down to target), returns target depth */
|
|
332
|
+
_releaseSavepoint(name: string): number;
|
|
333
|
+
/** Rollback to a named savepoint (discards layers down to target) */
|
|
334
|
+
_rollbackToSavepoint(name: string): number;
|
|
333
335
|
_clearChangeLog(): void;
|
|
334
336
|
/**
|
|
335
337
|
* Prepares, binds parameters, executes, and yields result rows for a query.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/core/database.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC/G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAM5D,OAAO,EAAwF,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAErJ,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAIxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAMnE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAkB,MAAM,yBAAyB,CAAC;AAGpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/core/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,8 +23,10 @@ import { registerBuiltinWindowFunctions } from '../func/builtins/builtin-window-
|
|
|
23
23
|
import { DatabaseOptionsManager } from './database-options.js';
|
|
24
24
|
import { DeclaredSchemaManager } from '../schema/declared-schema-manager.js';
|
|
25
25
|
import { DeferredConstraintQueue } from '../runtime/deferred-constraint-queue.js';
|
|
26
|
+
import { registerType as registerTypeInRegistry } from '../types/registry.js';
|
|
26
27
|
import { getParameterTypes } from './param.js';
|
|
27
28
|
import { rowToObject } from './utils.js';
|
|
29
|
+
import { wrapAsyncIterator } from '../util/async-iterator.js';
|
|
28
30
|
import { DatabaseEventEmitter, } from './database-events.js';
|
|
29
31
|
import { TransactionManager } from './database-transaction.js';
|
|
30
32
|
import { AssertionEvaluator } from './database-assertions.js';
|
|
@@ -392,7 +394,7 @@ export class Database {
|
|
|
392
394
|
}
|
|
393
395
|
catch (e) {
|
|
394
396
|
if (e instanceof ParseError)
|
|
395
|
-
throw
|
|
397
|
+
throw e;
|
|
396
398
|
throw e;
|
|
397
399
|
}
|
|
398
400
|
}
|
|
@@ -821,8 +823,7 @@ export class Database {
|
|
|
821
823
|
*/
|
|
822
824
|
registerType(name, definition) {
|
|
823
825
|
this.checkOpen();
|
|
824
|
-
|
|
825
|
-
registerType(name, definition);
|
|
826
|
+
registerTypeInRegistry(definition);
|
|
826
827
|
log('Registered type: %s', name);
|
|
827
828
|
}
|
|
828
829
|
/**
|
|
@@ -869,15 +870,17 @@ export class Database {
|
|
|
869
870
|
_recordUpdate(baseTable, oldKey, newKey) {
|
|
870
871
|
this.transactionManager.recordUpdate(baseTable, oldKey, newKey);
|
|
871
872
|
}
|
|
872
|
-
/**
|
|
873
|
-
|
|
874
|
-
this.transactionManager.
|
|
873
|
+
/** Create a named savepoint, returning its depth index */
|
|
874
|
+
_createSavepoint(name) {
|
|
875
|
+
return this.transactionManager.createSavepoint(name);
|
|
875
876
|
}
|
|
876
|
-
|
|
877
|
-
|
|
877
|
+
/** Release a named savepoint (merges layers down to target), returns target depth */
|
|
878
|
+
_releaseSavepoint(name) {
|
|
879
|
+
return this.transactionManager.releaseSavepoint(name);
|
|
878
880
|
}
|
|
879
|
-
|
|
880
|
-
|
|
881
|
+
/** Rollback to a named savepoint (discards layers down to target) */
|
|
882
|
+
_rollbackToSavepoint(name) {
|
|
883
|
+
return this.transactionManager.rollbackToSavepoint(name);
|
|
881
884
|
}
|
|
882
885
|
_clearChangeLog() {
|
|
883
886
|
this.transactionManager.clearChangeLog();
|
|
@@ -910,15 +913,7 @@ export class Database {
|
|
|
910
913
|
* ```
|
|
911
914
|
*/
|
|
912
915
|
eval(sql, params) {
|
|
913
|
-
|
|
914
|
-
const generator = this._evalGenerator(sql, params);
|
|
915
|
-
// Track whether the transaction has been finalized
|
|
916
|
-
let transactionFinalized = false;
|
|
917
|
-
// Helper to finalize the implicit transaction (idempotent)
|
|
918
|
-
const finalizeImplicitTransaction = async (commit) => {
|
|
919
|
-
if (transactionFinalized)
|
|
920
|
-
return;
|
|
921
|
-
transactionFinalized = true;
|
|
916
|
+
return wrapAsyncIterator(this._evalGenerator(sql, params), async (commit) => {
|
|
922
917
|
if (this.transactionManager.isImplicitTransaction()) {
|
|
923
918
|
if (commit) {
|
|
924
919
|
await this._commitTransaction();
|
|
@@ -927,39 +922,7 @@ export class Database {
|
|
|
927
922
|
await this._rollbackTransaction();
|
|
928
923
|
}
|
|
929
924
|
}
|
|
930
|
-
};
|
|
931
|
-
// Wrap the generator to intercept return() and throw()
|
|
932
|
-
const wrappedIterator = {
|
|
933
|
-
[Symbol.asyncIterator]() {
|
|
934
|
-
return this;
|
|
935
|
-
},
|
|
936
|
-
async next() {
|
|
937
|
-
return generator.next();
|
|
938
|
-
},
|
|
939
|
-
async return(value) {
|
|
940
|
-
// Called on early termination (break, return, etc.)
|
|
941
|
-
// Commit the implicit transaction before delegating to the generator
|
|
942
|
-
try {
|
|
943
|
-
await finalizeImplicitTransaction(true);
|
|
944
|
-
}
|
|
945
|
-
finally {
|
|
946
|
-
// Delegate to generator.return() to trigger cleanup (finally block)
|
|
947
|
-
return generator.return(value);
|
|
948
|
-
}
|
|
949
|
-
},
|
|
950
|
-
async throw(error) {
|
|
951
|
-
// Called when an error is thrown into the iterator
|
|
952
|
-
// Rollback the implicit transaction before delegating
|
|
953
|
-
try {
|
|
954
|
-
await finalizeImplicitTransaction(false);
|
|
955
|
-
}
|
|
956
|
-
finally {
|
|
957
|
-
// Delegate to generator.throw() to propagate the error
|
|
958
|
-
return generator.throw(error);
|
|
959
|
-
}
|
|
960
|
-
}
|
|
961
|
-
};
|
|
962
|
-
return wrappedIterator;
|
|
925
|
+
});
|
|
963
926
|
}
|
|
964
927
|
/**
|
|
965
928
|
* Internal generator for eval() that yields result rows.
|
|
@@ -968,27 +931,20 @@ export class Database {
|
|
|
968
931
|
*/
|
|
969
932
|
async *_evalGenerator(sql, params) {
|
|
970
933
|
this.checkOpen();
|
|
971
|
-
// Acquire mutex for the entire iteration
|
|
972
934
|
const releaseMutex = await this._acquireExecMutex();
|
|
973
935
|
let stmt = null;
|
|
974
|
-
let normalCompletion = false;
|
|
975
936
|
try {
|
|
976
|
-
// Execute - transactions are started JIT by runtime when needed
|
|
977
937
|
stmt = this.prepare(sql);
|
|
978
938
|
if (stmt.astBatch.length === 0) {
|
|
979
|
-
// No statements, yield nothing.
|
|
980
|
-
normalCompletion = true;
|
|
981
939
|
return;
|
|
982
940
|
}
|
|
983
941
|
if (stmt.astBatch.length > 1) {
|
|
984
942
|
// Multi-statement batch: execute all but the last statement,
|
|
985
943
|
// then yield results from the last statement
|
|
986
944
|
const batch = this._parseSql(sql);
|
|
987
|
-
// Execute all statements except the last one
|
|
988
945
|
for (let i = 0; i < batch.length - 1; i++) {
|
|
989
946
|
await this._executeSingleStatement(batch[i], params);
|
|
990
947
|
}
|
|
991
|
-
// Now prepare and execute the last statement to yield its results
|
|
992
948
|
const lastStmt = new Statement(this, [batch[batch.length - 1]]);
|
|
993
949
|
this.statements.add(lastStmt);
|
|
994
950
|
try {
|
|
@@ -1002,25 +958,11 @@ export class Database {
|
|
|
1002
958
|
}
|
|
1003
959
|
}
|
|
1004
960
|
else {
|
|
1005
|
-
// Single statement: execute and yield results
|
|
1006
961
|
const names = stmt.getColumnNames();
|
|
1007
962
|
for await (const row of stmt._iterateRowsRaw(params)) {
|
|
1008
963
|
yield rowToObject(row, names);
|
|
1009
964
|
}
|
|
1010
965
|
}
|
|
1011
|
-
normalCompletion = true;
|
|
1012
|
-
// Commit implicit transaction on normal completion
|
|
1013
|
-
// (The wrapper also handles this for early termination via return())
|
|
1014
|
-
if (this.transactionManager.isImplicitTransaction()) {
|
|
1015
|
-
await this._commitTransaction();
|
|
1016
|
-
}
|
|
1017
|
-
}
|
|
1018
|
-
catch (err) {
|
|
1019
|
-
// Rollback implicit transaction on error
|
|
1020
|
-
if (this.transactionManager.isImplicitTransaction()) {
|
|
1021
|
-
await this._rollbackTransaction();
|
|
1022
|
-
}
|
|
1023
|
-
throw err;
|
|
1024
966
|
}
|
|
1025
967
|
finally {
|
|
1026
968
|
if (stmt) {
|