@quereus/quereus 0.7.2 → 0.7.4

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 (566) hide show
  1. package/package.json +3 -3
  2. package/dist/src/common/constants.js.map +0 -1
  3. package/dist/src/common/datatype.js.map +0 -1
  4. package/dist/src/common/errors.js.map +0 -1
  5. package/dist/src/common/json-types.js.map +0 -1
  6. package/dist/src/common/logger.js.map +0 -1
  7. package/dist/src/common/type-inference.js.map +0 -1
  8. package/dist/src/common/types.js.map +0 -1
  9. package/dist/src/core/database-options.js.map +0 -1
  10. package/dist/src/core/database.js.map +0 -1
  11. package/dist/src/core/param.js.map +0 -1
  12. package/dist/src/core/statement.js.map +0 -1
  13. package/dist/src/func/builtins/aggregate.js.map +0 -1
  14. package/dist/src/func/builtins/builtin-window-functions.js.map +0 -1
  15. package/dist/src/func/builtins/conversion.js.map +0 -1
  16. package/dist/src/func/builtins/datetime.js.map +0 -1
  17. package/dist/src/func/builtins/explain.js.map +0 -1
  18. package/dist/src/func/builtins/generation.js.map +0 -1
  19. package/dist/src/func/builtins/index.js.map +0 -1
  20. package/dist/src/func/builtins/json-helpers.js.map +0 -1
  21. package/dist/src/func/builtins/json-tvf.js.map +0 -1
  22. package/dist/src/func/builtins/json.js.map +0 -1
  23. package/dist/src/func/builtins/scalar.js.map +0 -1
  24. package/dist/src/func/builtins/schema.js.map +0 -1
  25. package/dist/src/func/builtins/string.js.map +0 -1
  26. package/dist/src/func/builtins/timespan.js.map +0 -1
  27. package/dist/src/func/context.js.map +0 -1
  28. package/dist/src/func/registration.js.map +0 -1
  29. package/dist/src/index.js.map +0 -1
  30. package/dist/src/parser/ast.js.map +0 -1
  31. package/dist/src/parser/index.js.map +0 -1
  32. package/dist/src/parser/lexer.js.map +0 -1
  33. package/dist/src/parser/parser.js.map +0 -1
  34. package/dist/src/parser/utils.js.map +0 -1
  35. package/dist/src/parser/visitor.js.map +0 -1
  36. package/dist/src/planner/analysis/binding-collector.js.map +0 -1
  37. package/dist/src/planner/analysis/const-evaluator.js.map +0 -1
  38. package/dist/src/planner/analysis/const-pass.js.map +0 -1
  39. package/dist/src/planner/analysis/constraint-extractor.js.map +0 -1
  40. package/dist/src/planner/analysis/predicate-normalizer.js.map +0 -1
  41. package/dist/src/planner/building/alter-table.js.map +0 -1
  42. package/dist/src/planner/building/block.js.map +0 -1
  43. package/dist/src/planner/building/constraint-builder.js.map +0 -1
  44. package/dist/src/planner/building/create-assertion.js.map +0 -1
  45. package/dist/src/planner/building/create-view.js.map +0 -1
  46. package/dist/src/planner/building/ddl.js.map +0 -1
  47. package/dist/src/planner/building/declare-schema.js.map +0 -1
  48. package/dist/src/planner/building/delete.js.map +0 -1
  49. package/dist/src/planner/building/drop-assertion.js.map +0 -1
  50. package/dist/src/planner/building/drop-table.js.map +0 -1
  51. package/dist/src/planner/building/drop-view.js.map +0 -1
  52. package/dist/src/planner/building/expression.js.map +0 -1
  53. package/dist/src/planner/building/function-call.js.map +0 -1
  54. package/dist/src/planner/building/insert.js.map +0 -1
  55. package/dist/src/planner/building/pragma.js.map +0 -1
  56. package/dist/src/planner/building/schema-resolution.js.map +0 -1
  57. package/dist/src/planner/building/select-aggregates.js.map +0 -1
  58. package/dist/src/planner/building/select-compound.js.map +0 -1
  59. package/dist/src/planner/building/select-context.js.map +0 -1
  60. package/dist/src/planner/building/select-modifiers.js.map +0 -1
  61. package/dist/src/planner/building/select-projections.js.map +0 -1
  62. package/dist/src/planner/building/select-window.js.map +0 -1
  63. package/dist/src/planner/building/select.js.map +0 -1
  64. package/dist/src/planner/building/table-function.js.map +0 -1
  65. package/dist/src/planner/building/table.js.map +0 -1
  66. package/dist/src/planner/building/transaction.js.map +0 -1
  67. package/dist/src/planner/building/update.js.map +0 -1
  68. package/dist/src/planner/building/with.js.map +0 -1
  69. package/dist/src/planner/cache/correlation-detector.js.map +0 -1
  70. package/dist/src/planner/cache/materialization-advisory.js.map +0 -1
  71. package/dist/src/planner/cache/reference-graph.js.map +0 -1
  72. package/dist/src/planner/cost/index.js.map +0 -1
  73. package/dist/src/planner/debug/logger-utils.js.map +0 -1
  74. package/dist/src/planner/debug.js.map +0 -1
  75. package/dist/src/planner/framework/characteristics.js.map +0 -1
  76. package/dist/src/planner/framework/context.js.map +0 -1
  77. package/dist/src/planner/framework/pass.js.map +0 -1
  78. package/dist/src/planner/framework/physical-utils.js.map +0 -1
  79. package/dist/src/planner/framework/registry.js.map +0 -1
  80. package/dist/src/planner/framework/trace.js.map +0 -1
  81. package/dist/src/planner/nodes/add-constraint-node.js.map +0 -1
  82. package/dist/src/planner/nodes/aggregate-function.js.map +0 -1
  83. package/dist/src/planner/nodes/aggregate-node.js.map +0 -1
  84. package/dist/src/planner/nodes/array-index-node.js.map +0 -1
  85. package/dist/src/planner/nodes/block.js.map +0 -1
  86. package/dist/src/planner/nodes/cache-node.js.map +0 -1
  87. package/dist/src/planner/nodes/constraint-check-node.js.map +0 -1
  88. package/dist/src/planner/nodes/create-assertion-node.js.map +0 -1
  89. package/dist/src/planner/nodes/create-index-node.js.map +0 -1
  90. package/dist/src/planner/nodes/create-table-node.js.map +0 -1
  91. package/dist/src/planner/nodes/create-view-node.js.map +0 -1
  92. package/dist/src/planner/nodes/cte-node.js.map +0 -1
  93. package/dist/src/planner/nodes/cte-reference-node.js.map +0 -1
  94. package/dist/src/planner/nodes/declarative-schema.js.map +0 -1
  95. package/dist/src/planner/nodes/delete-node.js.map +0 -1
  96. package/dist/src/planner/nodes/distinct-node.js.map +0 -1
  97. package/dist/src/planner/nodes/dml-executor-node.js.map +0 -1
  98. package/dist/src/planner/nodes/drop-assertion-node.js.map +0 -1
  99. package/dist/src/planner/nodes/drop-table-node.js.map +0 -1
  100. package/dist/src/planner/nodes/drop-view-node.js.map +0 -1
  101. package/dist/src/planner/nodes/filter.js.map +0 -1
  102. package/dist/src/planner/nodes/function.js.map +0 -1
  103. package/dist/src/planner/nodes/insert-node.js.map +0 -1
  104. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +0 -1
  105. package/dist/src/planner/nodes/join-node.js.map +0 -1
  106. package/dist/src/planner/nodes/limit-offset.js.map +0 -1
  107. package/dist/src/planner/nodes/plan-node-type.js.map +0 -1
  108. package/dist/src/planner/nodes/plan-node.js.map +0 -1
  109. package/dist/src/planner/nodes/pragma.js.map +0 -1
  110. package/dist/src/planner/nodes/project-node.js.map +0 -1
  111. package/dist/src/planner/nodes/recursive-cte-node.js.map +0 -1
  112. package/dist/src/planner/nodes/reference.js.map +0 -1
  113. package/dist/src/planner/nodes/remote-query-node.js.map +0 -1
  114. package/dist/src/planner/nodes/retrieve-node.js.map +0 -1
  115. package/dist/src/planner/nodes/returning-node.js.map +0 -1
  116. package/dist/src/planner/nodes/scalar.js.map +0 -1
  117. package/dist/src/planner/nodes/sequencing-node.js.map +0 -1
  118. package/dist/src/planner/nodes/set-operation-node.js.map +0 -1
  119. package/dist/src/planner/nodes/single-row.js.map +0 -1
  120. package/dist/src/planner/nodes/sink-node.js.map +0 -1
  121. package/dist/src/planner/nodes/sort.js.map +0 -1
  122. package/dist/src/planner/nodes/stream-aggregate.js.map +0 -1
  123. package/dist/src/planner/nodes/subquery.js.map +0 -1
  124. package/dist/src/planner/nodes/table-access-nodes.js.map +0 -1
  125. package/dist/src/planner/nodes/table-function-call.js.map +0 -1
  126. package/dist/src/planner/nodes/transaction-node.js.map +0 -1
  127. package/dist/src/planner/nodes/update-node.js.map +0 -1
  128. package/dist/src/planner/nodes/values-node.js.map +0 -1
  129. package/dist/src/planner/nodes/view-reference-node.js.map +0 -1
  130. package/dist/src/planner/nodes/window-function.js.map +0 -1
  131. package/dist/src/planner/nodes/window-node.js.map +0 -1
  132. package/dist/src/planner/optimizer-tuning.js.map +0 -1
  133. package/dist/src/planner/optimizer.js.map +0 -1
  134. package/dist/src/planner/planning-context.js.map +0 -1
  135. package/dist/src/planner/resolve.js.map +0 -1
  136. package/dist/src/planner/rules/access/rule-select-access-path.js.map +0 -1
  137. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +0 -1
  138. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +0 -1
  139. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
  140. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +0 -1
  141. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +0 -1
  142. package/dist/src/planner/rules/join/rule-join-key-inference.js.map +0 -1
  143. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +0 -1
  144. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +0 -1
  145. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +0 -1
  146. package/dist/src/planner/scopes/aliased.js.map +0 -1
  147. package/dist/src/planner/scopes/base.js.map +0 -1
  148. package/dist/src/planner/scopes/empty.js.map +0 -1
  149. package/dist/src/planner/scopes/global.js.map +0 -1
  150. package/dist/src/planner/scopes/multi.js.map +0 -1
  151. package/dist/src/planner/scopes/param.js.map +0 -1
  152. package/dist/src/planner/scopes/registered.js.map +0 -1
  153. package/dist/src/planner/scopes/scope.js.map +0 -1
  154. package/dist/src/planner/stats/basic-estimates.js.map +0 -1
  155. package/dist/src/planner/stats/index.js.map +0 -1
  156. package/dist/src/planner/type-utils.js.map +0 -1
  157. package/dist/src/planner/util/key-utils.js.map +0 -1
  158. package/dist/src/planner/validation/determinism-validator.js.map +0 -1
  159. package/dist/src/planner/validation/plan-validator.js.map +0 -1
  160. package/dist/src/runtime/async-util.js.map +0 -1
  161. package/dist/src/runtime/cache/shared-cache.js.map +0 -1
  162. package/dist/src/runtime/context-helpers.js.map +0 -1
  163. package/dist/src/runtime/deferred-constraint-queue.js.map +0 -1
  164. package/dist/src/runtime/emission-context.js.map +0 -1
  165. package/dist/src/runtime/emit/add-constraint.js.map +0 -1
  166. package/dist/src/runtime/emit/aggregate.js.map +0 -1
  167. package/dist/src/runtime/emit/array-index.js.map +0 -1
  168. package/dist/src/runtime/emit/between.js.map +0 -1
  169. package/dist/src/runtime/emit/binary.js.map +0 -1
  170. package/dist/src/runtime/emit/block.js.map +0 -1
  171. package/dist/src/runtime/emit/cache.js.map +0 -1
  172. package/dist/src/runtime/emit/case.js.map +0 -1
  173. package/dist/src/runtime/emit/cast.js.map +0 -1
  174. package/dist/src/runtime/emit/collate.js.map +0 -1
  175. package/dist/src/runtime/emit/column-reference.js.map +0 -1
  176. package/dist/src/runtime/emit/constraint-check.js.map +0 -1
  177. package/dist/src/runtime/emit/create-assertion.js.map +0 -1
  178. package/dist/src/runtime/emit/create-index.js.map +0 -1
  179. package/dist/src/runtime/emit/create-table.js.map +0 -1
  180. package/dist/src/runtime/emit/create-view.js.map +0 -1
  181. package/dist/src/runtime/emit/cte-reference.js.map +0 -1
  182. package/dist/src/runtime/emit/cte.js.map +0 -1
  183. package/dist/src/runtime/emit/delete.js.map +0 -1
  184. package/dist/src/runtime/emit/distinct.js.map +0 -1
  185. package/dist/src/runtime/emit/dml-executor.js.map +0 -1
  186. package/dist/src/runtime/emit/drop-assertion.js.map +0 -1
  187. package/dist/src/runtime/emit/drop-table.js.map +0 -1
  188. package/dist/src/runtime/emit/drop-view.js.map +0 -1
  189. package/dist/src/runtime/emit/filter.js.map +0 -1
  190. package/dist/src/runtime/emit/insert.js.map +0 -1
  191. package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +0 -1
  192. package/dist/src/runtime/emit/join.js.map +0 -1
  193. package/dist/src/runtime/emit/limit-offset.js.map +0 -1
  194. package/dist/src/runtime/emit/literal.js.map +0 -1
  195. package/dist/src/runtime/emit/parameter.js.map +0 -1
  196. package/dist/src/runtime/emit/pragma.js.map +0 -1
  197. package/dist/src/runtime/emit/project.js.map +0 -1
  198. package/dist/src/runtime/emit/recursive-cte.js.map +0 -1
  199. package/dist/src/runtime/emit/remote-query.js.map +0 -1
  200. package/dist/src/runtime/emit/retrieve.js.map +0 -1
  201. package/dist/src/runtime/emit/returning.js.map +0 -1
  202. package/dist/src/runtime/emit/scalar-function.js.map +0 -1
  203. package/dist/src/runtime/emit/scan.js.map +0 -1
  204. package/dist/src/runtime/emit/schema-declarative.js.map +0 -1
  205. package/dist/src/runtime/emit/sequencing.js.map +0 -1
  206. package/dist/src/runtime/emit/set-operation.js.map +0 -1
  207. package/dist/src/runtime/emit/sink.js.map +0 -1
  208. package/dist/src/runtime/emit/sort.js.map +0 -1
  209. package/dist/src/runtime/emit/subquery.js.map +0 -1
  210. package/dist/src/runtime/emit/table-valued-function.js.map +0 -1
  211. package/dist/src/runtime/emit/temporal-arithmetic.js.map +0 -1
  212. package/dist/src/runtime/emit/transaction.js.map +0 -1
  213. package/dist/src/runtime/emit/unary.js.map +0 -1
  214. package/dist/src/runtime/emit/update.js.map +0 -1
  215. package/dist/src/runtime/emit/values.js.map +0 -1
  216. package/dist/src/runtime/emit/window-function.js.map +0 -1
  217. package/dist/src/runtime/emit/window.js.map +0 -1
  218. package/dist/src/runtime/emitters.js.map +0 -1
  219. package/dist/src/runtime/register.js.map +0 -1
  220. package/dist/src/runtime/scheduler.js.map +0 -1
  221. package/dist/src/runtime/types.js.map +0 -1
  222. package/dist/src/runtime/utils.js.map +0 -1
  223. package/dist/src/schema/assertion.js.map +0 -1
  224. package/dist/src/schema/catalog.js.map +0 -1
  225. package/dist/src/schema/change-events.js.map +0 -1
  226. package/dist/src/schema/column.js.map +0 -1
  227. package/dist/src/schema/declared-schema-manager.js.map +0 -1
  228. package/dist/src/schema/function.js.map +0 -1
  229. package/dist/src/schema/manager.js.map +0 -1
  230. package/dist/src/schema/schema-differ.js.map +0 -1
  231. package/dist/src/schema/schema-hasher.js.map +0 -1
  232. package/dist/src/schema/schema.js.map +0 -1
  233. package/dist/src/schema/table.js.map +0 -1
  234. package/dist/src/schema/view.js.map +0 -1
  235. package/dist/src/schema/window-function.js.map +0 -1
  236. package/dist/src/types/builtin-types.js.map +0 -1
  237. package/dist/src/types/index.js.map +0 -1
  238. package/dist/src/types/json-type.js.map +0 -1
  239. package/dist/src/types/logical-type.js.map +0 -1
  240. package/dist/src/types/plugin-interface.js.map +0 -1
  241. package/dist/src/types/registry.js.map +0 -1
  242. package/dist/src/types/temporal-types.js.map +0 -1
  243. package/dist/src/types/validation.js.map +0 -1
  244. package/dist/src/util/affinity.js.map +0 -1
  245. package/dist/src/util/ast-stringify.js.map +0 -1
  246. package/dist/src/util/cached.js.map +0 -1
  247. package/dist/src/util/coercion.js.map +0 -1
  248. package/dist/src/util/comparison.js.map +0 -1
  249. package/dist/src/util/environment.js.map +0 -1
  250. package/dist/src/util/hash.js.map +0 -1
  251. package/dist/src/util/latches.js.map +0 -1
  252. package/dist/src/util/mutation-statement.js.map +0 -1
  253. package/dist/src/util/patterns.js.map +0 -1
  254. package/dist/src/util/plan-formatter.js.map +0 -1
  255. package/dist/src/util/plugin-helper.js.map +0 -1
  256. package/dist/src/util/row-descriptor.js.map +0 -1
  257. package/dist/src/util/serialization.js.map +0 -1
  258. package/dist/src/util/sql-literal.js.map +0 -1
  259. package/dist/src/util/working-table-iterable.js.map +0 -1
  260. package/dist/src/vtab/best-access-plan.js.map +0 -1
  261. package/dist/src/vtab/connection.js.map +0 -1
  262. package/dist/src/vtab/filter-info.js.map +0 -1
  263. package/dist/src/vtab/index-info.js.map +0 -1
  264. package/dist/src/vtab/manifest.js.map +0 -1
  265. package/dist/src/vtab/memory/connection.js.map +0 -1
  266. package/dist/src/vtab/memory/index.js.map +0 -1
  267. package/dist/src/vtab/memory/layer/base-cursor.js.map +0 -1
  268. package/dist/src/vtab/memory/layer/base.js.map +0 -1
  269. package/dist/src/vtab/memory/layer/connection.js.map +0 -1
  270. package/dist/src/vtab/memory/layer/interface.js.map +0 -1
  271. package/dist/src/vtab/memory/layer/manager.js.map +0 -1
  272. package/dist/src/vtab/memory/layer/safe-iterate.js.map +0 -1
  273. package/dist/src/vtab/memory/layer/scan-plan.js.map +0 -1
  274. package/dist/src/vtab/memory/layer/transaction-cursor.js.map +0 -1
  275. package/dist/src/vtab/memory/layer/transaction.js.map +0 -1
  276. package/dist/src/vtab/memory/module.js.map +0 -1
  277. package/dist/src/vtab/memory/table.js.map +0 -1
  278. package/dist/src/vtab/memory/types.js.map +0 -1
  279. package/dist/src/vtab/memory/utils/logging.js.map +0 -1
  280. package/dist/src/vtab/memory/utils/primary-key.js.map +0 -1
  281. package/dist/src/vtab/module.js.map +0 -1
  282. package/dist/src/vtab/table.js.map +0 -1
  283. package/src/common/constants.ts +0 -60
  284. package/src/common/datatype.ts +0 -85
  285. package/src/common/errors.ts +0 -189
  286. package/src/common/json-types.ts +0 -16
  287. package/src/common/logger.ts +0 -97
  288. package/src/common/type-inference.ts +0 -39
  289. package/src/common/types.ts +0 -151
  290. package/src/core/database-options.ts +0 -258
  291. package/src/core/database.ts +0 -1461
  292. package/src/core/param.ts +0 -56
  293. package/src/core/statement.ts +0 -528
  294. package/src/func/builtins/aggregate.ts +0 -269
  295. package/src/func/builtins/builtin-window-functions.ts +0 -166
  296. package/src/func/builtins/conversion.ts +0 -226
  297. package/src/func/builtins/datetime.ts +0 -500
  298. package/src/func/builtins/explain.ts +0 -779
  299. package/src/func/builtins/generation.ts +0 -43
  300. package/src/func/builtins/index.ts +0 -167
  301. package/src/func/builtins/json-helpers.ts +0 -237
  302. package/src/func/builtins/json-tvf.ts +0 -224
  303. package/src/func/builtins/json.ts +0 -588
  304. package/src/func/builtins/scalar.ts +0 -423
  305. package/src/func/builtins/schema.ts +0 -213
  306. package/src/func/builtins/string.ts +0 -306
  307. package/src/func/builtins/timespan.ts +0 -179
  308. package/src/func/context.ts +0 -258
  309. package/src/func/registration.ts +0 -201
  310. package/src/index.ts +0 -172
  311. package/src/parser/ast.ts +0 -581
  312. package/src/parser/index.ts +0 -65
  313. package/src/parser/lexer.ts +0 -806
  314. package/src/parser/parser.ts +0 -3352
  315. package/src/parser/utils.ts +0 -10
  316. package/src/parser/visitor.ts +0 -188
  317. package/src/planner/analysis/README.md +0 -93
  318. package/src/planner/analysis/binding-collector.ts +0 -83
  319. package/src/planner/analysis/const-evaluator.ts +0 -63
  320. package/src/planner/analysis/const-pass.ts +0 -282
  321. package/src/planner/analysis/constraint-extractor.ts +0 -764
  322. package/src/planner/analysis/predicate-normalizer.ts +0 -237
  323. package/src/planner/building/alter-table.ts +0 -49
  324. package/src/planner/building/block.ts +0 -93
  325. package/src/planner/building/constraint-builder.ts +0 -178
  326. package/src/planner/building/create-assertion.ts +0 -7
  327. package/src/planner/building/create-view.ts +0 -29
  328. package/src/planner/building/ddl.ts +0 -24
  329. package/src/planner/building/declare-schema.ts +0 -22
  330. package/src/planner/building/delete.ts +0 -218
  331. package/src/planner/building/drop-assertion.ts +0 -11
  332. package/src/planner/building/drop-table.ts +0 -13
  333. package/src/planner/building/drop-view.ts +0 -19
  334. package/src/planner/building/expression.ts +0 -205
  335. package/src/planner/building/function-call.ts +0 -129
  336. package/src/planner/building/insert.ts +0 -435
  337. package/src/planner/building/pragma.ts +0 -34
  338. package/src/planner/building/schema-resolution.ts +0 -176
  339. package/src/planner/building/select-aggregates.ts +0 -318
  340. package/src/planner/building/select-compound.ts +0 -119
  341. package/src/planner/building/select-context.ts +0 -85
  342. package/src/planner/building/select-modifiers.ts +0 -236
  343. package/src/planner/building/select-projections.ts +0 -177
  344. package/src/planner/building/select-window.ts +0 -259
  345. package/src/planner/building/select.ts +0 -567
  346. package/src/planner/building/table-function.ts +0 -49
  347. package/src/planner/building/table.ts +0 -40
  348. package/src/planner/building/transaction.ts +0 -23
  349. package/src/planner/building/update.ts +0 -331
  350. package/src/planner/building/with.ts +0 -180
  351. package/src/planner/cache/correlation-detector.ts +0 -83
  352. package/src/planner/cache/materialization-advisory.ts +0 -265
  353. package/src/planner/cache/reference-graph.ts +0 -196
  354. package/src/planner/cost/index.ts +0 -169
  355. package/src/planner/debug/logger-utils.ts +0 -68
  356. package/src/planner/debug.ts +0 -480
  357. package/src/planner/framework/README.md +0 -132
  358. package/src/planner/framework/characteristics.ts +0 -503
  359. package/src/planner/framework/context.ts +0 -239
  360. package/src/planner/framework/pass.ts +0 -354
  361. package/src/planner/framework/physical-utils.ts +0 -210
  362. package/src/planner/framework/registry.ts +0 -261
  363. package/src/planner/framework/trace.ts +0 -259
  364. package/src/planner/nodes/add-constraint-node.ts +0 -62
  365. package/src/planner/nodes/aggregate-function.ts +0 -155
  366. package/src/planner/nodes/aggregate-node.ts +0 -267
  367. package/src/planner/nodes/array-index-node.ts +0 -50
  368. package/src/planner/nodes/block.ts +0 -80
  369. package/src/planner/nodes/cache-node.ts +0 -103
  370. package/src/planner/nodes/constraint-check-node.ts +0 -138
  371. package/src/planner/nodes/create-assertion-node.ts +0 -51
  372. package/src/planner/nodes/create-index-node.ts +0 -41
  373. package/src/planner/nodes/create-table-node.ts +0 -35
  374. package/src/planner/nodes/create-view-node.ts +0 -44
  375. package/src/planner/nodes/cte-node.ts +0 -168
  376. package/src/planner/nodes/cte-reference-node.ts +0 -125
  377. package/src/planner/nodes/declarative-schema.ts +0 -221
  378. package/src/planner/nodes/delete-node.ts +0 -102
  379. package/src/planner/nodes/distinct-node.ts +0 -107
  380. package/src/planner/nodes/dml-executor-node.ts +0 -104
  381. package/src/planner/nodes/drop-assertion-node.ts +0 -50
  382. package/src/planner/nodes/drop-table-node.ts +0 -36
  383. package/src/planner/nodes/drop-view-node.ts +0 -37
  384. package/src/planner/nodes/filter.ts +0 -144
  385. package/src/planner/nodes/function.ts +0 -98
  386. package/src/planner/nodes/insert-node.ts +0 -126
  387. package/src/planner/nodes/internal-recursive-cte-ref-node.ts +0 -61
  388. package/src/planner/nodes/join-node.ts +0 -336
  389. package/src/planner/nodes/limit-offset.ts +0 -144
  390. package/src/planner/nodes/plan-node-type.ts +0 -95
  391. package/src/planner/nodes/plan-node.ts +0 -503
  392. package/src/planner/nodes/pragma.ts +0 -98
  393. package/src/planner/nodes/project-node.ts +0 -337
  394. package/src/planner/nodes/recursive-cte-node.ts +0 -158
  395. package/src/planner/nodes/reference.ts +0 -334
  396. package/src/planner/nodes/remote-query-node.ts +0 -73
  397. package/src/planner/nodes/retrieve-node.ts +0 -86
  398. package/src/planner/nodes/returning-node.ts +0 -269
  399. package/src/planner/nodes/scalar.ts +0 -772
  400. package/src/planner/nodes/sequencing-node.ts +0 -113
  401. package/src/planner/nodes/set-operation-node.ts +0 -87
  402. package/src/planner/nodes/single-row.ts +0 -85
  403. package/src/planner/nodes/sink-node.ts +0 -61
  404. package/src/planner/nodes/sort.ts +0 -166
  405. package/src/planner/nodes/stream-aggregate.ts +0 -293
  406. package/src/planner/nodes/subquery.ts +0 -268
  407. package/src/planner/nodes/table-access-nodes.ts +0 -323
  408. package/src/planner/nodes/table-function-call.ts +0 -134
  409. package/src/planner/nodes/transaction-node.ts +0 -55
  410. package/src/planner/nodes/update-node.ts +0 -138
  411. package/src/planner/nodes/values-node.ts +0 -244
  412. package/src/planner/nodes/view-reference-node.ts +0 -97
  413. package/src/planner/nodes/window-function.ts +0 -73
  414. package/src/planner/nodes/window-node.ts +0 -199
  415. package/src/planner/optimizer-tuning.ts +0 -105
  416. package/src/planner/optimizer.ts +0 -332
  417. package/src/planner/planning-context.ts +0 -190
  418. package/src/planner/resolve.ts +0 -101
  419. package/src/planner/rules/README.md +0 -96
  420. package/src/planner/rules/access/rule-select-access-path.ts +0 -399
  421. package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +0 -162
  422. package/src/planner/rules/cache/rule-cte-optimization.ts +0 -79
  423. package/src/planner/rules/cache/rule-materialization-advisory.ts +0 -77
  424. package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +0 -104
  425. package/src/planner/rules/join/rule-join-greedy-commute.ts +0 -48
  426. package/src/planner/rules/join/rule-join-key-inference.ts +0 -35
  427. package/src/planner/rules/join/rule-quickpick-enumeration.ts +0 -267
  428. package/src/planner/rules/predicate/rule-predicate-pushdown.ts +0 -144
  429. package/src/planner/rules/retrieve/rule-grow-retrieve.ts +0 -337
  430. package/src/planner/scopes/aliased.ts +0 -50
  431. package/src/planner/scopes/base.ts +0 -10
  432. package/src/planner/scopes/empty.ts +0 -12
  433. package/src/planner/scopes/global.ts +0 -73
  434. package/src/planner/scopes/multi.ts +0 -40
  435. package/src/planner/scopes/param.ts +0 -95
  436. package/src/planner/scopes/registered.ts +0 -67
  437. package/src/planner/scopes/scope.ts +0 -16
  438. package/src/planner/stats/basic-estimates.ts +0 -107
  439. package/src/planner/stats/index.ts +0 -158
  440. package/src/planner/type-utils.ts +0 -87
  441. package/src/planner/util/key-utils.ts +0 -46
  442. package/src/planner/validation/determinism-validator.ts +0 -104
  443. package/src/planner/validation/plan-validator.ts +0 -335
  444. package/src/runtime/async-util.ts +0 -283
  445. package/src/runtime/cache/shared-cache.ts +0 -169
  446. package/src/runtime/context-helpers.ts +0 -191
  447. package/src/runtime/deferred-constraint-queue.ts +0 -196
  448. package/src/runtime/emission-context.ts +0 -319
  449. package/src/runtime/emit/add-constraint.ts +0 -78
  450. package/src/runtime/emit/aggregate.ts +0 -581
  451. package/src/runtime/emit/array-index.ts +0 -25
  452. package/src/runtime/emit/between.ts +0 -51
  453. package/src/runtime/emit/binary.ts +0 -357
  454. package/src/runtime/emit/block.ts +0 -23
  455. package/src/runtime/emit/cache.ts +0 -64
  456. package/src/runtime/emit/case.ts +0 -87
  457. package/src/runtime/emit/cast.ts +0 -151
  458. package/src/runtime/emit/collate.ts +0 -9
  459. package/src/runtime/emit/column-reference.ts +0 -17
  460. package/src/runtime/emit/constraint-check.ts +0 -290
  461. package/src/runtime/emit/create-assertion.ts +0 -82
  462. package/src/runtime/emit/create-index.ts +0 -15
  463. package/src/runtime/emit/create-table.ts +0 -15
  464. package/src/runtime/emit/create-view.ts +0 -52
  465. package/src/runtime/emit/cte-reference.ts +0 -38
  466. package/src/runtime/emit/cte.ts +0 -39
  467. package/src/runtime/emit/delete.ts +0 -24
  468. package/src/runtime/emit/distinct.ts +0 -40
  469. package/src/runtime/emit/dml-executor.ts +0 -198
  470. package/src/runtime/emit/drop-assertion.ts +0 -45
  471. package/src/runtime/emit/drop-table.ts +0 -27
  472. package/src/runtime/emit/drop-view.ts +0 -49
  473. package/src/runtime/emit/filter.ts +0 -30
  474. package/src/runtime/emit/insert.ts +0 -42
  475. package/src/runtime/emit/internal-recursive-cte-ref.ts +0 -37
  476. package/src/runtime/emit/join.ts +0 -148
  477. package/src/runtime/emit/limit-offset.ts +0 -73
  478. package/src/runtime/emit/literal.ts +0 -17
  479. package/src/runtime/emit/parameter.ts +0 -59
  480. package/src/runtime/emit/pragma.ts +0 -56
  481. package/src/runtime/emit/project.ts +0 -46
  482. package/src/runtime/emit/recursive-cte.ts +0 -111
  483. package/src/runtime/emit/remote-query.ts +0 -47
  484. package/src/runtime/emit/retrieve.ts +0 -15
  485. package/src/runtime/emit/returning.ts +0 -41
  486. package/src/runtime/emit/scalar-function.ts +0 -69
  487. package/src/runtime/emit/scan.ts +0 -106
  488. package/src/runtime/emit/schema-declarative.ts +0 -215
  489. package/src/runtime/emit/sequencing.ts +0 -24
  490. package/src/runtime/emit/set-operation.ts +0 -141
  491. package/src/runtime/emit/sink.ts +0 -27
  492. package/src/runtime/emit/sort.ts +0 -75
  493. package/src/runtime/emit/subquery.ts +0 -203
  494. package/src/runtime/emit/table-valued-function.ts +0 -106
  495. package/src/runtime/emit/temporal-arithmetic.ts +0 -302
  496. package/src/runtime/emit/transaction.ts +0 -205
  497. package/src/runtime/emit/unary.ts +0 -101
  498. package/src/runtime/emit/update.ts +0 -66
  499. package/src/runtime/emit/values.ts +0 -66
  500. package/src/runtime/emit/window-function.ts +0 -42
  501. package/src/runtime/emit/window.ts +0 -458
  502. package/src/runtime/emitters.ts +0 -183
  503. package/src/runtime/register.ts +0 -150
  504. package/src/runtime/scheduler.ts +0 -488
  505. package/src/runtime/types.ts +0 -242
  506. package/src/runtime/utils.ts +0 -177
  507. package/src/schema/assertion.ts +0 -21
  508. package/src/schema/catalog.ts +0 -269
  509. package/src/schema/change-events.ts +0 -80
  510. package/src/schema/column.ts +0 -51
  511. package/src/schema/declared-schema-manager.ts +0 -82
  512. package/src/schema/function.ts +0 -188
  513. package/src/schema/manager.ts +0 -1034
  514. package/src/schema/schema-differ.ts +0 -214
  515. package/src/schema/schema-hasher.ts +0 -26
  516. package/src/schema/schema.ts +0 -222
  517. package/src/schema/table.ts +0 -409
  518. package/src/schema/view.ts +0 -19
  519. package/src/schema/window-function.ts +0 -56
  520. package/src/types/builtin-types.ts +0 -350
  521. package/src/types/index.ts +0 -17
  522. package/src/types/json-type.ts +0 -152
  523. package/src/types/logical-type.ts +0 -91
  524. package/src/types/plugin-interface.ts +0 -10
  525. package/src/types/registry.ts +0 -204
  526. package/src/types/temporal-types.ts +0 -290
  527. package/src/types/validation.ts +0 -120
  528. package/src/util/affinity.ts +0 -151
  529. package/src/util/ast-stringify.ts +0 -887
  530. package/src/util/cached.ts +0 -25
  531. package/src/util/coercion.ts +0 -113
  532. package/src/util/comparison.ts +0 -510
  533. package/src/util/environment.ts +0 -52
  534. package/src/util/hash.ts +0 -90
  535. package/src/util/latches.ts +0 -47
  536. package/src/util/mutation-statement.ts +0 -135
  537. package/src/util/patterns.ts +0 -56
  538. package/src/util/plan-formatter.ts +0 -48
  539. package/src/util/plugin-helper.ts +0 -110
  540. package/src/util/row-descriptor.ts +0 -105
  541. package/src/util/serialization.ts +0 -47
  542. package/src/util/sql-literal.ts +0 -22
  543. package/src/util/working-table-iterable.ts +0 -38
  544. package/src/vtab/best-access-plan.ts +0 -244
  545. package/src/vtab/connection.ts +0 -36
  546. package/src/vtab/filter-info.ts +0 -23
  547. package/src/vtab/index-info.ts +0 -84
  548. package/src/vtab/manifest.ts +0 -86
  549. package/src/vtab/memory/connection.ts +0 -73
  550. package/src/vtab/memory/index.ts +0 -191
  551. package/src/vtab/memory/layer/base-cursor.ts +0 -124
  552. package/src/vtab/memory/layer/base.ts +0 -275
  553. package/src/vtab/memory/layer/connection.ts +0 -203
  554. package/src/vtab/memory/layer/interface.ts +0 -47
  555. package/src/vtab/memory/layer/manager.ts +0 -909
  556. package/src/vtab/memory/layer/safe-iterate.ts +0 -49
  557. package/src/vtab/memory/layer/scan-plan.ts +0 -84
  558. package/src/vtab/memory/layer/transaction-cursor.ts +0 -162
  559. package/src/vtab/memory/layer/transaction.ts +0 -229
  560. package/src/vtab/memory/module.ts +0 -667
  561. package/src/vtab/memory/table.ts +0 -251
  562. package/src/vtab/memory/types.ts +0 -23
  563. package/src/vtab/memory/utils/logging.ts +0 -36
  564. package/src/vtab/memory/utils/primary-key.ts +0 -163
  565. package/src/vtab/module.ts +0 -162
  566. package/src/vtab/table.ts +0 -177
@@ -1,16 +0,0 @@
1
- import type { PlanNode } from '../nodes/plan-node.js';
2
- import * as AST from '../../parser/ast.js';
3
-
4
- // Create a javascript symbol that represents an ambiguous symbol.
5
- export const Ambiguous = Symbol();
6
-
7
- export type ReferenceCallback = (expression: AST.Expression, currentScope: Scope) => PlanNode;
8
-
9
- /**
10
- * The Scope object provides context for symbol resolution during query planning.
11
- * It encapsulates the logic for looking up columns, parameters, functions, and CTEs
12
- * based on the current position in the PlanNode tree.
13
- */
14
- export interface Scope {
15
- resolveSymbol(symbolKey: string, expression: AST.Expression): PlanNode | typeof Ambiguous | undefined;
16
- }
@@ -1,107 +0,0 @@
1
- /**
2
- * Basic row and cost estimation utilities for plan nodes
3
- * Used when more sophisticated statistics are not available
4
- */
5
-
6
- import type { RelationalPlanNode } from '../nodes/plan-node.js';
7
- import type { OptimizerTuning } from '../optimizer-tuning.js';
8
-
9
- /**
10
- * Basic row estimation heuristics
11
- */
12
- export class BasicRowEstimator {
13
- constructor(private readonly tuning: OptimizerTuning) {}
14
-
15
- /**
16
- * Estimate rows for a filter operation
17
- * Default assumes 30% selectivity for most predicates
18
- */
19
- estimateFilter(sourceRows: number): number {
20
- return Math.max(1, Math.floor(sourceRows * 0.3));
21
- }
22
-
23
- /**
24
- * Estimate rows for a join operation
25
- */
26
- estimateJoin(leftRows: number, rightRows: number, joinType: string): number {
27
- switch (joinType.toLowerCase()) {
28
- case 'inner':
29
- // Inner join: assume moderate correlation
30
- return Math.max(1, Math.floor(leftRows * rightRows * 0.1));
31
- case 'left':
32
- case 'left outer':
33
- // Left join: at least as many as left side
34
- return Math.max(leftRows, Math.floor(leftRows * rightRows * 0.1));
35
- case 'right':
36
- case 'right outer':
37
- // Right join: at least as many as right side
38
- return Math.max(rightRows, Math.floor(leftRows * rightRows * 0.1));
39
- case 'full':
40
- case 'full outer':
41
- // Full outer join: sum minus overlap
42
- return leftRows + rightRows - Math.floor(leftRows * rightRows * 0.1);
43
- case 'cross':
44
- // Cross join: cartesian product
45
- return leftRows * rightRows;
46
- default:
47
- return Math.max(leftRows, rightRows);
48
- }
49
- }
50
-
51
- /**
52
- * Estimate rows for aggregation
53
- */
54
- estimateAggregate(sourceRows: number, groupByCount: number): number {
55
- if (groupByCount === 0) {
56
- return 1; // Single aggregate row
57
- }
58
- // Assume reasonable grouping factor
59
- const groupingFactor = Math.min(0.8, Math.max(0.1, groupByCount * 0.2));
60
- return Math.max(1, Math.floor(sourceRows * groupingFactor));
61
- }
62
-
63
- /**
64
- * Estimate rows for distinct operation
65
- */
66
- estimateDistinct(sourceRows: number): number {
67
- // Assume moderate duplication - 70% unique rows
68
- return Math.max(1, Math.floor(sourceRows * 0.7));
69
- }
70
-
71
- /**
72
- * Estimate rows for limit operation
73
- */
74
- estimateLimit(sourceRows: number, limit: number, offset: number = 0): number {
75
- return Math.min(sourceRows, Math.max(0, limit - offset));
76
- }
77
-
78
- /**
79
- * Get default row estimate when no information is available
80
- */
81
- getDefaultEstimate(): number {
82
- return this.tuning.defaultRowEstimate;
83
- }
84
- }
85
-
86
- /**
87
- * Helper to safely get row estimate from a relational node
88
- */
89
- export function getRowEstimate(node: RelationalPlanNode, tuning: OptimizerTuning): number {
90
- return node.estimatedRows ?? tuning.defaultRowEstimate;
91
- }
92
-
93
- /**
94
- * Helper to set row estimate on a node if not already set
95
- */
96
- export function ensureRowEstimate(node: RelationalPlanNode, estimate: number): void {
97
- if (node.estimatedRows === undefined) {
98
- // Use Object.defineProperty to set a non-enumerable property
99
- // This maintains the immutability principle while adding metadata
100
- Object.defineProperty(node, 'estimatedRows', {
101
- value: estimate,
102
- writable: false,
103
- enumerable: true,
104
- configurable: false
105
- });
106
- }
107
- }
@@ -1,158 +0,0 @@
1
- /**
2
- * Statistics provider abstraction for the Quereus optimizer
3
- * Provides cardinality estimates and selectivity information for cost-based optimization
4
- */
5
-
6
- import type { ScalarPlanNode } from '../nodes/plan-node.js';
7
- import type { TableSchema } from '../../schema/table.js';
8
- import { createLogger } from '../../common/logger.js';
9
-
10
- const log = createLogger('optimizer:stats');
11
-
12
- /**
13
- * Statistics provider interface for optimizer
14
- */
15
- export interface StatsProvider {
16
- /**
17
- * Get estimated row count for a base table
18
- * @param table Table schema
19
- * @returns Estimated row count, or undefined if unknown
20
- */
21
- tableRows(table: TableSchema): number | undefined;
22
-
23
- /**
24
- * Get selectivity estimate for a predicate on a table
25
- * @param table Table schema
26
- * @param predicate Predicate expression
27
- * @returns Selectivity factor (0.0 to 1.0), or undefined if unknown
28
- */
29
- selectivity(table: TableSchema, predicate: ScalarPlanNode): number | undefined;
30
-
31
- /**
32
- * Get join selectivity estimate
33
- * @param leftTable Left table schema
34
- * @param rightTable Right table schema
35
- * @param joinCondition Join condition
36
- * @returns Join selectivity factor, or undefined if unknown
37
- */
38
- joinSelectivity?(leftTable: TableSchema, rightTable: TableSchema, joinCondition: ScalarPlanNode): number | undefined;
39
-
40
- /**
41
- * Get number of distinct values for a column
42
- * @param table Table schema
43
- * @param columnName Column name
44
- * @returns Estimated distinct values, or undefined if unknown
45
- */
46
- distinctValues?(table: TableSchema, columnName: string): number | undefined;
47
-
48
- /**
49
- * Get index selectivity information
50
- * @param table Table schema
51
- * @param indexName Index name (if applicable)
52
- * @param predicate Predicate expression
53
- * @returns Index selectivity factor, or undefined if unknown
54
- */
55
- indexSelectivity?(table: TableSchema, indexName: string, predicate: ScalarPlanNode): number | undefined;
56
- }
57
-
58
- /**
59
- * Naive statistics provider using simple heuristics
60
- * Used as fallback when no better statistics are available
61
- */
62
- export class NaiveStatsProvider implements StatsProvider {
63
- constructor(
64
- private readonly defaultTableRows: number = 1000,
65
- private readonly defaultSelectivity: number = 0.3
66
- ) {
67
- log('Created naive stats provider (defaultRows: %d, defaultSelectivity: %f)',
68
- defaultTableRows, defaultSelectivity);
69
- }
70
-
71
- tableRows(table: TableSchema): number | undefined {
72
- // Use table's estimated rows if available, otherwise use default
73
- const estimate = table.estimatedRows ?? this.defaultTableRows;
74
- log('Table %s estimated rows: %d (source: %s)',
75
- table.name, estimate, table.estimatedRows ? 'schema' : 'default');
76
- return estimate;
77
- }
78
-
79
- selectivity(table: TableSchema, predicate: ScalarPlanNode): number | undefined {
80
- // Simple heuristics based on predicate type
81
- const selectivity = this.estimatePredicateSelectivity(predicate);
82
- log('Predicate selectivity for %s: %f', predicate.nodeType, selectivity);
83
- return selectivity;
84
- }
85
-
86
- joinSelectivity(leftTable: TableSchema, rightTable: TableSchema, _joinCondition: ScalarPlanNode): number | undefined {
87
- // Default join selectivity based on table sizes
88
- const leftRows = this.tableRows(leftTable) ?? this.defaultTableRows;
89
- const rightRows = this.tableRows(rightTable) ?? this.defaultTableRows;
90
-
91
- // Simple heuristic: smaller table determines selectivity
92
- const selectivity = 1.0 / Math.max(leftRows, rightRows, 10);
93
- log('Join selectivity between %s and %s: %f', leftTable.name, rightTable.name, selectivity);
94
- return Math.min(0.5, selectivity);
95
- }
96
-
97
- distinctValues(table: TableSchema, columnName: string): number | undefined {
98
- const totalRows = this.tableRows(table);
99
- if (!totalRows) return undefined;
100
-
101
- // Heuristic: assume moderate cardinality (50% distinct values)
102
- const distinct = Math.max(1, Math.floor(totalRows * 0.5));
103
- log('Distinct values for %s.%s: %d', table.name, columnName, distinct);
104
- return distinct;
105
- }
106
-
107
- indexSelectivity(table: TableSchema, indexName: string, predicate: ScalarPlanNode): number | undefined {
108
- // Index selectivity is generally better than table scan
109
- const baseSelecivity = this.selectivity(table, predicate) ?? this.defaultSelectivity;
110
- const indexSelectivity = baseSelecivity * 0.8; // 20% improvement with index
111
- log('Index %s selectivity: %f (base: %f)', indexName, indexSelectivity, baseSelecivity);
112
- return indexSelectivity;
113
- }
114
-
115
- private estimatePredicateSelectivity(predicate: ScalarPlanNode): number {
116
- // Simple heuristics based on node type
117
- switch (predicate.nodeType) {
118
- case 'BinaryOp':
119
- // More selective for equality, less for ranges
120
- return 0.1; // Equality-like operations
121
- case 'In':
122
- return 0.2; // IN clauses
123
- case 'Between':
124
- return 0.25; // Range queries
125
- case 'Like':
126
- return 0.3; // Pattern matching
127
- case 'IsNull':
128
- case 'IsNotNull':
129
- return 0.1; // NULL checks are usually selective
130
- default:
131
- return this.defaultSelectivity;
132
- }
133
- }
134
- }
135
-
136
- /**
137
- * Default statistics provider instance
138
- */
139
- export const defaultStatsProvider = new NaiveStatsProvider();
140
-
141
- /**
142
- * Create a custom statistics provider
143
- */
144
- export function createStatsProvider(
145
- tableRowsMap?: Map<string, number>,
146
- selectivityMap?: Map<string, number>
147
- ): StatsProvider {
148
- return new class implements StatsProvider {
149
- tableRows(table: TableSchema): number | undefined {
150
- return tableRowsMap?.get(table.name) ?? defaultStatsProvider.tableRows(table);
151
- }
152
-
153
- selectivity(table: TableSchema, predicate: ScalarPlanNode): number | undefined {
154
- const key = `${table.name}:${predicate.nodeType}`;
155
- return selectivityMap?.get(key) ?? defaultStatsProvider.selectivity(table, predicate);
156
- }
157
- };
158
- }
@@ -1,87 +0,0 @@
1
- import type { TableSchema } from '../schema/table.js';
2
- import type { ColumnSchema } from '../schema/column.js';
3
- import type { RelationType, ColumnDef, ScalarType, ColRef } from '../common/datatype.js';
4
- import { SqlDataType, StatusCode, type DeepReadonly, type SqlValue } from '../common/types.js'; // Import SqlValue and ensure SqlDataType is not type-only
5
- import type { AstNode } from '../parser/ast.js';
6
- import { QuereusError } from '../common/errors.js';
7
- import { inferLogicalTypeFromValue } from '../common/type-inference.js';
8
-
9
- /**
10
- * Converts a TableSchema (from src/schema/table.ts) to a RelationType (from src/common/datatype.ts).
11
- * This is used by PlanNodes that source data directly from a base table.
12
- */
13
- export function relationTypeFromTableSchema(tableSchema: TableSchema): RelationType {
14
- const columnDefs: ColumnDef[] = tableSchema.columns.map((col: ColumnSchema) => {
15
- return {
16
- name: col.name,
17
- type: {
18
- typeClass: 'scalar',
19
- logicalType: col.logicalType,
20
- collationName: col.collation,
21
- nullable: !col.notNull,
22
- isReadOnly: false,
23
- },
24
- generated: col.generated,
25
- };
26
- });
27
-
28
- // Populate keys from primaryKeyDefinition
29
- const keys: ColRef[][] = [];
30
- if (tableSchema.primaryKeyDefinition && tableSchema.primaryKeyDefinition.length > 0) {
31
- const primaryKey: ColRef[] = tableSchema.primaryKeyDefinition.map(pkCol => ({
32
- index: pkCol.index,
33
- desc: pkCol.desc,
34
- }));
35
- keys.push(primaryKey);
36
- }
37
-
38
- return {
39
- typeClass: 'relation',
40
- isReadOnly: !!(tableSchema.isView || tableSchema.isTemporary),
41
- isSet: true, // Base tables are sets by definition (enforced by primary keys)
42
- columns: columnDefs,
43
- keys: keys,
44
- // TODO: Populate rowConstraints from tableSchema if/when RelationType supports them
45
- rowConstraints: [], // Placeholder
46
- };
47
- }
48
-
49
- /**
50
- * Creates a ScalarType for a given SqlValue, typically for parameters.
51
- * @param value The SqlValue to determine the type for.
52
- * @returns A ScalarType representing the inferred type of the value.
53
- */
54
- export function getParameterScalarType(value: SqlValue): ScalarType {
55
- const logicalType = inferLogicalTypeFromValue(value);
56
-
57
- return {
58
- typeClass: 'scalar',
59
- logicalType,
60
- nullable: true, // No guarantees about the value, so it's nullable
61
- isReadOnly: true, // Parameters are read-only within the query execution context
62
- };
63
- }
64
-
65
- export function checkColumnsAssignable(source: DeepReadonly<ColumnDef[]>, target: DeepReadonly<ColumnDef[]>, astNode?: AstNode): void {
66
- if (source.length !== target.length) {
67
- throw new QuereusError(`Column count mismatch ${(astNode ? astNode.type + ' clause' : '')}.`, StatusCode.ERROR, undefined, astNode?.loc?.start.line, astNode?.loc?.start.column);
68
- }
69
- }
70
-
71
- export function checkRelationsAssignable(source: RelationType, target: RelationType, astNode?: AstNode): void {
72
- return checkColumnsAssignable(source.columns, target.columns, astNode);
73
- }
74
-
75
- export function columnSchemaToDef(colName: string, colDef: ColumnSchema): ColumnDef {
76
- return {
77
- name: colName,
78
- type: {
79
- typeClass: 'scalar',
80
- logicalType: colDef.logicalType,
81
- collationName: colDef.collation,
82
- nullable: !colDef.notNull,
83
- isReadOnly: false,
84
- },
85
- generated: colDef.generated,
86
- };
87
- }
@@ -1,46 +0,0 @@
1
- import type { ColRef } from '../../common/datatype.js';
2
-
3
- /**
4
- * Project unique keys through a projection mapping.
5
- * - sourceKeys: keys defined on the source relation (arrays of column refs by source column index)
6
- * - projectionMap: mapping from source column index -> projected column index
7
- * Returns keys that survive projection (all columns present), with indices remapped to output.
8
- */
9
- export function projectKeys(sourceKeys: ReadonlyArray<ReadonlyArray<ColRef>>, projectionMap: ReadonlyMap<number, number>): ColRef[][] {
10
- const result: ColRef[][] = [];
11
- for (const key of sourceKeys) {
12
- const projected: ColRef[] = [];
13
- let missing = false;
14
- for (const col of key) {
15
- const projectedIndex = projectionMap.get(col.index);
16
- if (projectedIndex === undefined) {
17
- missing = true;
18
- break;
19
- }
20
- projected.push({ index: projectedIndex, desc: col.desc });
21
- }
22
- if (!missing) {
23
- result.push(projected);
24
- }
25
- }
26
- return result;
27
- }
28
-
29
- /**
30
- * Combine unique keys across a join.
31
- * - For inner/cross joins: keys from left and right are preserved; right indices are shifted by left column count.
32
- * - For outer joins: return [] conservatively (null padding may break uniqueness).
33
- */
34
- export function combineJoinKeys(leftKeys: ReadonlyArray<ReadonlyArray<ColRef>>, rightKeys: ReadonlyArray<ReadonlyArray<ColRef>>, joinType: 'inner' | 'left' | 'right' | 'full' | 'cross', leftColumnCount: number): ColRef[][] {
35
- if (joinType !== 'inner' && joinType !== 'cross') return [];
36
- const result: ColRef[][] = [];
37
- for (const key of leftKeys) {
38
- result.push(key.map(c => ({ index: c.index, desc: c.desc })));
39
- }
40
- for (const key of rightKeys) {
41
- result.push(key.map(c => ({ index: c.index + leftColumnCount, desc: c.desc })));
42
- }
43
- return result;
44
- }
45
-
46
-
@@ -1,104 +0,0 @@
1
- import { QuereusError } from '../../common/errors.js';
2
- import { StatusCode } from '../../common/types.js';
3
- import type { ScalarPlanNode } from '../nodes/plan-node.js';
4
- import { createLogger } from '../../common/logger.js';
5
-
6
- const log = createLogger('planner:validation:determinism');
7
-
8
- /**
9
- * Result of determinism validation. If valid, `error` is undefined.
10
- * If invalid, contains the information needed to construct an error message.
11
- */
12
- export interface DeterminismValidationResult {
13
- /** True if the expression is deterministic */
14
- valid: boolean;
15
- /** String representation of the offending expression (if invalid) */
16
- expression?: string;
17
- }
18
-
19
- /**
20
- * Checks if an expression is deterministic (suitable for constraints and defaults).
21
- * Returns a result object instead of throwing, allowing the caller to decide how to handle.
22
- *
23
- * @param expr The expression plan node to check
24
- * @returns Validation result indicating if deterministic
25
- */
26
- export function checkDeterministic(expr: ScalarPlanNode): DeterminismValidationResult {
27
- const physical = expr.physical;
28
-
29
- if (physical.deterministic === false) {
30
- log('Non-deterministic expression detected: %s', expr.toString());
31
- return {
32
- valid: false,
33
- expression: expr.toString()
34
- };
35
- }
36
-
37
- return { valid: true };
38
- }
39
-
40
- /**
41
- * Validates that an expression is deterministic (suitable for constraints and defaults).
42
- * Non-deterministic expressions must be passed via mutation context instead.
43
- *
44
- * @param expr The expression plan node to validate
45
- * @param context Description of where the expression is used (e.g., "DEFAULT for column 'created_at'")
46
- * @throws QuereusError if the expression is non-deterministic
47
- */
48
- export function validateDeterministicExpression(
49
- expr: ScalarPlanNode,
50
- context: string
51
- ): void {
52
- log('Validating determinism for: %s', context);
53
-
54
- const result = checkDeterministic(expr);
55
-
56
- if (!result.valid) {
57
- throw new QuereusError(
58
- `Non-deterministic expression not allowed in ${context}. ` +
59
- `Expression: ${result.expression}. ` +
60
- `Use mutation context to pass non-deterministic values (e.g., WITH CONTEXT (timestamp = datetime('now'))).`,
61
- StatusCode.ERROR
62
- );
63
- }
64
-
65
- log('Expression is deterministic: %s', expr.toString());
66
- }
67
-
68
- /**
69
- * Validates that a CHECK constraint expression is deterministic.
70
- *
71
- * @param expr The constraint expression plan node
72
- * @param constraintName The name of the constraint (for error messages)
73
- * @param tableName The name of the table (for error messages)
74
- * @throws QuereusError if the expression is non-deterministic
75
- */
76
- export function validateDeterministicConstraint(
77
- expr: ScalarPlanNode,
78
- constraintName: string,
79
- tableName: string
80
- ): void {
81
- validateDeterministicExpression(
82
- expr,
83
- `CHECK constraint '${constraintName}' on table '${tableName}'`
84
- );
85
- }
86
-
87
- /**
88
- * Validates that a DEFAULT expression is deterministic.
89
- *
90
- * @param expr The default value expression plan node
91
- * @param columnName The name of the column (for error messages)
92
- * @param tableName The name of the table (for error messages)
93
- * @throws QuereusError if the expression is non-deterministic
94
- */
95
- export function validateDeterministicDefault(
96
- expr: ScalarPlanNode,
97
- columnName: string,
98
- tableName: string
99
- ): void {
100
- validateDeterministicExpression(
101
- expr,
102
- `DEFAULT for column '${columnName}' in table '${tableName}'`
103
- );
104
- }