@quereus/store 4.15.2 → 4.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/src/common/cost-profile.d.ts +22 -3
  2. package/dist/src/common/cost-profile.d.ts.map +1 -1
  3. package/dist/src/common/cost-profile.js +30 -0
  4. package/dist/src/common/cost-profile.js.map +1 -1
  5. package/dist/src/common/pk-key-resolution.d.ts +34 -0
  6. package/dist/src/common/pk-key-resolution.d.ts.map +1 -1
  7. package/dist/src/common/pk-key-resolution.js +47 -0
  8. package/dist/src/common/pk-key-resolution.js.map +1 -1
  9. package/dist/src/common/serialization.d.ts +10 -3
  10. package/dist/src/common/serialization.d.ts.map +1 -1
  11. package/dist/src/common/serialization.js.map +1 -1
  12. package/dist/src/common/store-module-access-plan.d.ts +8 -0
  13. package/dist/src/common/store-module-access-plan.d.ts.map +1 -1
  14. package/dist/src/common/store-module-access-plan.js +351 -16
  15. package/dist/src/common/store-module-access-plan.js.map +1 -1
  16. package/dist/src/common/store-module-alter.d.ts.map +1 -1
  17. package/dist/src/common/store-module-alter.js +9 -0
  18. package/dist/src/common/store-module-alter.js.map +1 -1
  19. package/dist/src/common/store-module-rename.d.ts.map +1 -1
  20. package/dist/src/common/store-module-rename.js +6 -2
  21. package/dist/src/common/store-module-rename.js.map +1 -1
  22. package/dist/src/common/store-module.d.ts.map +1 -1
  23. package/dist/src/common/store-module.js +25 -1
  24. package/dist/src/common/store-module.js.map +1 -1
  25. package/dist/src/common/store-table-base.d.ts +25 -1
  26. package/dist/src/common/store-table-base.d.ts.map +1 -1
  27. package/dist/src/common/store-table-base.js +84 -0
  28. package/dist/src/common/store-table-base.js.map +1 -1
  29. package/dist/src/common/store-table-scan.d.ts.map +1 -1
  30. package/dist/src/common/store-table-scan.js +19 -1
  31. package/dist/src/common/store-table-scan.js.map +1 -1
  32. package/package.json +5 -5
@@ -16,9 +16,9 @@
16
16
  * Free functions rather than a layer of the store-module chain — access planning reads
17
17
  * no module state beyond the table's configured key collation, which the caller passes in.
18
18
  */
19
- import { AccessPlanBuilder, combineConjunctive, equalitySeekKeyCount, hasSemanticOrdering, isMultiValueEquality, selectivityFromHistogram, } from '@quereus/quereus';
20
- import { PARITY_COST_PROFILE } from './cost-profile.js';
21
- import { indexPrefixSeekIsCollationExact, indexRangeAtPositionIsOrderSafe, pkOrderPreservingPrefixLength, resolveIndexKeyCollations, resolvePkKeyCollations, } from './pk-key-resolution.js';
19
+ import { AccessPlanBuilder, combineConjunctive, equalitySeekKeyCount, hasSemanticOrdering, isMultiValueEquality, nullSafeOrderingPrefixLength, selectivityFromHistogram, } from '@quereus/quereus';
20
+ import { estimateSortCost, PARITY_COST_PROFILE, RESIDUAL_FILTER_COST_PER_ROW, } from './cost-profile.js';
21
+ import { indexOrderPreservingPrefixLength, indexPrefixSeekIsCollationExact, indexRangeAtPositionIsOrderSafe, pkOrderPreservingPrefixLength, resolveIndexKeyCollations, resolvePkKeyCollations, } from './pk-key-resolution.js';
22
22
  /**
23
23
  * Planner-side constraint operator groups, as `BestAccessPlanRequest.filters` spells
24
24
  * them. Kept as one source of truth for the access-plan code below: {@link computeBestAccessPlan}
@@ -329,6 +329,14 @@ function resolvePrimaryKeyPins(filters, pkColumns) {
329
329
  * The access plan this module advertises for `request`, before the caller stamps the
330
330
  * module-wide `honorsCollatedRangeBounds` flag onto it.
331
331
  *
332
+ * Two halves: {@link computeFilterAccessPlan} picks the best plan for the pushed
333
+ * PREDICATE (PK point / multi-seek / range, secondary-index seek, or full scan), and
334
+ * {@link chooseOrderingPlan} then asks whether walking some index purely for its
335
+ * EMISSION ORDER — pushing no filters at all — prices below that plan plus the external
336
+ * sort it would otherwise need. Wrapping the whole filter decision (rather than
337
+ * threading the comparison through its several return points) is what lets the early
338
+ * PK returns compete against an ordering walk too.
339
+ *
332
340
  * `tableKeyCollation` is the table's resolved key collation K, passed in rather than
333
341
  * looked up: the caller (`StoreModule.getBestAccessPlan`) owns the module's table map.
334
342
  * It is the PRIMARY-KEY arms' concern only — `resolvePkKeyCollations` still falls back to
@@ -341,6 +349,18 @@ function resolvePrimaryKeyPins(filters, pkColumns) {
341
349
  * reason `tableKeyCollation` is: this function reads no module state of its own.
342
350
  */
343
351
  export function computeBestAccessPlan(db, tableInfo, request, tableKeyCollation, costProfile) {
352
+ const filterPlan = computeFilterAccessPlan(db, tableInfo, request, tableKeyCollation, costProfile);
353
+ return chooseOrderingPlan(db, tableInfo, request, filterPlan, costProfile);
354
+ }
355
+ /**
356
+ * The best access plan for the pushed PREDICATE alone — {@link computeBestAccessPlan}'s
357
+ * former body, extracted verbatim so {@link chooseOrderingPlan} can wrap every one of its
358
+ * return points. Ordering is not ignored here (the seek arms still attach their
359
+ * advertisements, which is how a plan that already satisfies the required ordering skips
360
+ * the walk comparison entirely); this function just never chooses an access path FOR
361
+ * ordering's sake.
362
+ */
363
+ function computeFilterAccessPlan(db, tableInfo, request, tableKeyCollation, costProfile) {
344
364
  const estimatedRows = request.estimatedRows ?? 1000;
345
365
  // Whether ANY pushed filter is a runtime-valued set. Detected once, on the REQUEST:
346
366
  // such a request is engine-synthesized (`rule-key-set-seek`'s probes, or the key-set
@@ -561,6 +581,153 @@ export function computeBestAccessPlan(db, tableInfo, request, tableKeyCollation,
561
581
  // tables, matching memory-mode behavior.
562
582
  return scanPlan;
563
583
  }
584
+ /**
585
+ * The empty pinned-column set an ordering-only walk aligns its index under. Deliberately
586
+ * empty even when the request carries equality filters: the walk pushes NO filters, so
587
+ * nothing pins a column to one value inside the walk itself. (The residual `Filter` above
588
+ * the leaf does make an equality column constant in the OUTPUT, which is the argument
589
+ * `MemoryTableModule.evaluateOrderingOnlyPlans` leans on to skip pinned columns — but that
590
+ * argument quietly assumes the equality's comparison collation equates only rows the walk
591
+ * emits adjacently. Declining the skip costs an optimization, never an answer.)
592
+ */
593
+ const NO_PINNED_COLUMNS = new Set();
594
+ /**
595
+ * True when a filter plan's `providesOrdering` satisfies `required` position for
596
+ * position (same `columnIndex`, same `desc`; the plan may provide extra trailing
597
+ * ordering) — the engine's own `orderingMatches` (rule-grow-retrieve.ts). Every arm of
598
+ * {@link computeFilterAccessPlan} that matches a `requiredOrdering` claims it VERBATIM,
599
+ * so in practice this is "did some arm already claim it".
600
+ */
601
+ function orderingAlreadySatisfied(provided, required) {
602
+ if (!provided || provided.length < required.length)
603
+ return false;
604
+ for (let i = 0; i < required.length; i++) {
605
+ if (provided[i].columnIndex !== required[i].columnIndex || provided[i].desc !== required[i].desc) {
606
+ return false;
607
+ }
608
+ }
609
+ return true;
610
+ }
611
+ /**
612
+ * Consider replacing `filterPlan` with an ordering-only walk of a secondary index: a
613
+ * whole-index scan (`plan=0`) chosen purely for its emission order, with EVERY pushed
614
+ * filter left to the residual `Filter`. `... order by n` with an index on `n` and no
615
+ * usable predicate otherwise full-scans the data store in PK order and sorts the whole
616
+ * table — the walk streams the rows already ordered at the price of one index-entry read
617
+ * plus one row resolution per row.
618
+ *
619
+ * The Sort-absorption rule (`trySortAbsorbViaIndexOrdering`, rule-grow-retrieve.ts)
620
+ * deletes the Sort on the strength of `providesOrdering` alone, with no cost comparison
621
+ * of its own — so this function is the only place "is the walk actually cheaper than
622
+ * sorting?" gets asked. Mirrors `MemoryTableModule.adjustPlanForOrdering` /
623
+ * `evaluateOrderingOnlyPlans`, minus the memory module's seek-plus-ordering hybrid (the
624
+ * store's seek arms already advertise their ordering, so the hybrid case IS `filterPlan`
625
+ * satisfying the request).
626
+ *
627
+ * `filterPlan` is returned unchanged unless ALL of:
628
+ * - a required ordering is present that `filterPlan` does not already satisfy;
629
+ * - the request carries no runtime-valued set — such a request is engine-synthesized
630
+ * (`rule-key-set-seek`'s probes / the key-set semi join itself) and must be answered
631
+ * with the module's genuine filter plan: substituting a walk whose cost does not
632
+ * scale with the key count would corrupt the probe's cost line, and the walk's
633
+ * all-false `handledFilters` would push the runtime-set membership into a residual
634
+ * the engine never meant to evaluate that way. Same ONE rule as the seek-vs-scan
635
+ * veto exemption above.
636
+ * - some non-partial index's order-preserving prefix satisfies the required ordering
637
+ * with NO pinned columns (see {@link NO_PINNED_COLUMNS});
638
+ * - the cheapest such walk prices STRICTLY below `filterPlan` plus the external sort
639
+ * it would otherwise need. Ties keep `filterPlan` — it is the plan the store already
640
+ * produces, and the sort estimate is the softer of the two numbers.
641
+ *
642
+ * NOTE: the walk is priced for the WHOLE table because `request.limit` is never
643
+ * populated on this path — `trySortAbsorbViaIndexOrdering` builds its request with no
644
+ * `limit`, and the `LimitOffset` grow arm that does populate one sits above the Sort,
645
+ * not above the Retrieve. So `order by n limit 1` is priced exactly like `order by n`,
646
+ * and a backend declaring an expensive `pointRead` (IndexedDB) prefers scan-then-sort
647
+ * even under a tight LIMIT, where the walk would have read one row. The enabling engine
648
+ * change is backlog `feat-sort-absorb-blind-to-limit`.
649
+ */
650
+ function chooseOrderingPlan(db, tableInfo, request, filterPlan, profile) {
651
+ const required = request.requiredOrdering;
652
+ if (!required || required.length === 0)
653
+ return filterPlan;
654
+ if (orderingAlreadySatisfied(filterPlan.providesOrdering, required))
655
+ return filterPlan;
656
+ if (request.filters.some(f => f.runtimeSet !== undefined))
657
+ return filterPlan;
658
+ const estimatedRows = request.estimatedRows ?? 1000;
659
+ let bestWalk = null;
660
+ let bestWidth = 0;
661
+ for (const index of tableInfo.indexes ?? []) {
662
+ // Partial indexes are excluded from access planning outright (see
663
+ // {@link tryIndexAccessPlan}) — doubly so here, where the walk IS the whole
664
+ // row source and a partial index omits rows no residual can resurrect.
665
+ if (index.predicate || index.columns.length === 0)
666
+ continue;
667
+ // Same collation gate as the seek arms' ordering advertisement: only the prefix
668
+ // whose key bytes provably reproduce the DECLARED collation's order may claim.
669
+ const indexKeyCollations = resolveIndexKeyCollations(index, tableInfo.columns);
670
+ const orderPreservingPrefix = indexOrderPreservingPrefixLength(db, tableInfo.columns, index, indexKeyCollations);
671
+ const claimablePrefix = nullSafeOrderingPrefixLength(tableInfo, request, index.columns, orderPreservingPrefix, NO_PINNED_COLUMNS);
672
+ if (claimablePrefix === 0)
673
+ continue;
674
+ const indexOrdering = index.columns
675
+ .slice(0, claimablePrefix)
676
+ .map(col => ({ columnIndex: col.index, desc: !!col.desc }));
677
+ if (!indexOrderingSatisfies(indexOrdering, required, NO_PINNED_COLUMNS))
678
+ continue;
679
+ const walk = buildOrderingWalkPlan(index, request, required, estimatedRows, profile);
680
+ // Cheapest first, then NARROWEST. The cost is currently identical for every
681
+ // candidate — {@link buildOrderingWalkPlan} reads only the row count, the profile
682
+ // and the filter count, never the index — so cost alone would leave declaration
683
+ // order deciding, and `ix_wide(n, s, u)` would be walked in preference to
684
+ // `ix_narrow(n)` purely for being declared first. Both walks visit the same number
685
+ // of entries, but the wide one's keys carry two extra encoded columns per entry,
686
+ // so it reads strictly more bytes for the same rows. Ties on both keep the first
687
+ // candidate, matching the best-seek loop above.
688
+ const width = index.columns.length;
689
+ if (!bestWalk || walk.cost < bestWalk.cost || (walk.cost === bestWalk.cost && width < bestWidth)) {
690
+ bestWalk = walk;
691
+ bestWidth = width;
692
+ }
693
+ }
694
+ if (!bestWalk)
695
+ return filterPlan;
696
+ // NOTE: taking the walk also replaces `filterPlan.rows` with the WHOLE table — the
697
+ // walk pushes nothing, so that figure is honest for the leaf, but it is the number
698
+ // the rest of the plan is costed against, and the residual `Filter` above re-narrows
699
+ // it only by the engine's default selectivity. Nothing observed today depends on it
700
+ // (a walk wins only where its own price already beats scan-then-sort). If a join over
701
+ // a walked leaf is ever seen ordering itself around an inflated leaf estimate, carry
702
+ // `filterPlan.rows` onto the walk instead of the table count.
703
+ const sortCost = estimateSortCost(filterPlan.rows ?? estimatedRows);
704
+ return bestWalk.cost < filterPlan.cost + sortCost ? bestWalk : filterPlan;
705
+ }
706
+ /**
707
+ * The advertisement for one ordering-only walk candidate: a whole-index range scan that
708
+ * resolves EVERY index entry to its row (`estimatedRows × profile.pointRead`, added via
709
+ * `addCost` like the seek arms rather than restating the shape's formula) and re-checks
710
+ * every pushed filter in the residual (`estimatedRows × filters × 0.2` — the term that
711
+ * stops a walk from displacing a selective seek on a filtered query).
712
+ *
713
+ * `indexName` is set with NO `seekColumnIndexes`, so `rule-select-access-path`
714
+ * physicalizes through its legacy path's ordering branch: an `IndexScanNode` whose
715
+ * idxStr is `idx=<name>(0);plan=0` (`makeOrderedScanFilterInfo`) and whose FilterInfo
716
+ * carries no constraints. `StoreTableScan.analyzeIndexAccess` reads the `plan=0`
717
+ * explicitly and walks the whole index store. `orderingIndexName` equals `indexName` —
718
+ * `validateAccessPlan` rejects an ordering claim naming any index but the one walked.
719
+ */
720
+ function buildOrderingWalkPlan(index, request, required, estimatedRows, profile) {
721
+ const plan = AccessPlanBuilder
722
+ .rangeScan(estimatedRows)
723
+ .addCost(estimatedRows * profile.pointRead)
724
+ .addCost(estimatedRows * request.filters.length * RESIDUAL_FILTER_COST_PER_ROW)
725
+ .setHandledFilters(new Array(request.filters.length).fill(false))
726
+ .setIndexName(index.name)
727
+ .setExplanation(`Store index ordering walk on ${index.name}`)
728
+ .build();
729
+ return { ...plan, providesOrdering: required, orderingIndexName: index.name };
730
+ }
564
731
  /**
565
732
  * The `_primary_` multi-seek advertisement for a WHOLE-primary-key IN (`where pk in (…)`,
566
733
  * or a runtime-valued set on the PK), or null when a gate declines it.
@@ -593,10 +760,10 @@ function primaryKeyMultiSeekPlan(tableInfo, request, pkColumns, pins, estimatedR
593
760
  // large `where pk in (…)` prefers a scan slightly sooner than it should.
594
761
  //
595
762
  // That acceptance was priced on IndexedDB's 1.7x bias. LevelDB's 2026-08-19 read-cost
596
- // measurement makes the same bias ~12x there (a windowed seek key costs ~15-19 scan
597
- // rows, while THIS arm's batched `readEffectiveRowsByKeys` path costs ~1.3), which is
598
- // why that backend declares no profile at all rather than declaring its measured seek
599
- // cost and disfiguring this arm. So the tradeoff still holds for every backend that
763
+ // measurement makes the same bias an order of magnitude there (a windowed seek key costs
764
+ // about fifteen scan rows, while THIS arm's batched `readEffectiveRowsByKeys` path costs
765
+ // about one-and-a-half), which is why that backend declares no profile at all rather than
766
+ // declaring its measured seek cost and disfiguring this arm. So the tradeoff still holds for every backend that
600
767
  // declares one today, but it is now the reason a measured backend CANNOT declare —
601
768
  // tracked as `backlog/debt-store-seek-positioning-conflates-two-arms`, with the numbers
602
769
  // in `packages/quereus-plugin-leveldb/README.md` § Measured read cost.
@@ -762,6 +929,13 @@ function tryIndexAccessPlan(db, tableInfo, request, index, estimatedRows, profil
762
929
  /** The arm's shape plus one per-fetched-row resolution term at the given price. */
763
930
  const seekingArm = (pointRead) => armShape().addCost(rows * pointRead);
764
931
  const costOnly = (why) => {
932
+ // NO ordering claim on a cost-only decline, ever: it names no index and no seek
933
+ // columns, so the engine sequentially scans the DATA store in primary-key order.
934
+ // An ordering claim here would make `rule-select-access-path` take its
935
+ // ordering-only branch and emit an IndexScanNode over a walk the store never
936
+ // performs — a silent wrong-order answer. (The PK-order advertisement the scan
937
+ // genuinely could carry is a separate matter — see the NOTE at the
938
+ // `costOnlyFallback` return in {@link computeBestAccessPlan}.)
765
939
  const plan = armShape()
766
940
  .setHandledFilters(new Array(request.filters.length).fill(false))
767
941
  .setExplanation(`Store index scan on ${index.name} (${why})`)
@@ -817,7 +991,10 @@ function tryIndexAccessPlan(db, tableInfo, request, index, estimatedRows, profil
817
991
  // per-seek positioning term keeps a 500-key IN over a 10-row table from pricing
818
992
  // below a full scan and issuing 500 seeks to read 10 rows. `isSet` false mirrors
819
993
  // MemoryTableModule.evaluateIndexAccess's setIsSet(!isMultiSeek). No ordering is
820
- // advertised — window emission order is encoded-key order, not any column order.
994
+ // advertised — N merged windows emit in seek-key order, not column order, so the
995
+ // single-window arms' `buildIndexOrderingAdvertisement` must never be attached
996
+ // here. `isMultiSeek` (not `seekKeyCount > 1`) is the gate deliberately: a
997
+ // runtime-valued set is delivered as a multi-seek even at `maxCount === 1`.
821
998
  //
822
999
  // **This arm pays the per-row `profile.pointRead` exactly when `statsBacked`.** It
823
1000
  // resolves every entry it matches, like the single-window arms do, so the physics
@@ -886,12 +1063,20 @@ function tryIndexAccessPlan(db, tableInfo, request, index, estimatedRows, profil
886
1063
  const armLabel = arm === 'prefixRange'
887
1064
  ? `prefix-range seek(prefix=${eqCols.length})`
888
1065
  : arm === 'range' ? 'range scan' : 'seek';
889
- const plan = seekingArm(profile.pointRead)
890
- .setHandledFilters(handledFilters)
891
- .setIndexName(index.name)
892
- .setSeekColumns(seekCols)
893
- .setExplanation(`Store index ${armLabel} on ${index.name}`)
894
- .build();
1066
+ // Ordering advertisement — the three single-window arms only, resolved AFTER the
1067
+ // `prefixRange → eq` degradation above so the claim describes the arm actually
1068
+ // advertised (like the row estimate, and unlike a degraded arm's dropped bound, the
1069
+ // pinned set `eqCols` is the same either way). The multi-seek and cost-only returns
1070
+ // above deliberately make no claim; the reasons are stated at each.
1071
+ const plan = {
1072
+ ...seekingArm(profile.pointRead)
1073
+ .setHandledFilters(handledFilters)
1074
+ .setIndexName(index.name)
1075
+ .setSeekColumns(seekCols)
1076
+ .setExplanation(`Store index ${armLabel} on ${index.name}`)
1077
+ .build(),
1078
+ ...buildIndexOrderingAdvertisement(db, tableInfo, request, index, indexKeyCollations, eqCols),
1079
+ };
895
1080
  return {
896
1081
  plan,
897
1082
  // Statistics-backed: `rows` discriminates per query, so the backend's DECLARED price
@@ -925,7 +1110,18 @@ function tryIndexAccessPlan(db, tableInfo, request, index, estimatedRows, profil
925
1110
  * `monotonicOn` reflects the access path itself and is independent of any
926
1111
  * `requiredOrdering`; it always advertises the leading PK column. Strict
927
1112
  * monotonicity is claimed iff the PK is single-column — composite PKs can
928
- * repeat values on the leading column.
1113
+ * repeat values on the leading column. It is NOT independent of the gating below,
1114
+ * though: a `direction: 'desc'` claim asserts the same physical order
1115
+ * `providesOrdering` would, and the engine has a standing conversion back the other way
1116
+ * (`deriveOrderingFromMonotonicOn`, planner/framework/physical-utils.ts — no callers as
1117
+ * of writing, but `rule-monotonic-limit-pushdown` already matches a Sort's direction
1118
+ * against `monotonicOn` and would push a LIMIT past it once a module advertises
1119
+ * `supportsOrdinalSeek`). So a member the claimable prefix rejects must void
1120
+ * `monotonicOn` too, not merely truncate `providesOrdering` around it.
1121
+ *
1122
+ * `supportsAsofRight` rides on `monotonicOn` by definition ("implies `monotonicOn` is
1123
+ * set" — see its declaration), so it needs no separate gate: both are dropped together
1124
+ * whenever the leading member is not claimable.
929
1125
  *
930
1126
  * Returns an empty object when there is no PK (heap-only table) — without a
931
1127
  * leading key column there is no natural emit order.
@@ -936,18 +1132,33 @@ function tryIndexAccessPlan(db, tableInfo, request, index, estimatedRows, profil
936
1132
  * PK members those two orders provably agree on: the advertisement is truncated to that
937
1133
  * prefix, and voided entirely when even the leading member disagrees — otherwise the
938
1134
  * absorb-Sort rule would elide a Sort and hand the caller byte-ordered rows.
1135
+ *
1136
+ * That prefix is then truncated a second time, by {@link nullSafeOrderingPrefixLength},
1137
+ * at the first DESC member a NULL could reach: the PK key bytes put such a NULL at the
1138
+ * END of the walk while the engine's ORDER BY puts it FIRST. A nullable DESC PK member is
1139
+ * reachable with no `create index` at all — `create table p (a integer null, b integer,
1140
+ * primary key (a desc, b))` — which is why the gate belongs here and not only on the
1141
+ * secondary-index path.
939
1142
  */
940
1143
  function buildPkOrderingAdvertisement(tableInfo, request, orderPreservingPrefix) {
941
1144
  const pk = tableInfo.primaryKeyDefinition;
942
1145
  if (pk.length === 0 || orderPreservingPrefix === 0)
943
1146
  return {};
1147
+ // The PK arms pin nothing this function can see: the pinning an equality/range arm does
1148
+ // is already visible as a NULL-excluding entry in `request.filters`, which the helper
1149
+ // consults itself.
1150
+ const claimablePrefix = nullSafeOrderingPrefixLength(tableInfo, request, pk, orderPreservingPrefix, NO_PINNED_COLUMNS);
1151
+ // Prefix 0 means the LEADING member is an unclaimable DESC, so `monotonicOn` on it —
1152
+ // and `supportsAsofRight`, which implies it — go with the ordering claim.
1153
+ if (claimablePrefix === 0)
1154
+ return {};
944
1155
  const leading = pk[0];
945
1156
  const monotonicOn = {
946
1157
  columnIndex: leading.index,
947
1158
  direction: leading.desc ? 'desc' : 'asc',
948
1159
  strict: pk.length === 1,
949
1160
  };
950
- const pkOrdering = pk.slice(0, orderPreservingPrefix).map(col => ({
1161
+ const pkOrdering = pk.slice(0, claimablePrefix).map(col => ({
951
1162
  columnIndex: col.index,
952
1163
  desc: !!col.desc,
953
1164
  }));
@@ -982,5 +1193,129 @@ function buildPkOrderingAdvertisement(tableInfo, request, orderPreservingPrefix)
982
1193
  supportsAsofRight: true,
983
1194
  };
984
1195
  }
1196
+ /**
1197
+ * Compute the ordering advertisement for a SINGLE-WINDOW secondary-index arm (`eq` with
1198
+ * `isMultiSeek === false`, `prefixRange`, or `range`) — the secondary-index twin of
1199
+ * {@link buildPkOrderingAdvertisement}, with the same rigour and one deliberate
1200
+ * difference in what it measures.
1201
+ *
1202
+ * **Why the claim is sound at all.** A single-window arm walks ONE contiguous byte
1203
+ * region of the index store forward, and every layer between that walk and the caller
1204
+ * preserves entry order: batched row resolution answers positionally and skips
1205
+ * dead entries without shifting later ones (`resolveIndexEntries` / `resolveRowBatch`,
1206
+ * store-table-scan.ts), and the read-your-own-writes merge interleaves pending puts /
1207
+ * deletes by byte comparison of the same keys (`iterateEffective`, store-table-base.ts).
1208
+ * `buildIndexKey` writes `{index columns}{PK}` with each column's DESC flag baked into
1209
+ * the bytes by inversion, so a forward byte walk IS a walk in each index column's
1210
+ * declared direction.
1211
+ *
1212
+ * **What it measures — the declared collation, not the residual's.** The consumer of an
1213
+ * ordering claim is `ORDER BY`, which compares under the TABLE COLUMN's declared
1214
+ * collation — not under the index column's own `COLLATE`, which is what the seek gates
1215
+ * (`indexRangeAtPositionIsOrderSafe`) rightly judge their windows against. So the claim
1216
+ * is truncated to {@link indexOrderPreservingPrefixLength} (which compares key bytes
1217
+ * against the DECLARED collation via `indexOrderMatchesDeclaredCollation` — see its doc
1218
+ * comment for the `collate nocase` counter-example) and voided at prefix 0, exactly as
1219
+ * the PK version truncates to `pkOrderPreservingPrefixLength`.
1220
+ *
1221
+ * **Matching mirrors `MemoryTableModule.indexSatisfiesOrdering`,** including its
1222
+ * equality-skip: a column pinned to one value by THIS arm's own seek (`eqCols`) is
1223
+ * constant across the whole window and contributes no ordering, so `where a = 1 order
1224
+ * by b` over `(a, b)` claims. The pinned set is this arm's `eqCols` — never every
1225
+ * equality in `request.filters` — and only a non-multi-seek arm may call this at all: a
1226
+ * multi-seek's N merged windows emit in seek-key order, not column order.
1227
+ *
1228
+ * When `requiredOrdering` is present, the claim is the request verbatim, and only when
1229
+ * genuinely satisfied; declines on any explicit `nullsFirst` (no promise about NULL
1230
+ * placement — mirrors the PK version). Never reversed: the claim is only ever the index's
1231
+ * own declared directions — the store has no reverse secondary-index walk
1232
+ * (`iterateEffective` accepts `reverse` but no secondary arm passes it). Absent a request,
1233
+ * the index's own (truncated) ordering is advertised so merge-join / streaming-aggregate
1234
+ * rules can fire opportunistically — claiming the pinned leading columns there is sound
1235
+ * for the same reason the skip is: they are constant.
1236
+ *
1237
+ * NOTE: the `nullsFirst` decline is a belt on top of the engine's own braces, not the
1238
+ * thing that makes `order by <nullable indexed col> nulls last` safe. Nothing populates
1239
+ * `OrderingSpec.nullsFirst` today (the same NOTE sits on `MemoryTableModule
1240
+ * .indexSatisfiesOrdering`): `trySortAbsorbViaIndexOrdering` refuses a sort key carrying
1241
+ * an explicit NULLS placement outright, and `ruleGrowRetrieve`'s Sort arm goes through
1242
+ * `extractOrderingFromSortKeys`, which drops `SortKey.nulls` — so that arm could never
1243
+ * see the placement to forward it. Harmless while it also never absorbs such a Sort
1244
+ * (`index-ordering.spec.ts` pins that the Sort survives). If `nullsFirst` ever starts
1245
+ * reaching `requiredOrdering`, this decline becomes load-bearing rather than redundant —
1246
+ * index bytes put NULLs FIRST on an ASC column and LAST on a DESC one (inversion), which
1247
+ * is the engine's default placement and nothing else.
1248
+ *
1249
+ * NOTE: advertising the index's own ordering with no `requiredOrdering` can COST a
1250
+ * pushdown. `ruleGrowRetrieve` carries an equipped `providesOrdering` into its re-probe as
1251
+ * a `requiredOrdering` and declines the grow when the re-probe does not match it. A bare
1252
+ * claim includes the pinned leading columns; the matched claim skips them — so
1253
+ * `[a, b]` advertised for `where a = 1` cannot be re-satisfied on a second grow and the
1254
+ * Filter stays above the Retrieve. Costs an optimization, never an answer (a Filter
1255
+ * preserves row order). If a store-backed plan is ever seen refusing a filter pushdown it
1256
+ * used to take, advertise only the unpinned suffix here.
1257
+ *
1258
+ * `orderingIndexName` is always this very index — `validateAccessPlan` rejects a claim
1259
+ * naming any index but the one the plan iterates.
1260
+ */
1261
+ function buildIndexOrderingAdvertisement(db, tableInfo, request, index, indexKeyCollations, eqCols) {
1262
+ const orderPreservingPrefix = indexOrderPreservingPrefixLength(db, tableInfo.columns, index, indexKeyCollations);
1263
+ // Additionally truncated at the first DESC column NULLs could reach: index bytes put
1264
+ // them at the walk's END, the engine's ORDER BY puts them FIRST for both directions.
1265
+ // See {@link nullSafeOrderingPrefixLength}.
1266
+ const claimablePrefix = nullSafeOrderingPrefixLength(tableInfo, request, index.columns, orderPreservingPrefix, new Set(eqCols));
1267
+ if (claimablePrefix === 0)
1268
+ return {};
1269
+ const indexOrdering = index.columns
1270
+ .slice(0, claimablePrefix)
1271
+ .map(col => ({ columnIndex: col.index, desc: !!col.desc }));
1272
+ const required = request.requiredOrdering;
1273
+ if (required && required.length > 0) {
1274
+ return indexOrderingSatisfies(indexOrdering, required, new Set(eqCols))
1275
+ ? { providesOrdering: required, orderingIndexName: index.name }
1276
+ : {};
1277
+ }
1278
+ return { providesOrdering: indexOrdering, orderingIndexName: index.name };
1279
+ }
1280
+ /**
1281
+ * True when `indexOrdering` (an index's declared column order, already truncated to its
1282
+ * order-preserving prefix) satisfies `required` — the position-for-position match of
1283
+ * `MemoryTableModule.indexSatisfiesOrdering`, over {@link OrderingSpec}s instead of a
1284
+ * schema. Leading pinned columns are skipped before aligning. Any explicit `nullsFirst`
1285
+ * declines — see {@link buildIndexOrderingAdvertisement}. An under-length index (fewer
1286
+ * unpinned columns than required keys) declines rather than claiming a prefix:
1287
+ * `orderingMatches` upstream would reject the short claim anyway, so emitting it would
1288
+ * only mislead.
1289
+ *
1290
+ * The mid-loop skip (a pinned column encountered AFTER the matched prefix, which a
1291
+ * constant column between two ordered ones would need) is kept for exact parity with the
1292
+ * memory module, where the pinned set can be non-contiguous. It is unreachable from THIS
1293
+ * caller: `pinnedCols` is `resolveEqualityPins`' `cols`, which stops at the first
1294
+ * unpinned index column, so the leading skip above already consumes every pinned column.
1295
+ */
1296
+ function indexOrderingSatisfies(indexOrdering, required, pinnedCols) {
1297
+ let i = 0; // pointer into indexOrdering
1298
+ let j = 0; // pointer into required
1299
+ while (i < indexOrdering.length && pinnedCols.has(indexOrdering[i].columnIndex))
1300
+ i++;
1301
+ while (j < required.length) {
1302
+ if (required[j].nullsFirst !== undefined)
1303
+ return false;
1304
+ if (i >= indexOrdering.length)
1305
+ return false;
1306
+ if (required[j].columnIndex === indexOrdering[i].columnIndex
1307
+ && required[j].desc === indexOrdering[i].desc) {
1308
+ i++;
1309
+ j++;
1310
+ continue;
1311
+ }
1312
+ if (pinnedCols.has(indexOrdering[i].columnIndex)) {
1313
+ i++;
1314
+ continue;
1315
+ }
1316
+ return false;
1317
+ }
1318
+ return true;
1319
+ }
985
1320
  // --- StoreTableModule interface implementation ---
986
1321
  //# sourceMappingURL=store-module-access-plan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store-module-access-plan.js","sourceRoot":"","sources":["../../../src/common/store-module-access-plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store-module-access-plan.js","sourceRoot":"","sources":["../../../src/common/store-module-access-plan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"store-module-alter.d.ts","sourceRoot":"","sources":["../../../src/common/store-module-alter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAEX,QAAQ,EACR,kBAAkB,EAElB,gBAAgB,EAGhB,WAAW,EACX,MAAM,kBAAkB,CAAC;AAyB1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAIxE,8BAAsB,gBAAiB,SAAQ,sBAAsB;IACpE;;;;;;;OAOG;IACG,UAAU,CACf,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,gBAAgB,EACxB,IAAI,CAAC,EAAE,kBAAkB,GACvB,OAAO,CAAC,WAAW,CAAC;IAyFvB;;;;;;;;OAQG;YACW,cAAc;IAwG5B;;uBAEmB;YACL,eAAe;IA6G7B;+FAC2F;YAC7E,iBAAiB;IAuG/B;0EACsE;YACxD,qBAAqB;IAyDnC;iGAC6F;YAC/E,kBAAkB;IAwEhC;oEACgE;YAClD,mBAAmB;IAmCjC;;;6FAGyF;YAC3E,qBAAqB;CAmCnC"}
1
+ {"version":3,"file":"store-module-alter.d.ts","sourceRoot":"","sources":["../../../src/common/store-module-alter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAEX,QAAQ,EACR,kBAAkB,EAElB,gBAAgB,EAGhB,WAAW,EACX,MAAM,kBAAkB,CAAC;AAyB1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAIxE,8BAAsB,gBAAiB,SAAQ,sBAAsB;IACpE;;;;;;;OAOG;IACG,UAAU,CACf,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,gBAAgB,EACxB,IAAI,CAAC,EAAE,kBAAkB,GACvB,OAAO,CAAC,WAAW,CAAC;IAmGvB;;;;;;;;OAQG;YACW,cAAc;IAwG5B;;uBAEmB;YACL,eAAe;IA6G7B;+FAC2F;YAC7E,iBAAiB;IAuG/B;0EACsE;YACxD,qBAAqB;IAyDnC;iGAC6F;YAC/E,kBAAkB;IAwEhC;oEACgE;YAClD,mBAAmB;IAmCjC;;;6FAGyF;YAC3E,qBAAqB;CAmCnC"}
@@ -67,6 +67,15 @@ export class StoreModuleAlter extends StoreModuleAlterColumn {
67
67
  throw new QuereusError(`Unhandled ALTER TABLE change type '${change.type}'`, StatusCode.INTERNAL);
68
68
  }
69
69
  }
70
+ // Keep the persisted ANALYZE snapshot's column keys in step with the column set. The
71
+ // engine prunes statistics naming a column the schema no longer has, but it cannot
72
+ // see a name that was FREED and then reused — the stale entry then names a column
73
+ // that genuinely exists. Correcting the record at the moment the name is freed is
74
+ // what makes the fix survive a reopen. Owns the per-form decision itself, so a new
75
+ // ALTER form has to be considered there rather than skipping this silently.
76
+ // Ahead of the reconcile below, whose failure window would otherwise leave a freed
77
+ // name in the record on an IO error the arm itself survived.
78
+ await table.remapPersistedColumnStatistics(change);
70
79
  // Move the physical `_uc_*` index stores to match the post-ALTER constraint set:
71
80
  // the SCHEMA entries were re-materialized by the arm's `table.updateSchema`, but a
72
81
  // newly-added constraint's store must be BUILT and a dropped/renamed one's TORN