@minnowdb/core 0.1.1 → 0.2.1

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 (119) hide show
  1. package/README.md +12 -9
  2. package/dist/engine/client.d.ts +10 -1
  3. package/dist/engine/client.d.ts.map +1 -1
  4. package/dist/engine/client.js +30 -5
  5. package/dist/engine/client.js.map +1 -1
  6. package/dist/engine/database.d.ts +55 -6
  7. package/dist/engine/database.d.ts.map +1 -1
  8. package/dist/engine/database.js +2689 -898
  9. package/dist/engine/database.js.map +1 -1
  10. package/dist/engine/live.d.ts +6 -2
  11. package/dist/engine/live.d.ts.map +1 -1
  12. package/dist/engine/live.js +35 -11
  13. package/dist/engine/live.js.map +1 -1
  14. package/dist/engine/query-cache.d.ts +13 -1
  15. package/dist/engine/query-cache.d.ts.map +1 -1
  16. package/dist/engine/query-cache.js +34 -5
  17. package/dist/engine/query-cache.js.map +1 -1
  18. package/dist/engine/query.d.ts +13 -1
  19. package/dist/engine/query.d.ts.map +1 -1
  20. package/dist/engine/query.js +73 -46
  21. package/dist/engine/query.js.map +1 -1
  22. package/dist/engine/result-wire.d.ts +68 -0
  23. package/dist/engine/result-wire.d.ts.map +1 -0
  24. package/dist/engine/result-wire.js +264 -0
  25. package/dist/engine/result-wire.js.map +1 -0
  26. package/dist/engine/sort-keys.d.ts +50 -12
  27. package/dist/engine/sort-keys.d.ts.map +1 -1
  28. package/dist/engine/sort-keys.js +371 -25
  29. package/dist/engine/sort-keys.js.map +1 -1
  30. package/dist/engine/vector.d.ts +11 -0
  31. package/dist/engine/vector.d.ts.map +1 -1
  32. package/dist/engine/vector.js +99 -203
  33. package/dist/engine/vector.js.map +1 -1
  34. package/dist/engine/worker-host.d.ts +17 -1
  35. package/dist/engine/worker-host.d.ts.map +1 -1
  36. package/dist/engine/worker-host.js +87 -13
  37. package/dist/engine/worker-host.js.map +1 -1
  38. package/dist/storage/index.d.ts +13 -0
  39. package/dist/storage/index.d.ts.map +1 -1
  40. package/dist/storage/index.js +13 -0
  41. package/dist/storage/index.js.map +1 -1
  42. package/dist/storage/indexeddb.d.ts +5 -1
  43. package/dist/storage/indexeddb.d.ts.map +1 -1
  44. package/dist/storage/indexeddb.js +484 -402
  45. package/dist/storage/indexeddb.js.map +1 -1
  46. package/dist/storage/memory.d.ts +24 -21
  47. package/dist/storage/memory.d.ts.map +1 -1
  48. package/dist/storage/memory.js +124 -1199
  49. package/dist/storage/memory.js.map +1 -1
  50. package/dist/storage/opfs/files.d.ts +64 -0
  51. package/dist/storage/opfs/files.d.ts.map +1 -0
  52. package/dist/storage/opfs/files.js +243 -0
  53. package/dist/storage/opfs/files.js.map +1 -0
  54. package/dist/storage/opfs/index.d.ts +3 -0
  55. package/dist/storage/opfs/index.d.ts.map +1 -0
  56. package/dist/storage/opfs/index.js +3 -0
  57. package/dist/storage/opfs/index.js.map +1 -0
  58. package/dist/storage/opfs/leader.d.ts +130 -0
  59. package/dist/storage/opfs/leader.d.ts.map +1 -0
  60. package/dist/storage/opfs/leader.js +1104 -0
  61. package/dist/storage/opfs/leader.js.map +1 -0
  62. package/dist/storage/opfs/rpc.d.ts +70 -0
  63. package/dist/storage/opfs/rpc.d.ts.map +1 -0
  64. package/dist/storage/opfs/rpc.js +58 -0
  65. package/dist/storage/opfs/rpc.js.map +1 -0
  66. package/dist/storage/opfs/store.d.ts +154 -0
  67. package/dist/storage/opfs/store.d.ts.map +1 -0
  68. package/dist/storage/opfs/store.js +958 -0
  69. package/dist/storage/opfs/store.js.map +1 -0
  70. package/dist/storage/toolkit/extents.d.ts +69 -0
  71. package/dist/storage/toolkit/extents.d.ts.map +1 -0
  72. package/dist/storage/toolkit/extents.js +175 -0
  73. package/dist/storage/toolkit/extents.js.map +1 -0
  74. package/dist/storage/toolkit/index.d.ts +30 -0
  75. package/dist/storage/toolkit/index.d.ts.map +1 -0
  76. package/dist/storage/toolkit/index.js +5 -0
  77. package/dist/storage/toolkit/index.js.map +1 -0
  78. package/dist/storage/toolkit/record-core.d.ts +252 -0
  79. package/dist/storage/toolkit/record-core.d.ts.map +1 -0
  80. package/dist/storage/toolkit/record-core.js +1670 -0
  81. package/dist/storage/toolkit/record-core.js.map +1 -0
  82. package/dist/storage/toolkit/sync-file.d.ts +29 -0
  83. package/dist/storage/toolkit/sync-file.d.ts.map +1 -0
  84. package/dist/storage/toolkit/sync-file.js +2 -0
  85. package/dist/storage/toolkit/sync-file.js.map +1 -0
  86. package/dist/storage/toolkit/wal.d.ts +22 -0
  87. package/dist/storage/toolkit/wal.d.ts.map +1 -0
  88. package/dist/storage/toolkit/wal.js +79 -0
  89. package/dist/storage/toolkit/wal.js.map +1 -0
  90. package/dist/storage/toolkit/wire.d.ts +25 -0
  91. package/dist/storage/toolkit/wire.d.ts.map +1 -0
  92. package/dist/storage/toolkit/wire.js +100 -0
  93. package/dist/storage/toolkit/wire.js.map +1 -0
  94. package/dist/storage/types.d.ts +343 -59
  95. package/dist/storage/types.d.ts.map +1 -1
  96. package/dist/storage/types.js +112 -11
  97. package/dist/storage/types.js.map +1 -1
  98. package/dist/testing/block-store-conformance.d.ts +51 -0
  99. package/dist/testing/block-store-conformance.d.ts.map +1 -0
  100. package/dist/testing/block-store-conformance.js +745 -0
  101. package/dist/testing/block-store-conformance.js.map +1 -0
  102. package/dist/testing/index.d.ts +3 -0
  103. package/dist/testing/index.d.ts.map +1 -1
  104. package/dist/testing/index.js +5 -0
  105. package/dist/testing/index.js.map +1 -1
  106. package/dist/testing/opfs-shim.d.ts +35 -0
  107. package/dist/testing/opfs-shim.d.ts.map +1 -0
  108. package/dist/testing/opfs-shim.js +295 -0
  109. package/dist/testing/opfs-shim.js.map +1 -0
  110. package/dist/transactions/index.d.ts +42 -1
  111. package/dist/transactions/index.d.ts.map +1 -1
  112. package/dist/transactions/index.js +219 -13
  113. package/dist/transactions/index.js.map +1 -1
  114. package/dist/worker-protocol/index.d.ts +2 -2
  115. package/dist/worker-protocol/index.d.ts.map +1 -1
  116. package/dist/worker-protocol/index.js +2 -1
  117. package/dist/worker-protocol/index.js.map +1 -1
  118. package/package.json +10 -2
  119. package/sql-feature-matrix.json +8 -0
@@ -1,40 +1,64 @@
1
- import { compareSqlValues } from "./sql-semantics.js";
1
+ import { compareSqlStrings, compareSqlValues } from "./sql-semantics.js";
2
2
  /** Unwraps a datetime to the number the comparisons use; every other value passes through. */
3
3
  export function comparableSortValue(value) {
4
4
  return value instanceof Date ? value.getTime() : value;
5
5
  }
6
6
  /**
7
- * Extracts one term's values into a comparison-ready column. `valueAt` is called exactly once
8
- * per row, so a caller that reads through a row object or a vector pays that cost once rather
9
- * than once per comparison.
7
+ * Extracts one term's values into a comparison-ready column. `valueAt` is called once per row,
8
+ * so a caller that reads through a row object or a vector pays that cost once rather than once
9
+ * per comparison. A term that mixes types cannot be unboxed; it is read a second time into the
10
+ * generic column, whose comparison reports the type error the way it always has.
11
+ *
12
+ * Strings are always ranked, whatever their cardinality. Measured at 200k rows, ranking wins by
13
+ * ten times when six strings repeat and still by three times when nearly every string is
14
+ * distinct: the distinct set sorts with the engine's own string sort, the rows then sort as
15
+ * numbers, and neither pays the per-comparison dispatch the generic path does.
10
16
  */
11
17
  export function buildSortKeyColumn(count, valueAt) {
12
- const values = new Array(count);
13
- let numeric = true;
14
- for (let index = 0; index < count; index += 1) {
15
- const value = comparableSortValue(valueAt(index));
16
- values[index] = value;
17
- if (numeric && value !== null && value !== undefined && typeof value !== "number") {
18
- numeric = false;
19
- }
20
- }
21
- if (!numeric) {
22
- return {
23
- compare: (left, right) => compareSqlValues(values[left], values[right]),
24
- isNull: (index) => {
25
- const value = values[index];
26
- return value === null || value === undefined;
27
- },
28
- };
29
- }
30
18
  const numbers = new Float64Array(count);
31
19
  const nulls = new Uint8Array(count);
20
+ let kind;
21
+ let ranks;
32
22
  for (let index = 0; index < count; index += 1) {
33
- const value = values[index];
34
- if (value === null || value === undefined)
23
+ const value = comparableSortValue(valueAt(index));
24
+ if (value === null || value === undefined) {
35
25
  nulls[index] = 1;
36
- else
26
+ continue;
27
+ }
28
+ if (typeof value === "number" && kind !== "boolean" && kind !== "string") {
29
+ kind = "number";
37
30
  numbers[index] = value;
31
+ }
32
+ else if (typeof value === "boolean" && kind !== "number" && kind !== "string") {
33
+ kind = "boolean";
34
+ numbers[index] = value ? 1 : 0;
35
+ }
36
+ else if (typeof value === "string" && kind !== "number" && kind !== "boolean") {
37
+ kind = "string";
38
+ ranks ??= new Map();
39
+ let rank = ranks.get(value);
40
+ if (rank === undefined) {
41
+ rank = ranks.size;
42
+ ranks.set(value, rank);
43
+ }
44
+ numbers[index] = rank;
45
+ }
46
+ else {
47
+ return buildGenericSortKeyColumn(count, valueAt);
48
+ }
49
+ }
50
+ if (ranks !== undefined) {
51
+ // Ranks were handed out in first-seen order; renumber them in sorted order so the numeric
52
+ // comparison of two ranks is the string comparison of the two strings.
53
+ const distinct = [...ranks.keys()].sort(compareSqlStrings);
54
+ const sortedRank = new Float64Array(distinct.length);
55
+ for (let position = 0; position < distinct.length; position += 1) {
56
+ sortedRank[ranks.get(distinct[position] ?? "") ?? 0] = position;
57
+ }
58
+ for (let index = 0; index < count; index += 1) {
59
+ if (nulls[index] === 0)
60
+ numbers[index] = sortedRank[numbers[index] ?? 0] ?? 0;
61
+ }
38
62
  }
39
63
  return {
40
64
  compare: (left, right) => {
@@ -55,6 +79,328 @@ export function buildSortKeyColumn(count, valueAt) {
55
79
  return leftValue < rightValue ? -1 : 1;
56
80
  },
57
81
  isNull: (index) => nulls[index] === 1,
82
+ numbers,
83
+ nulls,
84
+ };
85
+ }
86
+ function buildGenericSortKeyColumn(count, valueAt) {
87
+ const values = new Array(count);
88
+ for (let index = 0; index < count; index += 1) {
89
+ values[index] = comparableSortValue(valueAt(index));
90
+ }
91
+ return {
92
+ compare: (left, right) => compareSqlValues(values[left], values[right]),
93
+ isNull: (index) => {
94
+ const value = values[index];
95
+ return value === null || value === undefined;
96
+ },
97
+ numbers: undefined,
98
+ nulls: undefined,
58
99
  };
59
100
  }
101
+ /**
102
+ * A stable sort of `count` rows by the given terms, returned as the permutation of row indexes
103
+ * in sorted order. Equal rows keep their input order, which is what makes ORDER BY
104
+ * deterministic and what lets a bounded top-N decide ties by arrival.
105
+ *
106
+ * Each term is sorted in turn: the first over every row, then each later term only within the
107
+ * runs of rows the earlier terms left tied. A term with unboxed keys is encoded once into
108
+ * 64-bit integers whose unsigned order is the term's order — direction and NULL placement
109
+ * folded in — and large ranges are radix-sorted on those bits while small ones merge. A term
110
+ * without unboxed keys merges under the generic comparison. Both kernels check for input that
111
+ * is already in order before doing anything else, since a scan often arrives sorted.
112
+ */
113
+ export function sortKeyIndexes(count, terms) {
114
+ if (count > 0xffffffff)
115
+ throw new RangeError("Too many rows to order");
116
+ const indexes = new Uint32Array(count);
117
+ for (let index = 0; index < count; index += 1)
118
+ indexes[index] = index;
119
+ if (count < 2 || terms.length === 0)
120
+ return indexes;
121
+ const sorter = new KeySorter(count, terms);
122
+ sorter.sortRange(indexes, 0, count, 0);
123
+ return indexes;
124
+ }
125
+ /** Ranges at least this long radix-sort; shorter ones merge, where the constant factor wins. */
126
+ const RADIX_MIN_ROWS = 2048;
127
+ const RADIX_DIGIT_BITS = 11;
128
+ const RADIX_BUCKETS = 1 << RADIX_DIGIT_BITS;
129
+ /** Ranges at most this long insertion-sort, which is what a merge bottoms out in anyway. */
130
+ const INSERTION_MAX_ROWS = 16;
131
+ const UINT32_MAX = 0xffffffff;
132
+ const LITTLE_ENDIAN = new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
133
+ const HI = LITTLE_ENDIAN ? 1 : 0;
134
+ const LO = 1 - HI;
135
+ class KeySorter {
136
+ #count;
137
+ #terms;
138
+ #scratch;
139
+ /** Per term, lazily: the encoded 64-bit keys as (lo, hi) word pairs, when the term has them. */
140
+ #encoded;
141
+ #comparators;
142
+ #counts;
143
+ constructor(count, terms) {
144
+ this.#count = count;
145
+ this.#terms = terms;
146
+ this.#scratch = new Uint32Array(count);
147
+ this.#encoded = new Array(terms.length);
148
+ this.#comparators = new Array(terms.length);
149
+ }
150
+ /** Sorts `indexes[start, end)` by term `term` and every term after it. */
151
+ sortRange(indexes, start, end, term) {
152
+ const spec = this.#terms[term];
153
+ if (spec === undefined || end - start < 2)
154
+ return;
155
+ const encoded = this.#encodedKeys(term);
156
+ if (encoded === undefined) {
157
+ const compare = this.#comparator(term);
158
+ this.#mergeSort(indexes, start, end, compare);
159
+ if (term + 1 < this.#terms.length) {
160
+ let runStart = start;
161
+ for (let index = start + 1; index <= end; index += 1) {
162
+ if (index < end && compare(indexes[index - 1] ?? 0, indexes[index] ?? 0) === 0)
163
+ continue;
164
+ if (index - runStart > 1)
165
+ this.sortRange(indexes, runStart, index, term + 1);
166
+ runStart = index;
167
+ }
168
+ }
169
+ return;
170
+ }
171
+ this.#sortEncoded(indexes, start, end, encoded, term);
172
+ if (term + 1 < this.#terms.length) {
173
+ let runStart = start;
174
+ let previous = indexes[start] ?? 0;
175
+ for (let index = start + 1; index <= end; index += 1) {
176
+ const current = indexes[index] ?? 0;
177
+ if (index < end &&
178
+ encoded[current * 2 + HI] === encoded[previous * 2 + HI] &&
179
+ encoded[current * 2 + LO] === encoded[previous * 2 + LO]) {
180
+ previous = current;
181
+ continue;
182
+ }
183
+ if (index - runStart > 1)
184
+ this.sortRange(indexes, runStart, index, term + 1);
185
+ runStart = index;
186
+ previous = current;
187
+ }
188
+ }
189
+ }
190
+ #sortEncoded(indexes, start, end, encoded, term) {
191
+ const length = end - start;
192
+ if (length < RADIX_MIN_ROWS) {
193
+ this.#mergeSort(indexes, start, end, this.#comparator(term));
194
+ return;
195
+ }
196
+ // One pass reads everything the radix needs to know: whether the range is already in
197
+ // order, in which case there is nothing to do, and which bits vary across it, so the passes
198
+ // over constant digits — most of them, for integers and short decimals — are skipped.
199
+ let orLo = 0;
200
+ let andLo = UINT32_MAX;
201
+ let orHi = 0;
202
+ let andHi = UINT32_MAX;
203
+ let ordered = true;
204
+ let previousLo = 0;
205
+ let previousHi = 0;
206
+ for (let index = start; index < end; index += 1) {
207
+ const row = (indexes[index] ?? 0) * 2;
208
+ const lo = encoded[row + LO] ?? 0;
209
+ const hi = encoded[row + HI] ?? 0;
210
+ orLo |= lo;
211
+ andLo &= lo;
212
+ orHi |= hi;
213
+ andHi &= hi;
214
+ if (ordered && index > start && (hi < previousHi || (hi === previousHi && lo < previousLo))) {
215
+ ordered = false;
216
+ }
217
+ previousLo = lo;
218
+ previousHi = hi;
219
+ }
220
+ if (ordered)
221
+ return;
222
+ const varying = [(orLo ^ andLo) >>> 0, (orHi ^ andHi) >>> 0];
223
+ const counts = (this.#counts ??= new Uint32Array(RADIX_BUCKETS));
224
+ let source = indexes;
225
+ let target = this.#scratch;
226
+ for (let pass = 0; pass < 6; pass += 1) {
227
+ const word = pass < 3 ? LO : HI;
228
+ const shift = (pass % 3) * RADIX_DIGIT_BITS;
229
+ const mask = pass % 3 === 2 ? (1 << (32 - 2 * RADIX_DIGIT_BITS)) - 1 : RADIX_BUCKETS - 1;
230
+ if (((varying[pass < 3 ? 0 : 1] ?? 0) & (mask << shift)) === 0)
231
+ continue;
232
+ counts.fill(0);
233
+ for (let index = start; index < end; index += 1) {
234
+ const digit = ((encoded[(source[index] ?? 0) * 2 + word] ?? 0) >>> shift) & mask;
235
+ counts[digit] = (counts[digit] ?? 0) + 1;
236
+ }
237
+ let offset = start;
238
+ for (let digit = 0; digit <= mask; digit += 1) {
239
+ const bucket = counts[digit] ?? 0;
240
+ counts[digit] = offset;
241
+ offset += bucket;
242
+ }
243
+ for (let index = start; index < end; index += 1) {
244
+ const row = source[index] ?? 0;
245
+ const digit = ((encoded[row * 2 + word] ?? 0) >>> shift) & mask;
246
+ const slot = counts[digit] ?? 0;
247
+ target[slot] = row;
248
+ counts[digit] = slot + 1;
249
+ }
250
+ const held = source;
251
+ source = target;
252
+ target = held;
253
+ }
254
+ if (source !== indexes)
255
+ indexes.set(source.subarray(start, end), start);
256
+ }
257
+ /**
258
+ * Stable bottom-up merge over `indexes[start, end)`. Blocks begin as insertion-sorted runs,
259
+ * and a merge whose halves are already in order — the whole input, when it arrives sorted —
260
+ * is a copy rather than a merge.
261
+ */
262
+ #mergeSort(indexes, start, end, compare) {
263
+ const length = end - start;
264
+ for (let blockStart = start; blockStart < end; blockStart += INSERTION_MAX_ROWS) {
265
+ const blockEnd = Math.min(blockStart + INSERTION_MAX_ROWS, end);
266
+ for (let index = blockStart + 1; index < blockEnd; index += 1) {
267
+ const row = indexes[index] ?? 0;
268
+ let position = index;
269
+ while (position > blockStart && compare(indexes[position - 1] ?? 0, row) > 0) {
270
+ indexes[position] = indexes[position - 1] ?? 0;
271
+ position -= 1;
272
+ }
273
+ indexes[position] = row;
274
+ }
275
+ }
276
+ if (length <= INSERTION_MAX_ROWS)
277
+ return;
278
+ const scratch = this.#scratch;
279
+ let source = indexes;
280
+ let target = scratch;
281
+ for (let width = INSERTION_MAX_ROWS; width < length; width *= 2) {
282
+ for (let left = start; left < end; left += width * 2) {
283
+ const middle = Math.min(left + width, end);
284
+ const right = Math.min(left + width * 2, end);
285
+ if (middle >= right || compare(source[middle - 1] ?? 0, source[middle] ?? 0) <= 0) {
286
+ target.set(source.subarray(left, right), left);
287
+ continue;
288
+ }
289
+ let leftIndex = left;
290
+ let rightIndex = middle;
291
+ for (let output = left; output < right; output += 1) {
292
+ if (rightIndex >= right ||
293
+ (leftIndex < middle && compare(source[leftIndex] ?? 0, source[rightIndex] ?? 0) <= 0)) {
294
+ target[output] = source[leftIndex] ?? 0;
295
+ leftIndex += 1;
296
+ }
297
+ else {
298
+ target[output] = source[rightIndex] ?? 0;
299
+ rightIndex += 1;
300
+ }
301
+ }
302
+ }
303
+ const held = source;
304
+ source = target;
305
+ target = held;
306
+ }
307
+ if (source !== indexes)
308
+ indexes.set(source.subarray(start, end), start);
309
+ }
310
+ /**
311
+ * The term's keys as 64-bit unsigned integers whose order is the term's order, or undefined
312
+ * for a term without unboxed keys. A float's bits already order like the float once the sign
313
+ * is folded (flip every bit of a negative, the sign bit of a positive); NaN is pinned just
314
+ * past +Infinity and signed zero collapses to +0, which is where compareSqlValues puts them.
315
+ * DESC inverts the non-null keys, and NULL takes the end its placement names — the low end
316
+ * by default, which the inversion moves to the high end for DESC, or the end an explicit
317
+ * NULLS FIRST/LAST asks for regardless of direction.
318
+ */
319
+ #encodedKeys(term) {
320
+ const cached = this.#encoded[term];
321
+ if (cached !== undefined)
322
+ return cached;
323
+ const spec = this.#terms[term];
324
+ const numbers = spec?.column.numbers;
325
+ const nulls = spec?.column.nulls;
326
+ if (spec === undefined || numbers === undefined || nulls === undefined)
327
+ return undefined;
328
+ const count = this.#count;
329
+ const buffer = new ArrayBuffer(count * 8);
330
+ const floats = new Float64Array(buffer);
331
+ const words = new Uint32Array(buffer);
332
+ const nullWord = (spec.nulls === undefined ? !spec.descending : spec.nulls === "first")
333
+ ? 0
334
+ : UINT32_MAX;
335
+ const flip = spec.descending ? UINT32_MAX : 0;
336
+ for (let index = 0; index < count; index += 1) {
337
+ const lo = index * 2 + LO;
338
+ const hi = index * 2 + HI;
339
+ if (nulls[index] === 1) {
340
+ words[lo] = nullWord;
341
+ words[hi] = nullWord;
342
+ continue;
343
+ }
344
+ const value = numbers[index] ?? 0;
345
+ if (value !== value) {
346
+ words[lo] = flip;
347
+ words[hi] = (0xfff80000 ^ flip) >>> 0;
348
+ continue;
349
+ }
350
+ // Adding +0 turns -0 into +0 and leaves every other value alone.
351
+ floats[index] = value + 0;
352
+ const rawHi = words[hi] ?? 0;
353
+ if ((rawHi & 0x80000000) !== 0) {
354
+ words[lo] = (~(words[lo] ?? 0) ^ flip) >>> 0;
355
+ words[hi] = (~rawHi ^ flip) >>> 0;
356
+ }
357
+ else {
358
+ words[lo] = ((words[lo] ?? 0) ^ flip) >>> 0;
359
+ words[hi] = ((rawHi | 0x80000000) ^ flip) >>> 0;
360
+ }
361
+ }
362
+ this.#encoded[term] = words;
363
+ return words;
364
+ }
365
+ /** The term's order as a comparison, for the ranges too small to radix and the generic terms. */
366
+ #comparator(term) {
367
+ const cached = this.#comparators[term];
368
+ if (cached !== undefined)
369
+ return cached;
370
+ const spec = this.#terms[term];
371
+ if (spec === undefined)
372
+ throw new Error("Order term is missing");
373
+ const encoded = this.#encodedKeys(term);
374
+ let compare;
375
+ if (encoded !== undefined) {
376
+ compare = (left, right) => {
377
+ const leftHi = encoded[left * 2 + HI] ?? 0;
378
+ const rightHi = encoded[right * 2 + HI] ?? 0;
379
+ if (leftHi !== rightHi)
380
+ return leftHi < rightHi ? -1 : 1;
381
+ const leftLo = encoded[left * 2 + LO] ?? 0;
382
+ const rightLo = encoded[right * 2 + LO] ?? 0;
383
+ return leftLo === rightLo ? 0 : leftLo < rightLo ? -1 : 1;
384
+ };
385
+ }
386
+ else {
387
+ const { column, descending } = spec;
388
+ const nullPlacement = spec.nulls === undefined ? 0 : spec.nulls === "first" ? 1 : -1;
389
+ compare = (left, right) => {
390
+ if (nullPlacement !== 0) {
391
+ // An explicit placement is absolute: direction must not negate it.
392
+ const leftNull = column.isNull(left);
393
+ const rightNull = column.isNull(right);
394
+ if (leftNull || rightNull) {
395
+ return leftNull && rightNull ? 0 : (leftNull ? -1 : 1) * nullPlacement;
396
+ }
397
+ }
398
+ const comparison = column.compare(left, right);
399
+ return descending ? -comparison : comparison;
400
+ };
401
+ }
402
+ this.#comparators[term] = compare;
403
+ return compare;
404
+ }
405
+ }
60
406
  //# sourceMappingURL=sort-keys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sort-keys.js","sourceRoot":"","sources":["../../src/engine/sort-keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sort-keys.js","sourceRoot":"","sources":["../../src/engine/sort-keys.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,17 @@ export interface PreparedVectorQuery {
52
52
  }
53
53
  export interface QuerySpillStore {
54
54
  putPage(ownerId: string, runId: string, pageIndex: number, bytes: Uint8Array): Promise<void>;
55
+ /**
56
+ * Optional: several pages in one storage round trip. The executor batches only pages it has
57
+ * already materialized (chunked, so the batch never grows the spill's own memory footprint)
58
+ * and falls back to per-page writes when this is absent.
59
+ */
60
+ putPages?(pages: ReadonlyArray<{
61
+ ownerId: string;
62
+ runId: string;
63
+ pageIndex: number;
64
+ bytes: Uint8Array;
65
+ }>): Promise<void>;
55
66
  getPage(ownerId: string, runId: string, pageIndex: number): Promise<Uint8Array | undefined>;
56
67
  removeRun(ownerId: string, runId: string): Promise<void>;
57
68
  removeOwner(ownerId: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../src/engine/vector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../src/engine/vector.ts"],"names":[],"mappings":"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"}