@quereus/quereus 4.22.0 → 4.24.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 (153) hide show
  1. package/dist/src/core/database-cardinality-feedback.d.ts +133 -20
  2. package/dist/src/core/database-cardinality-feedback.d.ts.map +1 -1
  3. package/dist/src/core/database-cardinality-feedback.js +312 -39
  4. package/dist/src/core/database-cardinality-feedback.js.map +1 -1
  5. package/dist/src/core/database.d.ts +1 -0
  6. package/dist/src/core/database.d.ts.map +1 -1
  7. package/dist/src/core/database.js +14 -6
  8. package/dist/src/core/database.js.map +1 -1
  9. package/dist/src/core/statement.d.ts +6 -1
  10. package/dist/src/core/statement.d.ts.map +1 -1
  11. package/dist/src/core/statement.js +11 -2
  12. package/dist/src/core/statement.js.map +1 -1
  13. package/dist/src/func/builtins/cardinality-feedback.d.ts +6 -0
  14. package/dist/src/func/builtins/cardinality-feedback.d.ts.map +1 -1
  15. package/dist/src/func/builtins/cardinality-feedback.js +55 -3
  16. package/dist/src/func/builtins/cardinality-feedback.js.map +1 -1
  17. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  18. package/dist/src/func/builtins/explain.js +3 -1
  19. package/dist/src/func/builtins/explain.js.map +1 -1
  20. package/dist/src/func/builtins/index.d.ts.map +1 -1
  21. package/dist/src/func/builtins/index.js +2 -1
  22. package/dist/src/func/builtins/index.js.map +1 -1
  23. package/dist/src/index.d.ts +3 -1
  24. package/dist/src/index.d.ts.map +1 -1
  25. package/dist/src/index.js +1 -0
  26. package/dist/src/index.js.map +1 -1
  27. package/dist/src/planner/cost/index.d.ts +27 -19
  28. package/dist/src/planner/cost/index.d.ts.map +1 -1
  29. package/dist/src/planner/cost/index.js +30 -21
  30. package/dist/src/planner/cost/index.js.map +1 -1
  31. package/dist/src/planner/framework/trace.js +2 -2
  32. package/dist/src/planner/framework/trace.js.map +1 -1
  33. package/dist/src/planner/nodes/aggregate-node.d.ts +2 -1
  34. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  35. package/dist/src/planner/nodes/aggregate-node.js +1 -0
  36. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  37. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  38. package/dist/src/planner/nodes/filter.js +5 -10
  39. package/dist/src/planner/nodes/filter.js.map +1 -1
  40. package/dist/src/planner/nodes/hash-aggregate.d.ts +2 -1
  41. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  42. package/dist/src/planner/nodes/hash-aggregate.js +1 -0
  43. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  44. package/dist/src/planner/nodes/plan-node.d.ts +16 -3
  45. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  46. package/dist/src/planner/nodes/plan-node.js +3 -0
  47. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  48. package/dist/src/planner/nodes/reference.d.ts +3 -3
  49. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  50. package/dist/src/planner/nodes/reference.js +16 -12
  51. package/dist/src/planner/nodes/reference.js.map +1 -1
  52. package/dist/src/planner/nodes/stream-aggregate.d.ts +2 -1
  53. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  54. package/dist/src/planner/nodes/stream-aggregate.js +1 -0
  55. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  56. package/dist/src/planner/nodes/table-access-nodes.d.ts +14 -1
  57. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  58. package/dist/src/planner/nodes/table-access-nodes.js +52 -20
  59. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  60. package/dist/src/planner/optimizer-tuning.d.ts +42 -9
  61. package/dist/src/planner/optimizer-tuning.d.ts.map +1 -1
  62. package/dist/src/planner/optimizer-tuning.js +9 -4
  63. package/dist/src/planner/optimizer-tuning.js.map +1 -1
  64. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts +9 -0
  65. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
  66. package/dist/src/planner/rules/access/rule-key-set-seek.js +18 -12
  67. package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
  68. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  69. package/dist/src/planner/rules/access/rule-select-access-path.js +7 -8
  70. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  71. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +1 -1
  72. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -1
  73. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -1
  74. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +7 -0
  75. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -1
  76. package/dist/src/planner/rules/join/index-nested-loop.d.ts +6 -2
  77. package/dist/src/planner/rules/join/index-nested-loop.d.ts.map +1 -1
  78. package/dist/src/planner/rules/join/index-nested-loop.js +20 -14
  79. package/dist/src/planner/rules/join/index-nested-loop.js.map +1 -1
  80. package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts.map +1 -1
  81. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +5 -0
  82. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js.map +1 -1
  83. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts +6 -4
  84. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -1
  85. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +10 -7
  86. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  87. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  88. package/dist/src/planner/rules/join/rule-join-physical-selection.js +108 -53
  89. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  90. package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts +1 -1
  91. package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts.map +1 -1
  92. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +15 -6
  93. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
  94. package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts.map +1 -1
  95. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js +9 -1
  96. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +1 -1
  97. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.d.ts +2 -1
  98. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.d.ts.map +1 -1
  99. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.js +6 -5
  100. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.js.map +1 -1
  101. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.d.ts +4 -3
  102. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.d.ts.map +1 -1
  103. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js +4 -3
  104. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js.map +1 -1
  105. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.d.ts +4 -3
  106. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.d.ts.map +1 -1
  107. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.js +5 -4
  108. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.js.map +1 -1
  109. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  110. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +4 -3
  111. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  112. package/dist/src/planner/stats/catalog-stats.d.ts +8 -8
  113. package/dist/src/planner/stats/catalog-stats.d.ts.map +1 -1
  114. package/dist/src/planner/stats/catalog-stats.js +10 -10
  115. package/dist/src/planner/stats/catalog-stats.js.map +1 -1
  116. package/dist/src/planner/stats/table-cardinality.d.ts +119 -30
  117. package/dist/src/planner/stats/table-cardinality.d.ts.map +1 -1
  118. package/dist/src/planner/stats/table-cardinality.js +137 -29
  119. package/dist/src/planner/stats/table-cardinality.js.map +1 -1
  120. package/dist/src/planner/util/relative-rows.d.ts +29 -0
  121. package/dist/src/planner/util/relative-rows.d.ts.map +1 -0
  122. package/dist/src/planner/util/relative-rows.js +67 -0
  123. package/dist/src/planner/util/relative-rows.js.map +1 -0
  124. package/dist/src/planner/util/row-estimates.d.ts +23 -0
  125. package/dist/src/planner/util/row-estimates.d.ts.map +1 -1
  126. package/dist/src/planner/util/row-estimates.js +29 -0
  127. package/dist/src/planner/util/row-estimates.js.map +1 -1
  128. package/dist/src/runtime/cardinality-observations.d.ts +62 -7
  129. package/dist/src/runtime/cardinality-observations.d.ts.map +1 -1
  130. package/dist/src/runtime/cardinality-observations.js +74 -8
  131. package/dist/src/runtime/cardinality-observations.js.map +1 -1
  132. package/dist/src/runtime/emit/scan.d.ts +1 -1
  133. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  134. package/dist/src/runtime/emit/scan.js +78 -10
  135. package/dist/src/runtime/emit/scan.js.map +1 -1
  136. package/dist/src/schema/manager.d.ts +5 -5
  137. package/dist/src/schema/manager.d.ts.map +1 -1
  138. package/dist/src/schema/manager.js +9 -5
  139. package/dist/src/schema/manager.js.map +1 -1
  140. package/dist/src/vtab/cost-profile.d.ts +61 -0
  141. package/dist/src/vtab/cost-profile.d.ts.map +1 -0
  142. package/dist/src/vtab/cost-profile.js +52 -0
  143. package/dist/src/vtab/cost-profile.js.map +1 -0
  144. package/dist/src/vtab/filter-info.d.ts +16 -0
  145. package/dist/src/vtab/filter-info.d.ts.map +1 -1
  146. package/dist/src/vtab/filter-info.js +29 -0
  147. package/dist/src/vtab/filter-info.js.map +1 -1
  148. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  149. package/dist/src/vtab/memory/module.js +5 -3
  150. package/dist/src/vtab/memory/module.js.map +1 -1
  151. package/dist/src/vtab/module.d.ts +53 -9
  152. package/dist/src/vtab/module.d.ts.map +1 -1
  153. package/package.json +3 -3
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * Reads real statistics from TableSchema.statistics (populated by ANALYZE or VTab)
5
5
  * and falls back to NaiveStatsProvider heuristics when unavailable. Table row
6
- * counts additionally consult the observed row-count overlay first (see
7
- * `plannedRowCount`); column statistics never do.
6
+ * counts additionally consult the table's module and the observed row-count overlay
7
+ * (see `plannedRowCount`); column statistics never do.
8
8
  */
9
9
  import { NaiveStatsProvider } from './index.js';
10
10
  import { createLogger } from '../../common/logger.js';
@@ -28,22 +28,22 @@ const lowerBound = (value) => ({ kind: 'lowerBound', value });
28
28
  * Falls back to a NaiveStatsProvider when real statistics are not available.
29
29
  */
30
30
  export class CatalogStatsProvider {
31
- observed;
31
+ sources;
32
32
  fallback;
33
33
  /**
34
- * @param observed The owning database's observed row-count overlay. Must be the
35
- * same overlay `TableReferenceNode` reads through its `SchemaManager`, or scan
36
- * cardinality and selectivity denominators disagree.
34
+ * @param sources The owning database's row-count sources. Must be the same object
35
+ * `TableReferenceNode` reads through its `SchemaManager`, or scan cardinality and
36
+ * selectivity denominators disagree.
37
37
  */
38
- constructor(fallback, observed) {
39
- this.observed = observed;
38
+ constructor(fallback, sources) {
39
+ this.sources = sources;
40
40
  this.fallback = fallback ?? new NaiveStatsProvider();
41
41
  }
42
42
  tableRows(table) {
43
- const rows = plannedRowCount(table, this.observed);
43
+ const rows = plannedRowCount(table, this.sources);
44
44
  if (rows === undefined)
45
45
  return this.fallback.tableRows(table);
46
- log('Table %s: rowCount=%d (source: observed or catalog)', table.name, rows);
46
+ log('Table %s: rowCount=%d (source: module, observed or catalog)', table.name, rows);
47
47
  return rows;
48
48
  }
49
49
  selectivity(table, predicate, resolve) {
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-stats.js","sourceRoot":"","sources":["../../../../src/planner/stats/catalog-stats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog-stats.js","sourceRoot":"","sources":["../../../../src/planner/stats/catalog-stats.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,23 @@
1
1
  /**
2
2
  * The base-table row-count seam.
3
3
  *
4
- * Every planner reading of a base table's size goes through {@link plannedRowCount}:
5
- * the count observed during execution (the per-database overlay, see
6
- * `core/database-cardinality-feedback.ts`), else the catalog's count, else
7
- * `undefined`. `TableReferenceNode` (every scan's base cardinality, and the
4
+ * Every planner reading of a base table's size goes through {@link plannedRowCount},
5
+ * which ranks four sources (docs/progressive-optimizer.md §3.3): an exact count the
6
+ * table's module maintains (`VirtualTableModule.getRowCount`), the count observed
7
+ * during execution (the per-database overlay, see `core/database-cardinality-feedback.ts`),
8
+ * an approximate module count, the catalog's count — else `undefined`.
9
+ * `TableReferenceNode` (every scan's base cardinality, and the
8
10
  * `BestAccessPlanRequest.estimatedRows` hint) and `CatalogStatsProvider.tableRows`
9
- * (selectivity denominators, MV sizing) both call it, so scan cardinality and the
10
- * stats-provider estimate cannot drift apart within one plan.
11
+ * (selectivity denominators, MV sizing) both call it with the database's one
12
+ * {@link RowCountSources}, so scan cardinality and the stats-provider estimate cannot
13
+ * drift apart within one plan.
14
+ *
15
+ * The same sources carry the overlay's observed rows per key of an equality seek,
16
+ * read through {@link plannedRowsPerKey} by `IndexSeekNode` (what the seek advertises)
17
+ * and the index-nested-loop candidate (what one seek costs). That reader overrides only
18
+ * the engine's own consumers of a module's `rows` estimate; the module's cost, its
19
+ * `rows` and its access-path choice stay in the module's currency
20
+ * (docs/optimizer-costing.md § Where a module's own SELECTIVITY fits).
11
21
  *
12
22
  * There are exactly two spellings: `undefined` means "nobody knows" and a number —
13
23
  * including a real 0 — means "measured". `undefined` must stay `undefined` here:
@@ -15,24 +25,33 @@
15
25
  * folding a default in would change every un-analyzed table's cardinality.
16
26
  *
17
27
  * NOTE: the catalog `rowCount` is a snapshot from the last `ANALYZE` — rows written
18
- * afterwards are invisible until the next one (or until a complete scan is observed).
28
+ * afterwards are invisible until the next one (or until a complete scan is observed),
29
+ * unless the module reports its own count.
19
30
  *
20
- * NOTE: a real 0 (analyzed or observed empty table) is distinct from `undefined`,
21
- * but the `estimatedRows || default` spellings in `rule-select-access-path`,
22
- * `rule-grow-retrieve` and `IndexSeekNode.computePhysical` collapse the two and
23
- * substitute their default — so a measured empty table reaches `getBestAccessPlan`
24
- * as "unknown" (1000) while a SeqScan over it reports 0. Harmless today (any plan
25
- * over 0 rows is cheap); switch those to `??` if an empty-table plan ever costs out
26
- * wrong.
31
+ * A real 0 (analyzed or observed empty table) is relayed as 0 everywhere a row count is
32
+ * reported. Sites that turn a count into a COST floor a measured 0 at one row instead
33
+ * (`costedRows` in `planner/util/row-estimates.ts`; the store's request sizing floors
34
+ * its own): a zero goes stale on the first insert, and a table priced at nothing would
35
+ * trade its primary-key seeks for scans (docs/optimizer-costing.md § Base-table row
36
+ * estimates).
27
37
  */
28
38
  import type { TableSchema } from '../../schema/table.js';
39
+ import type { Database } from '../../core/database.js';
40
+ import type { ModuleRowCount } from '../../vtab/module.js';
41
+ /** What execution has shown of one table's size: an exact count, a floor, or both. */
42
+ export interface ObservedRowCount {
43
+ /** Exact row count from the latest complete read; absent when the table is known only from below. */
44
+ readonly rows?: number;
45
+ /** The table holds at least this many rows, proven by a read of part of it. */
46
+ readonly atLeast?: number;
47
+ }
29
48
  /**
30
- * Exact table sizes observed during execution. Answers only for the `TableSchema`
31
- * object the count was observed against, so any schema swap (`ANALYZE`, `ALTER`,
32
- * drop and re-create) silences an entry.
49
+ * Table sizes observed during execution. Answers only for the `TableSchema` object the
50
+ * observation was made against, so any schema swap (`ANALYZE`, `ALTER`, drop and
51
+ * re-create) silences an entry.
33
52
  */
34
53
  export interface ObservedRowCounts {
35
- observedRows(table: TableSchema): number | undefined;
54
+ observedRows(table: TableSchema): ObservedRowCount | undefined;
36
55
  }
37
56
  /**
38
57
  * The catalog's row count — `TableSchema.statistics`, populated by `ANALYZE` or VTab
@@ -45,18 +64,88 @@ export interface ObservedRowCounts {
45
64
  */
46
65
  export declare function catalogRowCount(table: TableSchema): number | undefined;
47
66
  /**
48
- * The base-table row count the planner uses: observed, else catalog (`ANALYZE`), else
49
- * `undefined` (unknown). The overlay wins because an entry only answers for the exact
50
- * `TableSchema` it was observed under and any `ANALYZE` swaps that object — an
51
- * answering entry is always newer than the catalog numbers on the schema it names.
52
- * Only the row count is overridden; column statistics are untouched.
67
+ * Rows per key observed during execution for equality seeks through non-unique indexes,
68
+ * per table and equality column set (docs/progressive-optimizer.md §3.1). Same validity
69
+ * rule as {@link ObservedRowCounts}: an entry answers only for the `TableSchema` object it
70
+ * was observed against.
71
+ */
72
+ export interface ObservedKeyCardinalities {
73
+ /**
74
+ * The running mean of rows one key of `columns` matched on `table`, or undefined when
75
+ * nothing is held for that set. `columns` are sorted, de-duplicated base-column indexes
76
+ * — the spelling `equalitySeekKeyColumns` (`vtab/filter-info.ts`) produces.
77
+ */
78
+ observedRowsPerKey(table: TableSchema, columns: readonly number[]): number | undefined;
79
+ }
80
+ /**
81
+ * Everything {@link plannedRowCount} and {@link plannedRowsPerKey} rank besides the
82
+ * catalog. One per `Database` ({@link databaseRowCountSources}), shared by every planner
83
+ * reader.
84
+ */
85
+ export interface RowCountSources extends ObservedRowCounts, ObservedKeyCardinalities {
86
+ /** The table's module's own count — {@link reportedRowCount}. */
87
+ reportedRows(table: TableSchema): ModuleRowCount | undefined;
88
+ }
89
+ /** What {@link plannedRowCount} ranks: the overlay's counts and the module's, not the overlay's rows per key. */
90
+ export type RankedRowCountSources = Pick<RowCountSources, 'observedRows' | 'reportedRows'>;
91
+ /** The database's row-count sources: its observed overlay, and its tables' modules. */
92
+ export declare function databaseRowCountSources(db: Database, observed: ObservedRowCounts & ObservedKeyCardinalities): RowCountSources;
93
+ /** True when `table`'s registered module implements `VirtualTableModule.getRowCount`, whether or not it answers now. */
94
+ export declare function moduleReportsRowCount(db: Database, table: TableSchema): boolean;
95
+ /**
96
+ * Asks `table`'s registered module for its count (`VirtualTableModule.getRowCount`).
97
+ * A hint, so a module without the hook, a throw, or a malformed answer (`rows` not a
98
+ * non-negative integer) is `undefined` — a failed hint must never fail planning.
99
+ */
100
+ export declare function reportedRowCount(db: Database, table: TableSchema): ModuleRowCount | undefined;
101
+ /**
102
+ * The base-table row count the planner uses, first answer wins:
103
+ *
104
+ * 1. an exact module count — maintained on every write, so it is the truth now and any
105
+ * snapshot below is older;
106
+ * 2. the overlay's observed count — an entry only answers for the exact `TableSchema`
107
+ * it was observed under and any `ANALYZE` swaps that object, so it is newer than the
108
+ * catalog numbers on the schema it names;
109
+ * 3. an approximate module count — below a measurement this session made, because an
110
+ * estimate can be off by more than the overlay's shift factor and only a complete
111
+ * scan can correct it; above the catalog, because it describes the table now;
112
+ * 4. the catalog (`ANALYZE`) count;
113
+ * 5. `undefined` (unknown).
114
+ *
115
+ * The overlay's floor then raises whatever answered from 2–4, and answers alone when
116
+ * nothing did (it was recorded only above the default). It never raises an exact module
117
+ * count: that is current, and a floor describes committed state at some earlier moment,
118
+ * so it cannot legitimately exceed it.
119
+ *
120
+ * The module is asked first so an exactly-sized table never touches the overlay, whose
121
+ * reads refresh its recency. Only the row count is overridden; column statistics are
122
+ * untouched.
123
+ *
124
+ * The result also becomes `BestAccessPlanRequest.estimatedRows`, so a module that reports
125
+ * its count prices its access path against the same number the rest of the plan uses —
126
+ * one size per plan.
127
+ */
128
+ export declare function plannedRowCount(table: TableSchema, sources: RankedRowCountSources | undefined): number | undefined;
129
+ /**
130
+ * The rows per key the planner prices a single-key equality seek on `columns` at, or
131
+ * `undefined` to leave the module's own estimate standing (docs/progressive-optimizer.md
132
+ * §3.3):
133
+ *
134
+ * 1. when the catalog's statistics cover the column set — `table.statistics` with a
135
+ * positive `rowCount` and a `columnStats` entry for every column — the catalog wins and
136
+ * nothing is overridden: the module's statistics-backed estimate is the engine's own
137
+ * `estimateLeaf` arithmetic over the same numbers, and the count rule (newest exact
138
+ * wins) does not transfer to a mean sampled under some bindings and not others.
139
+ * Coverage is all-or-nothing, the rule both shipped modules apply before mixing a
140
+ * measured factor with a shape constant;
141
+ * 2. otherwise the overlay's mean for the set, rounded and floored at one row — the
142
+ * module's `Math.max(1, …)` floor, so a key that matched nothing so far does not price a
143
+ * seek at nothing;
144
+ * 3. otherwise `undefined`.
53
145
  *
54
- * NOTE: accepted tradeoff — the result also becomes `BestAccessPlanRequest.estimatedRows`,
55
- * and a self-sizing module (`StoreModule.sizeRequestFromLiveCount`) honors a supplied
56
- * hint over its own running count, so between full scans it prices against the last
57
- * observed size instead of its live one; one size per plan weighed over the fresher
58
- * live count. Revisit when a module's live size reaches the planner
59
- * (`feat-planner-asks-the-backend-how-big-a-table-is`) — it should outrank the overlay.
146
+ * NOTE: catalog-wins is a first rule, not a measured one; an `ANALYZE` snapshot can be
147
+ * older than the mean. Reconsider only against a measured case where the stale catalog
148
+ * loses a plan the mean would have won.
60
149
  */
61
- export declare function plannedRowCount(table: TableSchema, observed: ObservedRowCounts | undefined): number | undefined;
150
+ export declare function plannedRowsPerKey(table: TableSchema, columns: readonly number[], sources: RowCountSources | undefined): number | undefined;
62
151
  //# sourceMappingURL=table-cardinality.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-cardinality.d.ts","sourceRoot":"","sources":["../../../../src/planner/stats/table-cardinality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;CACrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAEtE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE/G"}
1
+ {"version":3,"file":"table-cardinality.d.ts","sourceRoot":"","sources":["../../../../src/planner/stats/table-cardinality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAChC,qGAAqG;IACrG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,gBAAgB,GAAG,SAAS,CAAC;CAC/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAEtE;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACxC;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;CACvF;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,iBAAiB,EAAE,wBAAwB;IACnF,iEAAiE;IACjE,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;CAC7D;AAED,iHAAiH;AACjH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,cAAc,CAAC,CAAC;AAE3F,uFAAuF;AACvF,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,wBAAwB,GAAG,eAAe,CAM7H;AAED,wHAAwH;AACxH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,CAgB7F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKlH;AAOD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,OAAO,EAAE,eAAe,GAAG,SAAS,GAClC,MAAM,GAAG,SAAS,CAIpB"}
@@ -1,13 +1,23 @@
1
1
  /**
2
2
  * The base-table row-count seam.
3
3
  *
4
- * Every planner reading of a base table's size goes through {@link plannedRowCount}:
5
- * the count observed during execution (the per-database overlay, see
6
- * `core/database-cardinality-feedback.ts`), else the catalog's count, else
7
- * `undefined`. `TableReferenceNode` (every scan's base cardinality, and the
4
+ * Every planner reading of a base table's size goes through {@link plannedRowCount},
5
+ * which ranks four sources (docs/progressive-optimizer.md §3.3): an exact count the
6
+ * table's module maintains (`VirtualTableModule.getRowCount`), the count observed
7
+ * during execution (the per-database overlay, see `core/database-cardinality-feedback.ts`),
8
+ * an approximate module count, the catalog's count — else `undefined`.
9
+ * `TableReferenceNode` (every scan's base cardinality, and the
8
10
  * `BestAccessPlanRequest.estimatedRows` hint) and `CatalogStatsProvider.tableRows`
9
- * (selectivity denominators, MV sizing) both call it, so scan cardinality and the
10
- * stats-provider estimate cannot drift apart within one plan.
11
+ * (selectivity denominators, MV sizing) both call it with the database's one
12
+ * {@link RowCountSources}, so scan cardinality and the stats-provider estimate cannot
13
+ * drift apart within one plan.
14
+ *
15
+ * The same sources carry the overlay's observed rows per key of an equality seek,
16
+ * read through {@link plannedRowsPerKey} by `IndexSeekNode` (what the seek advertises)
17
+ * and the index-nested-loop candidate (what one seek costs). That reader overrides only
18
+ * the engine's own consumers of a module's `rows` estimate; the module's cost, its
19
+ * `rows` and its access-path choice stay in the module's currency
20
+ * (docs/optimizer-costing.md § Where a module's own SELECTIVITY fits).
11
21
  *
12
22
  * There are exactly two spellings: `undefined` means "nobody knows" and a number —
13
23
  * including a real 0 — means "measured". `undefined` must stay `undefined` here:
@@ -15,16 +25,18 @@
15
25
  * folding a default in would change every un-analyzed table's cardinality.
16
26
  *
17
27
  * NOTE: the catalog `rowCount` is a snapshot from the last `ANALYZE` — rows written
18
- * afterwards are invisible until the next one (or until a complete scan is observed).
19
- *
20
- * NOTE: a real 0 (analyzed or observed empty table) is distinct from `undefined`,
21
- * but the `estimatedRows || default` spellings in `rule-select-access-path`,
22
- * `rule-grow-retrieve` and `IndexSeekNode.computePhysical` collapse the two and
23
- * substitute their default — so a measured empty table reaches `getBestAccessPlan`
24
- * as "unknown" (1000) while a SeqScan over it reports 0. Harmless today (any plan
25
- * over 0 rows is cheap); switch those to `??` if an empty-table plan ever costs out
26
- * wrong.
28
+ * afterwards are invisible until the next one (or until a complete scan is observed),
29
+ * unless the module reports its own count.
30
+ *
31
+ * A real 0 (analyzed or observed empty table) is relayed as 0 everywhere a row count is
32
+ * reported. Sites that turn a count into a COST floor a measured 0 at one row instead
33
+ * (`costedRows` in `planner/util/row-estimates.ts`; the store's request sizing floors
34
+ * its own): a zero goes stale on the first insert, and a table priced at nothing would
35
+ * trade its primary-key seeks for scans (docs/optimizer-costing.md § Base-table row
36
+ * estimates).
27
37
  */
38
+ import { createLogger } from '../../common/logger.js';
39
+ const debugLog = createLogger('optimizer:stats:row-count').extend('debug');
28
40
  /**
29
41
  * The catalog's row count — `TableSchema.statistics`, populated by `ANALYZE` or VTab
30
42
  * reporting.
@@ -37,21 +49,117 @@
37
49
  export function catalogRowCount(table) {
38
50
  return table.statistics?.rowCount;
39
51
  }
52
+ /** The database's row-count sources: its observed overlay, and its tables' modules. */
53
+ export function databaseRowCountSources(db, observed) {
54
+ return {
55
+ observedRows: table => observed.observedRows(table),
56
+ observedRowsPerKey: (table, columns) => observed.observedRowsPerKey(table, columns),
57
+ reportedRows: table => reportedRowCount(db, table),
58
+ };
59
+ }
60
+ /** True when `table`'s registered module implements `VirtualTableModule.getRowCount`, whether or not it answers now. */
61
+ export function moduleReportsRowCount(db, table) {
62
+ return db.schemaManager.getModule(table.vtabModuleName)?.module.getRowCount !== undefined;
63
+ }
64
+ /**
65
+ * Asks `table`'s registered module for its count (`VirtualTableModule.getRowCount`).
66
+ * A hint, so a module without the hook, a throw, or a malformed answer (`rows` not a
67
+ * non-negative integer) is `undefined` — a failed hint must never fail planning.
68
+ */
69
+ export function reportedRowCount(db, table) {
70
+ const module = db.schemaManager.getModule(table.vtabModuleName)?.module;
71
+ if (!module?.getRowCount)
72
+ return undefined;
73
+ let answer;
74
+ try {
75
+ answer = module.getRowCount(db, table);
76
+ }
77
+ catch (e) {
78
+ debugLog('Ignored row count for %s.%s: module %s threw %O', table.schemaName, table.name, table.vtabModuleName, e);
79
+ return undefined;
80
+ }
81
+ if (answer === undefined)
82
+ return undefined;
83
+ if (!Number.isInteger(answer.rows) || answer.rows < 0) {
84
+ debugLog('Ignored row count for %s.%s: module %s answered %o', table.schemaName, table.name, table.vtabModuleName, answer);
85
+ return undefined;
86
+ }
87
+ return answer;
88
+ }
89
+ /**
90
+ * The base-table row count the planner uses, first answer wins:
91
+ *
92
+ * 1. an exact module count — maintained on every write, so it is the truth now and any
93
+ * snapshot below is older;
94
+ * 2. the overlay's observed count — an entry only answers for the exact `TableSchema`
95
+ * it was observed under and any `ANALYZE` swaps that object, so it is newer than the
96
+ * catalog numbers on the schema it names;
97
+ * 3. an approximate module count — below a measurement this session made, because an
98
+ * estimate can be off by more than the overlay's shift factor and only a complete
99
+ * scan can correct it; above the catalog, because it describes the table now;
100
+ * 4. the catalog (`ANALYZE`) count;
101
+ * 5. `undefined` (unknown).
102
+ *
103
+ * The overlay's floor then raises whatever answered from 2–4, and answers alone when
104
+ * nothing did (it was recorded only above the default). It never raises an exact module
105
+ * count: that is current, and a floor describes committed state at some earlier moment,
106
+ * so it cannot legitimately exceed it.
107
+ *
108
+ * The module is asked first so an exactly-sized table never touches the overlay, whose
109
+ * reads refresh its recency. Only the row count is overridden; column statistics are
110
+ * untouched.
111
+ *
112
+ * The result also becomes `BestAccessPlanRequest.estimatedRows`, so a module that reports
113
+ * its count prices its access path against the same number the rest of the plan uses —
114
+ * one size per plan.
115
+ */
116
+ export function plannedRowCount(table, sources) {
117
+ const reported = sources?.reportedRows(table);
118
+ if (reported?.exact)
119
+ return reported.rows;
120
+ const observed = sources?.observedRows(table);
121
+ return raiseToFloor(observed?.rows ?? reported?.rows ?? catalogRowCount(table), observed?.atLeast);
122
+ }
123
+ function raiseToFloor(rows, floor) {
124
+ if (floor === undefined)
125
+ return rows;
126
+ return rows === undefined ? floor : Math.max(rows, floor);
127
+ }
40
128
  /**
41
- * The base-table row count the planner uses: observed, else catalog (`ANALYZE`), else
42
- * `undefined` (unknown). The overlay wins because an entry only answers for the exact
43
- * `TableSchema` it was observed under and any `ANALYZE` swaps that object — an
44
- * answering entry is always newer than the catalog numbers on the schema it names.
45
- * Only the row count is overridden; column statistics are untouched.
46
- *
47
- * NOTE: accepted tradeoff — the result also becomes `BestAccessPlanRequest.estimatedRows`,
48
- * and a self-sizing module (`StoreModule.sizeRequestFromLiveCount`) honors a supplied
49
- * hint over its own running count, so between full scans it prices against the last
50
- * observed size instead of its live one; one size per plan weighed over the fresher
51
- * live count. Revisit when a module's live size reaches the planner
52
- * (`feat-planner-asks-the-backend-how-big-a-table-is`) — it should outrank the overlay.
129
+ * The rows per key the planner prices a single-key equality seek on `columns` at, or
130
+ * `undefined` to leave the module's own estimate standing (docs/progressive-optimizer.md
131
+ * §3.3):
132
+ *
133
+ * 1. when the catalog's statistics cover the column set — `table.statistics` with a
134
+ * positive `rowCount` and a `columnStats` entry for every column — the catalog wins and
135
+ * nothing is overridden: the module's statistics-backed estimate is the engine's own
136
+ * `estimateLeaf` arithmetic over the same numbers, and the count rule (newest exact
137
+ * wins) does not transfer to a mean sampled under some bindings and not others.
138
+ * Coverage is all-or-nothing, the rule both shipped modules apply before mixing a
139
+ * measured factor with a shape constant;
140
+ * 2. otherwise the overlay's mean for the set, rounded and floored at one row — the
141
+ * module's `Math.max(1, …)` floor, so a key that matched nothing so far does not price a
142
+ * seek at nothing;
143
+ * 3. otherwise `undefined`.
144
+ *
145
+ * NOTE: catalog-wins is a first rule, not a measured one; an `ANALYZE` snapshot can be
146
+ * older than the mean. Reconsider only against a measured case where the stale catalog
147
+ * loses a plan the mean would have won.
53
148
  */
54
- export function plannedRowCount(table, observed) {
55
- return observed?.observedRows(table) ?? catalogRowCount(table);
149
+ export function plannedRowsPerKey(table, columns, sources) {
150
+ if (sources === undefined || catalogCoversColumns(table, columns))
151
+ return undefined;
152
+ const mean = sources.observedRowsPerKey(table, columns);
153
+ return mean === undefined ? undefined : Math.max(1, Math.round(mean));
154
+ }
155
+ /** True when the catalog holds a usable row count and column statistics for every column in `columns`. */
156
+ function catalogCoversColumns(table, columns) {
157
+ const stats = table.statistics;
158
+ if (!stats || stats.rowCount <= 0)
159
+ return false;
160
+ return columns.every(i => {
161
+ const name = table.columns[i]?.name;
162
+ return name !== undefined && stats.columnStats.has(name.toLowerCase());
163
+ });
56
164
  }
57
165
  //# sourceMappingURL=table-cardinality.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-cardinality.js","sourceRoot":"","sources":["../../../../src/planner/stats/table-cardinality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAaH;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAkB;IACjD,OAAO,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,KAAkB,EAAE,QAAuC;IAC1F,OAAO,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"table-cardinality.js","sourceRoot":"","sources":["../../../../src/planner/stats/table-cardinality.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * A join side's row count for RELATIVE comparison — defined even where nobody
3
+ * measured anything.
4
+ *
5
+ * A never-analyzed table's scan reports `undefined` (see `row-estimates.ts`), and
6
+ * that blank propagates: a Filter over it, a join over that, an aggregate over the
7
+ * join all read `undefined` too, so a consumer that defaults the blank side flat
8
+ * forgets that a filter has already narrowed it. This walker instead starts the
9
+ * unknown LEAF at the shared no-statistics default and carries that figure up
10
+ * through each operator with the operator's own shared formula, so a filtered
11
+ * side of an unknown table compares smaller than the unfiltered table beside it.
12
+ *
13
+ * The figure is relative, not an estimate the plan records: only join selection
14
+ * reads it, to compare candidates against each other. Everywhere else an unknown
15
+ * stays `undefined`, so the gates that deliberately refuse on unknown keep
16
+ * refusing.
17
+ *
18
+ * Lives apart from `row-estimates.ts` because it dispatches on node classes, and
19
+ * those node modules import `row-estimates.ts`.
20
+ */
21
+ import type { RelationalPlanNode } from '../nodes/plan-node.js';
22
+ /**
23
+ * Rows `side` is priced at in a relative comparison: its physical estimate when
24
+ * known, else `unknownLeafRows` at each unknown leaf carried up through the
25
+ * side's operators. Floored at one row through `costedRows`, so a measured (or
26
+ * relayed) 0 prices the way every cost site prices it.
27
+ */
28
+ export declare function relativeRows(side: RelationalPlanNode, unknownLeafRows: number): number;
29
+ //# sourceMappingURL=relative-rows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relative-rows.d.ts","sourceRoot":"","sources":["../../../../src/planner/util/relative-rows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAWhE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAEtF"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * A join side's row count for RELATIVE comparison — defined even where nobody
3
+ * measured anything.
4
+ *
5
+ * A never-analyzed table's scan reports `undefined` (see `row-estimates.ts`), and
6
+ * that blank propagates: a Filter over it, a join over that, an aggregate over the
7
+ * join all read `undefined` too, so a consumer that defaults the blank side flat
8
+ * forgets that a filter has already narrowed it. This walker instead starts the
9
+ * unknown LEAF at the shared no-statistics default and carries that figure up
10
+ * through each operator with the operator's own shared formula, so a filtered
11
+ * side of an unknown table compares smaller than the unfiltered table beside it.
12
+ *
13
+ * The figure is relative, not an estimate the plan records: only join selection
14
+ * reads it, to compare candidates against each other. Everywhere else an unknown
15
+ * stays `undefined`, so the gates that deliberately refuse on unknown keep
16
+ * refusing.
17
+ *
18
+ * Lives apart from `row-estimates.ts` because it dispatches on node classes, and
19
+ * those node modules import `row-estimates.ts`.
20
+ */
21
+ import { DEFAULT_FILTER_SELECTIVITY, FilterNode } from '../nodes/filter.js';
22
+ import { JoinNode } from '../nodes/join-node.js';
23
+ import { BloomJoinNode } from '../nodes/bloom-join-node.js';
24
+ import { MergeJoinNode } from '../nodes/merge-join-node.js';
25
+ import { AggregateNode } from '../nodes/aggregate-node.js';
26
+ import { HashAggregateNode } from '../nodes/hash-aggregate.js';
27
+ import { StreamAggregateNode } from '../nodes/stream-aggregate.js';
28
+ import { joinPhysicalRows } from '../nodes/join-utils.js';
29
+ import { costedRows, filterRowsFrom, physicalSourceRows } from './row-estimates.js';
30
+ /**
31
+ * Rows `side` is priced at in a relative comparison: its physical estimate when
32
+ * known, else `unknownLeafRows` at each unknown leaf carried up through the
33
+ * side's operators. Floored at one row through `costedRows`, so a measured (or
34
+ * relayed) 0 prices the way every cost site prices it.
35
+ */
36
+ export function relativeRows(side, unknownLeafRows) {
37
+ return costedRows(relayedRows(side, unknownLeafRows), unknownLeafRows);
38
+ }
39
+ // NOTE: recursive, unlike the iterative `PlanNode.physical` fold — it descends only
40
+ // through nodes with no known count, so depth is bounded by a side's unknown chain,
41
+ // far below the ~30,000 frames that overflow (test/planner/plan-node-traversal.spec.ts).
42
+ // If deep generated plans ever reach join selection with unknown leaves, convert to
43
+ // a worklist walk (`PlanNode.computePostOrder`).
44
+ function relayedRows(node, unknownLeafRows) {
45
+ const known = physicalSourceRows(node.physical, node);
46
+ if (known !== undefined)
47
+ return known;
48
+ if (node instanceof FilterNode) {
49
+ return filterRowsFrom(relayedRows(node.source, unknownLeafRows), node.selectivity ?? DEFAULT_FILTER_SELECTIVITY) ?? unknownLeafRows;
50
+ }
51
+ // Key coverage (`analyzeJoinKeyCoverage`) is not re-derived: the heuristic
52
+ // alone is close enough for a figure that is only ever compared.
53
+ if (node instanceof JoinNode || node instanceof BloomJoinNode || node instanceof MergeJoinNode) {
54
+ return joinPhysicalRows(node.joinType, undefined, relayedRows(node.left, unknownLeafRows), relayedRows(node.right, unknownLeafRows)) ?? unknownLeafRows;
55
+ }
56
+ if (node instanceof AggregateNode || node instanceof HashAggregateNode || node instanceof StreamAggregateNode) {
57
+ return node.rowsFrom(relayedRows(node.source, unknownLeafRows)) ?? unknownLeafRows;
58
+ }
59
+ // Any other single-relation node (Alias, Project, Sort, Cache, Distinct,
60
+ // LimitOffset, …) at most passes its source's rows through: an upper bound,
61
+ // which is all a relative comparison needs.
62
+ const relations = node.getRelations();
63
+ if (relations.length === 1)
64
+ return relayedRows(relations[0], unknownLeafRows);
65
+ return unknownLeafRows;
66
+ }
67
+ //# sourceMappingURL=relative-rows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relative-rows.js","sourceRoot":"","sources":["../../../../src/planner/util/relative-rows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAwB,EAAE,eAAuB;IAC7E,OAAO,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC,CAAC;AACxE,CAAC;AAED,oFAAoF;AACpF,oFAAoF;AACpF,yFAAyF;AACzF,oFAAoF;AACpF,iDAAiD;AACjD,SAAS,WAAW,CAAC,IAAwB,EAAE,eAAuB;IACrE,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAEtC,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,cAAc,CACpB,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EACzC,IAAI,CAAC,WAAW,IAAI,0BAA0B,CAC9C,IAAI,eAAe,CAAC;IACtB,CAAC;IACD,2EAA2E;IAC3E,iEAAiE;IACjE,IAAI,IAAI,YAAY,QAAQ,IAAI,IAAI,YAAY,aAAa,IAAI,IAAI,YAAY,aAAa,EAAE,CAAC;QAChG,OAAO,gBAAgB,CACtB,IAAI,CAAC,QAAQ,EACb,SAAS,EACT,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,EACvC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CACxC,IAAI,eAAe,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,YAAY,aAAa,IAAI,IAAI,YAAY,iBAAiB,IAAI,IAAI,YAAY,mBAAmB,EAAE,CAAC;QAC/G,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,IAAI,eAAe,CAAC;IACpF,CAAC;IACD,yEAAyE;IACzE,4EAA4E;IAC5E,4CAA4C;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACtC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC9E,OAAO,eAAe,CAAC;AACxB,CAAC"}