@quereus/quereus 0.7.3 → 0.7.5

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 (568) hide show
  1. package/dist/src/schema/manager.d.ts.map +1 -1
  2. package/dist/src/schema/manager.js +19 -18
  3. package/package.json +3 -3
  4. package/dist/src/common/constants.js.map +0 -1
  5. package/dist/src/common/datatype.js.map +0 -1
  6. package/dist/src/common/errors.js.map +0 -1
  7. package/dist/src/common/json-types.js.map +0 -1
  8. package/dist/src/common/logger.js.map +0 -1
  9. package/dist/src/common/type-inference.js.map +0 -1
  10. package/dist/src/common/types.js.map +0 -1
  11. package/dist/src/core/database-options.js.map +0 -1
  12. package/dist/src/core/database.js.map +0 -1
  13. package/dist/src/core/param.js.map +0 -1
  14. package/dist/src/core/statement.js.map +0 -1
  15. package/dist/src/func/builtins/aggregate.js.map +0 -1
  16. package/dist/src/func/builtins/builtin-window-functions.js.map +0 -1
  17. package/dist/src/func/builtins/conversion.js.map +0 -1
  18. package/dist/src/func/builtins/datetime.js.map +0 -1
  19. package/dist/src/func/builtins/explain.js.map +0 -1
  20. package/dist/src/func/builtins/generation.js.map +0 -1
  21. package/dist/src/func/builtins/index.js.map +0 -1
  22. package/dist/src/func/builtins/json-helpers.js.map +0 -1
  23. package/dist/src/func/builtins/json-tvf.js.map +0 -1
  24. package/dist/src/func/builtins/json.js.map +0 -1
  25. package/dist/src/func/builtins/scalar.js.map +0 -1
  26. package/dist/src/func/builtins/schema.js.map +0 -1
  27. package/dist/src/func/builtins/string.js.map +0 -1
  28. package/dist/src/func/builtins/timespan.js.map +0 -1
  29. package/dist/src/func/context.js.map +0 -1
  30. package/dist/src/func/registration.js.map +0 -1
  31. package/dist/src/index.js.map +0 -1
  32. package/dist/src/parser/ast.js.map +0 -1
  33. package/dist/src/parser/index.js.map +0 -1
  34. package/dist/src/parser/lexer.js.map +0 -1
  35. package/dist/src/parser/parser.js.map +0 -1
  36. package/dist/src/parser/utils.js.map +0 -1
  37. package/dist/src/parser/visitor.js.map +0 -1
  38. package/dist/src/planner/analysis/binding-collector.js.map +0 -1
  39. package/dist/src/planner/analysis/const-evaluator.js.map +0 -1
  40. package/dist/src/planner/analysis/const-pass.js.map +0 -1
  41. package/dist/src/planner/analysis/constraint-extractor.js.map +0 -1
  42. package/dist/src/planner/analysis/predicate-normalizer.js.map +0 -1
  43. package/dist/src/planner/building/alter-table.js.map +0 -1
  44. package/dist/src/planner/building/block.js.map +0 -1
  45. package/dist/src/planner/building/constraint-builder.js.map +0 -1
  46. package/dist/src/planner/building/create-assertion.js.map +0 -1
  47. package/dist/src/planner/building/create-view.js.map +0 -1
  48. package/dist/src/planner/building/ddl.js.map +0 -1
  49. package/dist/src/planner/building/declare-schema.js.map +0 -1
  50. package/dist/src/planner/building/delete.js.map +0 -1
  51. package/dist/src/planner/building/drop-assertion.js.map +0 -1
  52. package/dist/src/planner/building/drop-table.js.map +0 -1
  53. package/dist/src/planner/building/drop-view.js.map +0 -1
  54. package/dist/src/planner/building/expression.js.map +0 -1
  55. package/dist/src/planner/building/function-call.js.map +0 -1
  56. package/dist/src/planner/building/insert.js.map +0 -1
  57. package/dist/src/planner/building/pragma.js.map +0 -1
  58. package/dist/src/planner/building/schema-resolution.js.map +0 -1
  59. package/dist/src/planner/building/select-aggregates.js.map +0 -1
  60. package/dist/src/planner/building/select-compound.js.map +0 -1
  61. package/dist/src/planner/building/select-context.js.map +0 -1
  62. package/dist/src/planner/building/select-modifiers.js.map +0 -1
  63. package/dist/src/planner/building/select-projections.js.map +0 -1
  64. package/dist/src/planner/building/select-window.js.map +0 -1
  65. package/dist/src/planner/building/select.js.map +0 -1
  66. package/dist/src/planner/building/table-function.js.map +0 -1
  67. package/dist/src/planner/building/table.js.map +0 -1
  68. package/dist/src/planner/building/transaction.js.map +0 -1
  69. package/dist/src/planner/building/update.js.map +0 -1
  70. package/dist/src/planner/building/with.js.map +0 -1
  71. package/dist/src/planner/cache/correlation-detector.js.map +0 -1
  72. package/dist/src/planner/cache/materialization-advisory.js.map +0 -1
  73. package/dist/src/planner/cache/reference-graph.js.map +0 -1
  74. package/dist/src/planner/cost/index.js.map +0 -1
  75. package/dist/src/planner/debug/logger-utils.js.map +0 -1
  76. package/dist/src/planner/debug.js.map +0 -1
  77. package/dist/src/planner/framework/characteristics.js.map +0 -1
  78. package/dist/src/planner/framework/context.js.map +0 -1
  79. package/dist/src/planner/framework/pass.js.map +0 -1
  80. package/dist/src/planner/framework/physical-utils.js.map +0 -1
  81. package/dist/src/planner/framework/registry.js.map +0 -1
  82. package/dist/src/planner/framework/trace.js.map +0 -1
  83. package/dist/src/planner/nodes/add-constraint-node.js.map +0 -1
  84. package/dist/src/planner/nodes/aggregate-function.js.map +0 -1
  85. package/dist/src/planner/nodes/aggregate-node.js.map +0 -1
  86. package/dist/src/planner/nodes/array-index-node.js.map +0 -1
  87. package/dist/src/planner/nodes/block.js.map +0 -1
  88. package/dist/src/planner/nodes/cache-node.js.map +0 -1
  89. package/dist/src/planner/nodes/constraint-check-node.js.map +0 -1
  90. package/dist/src/planner/nodes/create-assertion-node.js.map +0 -1
  91. package/dist/src/planner/nodes/create-index-node.js.map +0 -1
  92. package/dist/src/planner/nodes/create-table-node.js.map +0 -1
  93. package/dist/src/planner/nodes/create-view-node.js.map +0 -1
  94. package/dist/src/planner/nodes/cte-node.js.map +0 -1
  95. package/dist/src/planner/nodes/cte-reference-node.js.map +0 -1
  96. package/dist/src/planner/nodes/declarative-schema.js.map +0 -1
  97. package/dist/src/planner/nodes/delete-node.js.map +0 -1
  98. package/dist/src/planner/nodes/distinct-node.js.map +0 -1
  99. package/dist/src/planner/nodes/dml-executor-node.js.map +0 -1
  100. package/dist/src/planner/nodes/drop-assertion-node.js.map +0 -1
  101. package/dist/src/planner/nodes/drop-table-node.js.map +0 -1
  102. package/dist/src/planner/nodes/drop-view-node.js.map +0 -1
  103. package/dist/src/planner/nodes/filter.js.map +0 -1
  104. package/dist/src/planner/nodes/function.js.map +0 -1
  105. package/dist/src/planner/nodes/insert-node.js.map +0 -1
  106. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +0 -1
  107. package/dist/src/planner/nodes/join-node.js.map +0 -1
  108. package/dist/src/planner/nodes/limit-offset.js.map +0 -1
  109. package/dist/src/planner/nodes/plan-node-type.js.map +0 -1
  110. package/dist/src/planner/nodes/plan-node.js.map +0 -1
  111. package/dist/src/planner/nodes/pragma.js.map +0 -1
  112. package/dist/src/planner/nodes/project-node.js.map +0 -1
  113. package/dist/src/planner/nodes/recursive-cte-node.js.map +0 -1
  114. package/dist/src/planner/nodes/reference.js.map +0 -1
  115. package/dist/src/planner/nodes/remote-query-node.js.map +0 -1
  116. package/dist/src/planner/nodes/retrieve-node.js.map +0 -1
  117. package/dist/src/planner/nodes/returning-node.js.map +0 -1
  118. package/dist/src/planner/nodes/scalar.js.map +0 -1
  119. package/dist/src/planner/nodes/sequencing-node.js.map +0 -1
  120. package/dist/src/planner/nodes/set-operation-node.js.map +0 -1
  121. package/dist/src/planner/nodes/single-row.js.map +0 -1
  122. package/dist/src/planner/nodes/sink-node.js.map +0 -1
  123. package/dist/src/planner/nodes/sort.js.map +0 -1
  124. package/dist/src/planner/nodes/stream-aggregate.js.map +0 -1
  125. package/dist/src/planner/nodes/subquery.js.map +0 -1
  126. package/dist/src/planner/nodes/table-access-nodes.js.map +0 -1
  127. package/dist/src/planner/nodes/table-function-call.js.map +0 -1
  128. package/dist/src/planner/nodes/transaction-node.js.map +0 -1
  129. package/dist/src/planner/nodes/update-node.js.map +0 -1
  130. package/dist/src/planner/nodes/values-node.js.map +0 -1
  131. package/dist/src/planner/nodes/view-reference-node.js.map +0 -1
  132. package/dist/src/planner/nodes/window-function.js.map +0 -1
  133. package/dist/src/planner/nodes/window-node.js.map +0 -1
  134. package/dist/src/planner/optimizer-tuning.js.map +0 -1
  135. package/dist/src/planner/optimizer.js.map +0 -1
  136. package/dist/src/planner/planning-context.js.map +0 -1
  137. package/dist/src/planner/resolve.js.map +0 -1
  138. package/dist/src/planner/rules/access/rule-select-access-path.js.map +0 -1
  139. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +0 -1
  140. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +0 -1
  141. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
  142. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +0 -1
  143. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +0 -1
  144. package/dist/src/planner/rules/join/rule-join-key-inference.js.map +0 -1
  145. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +0 -1
  146. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +0 -1
  147. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +0 -1
  148. package/dist/src/planner/scopes/aliased.js.map +0 -1
  149. package/dist/src/planner/scopes/base.js.map +0 -1
  150. package/dist/src/planner/scopes/empty.js.map +0 -1
  151. package/dist/src/planner/scopes/global.js.map +0 -1
  152. package/dist/src/planner/scopes/multi.js.map +0 -1
  153. package/dist/src/planner/scopes/param.js.map +0 -1
  154. package/dist/src/planner/scopes/registered.js.map +0 -1
  155. package/dist/src/planner/scopes/scope.js.map +0 -1
  156. package/dist/src/planner/stats/basic-estimates.js.map +0 -1
  157. package/dist/src/planner/stats/index.js.map +0 -1
  158. package/dist/src/planner/type-utils.js.map +0 -1
  159. package/dist/src/planner/util/key-utils.js.map +0 -1
  160. package/dist/src/planner/validation/determinism-validator.js.map +0 -1
  161. package/dist/src/planner/validation/plan-validator.js.map +0 -1
  162. package/dist/src/runtime/async-util.js.map +0 -1
  163. package/dist/src/runtime/cache/shared-cache.js.map +0 -1
  164. package/dist/src/runtime/context-helpers.js.map +0 -1
  165. package/dist/src/runtime/deferred-constraint-queue.js.map +0 -1
  166. package/dist/src/runtime/emission-context.js.map +0 -1
  167. package/dist/src/runtime/emit/add-constraint.js.map +0 -1
  168. package/dist/src/runtime/emit/aggregate.js.map +0 -1
  169. package/dist/src/runtime/emit/array-index.js.map +0 -1
  170. package/dist/src/runtime/emit/between.js.map +0 -1
  171. package/dist/src/runtime/emit/binary.js.map +0 -1
  172. package/dist/src/runtime/emit/block.js.map +0 -1
  173. package/dist/src/runtime/emit/cache.js.map +0 -1
  174. package/dist/src/runtime/emit/case.js.map +0 -1
  175. package/dist/src/runtime/emit/cast.js.map +0 -1
  176. package/dist/src/runtime/emit/collate.js.map +0 -1
  177. package/dist/src/runtime/emit/column-reference.js.map +0 -1
  178. package/dist/src/runtime/emit/constraint-check.js.map +0 -1
  179. package/dist/src/runtime/emit/create-assertion.js.map +0 -1
  180. package/dist/src/runtime/emit/create-index.js.map +0 -1
  181. package/dist/src/runtime/emit/create-table.js.map +0 -1
  182. package/dist/src/runtime/emit/create-view.js.map +0 -1
  183. package/dist/src/runtime/emit/cte-reference.js.map +0 -1
  184. package/dist/src/runtime/emit/cte.js.map +0 -1
  185. package/dist/src/runtime/emit/delete.js.map +0 -1
  186. package/dist/src/runtime/emit/distinct.js.map +0 -1
  187. package/dist/src/runtime/emit/dml-executor.js.map +0 -1
  188. package/dist/src/runtime/emit/drop-assertion.js.map +0 -1
  189. package/dist/src/runtime/emit/drop-table.js.map +0 -1
  190. package/dist/src/runtime/emit/drop-view.js.map +0 -1
  191. package/dist/src/runtime/emit/filter.js.map +0 -1
  192. package/dist/src/runtime/emit/insert.js.map +0 -1
  193. package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +0 -1
  194. package/dist/src/runtime/emit/join.js.map +0 -1
  195. package/dist/src/runtime/emit/limit-offset.js.map +0 -1
  196. package/dist/src/runtime/emit/literal.js.map +0 -1
  197. package/dist/src/runtime/emit/parameter.js.map +0 -1
  198. package/dist/src/runtime/emit/pragma.js.map +0 -1
  199. package/dist/src/runtime/emit/project.js.map +0 -1
  200. package/dist/src/runtime/emit/recursive-cte.js.map +0 -1
  201. package/dist/src/runtime/emit/remote-query.js.map +0 -1
  202. package/dist/src/runtime/emit/retrieve.js.map +0 -1
  203. package/dist/src/runtime/emit/returning.js.map +0 -1
  204. package/dist/src/runtime/emit/scalar-function.js.map +0 -1
  205. package/dist/src/runtime/emit/scan.js.map +0 -1
  206. package/dist/src/runtime/emit/schema-declarative.js.map +0 -1
  207. package/dist/src/runtime/emit/sequencing.js.map +0 -1
  208. package/dist/src/runtime/emit/set-operation.js.map +0 -1
  209. package/dist/src/runtime/emit/sink.js.map +0 -1
  210. package/dist/src/runtime/emit/sort.js.map +0 -1
  211. package/dist/src/runtime/emit/subquery.js.map +0 -1
  212. package/dist/src/runtime/emit/table-valued-function.js.map +0 -1
  213. package/dist/src/runtime/emit/temporal-arithmetic.js.map +0 -1
  214. package/dist/src/runtime/emit/transaction.js.map +0 -1
  215. package/dist/src/runtime/emit/unary.js.map +0 -1
  216. package/dist/src/runtime/emit/update.js.map +0 -1
  217. package/dist/src/runtime/emit/values.js.map +0 -1
  218. package/dist/src/runtime/emit/window-function.js.map +0 -1
  219. package/dist/src/runtime/emit/window.js.map +0 -1
  220. package/dist/src/runtime/emitters.js.map +0 -1
  221. package/dist/src/runtime/register.js.map +0 -1
  222. package/dist/src/runtime/scheduler.js.map +0 -1
  223. package/dist/src/runtime/types.js.map +0 -1
  224. package/dist/src/runtime/utils.js.map +0 -1
  225. package/dist/src/schema/assertion.js.map +0 -1
  226. package/dist/src/schema/catalog.js.map +0 -1
  227. package/dist/src/schema/change-events.js.map +0 -1
  228. package/dist/src/schema/column.js.map +0 -1
  229. package/dist/src/schema/declared-schema-manager.js.map +0 -1
  230. package/dist/src/schema/function.js.map +0 -1
  231. package/dist/src/schema/manager.js.map +0 -1
  232. package/dist/src/schema/schema-differ.js.map +0 -1
  233. package/dist/src/schema/schema-hasher.js.map +0 -1
  234. package/dist/src/schema/schema.js.map +0 -1
  235. package/dist/src/schema/table.js.map +0 -1
  236. package/dist/src/schema/view.js.map +0 -1
  237. package/dist/src/schema/window-function.js.map +0 -1
  238. package/dist/src/types/builtin-types.js.map +0 -1
  239. package/dist/src/types/index.js.map +0 -1
  240. package/dist/src/types/json-type.js.map +0 -1
  241. package/dist/src/types/logical-type.js.map +0 -1
  242. package/dist/src/types/plugin-interface.js.map +0 -1
  243. package/dist/src/types/registry.js.map +0 -1
  244. package/dist/src/types/temporal-types.js.map +0 -1
  245. package/dist/src/types/validation.js.map +0 -1
  246. package/dist/src/util/affinity.js.map +0 -1
  247. package/dist/src/util/ast-stringify.js.map +0 -1
  248. package/dist/src/util/cached.js.map +0 -1
  249. package/dist/src/util/coercion.js.map +0 -1
  250. package/dist/src/util/comparison.js.map +0 -1
  251. package/dist/src/util/environment.js.map +0 -1
  252. package/dist/src/util/hash.js.map +0 -1
  253. package/dist/src/util/latches.js.map +0 -1
  254. package/dist/src/util/mutation-statement.js.map +0 -1
  255. package/dist/src/util/patterns.js.map +0 -1
  256. package/dist/src/util/plan-formatter.js.map +0 -1
  257. package/dist/src/util/plugin-helper.js.map +0 -1
  258. package/dist/src/util/row-descriptor.js.map +0 -1
  259. package/dist/src/util/serialization.js.map +0 -1
  260. package/dist/src/util/sql-literal.js.map +0 -1
  261. package/dist/src/util/working-table-iterable.js.map +0 -1
  262. package/dist/src/vtab/best-access-plan.js.map +0 -1
  263. package/dist/src/vtab/connection.js.map +0 -1
  264. package/dist/src/vtab/filter-info.js.map +0 -1
  265. package/dist/src/vtab/index-info.js.map +0 -1
  266. package/dist/src/vtab/manifest.js.map +0 -1
  267. package/dist/src/vtab/memory/connection.js.map +0 -1
  268. package/dist/src/vtab/memory/index.js.map +0 -1
  269. package/dist/src/vtab/memory/layer/base-cursor.js.map +0 -1
  270. package/dist/src/vtab/memory/layer/base.js.map +0 -1
  271. package/dist/src/vtab/memory/layer/connection.js.map +0 -1
  272. package/dist/src/vtab/memory/layer/interface.js.map +0 -1
  273. package/dist/src/vtab/memory/layer/manager.js.map +0 -1
  274. package/dist/src/vtab/memory/layer/safe-iterate.js.map +0 -1
  275. package/dist/src/vtab/memory/layer/scan-plan.js.map +0 -1
  276. package/dist/src/vtab/memory/layer/transaction-cursor.js.map +0 -1
  277. package/dist/src/vtab/memory/layer/transaction.js.map +0 -1
  278. package/dist/src/vtab/memory/module.js.map +0 -1
  279. package/dist/src/vtab/memory/table.js.map +0 -1
  280. package/dist/src/vtab/memory/types.js.map +0 -1
  281. package/dist/src/vtab/memory/utils/logging.js.map +0 -1
  282. package/dist/src/vtab/memory/utils/primary-key.js.map +0 -1
  283. package/dist/src/vtab/module.js.map +0 -1
  284. package/dist/src/vtab/table.js.map +0 -1
  285. package/src/common/constants.ts +0 -60
  286. package/src/common/datatype.ts +0 -85
  287. package/src/common/errors.ts +0 -189
  288. package/src/common/json-types.ts +0 -16
  289. package/src/common/logger.ts +0 -97
  290. package/src/common/type-inference.ts +0 -39
  291. package/src/common/types.ts +0 -151
  292. package/src/core/database-options.ts +0 -258
  293. package/src/core/database.ts +0 -1461
  294. package/src/core/param.ts +0 -56
  295. package/src/core/statement.ts +0 -528
  296. package/src/func/builtins/aggregate.ts +0 -269
  297. package/src/func/builtins/builtin-window-functions.ts +0 -166
  298. package/src/func/builtins/conversion.ts +0 -226
  299. package/src/func/builtins/datetime.ts +0 -500
  300. package/src/func/builtins/explain.ts +0 -779
  301. package/src/func/builtins/generation.ts +0 -43
  302. package/src/func/builtins/index.ts +0 -167
  303. package/src/func/builtins/json-helpers.ts +0 -237
  304. package/src/func/builtins/json-tvf.ts +0 -224
  305. package/src/func/builtins/json.ts +0 -588
  306. package/src/func/builtins/scalar.ts +0 -423
  307. package/src/func/builtins/schema.ts +0 -213
  308. package/src/func/builtins/string.ts +0 -306
  309. package/src/func/builtins/timespan.ts +0 -179
  310. package/src/func/context.ts +0 -258
  311. package/src/func/registration.ts +0 -201
  312. package/src/index.ts +0 -172
  313. package/src/parser/ast.ts +0 -581
  314. package/src/parser/index.ts +0 -65
  315. package/src/parser/lexer.ts +0 -806
  316. package/src/parser/parser.ts +0 -3352
  317. package/src/parser/utils.ts +0 -10
  318. package/src/parser/visitor.ts +0 -188
  319. package/src/planner/analysis/README.md +0 -93
  320. package/src/planner/analysis/binding-collector.ts +0 -83
  321. package/src/planner/analysis/const-evaluator.ts +0 -63
  322. package/src/planner/analysis/const-pass.ts +0 -282
  323. package/src/planner/analysis/constraint-extractor.ts +0 -764
  324. package/src/planner/analysis/predicate-normalizer.ts +0 -237
  325. package/src/planner/building/alter-table.ts +0 -49
  326. package/src/planner/building/block.ts +0 -93
  327. package/src/planner/building/constraint-builder.ts +0 -178
  328. package/src/planner/building/create-assertion.ts +0 -7
  329. package/src/planner/building/create-view.ts +0 -29
  330. package/src/planner/building/ddl.ts +0 -24
  331. package/src/planner/building/declare-schema.ts +0 -22
  332. package/src/planner/building/delete.ts +0 -218
  333. package/src/planner/building/drop-assertion.ts +0 -11
  334. package/src/planner/building/drop-table.ts +0 -13
  335. package/src/planner/building/drop-view.ts +0 -19
  336. package/src/planner/building/expression.ts +0 -205
  337. package/src/planner/building/function-call.ts +0 -129
  338. package/src/planner/building/insert.ts +0 -435
  339. package/src/planner/building/pragma.ts +0 -34
  340. package/src/planner/building/schema-resolution.ts +0 -176
  341. package/src/planner/building/select-aggregates.ts +0 -318
  342. package/src/planner/building/select-compound.ts +0 -119
  343. package/src/planner/building/select-context.ts +0 -85
  344. package/src/planner/building/select-modifiers.ts +0 -236
  345. package/src/planner/building/select-projections.ts +0 -177
  346. package/src/planner/building/select-window.ts +0 -259
  347. package/src/planner/building/select.ts +0 -567
  348. package/src/planner/building/table-function.ts +0 -49
  349. package/src/planner/building/table.ts +0 -40
  350. package/src/planner/building/transaction.ts +0 -23
  351. package/src/planner/building/update.ts +0 -331
  352. package/src/planner/building/with.ts +0 -180
  353. package/src/planner/cache/correlation-detector.ts +0 -83
  354. package/src/planner/cache/materialization-advisory.ts +0 -265
  355. package/src/planner/cache/reference-graph.ts +0 -196
  356. package/src/planner/cost/index.ts +0 -169
  357. package/src/planner/debug/logger-utils.ts +0 -68
  358. package/src/planner/debug.ts +0 -480
  359. package/src/planner/framework/README.md +0 -132
  360. package/src/planner/framework/characteristics.ts +0 -503
  361. package/src/planner/framework/context.ts +0 -239
  362. package/src/planner/framework/pass.ts +0 -354
  363. package/src/planner/framework/physical-utils.ts +0 -210
  364. package/src/planner/framework/registry.ts +0 -261
  365. package/src/planner/framework/trace.ts +0 -259
  366. package/src/planner/nodes/add-constraint-node.ts +0 -62
  367. package/src/planner/nodes/aggregate-function.ts +0 -155
  368. package/src/planner/nodes/aggregate-node.ts +0 -267
  369. package/src/planner/nodes/array-index-node.ts +0 -50
  370. package/src/planner/nodes/block.ts +0 -80
  371. package/src/planner/nodes/cache-node.ts +0 -103
  372. package/src/planner/nodes/constraint-check-node.ts +0 -138
  373. package/src/planner/nodes/create-assertion-node.ts +0 -51
  374. package/src/planner/nodes/create-index-node.ts +0 -41
  375. package/src/planner/nodes/create-table-node.ts +0 -35
  376. package/src/planner/nodes/create-view-node.ts +0 -44
  377. package/src/planner/nodes/cte-node.ts +0 -168
  378. package/src/planner/nodes/cte-reference-node.ts +0 -125
  379. package/src/planner/nodes/declarative-schema.ts +0 -221
  380. package/src/planner/nodes/delete-node.ts +0 -102
  381. package/src/planner/nodes/distinct-node.ts +0 -107
  382. package/src/planner/nodes/dml-executor-node.ts +0 -104
  383. package/src/planner/nodes/drop-assertion-node.ts +0 -50
  384. package/src/planner/nodes/drop-table-node.ts +0 -36
  385. package/src/planner/nodes/drop-view-node.ts +0 -37
  386. package/src/planner/nodes/filter.ts +0 -144
  387. package/src/planner/nodes/function.ts +0 -98
  388. package/src/planner/nodes/insert-node.ts +0 -126
  389. package/src/planner/nodes/internal-recursive-cte-ref-node.ts +0 -61
  390. package/src/planner/nodes/join-node.ts +0 -336
  391. package/src/planner/nodes/limit-offset.ts +0 -144
  392. package/src/planner/nodes/plan-node-type.ts +0 -95
  393. package/src/planner/nodes/plan-node.ts +0 -503
  394. package/src/planner/nodes/pragma.ts +0 -98
  395. package/src/planner/nodes/project-node.ts +0 -337
  396. package/src/planner/nodes/recursive-cte-node.ts +0 -158
  397. package/src/planner/nodes/reference.ts +0 -334
  398. package/src/planner/nodes/remote-query-node.ts +0 -73
  399. package/src/planner/nodes/retrieve-node.ts +0 -86
  400. package/src/planner/nodes/returning-node.ts +0 -269
  401. package/src/planner/nodes/scalar.ts +0 -772
  402. package/src/planner/nodes/sequencing-node.ts +0 -113
  403. package/src/planner/nodes/set-operation-node.ts +0 -87
  404. package/src/planner/nodes/single-row.ts +0 -85
  405. package/src/planner/nodes/sink-node.ts +0 -61
  406. package/src/planner/nodes/sort.ts +0 -166
  407. package/src/planner/nodes/stream-aggregate.ts +0 -293
  408. package/src/planner/nodes/subquery.ts +0 -268
  409. package/src/planner/nodes/table-access-nodes.ts +0 -323
  410. package/src/planner/nodes/table-function-call.ts +0 -134
  411. package/src/planner/nodes/transaction-node.ts +0 -55
  412. package/src/planner/nodes/update-node.ts +0 -138
  413. package/src/planner/nodes/values-node.ts +0 -244
  414. package/src/planner/nodes/view-reference-node.ts +0 -97
  415. package/src/planner/nodes/window-function.ts +0 -73
  416. package/src/planner/nodes/window-node.ts +0 -199
  417. package/src/planner/optimizer-tuning.ts +0 -105
  418. package/src/planner/optimizer.ts +0 -332
  419. package/src/planner/planning-context.ts +0 -190
  420. package/src/planner/resolve.ts +0 -101
  421. package/src/planner/rules/README.md +0 -96
  422. package/src/planner/rules/access/rule-select-access-path.ts +0 -399
  423. package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +0 -162
  424. package/src/planner/rules/cache/rule-cte-optimization.ts +0 -79
  425. package/src/planner/rules/cache/rule-materialization-advisory.ts +0 -77
  426. package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +0 -104
  427. package/src/planner/rules/join/rule-join-greedy-commute.ts +0 -48
  428. package/src/planner/rules/join/rule-join-key-inference.ts +0 -35
  429. package/src/planner/rules/join/rule-quickpick-enumeration.ts +0 -267
  430. package/src/planner/rules/predicate/rule-predicate-pushdown.ts +0 -144
  431. package/src/planner/rules/retrieve/rule-grow-retrieve.ts +0 -337
  432. package/src/planner/scopes/aliased.ts +0 -50
  433. package/src/planner/scopes/base.ts +0 -10
  434. package/src/planner/scopes/empty.ts +0 -12
  435. package/src/planner/scopes/global.ts +0 -73
  436. package/src/planner/scopes/multi.ts +0 -40
  437. package/src/planner/scopes/param.ts +0 -95
  438. package/src/planner/scopes/registered.ts +0 -67
  439. package/src/planner/scopes/scope.ts +0 -16
  440. package/src/planner/stats/basic-estimates.ts +0 -107
  441. package/src/planner/stats/index.ts +0 -158
  442. package/src/planner/type-utils.ts +0 -87
  443. package/src/planner/util/key-utils.ts +0 -46
  444. package/src/planner/validation/determinism-validator.ts +0 -104
  445. package/src/planner/validation/plan-validator.ts +0 -335
  446. package/src/runtime/async-util.ts +0 -283
  447. package/src/runtime/cache/shared-cache.ts +0 -169
  448. package/src/runtime/context-helpers.ts +0 -191
  449. package/src/runtime/deferred-constraint-queue.ts +0 -196
  450. package/src/runtime/emission-context.ts +0 -319
  451. package/src/runtime/emit/add-constraint.ts +0 -78
  452. package/src/runtime/emit/aggregate.ts +0 -581
  453. package/src/runtime/emit/array-index.ts +0 -25
  454. package/src/runtime/emit/between.ts +0 -51
  455. package/src/runtime/emit/binary.ts +0 -357
  456. package/src/runtime/emit/block.ts +0 -23
  457. package/src/runtime/emit/cache.ts +0 -64
  458. package/src/runtime/emit/case.ts +0 -87
  459. package/src/runtime/emit/cast.ts +0 -151
  460. package/src/runtime/emit/collate.ts +0 -9
  461. package/src/runtime/emit/column-reference.ts +0 -17
  462. package/src/runtime/emit/constraint-check.ts +0 -290
  463. package/src/runtime/emit/create-assertion.ts +0 -82
  464. package/src/runtime/emit/create-index.ts +0 -15
  465. package/src/runtime/emit/create-table.ts +0 -15
  466. package/src/runtime/emit/create-view.ts +0 -52
  467. package/src/runtime/emit/cte-reference.ts +0 -38
  468. package/src/runtime/emit/cte.ts +0 -39
  469. package/src/runtime/emit/delete.ts +0 -24
  470. package/src/runtime/emit/distinct.ts +0 -40
  471. package/src/runtime/emit/dml-executor.ts +0 -198
  472. package/src/runtime/emit/drop-assertion.ts +0 -45
  473. package/src/runtime/emit/drop-table.ts +0 -27
  474. package/src/runtime/emit/drop-view.ts +0 -49
  475. package/src/runtime/emit/filter.ts +0 -30
  476. package/src/runtime/emit/insert.ts +0 -42
  477. package/src/runtime/emit/internal-recursive-cte-ref.ts +0 -37
  478. package/src/runtime/emit/join.ts +0 -148
  479. package/src/runtime/emit/limit-offset.ts +0 -73
  480. package/src/runtime/emit/literal.ts +0 -17
  481. package/src/runtime/emit/parameter.ts +0 -59
  482. package/src/runtime/emit/pragma.ts +0 -56
  483. package/src/runtime/emit/project.ts +0 -46
  484. package/src/runtime/emit/recursive-cte.ts +0 -111
  485. package/src/runtime/emit/remote-query.ts +0 -47
  486. package/src/runtime/emit/retrieve.ts +0 -15
  487. package/src/runtime/emit/returning.ts +0 -41
  488. package/src/runtime/emit/scalar-function.ts +0 -69
  489. package/src/runtime/emit/scan.ts +0 -106
  490. package/src/runtime/emit/schema-declarative.ts +0 -215
  491. package/src/runtime/emit/sequencing.ts +0 -24
  492. package/src/runtime/emit/set-operation.ts +0 -141
  493. package/src/runtime/emit/sink.ts +0 -27
  494. package/src/runtime/emit/sort.ts +0 -75
  495. package/src/runtime/emit/subquery.ts +0 -203
  496. package/src/runtime/emit/table-valued-function.ts +0 -106
  497. package/src/runtime/emit/temporal-arithmetic.ts +0 -302
  498. package/src/runtime/emit/transaction.ts +0 -205
  499. package/src/runtime/emit/unary.ts +0 -101
  500. package/src/runtime/emit/update.ts +0 -66
  501. package/src/runtime/emit/values.ts +0 -66
  502. package/src/runtime/emit/window-function.ts +0 -42
  503. package/src/runtime/emit/window.ts +0 -458
  504. package/src/runtime/emitters.ts +0 -183
  505. package/src/runtime/register.ts +0 -150
  506. package/src/runtime/scheduler.ts +0 -488
  507. package/src/runtime/types.ts +0 -242
  508. package/src/runtime/utils.ts +0 -177
  509. package/src/schema/assertion.ts +0 -21
  510. package/src/schema/catalog.ts +0 -269
  511. package/src/schema/change-events.ts +0 -80
  512. package/src/schema/column.ts +0 -51
  513. package/src/schema/declared-schema-manager.ts +0 -82
  514. package/src/schema/function.ts +0 -188
  515. package/src/schema/manager.ts +0 -1034
  516. package/src/schema/schema-differ.ts +0 -214
  517. package/src/schema/schema-hasher.ts +0 -26
  518. package/src/schema/schema.ts +0 -222
  519. package/src/schema/table.ts +0 -409
  520. package/src/schema/view.ts +0 -19
  521. package/src/schema/window-function.ts +0 -56
  522. package/src/types/builtin-types.ts +0 -350
  523. package/src/types/index.ts +0 -17
  524. package/src/types/json-type.ts +0 -152
  525. package/src/types/logical-type.ts +0 -91
  526. package/src/types/plugin-interface.ts +0 -10
  527. package/src/types/registry.ts +0 -204
  528. package/src/types/temporal-types.ts +0 -290
  529. package/src/types/validation.ts +0 -120
  530. package/src/util/affinity.ts +0 -151
  531. package/src/util/ast-stringify.ts +0 -887
  532. package/src/util/cached.ts +0 -25
  533. package/src/util/coercion.ts +0 -113
  534. package/src/util/comparison.ts +0 -510
  535. package/src/util/environment.ts +0 -52
  536. package/src/util/hash.ts +0 -90
  537. package/src/util/latches.ts +0 -47
  538. package/src/util/mutation-statement.ts +0 -135
  539. package/src/util/patterns.ts +0 -56
  540. package/src/util/plan-formatter.ts +0 -48
  541. package/src/util/plugin-helper.ts +0 -110
  542. package/src/util/row-descriptor.ts +0 -105
  543. package/src/util/serialization.ts +0 -47
  544. package/src/util/sql-literal.ts +0 -22
  545. package/src/util/working-table-iterable.ts +0 -38
  546. package/src/vtab/best-access-plan.ts +0 -244
  547. package/src/vtab/connection.ts +0 -36
  548. package/src/vtab/filter-info.ts +0 -23
  549. package/src/vtab/index-info.ts +0 -84
  550. package/src/vtab/manifest.ts +0 -86
  551. package/src/vtab/memory/connection.ts +0 -73
  552. package/src/vtab/memory/index.ts +0 -191
  553. package/src/vtab/memory/layer/base-cursor.ts +0 -124
  554. package/src/vtab/memory/layer/base.ts +0 -275
  555. package/src/vtab/memory/layer/connection.ts +0 -203
  556. package/src/vtab/memory/layer/interface.ts +0 -47
  557. package/src/vtab/memory/layer/manager.ts +0 -909
  558. package/src/vtab/memory/layer/safe-iterate.ts +0 -49
  559. package/src/vtab/memory/layer/scan-plan.ts +0 -84
  560. package/src/vtab/memory/layer/transaction-cursor.ts +0 -162
  561. package/src/vtab/memory/layer/transaction.ts +0 -229
  562. package/src/vtab/memory/module.ts +0 -667
  563. package/src/vtab/memory/table.ts +0 -251
  564. package/src/vtab/memory/types.ts +0 -23
  565. package/src/vtab/memory/utils/logging.ts +0 -36
  566. package/src/vtab/memory/utils/primary-key.ts +0 -163
  567. package/src/vtab/module.ts +0 -162
  568. 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
- }