@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,409 +0,0 @@
1
- import type { ColumnSchema } from './column.js';
2
- import type { AnyVirtualTableModule } from '../vtab/module.js';
3
- import { MemoryTableModule } from '../vtab/memory/module.js';
4
- import type { Expression } from '../parser/ast.js';
5
- import { type ColumnDef, type TableConstraint } from '../parser/ast.js';
6
- import { RowOp, SqlDataType, StatusCode, type SqlValue } from '../common/types.js';
7
- import type * as AST from '../parser/ast.js';
8
- import { quereusError, QuereusError } from '../common/errors.js';
9
- import { createLogger } from '../common/logger.js';
10
- import { inferType } from '../types/registry.js';
11
-
12
- const log = createLogger('schema:table');
13
- const warnLog = log.extend('warn');
14
-
15
- /**
16
- * Represents the schema definition of a table (real or virtual).
17
- */
18
- export interface TableSchema {
19
- /** Table name */
20
- name: string;
21
- /** Schema name (e.g., "main", "temp") */
22
- schemaName: string;
23
- /** Ordered list of column definitions */
24
- columns: ReadonlyArray<ColumnSchema>;
25
- /** Map from column name (lowercase) to column index */
26
- columnIndexMap: ReadonlyMap<string, number>;
27
- /** Definition of the primary key, including order and direction */
28
- primaryKeyDefinition: ReadonlyArray<PrimaryKeyColumnDefinition>;
29
- /** CHECK constraints defined on the table or its columns */
30
- checkConstraints: ReadonlyArray<RowConstraintSchema>;
31
- /** Reference to the registered module */
32
- vtabModule: AnyVirtualTableModule;
33
- /** If virtual, aux data passed during module registration */
34
- vtabAuxData?: unknown;
35
- /** If virtual, the arguments passed in CREATE VIRTUAL TABLE */
36
- vtabArgs?: Record<string, SqlValue>;
37
- /** If virtual, the name the module was registered with */
38
- vtabModuleName: string;
39
- /** Whether the table is a temporary table */
40
- isTemporary?: boolean;
41
- /** Whether the table is a view */
42
- isView: boolean;
43
- /** Whether the table is a subquery source */
44
- subqueryAST?: AST.SelectStmt;
45
- /** If virtual, the view definition */
46
- viewDefinition?: AST.SelectStmt;
47
- /** Table-level constraints */
48
- tableConstraints?: readonly TableConstraint[];
49
- /** Definitions of secondary indexes (relevant for planning) */
50
- indexes?: ReadonlyArray<IndexSchema>;
51
- /** Estimated number of rows in the table (for query planning) */
52
- readonly estimatedRows?: number;
53
- /** Whether the table is read-only */
54
- isReadOnly?: boolean; // default false
55
- /** Mutation context variables for this table */
56
- mutationContext?: ReadonlyArray<MutationContextDefinition>;
57
- /** Foreign key constraints (parsed but not yet enforced by engine) */
58
- // foreignKeys?: ReadonlyArray<ForeignKeyConstraintSchema>;
59
- /** Unique constraints (beyond primary key) */
60
- // uniqueConstraints?: ReadonlyArray<ConstraintSchema>;
61
- }
62
-
63
- /**
64
- * Builds a map from column names to their indices in the columns array
65
- *
66
- * @param columns Array of column schemas
67
- * @returns Map of lowercase column names to their indices
68
- */
69
- export function buildColumnIndexMap(columns: ReadonlyArray<ColumnSchema>): Map<string, number> {
70
- const map = new Map<string, number>();
71
- columns.forEach((col, index) => {
72
- map.set(col.name.toLowerCase(), index);
73
- });
74
- return map;
75
- }
76
-
77
- /**
78
- * Extracts just the column indices from a primary key definition
79
- *
80
- * @param pkDef Primary key definition array
81
- * @returns Array of column indices that form the primary key
82
- */
83
- export function getPrimaryKeyIndices(pkDef: ReadonlyArray<PrimaryKeyColumnDefinition>): ReadonlyArray<number> {
84
- return Object.freeze(pkDef.map(def => def.index));
85
- }
86
-
87
- /**
88
- * Converts a parsed ColumnDef AST node into a runtime ColumnSchema object
89
- *
90
- * @param def Column definition AST node
91
- * @param defaultNotNull Whether columns should be NOT NULL by default (Third Manifesto approach)
92
- * @returns A runtime ColumnSchema object
93
- */
94
- export function columnDefToSchema(def: ColumnDef, defaultNotNull: boolean = true): ColumnSchema {
95
- // Infer logical type from the declared type name
96
- const logicalType = inferType(def.dataType);
97
-
98
- const schema: Partial<ColumnSchema> & { name: string } = {
99
- name: def.name,
100
- logicalType: logicalType,
101
- notNull: defaultNotNull, // Default based on Third Manifesto principles
102
- primaryKey: false,
103
- pkOrder: 0,
104
- defaultValue: null,
105
- collation: 'BINARY',
106
- generated: false,
107
- };
108
-
109
- for (const constraint of def.constraints ?? []) {
110
- switch (constraint.type) {
111
- case 'primaryKey':
112
- schema.primaryKey = true;
113
- schema.pkDirection = constraint.direction;
114
- break;
115
- case 'notNull':
116
- schema.notNull = true;
117
- break;
118
- case 'null':
119
- schema.notNull = false;
120
- break;
121
- case 'unique':
122
- break;
123
- case 'default':
124
- schema.defaultValue = constraint.expr;
125
- break;
126
- case 'collate':
127
- schema.collation = constraint.collation;
128
- // Validate collation compatibility with type
129
- if (constraint.collation && logicalType.supportedCollations &&
130
- !logicalType.supportedCollations.includes(constraint.collation)) {
131
- throw new QuereusError(
132
- `Collation '${constraint.collation}' is not supported for type '${logicalType.name}' on column '${def.name}'`,
133
- StatusCode.ERROR
134
- );
135
- }
136
- break;
137
- case 'generated':
138
- schema.generated = true;
139
- break;
140
- }
141
- }
142
-
143
- // PK implies NOT NULL (always, regardless of default)
144
- if (schema.primaryKey) {
145
- schema.notNull = true;
146
- }
147
-
148
- // If no explicit nullability constraint and default is nullable,
149
- // we need to check if there's an explicit NULL declaration
150
- // Note: SQL doesn't have explicit NULL constraints in standard syntax,
151
- // so this primarily affects the default behavior
152
-
153
- // Assign a default pkOrder if it's a PK but order isn't specified elsewhere
154
- if (schema.primaryKey && schema.pkOrder === 0) {
155
- schema.pkOrder = 1;
156
- }
157
-
158
- return schema as ColumnSchema;
159
- }
160
-
161
- /**
162
- * Mutation context variable definition
163
- */
164
- export interface MutationContextDefinition {
165
- /** Variable name */
166
- name: string;
167
- /** Logical type of the variable */
168
- logicalType: import('../types/logical-type.js').LogicalType;
169
- /** Whether the variable is NOT NULL */
170
- notNull: boolean;
171
- }
172
-
173
- /**
174
- * Converts AST mutation context variable to schema definition
175
- *
176
- * @param varDef AST mutation context variable definition
177
- * @param defaultNotNull Whether variables should be NOT NULL by default
178
- * @returns Mutation context definition schema object
179
- */
180
- export function mutationContextVarToSchema(varDef: AST.MutationContextVar, defaultNotNull: boolean = true): MutationContextDefinition {
181
- return {
182
- name: varDef.name,
183
- logicalType: inferType(varDef.dataType),
184
- notNull: varDef.notNull !== undefined ? varDef.notNull : defaultNotNull,
185
- };
186
- }
187
-
188
- /**
189
- * Defines a column in an index
190
- */
191
- export interface IndexColumnSchema {
192
- /** Column index in TableSchema.columns */
193
- index: number;
194
- /** Whether the index should sort in descending order */
195
- desc?: boolean; // default false
196
- /** Optional collation sequence for the column */
197
- collation?: string;
198
- }
199
-
200
- /**
201
- * Represents an index definition
202
- */
203
- export interface IndexSchema {
204
- /** Index name */
205
- name: string;
206
- /** Columns in the index */
207
- columns: ReadonlyArray<IndexColumnSchema>;
208
- }
209
-
210
- /**
211
- * Creates a basic TableSchema with minimal configuration
212
- *
213
- * @param name Table name
214
- * @param columns Array of column name and type objects
215
- * @param pkColNames Optional array of primary key column names
216
- * @param defaultNotNull Whether columns should be NOT NULL by default (defaults to true for Third Manifesto compliance)
217
- * @returns A frozen TableSchema object
218
- */
219
- export function createBasicSchema(name: string, columns: { name: string, type: string }[], pkColNames?: string[], defaultNotNull: boolean = true): Readonly<TableSchema> {
220
- const columnSchemas = columns.map(c => columnDefToSchema({
221
- name: c.name,
222
- dataType: c.type,
223
- constraints: []
224
- }, defaultNotNull));
225
- const columnIndexMap = buildColumnIndexMap(columnSchemas);
226
- const pkDef = pkColNames
227
- ? pkColNames.map(pkName => {
228
- const idx = columnIndexMap.get(pkName.toLowerCase());
229
- if (idx === undefined) quereusError(`PK column ${pkName} not found`);
230
- return { index: idx, desc: false };
231
- })
232
- : [];
233
-
234
- const defaultMemoryModule = new MemoryTableModule();
235
-
236
- return Object.freeze({
237
- name: name,
238
- schemaName: 'main',
239
- columns: columnSchemas,
240
- columnIndexMap: columnIndexMap,
241
- primaryKeyDefinition: pkDef,
242
- checkConstraints: [] as RowConstraintSchema[],
243
- indexes: [],
244
- vtabModule: defaultMemoryModule,
245
- vtabAuxData: null,
246
- vtabArgs: {},
247
- vtabModuleName: 'memory',
248
- isTemporary: false,
249
- isView: false,
250
- subqueryAST: undefined,
251
- viewDefinition: undefined,
252
- tableConstraints: [],
253
- primaryKey: pkDef.map(def => columnSchemas[def.index].name),
254
- });
255
- }
256
-
257
- /** Bitmask for row operations */
258
- export const enum RowOpFlag {
259
- INSERT = 1,
260
- UPDATE = 2,
261
- DELETE = 4
262
- }
263
- export type RowOpMask = RowOpFlag;
264
- export const DEFAULT_ROWOP_MASK = RowOpFlag.INSERT | RowOpFlag.UPDATE;
265
-
266
- /**
267
- * Converts an array of row operations to a bitmask
268
- *
269
- * @param list Optional array of operation types
270
- * @returns A bitmask representing the operations
271
- */
272
- export function opsToMask(list?: RowOp[]): RowOpMask {
273
- if (!list || list.length === 0) {
274
- return DEFAULT_ROWOP_MASK;
275
- }
276
- let mask: RowOpMask = 0 as RowOpMask;
277
- list.forEach(op => {
278
- switch (op) {
279
- case 'insert': mask |= RowOpFlag.INSERT; break;
280
- case 'update': mask |= RowOpFlag.UPDATE; break;
281
- case 'delete': mask |= RowOpFlag.DELETE; break;
282
- }
283
- });
284
- return mask;
285
- }
286
-
287
- /**
288
- * Represents a CHECK constraint with operation flags
289
- */
290
- export interface RowConstraintSchema {
291
- /** Optional constraint name */
292
- name?: string;
293
- /** Constraint expression */
294
- expr: Expression;
295
- /** Bitmask of operations the constraint applies to */
296
- operations: RowOpMask;
297
- /** Whether the constraint is deferrable */
298
- deferrable?: boolean;
299
- /** Whether the constraint is initially deferred */
300
- initiallyDeferred?: boolean;
301
- }
302
-
303
- export interface PrimaryKeyColumnDefinition {
304
- index: number;
305
- desc?: boolean; // default false
306
- autoIncrement?: boolean;
307
- collation?: string;
308
- }
309
-
310
- /**
311
- * Helper to parse primary key from AST column and table constraints.
312
- * @param columns Parsed column definitions from AST.
313
- * @param constraints Parsed table constraints from AST.
314
- * @returns A ReadonlyArray defining the primary key columns (index and direction), or undefined.
315
- * @throws QuereusError if multiple primary keys are defined or PK column not found.
316
- */
317
- export function findPKDefinition(
318
- columns: ReadonlyArray<ColumnSchema>,
319
- constraints: ReadonlyArray<AST.TableConstraint> | undefined,
320
- ): ReadonlyArray<PrimaryKeyColumnDefinition> {
321
- const columnPK = findColumnPKDefinition(columns);
322
- const constraintPK = findConstraintPKDefinition(columns, constraints);
323
-
324
- if (constraintPK && columnPK) {
325
- throw new QuereusError("Cannot define both table-level and column-level PRIMARY KEYs", StatusCode.CONSTRAINT);
326
- }
327
-
328
- let finalPkDef = constraintPK ?? columnPK;
329
-
330
- if (!finalPkDef) {
331
- // Quereus-specific behavior: Include all columns in the primary key when no explicit primary key is defined
332
- // This differs from SQLite which would use the first INTEGER column or an implicit rowid
333
- // This design choice ensures predictable behavior and avoids potential confusion with SQLite's implicit rules
334
- warnLog(`No PRIMARY KEY explicitly defined. Including all columns in primary key.`);
335
- finalPkDef = Object.freeze(
336
- columns.map((col, index) => ({
337
- index,
338
- desc: false,
339
- collation: col.collation || 'BINARY'
340
- }))
341
- );
342
- }
343
-
344
- // Don't require NOT NULL, we want to be more flexible
345
-
346
- return finalPkDef as ReadonlyArray<PrimaryKeyColumnDefinition>;
347
- }
348
-
349
- function findConstraintPKDefinition(
350
- columns: readonly ColumnSchema[],
351
- constraints: readonly TableConstraint[] | undefined
352
- ): PrimaryKeyColumnDefinition[] | undefined {
353
- const colMap = buildColumnIndexMap(columns);
354
- let constraintPKs: PrimaryKeyColumnDefinition[] | undefined;
355
-
356
- if (constraints) {
357
- for (const constraint of constraints) {
358
- if (constraint.type === 'primaryKey') {
359
- if (constraintPKs) {
360
- throw new QuereusError("Multiple table-level PRIMARY KEY constraints defined", StatusCode.CONSTRAINT);
361
- }
362
- if (!constraint.columns || constraint.columns.length === 0) {
363
- // An empty column list is fine; means table can have 0-1 rows
364
- constraintPKs = [];
365
- } else {
366
- constraintPKs = constraint.columns.map(colInfo => {
367
- const colIndex = colMap.get(colInfo.name.toLowerCase());
368
- if (colIndex === undefined) {
369
- throw new QuereusError(`PRIMARY KEY column '${colInfo.name}' not found in table definition`, StatusCode.ERROR);
370
- }
371
- return {
372
- index: colIndex,
373
- desc: colInfo.direction === 'desc',
374
- collation: columns[colIndex].collation || 'BINARY'
375
- };
376
- });
377
- }
378
- }
379
- }
380
- }
381
- return constraintPKs;
382
- }
383
-
384
- function findColumnPKDefinition(columns: ReadonlyArray<ColumnSchema>): ReadonlyArray<PrimaryKeyColumnDefinition> | undefined {
385
- const pkCols = columns
386
- .map((col, index) => ({ ...col, originalIndex: index }))
387
- .filter(col => col.primaryKey)
388
- .sort((a, b) => a.pkOrder - b.pkOrder);
389
-
390
- if (pkCols.length > 1 && pkCols.some(col => col.pkOrder === 0)) {
391
- warnLog("Multiple column-level PRIMARY KEYs defined without explicit pkOrder; consider a table-level PRIMARY KEY for composite keys.");
392
- }
393
-
394
- if (pkCols.length > 1) {
395
- warnLog('Multiple columns defined as PRIMARY KEY at column level. Forming a composite key.');
396
- }
397
-
398
- if (pkCols.length === 0) {
399
- return undefined;
400
- }
401
-
402
- return Object.freeze(pkCols.map(col => ({
403
- index: col.originalIndex,
404
- desc: col.logicalType.name === 'INTEGER' && col.pkDirection === 'desc',
405
- autoIncrement: col.logicalType.name === 'INTEGER',
406
- collation: col.collation || 'BINARY'
407
- })));
408
- }
409
-
@@ -1,19 +0,0 @@
1
- import type * as AST from '../parser/ast.js';
2
-
3
- /**
4
- * Represents the schema definition of a database view.
5
- * Views are stored SELECT statements that act like virtual tables.
6
- */
7
- export interface ViewSchema {
8
- /** The name of the view */
9
- name: string;
10
- /** The name of the schema this view belongs to (e.g., 'main') */
11
- schemaName: string;
12
- /** The original SQL text used to create the view */
13
- sql: string;
14
- /** The parsed SELECT statement AST that defines the view's logic */
15
- selectAst: AST.SelectStmt;
16
- /** Columns explicitly defined in CREATE VIEW (e.g., CREATE VIEW v(a,b) AS...) */
17
- columns?: ReadonlyArray<string>; // Optional list of explicitly named columns
18
- // Add any other relevant metadata later if needed
19
- }
@@ -1,56 +0,0 @@
1
- import type { ScalarType } from '../common/datatype.js';
2
- import type { SqlValue } from '../common/types.js';
3
-
4
- export interface WindowFunctionSchema {
5
- name: string; // 'ROW_NUMBER', 'RANK', 'SUM', etc.
6
- argCount: number | 'variadic'; // Number of arguments, or 'variadic' for any
7
- returnType: ScalarType; // Return type
8
- requiresOrderBy: boolean; // Whether ORDER BY is required
9
- kind: 'ranking' | 'aggregate' | 'value' | 'navigation';
10
-
11
- // Optional custom step/final hooks for aggregate-style windows
12
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
- step?: (state: any, value: SqlValue) => any;
14
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
- final?: (state: any, rowCount: number) => SqlValue;
16
- }
17
-
18
- // Global registry for window functions
19
- const windowRegistry = new Map<string, WindowFunctionSchema>();
20
-
21
- export function registerWindowFunction(schema: WindowFunctionSchema): void {
22
- windowRegistry.set(schema.name.toLowerCase(), schema);
23
- }
24
-
25
- export function resolveWindowFunction(name: string): WindowFunctionSchema | undefined {
26
- return windowRegistry.get(name.toLowerCase());
27
- }
28
-
29
- export function isWindowFunction(name: string): boolean {
30
- return windowRegistry.has(name.toLowerCase());
31
- }
32
-
33
- export function getAllWindowFunctions(): WindowFunctionSchema[] {
34
- return Array.from(windowRegistry.values());
35
- }
36
-
37
- // Helper to create ranking function state
38
- export function createRankingState() {
39
- return {
40
- rowNumber: 0,
41
- rank: 0,
42
- denseRank: 0,
43
- lastValues: null as SqlValue[] | null
44
- };
45
- }
46
-
47
- // Helper for aggregate window function state
48
- export function createAggregateState(schema: WindowFunctionSchema) {
49
- if (schema.step && schema.final) {
50
- return {
51
- accumulator: null,
52
- rowCount: 0
53
- };
54
- }
55
- return null;
56
- }