@quereus/quereus 0.7.3 → 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,806 +0,0 @@
1
- export enum TokenType {
2
- // Literals
3
- INTEGER = 'INTEGER',
4
- FLOAT = 'FLOAT',
5
- STRING = 'STRING',
6
- IDENTIFIER = 'IDENTIFIER',
7
- BLOB = 'BLOB',
8
-
9
- // Keywords
10
- SELECT = 'SELECT',
11
- FROM = 'FROM',
12
- WHERE = 'WHERE',
13
- INSERT = 'INSERT',
14
- UPDATE = 'UPDATE',
15
- DELETE = 'DELETE',
16
- CREATE = 'CREATE',
17
- DROP = 'DROP',
18
- ALTER = 'ALTER',
19
- TABLE = 'TABLE',
20
- INDEX = 'INDEX',
21
- VIEW = 'VIEW',
22
- ASSERTION = 'ASSERTION',
23
- TEMP = 'TEMP',
24
- TEMPORARY = 'TEMPORARY',
25
- VIRTUAL = 'VIRTUAL',
26
- USING = 'USING',
27
- INTO = 'INTO',
28
- NULL = 'NULL',
29
- TRUE = 'TRUE',
30
- FALSE = 'FALSE',
31
- NOT = 'NOT',
32
- AND = 'AND',
33
- OR = 'OR',
34
- IN = 'IN',
35
- LIKE = 'LIKE',
36
- BETWEEN = 'BETWEEN',
37
- IS = 'IS',
38
- AS = 'AS',
39
- DISTINCT = 'DISTINCT',
40
- GROUP = 'GROUP',
41
- BY = 'BY',
42
- HAVING = 'HAVING',
43
- ORDER = 'ORDER',
44
- ASC = 'ASC',
45
- DESC = 'DESC',
46
- LIMIT = 'LIMIT',
47
- OFFSET = 'OFFSET',
48
- UNION = 'UNION',
49
- INTERSECT = 'INTERSECT',
50
- EXCEPT = 'EXCEPT',
51
- DIFF = 'DIFF',
52
- ALL = 'ALL',
53
- PRIMARY = 'PRIMARY',
54
- CONSTRAINT = 'CONSTRAINT',
55
- GENERATED = 'GENERATED',
56
- COLLATE = 'COLLATE',
57
- KEY = 'KEY',
58
- UNIQUE = 'UNIQUE',
59
- DEFAULT = 'DEFAULT',
60
- CHECK = 'CHECK',
61
- FOREIGN = 'FOREIGN',
62
- REFERENCES = 'REFERENCES',
63
- AUTOINCREMENT = 'AUTOINCREMENT',
64
- ON = 'ON',
65
- CONFLICT = 'CONFLICT',
66
- CASCADE = 'CASCADE',
67
- RESTRICT = 'RESTRICT',
68
- SET = 'SET',
69
- NO = 'NO',
70
- ACTION = 'ACTION',
71
- RENAME = 'RENAME',
72
- COLUMN = 'COLUMN',
73
- TO = 'TO',
74
- ADD = 'ADD',
75
- ALWAYS = 'ALWAYS',
76
- ABORT = 'ABORT',
77
- FAIL = 'FAIL',
78
- IGNORE = 'IGNORE',
79
- BEGIN = 'BEGIN',
80
- COMMIT = 'COMMIT',
81
- ROLLBACK = 'ROLLBACK',
82
- TRANSACTION = 'TRANSACTION',
83
- DEFERRED = 'DEFERRED',
84
- IMMEDIATE = 'IMMEDIATE',
85
- JOIN = 'JOIN',
86
- INNER = 'INNER',
87
- LEFT = 'LEFT',
88
- RIGHT = 'RIGHT',
89
- FULL = 'FULL',
90
- CROSS = 'CROSS',
91
- OUTER = 'OUTER',
92
- NATURAL = 'NATURAL',
93
- REPLACE = 'REPLACE',
94
- VALUES = 'VALUES',
95
- EXISTS = 'EXISTS',
96
- IF = 'IF',
97
- DEFERRABLE = 'DEFERRABLE',
98
- INITIALLY = 'INITIALLY',
99
- STORED = 'STORED',
100
- RETURNING = 'RETURNING',
101
- SAVEPOINT = 'SAVEPOINT',
102
- RELEASE = 'RELEASE',
103
- PRAGMA = 'PRAGMA',
104
- WITH = 'WITH',
105
- RECURSIVE = 'RECURSIVE',
106
- XOR = 'XOR',
107
- CASE = 'CASE',
108
- WHEN = 'WHEN',
109
- THEN = 'THEN',
110
- ELSE = 'ELSE',
111
- END = 'END',
112
- CAST = 'CAST',
113
- OVER = 'OVER',
114
- PARTITION = 'PARTITION',
115
- LATERAL = 'LATERAL',
116
- ROW = 'ROW',
117
- ROWS = 'ROWS',
118
- RANGE = 'RANGE',
119
- UNBOUNDED = 'UNBOUNDED',
120
- PRECEDING = 'PRECEDING',
121
- FOLLOWING = 'FOLLOWING',
122
- CURRENT = 'CURRENT',
123
-
124
- // Declarative schema
125
- DECLARE = 'DECLARE',
126
- SCHEMA = 'SCHEMA',
127
- APPLY = 'APPLY',
128
- EXPLAIN = 'EXPLAIN',
129
- VERSION = 'VERSION',
130
- SEED = 'SEED',
131
-
132
- // Operators and punctuation
133
- PLUS = 'PLUS', // +
134
- MINUS = 'MINUS', // -
135
- ASTERISK = 'ASTERISK', // *
136
- SLASH = 'SLASH', // /
137
- PERCENT = 'PERCENT', // %
138
- EQUAL = 'EQUAL', // =
139
- EQUAL_EQUAL = 'EQUAL_EQUAL', // == (SQLite allows both = and ==)
140
- NOT_EQUAL = 'NOT_EQUAL', // != or <>
141
- LESS = 'LESS', // <
142
- LESS_EQUAL = 'LESS_EQUAL', // <=
143
- GREATER = 'GREATER', // >
144
- GREATER_EQUAL = 'GREATER_EQUAL', // >=
145
- LPAREN = 'LPAREN', // (
146
- RPAREN = 'RPAREN', // )
147
- COMMA = 'COMMA', // ,
148
- DOT = 'DOT', // .
149
- SEMICOLON = 'SEMICOLON', // ;
150
- TILDE = 'TILDE', // ~ (for REGEXP)
151
- PIPE = 'PIPE', // | (for concatenation or UNION)
152
- PIPE_PIPE = 'PIPE_PIPE', // || (for concatenation)
153
- AMPERSAND = 'AMPERSAND', // &
154
- AMPERSAND_AMPERSAND = 'AMPERSAND_AMPERSAND', // &&
155
- QUESTION = 'QUESTION', // ? (for parameters)
156
- COLON = 'COLON', // : (for named parameters)
157
- DOLLAR = 'DOLLAR', // $ (for named parameters)
158
- ARROW = 'ARROW', // -> (JSON operator)
159
- LBRACE = 'LBRACE', // {
160
- RBRACE = 'RBRACE', // }
161
-
162
- // Special
163
- EOF = 'EOF',
164
- ERROR = 'ERROR'
165
- }
166
-
167
- // Token represents a lexical token from the SQL input
168
- export interface Token {
169
- type: TokenType;
170
- lexeme: string;
171
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
172
- literal?: any;
173
- startLine: number;
174
- startColumn: number;
175
- startOffset: number;
176
- endLine: number;
177
- endColumn: number;
178
- endOffset: number;
179
- }
180
-
181
- // Reserved keywords mapping
182
- export const KEYWORDS: Record<string, TokenType> = {
183
- 'select': TokenType.SELECT,
184
- 'from': TokenType.FROM,
185
- 'where': TokenType.WHERE,
186
- 'insert': TokenType.INSERT,
187
- 'update': TokenType.UPDATE,
188
- 'delete': TokenType.DELETE,
189
- 'create': TokenType.CREATE,
190
- 'drop': TokenType.DROP,
191
- 'alter': TokenType.ALTER,
192
- 'table': TokenType.TABLE,
193
- 'index': TokenType.INDEX,
194
- 'view': TokenType.VIEW,
195
- 'assertion': TokenType.ASSERTION,
196
- 'virtual': TokenType.VIRTUAL,
197
- 'using': TokenType.USING,
198
- 'null': TokenType.NULL,
199
- 'true': TokenType.TRUE,
200
- 'false': TokenType.FALSE,
201
- 'not': TokenType.NOT,
202
- 'and': TokenType.AND,
203
- 'or': TokenType.OR,
204
- 'in': TokenType.IN,
205
- 'like': TokenType.LIKE,
206
- 'between': TokenType.BETWEEN,
207
- 'is': TokenType.IS,
208
- 'as': TokenType.AS,
209
- 'distinct': TokenType.DISTINCT,
210
- 'group': TokenType.GROUP,
211
- 'by': TokenType.BY,
212
- 'having': TokenType.HAVING,
213
- 'order': TokenType.ORDER,
214
- 'asc': TokenType.ASC,
215
- 'desc': TokenType.DESC,
216
- 'limit': TokenType.LIMIT,
217
- 'offset': TokenType.OFFSET,
218
- 'union': TokenType.UNION,
219
- 'diff': TokenType.DIFF,
220
- 'all': TokenType.ALL,
221
- 'primary': TokenType.PRIMARY,
222
- 'constraint': TokenType.CONSTRAINT,
223
- 'key': TokenType.KEY,
224
- 'unique': TokenType.UNIQUE,
225
- 'default': TokenType.DEFAULT,
226
- 'check': TokenType.CHECK,
227
- 'collate': TokenType.COLLATE,
228
- 'foreign': TokenType.FOREIGN,
229
- 'references': TokenType.REFERENCES,
230
- 'on': TokenType.ON,
231
- 'conflict': TokenType.CONFLICT,
232
- 'cascade': TokenType.CASCADE,
233
- 'restrict': TokenType.RESTRICT,
234
- 'set': TokenType.SET,
235
- 'autoincrement': TokenType.AUTOINCREMENT,
236
- 'no': TokenType.NO,
237
- 'action': TokenType.ACTION,
238
- 'begin': TokenType.BEGIN,
239
- 'commit': TokenType.COMMIT,
240
- 'rollback': TokenType.ROLLBACK,
241
- 'transaction': TokenType.TRANSACTION,
242
- 'deferred': TokenType.DEFERRED,
243
- 'immediate': TokenType.IMMEDIATE,
244
- 'deferrable': TokenType.DEFERRABLE,
245
- 'initially': TokenType.INITIALLY,
246
- 'stored': TokenType.STORED,
247
- 'returning': TokenType.RETURNING,
248
- 'join': TokenType.JOIN,
249
- 'inner': TokenType.INNER,
250
- 'left': TokenType.LEFT,
251
- 'right': TokenType.RIGHT,
252
- 'full': TokenType.FULL,
253
- 'cross': TokenType.CROSS,
254
- 'outer': TokenType.OUTER,
255
- 'natural': TokenType.NATURAL,
256
- 'replace': TokenType.REPLACE,
257
- 'values': TokenType.VALUES,
258
- 'exists': TokenType.EXISTS,
259
- 'if': TokenType.IF,
260
- 'into': TokenType.INTO,
261
- 'temp': TokenType.TEMP,
262
- 'temporary': TokenType.TEMPORARY,
263
- 'rename': TokenType.RENAME,
264
- 'to': TokenType.TO,
265
- 'add': TokenType.ADD,
266
- 'always': TokenType.ALWAYS,
267
- 'abort': TokenType.ABORT,
268
- 'fail': TokenType.FAIL,
269
- 'ignore': TokenType.IGNORE,
270
- 'savepoint': TokenType.SAVEPOINT,
271
- 'release': TokenType.RELEASE,
272
- 'pragma': TokenType.PRAGMA,
273
- 'with': TokenType.WITH,
274
- 'recursive': TokenType.RECURSIVE,
275
- 'xor': TokenType.XOR,
276
- 'case': TokenType.CASE,
277
- 'when': TokenType.WHEN,
278
- 'then': TokenType.THEN,
279
- 'else': TokenType.ELSE,
280
- 'end': TokenType.END,
281
- 'cast': TokenType.CAST,
282
- 'over': TokenType.OVER,
283
- 'partition': TokenType.PARTITION,
284
- 'lateral': TokenType.LATERAL,
285
- 'row': TokenType.ROW,
286
- 'rows': TokenType.ROWS,
287
- 'range': TokenType.RANGE,
288
- 'unbounded': TokenType.UNBOUNDED,
289
- 'preceding': TokenType.PRECEDING,
290
- 'following': TokenType.FOLLOWING,
291
- 'current': TokenType.CURRENT,
292
- 'intersect': TokenType.INTERSECT,
293
- 'except': TokenType.EXCEPT,
294
- 'declare': TokenType.DECLARE,
295
- // Note: schema, version, seed deliberately NOT reserved here - treated as contextual keywords
296
- // to avoid breaking schema() function calls and column names like 'version', 'seed'
297
- 'apply': TokenType.APPLY,
298
- 'explain': TokenType.EXPLAIN,
299
- };
300
-
301
- /**
302
- * Lexer class for tokenizing SQL statements
303
- */
304
- export class Lexer {
305
- private source: string;
306
- private tokens: Token[] = [];
307
- private start = 0;
308
- private current = 0;
309
- private line = 1;
310
- private column = 1;
311
- private startLine = 1;
312
- private startColumn = 1;
313
-
314
- constructor(source: string) {
315
- this.source = source;
316
- }
317
-
318
- /**
319
- * Scans the input and returns all tokens.
320
- */
321
- scanTokens(): Token[] {
322
- while (!this.isAtEnd()) {
323
- this.start = this.current;
324
- this.startLine = this.line;
325
- this.startColumn = this.column;
326
- this.scanToken();
327
- }
328
-
329
- this.tokens.push({
330
- type: TokenType.EOF,
331
- lexeme: '',
332
- startLine: this.line,
333
- startColumn: this.column,
334
- startOffset: this.source.length,
335
- endLine: this.line,
336
- endColumn: this.column,
337
- endOffset: this.source.length,
338
- });
339
-
340
- return this.tokens;
341
- }
342
-
343
- private isAtEnd(): boolean {
344
- return this.current >= this.source.length;
345
- }
346
-
347
- private scanToken(): void {
348
- const c = this.advance();
349
-
350
- switch (c) {
351
- // Single-character tokens
352
- case '(': this.addToken(TokenType.LPAREN); break;
353
- case ')': this.addToken(TokenType.RPAREN); break;
354
- case '{': this.addToken(TokenType.LBRACE); break;
355
- case '}': this.addToken(TokenType.RBRACE); break;
356
- case ',': this.addToken(TokenType.COMMA); break;
357
- case '.': this.addToken(TokenType.DOT); break;
358
- case ';': this.addToken(TokenType.SEMICOLON); break;
359
- case '+': this.addToken(TokenType.PLUS); break;
360
- case '-':
361
- if (this.match('-')) {
362
- // SQL-style line comment
363
- while (this.peek() !== '\n' && !this.isAtEnd()) {
364
- this.advance();
365
- }
366
- } else if (this.match('>')) {
367
- this.addToken(TokenType.ARROW);
368
- } else {
369
- this.addToken(TokenType.MINUS);
370
- }
371
- break;
372
- case '*': this.addToken(TokenType.ASTERISK); break;
373
- case '/':
374
- if (this.match('/')) {
375
- // Single line comment
376
- while (this.peek() !== '\n' && !this.isAtEnd()) {
377
- this.advance();
378
- }
379
- } else if (this.match('*')) {
380
- // Multiline comment
381
- this.multilineComment();
382
- } else {
383
- this.addToken(TokenType.SLASH);
384
- }
385
- break;
386
- case '%': this.addToken(TokenType.PERCENT); break;
387
- case '~': this.addToken(TokenType.TILDE); break;
388
- case '?': this.addToken(TokenType.QUESTION); break;
389
- case ':': this.addToken(TokenType.COLON); break;
390
- case '$': this.addToken(TokenType.DOLLAR); break;
391
-
392
- // One or two character tokens
393
- case '=':
394
- this.addToken(this.match('=') ? TokenType.EQUAL_EQUAL : TokenType.EQUAL);
395
- break;
396
- case '!':
397
- this.addToken(this.match('=') ? TokenType.NOT_EQUAL : TokenType.ERROR);
398
- break;
399
- case '<':
400
- if (this.match('=')) {
401
- this.addToken(TokenType.LESS_EQUAL);
402
- } else if (this.match('>')) {
403
- this.addToken(TokenType.NOT_EQUAL);
404
- } else {
405
- this.addToken(TokenType.LESS);
406
- }
407
- break;
408
- case '>':
409
- this.addToken(this.match('=') ? TokenType.GREATER_EQUAL : TokenType.GREATER);
410
- break;
411
- case '|':
412
- this.addToken(this.match('|') ? TokenType.PIPE_PIPE : TokenType.PIPE);
413
- break;
414
- case '&':
415
- this.addToken(this.match('&') ? TokenType.AMPERSAND_AMPERSAND : TokenType.AMPERSAND);
416
- break;
417
-
418
- // String literals
419
- case '\'': this.string('\''); break;
420
- // Double-quoted strings are identifiers in SQL standard and SQLite
421
- case '"': this.doubleQuotedIdentifier(); break;
422
- case '`': this.backtickIdentifier(); break;
423
- case '[': this.bracketIdentifier(); break;
424
-
425
- // Blob literals
426
- case 'x':
427
- case 'X':
428
- if (this.match('\'')) {
429
- this.blobLiteral();
430
- } else {
431
- this.identifier();
432
- }
433
- break;
434
-
435
- // Whitespace
436
- case ' ':
437
- case '\r':
438
- case '\t':
439
- // Ignore whitespace
440
- break;
441
- case '\n':
442
- // Newline handling already done in advance()
443
- break;
444
-
445
- // Default - handle identifiers and numbers
446
- default:
447
- if (this.isDigit(c)) {
448
- this.number();
449
- } else if (this.isAlpha(c)) {
450
- this.identifier();
451
- } else {
452
- this.addErrorToken(`Unexpected character: ${c}`);
453
- }
454
- break;
455
- }
456
- }
457
-
458
- private advance(): string {
459
- const char = this.source.charAt(this.current);
460
- this.current++;
461
- if (char === '\n') {
462
- this.line++;
463
- this.column = 1;
464
- } else {
465
- this.column++;
466
- }
467
- return char;
468
- }
469
-
470
- private match(expected: string): boolean {
471
- if (this.isAtEnd()) return false;
472
- if (this.source.charAt(this.current) !== expected) return false;
473
-
474
- this.current++;
475
- this.column++;
476
- return true;
477
- }
478
-
479
- private peek(): string {
480
- if (this.isAtEnd()) return '\0';
481
- return this.source.charAt(this.current);
482
- }
483
-
484
- private peekNext(): string {
485
- if (this.current + 1 >= this.source.length) return '\0';
486
- return this.source.charAt(this.current + 1);
487
- }
488
-
489
- private string(quote: string): void {
490
- let value = '';
491
- let escaping = false;
492
-
493
- while ((!this.isAtEnd() && this.peek() !== quote) || escaping) {
494
- if (escaping) {
495
- // Handle escape sequences
496
- const c = this.peek();
497
- switch (c) {
498
- case 'n': value += '\n'; break;
499
- case 'r': value += '\r'; break;
500
- case 't': value += '\t'; break;
501
- case '\\': value += '\\'; break;
502
- case '\'': value += '\''; break;
503
- case '"': value += '"'; break;
504
- case '0': value += '\0'; break;
505
- default: value += c; break;
506
- }
507
- escaping = false;
508
- } else if (this.peek() === '\\') {
509
- escaping = true;
510
- } else {
511
- value += this.peek();
512
- }
513
-
514
- this.advance();
515
- }
516
-
517
- if (this.isAtEnd()) {
518
- this.addErrorToken("Unterminated string.");
519
- return;
520
- }
521
-
522
- // Consume the closing quote
523
- this.advance();
524
-
525
- // SQLite allows adjacent string literals to be concatenated
526
- if (this.peek() === quote) {
527
- this.advance(); // Consume the opening quote of the next string
528
- this.string(quote); // Process the next string
529
- // Merge the two string tokens
530
- if (this.tokens.length > 0 && this.tokens[this.tokens.length - 1].type === TokenType.STRING) {
531
- const prevToken = this.tokens.pop()!;
532
- value += prevToken.literal;
533
- }
534
- }
535
-
536
- this.addToken(TokenType.STRING, value);
537
- }
538
-
539
- private backtickIdentifier(): void {
540
- let value = '';
541
-
542
- while (!this.isAtEnd() && this.peek() !== '`') {
543
- value += this.advance();
544
- }
545
-
546
- if (this.isAtEnd()) {
547
- this.addErrorToken("Unterminated identifier.");
548
- return;
549
- }
550
-
551
- // Consume the closing backtick
552
- this.advance();
553
-
554
- this.addToken(TokenType.IDENTIFIER, value);
555
- }
556
-
557
- /**
558
- * Parse double-quoted identifiers.
559
- * In SQL standard and SQLite, double quotes delimit identifiers (not strings).
560
- * Supports "" escape for embedded double quotes.
561
- */
562
- private doubleQuotedIdentifier(): void {
563
- let value = '';
564
-
565
- while (!this.isAtEnd()) {
566
- if (this.peek() === '"') {
567
- // Check for escaped double quote ("")
568
- if (this.peekNext() === '"') {
569
- value += '"';
570
- this.advance(); // First "
571
- this.advance(); // Second "
572
- } else {
573
- break; // End of identifier
574
- }
575
- } else {
576
- value += this.advance();
577
- }
578
- }
579
-
580
- if (this.isAtEnd()) {
581
- this.addErrorToken("Unterminated identifier.");
582
- return;
583
- }
584
-
585
- // Consume the closing double quote
586
- this.advance();
587
-
588
- this.addToken(TokenType.IDENTIFIER, value);
589
- }
590
-
591
- private bracketIdentifier(): void {
592
- let value = '';
593
-
594
- while (!this.isAtEnd() && this.peek() !== ']') {
595
- value += this.advance();
596
- }
597
-
598
- if (this.isAtEnd()) {
599
- this.addErrorToken("Unterminated identifier.");
600
- return;
601
- }
602
-
603
- // Consume the closing bracket
604
- this.advance();
605
-
606
- this.addToken(TokenType.IDENTIFIER, value);
607
- }
608
-
609
- private blobLiteral(): void {
610
- let value = '';
611
-
612
- while (!this.isAtEnd() && this.peek() !== '\'') {
613
- if (this.isHexDigit(this.peek())) {
614
- value += this.advance();
615
- } else if (this.isWhitespace(this.peek())) {
616
- this.advance(); // Skip whitespace in blob literals
617
- } else {
618
- this.addErrorToken("Invalid character in blob literal.");
619
- return;
620
- }
621
- }
622
-
623
- if (this.isAtEnd()) {
624
- this.addErrorToken("Unterminated blob literal.");
625
- return;
626
- }
627
-
628
- // Consume the closing quote
629
- this.advance();
630
-
631
- // Validate hex string length
632
- if (value.length % 2 !== 0) {
633
- this.addErrorToken("Blob literal must have an even number of hex digits.");
634
- return;
635
- }
636
-
637
- // Convert hex string to Uint8Array
638
- try {
639
- const bytes = new Uint8Array(value.length / 2);
640
- for (let i = 0; i < value.length; i += 2) {
641
- bytes[i / 2] = parseInt(value.substring(i, i + 2), 16);
642
- }
643
- this.addToken(TokenType.BLOB, bytes);
644
- } catch {
645
- this.addErrorToken("Invalid blob literal.");
646
- }
647
- }
648
-
649
- private number(): void {
650
- let isFloat = false;
651
- // Capture original lexeme starting from the first digit
652
- const start = this.start; // Use the start offset saved before scanToken called number()
653
-
654
- // Consume digits before decimal point
655
- while (this.isDigit(this.peek())) {
656
- this.advance();
657
- }
658
-
659
- // Check for decimal point
660
- if (this.peek() === '.' && this.isDigit(this.peekNext())) {
661
- isFloat = true;
662
- this.advance(); // Consume the '.'
663
-
664
- // Consume digits after decimal point
665
- while (this.isDigit(this.peek())) {
666
- this.advance();
667
- }
668
- }
669
-
670
- // Check for exponent part
671
- if (this.peek().toLowerCase() === 'e') {
672
- isFloat = true;
673
- this.advance(); // Consume the 'e' or 'E'
674
-
675
- // Optional sign
676
- if (this.peek() === '+' || this.peek() === '-') {
677
- this.advance();
678
- }
679
-
680
- // Exponent digits
681
- if (!this.isDigit(this.peek())) {
682
- this.addErrorToken("Invalid number literal: expected digits after exponent.");
683
- return;
684
- }
685
-
686
- while (this.isDigit(this.peek())) {
687
- this.advance();
688
- }
689
- }
690
-
691
- const lexeme = this.source.substring(start, this.current);
692
-
693
- if (isFloat) {
694
- // Store original string as literal for FLOAT
695
- this.addToken(TokenType.FLOAT, lexeme);
696
- } else {
697
- // For integers, parse now to handle potential BigInt
698
- try {
699
- const num = parseInt(lexeme, 10);
700
- if (!Number.isSafeInteger(num)) {
701
- try {
702
- this.addToken(TokenType.INTEGER, BigInt(lexeme));
703
- } catch {
704
- this.addErrorToken("Integer literal too large.");
705
- }
706
- } else {
707
- this.addToken(TokenType.INTEGER, num);
708
- }
709
- } catch {
710
- try {
711
- this.addToken(TokenType.INTEGER, BigInt(lexeme));
712
- } catch {
713
- this.addErrorToken("Invalid integer literal.");
714
- }
715
- }
716
- }
717
- }
718
-
719
- private identifier(): void {
720
- while (this.isAlphaNumeric(this.peek())) {
721
- this.advance();
722
- }
723
-
724
- // Check if the identifier is a keyword
725
- const text = this.source.substring(this.start, this.current).toLowerCase();
726
- const type = KEYWORDS[text] || TokenType.IDENTIFIER;
727
-
728
- this.addToken(type);
729
- }
730
-
731
- private multilineComment(): void {
732
- let nesting = 1; // Support nested comments
733
-
734
- while (nesting > 0 && !this.isAtEnd()) {
735
- if (this.peek() === '/' && this.peekNext() === '*') {
736
- this.advance(); // Consume '/'
737
- this.advance(); // Consume '*'
738
- nesting++;
739
- } else if (this.peek() === '*' && this.peekNext() === '/') {
740
- this.advance(); // Consume '*'
741
- this.advance(); // Consume '/'
742
- nesting--;
743
- } else {
744
- // Advance one character and let advance() maintain line/column
745
- this.advance();
746
- }
747
- }
748
-
749
- if (nesting > 0) {
750
- this.addErrorToken("Unterminated comment.");
751
- }
752
- }
753
-
754
- private isDigit(c: string): boolean {
755
- return c >= '0' && c <= '9';
756
- }
757
-
758
- private isHexDigit(c: string): boolean {
759
- return (c >= '0' && c <= '9') ||
760
- (c >= 'a' && c <= 'f') ||
761
- (c >= 'A' && c <= 'F');
762
- }
763
-
764
- private isAlpha(c: string): boolean {
765
- return (c >= 'a' && c <= 'z') ||
766
- (c >= 'A' && c <= 'Z') ||
767
- c === '_';
768
- }
769
-
770
- private isAlphaNumeric(c: string): boolean {
771
- return this.isAlpha(c) || this.isDigit(c);
772
- }
773
-
774
- private isWhitespace(c: string): boolean {
775
- return c === ' ' || c === '\r' || c === '\n' || c === '\t';
776
- }
777
-
778
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
779
- private addToken(type: TokenType, literal?: any): void {
780
- const lexeme = this.source.substring(this.start, this.current);
781
- this.tokens.push({
782
- type,
783
- lexeme, // Ensure lexeme is always the original string
784
- literal,
785
- startLine: this.startLine,
786
- startColumn: this.startColumn,
787
- startOffset: this.start,
788
- endLine: this.line,
789
- endColumn: this.column -1,
790
- endOffset: this.current,
791
- });
792
- }
793
-
794
- private addErrorToken(message: string): void {
795
- this.tokens.push({
796
- type: TokenType.ERROR,
797
- lexeme: message,
798
- startLine: this.line,
799
- startColumn: this.column -1,
800
- startOffset: this.current -1,
801
- endLine: this.line,
802
- endColumn: this.column -1,
803
- endOffset: this.current,
804
- });
805
- }
806
- }