@quereus/store 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.
- package/README.md +761 -702
- package/dist/src/common/cost-profile.d.ts +32 -0
- package/dist/src/common/cost-profile.d.ts.map +1 -1
- package/dist/src/common/cost-profile.js +30 -0
- package/dist/src/common/cost-profile.js.map +1 -1
- package/dist/src/common/events.d.ts +18 -28
- package/dist/src/common/events.d.ts.map +1 -1
- package/dist/src/common/events.js.map +1 -1
- package/dist/src/common/index.d.ts +1 -0
- package/dist/src/common/index.d.ts.map +1 -1
- package/dist/src/common/index.js +5 -0
- package/dist/src/common/index.js.map +1 -1
- package/dist/src/common/memory-store.d.ts +9 -0
- package/dist/src/common/memory-store.d.ts.map +1 -1
- package/dist/src/common/memory-store.js +11 -0
- package/dist/src/common/memory-store.js.map +1 -1
- package/dist/src/common/pk-key-resolution.d.ts +34 -0
- package/dist/src/common/pk-key-resolution.d.ts.map +1 -1
- package/dist/src/common/pk-key-resolution.js +47 -0
- package/dist/src/common/pk-key-resolution.js.map +1 -1
- package/dist/src/common/store-module-access-plan.d.ts +8 -0
- package/dist/src/common/store-module-access-plan.d.ts.map +1 -1
- package/dist/src/common/store-module-access-plan.js +362 -19
- package/dist/src/common/store-module-access-plan.js.map +1 -1
- package/dist/src/common/store-module-alter.d.ts.map +1 -1
- package/dist/src/common/store-module-alter.js +2 -3
- package/dist/src/common/store-module-alter.js.map +1 -1
- package/dist/src/common/store-module-schema-sync.d.ts.map +1 -1
- package/dist/src/common/store-module-schema-sync.js +6 -0
- package/dist/src/common/store-module-schema-sync.js.map +1 -1
- package/dist/src/common/store-table-scan.d.ts.map +1 -1
- package/dist/src/common/store-table-scan.js +19 -1
- package/dist/src/common/store-table-scan.js.map +1 -1
- package/dist/src/testing/index.d.ts +12 -0
- package/dist/src/testing/index.d.ts.map +1 -1
- package/dist/src/testing/index.js +12 -0
- package/dist/src/testing/index.js.map +1 -1
- package/dist/src/testing/kv-counting-store.d.ts +96 -0
- package/dist/src/testing/kv-counting-store.d.ts.map +1 -0
- package/dist/src/testing/kv-counting-store.js +226 -0
- package/dist/src/testing/kv-counting-store.js.map +1 -0
- package/dist/src/testing/kv-delegating-store.d.ts +28 -0
- package/dist/src/testing/kv-delegating-store.d.ts.map +1 -0
- package/dist/src/testing/kv-delegating-store.js +47 -0
- package/dist/src/testing/kv-delegating-store.js.map +1 -0
- package/dist/src/testing/memory-provider.d.ts +51 -0
- package/dist/src/testing/memory-provider.d.ts.map +1 -0
- package/dist/src/testing/memory-provider.js +124 -0
- package/dist/src/testing/memory-provider.js.map +1 -0
- 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.
|
|
@@ -585,13 +752,21 @@ function primaryKeyMultiSeekPlan(tableInfo, request, pkColumns, pins, estimatedR
|
|
|
585
752
|
// artifact (contrast the secondary arm's), and no separate `profile.pointRead` term: the
|
|
586
753
|
// point read IS the row read, with no index-entry → row indirection to charge for.
|
|
587
754
|
//
|
|
588
|
-
// NOTE: this arm is therefore
|
|
589
|
-
//
|
|
590
|
-
//
|
|
591
|
-
//
|
|
592
|
-
//
|
|
593
|
-
//
|
|
594
|
-
//
|
|
755
|
+
// NOTE: this arm is therefore OVER-charged on a backend that declares an expensive
|
|
756
|
+
// profile — `profile.seekPositioning` prices "position an index window AND read the row
|
|
757
|
+
// it names", and here there is no index window (IndexedDB: ≈ 3 units of real cost,
|
|
758
|
+
// charged 5). Accepted rather than split into a third knob: a second multi-seek term
|
|
759
|
+
// would double the tuning surface to model a bias whose only effect is that a very
|
|
760
|
+
// large `where pk in (…)` prefers a scan slightly sooner than it should.
|
|
761
|
+
//
|
|
762
|
+
// That acceptance was priced on IndexedDB's 1.7x bias. LevelDB's 2026-08-19 read-cost
|
|
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
|
|
767
|
+
// declares one today, but it is now the reason a measured backend CANNOT declare —
|
|
768
|
+
// tracked as `backlog/debt-store-seek-positioning-conflates-two-arms`, with the numbers
|
|
769
|
+
// in `packages/quereus-plugin-leveldb/README.md` § Measured read cost.
|
|
595
770
|
//
|
|
596
771
|
// `Math.max(1, …)` is LOAD-BEARING, not defensive. `rows: 0` on a plan that claims
|
|
597
772
|
// every filter makes `rule-select-access-path` replace the whole table access with an
|
|
@@ -754,6 +929,13 @@ function tryIndexAccessPlan(db, tableInfo, request, index, estimatedRows, profil
|
|
|
754
929
|
/** The arm's shape plus one per-fetched-row resolution term at the given price. */
|
|
755
930
|
const seekingArm = (pointRead) => armShape().addCost(rows * pointRead);
|
|
756
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}.)
|
|
757
939
|
const plan = armShape()
|
|
758
940
|
.setHandledFilters(new Array(request.filters.length).fill(false))
|
|
759
941
|
.setExplanation(`Store index scan on ${index.name} (${why})`)
|
|
@@ -809,7 +991,10 @@ function tryIndexAccessPlan(db, tableInfo, request, index, estimatedRows, profil
|
|
|
809
991
|
// per-seek positioning term keeps a 500-key IN over a 10-row table from pricing
|
|
810
992
|
// below a full scan and issuing 500 seeks to read 10 rows. `isSet` false mirrors
|
|
811
993
|
// MemoryTableModule.evaluateIndexAccess's setIsSet(!isMultiSeek). No ordering is
|
|
812
|
-
// advertised —
|
|
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`.
|
|
813
998
|
//
|
|
814
999
|
// **This arm pays the per-row `profile.pointRead` exactly when `statsBacked`.** It
|
|
815
1000
|
// resolves every entry it matches, like the single-window arms do, so the physics
|
|
@@ -878,12 +1063,20 @@ function tryIndexAccessPlan(db, tableInfo, request, index, estimatedRows, profil
|
|
|
878
1063
|
const armLabel = arm === 'prefixRange'
|
|
879
1064
|
? `prefix-range seek(prefix=${eqCols.length})`
|
|
880
1065
|
: arm === 'range' ? 'range scan' : 'seek';
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
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
|
+
};
|
|
887
1080
|
return {
|
|
888
1081
|
plan,
|
|
889
1082
|
// Statistics-backed: `rows` discriminates per query, so the backend's DECLARED price
|
|
@@ -917,7 +1110,18 @@ function tryIndexAccessPlan(db, tableInfo, request, index, estimatedRows, profil
|
|
|
917
1110
|
* `monotonicOn` reflects the access path itself and is independent of any
|
|
918
1111
|
* `requiredOrdering`; it always advertises the leading PK column. Strict
|
|
919
1112
|
* monotonicity is claimed iff the PK is single-column — composite PKs can
|
|
920
|
-
* 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.
|
|
921
1125
|
*
|
|
922
1126
|
* Returns an empty object when there is no PK (heap-only table) — without a
|
|
923
1127
|
* leading key column there is no natural emit order.
|
|
@@ -928,18 +1132,33 @@ function tryIndexAccessPlan(db, tableInfo, request, index, estimatedRows, profil
|
|
|
928
1132
|
* PK members those two orders provably agree on: the advertisement is truncated to that
|
|
929
1133
|
* prefix, and voided entirely when even the leading member disagrees — otherwise the
|
|
930
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.
|
|
931
1142
|
*/
|
|
932
1143
|
function buildPkOrderingAdvertisement(tableInfo, request, orderPreservingPrefix) {
|
|
933
1144
|
const pk = tableInfo.primaryKeyDefinition;
|
|
934
1145
|
if (pk.length === 0 || orderPreservingPrefix === 0)
|
|
935
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 {};
|
|
936
1155
|
const leading = pk[0];
|
|
937
1156
|
const monotonicOn = {
|
|
938
1157
|
columnIndex: leading.index,
|
|
939
1158
|
direction: leading.desc ? 'desc' : 'asc',
|
|
940
1159
|
strict: pk.length === 1,
|
|
941
1160
|
};
|
|
942
|
-
const pkOrdering = pk.slice(0,
|
|
1161
|
+
const pkOrdering = pk.slice(0, claimablePrefix).map(col => ({
|
|
943
1162
|
columnIndex: col.index,
|
|
944
1163
|
desc: !!col.desc,
|
|
945
1164
|
}));
|
|
@@ -974,5 +1193,129 @@ function buildPkOrderingAdvertisement(tableInfo, request, orderPreservingPrefix)
|
|
|
974
1193
|
supportsAsofRight: true,
|
|
975
1194
|
};
|
|
976
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
|
+
}
|
|
977
1320
|
// --- StoreTableModule interface implementation ---
|
|
978
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;
|
|
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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* StoreModuleBase -> StoreModuleCatalog -> StoreModuleSchemaSync -> StoreModuleIndex
|
|
9
9
|
* -> StoreModuleAlterColumn -> StoreModuleAlter -> StoreModuleRename -> StoreModule
|
|
10
10
|
*/
|
|
11
|
-
import { QuereusError, StatusCode, buildCheckConstraintSchema, buildColumnIndexMap, buildForeignKeyConstraintSchema, buildColumnSourceResolver, buildObjectRefResolver, buildUniqueConstraintSchema, collectTableConstraintNames, columnDefToSchema, foldDefaultToType, objectRefKey, rekeySchemaPrimaryKey, renameColumnInCheckConstraints, renameColumnInColumnExpressions, renameColumnInIndexPredicates, resolveNamedConstraintClass, shiftSchemaIndicesForDrop, validateForeignKeyOverExistingRows, } from '@quereus/quereus';
|
|
11
|
+
import { QuereusError, StatusCode, alterEventShape, buildCheckConstraintSchema, buildColumnIndexMap, buildForeignKeyConstraintSchema, buildColumnSourceResolver, buildObjectRefResolver, buildUniqueConstraintSchema, collectTableConstraintNames, columnDefToSchema, foldDefaultToType, objectRefKey, rekeySchemaPrimaryKey, renameColumnInCheckConstraints, renameColumnInColumnExpressions, renameColumnInIndexPredicates, resolveNamedConstraintClass, shiftSchemaIndicesForDrop, validateForeignKeyOverExistingRows, } from '@quereus/quereus';
|
|
12
12
|
import { withImplicitUniqueIndexes } from './implicit-unique-index.js';
|
|
13
13
|
import { StoreModuleAlterColumn } from './store-module-alter-column.js';
|
|
14
14
|
import { effectiveDdlRows, validateUniqueOverExistingRows } from './store-module-index-build.js';
|
|
@@ -94,8 +94,7 @@ export class StoreModuleAlter extends StoreModuleAlterColumn {
|
|
|
94
94
|
// exactly one announced event. See `SchemaChangeInfo.ddl`.
|
|
95
95
|
if (change.ddl !== undefined) {
|
|
96
96
|
this.eventEmitter?.emitSchemaChange({
|
|
97
|
-
|
|
98
|
-
objectType: 'table',
|
|
97
|
+
...alterEventShape(change),
|
|
99
98
|
schemaName,
|
|
100
99
|
objectName: tableName,
|
|
101
100
|
ddl: change.ddl,
|