@quereus/quereus 4.3.0 → 4.3.2

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 (730) hide show
  1. package/README.md +25 -7
  2. package/dist/src/common/types.d.ts +9 -59
  3. package/dist/src/common/types.d.ts.map +1 -1
  4. package/dist/src/common/types.js.map +1 -1
  5. package/dist/src/core/database-assertions.d.ts +2 -2
  6. package/dist/src/core/database-assertions.d.ts.map +1 -1
  7. package/dist/src/core/database-assertions.js +4 -3
  8. package/dist/src/core/database-assertions.js.map +1 -1
  9. package/dist/src/core/database-external-changes.d.ts +1 -1
  10. package/dist/src/core/database-external-changes.js +1 -1
  11. package/dist/src/core/database-internal.d.ts.map +1 -1
  12. package/dist/src/core/database-materialized-views-analysis.d.ts +199 -0
  13. package/dist/src/core/database-materialized-views-analysis.d.ts.map +1 -0
  14. package/dist/src/core/database-materialized-views-analysis.js +502 -0
  15. package/dist/src/core/database-materialized-views-analysis.js.map +1 -0
  16. package/dist/src/core/database-materialized-views-apply.d.ts +280 -0
  17. package/dist/src/core/database-materialized-views-apply.d.ts.map +1 -0
  18. package/dist/src/core/database-materialized-views-apply.js +624 -0
  19. package/dist/src/core/database-materialized-views-apply.js.map +1 -0
  20. package/dist/src/core/database-materialized-views-plan-builders.d.ts +203 -0
  21. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -0
  22. package/dist/src/core/database-materialized-views-plan-builders.js +1084 -0
  23. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -0
  24. package/dist/src/core/database-materialized-views-plans.d.ts +417 -0
  25. package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -0
  26. package/dist/src/core/database-materialized-views-plans.js +13 -0
  27. package/dist/src/core/database-materialized-views-plans.js.map +1 -0
  28. package/dist/src/core/database-materialized-views.d.ts +11 -819
  29. package/dist/src/core/database-materialized-views.d.ts.map +1 -1
  30. package/dist/src/core/database-materialized-views.js +60 -2069
  31. package/dist/src/core/database-materialized-views.js.map +1 -1
  32. package/dist/src/core/database-transaction.d.ts +10 -1
  33. package/dist/src/core/database-transaction.d.ts.map +1 -1
  34. package/dist/src/core/database-transaction.js +16 -4
  35. package/dist/src/core/database-transaction.js.map +1 -1
  36. package/dist/src/core/database-watchers.d.ts.map +1 -1
  37. package/dist/src/core/database-watchers.js +2 -1
  38. package/dist/src/core/database-watchers.js.map +1 -1
  39. package/dist/src/core/database.d.ts +99 -13
  40. package/dist/src/core/database.d.ts.map +1 -1
  41. package/dist/src/core/database.js +250 -33
  42. package/dist/src/core/database.js.map +1 -1
  43. package/dist/src/core/derived-row-validator.d.ts +1 -1
  44. package/dist/src/core/derived-row-validator.d.ts.map +1 -1
  45. package/dist/src/core/derived-row-validator.js +5 -3
  46. package/dist/src/core/derived-row-validator.js.map +1 -1
  47. package/dist/src/core/statement.d.ts +8 -0
  48. package/dist/src/core/statement.d.ts.map +1 -1
  49. package/dist/src/core/statement.js +98 -18
  50. package/dist/src/core/statement.js.map +1 -1
  51. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  52. package/dist/src/emit/ast-stringify.js +24 -13
  53. package/dist/src/emit/ast-stringify.js.map +1 -1
  54. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  55. package/dist/src/func/builtins/explain.js +2 -1
  56. package/dist/src/func/builtins/explain.js.map +1 -1
  57. package/dist/src/func/builtins/json.d.ts.map +1 -1
  58. package/dist/src/func/builtins/json.js +2 -1
  59. package/dist/src/func/builtins/json.js.map +1 -1
  60. package/dist/src/func/builtins/mutation.d.ts.map +1 -1
  61. package/dist/src/func/builtins/mutation.js +3 -2
  62. package/dist/src/func/builtins/mutation.js.map +1 -1
  63. package/dist/src/index.d.ts +16 -6
  64. package/dist/src/index.d.ts.map +1 -1
  65. package/dist/src/index.js +33 -7
  66. package/dist/src/index.js.map +1 -1
  67. package/dist/src/parser/ast.d.ts +2 -2
  68. package/dist/src/parser/lexer.d.ts +11 -1
  69. package/dist/src/parser/lexer.d.ts.map +1 -1
  70. package/dist/src/parser/lexer.js +40 -34
  71. package/dist/src/parser/lexer.js.map +1 -1
  72. package/dist/src/parser/parser.d.ts.map +1 -1
  73. package/dist/src/parser/parser.js +16 -9
  74. package/dist/src/parser/parser.js.map +1 -1
  75. package/dist/src/planner/analysis/authored-inverse.js +1 -1
  76. package/dist/src/planner/analysis/comparison-collation.d.ts +52 -0
  77. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  78. package/dist/src/planner/analysis/comparison-collation.js +84 -7
  79. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  80. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  81. package/dist/src/planner/analysis/constraint-extractor.js +64 -17
  82. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  83. package/dist/src/planner/analysis/coverage-prover.d.ts +1 -1
  84. package/dist/src/planner/analysis/coverage-prover.js +1 -1
  85. package/dist/src/planner/analysis/sat-checker.d.ts +8 -1
  86. package/dist/src/planner/analysis/sat-checker.d.ts.map +1 -1
  87. package/dist/src/planner/analysis/sat-checker.js +117 -22
  88. package/dist/src/planner/analysis/sat-checker.js.map +1 -1
  89. package/dist/src/planner/analysis/scalar-invertibility.d.ts +13 -4
  90. package/dist/src/planner/analysis/scalar-invertibility.d.ts.map +1 -1
  91. package/dist/src/planner/analysis/scalar-invertibility.js +12 -3
  92. package/dist/src/planner/analysis/scalar-invertibility.js.map +1 -1
  93. package/dist/src/planner/analysis/update-lineage.d.ts +1 -1
  94. package/dist/src/planner/analysis/update-lineage.js +1 -1
  95. package/dist/src/planner/analysis/update-lineage.js.map +1 -1
  96. package/dist/src/planner/analysis/view-complement.d.ts +2 -2
  97. package/dist/src/planner/building/delete.d.ts.map +1 -1
  98. package/dist/src/planner/building/delete.js +13 -2
  99. package/dist/src/planner/building/delete.js.map +1 -1
  100. package/dist/src/planner/building/dml-target.d.ts +2 -2
  101. package/dist/src/planner/building/dml-target.js +2 -2
  102. package/dist/src/planner/building/insert.d.ts.map +1 -1
  103. package/dist/src/planner/building/insert.js +53 -2
  104. package/dist/src/planner/building/insert.js.map +1 -1
  105. package/dist/src/planner/building/schema-resolution.d.ts +3 -0
  106. package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
  107. package/dist/src/planner/building/schema-resolution.js +4 -5
  108. package/dist/src/planner/building/schema-resolution.js.map +1 -1
  109. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  110. package/dist/src/planner/building/select-aggregates.js +72 -4
  111. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  112. package/dist/src/planner/building/select.js +3 -3
  113. package/dist/src/planner/building/select.js.map +1 -1
  114. package/dist/src/planner/building/update.d.ts.map +1 -1
  115. package/dist/src/planner/building/update.js +16 -2
  116. package/dist/src/planner/building/update.js.map +1 -1
  117. package/dist/src/planner/building/view-mutation-builder.js +7 -7
  118. package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
  119. package/dist/src/planner/cache/materialization-advisory.d.ts +1 -2
  120. package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
  121. package/dist/src/planner/cache/materialization-advisory.js +21 -14
  122. package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
  123. package/dist/src/planner/cache/reference-graph.d.ts +14 -1
  124. package/dist/src/planner/cache/reference-graph.d.ts.map +1 -1
  125. package/dist/src/planner/cache/reference-graph.js +26 -26
  126. package/dist/src/planner/cache/reference-graph.js.map +1 -1
  127. package/dist/src/planner/cost/index.d.ts +7 -3
  128. package/dist/src/planner/cost/index.d.ts.map +1 -1
  129. package/dist/src/planner/cost/index.js.map +1 -1
  130. package/dist/src/planner/debug.d.ts +3 -2
  131. package/dist/src/planner/debug.d.ts.map +1 -1
  132. package/dist/src/planner/debug.js +9 -3
  133. package/dist/src/planner/debug.js.map +1 -1
  134. package/dist/src/planner/framework/characteristics.d.ts +46 -19
  135. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  136. package/dist/src/planner/framework/characteristics.js +50 -134
  137. package/dist/src/planner/framework/characteristics.js.map +1 -1
  138. package/dist/src/planner/framework/context.d.ts +8 -44
  139. package/dist/src/planner/framework/context.d.ts.map +1 -1
  140. package/dist/src/planner/framework/context.js +0 -91
  141. package/dist/src/planner/framework/context.js.map +1 -1
  142. package/dist/src/planner/framework/pass.d.ts +7 -0
  143. package/dist/src/planner/framework/pass.d.ts.map +1 -1
  144. package/dist/src/planner/framework/pass.js +84 -0
  145. package/dist/src/planner/framework/pass.js.map +1 -1
  146. package/dist/src/planner/framework/registry.d.ts +13 -42
  147. package/dist/src/planner/framework/registry.d.ts.map +1 -1
  148. package/dist/src/planner/framework/registry.js +14 -182
  149. package/dist/src/planner/framework/registry.js.map +1 -1
  150. package/dist/src/planner/mutation/backward-body.d.ts +2 -2
  151. package/dist/src/planner/mutation/cte-flatten.js +1 -1
  152. package/dist/src/planner/mutation/decomposition.d.ts +2 -2
  153. package/dist/src/planner/mutation/decomposition.js +1 -1
  154. package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -1
  155. package/dist/src/planner/mutation/lens-enforcement.js +2 -1
  156. package/dist/src/planner/mutation/lens-enforcement.js.map +1 -1
  157. package/dist/src/planner/mutation/multi-source.d.ts +8 -8
  158. package/dist/src/planner/mutation/multi-source.js +11 -11
  159. package/dist/src/planner/mutation/multi-source.js.map +1 -1
  160. package/dist/src/planner/mutation/propagate.d.ts +1 -1
  161. package/dist/src/planner/mutation/propagate.js +1 -1
  162. package/dist/src/planner/mutation/scope-transform.d.ts +2 -2
  163. package/dist/src/planner/mutation/scope-transform.js +3 -3
  164. package/dist/src/planner/mutation/scope-transform.js.map +1 -1
  165. package/dist/src/planner/mutation/set-op.d.ts +1 -1
  166. package/dist/src/planner/mutation/set-op.d.ts.map +1 -1
  167. package/dist/src/planner/mutation/set-op.js +3 -2
  168. package/dist/src/planner/mutation/set-op.js.map +1 -1
  169. package/dist/src/planner/mutation/single-source.d.ts +3 -3
  170. package/dist/src/planner/mutation/single-source.js +9 -9
  171. package/dist/src/planner/mutation/single-source.js.map +1 -1
  172. package/dist/src/planner/nodes/aggregate-function.d.ts +3 -1
  173. package/dist/src/planner/nodes/aggregate-function.d.ts.map +1 -1
  174. package/dist/src/planner/nodes/aggregate-function.js +1 -0
  175. package/dist/src/planner/nodes/aggregate-function.js.map +1 -1
  176. package/dist/src/planner/nodes/aggregate-node.d.ts +1 -0
  177. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  178. package/dist/src/planner/nodes/aggregate-node.js +8 -1
  179. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  180. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  181. package/dist/src/planner/nodes/alias-node.js +3 -1
  182. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  183. package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
  184. package/dist/src/planner/nodes/asof-scan-node.js +3 -2
  185. package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
  186. package/dist/src/planner/nodes/asserted-keys-node.d.ts +1 -1
  187. package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
  188. package/dist/src/planner/nodes/asserted-keys-node.js +5 -2
  189. package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -1
  190. package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
  191. package/dist/src/planner/nodes/async-gather-node.js +3 -1
  192. package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
  193. package/dist/src/planner/nodes/block.js +3 -3
  194. package/dist/src/planner/nodes/block.js.map +1 -1
  195. package/dist/src/planner/nodes/bloom-join-node.d.ts +2 -0
  196. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  197. package/dist/src/planner/nodes/bloom-join-node.js +5 -1
  198. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  199. package/dist/src/planner/nodes/cache-node.d.ts +1 -0
  200. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  201. package/dist/src/planner/nodes/cache-node.js +1 -0
  202. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  203. package/dist/src/planner/nodes/cte-node.d.ts +1 -0
  204. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  205. package/dist/src/planner/nodes/cte-node.js +4 -1
  206. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  207. package/dist/src/planner/nodes/distinct-node.js +3 -3
  208. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  209. package/dist/src/planner/nodes/dml-executor-node.d.ts +21 -0
  210. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  211. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  212. package/dist/src/planner/nodes/envelope-scan-node.d.ts +1 -1
  213. package/dist/src/planner/nodes/envelope-scan-node.js +1 -1
  214. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
  215. package/dist/src/planner/nodes/fanout-lookup-join-node.js +4 -2
  216. package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
  217. package/dist/src/planner/nodes/filter.d.ts +10 -2
  218. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  219. package/dist/src/planner/nodes/filter.js +81 -14
  220. package/dist/src/planner/nodes/filter.js.map +1 -1
  221. package/dist/src/planner/nodes/hash-aggregate.d.ts +12 -1
  222. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  223. package/dist/src/planner/nodes/hash-aggregate.js +28 -1
  224. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  225. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts +3 -1
  226. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts.map +1 -1
  227. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js +1 -0
  228. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +1 -1
  229. package/dist/src/planner/nodes/join-node.d.ts +3 -1
  230. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  231. package/dist/src/planner/nodes/join-node.js +5 -5
  232. package/dist/src/planner/nodes/join-node.js.map +1 -1
  233. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
  234. package/dist/src/planner/nodes/lens-auxiliary-access-node.js +4 -1
  235. package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
  236. package/dist/src/planner/nodes/limit-offset.d.ts +1 -0
  237. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  238. package/dist/src/planner/nodes/limit-offset.js +4 -3
  239. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  240. package/dist/src/planner/nodes/merge-join-node.d.ts +2 -0
  241. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  242. package/dist/src/planner/nodes/merge-join-node.js +6 -1
  243. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  244. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
  245. package/dist/src/planner/nodes/ordinal-slice-node.js +3 -1
  246. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
  247. package/dist/src/planner/nodes/plan-node.d.ts +68 -5
  248. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  249. package/dist/src/planner/nodes/plan-node.js +137 -24
  250. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  251. package/dist/src/planner/nodes/project-node.d.ts +3 -2
  252. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  253. package/dist/src/planner/nodes/project-node.js +1 -0
  254. package/dist/src/planner/nodes/project-node.js.map +1 -1
  255. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
  256. package/dist/src/planner/nodes/recursive-cte-node.js +8 -2
  257. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
  258. package/dist/src/planner/nodes/reference.d.ts +5 -1
  259. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  260. package/dist/src/planner/nodes/reference.js +3 -0
  261. package/dist/src/planner/nodes/reference.js.map +1 -1
  262. package/dist/src/planner/nodes/remote-query-node.d.ts.map +1 -1
  263. package/dist/src/planner/nodes/remote-query-node.js +3 -1
  264. package/dist/src/planner/nodes/remote-query-node.js.map +1 -1
  265. package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
  266. package/dist/src/planner/nodes/retrieve-node.js +3 -1
  267. package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
  268. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  269. package/dist/src/planner/nodes/set-operation-node.js +3 -1
  270. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  271. package/dist/src/planner/nodes/sink-node.d.ts.map +1 -1
  272. package/dist/src/planner/nodes/sink-node.js +3 -1
  273. package/dist/src/planner/nodes/sink-node.js.map +1 -1
  274. package/dist/src/planner/nodes/sort.d.ts +2 -1
  275. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  276. package/dist/src/planner/nodes/sort.js +9 -5
  277. package/dist/src/planner/nodes/sort.js.map +1 -1
  278. package/dist/src/planner/nodes/stream-aggregate.d.ts +12 -1
  279. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  280. package/dist/src/planner/nodes/stream-aggregate.js +32 -3
  281. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  282. package/dist/src/planner/nodes/table-access-nodes.d.ts +2 -1
  283. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  284. package/dist/src/planner/nodes/table-access-nodes.js +2 -0
  285. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  286. package/dist/src/planner/nodes/view-mutation-node.d.ts +2 -2
  287. package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
  288. package/dist/src/planner/nodes/view-mutation-node.js +5 -1
  289. package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
  290. package/dist/src/planner/nodes/window-function.d.ts +3 -1
  291. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  292. package/dist/src/planner/nodes/window-function.js +1 -0
  293. package/dist/src/planner/nodes/window-function.js.map +1 -1
  294. package/dist/src/planner/optimizer.d.ts +52 -8
  295. package/dist/src/planner/optimizer.d.ts.map +1 -1
  296. package/dist/src/planner/optimizer.js +885 -894
  297. package/dist/src/planner/optimizer.js.map +1 -1
  298. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  299. package/dist/src/planner/rules/access/rule-select-access-path.js +235 -202
  300. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  301. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts +2 -2
  302. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +2 -2
  303. package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts +1 -1
  304. package/dist/src/planner/rules/cache/rule-scalar-cse.js +1 -1
  305. package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts +1 -1
  306. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +1 -1
  307. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.d.ts +1 -1
  308. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.js +1 -1
  309. package/dist/src/planner/rules/join/rule-join-elimination.d.ts +1 -1
  310. package/dist/src/planner/rules/join/rule-join-elimination.js +1 -1
  311. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js +5 -6
  312. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js.map +1 -1
  313. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts +1 -1
  314. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +1 -1
  315. package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts +2 -2
  316. package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts.map +1 -1
  317. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js +4 -3
  318. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js.map +1 -1
  319. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +19 -0
  320. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -0
  321. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +48 -0
  322. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -0
  323. package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js +12 -1
  324. package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js.map +1 -1
  325. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  326. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +90 -26
  327. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  328. package/dist/src/planner/rules/shared/index-style-context.d.ts +39 -0
  329. package/dist/src/planner/rules/shared/index-style-context.d.ts.map +1 -0
  330. package/dist/src/planner/rules/shared/index-style-context.js +26 -0
  331. package/dist/src/planner/rules/shared/index-style-context.js.map +1 -0
  332. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts +1 -1
  333. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js +1 -1
  334. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts +1 -1
  335. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +1 -1
  336. package/dist/src/planner/scopes/registered.d.ts +21 -0
  337. package/dist/src/planner/scopes/registered.d.ts.map +1 -1
  338. package/dist/src/planner/scopes/registered.js +31 -1
  339. package/dist/src/planner/scopes/registered.js.map +1 -1
  340. package/dist/src/planner/stats/analyze.d.ts.map +1 -1
  341. package/dist/src/planner/stats/analyze.js +2 -20
  342. package/dist/src/planner/stats/analyze.js.map +1 -1
  343. package/dist/src/planner/stats/histogram.d.ts.map +1 -1
  344. package/dist/src/planner/stats/histogram.js +4 -0
  345. package/dist/src/planner/stats/histogram.js.map +1 -1
  346. package/dist/src/planner/util/fd-utils.d.ts +2 -3
  347. package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
  348. package/dist/src/planner/util/fd-utils.js +2 -3
  349. package/dist/src/planner/util/fd-utils.js.map +1 -1
  350. package/dist/src/planner/validation/plan-validator.d.ts +16 -0
  351. package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
  352. package/dist/src/planner/validation/plan-validator.js +36 -0
  353. package/dist/src/planner/validation/plan-validator.js.map +1 -1
  354. package/dist/src/runtime/async-util.d.ts +26 -0
  355. package/dist/src/runtime/async-util.d.ts.map +1 -1
  356. package/dist/src/runtime/async-util.js +139 -55
  357. package/dist/src/runtime/async-util.js.map +1 -1
  358. package/dist/src/runtime/context-helpers.d.ts +32 -4
  359. package/dist/src/runtime/context-helpers.d.ts.map +1 -1
  360. package/dist/src/runtime/context-helpers.js +26 -9
  361. package/dist/src/runtime/context-helpers.js.map +1 -1
  362. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  363. package/dist/src/runtime/deferred-constraint-queue.js +2 -1
  364. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  365. package/dist/src/runtime/emission-context.d.ts +27 -3
  366. package/dist/src/runtime/emission-context.d.ts.map +1 -1
  367. package/dist/src/runtime/emission-context.js +38 -7
  368. package/dist/src/runtime/emission-context.js.map +1 -1
  369. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  370. package/dist/src/runtime/emit/add-constraint.js +7 -1
  371. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  372. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  373. package/dist/src/runtime/emit/aggregate.js +17 -13
  374. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  375. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  376. package/dist/src/runtime/emit/alter-table.js +98 -9
  377. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  378. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  379. package/dist/src/runtime/emit/analyze.js +2 -1
  380. package/dist/src/runtime/emit/analyze.js.map +1 -1
  381. package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
  382. package/dist/src/runtime/emit/asof-scan.js +13 -10
  383. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  384. package/dist/src/runtime/emit/async-gather.d.ts.map +1 -1
  385. package/dist/src/runtime/emit/async-gather.js +4 -3
  386. package/dist/src/runtime/emit/async-gather.js.map +1 -1
  387. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  388. package/dist/src/runtime/emit/between.js +2 -1
  389. package/dist/src/runtime/emit/between.js.map +1 -1
  390. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  391. package/dist/src/runtime/emit/binary.js +122 -14
  392. package/dist/src/runtime/emit/binary.js.map +1 -1
  393. package/dist/src/runtime/emit/block.d.ts.map +1 -1
  394. package/dist/src/runtime/emit/block.js +2 -1
  395. package/dist/src/runtime/emit/block.js.map +1 -1
  396. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
  397. package/dist/src/runtime/emit/bloom-join.js +20 -8
  398. package/dist/src/runtime/emit/bloom-join.js.map +1 -1
  399. package/dist/src/runtime/emit/cache.d.ts.map +1 -1
  400. package/dist/src/runtime/emit/cache.js +2 -1
  401. package/dist/src/runtime/emit/cache.js.map +1 -1
  402. package/dist/src/runtime/emit/case.d.ts.map +1 -1
  403. package/dist/src/runtime/emit/case.js +66 -45
  404. package/dist/src/runtime/emit/case.js.map +1 -1
  405. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  406. package/dist/src/runtime/emit/cast.js +2 -1
  407. package/dist/src/runtime/emit/cast.js.map +1 -1
  408. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  409. package/dist/src/runtime/emit/constraint-check.js +13 -7
  410. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  411. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  412. package/dist/src/runtime/emit/create-assertion.js +2 -1
  413. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  414. package/dist/src/runtime/emit/create-index.d.ts.map +1 -1
  415. package/dist/src/runtime/emit/create-index.js +12 -1
  416. package/dist/src/runtime/emit/create-index.js.map +1 -1
  417. package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
  418. package/dist/src/runtime/emit/create-table.js +12 -1
  419. package/dist/src/runtime/emit/create-table.js.map +1 -1
  420. package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -1
  421. package/dist/src/runtime/emit/cte-reference.js +2 -1
  422. package/dist/src/runtime/emit/cte-reference.js.map +1 -1
  423. package/dist/src/runtime/emit/cte.d.ts.map +1 -1
  424. package/dist/src/runtime/emit/cte.js +2 -1
  425. package/dist/src/runtime/emit/cte.js.map +1 -1
  426. package/dist/src/runtime/emit/ddl-transaction-policy.d.ts +50 -0
  427. package/dist/src/runtime/emit/ddl-transaction-policy.d.ts.map +1 -0
  428. package/dist/src/runtime/emit/ddl-transaction-policy.js +69 -0
  429. package/dist/src/runtime/emit/ddl-transaction-policy.js.map +1 -0
  430. package/dist/src/runtime/emit/delete.d.ts.map +1 -1
  431. package/dist/src/runtime/emit/delete.js +2 -1
  432. package/dist/src/runtime/emit/delete.js.map +1 -1
  433. package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
  434. package/dist/src/runtime/emit/distinct.js +2 -1
  435. package/dist/src/runtime/emit/distinct.js.map +1 -1
  436. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  437. package/dist/src/runtime/emit/dml-executor.js +147 -34
  438. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  439. package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
  440. package/dist/src/runtime/emit/drop-assertion.js +2 -1
  441. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  442. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  443. package/dist/src/runtime/emit/drop-index.js +17 -1
  444. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  445. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  446. package/dist/src/runtime/emit/drop-table.js +11 -1
  447. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  448. package/dist/src/runtime/emit/eager-prefetch.d.ts.map +1 -1
  449. package/dist/src/runtime/emit/eager-prefetch.js +2 -1
  450. package/dist/src/runtime/emit/eager-prefetch.js.map +1 -1
  451. package/dist/src/runtime/emit/envelope-scan.d.ts.map +1 -1
  452. package/dist/src/runtime/emit/envelope-scan.js +2 -1
  453. package/dist/src/runtime/emit/envelope-scan.js.map +1 -1
  454. package/dist/src/runtime/emit/fanout-lookup-join.d.ts.map +1 -1
  455. package/dist/src/runtime/emit/fanout-lookup-join.js +3 -2
  456. package/dist/src/runtime/emit/fanout-lookup-join.js.map +1 -1
  457. package/dist/src/runtime/emit/filter.d.ts.map +1 -1
  458. package/dist/src/runtime/emit/filter.js +8 -3
  459. package/dist/src/runtime/emit/filter.js.map +1 -1
  460. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  461. package/dist/src/runtime/emit/hash-aggregate.js +16 -11
  462. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  463. package/dist/src/runtime/emit/insert.d.ts.map +1 -1
  464. package/dist/src/runtime/emit/insert.js +2 -1
  465. package/dist/src/runtime/emit/insert.js.map +1 -1
  466. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  467. package/dist/src/runtime/emit/join.js +20 -6
  468. package/dist/src/runtime/emit/join.js.map +1 -1
  469. package/dist/src/runtime/emit/limit-offset.d.ts.map +1 -1
  470. package/dist/src/runtime/emit/limit-offset.js +2 -1
  471. package/dist/src/runtime/emit/limit-offset.js.map +1 -1
  472. package/dist/src/runtime/emit/literal.d.ts.map +1 -1
  473. package/dist/src/runtime/emit/literal.js +2 -1
  474. package/dist/src/runtime/emit/literal.js.map +1 -1
  475. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +22 -0
  476. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  477. package/dist/src/runtime/emit/materialized-view-helpers.js +123 -12
  478. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  479. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  480. package/dist/src/runtime/emit/materialized-view.js +6 -0
  481. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  482. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
  483. package/dist/src/runtime/emit/merge-join.js +14 -4
  484. package/dist/src/runtime/emit/merge-join.js.map +1 -1
  485. package/dist/src/runtime/emit/ordinal-slice.d.ts.map +1 -1
  486. package/dist/src/runtime/emit/ordinal-slice.js +2 -1
  487. package/dist/src/runtime/emit/ordinal-slice.js.map +1 -1
  488. package/dist/src/runtime/emit/pragma.d.ts.map +1 -1
  489. package/dist/src/runtime/emit/pragma.js +2 -1
  490. package/dist/src/runtime/emit/pragma.js.map +1 -1
  491. package/dist/src/runtime/emit/project.d.ts.map +1 -1
  492. package/dist/src/runtime/emit/project.js +7 -2
  493. package/dist/src/runtime/emit/project.js.map +1 -1
  494. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  495. package/dist/src/runtime/emit/recursive-cte.js +2 -1
  496. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  497. package/dist/src/runtime/emit/returning.d.ts.map +1 -1
  498. package/dist/src/runtime/emit/returning.js +7 -2
  499. package/dist/src/runtime/emit/returning.js.map +1 -1
  500. package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
  501. package/dist/src/runtime/emit/scalar-function.js +2 -1
  502. package/dist/src/runtime/emit/scalar-function.js.map +1 -1
  503. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  504. package/dist/src/runtime/emit/scan.js +55 -17
  505. package/dist/src/runtime/emit/scan.js.map +1 -1
  506. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  507. package/dist/src/runtime/emit/schema-declarative.js +6 -5
  508. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  509. package/dist/src/runtime/emit/sequencing.d.ts.map +1 -1
  510. package/dist/src/runtime/emit/sequencing.js +2 -1
  511. package/dist/src/runtime/emit/sequencing.js.map +1 -1
  512. package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
  513. package/dist/src/runtime/emit/set-operation.js +6 -5
  514. package/dist/src/runtime/emit/set-operation.js.map +1 -1
  515. package/dist/src/runtime/emit/sink.d.ts.map +1 -1
  516. package/dist/src/runtime/emit/sink.js +2 -1
  517. package/dist/src/runtime/emit/sink.js.map +1 -1
  518. package/dist/src/runtime/emit/sort.d.ts.map +1 -1
  519. package/dist/src/runtime/emit/sort.js +2 -1
  520. package/dist/src/runtime/emit/sort.js.map +1 -1
  521. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  522. package/dist/src/runtime/emit/subquery.js +42 -23
  523. package/dist/src/runtime/emit/subquery.js.map +1 -1
  524. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  525. package/dist/src/runtime/emit/table-valued-function.js +2 -1
  526. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  527. package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
  528. package/dist/src/runtime/emit/temporal-arithmetic.js +2 -1
  529. package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
  530. package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
  531. package/dist/src/runtime/emit/transaction.js +2 -1
  532. package/dist/src/runtime/emit/transaction.js.map +1 -1
  533. package/dist/src/runtime/emit/unary.d.ts.map +1 -1
  534. package/dist/src/runtime/emit/unary.js +2 -1
  535. package/dist/src/runtime/emit/unary.js.map +1 -1
  536. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  537. package/dist/src/runtime/emit/update.js +2 -1
  538. package/dist/src/runtime/emit/update.js.map +1 -1
  539. package/dist/src/runtime/emit/values.d.ts.map +1 -1
  540. package/dist/src/runtime/emit/values.js +2 -1
  541. package/dist/src/runtime/emit/values.js.map +1 -1
  542. package/dist/src/runtime/emit/view-mutation.d.ts +1 -1
  543. package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -1
  544. package/dist/src/runtime/emit/view-mutation.js +6 -3
  545. package/dist/src/runtime/emit/view-mutation.js.map +1 -1
  546. package/dist/src/runtime/emit/window.d.ts.map +1 -1
  547. package/dist/src/runtime/emit/window.js +26 -9
  548. package/dist/src/runtime/emit/window.js.map +1 -1
  549. package/dist/src/runtime/emitters.d.ts +11 -3
  550. package/dist/src/runtime/emitters.d.ts.map +1 -1
  551. package/dist/src/runtime/emitters.js +13 -22
  552. package/dist/src/runtime/emitters.js.map +1 -1
  553. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  554. package/dist/src/runtime/foreign-key-actions.js +39 -13
  555. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  556. package/dist/src/runtime/parallel-driver.d.ts +18 -4
  557. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  558. package/dist/src/runtime/parallel-driver.js +72 -18
  559. package/dist/src/runtime/parallel-driver.js.map +1 -1
  560. package/dist/src/runtime/scheduler.d.ts +56 -7
  561. package/dist/src/runtime/scheduler.d.ts.map +1 -1
  562. package/dist/src/runtime/scheduler.js +223 -200
  563. package/dist/src/runtime/scheduler.js.map +1 -1
  564. package/dist/src/runtime/strict-flags.d.ts +22 -0
  565. package/dist/src/runtime/strict-flags.d.ts.map +1 -0
  566. package/dist/src/runtime/strict-flags.js +26 -0
  567. package/dist/src/runtime/strict-flags.js.map +1 -0
  568. package/dist/src/runtime/strict-fork.d.ts +4 -4
  569. package/dist/src/runtime/strict-fork.d.ts.map +1 -1
  570. package/dist/src/runtime/strict-fork.js +175 -31
  571. package/dist/src/runtime/strict-fork.js.map +1 -1
  572. package/dist/src/runtime/types.d.ts +66 -4
  573. package/dist/src/runtime/types.d.ts.map +1 -1
  574. package/dist/src/runtime/types.js +37 -0
  575. package/dist/src/runtime/types.js.map +1 -1
  576. package/dist/src/runtime/utils.d.ts.map +1 -1
  577. package/dist/src/runtime/utils.js +8 -17
  578. package/dist/src/runtime/utils.js.map +1 -1
  579. package/dist/src/schema/column.d.ts +8 -0
  580. package/dist/src/schema/column.d.ts.map +1 -1
  581. package/dist/src/schema/column.js.map +1 -1
  582. package/dist/src/schema/ddl-generator.js +5 -0
  583. package/dist/src/schema/ddl-generator.js.map +1 -1
  584. package/dist/src/schema/lens-compiler.js +2 -2
  585. package/dist/src/schema/lens-compiler.js.map +1 -1
  586. package/dist/src/schema/lens-prover.d.ts.map +1 -1
  587. package/dist/src/schema/lens-prover.js +2 -3
  588. package/dist/src/schema/lens-prover.js.map +1 -1
  589. package/dist/src/schema/lens.d.ts +1 -1
  590. package/dist/src/schema/manager.d.ts.map +1 -1
  591. package/dist/src/schema/manager.js +7 -2
  592. package/dist/src/schema/manager.js.map +1 -1
  593. package/dist/src/schema/rename-rewriter.d.ts +61 -0
  594. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  595. package/dist/src/schema/rename-rewriter.js +77 -0
  596. package/dist/src/schema/rename-rewriter.js.map +1 -1
  597. package/dist/src/schema/table.d.ts +36 -8
  598. package/dist/src/schema/table.d.ts.map +1 -1
  599. package/dist/src/schema/table.js +61 -11
  600. package/dist/src/schema/table.js.map +1 -1
  601. package/dist/src/schema/unique-enforcement.d.ts +28 -5
  602. package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
  603. package/dist/src/schema/unique-enforcement.js +37 -5
  604. package/dist/src/schema/unique-enforcement.js.map +1 -1
  605. package/dist/src/schema/view.d.ts +1 -1
  606. package/dist/src/schema/view.js +1 -1
  607. package/dist/src/types/json-type.d.ts.map +1 -1
  608. package/dist/src/types/json-type.js +18 -8
  609. package/dist/src/types/json-type.js.map +1 -1
  610. package/dist/src/types/logical-type.d.ts +26 -0
  611. package/dist/src/types/logical-type.d.ts.map +1 -1
  612. package/dist/src/types/logical-type.js.map +1 -1
  613. package/dist/src/util/comparison.d.ts +83 -59
  614. package/dist/src/util/comparison.d.ts.map +1 -1
  615. package/dist/src/util/comparison.js +191 -131
  616. package/dist/src/util/comparison.js.map +1 -1
  617. package/dist/src/util/json-canonical.d.ts +34 -0
  618. package/dist/src/util/json-canonical.d.ts.map +1 -0
  619. package/dist/src/util/json-canonical.js +32 -0
  620. package/dist/src/util/json-canonical.js.map +1 -0
  621. package/dist/src/util/key-serializer.d.ts +10 -3
  622. package/dist/src/util/key-serializer.d.ts.map +1 -1
  623. package/dist/src/util/key-serializer.js +43 -17
  624. package/dist/src/util/key-serializer.js.map +1 -1
  625. package/dist/src/util/key-tuple-codec.d.ts +37 -0
  626. package/dist/src/util/key-tuple-codec.d.ts.map +1 -0
  627. package/dist/src/util/key-tuple-codec.js +65 -0
  628. package/dist/src/util/key-tuple-codec.js.map +1 -0
  629. package/dist/src/util/latches.d.ts +29 -3
  630. package/dist/src/util/latches.d.ts.map +1 -1
  631. package/dist/src/util/latches.js +60 -6
  632. package/dist/src/util/latches.js.map +1 -1
  633. package/dist/src/util/patterns.d.ts +22 -8
  634. package/dist/src/util/patterns.d.ts.map +1 -1
  635. package/dist/src/util/patterns.js +87 -16
  636. package/dist/src/util/patterns.js.map +1 -1
  637. package/dist/src/util/qualified-name.d.ts +10 -0
  638. package/dist/src/util/qualified-name.d.ts.map +1 -0
  639. package/dist/src/util/qualified-name.js +15 -0
  640. package/dist/src/util/qualified-name.js.map +1 -0
  641. package/dist/src/vtab/backing-host.d.ts +8 -1
  642. package/dist/src/vtab/backing-host.d.ts.map +1 -1
  643. package/dist/src/vtab/backing-host.js +7 -0
  644. package/dist/src/vtab/backing-host.js.map +1 -1
  645. package/dist/src/vtab/best-access-plan.d.ts +18 -0
  646. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  647. package/dist/src/vtab/best-access-plan.js +15 -0
  648. package/dist/src/vtab/best-access-plan.js.map +1 -1
  649. package/dist/src/vtab/capabilities.d.ts +44 -0
  650. package/dist/src/vtab/capabilities.d.ts.map +1 -1
  651. package/dist/src/vtab/filter-info.d.ts +42 -0
  652. package/dist/src/vtab/filter-info.d.ts.map +1 -1
  653. package/dist/src/vtab/filter-info.js +137 -1
  654. package/dist/src/vtab/filter-info.js.map +1 -1
  655. package/dist/src/vtab/idx-str.d.ts +62 -0
  656. package/dist/src/vtab/idx-str.d.ts.map +1 -0
  657. package/dist/src/vtab/idx-str.js +130 -0
  658. package/dist/src/vtab/idx-str.js.map +1 -0
  659. package/dist/src/vtab/index-descriptor.d.ts +122 -0
  660. package/dist/src/vtab/index-descriptor.d.ts.map +1 -0
  661. package/dist/src/vtab/index-descriptor.js +104 -0
  662. package/dist/src/vtab/index-descriptor.js.map +1 -0
  663. package/dist/src/vtab/mapping-advertisement.d.ts +1 -1
  664. package/dist/src/vtab/memory/index.d.ts +12 -4
  665. package/dist/src/vtab/memory/index.d.ts.map +1 -1
  666. package/dist/src/vtab/memory/index.js +17 -9
  667. package/dist/src/vtab/memory/index.js.map +1 -1
  668. package/dist/src/vtab/memory/layer/base.d.ts +85 -31
  669. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  670. package/dist/src/vtab/memory/layer/base.js +127 -86
  671. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  672. package/dist/src/vtab/memory/layer/connection.d.ts +27 -0
  673. package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
  674. package/dist/src/vtab/memory/layer/connection.js +36 -1
  675. package/dist/src/vtab/memory/layer/connection.js.map +1 -1
  676. package/dist/src/vtab/memory/layer/interface.d.ts +24 -4
  677. package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
  678. package/dist/src/vtab/memory/layer/manager.d.ts +212 -16
  679. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  680. package/dist/src/vtab/memory/layer/manager.js +754 -170
  681. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  682. package/dist/src/vtab/memory/layer/plan-filter.d.ts +26 -1
  683. package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
  684. package/dist/src/vtab/memory/layer/plan-filter.js +29 -11
  685. package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
  686. package/dist/src/vtab/memory/layer/safe-iterate.d.ts +2 -2
  687. package/dist/src/vtab/memory/layer/safe-iterate.d.ts.map +1 -1
  688. package/dist/src/vtab/memory/layer/safe-iterate.js +2 -2
  689. package/dist/src/vtab/memory/layer/safe-iterate.js.map +1 -1
  690. package/dist/src/vtab/memory/layer/scan-layer.d.ts +5 -1
  691. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  692. package/dist/src/vtab/memory/layer/scan-layer.js +38 -22
  693. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  694. package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
  695. package/dist/src/vtab/memory/layer/scan-plan.js +13 -21
  696. package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
  697. package/dist/src/vtab/memory/layer/transaction.d.ts +169 -7
  698. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  699. package/dist/src/vtab/memory/layer/transaction.js +334 -9
  700. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  701. package/dist/src/vtab/memory/module.d.ts +21 -4
  702. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  703. package/dist/src/vtab/memory/module.js +45 -16
  704. package/dist/src/vtab/memory/module.js.map +1 -1
  705. package/dist/src/vtab/memory/table.d.ts +30 -4
  706. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  707. package/dist/src/vtab/memory/table.js +63 -15
  708. package/dist/src/vtab/memory/table.js.map +1 -1
  709. package/dist/src/vtab/memory/utils/predicate.d.ts +9 -1
  710. package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -1
  711. package/dist/src/vtab/memory/utils/predicate.js +35 -14
  712. package/dist/src/vtab/memory/utils/predicate.js.map +1 -1
  713. package/dist/src/vtab/memory/utils/primary-key-encode.d.ts.map +1 -1
  714. package/dist/src/vtab/memory/utils/primary-key-encode.js +12 -6
  715. package/dist/src/vtab/memory/utils/primary-key-encode.js.map +1 -1
  716. package/dist/src/vtab/memory/utils/primary-key.d.ts +6 -1
  717. package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
  718. package/dist/src/vtab/memory/utils/primary-key.js +12 -8
  719. package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
  720. package/dist/src/vtab/module.d.ts +64 -14
  721. package/dist/src/vtab/module.d.ts.map +1 -1
  722. package/dist/src/vtab/table.d.ts +41 -2
  723. package/dist/src/vtab/table.d.ts.map +1 -1
  724. package/dist/src/vtab/table.js +19 -0
  725. package/dist/src/vtab/table.js.map +1 -1
  726. package/package.json +5 -4
  727. package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts +0 -18
  728. package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts.map +0 -1
  729. package/dist/src/planner/rules/cache/rule-materialization-advisory.js +0 -65
  730. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
@@ -0,0 +1,130 @@
1
+ /**
2
+ * The `idxStr` wire format: one encoder, one decoder.
3
+ *
4
+ * `FilterInfo.idxStr` is the text the planner hands a module's runtime to say which
5
+ * index it chose and how it means to walk it. Its shape is:
6
+ *
7
+ * idx=<indexName>(<nameArg>);plan=<code>[;<key>=<value>]*
8
+ *
9
+ * plus two sentinels — `fullscan` (no index) and `empty` (provably no rows). Every
10
+ * producer and consumer in the engine goes through this module, so the format is
11
+ * defined in exactly one place. The structured, typed form of the same information
12
+ * is `FilterInfo.accessPath` (see `index-descriptor.ts`); prefer that when you need
13
+ * to know *what the index is* rather than what to hand a module runtime.
14
+ */
15
+ import { quereusError } from '../common/errors.js';
16
+ import { StatusCode } from '../common/types.js';
17
+ const IDX_NAME_ARG_RE = /^(.*?)\((\d+)\)$/;
18
+ /** No parameters — shared to avoid allocating an empty Map per decode. */
19
+ const NO_PARAMS = new Map();
20
+ /** The two sentinel `idxStr` values, which name no index. */
21
+ const FULL_SCAN_SENTINEL = 'fullscan';
22
+ const EMPTY_SENTINEL = 'empty';
23
+ const PLAN_CODE_BY_KIND = new Map([
24
+ ['scan', 0],
25
+ ['eqSeek', 2],
26
+ ['rangeSeek', 3],
27
+ ['multiSeek', 5],
28
+ ['multiRangeSeek', 6],
29
+ ['prefixRangeSeek', 7],
30
+ ]);
31
+ const PLAN_KIND_BY_CODE = new Map([...PLAN_CODE_BY_KIND].map(([kind, code]) => [code, kind]));
32
+ /** The {@link IndexPlanKind} for a `plan=` code, or undefined for a code this engine never emits. */
33
+ export function planKindFromCode(code) {
34
+ return PLAN_KIND_BY_CODE.get(code);
35
+ }
36
+ /** The `plan=` code for an {@link IndexPlanKind}. Total — every kind has a code. */
37
+ export function planCodeFromKind(kind) {
38
+ const code = PLAN_CODE_BY_KIND.get(kind);
39
+ if (code === undefined) {
40
+ quereusError(`Unknown index plan kind '${kind}'`, StatusCode.INTERNAL);
41
+ }
42
+ return code;
43
+ }
44
+ /**
45
+ * Distinguish the two sentinel strings from a genuine index string.
46
+ * Returns null for `null`, `''`, and anything that is not a sentinel.
47
+ */
48
+ export function idxStrSentinel(idxStr) {
49
+ if (idxStr === FULL_SCAN_SENTINEL)
50
+ return 'fullScan';
51
+ if (idxStr === EMPTY_SENTINEL)
52
+ return 'empty';
53
+ return null;
54
+ }
55
+ /** Render an {@link IdxStrSpec} to its wire form. */
56
+ export function encodeIdxStr(spec) {
57
+ const parts = [`idx=${spec.indexName}(${spec.nameArg})`, `plan=${spec.plan}`];
58
+ for (const [key, value] of spec.params) {
59
+ if (key === 'idx' || key === 'plan') {
60
+ quereusError(`idxStr parameter '${key}' is reserved and cannot appear in params`, StatusCode.INTERNAL);
61
+ }
62
+ parts.push(`${key}=${value}`);
63
+ }
64
+ return parts.join(';');
65
+ }
66
+ /**
67
+ * Parse an `idxStr`.
68
+ *
69
+ * Returns null for `null`, `''`, the `fullscan` / `empty` sentinels, and any string
70
+ * without a parseable `idx=<name>(<n>)` term — i.e. exactly the cases where no index
71
+ * is named. Use {@link idxStrSentinel} to tell the two sentinels apart from garbage.
72
+ *
73
+ * A parameter's value may contain `=`, `:` and `,` (e.g. `rangeOps=ge:lt,gt`); only the
74
+ * FIRST `=` in each `;`-separated term separates key from value.
75
+ */
76
+ export function decodeIdxStr(idxStr) {
77
+ if (!idxStr || idxStrSentinel(idxStr) !== null)
78
+ return null;
79
+ let indexTerm;
80
+ let planTerm;
81
+ const params = new Map();
82
+ for (const part of idxStr.split(';')) {
83
+ const sep = part.indexOf('=');
84
+ if (sep <= 0)
85
+ continue;
86
+ const key = part.slice(0, sep);
87
+ const value = part.slice(sep + 1);
88
+ if (key === 'idx') {
89
+ indexTerm = value;
90
+ }
91
+ else if (key === 'plan') {
92
+ planTerm = value;
93
+ }
94
+ else {
95
+ params.set(key, value);
96
+ }
97
+ }
98
+ if (indexTerm === undefined)
99
+ return null;
100
+ const match = IDX_NAME_ARG_RE.exec(indexTerm);
101
+ if (!match)
102
+ return null;
103
+ const plan = planTerm === undefined ? 0 : Number.parseInt(planTerm, 10);
104
+ return {
105
+ indexName: match[1],
106
+ nameArg: Number.parseInt(match[2], 10),
107
+ plan: Number.isNaN(plan) ? 0 : plan,
108
+ params: params.size === 0 ? NO_PARAMS : params,
109
+ };
110
+ }
111
+ /**
112
+ * Rename the index inside an `idxStr`, preserving `plan`, `nameArg`, and every parameter
113
+ * verbatim — including parameters and plan codes this engine does not understand. Strings
114
+ * that name no index (sentinels, null, garbage) are returned unchanged.
115
+ *
116
+ * Implemented as decode → swap name → encode, so it cannot corrupt what it cannot read.
117
+ */
118
+ export function retargetIdxStr(idxStr, newIndexName) {
119
+ const spec = decodeIdxStr(idxStr);
120
+ if (!spec)
121
+ return idxStr;
122
+ if (spec.indexName === newIndexName)
123
+ return idxStr;
124
+ return encodeIdxStr({ ...spec, indexName: newIndexName });
125
+ }
126
+ /** Build an {@link IdxStrSpec} for a plan the engine itself chose. `nameArg` is always 0. */
127
+ export function makeIdxStrSpec(indexName, plan, params) {
128
+ return { indexName, nameArg: 0, plan: planCodeFromKind(plan), params: params ?? NO_PARAMS };
129
+ }
130
+ //# sourceMappingURL=idx-str.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idx-str.js","sourceRoot":"","sources":["../../../src/vtab/idx-str.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Typed identity of the index an access plan iterates.
3
+ *
4
+ * The planner records its chosen index twice: as the free-text `FilterInfo.idxStr`
5
+ * wire format (see `idx-str.ts`) and as the structured {@link AccessPath} on
6
+ * `FilterInfo.accessPath`. Consumers that care about *what the index is* — most
7
+ * importantly anything that must merge or compare rows in the scan's emission
8
+ * order — read the structured form. `idxStr` remains the text projection consumed
9
+ * by module runtimes.
10
+ */
11
+ import type { TableSchema } from '../schema/table.js';
12
+ import type { BestAccessPlanResult } from './best-access-plan.js';
13
+ /** One key column of an index, expressed table-relative. */
14
+ export interface IndexKeyColumn {
15
+ /** 0-based index into `TableSchema.columns`. */
16
+ readonly columnIndex: number;
17
+ /** true ⇒ this key column is ordered descending within the index. */
18
+ readonly desc: boolean;
19
+ /** Declared collation name for this key column; undefined ⇒ BINARY. */
20
+ readonly collation?: string;
21
+ }
22
+ /**
23
+ * Structured identity of the index an access plan iterates.
24
+ *
25
+ * `name` is the module's own name for the index and is what appears in `idxStr`;
26
+ * it may be a per-plan alias that resolves to nothing in the table schema. `role`
27
+ * is therefore authoritative, not the name: a descriptor with `role: 'primary'`
28
+ * IS the table's primary key however it is named.
29
+ */
30
+ export interface IndexDescriptor {
31
+ readonly name: string;
32
+ readonly role: 'primary' | 'secondary';
33
+ /** The index's FULL key columns, in index order (not just the seek prefix). */
34
+ readonly keyColumns: readonly IndexKeyColumn[];
35
+ /** true ⇒ a walk of this index yields at most one row per distinct key. */
36
+ readonly unique: boolean;
37
+ /**
38
+ * true ⇒ the SCAN walks this index in REVERSE of its declared `keyColumns`
39
+ * order (an `ORDER BY … DESC` over an ascending index). Absent/false ⇒ forward.
40
+ *
41
+ * This is the one place scan DIRECTION is modelled structurally, so an
42
+ * emission-order consumer (the isolation overlay's merged read) can walk the
43
+ * reversed stream correctly. A module whose `idxStr` already encodes direction
44
+ * (the in-memory vtab's `ordCons=DESC`) need not set it; a module that carries
45
+ * direction only in an opaque per-plan index name (lamina) MUST, or the overlay
46
+ * merges a reversed underlying stream against a forward comparator.
47
+ */
48
+ readonly reverse?: boolean;
49
+ }
50
+ /**
51
+ * Which seek/scan strategy the planner chose over an {@link IndexDescriptor}.
52
+ * One-to-one with the `plan=N` codes carried in `idxStr`.
53
+ *
54
+ * Scan DIRECTION is not part of the plan KIND. For the in-memory vtab it rides
55
+ * `idxStr` (the `plan=1` / `plan=4` descending codes and the `ordCons=DESC`
56
+ * parameter its scan-plan builder recognises). A module that carries direction
57
+ * only in an opaque per-plan index name (lamina) instead sets
58
+ * {@link IndexDescriptor.reverse} so an emission-order consumer can still learn
59
+ * the scan is reversed.
60
+ */
61
+ export type IndexPlanKind = 'scan' | 'eqSeek' | 'rangeSeek' | 'multiSeek' | 'multiRangeSeek' | 'prefixRangeSeek';
62
+ /** Structured description of the access path chosen for one table reference. */
63
+ export type AccessPath = {
64
+ readonly kind: 'fullScan';
65
+ } | {
66
+ readonly kind: 'empty';
67
+ } | {
68
+ readonly kind: 'index';
69
+ readonly index: IndexDescriptor;
70
+ readonly plan: IndexPlanKind;
71
+ }
72
+ /**
73
+ * The plan named an index the engine could not resolve, and the module supplied no
74
+ * `indexDescriptor` for it. Consumers that need the index identity (to merge in scan
75
+ * order, say) MUST fail loudly rather than guess — an unresolved secondary index
76
+ * merged as if it were the primary key silently reorders rows.
77
+ */
78
+ | {
79
+ readonly kind: 'unresolvedIndex';
80
+ readonly indexName: string;
81
+ readonly plan: IndexPlanKind;
82
+ };
83
+ /** The canonical name the engine uses for a table's primary-key index in `idxStr`. */
84
+ export declare const PRIMARY_INDEX_NAME = "_primary_";
85
+ /** The name physical plan nodes use for the primary-key index (`IndexScanNode.indexName`). */
86
+ export declare const PRIMARY_PHYSICAL_INDEX_NAME = "primary";
87
+ /** True when `name` is one of the two spellings the engine uses for the primary key. */
88
+ export declare function isPrimaryIndexName(name: string): boolean;
89
+ /**
90
+ * The table's primary key as an {@link IndexDescriptor}, named `_primary_`.
91
+ *
92
+ * Returns undefined for a table with no declared primary key: a descriptor with an
93
+ * empty `keyColumns` describes nothing, and every consumer that would read it wants
94
+ * a full scan instead.
95
+ */
96
+ export declare function primaryKeyDescriptor(tableSchema: TableSchema): IndexDescriptor | undefined;
97
+ /**
98
+ * Resolve the structured identity of `indexName` for this plan. Resolution order:
99
+ * 1. `accessPlan.indexDescriptor`, when the module supplied one naming this index.
100
+ * 2. `indexName` is `_primary_` or `primary` ⇒ {@link primaryKeyDescriptor}.
101
+ * 3. Case-insensitive hit in `tableSchema.indexes`.
102
+ * 4. undefined — the caller emits `{ kind: 'unresolvedIndex' }` and logs.
103
+ *
104
+ * `indexName` is taken explicitly rather than read off `accessPlan.indexName`: the
105
+ * ordering-only arm of `rule-select-access-path` walks `accessPlan.orderingIndexName`
106
+ * and the legacy arms hardcode `_primary_`, so the name that lands in `idxStr` is not
107
+ * always `accessPlan.indexName`. The descriptor must describe the index actually walked.
108
+ *
109
+ * There is deliberately no prefix rule: a secondary index genuinely named
110
+ * `_primary_extra` resolves via the schema lookup as `role: 'secondary'`.
111
+ */
112
+ export declare function resolveIndexDescriptor(tableSchema: TableSchema, accessPlan: BestAccessPlanResult, indexName: string): IndexDescriptor | undefined;
113
+ /**
114
+ * Validate a module-supplied {@link IndexDescriptor} against the plan that carries it
115
+ * and the request it answers. Called from `validateAccessPlan`; separated so the rules
116
+ * stay readable.
117
+ *
118
+ * The descriptor must name the index the plan actually drives. That is `indexName` for
119
+ * a seek plan; an ordering-only plan sets `orderingIndexName` alone, so accept either.
120
+ */
121
+ export declare function validateIndexDescriptor(descriptor: IndexDescriptor, indexName: string | undefined, orderingIndexName: string | undefined, columnCount: number): void;
122
+ //# sourceMappingURL=index-descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-descriptor.d.ts","sourceRoot":"","sources":["../../../src/vtab/index-descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;IACvC,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,GACtB,MAAM,GACN,QAAQ,GACR,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,iBAAiB,CAAC;AAErB,gFAAgF;AAChF,MAAM,MAAM,UAAU,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE;AAC3F;;;;;GAKG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAElG,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,8FAA8F;AAC9F,eAAO,MAAM,2BAA2B,YAAY,CAAC;AAErD,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,eAAe,GAAG,SAAS,CAa1F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACrC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,oBAAoB,EAChC,SAAS,EAAE,MAAM,GACf,eAAe,GAAG,SAAS,CAoB7B;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACtC,UAAU,EAAE,eAAe,EAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,WAAW,EAAE,MAAM,GACjB,IAAI,CA4BN"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Typed identity of the index an access plan iterates.
3
+ *
4
+ * The planner records its chosen index twice: as the free-text `FilterInfo.idxStr`
5
+ * wire format (see `idx-str.ts`) and as the structured {@link AccessPath} on
6
+ * `FilterInfo.accessPath`. Consumers that care about *what the index is* — most
7
+ * importantly anything that must merge or compare rows in the scan's emission
8
+ * order — read the structured form. `idxStr` remains the text projection consumed
9
+ * by module runtimes.
10
+ */
11
+ import { quereusError } from '../common/errors.js';
12
+ import { StatusCode } from '../common/types.js';
13
+ /** The canonical name the engine uses for a table's primary-key index in `idxStr`. */
14
+ export const PRIMARY_INDEX_NAME = '_primary_';
15
+ /** The name physical plan nodes use for the primary-key index (`IndexScanNode.indexName`). */
16
+ export const PRIMARY_PHYSICAL_INDEX_NAME = 'primary';
17
+ /** True when `name` is one of the two spellings the engine uses for the primary key. */
18
+ export function isPrimaryIndexName(name) {
19
+ return name === PRIMARY_INDEX_NAME || name === PRIMARY_PHYSICAL_INDEX_NAME;
20
+ }
21
+ /**
22
+ * The table's primary key as an {@link IndexDescriptor}, named `_primary_`.
23
+ *
24
+ * Returns undefined for a table with no declared primary key: a descriptor with an
25
+ * empty `keyColumns` describes nothing, and every consumer that would read it wants
26
+ * a full scan instead.
27
+ */
28
+ export function primaryKeyDescriptor(tableSchema) {
29
+ const pkCols = tableSchema.primaryKeyDefinition ?? [];
30
+ if (pkCols.length === 0)
31
+ return undefined;
32
+ return {
33
+ name: PRIMARY_INDEX_NAME,
34
+ role: 'primary',
35
+ keyColumns: pkCols.map(col => ({
36
+ columnIndex: col.index,
37
+ desc: col.desc === true,
38
+ collation: col.collation,
39
+ })),
40
+ unique: true,
41
+ };
42
+ }
43
+ /**
44
+ * Resolve the structured identity of `indexName` for this plan. Resolution order:
45
+ * 1. `accessPlan.indexDescriptor`, when the module supplied one naming this index.
46
+ * 2. `indexName` is `_primary_` or `primary` ⇒ {@link primaryKeyDescriptor}.
47
+ * 3. Case-insensitive hit in `tableSchema.indexes`.
48
+ * 4. undefined — the caller emits `{ kind: 'unresolvedIndex' }` and logs.
49
+ *
50
+ * `indexName` is taken explicitly rather than read off `accessPlan.indexName`: the
51
+ * ordering-only arm of `rule-select-access-path` walks `accessPlan.orderingIndexName`
52
+ * and the legacy arms hardcode `_primary_`, so the name that lands in `idxStr` is not
53
+ * always `accessPlan.indexName`. The descriptor must describe the index actually walked.
54
+ *
55
+ * There is deliberately no prefix rule: a secondary index genuinely named
56
+ * `_primary_extra` resolves via the schema lookup as `role: 'secondary'`.
57
+ */
58
+ export function resolveIndexDescriptor(tableSchema, accessPlan, indexName) {
59
+ const supplied = accessPlan.indexDescriptor;
60
+ if (supplied && supplied.name === indexName)
61
+ return supplied;
62
+ if (isPrimaryIndexName(indexName))
63
+ return primaryKeyDescriptor(tableSchema);
64
+ const lowered = indexName.toLowerCase();
65
+ const schemaIndex = tableSchema.indexes?.find(idx => idx.name.toLowerCase() === lowered);
66
+ if (!schemaIndex)
67
+ return undefined;
68
+ return {
69
+ name: schemaIndex.name,
70
+ role: 'secondary',
71
+ keyColumns: schemaIndex.columns.map(col => ({
72
+ columnIndex: col.index,
73
+ desc: col.desc === true,
74
+ collation: col.collation,
75
+ })),
76
+ unique: schemaIndex.unique === true,
77
+ };
78
+ }
79
+ /**
80
+ * Validate a module-supplied {@link IndexDescriptor} against the plan that carries it
81
+ * and the request it answers. Called from `validateAccessPlan`; separated so the rules
82
+ * stay readable.
83
+ *
84
+ * The descriptor must name the index the plan actually drives. That is `indexName` for
85
+ * a seek plan; an ordering-only plan sets `orderingIndexName` alone, so accept either.
86
+ */
87
+ export function validateIndexDescriptor(descriptor, indexName, orderingIndexName, columnCount) {
88
+ const expected = indexName ?? orderingIndexName;
89
+ if (expected === undefined) {
90
+ quereusError(`indexDescriptor '${descriptor.name}' supplied but the plan names no index via indexName or orderingIndexName`, StatusCode.FORMAT);
91
+ }
92
+ if (descriptor.name !== expected) {
93
+ quereusError(`indexDescriptor.name '${descriptor.name}' must equal the plan's index name '${expected}'`, StatusCode.FORMAT);
94
+ }
95
+ if (descriptor.keyColumns.length === 0) {
96
+ quereusError(`indexDescriptor '${descriptor.name}' must declare at least one key column`, StatusCode.FORMAT);
97
+ }
98
+ for (const keyColumn of descriptor.keyColumns) {
99
+ if (keyColumn.columnIndex < 0 || keyColumn.columnIndex >= columnCount) {
100
+ quereusError(`Invalid indexDescriptor key column index ${keyColumn.columnIndex}, must be 0-${columnCount - 1}`, StatusCode.FORMAT);
101
+ }
102
+ }
103
+ }
104
+ //# sourceMappingURL=index-descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-descriptor.js","sourceRoot":"","sources":["../../../src/vtab/index-descriptor.ts"],"names":[],"mappings":"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"}
@@ -116,7 +116,7 @@ export interface SharedKey {
116
116
  * column is also a logical column. It is not a generation policy: the engine no
117
117
  * longer invents a key. Both kinds source the threaded value from ordinary
118
118
  * column-default / supplied-value machinery and propagate it across the fan-out
119
- * via the equivalence class (`docs/view-updateability.md` § Mutation Context):
119
+ * via the equivalence class (`docs/vu-mutation-context.md` § Mutation Context):
120
120
  * - `surrogate`: a substrate-managed key distinct from any logical column. The
121
121
  * value comes from the **anchor's shared-key column `default`**, evaluated once
122
122
  * per produced row at the envelope (evaluate-once-and-thread). A basis author
@@ -1,5 +1,6 @@
1
1
  import { BTree } from 'inheritree';
2
2
  import { type Row } from '../../common/types.js';
3
+ import type { CollationResolver } from '../../types/logical-type.js';
3
4
  import type { BTreeKeyForPrimary, BTreeKeyForIndex, MemoryIndexEntry } from './types.js';
4
5
  import type { IndexColumnSchema as IndexColumnSpec } from '../../schema/table.js';
5
6
  import type { ColumnSchema } from '../../schema/column.js';
@@ -27,8 +28,9 @@ export declare class MemoryIndex {
27
28
  * used to sort each entry's `primaryKeys` on read (see {@link getSortedPrimaryKeys}).
28
29
  * It is per-index — identical for every entry — so it lives here, not duplicated
29
30
  * per entry. A PK-collation change via `ALTER COLUMN … SET COLLATE` forces a full
30
- * base rebuild (`rebuildAllSecondaryIndexes` / `rebuildPrimaryTreeStrict`),
31
- * recreating entries under the new comparator/encoderso no stale order or
31
+ * base rebuild (`rebuildAllSecondaryIndexes` / `rebuildPrimaryTreeStrict`) and, on
32
+ * every layer of an open transaction, `TransactionLayer.rekeyPrimaryKey` each
33
+ * recreating its entries under the new comparator/encoder, so no stale order or
32
34
  * encoding survives an ALTER.
33
35
  */
34
36
  private readonly primaryKeyComparator;
@@ -40,7 +42,13 @@ export declare class MemoryIndex {
40
42
  * add/remove. See `utils/primary-key-encode.ts`.
41
43
  */
42
44
  private readonly encode;
43
- constructor(spec: IndexSpec, allTableColumnsSchema: ReadonlyArray<ColumnSchema>, primaryKeyComparator: (a: BTreeKeyForPrimary, b: BTreeKeyForPrimary) => number, encode: (pk: BTreeKeyForPrimary) => string, baseInheritreeTable?: BTree<BTreeKeyForIndex, MemoryIndexEntry>);
45
+ /**
46
+ * Resolves this index's declared column collations against the owning database.
47
+ * A layer hands down its own resolver, so a child layer's comparator is built
48
+ * from the same collation function as the parent tree it inherits.
49
+ */
50
+ private readonly collationResolver;
51
+ constructor(spec: IndexSpec, allTableColumnsSchema: ReadonlyArray<ColumnSchema>, collationResolver: CollationResolver, primaryKeyComparator: (a: BTreeKeyForPrimary, b: BTreeKeyForPrimary) => number, encode: (pk: BTreeKeyForPrimary) => string, tableName: string, baseInheritreeTable?: BTree<BTreeKeyForIndex, MemoryIndexEntry>);
44
52
  /** True when the partial-index predicate is satisfied by `row` (or there is no predicate). */
45
53
  rowMatchesPredicate(row: Row): boolean;
46
54
  private validateColumnIndexes;
@@ -93,7 +101,7 @@ export declare class MemoryIndex {
93
101
  getPrimaryKeys(indexKey: BTreeKeyForIndex): BTreeKeyForPrimary[];
94
102
  /**
95
103
  * True when at least one PK is mapped under `indexKey`. O(1) (Map size), so the
96
- * build-time UNIQUE check (BaseLayer `populateNewIndex`) can probe per row without
104
+ * build-time UNIQUE check (`populateIndexFromRows`) can probe per row without
97
105
  * sorting the bucket.
98
106
  */
99
107
  hasAnyPrimaryKey(indexKey: BTreeKeyForIndex): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/vtab/memory/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/vtab/memory/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { BTree } from 'inheritree';
2
2
  import { StatusCode } from '../../common/types.js';
3
- import { createTypedComparator, resolveCollation } from '../../util/comparison.js';
3
+ import { createTypedComparator } from '../../util/comparison.js';
4
4
  import { quereusError } from '../../common/errors.js';
5
5
  import { compilePredicate } from './utils/predicate.js';
6
6
  /** Represents a secondary index within a MemoryTable */
@@ -19,8 +19,9 @@ export class MemoryIndex {
19
19
  * used to sort each entry's `primaryKeys` on read (see {@link getSortedPrimaryKeys}).
20
20
  * It is per-index — identical for every entry — so it lives here, not duplicated
21
21
  * per entry. A PK-collation change via `ALTER COLUMN … SET COLLATE` forces a full
22
- * base rebuild (`rebuildAllSecondaryIndexes` / `rebuildPrimaryTreeStrict`),
23
- * recreating entries under the new comparator/encoderso no stale order or
22
+ * base rebuild (`rebuildAllSecondaryIndexes` / `rebuildPrimaryTreeStrict`) and, on
23
+ * every layer of an open transaction, `TransactionLayer.rekeyPrimaryKey` each
24
+ * recreating its entries under the new comparator/encoder, so no stale order or
24
25
  * encoding survives an ALTER.
25
26
  */
26
27
  primaryKeyComparator;
@@ -32,17 +33,24 @@ export class MemoryIndex {
32
33
  * add/remove. See `utils/primary-key-encode.ts`.
33
34
  */
34
35
  encode;
35
- constructor(spec, allTableColumnsSchema, primaryKeyComparator, encode, baseInheritreeTable) {
36
+ /**
37
+ * Resolves this index's declared column collations against the owning database.
38
+ * A layer hands down its own resolver, so a child layer's comparator is built
39
+ * from the same collation function as the parent tree it inherits.
40
+ */
41
+ collationResolver;
42
+ constructor(spec, allTableColumnsSchema, collationResolver, primaryKeyComparator, encode, tableName, baseInheritreeTable) {
36
43
  this.name = spec.name;
37
44
  this.specColumns = Object.freeze(spec.columns.map(c => ({ ...c })));
38
45
  this.allTableColumnsSchema = allTableColumnsSchema;
46
+ this.collationResolver = collationResolver;
39
47
  this.primaryKeyComparator = primaryKeyComparator;
40
48
  this.encode = encode;
41
49
  this.validateColumnIndexes(allTableColumnsSchema);
42
50
  const keyFunctions = this.createIndexKeyFunctions();
43
51
  this.keyFromRow = keyFunctions.keyFromRow;
44
52
  this.compareKeys = keyFunctions.compareKeys;
45
- this.predicate = spec.predicate ? compilePredicate(spec.predicate, allTableColumnsSchema) : undefined;
53
+ this.predicate = spec.predicate ? compilePredicate(spec.predicate, allTableColumnsSchema, tableName) : undefined;
46
54
  this.data = this.createBTree(baseInheritreeTable);
47
55
  }
48
56
  /** True when the partial-index predicate is satisfied by `row` (or there is no predicate). */
@@ -71,7 +79,7 @@ export class MemoryIndex {
71
79
  const columnSchema = this.allTableColumnsSchema[colSchemaIndex];
72
80
  const descMultiplier = specCol.desc ? -1 : 1;
73
81
  // Create type-aware comparator
74
- const collationFunc = specCol.collation ? resolveCollation(specCol.collation) : undefined;
82
+ const collationFunc = specCol.collation ? this.collationResolver(specCol.collation) : undefined;
75
83
  const typedComparator = createTypedComparator(columnSchema.logicalType, collationFunc);
76
84
  const keyFromRow = (row) => {
77
85
  this.validateRowLength(row, colSchemaIndex);
@@ -87,7 +95,7 @@ export class MemoryIndex {
87
95
  // Pre-create type-aware comparators for each column
88
96
  const comparators = localSpecColumns.map(sc => {
89
97
  const columnSchema = this.allTableColumnsSchema[sc.index];
90
- const collationFunc = sc.collation ? resolveCollation(sc.collation) : undefined;
98
+ const collationFunc = sc.collation ? this.collationResolver(sc.collation) : undefined;
91
99
  return createTypedComparator(columnSchema.logicalType, collationFunc);
92
100
  });
93
101
  const keyFromRow = (row) => {
@@ -119,7 +127,7 @@ export class MemoryIndex {
119
127
  }
120
128
  }
121
129
  createBTree(baseInheritreeTable) {
122
- return new BTree((entry) => entry.indexKey, this.compareKeys, baseInheritreeTable);
130
+ return new BTree((entry) => entry.indexKey, this.compareKeys, { base: baseInheritreeTable });
123
131
  }
124
132
  /**
125
133
  * Entries created by THIS index instance — safe to mutate in place. An entry
@@ -236,7 +244,7 @@ export class MemoryIndex {
236
244
  }
237
245
  /**
238
246
  * True when at least one PK is mapped under `indexKey`. O(1) (Map size), so the
239
- * build-time UNIQUE check (BaseLayer `populateNewIndex`) can probe per row without
247
+ * build-time UNIQUE check (`populateIndexFromRows`) can probe per row without
240
248
  * sorting the bucket.
241
249
  */
242
250
  hasAnyPrimaryKey(indexKey) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/vtab/memory/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/vtab/memory/index.ts"],"names":[],"mappings":"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"}