@quereus/quereus 4.18.0 → 4.19.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 (184) hide show
  1. package/dist/src/common/types.d.ts +17 -0
  2. package/dist/src/common/types.d.ts.map +1 -1
  3. package/dist/src/common/types.js.map +1 -1
  4. package/dist/src/core/database-assertions.d.ts.map +1 -1
  5. package/dist/src/core/database-assertions.js +2 -1
  6. package/dist/src/core/database-assertions.js.map +1 -1
  7. package/dist/src/core/database-auto-analyze.d.ts +3 -3
  8. package/dist/src/core/database-auto-analyze.d.ts.map +1 -1
  9. package/dist/src/core/database-auto-analyze.js +17 -11
  10. package/dist/src/core/database-auto-analyze.js.map +1 -1
  11. package/dist/src/core/database-materialized-views-plan-builders.d.ts +11 -2
  12. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
  13. package/dist/src/core/database-materialized-views-plan-builders.js +15 -10
  14. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  15. package/dist/src/core/database-watchers.d.ts.map +1 -1
  16. package/dist/src/core/database-watchers.js +2 -1
  17. package/dist/src/core/database-watchers.js.map +1 -1
  18. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  19. package/dist/src/func/builtins/explain.js +38 -42
  20. package/dist/src/func/builtins/explain.js.map +1 -1
  21. package/dist/src/planner/cost/index.d.ts +9 -0
  22. package/dist/src/planner/cost/index.d.ts.map +1 -1
  23. package/dist/src/planner/cost/index.js +28 -0
  24. package/dist/src/planner/cost/index.js.map +1 -1
  25. package/dist/src/planner/debug.d.ts +5 -0
  26. package/dist/src/planner/debug.d.ts.map +1 -1
  27. package/dist/src/planner/debug.js +5 -0
  28. package/dist/src/planner/debug.js.map +1 -1
  29. package/dist/src/planner/framework/characteristics.d.ts +0 -22
  30. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  31. package/dist/src/planner/framework/characteristics.js +0 -3
  32. package/dist/src/planner/framework/characteristics.js.map +1 -1
  33. package/dist/src/planner/framework/pass.js +3 -3
  34. package/dist/src/planner/nodes/async-gather-node.d.ts +13 -0
  35. package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
  36. package/dist/src/planner/nodes/async-gather-node.js +19 -29
  37. package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
  38. package/dist/src/planner/nodes/constraint-check-node.d.ts +9 -0
  39. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  40. package/dist/src/planner/nodes/constraint-check-node.js +13 -0
  41. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
  42. package/dist/src/planner/nodes/cte-node.d.ts +8 -5
  43. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  44. package/dist/src/planner/nodes/cte-node.js +14 -4
  45. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  46. package/dist/src/planner/nodes/cte-reference-node.d.ts +9 -1
  47. package/dist/src/planner/nodes/cte-reference-node.d.ts.map +1 -1
  48. package/dist/src/planner/nodes/cte-reference-node.js +13 -0
  49. package/dist/src/planner/nodes/cte-reference-node.js.map +1 -1
  50. package/dist/src/planner/nodes/delete-node.d.ts +7 -1
  51. package/dist/src/planner/nodes/delete-node.d.ts.map +1 -1
  52. package/dist/src/planner/nodes/delete-node.js +12 -2
  53. package/dist/src/planner/nodes/delete-node.js.map +1 -1
  54. package/dist/src/planner/nodes/dml-executor-node.d.ts +2 -1
  55. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  56. package/dist/src/planner/nodes/dml-executor-node.js +8 -1
  57. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  58. package/dist/src/planner/nodes/insert-node.d.ts +8 -1
  59. package/dist/src/planner/nodes/insert-node.d.ts.map +1 -1
  60. package/dist/src/planner/nodes/insert-node.js +12 -1
  61. package/dist/src/planner/nodes/insert-node.js.map +1 -1
  62. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  63. package/dist/src/planner/nodes/join-node.js +10 -0
  64. package/dist/src/planner/nodes/join-node.js.map +1 -1
  65. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
  66. package/dist/src/planner/nodes/recursive-cte-node.js +7 -0
  67. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
  68. package/dist/src/planner/nodes/remote-query-node.d.ts +7 -1
  69. package/dist/src/planner/nodes/remote-query-node.d.ts.map +1 -1
  70. package/dist/src/planner/nodes/remote-query-node.js +11 -0
  71. package/dist/src/planner/nodes/remote-query-node.js.map +1 -1
  72. package/dist/src/planner/nodes/returning-node.d.ts +4 -0
  73. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
  74. package/dist/src/planner/nodes/returning-node.js +8 -1
  75. package/dist/src/planner/nodes/returning-node.js.map +1 -1
  76. package/dist/src/planner/nodes/set-operation-node.d.ts +14 -1
  77. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  78. package/dist/src/planner/nodes/set-operation-node.js +22 -1
  79. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  80. package/dist/src/planner/nodes/sink-node.d.ts +9 -1
  81. package/dist/src/planner/nodes/sink-node.d.ts.map +1 -1
  82. package/dist/src/planner/nodes/sink-node.js +12 -0
  83. package/dist/src/planner/nodes/sink-node.js.map +1 -1
  84. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  85. package/dist/src/planner/nodes/table-access-nodes.js +4 -3
  86. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  87. package/dist/src/planner/nodes/update-node.d.ts +7 -1
  88. package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
  89. package/dist/src/planner/nodes/update-node.js +9 -1
  90. package/dist/src/planner/nodes/update-node.js.map +1 -1
  91. package/dist/src/planner/nodes/view-mutation-node.d.ts +13 -1
  92. package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
  93. package/dist/src/planner/nodes/view-mutation-node.js +25 -1
  94. package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
  95. package/dist/src/planner/optimizer-tuning.d.ts +9 -9
  96. package/dist/src/planner/optimizer-tuning.d.ts.map +1 -1
  97. package/dist/src/planner/optimizer-tuning.js +0 -2
  98. package/dist/src/planner/optimizer-tuning.js.map +1 -1
  99. package/dist/src/planner/optimizer.d.ts.map +1 -1
  100. package/dist/src/planner/optimizer.js +9 -21
  101. package/dist/src/planner/optimizer.js.map +1 -1
  102. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
  103. package/dist/src/planner/rules/access/rule-key-set-seek.js +19 -10
  104. package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
  105. package/dist/src/planner/rules/access/rule-select-access-path.d.ts +1 -1
  106. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  107. package/dist/src/planner/rules/access/rule-select-access-path.js +34 -19
  108. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  109. package/dist/src/planner/rules/aggregate/rule-minmax-index-boundary.d.ts.map +1 -1
  110. package/dist/src/planner/rules/aggregate/rule-minmax-index-boundary.js +14 -1
  111. package/dist/src/planner/rules/aggregate/rule-minmax-index-boundary.js.map +1 -1
  112. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -1
  113. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +6 -4
  114. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -1
  115. package/dist/src/planner/rules/join/index-nested-loop.d.ts.map +1 -1
  116. package/dist/src/planner/rules/join/index-nested-loop.js +13 -10
  117. package/dist/src/planner/rules/join/index-nested-loop.js.map +1 -1
  118. package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts +2 -1
  119. package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts.map +1 -1
  120. package/dist/src/planner/rules/join/rule-join-greedy-commute.js +45 -17
  121. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +1 -1
  122. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  123. package/dist/src/planner/rules/join/rule-join-physical-selection.js +5 -3
  124. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  125. package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts +19 -1
  126. package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts.map +1 -1
  127. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js +36 -3
  128. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +1 -1
  129. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +4 -3
  130. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -1
  131. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts +14 -1
  132. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  133. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +200 -13
  134. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  135. package/dist/src/planner/stats/catalog-stats.js +1 -1
  136. package/dist/src/planner/stats/catalog-stats.js.map +1 -1
  137. package/dist/src/planner/stats/index.d.ts.map +1 -1
  138. package/dist/src/planner/stats/index.js +3 -4
  139. package/dist/src/planner/stats/index.js.map +1 -1
  140. package/dist/src/planner/stats/table-cardinality.d.ts +6 -6
  141. package/dist/src/planner/stats/table-cardinality.js +7 -7
  142. package/dist/src/planner/stats/table-cardinality.js.map +1 -1
  143. package/dist/src/planner/util/row-estimates.d.ts +91 -0
  144. package/dist/src/planner/util/row-estimates.d.ts.map +1 -1
  145. package/dist/src/planner/util/row-estimates.js +134 -18
  146. package/dist/src/planner/util/row-estimates.js.map +1 -1
  147. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  148. package/dist/src/runtime/emit/materialized-view-helpers.js +3 -3
  149. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  150. package/dist/src/runtime/scheduler.d.ts +47 -0
  151. package/dist/src/runtime/scheduler.d.ts.map +1 -1
  152. package/dist/src/runtime/scheduler.js +105 -11
  153. package/dist/src/runtime/scheduler.js.map +1 -1
  154. package/dist/src/runtime/types.d.ts +18 -3
  155. package/dist/src/runtime/types.d.ts.map +1 -1
  156. package/dist/src/runtime/types.js +7 -5
  157. package/dist/src/runtime/types.js.map +1 -1
  158. package/dist/src/schema/lens-prover.d.ts.map +1 -1
  159. package/dist/src/schema/lens-prover.js +2 -1
  160. package/dist/src/schema/lens-prover.js.map +1 -1
  161. package/dist/src/schema/manager.d.ts.map +1 -1
  162. package/dist/src/schema/manager.js +0 -3
  163. package/dist/src/schema/manager.js.map +1 -1
  164. package/dist/src/schema/table.d.ts +0 -2
  165. package/dist/src/schema/table.d.ts.map +1 -1
  166. package/dist/src/schema/table.js.map +1 -1
  167. package/dist/src/vtab/best-access-plan.d.ts +89 -4
  168. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  169. package/dist/src/vtab/best-access-plan.js +76 -1
  170. package/dist/src/vtab/best-access-plan.js.map +1 -1
  171. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  172. package/dist/src/vtab/memory/module.js +27 -11
  173. package/dist/src/vtab/memory/module.js.map +1 -1
  174. package/dist/src/vtab/module.d.ts +7 -0
  175. package/dist/src/vtab/module.d.ts.map +1 -1
  176. package/dist/src/vtab/test-support/committed-read-conformance.d.ts +5 -2
  177. package/dist/src/vtab/test-support/committed-read-conformance.d.ts.map +1 -1
  178. package/dist/src/vtab/test-support/committed-read-conformance.js +55 -9
  179. package/dist/src/vtab/test-support/committed-read-conformance.js.map +1 -1
  180. package/package.json +3 -3
  181. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts +0 -17
  182. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +0 -1
  183. package/dist/src/planner/rules/cache/rule-cte-optimization.js +0 -69
  184. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +0 -1
@@ -54,9 +54,9 @@ function assertModuleDeclaresSnapshot(db, table) {
54
54
  }
55
55
  }
56
56
  }
57
- async function collectSnapshot(db, sql, options) {
57
+ async function collectSnapshot(db, sql, path) {
58
58
  const rows = [];
59
- const iter = options?.readCommitted
59
+ const iter = path === 'committed'
60
60
  ? db.eval(sql, undefined, { readConcurrency: 'committed' })
61
61
  : db.eval(sql);
62
62
  for await (const row of iter) {
@@ -131,8 +131,11 @@ function withStallTimeout(work, ms, what) {
131
131
  * Without a provable park the bar drops to "each read equals ONE whole state,
132
132
  * pre- or post-write" — a mix is still a failure, but a writer that landed
133
133
  * before the read is not;
134
- * 6. release, await the writer, and assert a fresh read now sees the post-write
135
- * state (so a module that serves permanently stale data fails too).
134
+ * 6. release, await the writer, and assert that a fresh read now sees the
135
+ * post-write state — checked on BOTH an ordinary read and a
136
+ * `readConcurrency: 'committed'` read, so neither a module that serves
137
+ * permanently stale data nor one that pins only its `_readCommitted`
138
+ * connections across statements can pass.
136
139
  *
137
140
  * @throws Error with the specific divergence on any failure.
138
141
  */
@@ -184,7 +187,7 @@ function buildRunPlan(table, keyColumn, valueColumn, rowCount) {
184
187
  }
185
188
  /** The harness owns the table's contents for the run, so it refuses to share it. */
186
189
  async function assertTableEmpty(db, table, projection) {
187
- const existing = await collectSnapshot(db, projection);
190
+ const existing = await collectSnapshot(db, projection, 'ordinary');
188
191
  if (existing.length > 0) {
189
192
  throw new Error(`committed-read conformance: '${table}' must be empty on entry (found ${existing.length} rows). ` +
190
193
  `The harness owns the table's contents for the run and deletes what it wrote on the way out.`);
@@ -271,9 +274,9 @@ async function observeConcurrentReads(args) {
271
274
  }
272
275
  let parked = handle !== undefined && !writer.settled();
273
276
  const guard = (work, what) => parked ? withStallTimeout(work, stallTimeoutMs, what) : work;
274
- const fullScan = await guard(collectSnapshot(db, plan.projection, { readCommitted: true }), 'the full-scan read');
277
+ const fullScan = await guard(collectSnapshot(db, plan.projection, 'committed'), 'the full-scan read');
275
278
  const indexDriven = seekPlanned
276
- ? await guard(collectSnapshot(db, plan.indexDrivenSql, { readCommitted: true }), 'the index-driven read')
279
+ ? await guard(collectSnapshot(db, plan.indexDrivenSql, 'committed'), 'the index-driven read')
277
280
  : [];
278
281
  if (parked && writer.settled()) {
279
282
  // The writer landed while we were reading, so neither read is evidence of
@@ -327,10 +330,24 @@ function assertLegsAgree(fullScan, indexDriven) {
327
330
  }
328
331
  /**
329
332
  * Step 6: a module that pins a snapshot but never advances it would pass every
330
- * check above. After the writer lands, a fresh read must see the new state.
333
+ * check above. After the writer lands, a fresh read must see the new state — on
334
+ * the ordinary path AND on the committed path, since a module can pin only its
335
+ * `_readCommitted` connections and refresh on every other one.
336
+ *
337
+ * The ordinary check runs first on purpose: it catches the coarser "stale on
338
+ * every path" module and says so in plainer terms than a cross-path comparison
339
+ * could.
331
340
  */
332
341
  async function assertAdvancesAfterCommit(db, plan) {
333
- const after = await collectSnapshot(db, plan.projection);
342
+ const after = await assertOrdinaryReadAdvanced(db, plan);
343
+ await assertCommittedReadAdvanced(db, plan, after);
344
+ }
345
+ /**
346
+ * The ordinary path must show the whole post-write state once the writer lands.
347
+ * Returns that state, which the committed-path check below compares against.
348
+ */
349
+ async function assertOrdinaryReadAdvanced(db, plan) {
350
+ const after = await collectSnapshot(db, plan.projection, 'ordinary');
334
351
  if (after.length !== plan.highKey) {
335
352
  throw new Error(`committed-read conformance: after the writer committed, a fresh read returned ${after.length} rows, expected ${plan.highKey}. ` +
336
353
  `The module is serving a stale snapshot to ordinary reads.`);
@@ -341,6 +358,35 @@ async function assertAdvancesAfterCommit(db, plan) {
341
358
  `(first: key ${stale[0].key} = ${JSON.stringify(stale[0].value)}). A pinned snapshot must advance once the commit lands ` +
342
359
  `— seeding was ${plan.rowCount} rows.`);
343
360
  }
361
+ return after;
362
+ }
363
+ /**
364
+ * The freshness bound's lower half, which the ordinary check above cannot reach:
365
+ * a module whose `_readCommitted` connections pin one state and never re-pin —
366
+ * while every other path refreshes normally — passes every check before this one.
367
+ * That is exactly the shape a module fetching its state from elsewhere has when
368
+ * its committed handle is a cached pre-transaction object it never re-fetches.
369
+ *
370
+ * NOTE: `readConcurrency: 'committed'` falls back to the serialized path silently
371
+ * when a statement is ineligible, and the engine exposes no signal for which path
372
+ * a read actually took. This check is meaningful only because a read-only
373
+ * autocommit query over a declaring module is eligible today; if the eligibility
374
+ * rules ever narrow, this comparison degrades into an ordinary read against an
375
+ * ordinary read and passes vacuously. The mid-commit legs (steps 4–5) would catch
376
+ * that regression via their stall timeout — they are the canary — but if
377
+ * eligibility is ever reworked, re-verify this step against
378
+ * `StaleCommittedSnapshotModule` in test/vtab/_conformance-stub-modules.ts.
379
+ */
380
+ async function assertCommittedReadAdvanced(db, plan, after) {
381
+ const afterCommitted = await collectSnapshot(db, plan.projection, 'committed');
382
+ if (matches(afterCommitted, after))
383
+ return;
384
+ throw new Error(`committed-read conformance: after the writer committed, a read with readConcurrency: 'committed' returned ${afterCommitted.length} rows ` +
385
+ `that disagree with an ordinary read of the same committed state (${after.length} rows). ` +
386
+ `Divergences — ${describeDivergences(after, afterCommitted)}. ` +
387
+ `The module's _readCommitted connection appears to pin its state ACROSS statements. Pinning is required only for the life of a ` +
388
+ `single scan: every new committed read must re-pin to the state committed as of the moment that read begins, so a committed read ` +
389
+ `may never be staler than an ordinary read taken at the same instant.`);
344
390
  }
345
391
  /**
346
392
  * The harness entered on an empty table, so removing everything removes exactly
@@ -1 +1 @@
1
- {"version":3,"file":"committed-read-conformance.js","sourceRoot":"","sources":["../../../../src/vtab/test-support/committed-read-conformance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"committed-read-conformance.js","sourceRoot":"","sources":["../../../../src/vtab/test-support/committed-read-conformance.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quereus/quereus",
3
- "version": "4.18.0",
3
+ "version": "4.19.0",
4
4
  "type": "module",
5
5
  "description": "Pure TypeScript SQL engine — no WASM, no native bindings. Runs in browsers, Node.js, React Native, edge workers, and anywhere JS runs.",
6
6
  "keywords": [
@@ -75,9 +75,9 @@
75
75
  "mutation:subsystem": "node mutation-subsystem.mjs"
76
76
  },
77
77
  "devDependencies": {
78
- "@quereus/plugin-leveldb": "^4.18.0",
78
+ "@quereus/plugin-leveldb": "^4.19.0",
79
79
  "@quereus/plugin-loader": "*",
80
- "@quereus/store": "^4.18.0",
80
+ "@quereus/store": "^4.19.0",
81
81
  "@stryker-mutator/core": "^9.6.1",
82
82
  "@stryker-mutator/mocha-runner": "^9.6.1",
83
83
  "@stryker-mutator/typescript-checker": "^9.6.1",
@@ -1,17 +0,0 @@
1
- /**
2
- * Rule: CTE Optimization
3
- *
4
- * Required Characteristics:
5
- * - Node must support CTE operations (CTECapable interface)
6
- * - Node must be relational (produces rows)
7
- * - Source must be cacheable for materialization
8
- *
9
- * Applied When:
10
- * - CTE would benefit from materialization/caching based on cost analysis
11
- *
12
- * Benefits: Reduces redundant computation for repeated CTE access
13
- */
14
- import type { PlanNode } from '../../nodes/plan-node.js';
15
- import type { OptContext } from '../../framework/context.js';
16
- export declare function ruleCteOptimization(node: PlanNode, context: OptContext): PlanNode | null;
17
- //# sourceMappingURL=rule-cte-optimization.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rule-cte-optimization.d.ts","sourceRoot":"","sources":["../../../../../src/planner/rules/cache/rule-cte-optimization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAO7D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CA6ExF"}
@@ -1,69 +0,0 @@
1
- /**
2
- * Rule: CTE Optimization
3
- *
4
- * Required Characteristics:
5
- * - Node must support CTE operations (CTECapable interface)
6
- * - Node must be relational (produces rows)
7
- * - Source must be cacheable for materialization
8
- *
9
- * Applied When:
10
- * - CTE would benefit from materialization/caching based on cost analysis
11
- *
12
- * Benefits: Reduces redundant computation for repeated CTE access
13
- */
14
- import { createLogger } from '../../../common/logger.js';
15
- import { CTENode } from '../../nodes/cte-node.js';
16
- import { CacheNode } from '../../nodes/cache-node.js';
17
- import { CapabilityDetectors, CachingAnalysis, PlanNodeCharacteristics } from '../../framework/characteristics.js';
18
- const log = createLogger('optimizer:rule:cte-optimization');
19
- export function ruleCteOptimization(node, context) {
20
- // Guard: node must support CTE operations
21
- if (!CapabilityDetectors.isCTE(node)) {
22
- return null;
23
- }
24
- // Get CTE characteristics
25
- const cteNode = node;
26
- log('Optimizing CTE %s', cteNode.cteName);
27
- // Source is already optimized by framework
28
- const source = cteNode.getCTESource();
29
- // Heuristics for when to cache CTEs:
30
- // 1. CTE has materialization hint
31
- // 2. CTE is estimated to be reasonably sized
32
- // 3. CTE is not already cached
33
- // NOTE: the `sourceSize > 0` gate below decides caching on a number that cannot
34
- // carry the answer. A never-`ANALYZE`d table reports 0 rows, and that 0 means
35
- // "unknown", not "empty" (`SchemaManager` hardcodes `TableSchema.estimatedRows`
36
- // to 0 at CREATE TABLE), so today whether a CTE is cached turns on whether
37
- // ANALYZE has run — and the rule never consults the reference count, so once a
38
- // real estimate arrives it caches single-reference CTEs too, and double-buffers
39
- // multi-reference ones against the materialization-advisory pass (see the NOTE
40
- // below). Tracked in backlog `bug-cte-cache-gate-reads-unknown-as-empty`; do not
41
- // paper over it with a `|| default` here, which caches single-reference CTEs.
42
- const sourceSize = PlanNodeCharacteristics.estimatesRows(source);
43
- const isAlreadyCached = CapabilityDetectors.isCached(source) && source.isCached();
44
- const shouldCache = (cteNode.materializationHint === 'materialized' ||
45
- (sourceSize > 0 && sourceSize < context.tuning.cte.maxSizeForCaching)) && !isAlreadyCached;
46
- if (shouldCache) {
47
- log('Adding cache to CTE %s (estimated rows: %d)', cteNode.cteName, sourceSize);
48
- // Use characteristics-based cache threshold calculation
49
- const cacheThreshold = Math.min(CachingAnalysis.getCacheThreshold(source), context.tuning.cte.maxCacheThreshold);
50
- // NOTE: when the materialization-advisory pass later marks this CTE
51
- // materialize (multi-referenced or MATERIALIZED hint), this inner
52
- // CacheNode double-buffers: emitCTE buffers the rows per execution AND
53
- // this cache buffers them again, driven only by the single first
54
- // reference. Correct but a wasted buffer — if it shows up in memory
55
- // profiles, drop the CTE-specific wrap here (needs its own test pass;
56
- // it also changes single-reference CTE caching behavior).
57
- const cachedSource = new CacheNode(source.scope, source, 'memory', cacheThreshold);
58
- // Create new CTE with cached source (specific to CTENode implementation).
59
- // `materialize` and `tableDescriptor` are both carried over: emitCTE keys its
60
- // shared per-execution buffer on that identity, so a replacement that dropped
61
- // the flag or minted a fresh descriptor would re-drive the source — a second
62
- // write for a data-modifying body.
63
- const result = new CTENode(node.scope, cteNode.cteName, cteNode.columns, cachedSource, cteNode.materializationHint, cteNode.isRecursive, cteNode.materialize, cteNode.tableDescriptor);
64
- log('Created CTE with caching');
65
- return result;
66
- }
67
- return null; // No transformation needed
68
- }
69
- //# sourceMappingURL=rule-cte-optimization.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rule-cte-optimization.js","sourceRoot":"","sources":["../../../../../src/planner/rules/cache/rule-cte-optimization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,uBAAuB,EAAmB,MAAM,oCAAoC,CAAC;AAEpI,MAAM,GAAG,GAAG,YAAY,CAAC,iCAAiC,CAAC,CAAC;AAE5D,MAAM,UAAU,mBAAmB,CAAC,IAAc,EAAE,OAAmB;IACtE,0CAA0C;IAC1C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAkB,CAAC;IACnC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1C,2CAA2C;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAEtC,qCAAqC;IACrC,kCAAkC;IAClC,6CAA6C;IAC7C,+BAA+B;IAC/B,gFAAgF;IAChF,8EAA8E;IAC9E,gFAAgF;IAChF,2EAA2E;IAC3E,+EAA+E;IAC/E,gFAAgF;IAChF,+EAA+E;IAC/E,iFAAiF;IACjF,8EAA8E;IAC9E,MAAM,UAAU,GAAG,uBAAuB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,eAAe,GAAG,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClF,MAAM,WAAW,GAAG,CACnB,OAAO,CAAC,mBAAmB,KAAK,cAAc;QAC9C,CAAC,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CACrE,IAAI,CAAC,eAAe,CAAC;IAEtB,IAAI,WAAW,EAAE,CAAC;QACjB,GAAG,CAAC,6CAA6C,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEhF,wDAAwD;QACxD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAC9B,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,EACzC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CACpC,CAAC;QAEF,oEAAoE;QACpE,kEAAkE;QAClE,uEAAuE;QACvE,iEAAiE;QACjE,oEAAoE;QACpE,sEAAsE;QACtE,0DAA0D;QAC1D,MAAM,YAAY,GAAG,IAAI,SAAS,CACjC,MAAM,CAAC,KAAK,EACZ,MAAM,EACN,QAAQ,EACR,cAAc,CACd,CAAC;QAEF,0EAA0E;QAC1E,8EAA8E;QAC9E,8EAA8E;QAC9E,6EAA6E;QAC7E,mCAAmC;QACnC,MAAM,MAAM,GAAG,IAAI,OAAO,CACzB,IAAI,CAAC,KAAK,EACV,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,EACf,YAAY,EACZ,OAAO,CAAC,mBAAmB,EAC3B,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,eAAe,CACvB,CAAC;QAEF,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,2BAA2B;AACzC,CAAC"}