@quereus/store 4.6.0 → 4.7.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 +4 -2
- package/dist/src/common/events.d.ts +26 -24
- package/dist/src/common/events.d.ts.map +1 -1
- package/dist/src/common/events.js +38 -39
- package/dist/src/common/events.js.map +1 -1
- package/dist/src/common/json-key.d.ts +28 -0
- package/dist/src/common/json-key.d.ts.map +1 -1
- package/dist/src/common/json-key.js +47 -0
- package/dist/src/common/json-key.js.map +1 -1
- package/dist/src/common/key-builder.d.ts +8 -7
- package/dist/src/common/key-builder.d.ts.map +1 -1
- package/dist/src/common/key-builder.js +8 -7
- package/dist/src/common/key-builder.js.map +1 -1
- package/dist/src/common/pk-key-resolution.d.ts +79 -6
- package/dist/src/common/pk-key-resolution.d.ts.map +1 -1
- package/dist/src/common/pk-key-resolution.js +108 -16
- package/dist/src/common/pk-key-resolution.js.map +1 -1
- package/dist/src/common/store-module-access-plan.d.ts +3 -3
- package/dist/src/common/store-module-access-plan.js +11 -7
- package/dist/src/common/store-module-access-plan.js.map +1 -1
- package/dist/src/common/store-module-alter-column.d.ts.map +1 -1
- package/dist/src/common/store-module-alter-column.js +2 -6
- package/dist/src/common/store-module-alter-column.js.map +1 -1
- package/dist/src/common/store-module-alter.d.ts.map +1 -1
- package/dist/src/common/store-module-alter.js +42 -57
- package/dist/src/common/store-module-alter.js.map +1 -1
- package/dist/src/common/store-module-rename.d.ts +1 -1
- package/dist/src/common/store-module-rename.d.ts.map +1 -1
- package/dist/src/common/store-module-rename.js +37 -13
- package/dist/src/common/store-module-rename.js.map +1 -1
- package/dist/src/common/store-table-base.d.ts +17 -1
- package/dist/src/common/store-table-base.d.ts.map +1 -1
- package/dist/src/common/store-table-base.js +23 -1
- package/dist/src/common/store-table-base.js.map +1 -1
- package/dist/src/common/store-table-scan.d.ts +48 -11
- package/dist/src/common/store-table-scan.d.ts.map +1 -1
- package/dist/src/common/store-table-scan.js +111 -31
- package/dist/src/common/store-table-scan.js.map +1 -1
- package/dist/src/common/store-table.js +2 -2
- package/dist/src/common/store-table.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -65,8 +65,10 @@ yield their rows once, and a composite index serves the cross-product of per-col
|
|
|
65
65
|
(`a in (1,2) and b in (10,20)` is four seeks). Very large lists (over 1000 seek keys) and
|
|
66
66
|
lists on semantically-ordered column types (TIMESPAN, JSON) fall back to the scan path —
|
|
67
67
|
still correct, just not accelerated. `IN` on the primary key currently scans (see backlog
|
|
68
|
-
`feat-store-pk-in-list-multiseek`).
|
|
69
|
-
|
|
68
|
+
`feat-store-pk-in-list-multiseek`). When several secondary indexes can serve the same
|
|
69
|
+
predicate, the lowest-cost seek wins (equal costs keep the first-declared index), so
|
|
70
|
+
declaration order no longer decides whether a query does one seek or hundreds. The primary-key
|
|
71
|
+
arms still take precedence over any secondary index whenever they apply.
|
|
70
72
|
|
|
71
73
|
The same multi-seek path also serves an `IN` whose values only exist once the query runs
|
|
72
74
|
— `where v in (select … )`, which the engine may materialize into a set and hand down as
|
|
@@ -10,6 +10,8 @@ export interface SchemaChangeEvent {
|
|
|
10
10
|
objectType: 'table' | 'index';
|
|
11
11
|
schemaName: string;
|
|
12
12
|
objectName: string;
|
|
13
|
+
/** `RENAME TO` only: the table name before the rename (`objectName` carries the new one). */
|
|
14
|
+
oldObjectName?: string;
|
|
13
15
|
ddl?: string;
|
|
14
16
|
/** True if this event originated from sync (remote replica) or cross-tab. */
|
|
15
17
|
remote?: boolean;
|
|
@@ -41,15 +43,6 @@ export interface DataChangeEvent {
|
|
|
41
43
|
*/
|
|
42
44
|
export type SchemaChangeListener = (event: SchemaChangeEvent) => void;
|
|
43
45
|
export type DataChangeListener = (event: DataChangeEvent) => void;
|
|
44
|
-
/**
|
|
45
|
-
* Key for identifying a pending remote schema event.
|
|
46
|
-
*/
|
|
47
|
-
interface PendingRemoteSchemaEvent {
|
|
48
|
-
type: 'create' | 'alter' | 'drop';
|
|
49
|
-
objectType: 'table' | 'index';
|
|
50
|
-
schemaName: string;
|
|
51
|
-
objectName: string;
|
|
52
|
-
}
|
|
53
46
|
/**
|
|
54
47
|
* Simple event emitter for store events.
|
|
55
48
|
* Implements VTableEventEmitter for compatibility with core vtab event system.
|
|
@@ -60,10 +53,11 @@ export declare class StoreEventEmitter implements VTableEventEmitter {
|
|
|
60
53
|
private batchedDataEvents;
|
|
61
54
|
private isBatching;
|
|
62
55
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
56
|
+
* Open remote-schema scopes, refcounted per `(schema, object)` key. While a
|
|
57
|
+
* scope is open, every schema event naming that object is marked remote —
|
|
58
|
+
* see {@link beginRemoteSchemaScope}.
|
|
65
59
|
*/
|
|
66
|
-
private
|
|
60
|
+
private remoteSchemaScopes;
|
|
67
61
|
/**
|
|
68
62
|
* Subscribe to schema change events.
|
|
69
63
|
* @returns Unsubscribe function.
|
|
@@ -76,23 +70,32 @@ export declare class StoreEventEmitter implements VTableEventEmitter {
|
|
|
76
70
|
onDataChange(listener: DataChangeListener): () => void;
|
|
77
71
|
/**
|
|
78
72
|
* Emit a schema change event.
|
|
79
|
-
* If
|
|
73
|
+
* If a remote-schema scope is open for the named object, the event is marked remote.
|
|
80
74
|
*/
|
|
81
75
|
emitSchemaChange(event: SchemaChangeEvent): void;
|
|
82
76
|
/**
|
|
83
|
-
*
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
77
|
+
* Open a remote-schema scope for `(schemaName, objectName)`: until the matching
|
|
78
|
+
* {@link endRemoteSchemaScope}, EVERY schema event naming that object is marked
|
|
79
|
+
* `remote: true` — whether the scoped statement emits zero, one, or several
|
|
80
|
+
* events. Matching never consumes the scope; only the caller's `finally` closes
|
|
81
|
+
* it, so a statement that emits nothing leaves nothing behind. Refcounted, so
|
|
82
|
+
* nested/concurrent scopes over the same object compose.
|
|
83
|
+
*
|
|
84
|
+
* Tradeoff of time-bounded (vs. the old signature-matched, consume-on-match)
|
|
85
|
+
* marking: a CONCURRENT local DDL on the same `(schema, object)`, issued while
|
|
86
|
+
* the scoped statement is in flight, would be mis-marked remote. `Database`
|
|
87
|
+
* serializes statements behind its execution mutex, so that requires a host
|
|
88
|
+
* issuing local DDL on the very table being replicated at that moment. The old
|
|
89
|
+
* scheme had the mirror-image hazard (a concurrent local DDL of the same
|
|
90
|
+
* signature consumed the marker) and additionally leaked or starved whenever a
|
|
91
|
+
* statement's event count was not exactly one.
|
|
90
92
|
*/
|
|
91
|
-
|
|
93
|
+
beginRemoteSchemaScope(schemaName: string, objectName: string): void;
|
|
92
94
|
/**
|
|
93
|
-
*
|
|
95
|
+
* Close a scope opened by {@link beginRemoteSchemaScope}. Call from a `finally`
|
|
96
|
+
* so a throwing statement cannot leave the scope open.
|
|
94
97
|
*/
|
|
95
|
-
|
|
98
|
+
endRemoteSchemaScope(schemaName: string, objectName: string): void;
|
|
96
99
|
/**
|
|
97
100
|
* Emit a data change event.
|
|
98
101
|
* If batching is active, queues the event for later emission.
|
|
@@ -128,5 +131,4 @@ export declare class StoreEventEmitter implements VTableEventEmitter {
|
|
|
128
131
|
*/
|
|
129
132
|
removeAllListeners(): void;
|
|
130
133
|
}
|
|
131
|
-
export {};
|
|
132
134
|
//# sourceMappingURL=events.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/common/events.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,oHAAoH;IACpH,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;IACjB,qCAAqC;IACrC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/common/events.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,oHAAoH;IACpH,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;IACjB,qCAAqC;IACrC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;AAOlE;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC3D,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,UAAU,CAAS;IAC3B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAAkC;IAE3D;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;IAK1D;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAKtD;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAchD;;;;;;;;;;;;;;;;OAgBG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpE;;;OAGG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAUlE;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAe5C;;;OAGG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,UAAU,IAAI,IAAI;IAgBlB;;OAEG;IACH,YAAY,IAAI,IAAI;IAKrB;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,kBAAkB,IAAI,IAAI;CAM1B"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Reactive event types and emitter for schema and data changes.
|
|
3
3
|
*/
|
|
4
|
+
/** Case-insensitive `(schema, object)` scope key — identifiers are case-insensitive engine-wide. */
|
|
5
|
+
function remoteScopeKey(schemaName, objectName) {
|
|
6
|
+
return `${schemaName.toLowerCase()}:${objectName.toLowerCase()}`;
|
|
7
|
+
}
|
|
4
8
|
/**
|
|
5
9
|
* Simple event emitter for store events.
|
|
6
10
|
* Implements VTableEventEmitter for compatibility with core vtab event system.
|
|
@@ -11,10 +15,11 @@ export class StoreEventEmitter {
|
|
|
11
15
|
batchedDataEvents = [];
|
|
12
16
|
isBatching = false;
|
|
13
17
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
18
|
+
* Open remote-schema scopes, refcounted per `(schema, object)` key. While a
|
|
19
|
+
* scope is open, every schema event naming that object is marked remote —
|
|
20
|
+
* see {@link beginRemoteSchemaScope}.
|
|
16
21
|
*/
|
|
17
|
-
|
|
22
|
+
remoteSchemaScopes = new Map();
|
|
18
23
|
/**
|
|
19
24
|
* Subscribe to schema change events.
|
|
20
25
|
* @returns Unsubscribe function.
|
|
@@ -33,21 +38,11 @@ export class StoreEventEmitter {
|
|
|
33
38
|
}
|
|
34
39
|
/**
|
|
35
40
|
* Emit a schema change event.
|
|
36
|
-
* If
|
|
41
|
+
* If a remote-schema scope is open for the named object, the event is marked remote.
|
|
37
42
|
*/
|
|
38
43
|
emitSchemaChange(event) {
|
|
39
|
-
|
|
40
|
-
const key = this.makeSchemaEventKey(event);
|
|
41
|
-
const pendingCount = this.pendingRemoteSchemaEvents.get(key);
|
|
42
|
-
if (pendingCount !== undefined && pendingCount > 0) {
|
|
43
|
-
// Mark as remote and decrement the pending count
|
|
44
|
+
if ((this.remoteSchemaScopes.get(remoteScopeKey(event.schemaName, event.objectName)) ?? 0) > 0) {
|
|
44
45
|
event = { ...event, remote: true };
|
|
45
|
-
if (pendingCount === 1) {
|
|
46
|
-
this.pendingRemoteSchemaEvents.delete(key);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this.pendingRemoteSchemaEvents.set(key, pendingCount - 1);
|
|
50
|
-
}
|
|
51
46
|
}
|
|
52
47
|
for (const listener of this.schemaListeners) {
|
|
53
48
|
try {
|
|
@@ -59,34 +54,38 @@ export class StoreEventEmitter {
|
|
|
59
54
|
}
|
|
60
55
|
}
|
|
61
56
|
/**
|
|
62
|
-
*
|
|
57
|
+
* Open a remote-schema scope for `(schemaName, objectName)`: until the matching
|
|
58
|
+
* {@link endRemoteSchemaScope}, EVERY schema event naming that object is marked
|
|
59
|
+
* `remote: true` — whether the scoped statement emits zero, one, or several
|
|
60
|
+
* events. Matching never consumes the scope; only the caller's `finally` closes
|
|
61
|
+
* it, so a statement that emits nothing leaves nothing behind. Refcounted, so
|
|
62
|
+
* nested/concurrent scopes over the same object compose.
|
|
63
|
+
*
|
|
64
|
+
* Tradeoff of time-bounded (vs. the old signature-matched, consume-on-match)
|
|
65
|
+
* marking: a CONCURRENT local DDL on the same `(schema, object)`, issued while
|
|
66
|
+
* the scoped statement is in flight, would be mis-marked remote. `Database`
|
|
67
|
+
* serializes statements behind its execution mutex, so that requires a host
|
|
68
|
+
* issuing local DDL on the very table being replicated at that moment. The old
|
|
69
|
+
* scheme had the mirror-image hazard (a concurrent local DDL of the same
|
|
70
|
+
* signature consumed the marker) and additionally leaked or starved whenever a
|
|
71
|
+
* statement's event count was not exactly one.
|
|
63
72
|
*/
|
|
64
|
-
|
|
65
|
-
|
|
73
|
+
beginRemoteSchemaScope(schemaName, objectName) {
|
|
74
|
+
const key = remoteScopeKey(schemaName, objectName);
|
|
75
|
+
this.remoteSchemaScopes.set(key, (this.remoteSchemaScopes.get(key) ?? 0) + 1);
|
|
66
76
|
}
|
|
67
77
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* Uses reference counting to handle concurrent applies of the same event type.
|
|
78
|
+
* Close a scope opened by {@link beginRemoteSchemaScope}. Call from a `finally`
|
|
79
|
+
* so a throwing statement cannot leave the scope open.
|
|
71
80
|
*/
|
|
72
|
-
|
|
73
|
-
const key =
|
|
74
|
-
const current = this.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
clearExpectedRemoteSchemaEvent(event) {
|
|
81
|
-
const key = this.makeSchemaEventKey(event);
|
|
82
|
-
const current = this.pendingRemoteSchemaEvents.get(key);
|
|
83
|
-
if (current !== undefined && current > 0) {
|
|
84
|
-
if (current === 1) {
|
|
85
|
-
this.pendingRemoteSchemaEvents.delete(key);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
this.pendingRemoteSchemaEvents.set(key, current - 1);
|
|
89
|
-
}
|
|
81
|
+
endRemoteSchemaScope(schemaName, objectName) {
|
|
82
|
+
const key = remoteScopeKey(schemaName, objectName);
|
|
83
|
+
const current = this.remoteSchemaScopes.get(key);
|
|
84
|
+
if (current === undefined || current <= 1) {
|
|
85
|
+
this.remoteSchemaScopes.delete(key);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.remoteSchemaScopes.set(key, current - 1);
|
|
90
89
|
}
|
|
91
90
|
}
|
|
92
91
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/common/events.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/common/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -93,4 +93,32 @@ import { type SqlValue } from '@quereus/quereus';
|
|
|
93
93
|
* NESTED JSON null is a real node and encodes with its own tag.
|
|
94
94
|
*/
|
|
95
95
|
export declare function jsonStructuralKey(value: SqlValue): SqlValue;
|
|
96
|
+
/**
|
|
97
|
+
* True when `value` has a faithful position in {@link jsonStructuralKey}'s byte order —
|
|
98
|
+
* the probe-side gate every re-opened seek window (range bound AND equality probe)
|
|
99
|
+
* consults before encoding (`semanticProbeIsKeyFaithful` in pk-key-resolution.ts, whose
|
|
100
|
+
* doc states how each arm degrades on `false`). Stored values never need this check:
|
|
101
|
+
* they are `JSON_TYPE.parse` outputs, which contain neither node kind declined here.
|
|
102
|
+
* Only a QUERY-supplied probe can carry one, and nothing coerces a probe to the
|
|
103
|
+
* column's declared type.
|
|
104
|
+
*
|
|
105
|
+
* Declines exactly two node kinds, anywhere in the value:
|
|
106
|
+
* - a `Uint8Array` — {@link pushJsonNode} raises `INTERNAL` for one, while the residual
|
|
107
|
+
* comparator (`createTypedComparator`) happily ranks it by storage class (BLOB,
|
|
108
|
+
* between TEXT and OBJECT). Declining degrades the arm instead of erroring, so
|
|
109
|
+
* `where j > x'01'` returns its rows and `where j = x'01'` its (empty) row set.
|
|
110
|
+
* - a `bigint` — the encoder folds it to its nearest double (lossy above 2^53), while
|
|
111
|
+
* `deepCompareJson`'s `jsonTypeOrder` drops a bigint into its `default:` arm at the
|
|
112
|
+
* OBJECT rank, so the bytes and the comparator place it in two different regions
|
|
113
|
+
* entirely.
|
|
114
|
+
*
|
|
115
|
+
* An unpaired surrogate in a string leaf or object key is deliberately NOT declined:
|
|
116
|
+
* {@link jsonStructuralKey} raises for one and must keep raising — a bound with no
|
|
117
|
+
* faithful byte position is refused, never silently widened or narrowed. That is the
|
|
118
|
+
* same rule a text PK's seek bounds already carry (lone-surrogate-keys.spec.ts).
|
|
119
|
+
*
|
|
120
|
+
* Kept beside {@link pushJsonNode} so the two node-kind switches stay visibly paired.
|
|
121
|
+
* Runs on probe values only — a handful per query.
|
|
122
|
+
*/
|
|
123
|
+
export declare function jsonKeyEncodable(value: SqlValue): boolean;
|
|
96
124
|
//# sourceMappingURL=json-key.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-key.d.ts","sourceRoot":"","sources":["../../../src/common/json-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AAEH,OAAO,EAA+C,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAiB9F;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAQ3D"}
|
|
1
|
+
{"version":3,"file":"json-key.d.ts","sourceRoot":"","sources":["../../../src/common/json-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AAEH,OAAO,EAA+C,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAiB9F;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAQ3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAgBzD"}
|
|
@@ -113,6 +113,53 @@ export function jsonStructuralKey(value) {
|
|
|
113
113
|
pushJsonNode(out, value);
|
|
114
114
|
return Uint8Array.from(out);
|
|
115
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* True when `value` has a faithful position in {@link jsonStructuralKey}'s byte order —
|
|
118
|
+
* the probe-side gate every re-opened seek window (range bound AND equality probe)
|
|
119
|
+
* consults before encoding (`semanticProbeIsKeyFaithful` in pk-key-resolution.ts, whose
|
|
120
|
+
* doc states how each arm degrades on `false`). Stored values never need this check:
|
|
121
|
+
* they are `JSON_TYPE.parse` outputs, which contain neither node kind declined here.
|
|
122
|
+
* Only a QUERY-supplied probe can carry one, and nothing coerces a probe to the
|
|
123
|
+
* column's declared type.
|
|
124
|
+
*
|
|
125
|
+
* Declines exactly two node kinds, anywhere in the value:
|
|
126
|
+
* - a `Uint8Array` — {@link pushJsonNode} raises `INTERNAL` for one, while the residual
|
|
127
|
+
* comparator (`createTypedComparator`) happily ranks it by storage class (BLOB,
|
|
128
|
+
* between TEXT and OBJECT). Declining degrades the arm instead of erroring, so
|
|
129
|
+
* `where j > x'01'` returns its rows and `where j = x'01'` its (empty) row set.
|
|
130
|
+
* - a `bigint` — the encoder folds it to its nearest double (lossy above 2^53), while
|
|
131
|
+
* `deepCompareJson`'s `jsonTypeOrder` drops a bigint into its `default:` arm at the
|
|
132
|
+
* OBJECT rank, so the bytes and the comparator place it in two different regions
|
|
133
|
+
* entirely.
|
|
134
|
+
*
|
|
135
|
+
* An unpaired surrogate in a string leaf or object key is deliberately NOT declined:
|
|
136
|
+
* {@link jsonStructuralKey} raises for one and must keep raising — a bound with no
|
|
137
|
+
* faithful byte position is refused, never silently widened or narrowed. That is the
|
|
138
|
+
* same rule a text PK's seek bounds already carry (lone-surrogate-keys.spec.ts).
|
|
139
|
+
*
|
|
140
|
+
* Kept beside {@link pushJsonNode} so the two node-kind switches stay visibly paired.
|
|
141
|
+
* Runs on probe values only — a handful per query.
|
|
142
|
+
*/
|
|
143
|
+
export function jsonKeyEncodable(value) {
|
|
144
|
+
if (value === null)
|
|
145
|
+
return true;
|
|
146
|
+
switch (typeof value) {
|
|
147
|
+
case 'boolean':
|
|
148
|
+
case 'number':
|
|
149
|
+
case 'string':
|
|
150
|
+
return true;
|
|
151
|
+
case 'bigint':
|
|
152
|
+
return false;
|
|
153
|
+
default:
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
if (value instanceof Uint8Array)
|
|
157
|
+
return false;
|
|
158
|
+
if (Array.isArray(value))
|
|
159
|
+
return value.every(jsonKeyEncodable);
|
|
160
|
+
// Object keys are always strings — only the values can hold a declined node.
|
|
161
|
+
return Object.values(value).every(jsonKeyEncodable);
|
|
162
|
+
}
|
|
116
163
|
/** Append `value`'s tagged, self-delimiting encoding to `out`. */
|
|
117
164
|
function pushJsonNode(out, value) {
|
|
118
165
|
if (value === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-key.js","sourceRoot":"","sources":["../../../src/common/json-key.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json-key.js","sourceRoot":"","sources":["../../../src/common/json-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -231,13 +231,14 @@ export declare function buildFullScanBounds(): {
|
|
|
231
231
|
* for data stores.
|
|
232
232
|
*
|
|
233
233
|
* NOTE: all three `StoreTable` callers (`analyzeIndexAccess`, `buildIndexRangeBounds`,
|
|
234
|
-
* `scanMultiSeek`)
|
|
235
|
-
*
|
|
236
|
-
*
|
|
237
|
-
*
|
|
238
|
-
*
|
|
239
|
-
*
|
|
240
|
-
*
|
|
234
|
+
* `scanMultiSeek`) thread the index's per-column key `transforms`
|
|
235
|
+
* (`StoreTableScan.indexKeyTransforms`, backed by `resolveIndexKeyTransforms`), so the
|
|
236
|
+
* bounds address the same transformed bytes `buildIndexKey` wrote. That threading is
|
|
237
|
+
* load-bearing for the range arm's semantic-ordering seeks (a window over raw-value
|
|
238
|
+
* bytes while the index holds transformed ones under-fetches silently — a range window
|
|
239
|
+
* carries no residual able to resurrect a skipped row); the point and multi-seek arms
|
|
240
|
+
* only ever see `undefined` entries today (they still decline semantic-ordering
|
|
241
|
+
* prefixes), but thread uniformly so a later re-open cannot miss it.
|
|
241
242
|
*/
|
|
242
243
|
export declare function buildIndexPrefixBounds(prefixValues: SqlValue[], options?: EncodeOptions, directions?: ReadonlyArray<boolean>, collations?: ReadonlyArray<string | undefined>, transforms?: ReadonlyArray<KeyValueTransform | undefined>): {
|
|
243
244
|
gte: Uint8Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-builder.d.ts","sourceRoot":"","sources":["../../../src/common/key-builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"key-builder.d.ts","sourceRoot":"","sources":["../../../src/common/key-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -313,13 +313,14 @@ export function buildFullScanBounds() {
|
|
|
313
313
|
* for data stores.
|
|
314
314
|
*
|
|
315
315
|
* NOTE: all three `StoreTable` callers (`analyzeIndexAccess`, `buildIndexRangeBounds`,
|
|
316
|
-
* `scanMultiSeek`)
|
|
317
|
-
*
|
|
318
|
-
*
|
|
319
|
-
*
|
|
320
|
-
*
|
|
321
|
-
*
|
|
322
|
-
*
|
|
316
|
+
* `scanMultiSeek`) thread the index's per-column key `transforms`
|
|
317
|
+
* (`StoreTableScan.indexKeyTransforms`, backed by `resolveIndexKeyTransforms`), so the
|
|
318
|
+
* bounds address the same transformed bytes `buildIndexKey` wrote. That threading is
|
|
319
|
+
* load-bearing for the range arm's semantic-ordering seeks (a window over raw-value
|
|
320
|
+
* bytes while the index holds transformed ones under-fetches silently — a range window
|
|
321
|
+
* carries no residual able to resurrect a skipped row); the point and multi-seek arms
|
|
322
|
+
* only ever see `undefined` entries today (they still decline semantic-ordering
|
|
323
|
+
* prefixes), but thread uniformly so a later re-open cannot miss it.
|
|
323
324
|
*/
|
|
324
325
|
export function buildIndexPrefixBounds(prefixValues, options, directions, collations, transforms) {
|
|
325
326
|
if (prefixValues.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-builder.js","sourceRoot":"","sources":["../../../src/common/key-builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"key-builder.js","sourceRoot":"","sources":["../../../src/common/key-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -173,6 +173,76 @@ export declare function resolvePkSemanticEquality(pkDef: ReadonlyArray<{
|
|
|
173
173
|
* (a seek under the wrong collation, with the residual dropped).
|
|
174
174
|
*/
|
|
175
175
|
export declare function columnCanHoldText(col: ColumnSchema | undefined): boolean;
|
|
176
|
+
/**
|
|
177
|
+
* True when this semantic-ordering type's store key bytes memcmp in EXACTLY the type's
|
|
178
|
+
* `compare` order — and byte-equal exactly when `compare` says equal — for every value a
|
|
179
|
+
* store-backed table can HOLD.
|
|
180
|
+
*
|
|
181
|
+
* An explicit per-type assertion, deliberately NOT
|
|
182
|
+
* `storeSemanticKeyTransform(type) !== undefined`: a transform is only required to be
|
|
183
|
+
* identity-faithful, and `validateSemanticKeyTransforms` can check only that one exists —
|
|
184
|
+
* nothing forces a future type's transform to be order-preserving. A type absent here
|
|
185
|
+
* keeps the pre-existing blanket decline in {@link keyOrderMatchesCollation} — no byte
|
|
186
|
+
* window, no ordering advertisement, answered by full scan + the type-aware residual.
|
|
187
|
+
*
|
|
188
|
+
* Why the stored-value claim holds for the two listed types:
|
|
189
|
+
* - TIMESPAN — every write path coerces through `TIMESPAN_TYPE.parse` (row coercion,
|
|
190
|
+
* the engine's pre-coerced UPDATE fast path, the ALTER retype backfill's
|
|
191
|
+
* `validateAndParse`), which raises on anything unparseable. So every stored value
|
|
192
|
+
* parses, `groupKey` returns total seconds for all of them, and every stored key
|
|
193
|
+
* member is a fixed-width NUMERIC whose memcmp order is elapsed-time order. The
|
|
194
|
+
* raw-text fallback branch of `groupKey` is unreachable for stored values.
|
|
195
|
+
* - JSON — every stored value is a `JSON_TYPE.parse` output (never a blob, never a
|
|
196
|
+
* bigint), all of which {@link jsonStructuralKey} encodes; its tag order reproduces
|
|
197
|
+
* both `deepCompareJson`'s rank order and, for cross-storage-class pairs (where
|
|
198
|
+
* `createTypedComparator` short-circuits before reaching `JSON_TYPE.compare`),
|
|
199
|
+
* `getStorageClass`'s NULL < NUMERIC < TEXT < BLOB < OBJECT. SQL NULL never reaches
|
|
200
|
+
* a transform (`encodeCompositeKey` exempts it) and its `0x00` tag sorts below the
|
|
201
|
+
* BLOB tag the structural bytes travel under, matching NULL-first placement.
|
|
202
|
+
*
|
|
203
|
+
* Matched by NAME, not object identity, for the same dual-module-instance reason
|
|
204
|
+
* {@link storeSemanticKeyTransform} documents. This is a claim about values the table
|
|
205
|
+
* holds; a query-supplied seek bound needs {@link semanticProbeIsKeyFaithful} on top.
|
|
206
|
+
*/
|
|
207
|
+
export declare function semanticKeyOrderIsFaithful(type: LogicalType | undefined): boolean;
|
|
208
|
+
/**
|
|
209
|
+
* True when `probe`'s key bytes sit at the position the type's `compare` gives it
|
|
210
|
+
* relative to every STORED value — the per-VALUE precondition every re-opened seek
|
|
211
|
+
* window (range bound AND equality probe) needs on top of
|
|
212
|
+
* {@link semanticKeyOrderIsFaithful}, which is a claim about stored values only. A probe
|
|
213
|
+
* comes from the query, and nothing coerces it to the column's declared type, so an
|
|
214
|
+
* unfaithful probe is reachable where an unfaithful stored value is not. Two concrete
|
|
215
|
+
* TIMESPAN under-fetches motivate the gate:
|
|
216
|
+
*
|
|
217
|
+
* - `where d > 5`: `createTypedComparator` short-circuits on the storage-class
|
|
218
|
+
* mismatch before `TIMESPAN.compare` runs, so every stored (TEXT-class) value ranks
|
|
219
|
+
* ABOVE the NUMERIC probe and the predicate admits every row — but `groupKey(5)`
|
|
220
|
+
* passes the non-string through unchanged, so the byte window is `> NUMERIC(5)` and
|
|
221
|
+
* a row storing 'PT1S' (total 1) falls outside it. Rows lost.
|
|
222
|
+
* - `where d > 'not a duration'`: `TIMESPAN.compare` falls back to BINARY text against
|
|
223
|
+
* the canonical stored text, while `groupKey` falls back to the raw text, which
|
|
224
|
+
* encodes TEXT-tagged and sorts above every NUMERIC-tagged stored key. Different
|
|
225
|
+
* position, rows lost.
|
|
226
|
+
*
|
|
227
|
+
* THE canonical statement of how each arm degrades on `false` — the call sites point
|
|
228
|
+
* here rather than restating it. A window may only ever be WIDENED, never narrowed, and
|
|
229
|
+
* the type-aware residual (`StoreTableScan.matchesFilters`) decides rows in every case:
|
|
230
|
+
*
|
|
231
|
+
* - a RANGE bound is SKIPPED (`buildPKRangeBounds`, `buildIndexRangeBounds`) — dropping
|
|
232
|
+
* one bound only widens the window, worst case back to the full scan.
|
|
233
|
+
* - a full-PK EQUALITY declines the WHOLE point arm (`analyzePKAccess`) — a point window
|
|
234
|
+
* is a single byte position, so it cannot be widened, only under-fetched.
|
|
235
|
+
* - a secondary index's EQ PREFIX stops SHORT at that column (`analyzeIndexAccess`) — a
|
|
236
|
+
* window over the columns before it is a strict superset.
|
|
237
|
+
* - an IN-list MULTI-SEEK has none of the three available (its merged windows are the
|
|
238
|
+
* whole access) and so never reaches this gate: it is declined per SCHEMA upstream.
|
|
239
|
+
*
|
|
240
|
+
* The TIMESPAN arm calls the COLUMN's own `groupKey`, not the imported singleton's,
|
|
241
|
+
* for the dual-module-instance reason {@link storeSemanticKeyTransform} documents.
|
|
242
|
+
* A semantic-ordering type outside the {@link semanticKeyOrderIsFaithful} allow-list
|
|
243
|
+
* answers `false`, consistent with that predicate — no window is built for it anyway.
|
|
244
|
+
*/
|
|
245
|
+
export declare function semanticProbeIsKeyFaithful(type: LogicalType | undefined, probe: SqlValue): boolean;
|
|
176
246
|
/**
|
|
177
247
|
* True when a byte window — or a byte-order advertisement — over `column` is SOUND.
|
|
178
248
|
*
|
|
@@ -240,8 +310,10 @@ export declare function indexPrefixSeekIsCollationExact(columns: ReadonlyArray<C
|
|
|
240
310
|
* Strictly stronger than {@link indexPrefixSeekIsCollationExact} at position 0: the same
|
|
241
311
|
* key-vs-residual collation agreement, PLUS the collation's `orderPreserving` assertion,
|
|
242
312
|
* because a range window also equates memcmp of the key bytes with the residual
|
|
243
|
-
* comparator's ORDER. Both halves are {@link keyOrderMatchesCollation}, which
|
|
244
|
-
*
|
|
313
|
+
* comparator's ORDER. Both halves are {@link keyOrderMatchesCollation}, which admits a
|
|
314
|
+
* semantic-ordering column only when {@link semanticKeyOrderIsFaithful} asserts its key
|
|
315
|
+
* bytes order as the type's `compare` does (and the collation sides agree — a `collate`
|
|
316
|
+
* decoration on the index column still declines it).
|
|
245
317
|
*
|
|
246
318
|
* THE shared predicate for the two decision sites: `tryIndexAccessPlan`
|
|
247
319
|
* (store-module-access-plan.ts) marks the range filters handled only when it holds, and
|
|
@@ -263,10 +335,11 @@ export declare function indexLeadingRangeIsOrderSafe(db: Database, columns: Read
|
|
|
263
335
|
* What the advertisement is measured against is the order the planner's `Sort` would have
|
|
264
336
|
* produced. For most members Sort orders under the operand's COLLATION, so a collation match
|
|
265
337
|
* is the question; for a member whose logical type carries SEMANTIC ordering (TIMESPAN, JSON
|
|
266
|
-
* — see docs/types.md "Semantic ordering") Sort
|
|
267
|
-
*
|
|
268
|
-
*
|
|
269
|
-
*
|
|
338
|
+
* — see docs/types.md "Semantic ordering") Sort ranks by `logicalType.compare`, and the
|
|
339
|
+
* member counts only when {@link semanticKeyOrderIsFaithful} asserts the stored key bytes
|
|
340
|
+
* memcmp in exactly that order (TIMESPAN's total-seconds transform, JSON's structural
|
|
341
|
+
* encoding). A semantic-ordering type outside that allow-list breaks the prefix, and the
|
|
342
|
+
* memory backend's typed BTree order remains the canonical order for it.
|
|
270
343
|
*
|
|
271
344
|
* `0` ⇒ even the leading member is unsafe: no range seek, no PK-order advertisement.
|
|
272
345
|
* A prefix shorter than the PK truncates the ordering advertisement rather than voiding it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pk-key-resolution.d.ts","sourceRoot":"","sources":["../../../src/common/pk-key-resolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"pk-key-resolution.d.ts","sourceRoot":"","sources":["../../../src/common/pk-key-resolution.ts"],"names":[],"mappings":"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"}
|