@quereus/quereus 4.14.0 → 4.16.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.
Files changed (84) hide show
  1. package/dist/src/core/statement.d.ts +30 -0
  2. package/dist/src/core/statement.d.ts.map +1 -1
  3. package/dist/src/core/statement.js +49 -0
  4. package/dist/src/core/statement.js.map +1 -1
  5. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  6. package/dist/src/emit/ast-stringify.js +0 -4
  7. package/dist/src/emit/ast-stringify.js.map +1 -1
  8. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  9. package/dist/src/func/builtins/explain.js +88 -61
  10. package/dist/src/func/builtins/explain.js.map +1 -1
  11. package/dist/src/func/registration.d.ts +7 -0
  12. package/dist/src/func/registration.d.ts.map +1 -1
  13. package/dist/src/func/registration.js +7 -0
  14. package/dist/src/func/registration.js.map +1 -1
  15. package/dist/src/index.d.ts +4 -1
  16. package/dist/src/index.d.ts.map +1 -1
  17. package/dist/src/index.js +2 -1
  18. package/dist/src/index.js.map +1 -1
  19. package/dist/src/parser/ast.d.ts +0 -2
  20. package/dist/src/parser/ast.d.ts.map +1 -1
  21. package/dist/src/parser/parser.d.ts +1 -0
  22. package/dist/src/parser/parser.d.ts.map +1 -1
  23. package/dist/src/parser/parser.js +29 -28
  24. package/dist/src/parser/parser.js.map +1 -1
  25. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  26. package/dist/src/planner/nodes/table-access-nodes.js +31 -7
  27. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  28. package/dist/src/planner/stats/analyze.d.ts.map +1 -1
  29. package/dist/src/planner/stats/analyze.js +9 -3
  30. package/dist/src/planner/stats/analyze.js.map +1 -1
  31. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  32. package/dist/src/runtime/emit/analyze.js +1 -2
  33. package/dist/src/runtime/emit/analyze.js.map +1 -1
  34. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  35. package/dist/src/runtime/emit/dml-executor.js +23 -0
  36. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  37. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  38. package/dist/src/runtime/emit/scan.js +52 -9
  39. package/dist/src/runtime/emit/scan.js.map +1 -1
  40. package/dist/src/runtime/emit/set-object-tags.js +4 -4
  41. package/dist/src/runtime/emit/set-object-tags.js.map +1 -1
  42. package/dist/src/runtime/emitters.d.ts.map +1 -1
  43. package/dist/src/runtime/emitters.js +6 -0
  44. package/dist/src/runtime/emitters.js.map +1 -1
  45. package/dist/src/runtime/parallel-driver.d.ts +5 -0
  46. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  47. package/dist/src/runtime/parallel-driver.js +6 -0
  48. package/dist/src/runtime/parallel-driver.js.map +1 -1
  49. package/dist/src/runtime/scheduler.d.ts +9 -0
  50. package/dist/src/runtime/scheduler.d.ts.map +1 -1
  51. package/dist/src/runtime/scheduler.js +27 -11
  52. package/dist/src/runtime/scheduler.js.map +1 -1
  53. package/dist/src/runtime/types.d.ts +19 -0
  54. package/dist/src/runtime/types.d.ts.map +1 -1
  55. package/dist/src/runtime/types.js.map +1 -1
  56. package/dist/src/runtime/work-counters.d.ts +180 -0
  57. package/dist/src/runtime/work-counters.d.ts.map +1 -0
  58. package/dist/src/runtime/work-counters.js +210 -0
  59. package/dist/src/runtime/work-counters.js.map +1 -0
  60. package/dist/src/vtab/alter-event-shape.d.ts +35 -0
  61. package/dist/src/vtab/alter-event-shape.d.ts.map +1 -0
  62. package/dist/src/vtab/alter-event-shape.js +47 -0
  63. package/dist/src/vtab/alter-event-shape.js.map +1 -0
  64. package/dist/src/vtab/best-access-plan.d.ts +34 -0
  65. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  66. package/dist/src/vtab/best-access-plan.js +64 -0
  67. package/dist/src/vtab/best-access-plan.js.map +1 -1
  68. package/dist/src/vtab/index-descriptor.d.ts +9 -0
  69. package/dist/src/vtab/index-descriptor.d.ts.map +1 -1
  70. package/dist/src/vtab/index-descriptor.js +15 -0
  71. package/dist/src/vtab/index-descriptor.js.map +1 -1
  72. package/dist/src/vtab/memory/layer/manager.d.ts +11 -9
  73. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  74. package/dist/src/vtab/memory/layer/manager.js +12 -43
  75. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  76. package/dist/src/vtab/memory/module.d.ts +18 -8
  77. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  78. package/dist/src/vtab/memory/module.js +168 -49
  79. package/dist/src/vtab/memory/module.js.map +1 -1
  80. package/dist/src/vtab/memory/table.d.ts +27 -3
  81. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  82. package/dist/src/vtab/memory/table.js +28 -59
  83. package/dist/src/vtab/memory/table.js.map +1 -1
  84. package/package.json +6 -3
@@ -5,8 +5,11 @@ import { MemoryTable } from './table.js';
5
5
  import { MemoryTableManager } from './layer/manager.js';
6
6
  import { MemoryVirtualTableConnection } from './connection.js';
7
7
  import { createMemoryTableLoggers } from './utils/logging.js';
8
- import { AccessPlanBuilder, equalitySeekKeyCount, isMultiValueEquality, validateAccessPlan } from '../best-access-plan.js';
8
+ import { AccessPlanBuilder, equalitySeekKeyCount, isMultiValueEquality, nullSafeOrderingPrefixLength, validateAccessPlan } from '../best-access-plan.js';
9
+ import { alterEventShape } from '../alter-event-shape.js';
9
10
  import { buildAdvertisementsFromTags } from '../../schema/mapping-advertisement-tags.js';
11
+ import { PRIMARY_INDEX_NAME } from '../index-descriptor.js';
12
+ import { combineConjunctive } from '../../planner/stats/selectivity-combine.js';
10
13
  const logger = createMemoryTableLoggers('module');
11
14
  const EMPTY_COLUMN_SET = new Set();
12
15
  /**
@@ -24,6 +27,102 @@ const SORT_COST_PER_COMPARISON = 0.1;
24
27
  * FILTER_PER_ROW constant used elsewhere in the cost model.
25
28
  */
26
29
  const RESIDUAL_FILTER_COST_PER_ROW = 0.2;
30
+ /**
31
+ * Fraction of the table a single equality seek key is assumed to match when no
32
+ * per-column statistics can answer it.
33
+ *
34
+ * Deliberately the store module's `ARM_SELECTIVITY.eq`
35
+ * (`packages/quereus-store/src/common/store-module-access-plan.ts`) so the two backends
36
+ * price an un-analyzed equality identically. On the un-analyzed 1000-row default it also
37
+ * reproduces the flat 100 rows the physical seek node used to report unconditionally,
38
+ * which is why adopting a real estimate moves almost no plan on an un-analyzed schema.
39
+ */
40
+ const EQ_SELECTIVITY_WITHOUT_STATS = 0.1;
41
+ /** True when each seek key on this index matches at most one row. */
42
+ function isUniqueIndex(index) {
43
+ // `gatherAvailableIndexes` builds the primary-key pseudo-index without `unique: true`,
44
+ // so the PK is recognised by name rather than by the flag.
45
+ return index.name === PRIMARY_INDEX_NAME || (index.unique ?? false);
46
+ }
47
+ /**
48
+ * The `ANALYZE`-collected statistics for the table column at `colIdx`, or undefined when
49
+ * the table has none or the column is not covered.
50
+ *
51
+ * `columnStats` is keyed by LOWERCASE COLUMN NAME while this file works in column index,
52
+ * so the lookup goes index → current column name → stats. That direction is what keeps a
53
+ * post-`ANALYZE` `ALTER TABLE` safe: a RENAMED column's current name is absent from the
54
+ * map, and a DROPPED column shifts later indexes onto their own current names — a miss or
55
+ * the right entry, never a neighbour's numbers. Mirrors the store module's `columnStatsFor`.
56
+ */
57
+ function columnStatsFor(tableInfo, stats, colIdx) {
58
+ const name = tableInfo.columns[colIdx]?.name;
59
+ return name === undefined ? undefined : stats.columnStats.get(name.toLowerCase());
60
+ }
61
+ /**
62
+ * The fraction of the table ONE equality tuple over `eqCols` is expected to match.
63
+ *
64
+ * Every formula here is the engine's `CatalogStatsProvider.estimateLeaf`: equality is
65
+ * `1 / max(distinctCount, 1)` and the factors combine through the engine's own
66
+ * `combineConjunctive` (damped independence), never a restated product. A seek's
67
+ * advertised row count and the estimate a residual `Filter` above it would carry describe
68
+ * the same row set — two different numbers have the optimizer comparing two different
69
+ * worlds. The store module follows the same rule, so the two backends agree.
70
+ */
71
+ function equalityTupleSelectivity(tableInfo, eqCols) {
72
+ const stats = tableInfo.statistics;
73
+ // A snapshot taken while the table was EMPTY describes nothing — every `distinctCount`
74
+ // is 0 — and applying it would read `1 / max(0, 1)` as "this equality matches EVERY
75
+ // row". Treated as no statistics at all, as the store module and the engine's own
76
+ // `estimatePredicateSelectivity` both do.
77
+ if (!stats || stats.rowCount <= 0)
78
+ return EQ_SELECTIVITY_WITHOUT_STATS;
79
+ const factors = [];
80
+ for (const colIdx of eqCols) {
81
+ const colStats = columnStatsFor(tableInfo, stats, colIdx);
82
+ // One uncovered equality column falls back WHOLESALE rather than mixing a measured
83
+ // factor with the shape constant — again the store module's rule.
84
+ if (!colStats)
85
+ return EQ_SELECTIVITY_WITHOUT_STATS;
86
+ factors.push(1 / Math.max(colStats.distinctCount, 1));
87
+ }
88
+ return factors.length > 0 ? combineConjunctive(factors) : EQ_SELECTIVITY_WITHOUT_STATS;
89
+ }
90
+ /**
91
+ * Rows an equality seek is expected to MATCH — which is not the number of seek keys it
92
+ * issues. `inCardinality` counts KEYS (1 for `k = 5`, 3 for `k in (1, 2, 3)`); on a
93
+ * NON-unique index each key matches however many rows share it, so a column with 4
94
+ * distinct values over 2000 rows returns 500 rows for one key.
95
+ *
96
+ * NOTE: this module has no seek-versus-scan veto (the store's `computeBestAccessPlan` has
97
+ * one), so an equality seek matching a large fraction of the table still prices below a
98
+ * full scan — `0.5 + rows * 0.3` against `rows * 1.0`. Harmless while the estimate is the
99
+ * {@link EQ_SELECTIVITY_WITHOUT_STATS} shape constant, and the row count advertised is now
100
+ * honest either way. If a fat seek over an ANALYZEd table ever shows up as a slow plan,
101
+ * the veto is the fix, not a smaller constant.
102
+ *
103
+ * NOTE: `inCardinality` counts the seek keys the module was OFFERED, not the ones the
104
+ * engine will issue — `rule-select-access-path` drops NULL-bearing tuples and collapses
105
+ * duplicates afterwards, so `k in (1, 1, 1)` is priced and estimated as three keys and
106
+ * seeks one. Over-estimating is the safe direction and the cost model has always had the
107
+ * same asymmetry; if a duplicate-heavy or NULL-heavy `IN` ever needs the exact count, the
108
+ * reduction belongs in the module rather than a second copy of it here.
109
+ *
110
+ * NOTE: without per-column statistics the shape constant saturates this estimate at ten
111
+ * seek keys (`10 × 0.1N` is the whole table), which is what makes the ordering comparison
112
+ * in {@link MemoryTableModule.adjustPlanForOrdering} prefer a plain ordered index walk
113
+ * over seek-then-sort from roughly nine keys up. Correct rows either way, and `ANALYZE`
114
+ * resolves it; if a multi-seek with an `ORDER BY` on the seek column shows up as a slow
115
+ * plan on an un-analyzed table, that crossover is where to look.
116
+ */
117
+ function estimateEqualityRows(tableInfo, index, eqCols, inCardinality, estimatedTableSize) {
118
+ const perKey = isUniqueIndex(index)
119
+ ? 1
120
+ : Math.max(1, Math.floor(estimatedTableSize * equalityTupleSelectivity(tableInfo, eqCols)));
121
+ // A seek cannot return more rows than the table holds. `Math.max(1, …)` guards the
122
+ // `rows: 0` fold in `rule-select-access-path.selectPhysicalNode`, which replaces a
123
+ // fully-handled zero-row access with an `EmptyResultNode`.
124
+ return Math.max(1, Math.min(estimatedTableSize, inCardinality * perKey));
125
+ }
27
126
  /**
28
127
  * Estimate the cost of an external O(n log n) sort over `rows` rows. Returns
29
128
  * 0 for ≤1 rows where no sort is required.
@@ -311,7 +410,7 @@ export class MemoryTableModule {
311
410
  let bestPlan;
312
411
  // Try to find an index-based plan
313
412
  for (const index of availableIndexes) {
314
- const indexPlan = this.evaluateIndexAccess(index, request, estimatedTableSize);
413
+ const indexPlan = this.evaluateIndexAccess(tableInfo, index, request, estimatedTableSize);
315
414
  if (!bestPlan || indexPlan.cost < bestPlan.cost) {
316
415
  bestPlan = indexPlan;
317
416
  }
@@ -325,7 +424,7 @@ export class MemoryTableModule {
325
424
  }
326
425
  // Check if we can satisfy ordering requirements
327
426
  if (request.requiredOrdering && request.requiredOrdering.length > 0) {
328
- bestPlan = this.adjustPlanForOrdering(bestPlan, request, availableIndexes, estimatedTableSize);
427
+ bestPlan = this.adjustPlanForOrdering(tableInfo, bestPlan, request, availableIndexes, estimatedTableSize);
329
428
  }
330
429
  // B-tree scans inherently produce rows in PK order. Advertise this
331
430
  // when there is no explicit ORDER BY so the join rule can pick merge join.
@@ -334,17 +433,27 @@ export class MemoryTableModule {
334
433
  if (!bestPlan.providesOrdering
335
434
  && !(request.requiredOrdering && request.requiredOrdering.length > 0)
336
435
  && tableInfo.primaryKeyDefinition && tableInfo.primaryKeyDefinition.length > 0) {
337
- const usesSecondaryIndex = bestPlan.indexName && bestPlan.indexName !== '_primary_';
436
+ const usesSecondaryIndex = bestPlan.indexName && bestPlan.indexName !== PRIMARY_INDEX_NAME;
338
437
  if (!usesSecondaryIndex) {
339
- const pkOrdering = tableInfo.primaryKeyDefinition.map(col => ({
438
+ // This bare advertisement is a claim like any other: a consumer that trusts it
439
+ // (merge join) reads it under the engine's NULLs-FIRST-for-both-directions
440
+ // rule, while the DESC walk emits NULLs LAST. Truncate at the first member a
441
+ // NULL could reach — the store's `buildPkOrderingAdvertisement` gates its twin
442
+ // the same way. Pins are left empty: an equality on a PK member is already
443
+ // visible to the helper as a NULL-excluding entry in `request.filters`.
444
+ const pk = tableInfo.primaryKeyDefinition;
445
+ const claimablePrefix = nullSafeOrderingPrefixLength(tableInfo, request, pk, pk.length, EMPTY_COLUMN_SET);
446
+ const pkOrdering = pk.slice(0, claimablePrefix).map(col => ({
340
447
  columnIndex: col.index,
341
448
  desc: !!col.desc
342
449
  }));
343
- bestPlan = {
344
- ...bestPlan,
345
- providesOrdering: pkOrdering,
346
- orderingIndexName: bestPlan.orderingIndexName ?? '_primary_'
347
- };
450
+ if (pkOrdering.length > 0) {
451
+ bestPlan = {
452
+ ...bestPlan,
453
+ providesOrdering: pkOrdering,
454
+ orderingIndexName: bestPlan.orderingIndexName ?? PRIMARY_INDEX_NAME
455
+ };
456
+ }
348
457
  }
349
458
  }
350
459
  // Prefer plans that fully handle at least one filter over pure full scans when costs tie
@@ -374,7 +483,7 @@ export class MemoryTableModule {
374
483
  // per-row ordering.
375
484
  // TODO: supportsOrdinalSeek is deferred for memory-table — the layered
376
485
  // store's scan does not cheaply support O(log N) seek to the kth row.
377
- const advertisement = this.buildMonotonicAdvertisement(bestPlan, request, availableIndexes);
486
+ const advertisement = this.buildMonotonicAdvertisement(tableInfo, bestPlan, request, availableIndexes);
378
487
  if (advertisement.monotonicOn) {
379
488
  bestPlan = { ...bestPlan, ...advertisement };
380
489
  }
@@ -384,8 +493,14 @@ export class MemoryTableModule {
384
493
  * Compute the monotonic-ordering advertisement for a chosen access plan.
385
494
  * Returns an empty object when the path is non-monotonic (multi-IN multi-seek,
386
495
  * OR_RANGE multi-range, or a single-row equality seek).
496
+ *
497
+ * Also empty when the leading column is a DESC key a NULL could reach: a
498
+ * `direction: 'desc'` claim asserts the same physical order `providesOrdering` would,
499
+ * and this module's DESC walk emits NULLs LAST while the engine's ORDER BY places them
500
+ * FIRST — see {@link nullSafeOrderingPrefixLength}. `supportsAsofRight` implies
501
+ * `monotonicOn`, so the two are dropped together.
387
502
  */
388
- buildMonotonicAdvertisement(bestPlan, request, availableIndexes) {
503
+ buildMonotonicAdvertisement(tableInfo, bestPlan, request, availableIndexes) {
389
504
  // Multi-value IN multi-seek visits values in seek-key order (a runtime-valued
390
505
  // set included); OR_RANGE concatenates disjoint ranges. Neither emits in
391
506
  // monotonic order.
@@ -413,12 +528,17 @@ export class MemoryTableModule {
413
528
  if (trailingNonBound.length === 0)
414
529
  return {}; // single-row equality seek
415
530
  const leadingCol = trailingNonBound[0];
531
+ // A nullable DESC leading column walks its NULLs to the END; the engine's ORDER BY
532
+ // wants them FIRST. `equalityBound` is the pinned set the helper needs (a pinned
533
+ // column never reached this point anyway — it was filtered out above).
534
+ if (nullSafeOrderingPrefixLength(tableInfo, request, [leadingCol], 1, equalityBound) === 0) {
535
+ return {};
536
+ }
416
537
  // Strict iff the leading non-bound column alone determines uniqueness within
417
538
  // the path: a unique index (PK or declared unique) where the leading column
418
539
  // is the sole remaining unbound key. (For composite PK with a free leading
419
540
  // column, the leading column may have duplicate values across rows.)
420
- const isUnique = indexName === '_primary_' || (usedIndex.unique ?? false);
421
- const strict = isUnique && trailingNonBound.length === 1;
541
+ const strict = isUniqueIndex(usedIndex) && trailingNonBound.length === 1;
422
542
  // Direction follows the index's natural sort order, but if the planner
423
543
  // produced an explicit providesOrdering covering this column, honor that
424
544
  // (adjustPlanForOrdering may have selected a descending ORDER BY against
@@ -434,7 +554,7 @@ export class MemoryTableModule {
434
554
  /**
435
555
  * Evaluate access via a specific index
436
556
  */
437
- evaluateIndexAccess(index, request, estimatedTableSize) {
557
+ evaluateIndexAccess(tableInfo, index, request, estimatedTableSize) {
438
558
  const indexCols = index.columns;
439
559
  if (indexCols.length === 0) {
440
560
  return AccessPlanBuilder.fullScan(estimatedTableSize)
@@ -452,8 +572,18 @@ export class MemoryTableModule {
452
572
  // small memory table prices optimistically. Harmless while every seek-key list is a
453
573
  // literal the author typed; if runtime-valued IN sets start arriving with large
454
574
  // ceilings, add the positioning term so the two modules stay comparable.
575
+ //
576
+ // COST stays keyed to `inCardinality` — the number of seek KEYS, which is what the
577
+ // work scales with — while `rows` reports what the seek MATCHES. `eqMatch` derives
578
+ // both from one argument, so the row count is overridden separately. Deriving the
579
+ // cost from the matched-row count instead was measured and rejected: it raises a
580
+ // pushed single-key equality seek from 1.8 to 31.5, which moves the baseline
581
+ // `rule-key-set-seek` reads (`filterInfo.indexInfoOutput.estimatedCost`) and stops
582
+ // the key-set rewrite firing at all. Pricing a fat seek honestly is a real and
583
+ // separate question.
455
584
  return AccessPlanBuilder
456
585
  .eqMatch(inCardinality)
586
+ .setRows(estimateEqualityRows(tableInfo, index, seekCols, inCardinality, estimatedTableSize))
457
587
  .setHandledFilters(equalityMatches.handledFilters)
458
588
  .setIsSet(!isMultiSeek)
459
589
  .setIndexName(index.name)
@@ -633,7 +763,7 @@ export class MemoryTableModule {
633
763
  * correctness bug is caught at the boundary regardless of which module
634
764
  * emits the plan.
635
765
  */
636
- adjustPlanForOrdering(plan, request, availableIndexes, estimatedTableSize) {
766
+ adjustPlanForOrdering(tableInfo, plan, request, availableIndexes, estimatedTableSize) {
637
767
  // Columns bound by an equality predicate are constants for this scan and
638
768
  // therefore contribute no ordering information — they can be skipped when
639
769
  // aligning an index against the required ordering.
@@ -647,7 +777,7 @@ export class MemoryTableModule {
647
777
  ? availableIndexes.find(idx => idx.name === plan.indexName)
648
778
  : undefined;
649
779
  const filterSatisfies = filterIndex
650
- ? this.indexSatisfiesOrdering(filterIndex, request.requiredOrdering, equalityCols)
780
+ ? this.indexSatisfiesOrdering(tableInfo, request, filterIndex, request.requiredOrdering, equalityCols)
651
781
  : false;
652
782
  const orderingColumns = new Set(request.requiredOrdering.map(o => o.columnIndex));
653
783
  const usesOrRange = request.filters.some((f, i) => plan.handledFilters[i] && f.op === 'OR_RANGE');
@@ -673,7 +803,7 @@ export class MemoryTableModule {
673
803
  // Plan B: cheapest competing plan that walks an ordering-providing
674
804
  // index in its natural order (with any unpushable filters becoming
675
805
  // residuals). Returns undefined when no such index exists.
676
- const planB = this.evaluateOrderingOnlyPlans(request, availableIndexes, equalityCols, estimatedTableSize);
806
+ const planB = this.evaluateOrderingOnlyPlans(tableInfo, request, availableIndexes, equalityCols, estimatedTableSize);
677
807
  if (planB && planB.cost < planACost) {
678
808
  return planB;
679
809
  }
@@ -691,15 +821,15 @@ export class MemoryTableModule {
691
821
  * ordering scan over the index. Either way we add residual-filter cost
692
822
  * for filters left unhandled.
693
823
  */
694
- evaluateOrderingOnlyPlans(request, availableIndexes, equalityCols, estimatedTableSize) {
824
+ evaluateOrderingOnlyPlans(tableInfo, request, availableIndexes, equalityCols, estimatedTableSize) {
695
825
  let best;
696
826
  const orderingColumns = new Set(request.requiredOrdering.map(o => o.columnIndex));
697
827
  for (const index of availableIndexes) {
698
- if (!this.indexSatisfiesOrdering(index, request.requiredOrdering, equalityCols)) {
828
+ if (!this.indexSatisfiesOrdering(tableInfo, request, index, request.requiredOrdering, equalityCols)) {
699
829
  continue;
700
830
  }
701
831
  // See whether this index can also serve as a filter seek/range.
702
- const candidate = this.evaluateIndexAccess(index, request, estimatedTableSize);
832
+ const candidate = this.evaluateIndexAccess(tableInfo, index, request, estimatedTableSize);
703
833
  // A useful filter pattern that breaks ordering (multi-IN multi-seek — literal
704
834
  // or runtime-valued — on an ordering column, or OR_RANGE) cannot claim
705
835
  // ordering: a multi-seek visits the index in seek-key order, not column
@@ -748,6 +878,18 @@ export class MemoryTableModule {
748
878
  * keys. The per-column direction comparison still applies to the remaining
749
879
  * (unbound) suffix.
750
880
  *
881
+ * A match is additionally gated by {@link nullSafeOrderingPrefixLength}: this module's
882
+ * DESC walk negates the ascending comparator, and NULL is the lowest value, so a DESC
883
+ * column's NULLs come out LAST — while the engine's ORDER BY places them FIRST for
884
+ * both directions (`orderByNullResult`, util/comparison.ts). The gate is a plain
885
+ * boolean here rather than a truncation because both callers claim
886
+ * `request.requiredOrdering` VERBATIM, all or nothing: one unsafe DESC column anywhere
887
+ * in the matched key prefix means the whole index declines. Only the prefix actually
888
+ * consumed by the match is judged — a nullable DESC column sitting BEYOND it is not
889
+ * part of the claim and must not disqualify the index. The PK pseudo-index
890
+ * ({@link gatherAvailableIndexes}) flows through here too, so a nullable DESC
891
+ * primary-key member is covered with no `create index` involved.
892
+ *
751
893
  * NOTE: `OrderingSpec.nullsFirst` is not compared — nothing in the planner
752
894
  * populates it today, so every required spec leaves it undefined. If NULLS
753
895
  * FIRST/LAST ever reaches requiredOrdering, this must decline the index
@@ -755,7 +897,7 @@ export class MemoryTableModule {
755
897
  * `buildPkOrderingAdvertisement` already does), or the Sort gets elided
756
898
  * against a different NULL placement.
757
899
  */
758
- indexSatisfiesOrdering(index, requiredOrdering, equalityCols = EMPTY_COLUMN_SET) {
900
+ indexSatisfiesOrdering(tableInfo, request, index, requiredOrdering, equalityCols = EMPTY_COLUMN_SET) {
759
901
  let i = 0; // pointer into index.columns
760
902
  let j = 0; // pointer into requiredOrdering
761
903
  // Skip leading equality-bound index columns; they contribute no ordering.
@@ -781,13 +923,14 @@ export class MemoryTableModule {
781
923
  }
782
924
  return false;
783
925
  }
784
- return true;
926
+ // `i` is now the number of leading index columns the claim consumed.
927
+ return nullSafeOrderingPrefixLength(tableInfo, request, index.columns, i, equalityCols) === i;
785
928
  }
786
929
  gatherAvailableIndexes(tableInfo) {
787
930
  const availableIndexes = [];
788
931
  // Add pseudo-index for primary key
789
932
  const pkIndexSchema = {
790
- name: '_primary_',
933
+ name: PRIMARY_INDEX_NAME,
791
934
  columns: tableInfo.primaryKeyDefinition
792
935
  };
793
936
  availableIndexes.push(pkIndexSchema);
@@ -905,7 +1048,7 @@ export class MemoryTableModule {
905
1048
  // announce nothing. See `SchemaChangeInfo.ddl`; mirrors the store module's gate.
906
1049
  if (change.ddl !== undefined) {
907
1050
  this.eventEmitter?.emitSchemaChange?.({
908
- ...MemoryTableModule.alterEventShape(change),
1051
+ ...alterEventShape(change),
909
1052
  schemaName,
910
1053
  objectName: tableName,
911
1054
  ddl: change.ddl,
@@ -930,30 +1073,6 @@ export class MemoryTableModule {
930
1073
  columns: indexSchema.columns.map(col => `${col.index}${col.desc ? ' DESC' : ''}`)
931
1074
  });
932
1075
  }
933
- /**
934
- * The per-arm event shape of an ALTER TABLE announcement — `alter`/`column` naming the
935
- * touched column for the column arms (`drop`/`column` for DROP COLUMN), `alter`/`table`
936
- * for the whole-table ones. Matches what the engine's own no-emitter path reports for
937
- * the same statements (`runtime/emit/alter-table.ts`), so a subscriber sees the same
938
- * facts regardless of backend.
939
- */
940
- static alterEventShape(change) {
941
- switch (change.type) {
942
- case 'addColumn':
943
- return { type: 'alter', objectType: 'column', columnName: change.columnDef.name };
944
- case 'dropColumn':
945
- return { type: 'drop', objectType: 'column', columnName: change.columnName };
946
- case 'renameColumn':
947
- return { type: 'alter', objectType: 'column', columnName: change.newName, oldColumnName: change.oldName };
948
- case 'alterColumn':
949
- return { type: 'alter', objectType: 'column', columnName: change.columnName };
950
- case 'alterPrimaryKey':
951
- case 'addConstraint':
952
- case 'dropConstraint':
953
- case 'renameConstraint':
954
- return { type: 'alter', objectType: 'table' };
955
- }
956
- }
957
1076
  /**
958
1077
  * Drops an index from a memory table
959
1078
  */
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/vtab/memory/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/vtab/memory/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAY,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAG/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGzJ,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAGhF,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAElD,MAAM,gBAAgB,GAAwB,IAAI,GAAG,EAAU,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAErC;;;;GAIG;AACH,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEzC;;;;;;;;;GASG;AACH,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEzC,qEAAqE;AACrE,SAAS,aAAa,CAAC,KAAkB;IACxC,uFAAuF;IACvF,2DAA2D;IAC3D,OAAO,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,cAAc,CACtB,SAAsB,EACtB,KAAsB,EACtB,MAAc;IAEd,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IAC7C,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,wBAAwB,CAAC,SAAsB,EAAE,MAAyB;IAClF,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC;IACnC,uFAAuF;IACvF,oFAAoF;IACpF,kFAAkF;IAClF,0CAA0C;IAC1C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC;QAAE,OAAO,4BAA4B,CAAC;IAEvE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1D,mFAAmF;QACnF,kEAAkE;QAClE,IAAI,CAAC,QAAQ;YAAE,OAAO,4BAA4B,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC;AACxF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAS,oBAAoB,CAC5B,SAAsB,EACtB,KAAkB,EAClB,MAAyB,EACzB,aAAqB,EACrB,kBAA0B;IAE1B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7F,mFAAmF;IACnF,mFAAmF;IACnF,2DAA2D;IAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACrC,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACxB,OAAO,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC;AAC1D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,2BAA2B,CAAC,OAAuC;IAC3E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,MAAM;YAAE,SAAS;QACxB,IAAI,oBAAoB,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,iBAAiB;IACO;IAA7B,YAA6B,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;IAAG,CAAC;IAE5D,cAAc,CAAC,IAA4B;QAC1C,OAAO,IAAI,YAAY,4BAA4B;eAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC,OAAO,CAAC;IAC9D,CAAC;IAED,OAAO;QACN,MAAM,aAAa,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC7E,OAAO,IAAI,4BAA4B,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,gBAAgB,CAAC,IAA4B,EAAE,GAA6B;QAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,eAAe,CAAC,IAAoB,EAAE,cAAmC;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC5D,CAAC;IAED,aAAa,CAAC,IAA4B,EAAE,GAAuB;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,uEAAuE;QACvE,0EAA0E;QAC1E,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,uBAAuB,IAAI,OAAO,CAAC,SAAS,EAAE;YACnF,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,KAAK;YACnC,cAAc,EAAE,GAAG,CAAC,cAAc;SAClC,CAAC,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,IAA4B;QAC1C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,YAAY,CACrB,eAAe,IAAI,CAAC,YAAY,qCAAqC;kBAClE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,kCAAkC,EAC1F,UAAU,CAAC,QAAQ,CACnB,CAAC;QACH,CAAC;QACD,OAAQ,IAAqC,CAAC,mBAAmB,EAAE,CAAC;IACrE,CAAC;CACD;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IAC7B;;;;;;;;;;;;;;;;;;;OAmBG;IACM,eAAe,GAAG,iBAA0B,CAAC;IAEtD;;;;;;;;OAQG;IACM,qBAAqB,GAAG,IAAa,CAAC;IAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACM,qBAAqB,GAAG,IAAa,CAAC;IAE/B,MAAM,GAAoC,IAAI,GAAG,EAAE,CAAC;IAC5D,YAAY,CAAsB;IAE1C,YAAY,YAAiC;QAC5C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,eAAe;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,eAAe;QACd,OAAO;YACN,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,IAAI;YAChB,0EAA0E;YAC1E,4EAA4E;YAC5E,yEAAyE;YACzE,mBAAmB,EAAE,mBAAmB;SACxC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,GAAa,EAAE,WAAmB;QAC1D,OAAO,2BAA2B,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,GAAa,EAAE,UAAkB,EAAE,SAAiB;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5E,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAY,EAAE,WAAwB;QAClD,qCAAqC;QACrC,MAAM,QAAQ,GAAG,GAAG,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,YAAY,CAAC,iBAAiB,WAAW,CAAC,IAAI,+BAA+B,WAAW,CAAC,UAAU,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACtI,CAAC;QAED,qEAAqE;QACrE,MAAM,OAAO,GAAG,IAAI,kBAAkB,CACrC,EAAE,EACF,WAAW,CAAC,cAAc,EAC1B,WAAW,CAAC,UAAU,EACtB,WAAW,CAAC,IAAI,EAChB,WAAW,EACX,WAAW,CAAC,UAAU,IAAI,KAAK,EAC/B,IAAI,CAAC,YAAY,CACjB,CAAC;QAEF,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,IAAI,EAAE;YAClD,MAAM,EAAE,WAAW,CAAC,UAAU;YAC9B,QAAQ,EAAE,WAAW,CAAC,UAAU,IAAI,KAAK;SACzC,CAAC,CAAC;QAEH,kCAAkC;QAClC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjD,0EAA0E;QAC1E,4EAA4E;QAC5E,8EAA8E;QAC9E,sEAAsE;QACtE,sCAAsC;QACtC,IAAI,CAAC,YAAY,EAAE,gBAAgB,EAAE,CAAC;YACrC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,OAAO;YACnB,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,UAAU,EAAE,WAAW,CAAC,IAAI;YAC5B,GAAG,EAAE,gBAAgB,CAAC,WAAW,CAAC;SAClC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAY,EAAE,IAAa,EAAE,UAAkB,EAAE,UAAkB,EAAE,SAAiB,EAAE,OAA0B,EAAE,YAA0B;QAC3J,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAElD,IAAI,CAAC,eAAe,EAAE,CAAC;YACtB,MAAM,IAAI,YAAY,CAAC,gCAAgC,SAAS,8BAA8B,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtH,CAAC;QAED,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAErE,sEAAsE;QACtE,OAAO,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,iBAAiB,CAChB,EAAY,EACZ,SAAsB,EACtB,OAA8B;QAE9B,MAAM,CAAC,QAAQ,CAAC,2CAA2C,SAAS,CAAC,IAAI,SAAS,OAAO,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;QAEpH,iDAAiD;QACjD,yEAAyE;QACzE,6EAA6E;QAC7E,MAAM,kBAAkB,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QAEzD,gCAAgC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAEjF,qCAAqC;QACrC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEtC,MAAM,CAAC,QAAQ,CAAC,sCAAsC,QAAQ,CAAC,QAAQ,WAAW,QAAQ,CAAC,IAAI,WAAW,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;QAE5H,+EAA+E;QAC/E,0EAA0E;QAC1E,8EAA8E;QAC9E,+EAA+E;QAC/E,0EAA0E;QAC1E,OAAO,EAAE,GAAG,QAAQ,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,kBAAkB,CACzB,SAAsB,EACtB,OAA8B,EAC9B,kBAA0B;QAE1B,4EAA4E;QAC5E,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAClD,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC;oBAClB,OAAO,iBAAiB;yBACtB,QAAQ,CAAC,CAAC,CAAC;yBACX,OAAO,CAAC,CAAC,CAAC;yBACV,OAAO,CAAC,CAAC,CAAC;yBACV,iBAAiB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;yBAC/D,cAAc,CAAC,2CAA2C,CAAC;yBAC3D,KAAK,EAAE,CAAC;gBACX,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,QAA0C,CAAC;QAE/C,kCAAkC;QAClC,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;YAC1F,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACjD,QAAQ,GAAG,SAAS,CAAC;YACtB,CAAC;QACF,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,QAAQ,GAAG,iBAAiB;iBAC1B,QAAQ,CAAC,kBAAkB,CAAC;iBAC5B,iBAAiB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAChE,KAAK,EAAE,CAAC;QACX,CAAC;QAED,gDAAgD;QAChD,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrE,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAC3G,CAAC;QAED,oEAAoE;QACpE,2EAA2E;QAC3E,8EAA8E;QAC9E,mFAAmF;QACnF,IAAI,CAAC,QAAQ,CAAC,gBAAgB;eAC1B,CAAC,CAAC,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;eAClE,SAAS,CAAC,oBAAoB,IAAI,SAAS,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAC7E,CAAC;YACF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,kBAAkB,CAAC;YAC3F,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACzB,+EAA+E;gBAC/E,2EAA2E;gBAC3E,6EAA6E;gBAC7E,+EAA+E;gBAC/E,2EAA2E;gBAC3E,wEAAwE;gBACxE,MAAM,EAAE,GAAG,SAAS,CAAC,oBAAoB,CAAC;gBAC1C,MAAM,eAAe,GAAG,4BAA4B,CACnD,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;gBACtD,MAAM,UAAU,GAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC3E,WAAW,EAAE,GAAG,CAAC,KAAK;oBACtB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI;iBAChB,CAAC,CAAC,CAAC;gBACJ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,QAAQ,GAAG;wBACV,GAAG,QAAQ;wBACX,gBAAgB,EAAE,UAAU;wBAC5B,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,IAAI,kBAAkB;qBACnE,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QAED,yFAAyF;QACzF,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;YACpF,+EAA+E;YAC/E,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,QAAQ,uBAAuB,EAAE,CAAC;QAC/G,CAAC;QAED,0EAA0E;QAC1E,MAAM,aAAa,GAAG,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,EAAE,KAAK,aAAa,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAClD,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC;oBAClB,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBACxB,SAAS,GAAG,IAAI,CAAC;gBAClB,CAAC;YACF,CAAC;QACF,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACf,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;QAC3D,CAAC;QAED,oEAAoE;QACpE,uEAAuE;QACvE,sEAAsE;QACtE,oBAAoB;QACpB,uEAAuE;QACvE,sEAAsE;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACvG,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;YAC/B,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAC;QAC9C,CAAC;QAED,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED;;;;;;;;;;OAUG;IACK,2BAA2B,CAClC,SAAsB,EACtB,QAA8B,EAC9B,OAA8B,EAC9B,gBAA+B;QAE/B,8EAA8E;QAC9E,yEAAyE;QACzE,mBAAmB;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC1C,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,oBAAoB,CAAC,CAAC,CAAC;gBAAE,OAAO,EAAE,CAAC;YACvC,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU;gBAAE,OAAO,EAAE,CAAC;QACpC,CAAC;QAED,sEAAsE;QACtE,gFAAgF;QAChF,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,iBAAiB,CAAC;QACnE,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE5D,yEAAyE;QACzE,sEAAsE;QACtE,MAAM,aAAa,GAAG,2BAA2B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACpF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC,CAAC,2BAA2B;QAEzE,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAEvC,mFAAmF;QACnF,iFAAiF;QACjF,uEAAuE;QACvE,IAAI,4BAA4B,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5F,OAAO,EAAE,CAAC;QACX,CAAC;QAED,6EAA6E;QAC7E,4EAA4E;QAC5E,2EAA2E;QAC3E,qEAAqE;QACrE,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC;QAEzE,uEAAuE;QACvE,yEAAyE;QACzE,yEAAyE;QACzE,yEAAyE;QACzE,uEAAuE;QACvE,iCAAiC;QACjC,MAAM,SAAS,GAAmB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAEnE,OAAO;YACN,WAAW,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE;YACjE,iBAAiB,EAAE,IAAI;SACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB,CAC1B,SAAsB,EACtB,KAAkB,EAClB,OAA8B,EAC9B,kBAA0B;QAE1B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QAChC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,iBAAiB,CAAC,QAAQ,CAAC,kBAAkB,CAAC;iBACnD,iBAAiB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAChE,KAAK,EAAE,CAAC;QACX,CAAC;QAED,oEAAoE;QACpE,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7E,IAAI,eAAe,CAAC,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YACrD,kFAAkF;YAClF,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAClF,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC;YACvD,mFAAmF;YACnF,mGAAmG;YACnG,oFAAoF;YACpF,gFAAgF;YAChF,yEAAyE;YACzE,EAAE;YACF,mFAAmF;YACnF,mFAAmF;YACnF,kFAAkF;YAClF,iFAAiF;YACjF,6EAA6E;YAC7E,mFAAmF;YACnF,+EAA+E;YAC/E,qBAAqB;YACrB,OAAO,iBAAiB;iBACtB,OAAO,CAAC,aAAa,CAAC;iBACtB,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC;iBAC5F,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC;iBACjD,QAAQ,CAAC,CAAC,WAAW,CAAC;iBACtB,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;iBACxB,cAAc,CAAC,QAAQ,CAAC;iBACxB,cAAc,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,cAAc,aAAa,GAAG,CAAC,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;iBACjG,KAAK,EAAE,CAAC;QACX,CAAC;QAED,yDAAyD;QACzD,EAAE;QACF,+EAA+E;QAC/E,+EAA+E;QAC/E,gFAAgF;QAChF,6EAA6E;QAC7E,8EAA8E;QAC9E,iFAAiF;QACjF,6DAA6D;QAC7D,IAAI,eAAe,CAAC,UAAU,GAAG,CAAC,IAAI,eAAe,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YACrF,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACxE,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;gBAC5B,MAAM,eAAe,GAAG,eAAe,CAAC,cAAc,CAAC,GAAG,CACzD,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAChD,CAAC;gBACF,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACtF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC;gBACtE,OAAO,iBAAiB;qBACtB,SAAS,CAAC,aAAa,CAAC;qBACxB,iBAAiB,CAAC,eAAe,CAAC;qBAClC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;qBACxB,cAAc,CAAC,QAAQ,CAAC;qBACxB,cAAc,CAAC,8BAA8B,KAAK,CAAC,IAAI,EAAE,CAAC;qBAC1D,KAAK,EAAE,CAAC;YACX,CAAC;QACF,CAAC;QAED,oDAAoD;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACtE,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3E,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtC,OAAO,iBAAiB;iBACtB,SAAS,CAAC,kBAAkB,CAAC;iBAC7B,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC;iBAC5C,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;iBACxB,cAAc,CAAC,QAAQ,CAAC;iBACxB,cAAc,CAAC,uBAAuB,KAAK,CAAC,IAAI,EAAE,CAAC;iBACnD,KAAK,EAAE,CAAC;QACX,CAAC;QAED,sDAAsD;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1E,IAAI,YAAY,EAAE,CAAC;YAClB,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;YAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YACvG,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtC,OAAO,iBAAiB;iBACtB,SAAS,CAAC,kBAAkB,CAAC;iBAC7B,iBAAiB,CAAC,YAAY,CAAC,cAAc,CAAC;iBAC9C,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;iBACxB,cAAc,CAAC,QAAQ,CAAC;iBACxB,cAAc,CAAC,2BAA2B,UAAU,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC;iBAChF,KAAK,EAAE,CAAC;QACX,CAAC;QAED,4CAA4C;QAC5C,OAAO,iBAAiB,CAAC,QAAQ,CAAC,kBAAkB,CAAC;aACnD,iBAAiB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAChE,cAAc,CAAC,oBAAoB,KAAK,CAAC,IAAI,cAAc,CAAC;aAC5D,KAAK,EAAE,CAAC;IACX,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACK,mBAAmB,CAC1B,SAA2C,EAC3C,OAAuC;QAEvC,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,SAAS;gBAEtE,wEAAwE;gBACxE,wEAAwE;gBACxE,qEAAqE;gBACrE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,QAAQ,KAAK,IAAI;oBAAE,SAAS;gBAEhC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACzB,UAAU,GAAG,IAAI,CAAC;gBAClB,UAAU,EAAE,CAAC;gBACb,aAAa,IAAI,QAAQ,CAAC;gBAC1B,IAAI,oBAAoB,CAAC,MAAM,CAAC;oBAAE,WAAW,GAAG,IAAI,CAAC;gBACrD,MAAM;YACP,CAAC;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjB,MAAM,CAAC,oCAAoC;YAC5C,CAAC;QACF,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;IACnE,CAAC;IAED;;;;;;;;;OASG;IACK,cAAc,CACrB,QAA2B,EAC3B,OAAuC;QAEvC,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,SAAS;YACtE,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC5D,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACzB,QAAQ,GAAG,IAAI,CAAC;YACjB,CAAC;iBAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gBACnE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACzB,QAAQ,GAAG,IAAI,CAAC;YACjB,CAAC;QACF,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3D,CAAC;IAED;;OAEG;IACK,gBAAgB,CACvB,QAA2B,EAC3B,OAAuC;QAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;gBACxF,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7D,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACzB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;YACvC,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACK,qBAAqB,CAC5B,SAAsB,EACtB,IAA0B,EAC1B,OAA8B,EAC9B,gBAA+B,EAC/B,kBAA0B;QAE1B,yEAAyE;QACzE,0EAA0E;QAC1E,mDAAmD;QACnD,MAAM,YAAY,GAAG,2BAA2B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElE,mEAAmE;QACnE,sEAAsE;QACtE,wEAAwE;QACxE,kEAAkE;QAClE,oDAAoD;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS;YACjC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC;YAC3D,CAAC,CAAC,SAAS,CAAC;QACb,MAAM,eAAe,GAAG,WAAW;YAClC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,gBAAiB,EAAE,YAAY,CAAC;YACvG,CAAC,CAAC,KAAK,CAAC;QAET,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CACvC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CACvD,CAAC;QACF,MAAM,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CACnD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;eAC5B,oBAAoB,CAAC,CAAC,CAAC;eACvB,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CACtC,CAAC;QACF,MAAM,qBAAqB,GAAG,eAAe,IAAI,CAAC,WAAW,IAAI,CAAC,uBAAuB,CAAC;QAE1F,IAAI,KAA2B,CAAC;QAChC,IAAI,SAAiB,CAAC;QACtB,IAAI,qBAAqB,EAAE,CAAC;YAC3B,KAAK,GAAG;gBACP,GAAG,IAAI;gBACP,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,iBAAiB,EAAE,WAAY,CAAC,IAAI;gBACpC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,uBAAuB,WAAY,CAAC,IAAI,EAAE;aACpE,CAAC;YACF,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,CAAC;aAAM,CAAC;YACP,KAAK,GAAG,IAAI,CAAC;YACb,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC,CAAC;QAC3E,CAAC;QAED,mEAAmE;QACnE,mEAAmE;QACnE,2DAA2D;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAC3C,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,CACtE,CAAC;QAEF,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;;;;;;;OAWG;IACK,yBAAyB,CAChC,SAAsB,EACtB,OAA8B,EAC9B,gBAA+B,EAC/B,YAAiC,EACjC,kBAA0B;QAE1B,IAAI,IAAsC,CAAC;QAC3C,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAEnF,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,gBAAiB,EAAE,YAAY,CAAC,EAAE,CAAC;gBACtG,SAAS;YACV,CAAC;YAED,gEAAgE;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;YAE1F,8EAA8E;YAC9E,uEAAuE;YACvE,wEAAwE;YACxE,0EAA0E;YAC1E,6CAA6C;YAC7C,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;mBACjC,CACF,CAAC,CAAC,EAAE,KAAK,UAAU;uBAChB,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAClE,CACF,CAAC;YAEF,IAAI,QAA8B,CAAC;YACnC,IAAI,SAAS,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC3D,QAAQ,GAAG,SAAS,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACP,yDAAyD;gBACzD,QAAQ,GAAG,iBAAiB;qBAC1B,SAAS,CAAC,kBAAkB,CAAC;qBAC7B,iBAAiB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAChE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;qBACxB,cAAc,CAAC,0BAA0B,KAAK,CAAC,IAAI,EAAE,CAAC;qBACtD,KAAK,EAAE,CAAC;YACX,CAAC;YAED,iEAAiE;YACjE,sEAAsE;YACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,kBAAkB,CAAC;YACjD,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpF,MAAM,YAAY,GAAG,IAAI,GAAG,cAAc,GAAG,4BAA4B,CAAC;YAE1E,MAAM,OAAO,GAAyB;gBACrC,GAAG,QAAQ;gBACX,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,YAAY;gBAClC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,iBAAiB,EAAE,KAAK,CAAC,IAAI;gBAC7B,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,QAAQ,EAAE,GAAG,QAAQ,CAAC,QAAQ,uBAAuB,KAAK,CAAC,IAAI,EAAE;aACjE,CAAC;YAEF,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACvC,IAAI,GAAG,OAAO,CAAC;YAChB,CAAC;QACF,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACK,sBAAsB,CAC7B,SAAsB,EACtB,OAA8B,EAC9B,KAAkB,EAClB,gBAAyC,EACzC,eAAoC,gBAAgB;QAEpD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,6BAA6B;QACxC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gCAAgC;QAE3C,0EAA0E;QAC1E,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7E,CAAC,EAAE,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC5C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAElC,IAAI,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,KAAK;gBAC1C,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC7C,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;gBACJ,SAAS;YACV,CAAC;YAED,qEAAqE;YACrE,8CAA8C;YAC9C,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,CAAC,EAAE,CAAC;gBACJ,SAAS;YACV,CAAC;YAED,OAAO,KAAK,CAAC;QACd,CAAC;QAED,qEAAqE;QACrE,OAAO,4BAA4B,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC;IAEO,sBAAsB,CAAC,SAAsB;QACpD,MAAM,gBAAgB,GAAkB,EAAE,CAAC;QAE3C,mCAAmC;QACnC,MAAM,aAAa,GAAG;YACrB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,SAAS,CAAC,oBAAoB;SACvC,CAAC;QACF,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAErC,0EAA0E;QAC1E,oEAAoE;QACpE,sEAAsE;QACtE,oEAAoE;QACpE,0CAA0C;QAC1C,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC3C,IAAI,GAAG,CAAC,SAAS;gBAAE,SAAS;YAC5B,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAY,EAAE,IAAa,EAAE,UAAkB,EAAE,UAAkB,EAAE,SAAiB;QACnG,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,OAAO,EAAE,CAAC;YACb,kFAAkF;YAClF,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE7B,2BAA2B;YAC3B,IAAI,CAAC,YAAY,EAAE,gBAAgB,EAAE,CAAC;gBACrC,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,OAAO;gBACnB,UAAU;gBACV,UAAU,EAAE,SAAS;gBACrB,GAAG,EAAE,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC;aAChD,CAAC,CAAC;YAEH,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,GAAa,EAAE,UAAkB,EAAE,OAAe,EAAE,OAAe,EAAE,GAAY;QAClG,MAAM,MAAM,GAAG,GAAG,UAAU,IAAI,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,GAAG,UAAU,IAAI,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QAED,kFAAkF;QAClF,+EAA+E;QAC/E,kFAAkF;QAClF,qEAAqE;QACrE,kDAAkD;QAClD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,EAAE,gBAAgB,EAAE,CAAC;gBACrC,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE,OAAO;gBACnB,UAAU;gBACV,UAAU,EAAE,OAAO;gBACnB,aAAa,EAAE,OAAO;gBACtB,GAAG;aACH,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAY,EAAE,UAAkB,EAAE,SAAiB,EAAE,MAAwB,EAAE,IAAyB;QACxH,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,YAAY,CAAC,iBAAiB,SAAS,0BAA0B,UAAU,kBAAkB,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAC5H,CAAC;QAED,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,WAAW;gBACf,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC1F,MAAM;YACP,KAAK,YAAY;gBAChB,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC5C,MAAM;YACP,KAAK,cAAc;gBAClB,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;oBAC7B,MAAM,IAAI,YAAY,CAAC,oDAAoD,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACnG,CAAC;gBACD,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;gBACnE,MAAM;YACP,KAAK,iBAAiB;gBACrB,MAAM,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBACzD,MAAM;YACP,KAAK,eAAe;gBACnB,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACrD,MAAM;YACP,KAAK,gBAAgB;gBACpB,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBACpD,MAAM;YACP,KAAK,kBAAkB;gBACtB,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC/D,MAAM;YACP,KAAK,aAAa;gBACjB,MAAM,OAAO,CAAC,WAAW,CAAC;oBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;iBACjC,EAAE,IAAI,CAAC,CAAC;gBACT,MAAM;QACR,CAAC;QAED,kFAAkF;QAClF,oFAAoF;QACpF,gFAAgF;QAChF,8EAA8E;QAC9E,mFAAmF;QACnF,iFAAiF;QACjF,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,EAAE,gBAAgB,EAAE,CAAC;gBACrC,GAAG,eAAe,CAAC,MAAM,CAAC;gBAC1B,UAAU;gBACV,UAAU,EAAE,SAAS;gBACrB,GAAG,EAAE,MAAM,CAAC,GAAG;aACf,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,EAAY,EAAE,UAAkB,EAAE,SAAiB,EAAE,WAAwB,EAAE,IAAyB;QACzH,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,YAAY,CAAC,iBAAiB,SAAS,0BAA0B,UAAU,yBAAyB,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACnI,CAAC;QAED,8CAA8C;QAC9C,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAExD,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,IAAI,EAAE;YAClD,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACjF,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAa,EAAE,UAAkB,EAAE,SAAiB,EAAE,SAAiB;QACtF,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,YAAY,CAAC,iBAAiB,SAAS,0BAA0B,UAAU,uBAAuB,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACjI,CAAC;QAED,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEnC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE;YACzC,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,UAAU;SAClB,CAAC,CAAC;IACJ,CAAC;CACD"}
@@ -37,9 +37,33 @@ export declare class MemoryTable extends VirtualTable {
37
37
  */
38
38
  getEventEmitter(): VTableEventEmitter | undefined;
39
39
  /**
40
- * Returns statistics for this memory table.
41
- * Provides exact row count from BTree metadata, column-level distinct counts,
42
- * min/max values, null counts, and optional histograms.
40
+ * The `VirtualTable.getStatistics` contract: this table's SIZE, read from the primary
41
+ * BTree's node count in O(1) — and nothing else.
42
+ *
43
+ * Column statistics are deliberately absent. This method used to report them, derived
44
+ * from a systematic sample of at most 1000 non-null values per column, and that made
45
+ * every figure wrong the moment a table passed 1000 rows: un-sampled rows were counted
46
+ * as NULLs, `distinctCount` saturated at the sample size, and min/max were the sample's
47
+ * extremes rather than the column's. A sample is not an answer.
48
+ *
49
+ * An empty `columnStats` reads as "size answered, collect the rest yourself" (see
50
+ * `collectTableStatistics` in `runtime/emit/analyze.ts`), so `ANALYZE` runs
51
+ * `collectStatisticsFromScan`, which visits every live row and computes exact distinct
52
+ * counts, null counts and min/max. That also fixes the row count inside an open
53
+ * transaction: `getBaseLayerStats` sees the committed base only, while the scan reads
54
+ * what this connection can actually see, and the scan's count wins.
55
+ *
56
+ * The scan seeing uncommitted rows is a guarantee, not a coincidence, even though
57
+ * `ANALYZE` connects a *fresh* `MemoryTable` rather than reusing the statement's:
58
+ * `ensureConnection` below adopts the `MemoryTableConnection` already registered on the
59
+ * `Database` for this qualified name, pending transaction layer and all, and `query`
60
+ * starts its scan from that layer. `MemoryTableManager.disconnect` then defers while the
61
+ * connection `hasOpenWork()`, so `ANALYZE`'s `disconnect()` cannot drop a live transaction.
62
+ *
63
+ * NOTE: `ANALYZE` on a memory table is therefore O(rows) where the old sampled path was
64
+ * O(sample) — intended, since that is what `ANALYZE` means, and this method itself stays
65
+ * O(1). If `ANALYZE` in a hot loop over a large memory table ever shows up in a profile,
66
+ * the fix is to cache/invalidate the scan's result, not to sample it again.
43
67
  */
44
68
  getStatistics(): TableStatistics;
45
69
  query(filterInfo: FilterInfo): AsyncIterable<Row>;
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/vtab/memory/table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/vtab/memory/table.ts"],"names":[],"mappings":"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"}