@quereus/quereus 4.5.0 → 4.7.0

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 (818) hide show
  1. package/README.md +5 -4
  2. package/dist/src/common/errors.d.ts +17 -0
  3. package/dist/src/common/errors.d.ts.map +1 -1
  4. package/dist/src/common/errors.js +21 -0
  5. package/dist/src/common/errors.js.map +1 -1
  6. package/dist/src/core/database-assertions.d.ts +4 -3
  7. package/dist/src/core/database-assertions.d.ts.map +1 -1
  8. package/dist/src/core/database-assertions.js +44 -14
  9. package/dist/src/core/database-assertions.js.map +1 -1
  10. package/dist/src/core/database-events.d.ts +161 -1
  11. package/dist/src/core/database-events.d.ts.map +1 -1
  12. package/dist/src/core/database-events.js +307 -5
  13. package/dist/src/core/database-events.js.map +1 -1
  14. package/dist/src/core/database-internal.d.ts +5 -2
  15. package/dist/src/core/database-internal.d.ts.map +1 -1
  16. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
  17. package/dist/src/core/database-materialized-views-plan-builders.js +33 -4
  18. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  19. package/dist/src/core/database-materialized-views-plans.d.ts +12 -2
  20. package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -1
  21. package/dist/src/core/database-materialized-views.d.ts +46 -0
  22. package/dist/src/core/database-materialized-views.d.ts.map +1 -1
  23. package/dist/src/core/database-materialized-views.js +75 -4
  24. package/dist/src/core/database-materialized-views.js.map +1 -1
  25. package/dist/src/core/database-transaction.d.ts +9 -0
  26. package/dist/src/core/database-transaction.d.ts.map +1 -1
  27. package/dist/src/core/database-transaction.js +9 -0
  28. package/dist/src/core/database-transaction.js.map +1 -1
  29. package/dist/src/core/database.d.ts +16 -2
  30. package/dist/src/core/database.d.ts.map +1 -1
  31. package/dist/src/core/database.js +56 -15
  32. package/dist/src/core/database.js.map +1 -1
  33. package/dist/src/core/derived-row-validator.d.ts.map +1 -1
  34. package/dist/src/core/derived-row-validator.js +7 -1
  35. package/dist/src/core/derived-row-validator.js.map +1 -1
  36. package/dist/src/core/statement.d.ts.map +1 -1
  37. package/dist/src/core/statement.js +15 -5
  38. package/dist/src/core/statement.js.map +1 -1
  39. package/dist/src/emit/ast-stringify.d.ts +18 -2
  40. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  41. package/dist/src/emit/ast-stringify.js +22 -4
  42. package/dist/src/emit/ast-stringify.js.map +1 -1
  43. package/dist/src/func/builtins/aggregate.js +11 -11
  44. package/dist/src/func/builtins/aggregate.js.map +1 -1
  45. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  46. package/dist/src/func/builtins/builtin-window-functions.js +15 -85
  47. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  48. package/dist/src/func/builtins/conversion.d.ts.map +1 -1
  49. package/dist/src/func/builtins/conversion.js +10 -9
  50. package/dist/src/func/builtins/conversion.js.map +1 -1
  51. package/dist/src/func/builtins/datetime.d.ts.map +1 -1
  52. package/dist/src/func/builtins/datetime.js +28 -10
  53. package/dist/src/func/builtins/datetime.js.map +1 -1
  54. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  55. package/dist/src/func/builtins/explain.js +19 -5
  56. package/dist/src/func/builtins/explain.js.map +1 -1
  57. package/dist/src/func/builtins/json.d.ts.map +1 -1
  58. package/dist/src/func/builtins/json.js +23 -17
  59. package/dist/src/func/builtins/json.js.map +1 -1
  60. package/dist/src/func/builtins/mutation.js +2 -2
  61. package/dist/src/func/builtins/mutation.js.map +1 -1
  62. package/dist/src/func/builtins/return-types.d.ts +327 -0
  63. package/dist/src/func/builtins/return-types.d.ts.map +1 -0
  64. package/dist/src/func/builtins/return-types.js +43 -0
  65. package/dist/src/func/builtins/return-types.js.map +1 -0
  66. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  67. package/dist/src/func/builtins/scalar.js +150 -79
  68. package/dist/src/func/builtins/scalar.js.map +1 -1
  69. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  70. package/dist/src/func/builtins/schema.js +43 -8
  71. package/dist/src/func/builtins/schema.js.map +1 -1
  72. package/dist/src/func/builtins/string.d.ts.map +1 -1
  73. package/dist/src/func/builtins/string.js +4 -2
  74. package/dist/src/func/builtins/string.js.map +1 -1
  75. package/dist/src/func/builtins/timespan.d.ts +3 -0
  76. package/dist/src/func/builtins/timespan.d.ts.map +1 -1
  77. package/dist/src/func/builtins/timespan.js +15 -11
  78. package/dist/src/func/builtins/timespan.js.map +1 -1
  79. package/dist/src/func/registration.d.ts +35 -1
  80. package/dist/src/func/registration.d.ts.map +1 -1
  81. package/dist/src/func/registration.js +235 -41
  82. package/dist/src/func/registration.js.map +1 -1
  83. package/dist/src/index.d.ts +14 -7
  84. package/dist/src/index.d.ts.map +1 -1
  85. package/dist/src/index.js +15 -6
  86. package/dist/src/index.js.map +1 -1
  87. package/dist/src/parser/ast.d.ts +58 -1
  88. package/dist/src/parser/ast.d.ts.map +1 -1
  89. package/dist/src/parser/parser.d.ts +46 -0
  90. package/dist/src/parser/parser.d.ts.map +1 -1
  91. package/dist/src/parser/parser.js +161 -45
  92. package/dist/src/parser/parser.js.map +1 -1
  93. package/dist/src/parser/utils.d.ts +13 -1
  94. package/dist/src/parser/utils.d.ts.map +1 -1
  95. package/dist/src/parser/utils.js +14 -0
  96. package/dist/src/parser/utils.js.map +1 -1
  97. package/dist/src/planner/analysis/assertion-classifier.d.ts.map +1 -1
  98. package/dist/src/planner/analysis/assertion-classifier.js +7 -2
  99. package/dist/src/planner/analysis/assertion-classifier.js.map +1 -1
  100. package/dist/src/planner/analysis/assertion-hoist-cache.d.ts.map +1 -1
  101. package/dist/src/planner/analysis/assertion-hoist-cache.js +5 -0
  102. package/dist/src/planner/analysis/assertion-hoist-cache.js.map +1 -1
  103. package/dist/src/planner/analysis/change-scope.d.ts +11 -3
  104. package/dist/src/planner/analysis/change-scope.d.ts.map +1 -1
  105. package/dist/src/planner/analysis/change-scope.js +5 -4
  106. package/dist/src/planner/analysis/change-scope.js.map +1 -1
  107. package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
  108. package/dist/src/planner/analysis/check-extraction.js +37 -4
  109. package/dist/src/planner/analysis/check-extraction.js.map +1 -1
  110. package/dist/src/planner/analysis/comparison-collation.d.ts +20 -22
  111. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  112. package/dist/src/planner/analysis/comparison-collation.js +29 -26
  113. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  114. package/dist/src/planner/analysis/constraint-extractor.d.ts +0 -7
  115. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  116. package/dist/src/planner/analysis/constraint-extractor.js +59 -59
  117. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  118. package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -1
  119. package/dist/src/planner/analysis/coverage-prover.js +13 -5
  120. package/dist/src/planner/analysis/coverage-prover.js.map +1 -1
  121. package/dist/src/planner/analysis/equi-correlation.d.ts +6 -1
  122. package/dist/src/planner/analysis/equi-correlation.d.ts.map +1 -1
  123. package/dist/src/planner/analysis/equi-correlation.js +8 -1
  124. package/dist/src/planner/analysis/equi-correlation.js.map +1 -1
  125. package/dist/src/planner/analysis/predicate-dependencies.d.ts +34 -0
  126. package/dist/src/planner/analysis/predicate-dependencies.d.ts.map +1 -0
  127. package/dist/src/planner/analysis/predicate-dependencies.js +60 -0
  128. package/dist/src/planner/analysis/predicate-dependencies.js.map +1 -0
  129. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +1 -1
  130. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
  131. package/dist/src/planner/analysis/query-rewrite-matcher.js +0 -26
  132. package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
  133. package/dist/src/planner/building/alter-table.d.ts.map +1 -1
  134. package/dist/src/planner/building/alter-table.js +117 -43
  135. package/dist/src/planner/building/alter-table.js.map +1 -1
  136. package/dist/src/planner/building/coercion.d.ts +21 -45
  137. package/dist/src/planner/building/coercion.d.ts.map +1 -1
  138. package/dist/src/planner/building/coercion.js +42 -91
  139. package/dist/src/planner/building/coercion.js.map +1 -1
  140. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  141. package/dist/src/planner/building/constraint-builder.js +9 -5
  142. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  143. package/dist/src/planner/building/create-assertion.d.ts.map +1 -1
  144. package/dist/src/planner/building/create-assertion.js +72 -1
  145. package/dist/src/planner/building/create-assertion.js.map +1 -1
  146. package/dist/src/planner/building/create-view.d.ts +6 -1
  147. package/dist/src/planner/building/create-view.d.ts.map +1 -1
  148. package/dist/src/planner/building/create-view.js +12 -3
  149. package/dist/src/planner/building/create-view.js.map +1 -1
  150. package/dist/src/planner/building/ddl.d.ts.map +1 -1
  151. package/dist/src/planner/building/ddl.js +6 -2
  152. package/dist/src/planner/building/ddl.js.map +1 -1
  153. package/dist/src/planner/building/delete.d.ts.map +1 -1
  154. package/dist/src/planner/building/delete.js +23 -10
  155. package/dist/src/planner/building/delete.js.map +1 -1
  156. package/dist/src/planner/building/dml-target.d.ts.map +1 -1
  157. package/dist/src/planner/building/dml-target.js +4 -0
  158. package/dist/src/planner/building/dml-target.js.map +1 -1
  159. package/dist/src/planner/building/drop-assertion.d.ts.map +1 -1
  160. package/dist/src/planner/building/drop-assertion.js +3 -1
  161. package/dist/src/planner/building/drop-assertion.js.map +1 -1
  162. package/dist/src/planner/building/expression.d.ts +17 -0
  163. package/dist/src/planner/building/expression.d.ts.map +1 -1
  164. package/dist/src/planner/building/expression.js +28 -17
  165. package/dist/src/planner/building/expression.js.map +1 -1
  166. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  167. package/dist/src/planner/building/foreign-key-builder.js +7 -5
  168. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  169. package/dist/src/planner/building/function-call.d.ts +35 -0
  170. package/dist/src/planner/building/function-call.d.ts.map +1 -1
  171. package/dist/src/planner/building/function-call.js +60 -42
  172. package/dist/src/planner/building/function-call.js.map +1 -1
  173. package/dist/src/planner/building/insert.d.ts.map +1 -1
  174. package/dist/src/planner/building/insert.js +185 -48
  175. package/dist/src/planner/building/insert.js.map +1 -1
  176. package/dist/src/planner/building/materialized-view.d.ts.map +1 -1
  177. package/dist/src/planner/building/materialized-view.js +3 -1
  178. package/dist/src/planner/building/materialized-view.js.map +1 -1
  179. package/dist/src/planner/building/schema-authored-context.d.ts +69 -0
  180. package/dist/src/planner/building/schema-authored-context.d.ts.map +1 -0
  181. package/dist/src/planner/building/schema-authored-context.js +75 -0
  182. package/dist/src/planner/building/schema-authored-context.js.map +1 -0
  183. package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
  184. package/dist/src/planner/building/schema-resolution.js +7 -4
  185. package/dist/src/planner/building/schema-resolution.js.map +1 -1
  186. package/dist/src/planner/building/select-aggregates.d.ts +188 -3
  187. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  188. package/dist/src/planner/building/select-aggregates.js +449 -65
  189. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  190. package/dist/src/planner/building/select-compound.js +2 -2
  191. package/dist/src/planner/building/select-compound.js.map +1 -1
  192. package/dist/src/planner/building/select-context.d.ts +98 -0
  193. package/dist/src/planner/building/select-context.d.ts.map +1 -1
  194. package/dist/src/planner/building/select-context.js +120 -37
  195. package/dist/src/planner/building/select-context.js.map +1 -1
  196. package/dist/src/planner/building/select-modifiers.d.ts +10 -3
  197. package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
  198. package/dist/src/planner/building/select-modifiers.js +29 -8
  199. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  200. package/dist/src/planner/building/select-ordinal.d.ts +64 -19
  201. package/dist/src/planner/building/select-ordinal.d.ts.map +1 -1
  202. package/dist/src/planner/building/select-ordinal.js +79 -30
  203. package/dist/src/planner/building/select-ordinal.js.map +1 -1
  204. package/dist/src/planner/building/select-projections.d.ts +1 -1
  205. package/dist/src/planner/building/select-projections.d.ts.map +1 -1
  206. package/dist/src/planner/building/select-projections.js +18 -11
  207. package/dist/src/planner/building/select-projections.js.map +1 -1
  208. package/dist/src/planner/building/select-window.d.ts +13 -3
  209. package/dist/src/planner/building/select-window.d.ts.map +1 -1
  210. package/dist/src/planner/building/select-window.js +142 -37
  211. package/dist/src/planner/building/select-window.js.map +1 -1
  212. package/dist/src/planner/building/select.d.ts +37 -1
  213. package/dist/src/planner/building/select.d.ts.map +1 -1
  214. package/dist/src/planner/building/select.js +240 -109
  215. package/dist/src/planner/building/select.js.map +1 -1
  216. package/dist/src/planner/building/update.d.ts.map +1 -1
  217. package/dist/src/planner/building/update.js +27 -13
  218. package/dist/src/planner/building/update.js.map +1 -1
  219. package/dist/src/planner/building/view-mutation-builder.d.ts +1 -1
  220. package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -1
  221. package/dist/src/planner/building/view-mutation-builder.js +102 -8
  222. package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
  223. package/dist/src/planner/building/with.d.ts.map +1 -1
  224. package/dist/src/planner/building/with.js +34 -4
  225. package/dist/src/planner/building/with.js.map +1 -1
  226. package/dist/src/planner/cache/correlation-detector.d.ts +15 -0
  227. package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -1
  228. package/dist/src/planner/cache/correlation-detector.js +26 -0
  229. package/dist/src/planner/cache/correlation-detector.js.map +1 -1
  230. package/dist/src/planner/cache/materialization-advisory.d.ts +7 -0
  231. package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
  232. package/dist/src/planner/cache/materialization-advisory.js +12 -3
  233. package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
  234. package/dist/src/planner/cost/conjunct-cost.d.ts +40 -0
  235. package/dist/src/planner/cost/conjunct-cost.d.ts.map +1 -1
  236. package/dist/src/planner/cost/conjunct-cost.js +45 -0
  237. package/dist/src/planner/cost/conjunct-cost.js.map +1 -1
  238. package/dist/src/planner/cost/index.d.ts +10 -0
  239. package/dist/src/planner/cost/index.d.ts.map +1 -1
  240. package/dist/src/planner/cost/index.js +15 -0
  241. package/dist/src/planner/cost/index.js.map +1 -1
  242. package/dist/src/planner/framework/characteristics.d.ts +9 -0
  243. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  244. package/dist/src/planner/framework/characteristics.js.map +1 -1
  245. package/dist/src/planner/framework/pass.d.ts +2 -0
  246. package/dist/src/planner/framework/pass.d.ts.map +1 -1
  247. package/dist/src/planner/framework/pass.js +15 -0
  248. package/dist/src/planner/framework/pass.js.map +1 -1
  249. package/dist/src/planner/mutation/backward-body.d.ts.map +1 -1
  250. package/dist/src/planner/mutation/backward-body.js +4 -1
  251. package/dist/src/planner/mutation/backward-body.js.map +1 -1
  252. package/dist/src/planner/mutation/body-context.d.ts +23 -0
  253. package/dist/src/planner/mutation/body-context.d.ts.map +1 -0
  254. package/dist/src/planner/mutation/body-context.js +26 -0
  255. package/dist/src/planner/mutation/body-context.js.map +1 -0
  256. package/dist/src/planner/mutation/cte-flatten.js +15 -2
  257. package/dist/src/planner/mutation/cte-flatten.js.map +1 -1
  258. package/dist/src/planner/mutation/decomposition.d.ts +8 -0
  259. package/dist/src/planner/mutation/decomposition.d.ts.map +1 -1
  260. package/dist/src/planner/mutation/decomposition.js +8 -3
  261. package/dist/src/planner/mutation/decomposition.js.map +1 -1
  262. package/dist/src/planner/mutation/lens-enforcement.js +1 -1
  263. package/dist/src/planner/mutation/multi-source.d.ts +7 -0
  264. package/dist/src/planner/mutation/multi-source.d.ts.map +1 -1
  265. package/dist/src/planner/mutation/multi-source.js +5 -0
  266. package/dist/src/planner/mutation/multi-source.js.map +1 -1
  267. package/dist/src/planner/mutation/mutation-diagnostic.d.ts +1 -1
  268. package/dist/src/planner/mutation/mutation-diagnostic.d.ts.map +1 -1
  269. package/dist/src/planner/mutation/mutation-diagnostic.js.map +1 -1
  270. package/dist/src/planner/mutation/scope-transform.d.ts +32 -0
  271. package/dist/src/planner/mutation/scope-transform.d.ts.map +1 -1
  272. package/dist/src/planner/mutation/scope-transform.js +181 -33
  273. package/dist/src/planner/mutation/scope-transform.js.map +1 -1
  274. package/dist/src/planner/mutation/set-op.d.ts.map +1 -1
  275. package/dist/src/planner/mutation/set-op.js +66 -16
  276. package/dist/src/planner/mutation/set-op.js.map +1 -1
  277. package/dist/src/planner/mutation/single-source.d.ts.map +1 -1
  278. package/dist/src/planner/mutation/single-source.js +100 -24
  279. package/dist/src/planner/mutation/single-source.js.map +1 -1
  280. package/dist/src/planner/nodes/add-constraint-node.d.ts +15 -1
  281. package/dist/src/planner/nodes/add-constraint-node.d.ts.map +1 -1
  282. package/dist/src/planner/nodes/add-constraint-node.js +10 -1
  283. package/dist/src/planner/nodes/add-constraint-node.js.map +1 -1
  284. package/dist/src/planner/nodes/aggregate-node.d.ts +15 -0
  285. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  286. package/dist/src/planner/nodes/aggregate-node.js +32 -17
  287. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  288. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  289. package/dist/src/planner/nodes/alias-node.js +2 -1
  290. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  291. package/dist/src/planner/nodes/alter-table-node.d.ts +51 -10
  292. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
  293. package/dist/src/planner/nodes/alter-table-node.js +49 -2
  294. package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
  295. package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
  296. package/dist/src/planner/nodes/asof-scan-node.js +4 -1
  297. package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
  298. package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
  299. package/dist/src/planner/nodes/asserted-keys-node.js +2 -1
  300. package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -1
  301. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  302. package/dist/src/planner/nodes/bloom-join-node.js +8 -3
  303. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  304. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  305. package/dist/src/planner/nodes/cache-node.js +2 -1
  306. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  307. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  308. package/dist/src/planner/nodes/constraint-check-node.js +17 -19
  309. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
  310. package/dist/src/planner/nodes/create-assertion-node.d.ts +2 -1
  311. package/dist/src/planner/nodes/create-assertion-node.d.ts.map +1 -1
  312. package/dist/src/planner/nodes/create-assertion-node.js +5 -2
  313. package/dist/src/planner/nodes/create-assertion-node.js.map +1 -1
  314. package/dist/src/planner/nodes/cte-node.d.ts +19 -9
  315. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  316. package/dist/src/planner/nodes/cte-node.js +25 -9
  317. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  318. package/dist/src/planner/nodes/delete-node.d.ts +20 -2
  319. package/dist/src/planner/nodes/delete-node.d.ts.map +1 -1
  320. package/dist/src/planner/nodes/delete-node.js +11 -2
  321. package/dist/src/planner/nodes/delete-node.js.map +1 -1
  322. package/dist/src/planner/nodes/distinct-node.d.ts +6 -0
  323. package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
  324. package/dist/src/planner/nodes/distinct-node.js +10 -2
  325. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  326. package/dist/src/planner/nodes/dml-executor-node.d.ts +58 -1
  327. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  328. package/dist/src/planner/nodes/dml-executor-node.js +107 -15
  329. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  330. package/dist/src/planner/nodes/drop-assertion-node.d.ts +2 -1
  331. package/dist/src/planner/nodes/drop-assertion-node.d.ts.map +1 -1
  332. package/dist/src/planner/nodes/drop-assertion-node.js +5 -2
  333. package/dist/src/planner/nodes/drop-assertion-node.js.map +1 -1
  334. package/dist/src/planner/nodes/eager-prefetch-node.d.ts.map +1 -1
  335. package/dist/src/planner/nodes/eager-prefetch-node.js +2 -1
  336. package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -1
  337. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts +5 -0
  338. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
  339. package/dist/src/planner/nodes/fanout-lookup-join-node.js +13 -6
  340. package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
  341. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  342. package/dist/src/planner/nodes/filter.js +18 -5
  343. package/dist/src/planner/nodes/filter.js.map +1 -1
  344. package/dist/src/planner/nodes/hash-aggregate.d.ts +1 -0
  345. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  346. package/dist/src/planner/nodes/hash-aggregate.js +21 -16
  347. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  348. package/dist/src/planner/nodes/insert-node.d.ts +19 -2
  349. package/dist/src/planner/nodes/insert-node.d.ts.map +1 -1
  350. package/dist/src/planner/nodes/insert-node.js +10 -2
  351. package/dist/src/planner/nodes/insert-node.js.map +1 -1
  352. package/dist/src/planner/nodes/join-node.d.ts +20 -1
  353. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  354. package/dist/src/planner/nodes/join-node.js +30 -9
  355. package/dist/src/planner/nodes/join-node.js.map +1 -1
  356. package/dist/src/planner/nodes/join-utils.d.ts +21 -0
  357. package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
  358. package/dist/src/planner/nodes/join-utils.js +26 -0
  359. package/dist/src/planner/nodes/join-utils.js.map +1 -1
  360. package/dist/src/planner/nodes/key-set-semi-join-node.d.ts +42 -10
  361. package/dist/src/planner/nodes/key-set-semi-join-node.d.ts.map +1 -1
  362. package/dist/src/planner/nodes/key-set-semi-join-node.js +90 -17
  363. package/dist/src/planner/nodes/key-set-semi-join-node.js.map +1 -1
  364. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts +5 -0
  365. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
  366. package/dist/src/planner/nodes/lens-auxiliary-access-node.js +2 -1
  367. package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
  368. package/dist/src/planner/nodes/limit-offset.d.ts +6 -0
  369. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  370. package/dist/src/planner/nodes/limit-offset.js +10 -2
  371. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  372. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  373. package/dist/src/planner/nodes/merge-join-node.js +8 -3
  374. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  375. package/dist/src/planner/nodes/ordinal-slice-node.d.ts +5 -0
  376. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
  377. package/dist/src/planner/nodes/ordinal-slice-node.js +9 -2
  378. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
  379. package/dist/src/planner/nodes/plan-node.d.ts +29 -0
  380. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  381. package/dist/src/planner/nodes/plan-node.js +12 -0
  382. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  383. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  384. package/dist/src/planner/nodes/project-node.js +18 -36
  385. package/dist/src/planner/nodes/project-node.js.map +1 -1
  386. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  387. package/dist/src/planner/nodes/reference.js +3 -2
  388. package/dist/src/planner/nodes/reference.js.map +1 -1
  389. package/dist/src/planner/nodes/retrieve-node.d.ts +16 -2
  390. package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
  391. package/dist/src/planner/nodes/retrieve-node.js +10 -2
  392. package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
  393. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
  394. package/dist/src/planner/nodes/returning-node.js +13 -32
  395. package/dist/src/planner/nodes/returning-node.js.map +1 -1
  396. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  397. package/dist/src/planner/nodes/scalar.js +5 -18
  398. package/dist/src/planner/nodes/scalar.js.map +1 -1
  399. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  400. package/dist/src/planner/nodes/sort.js +3 -1
  401. package/dist/src/planner/nodes/sort.js.map +1 -1
  402. package/dist/src/planner/nodes/stream-aggregate.d.ts +1 -0
  403. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  404. package/dist/src/planner/nodes/stream-aggregate.js +22 -20
  405. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  406. package/dist/src/planner/nodes/table-access-nodes.d.ts +89 -1
  407. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  408. package/dist/src/planner/nodes/table-access-nodes.js +69 -2
  409. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  410. package/dist/src/planner/nodes/update-node.d.ts +19 -2
  411. package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
  412. package/dist/src/planner/nodes/update-node.js +10 -2
  413. package/dist/src/planner/nodes/update-node.js.map +1 -1
  414. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  415. package/dist/src/planner/nodes/window-function.js +8 -0
  416. package/dist/src/planner/nodes/window-function.js.map +1 -1
  417. package/dist/src/planner/nodes/window-node.d.ts +1 -1
  418. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  419. package/dist/src/planner/nodes/window-node.js +3 -1
  420. package/dist/src/planner/nodes/window-node.js.map +1 -1
  421. package/dist/src/planner/optimizer.d.ts +27 -1
  422. package/dist/src/planner/optimizer.d.ts.map +1 -1
  423. package/dist/src/planner/optimizer.js +130 -10
  424. package/dist/src/planner/optimizer.js.map +1 -1
  425. package/dist/src/planner/planning-context.d.ts +24 -0
  426. package/dist/src/planner/planning-context.d.ts.map +1 -1
  427. package/dist/src/planner/planning-context.js.map +1 -1
  428. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts +78 -20
  429. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
  430. package/dist/src/planner/rules/access/rule-key-set-seek.js +296 -135
  431. package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
  432. package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts.map +1 -1
  433. package/dist/src/planner/rules/access/rule-monotonic-range-access.js +2 -2
  434. package/dist/src/planner/rules/access/rule-monotonic-range-access.js.map +1 -1
  435. package/dist/src/planner/rules/access/rule-select-access-path.d.ts +30 -1
  436. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  437. package/dist/src/planner/rules/access/rule-select-access-path.js +70 -5
  438. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  439. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts +7 -4
  440. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts.map +1 -1
  441. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js +39 -5
  442. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js.map +1 -1
  443. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
  444. package/dist/src/planner/rules/cache/rule-cte-optimization.js +15 -2
  445. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
  446. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +10 -3
  447. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -1
  448. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -1
  449. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +6 -4
  450. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -1
  451. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +5 -31
  452. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -1
  453. package/dist/src/planner/rules/join/equi-pair-extractor.js +4 -44
  454. package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -1
  455. package/dist/src/planner/rules/join/index-nested-loop.d.ts +49 -0
  456. package/dist/src/planner/rules/join/index-nested-loop.d.ts.map +1 -0
  457. package/dist/src/planner/rules/join/index-nested-loop.js +291 -0
  458. package/dist/src/planner/rules/join/index-nested-loop.js.map +1 -0
  459. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +8 -8
  460. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts +4 -0
  461. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -1
  462. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +50 -15
  463. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  464. package/dist/src/planner/rules/join/rule-join-elimination.d.ts +6 -0
  465. package/dist/src/planner/rules/join/rule-join-elimination.d.ts.map +1 -1
  466. package/dist/src/planner/rules/join/rule-join-elimination.js +25 -9
  467. package/dist/src/planner/rules/join/rule-join-elimination.js.map +1 -1
  468. package/dist/src/planner/rules/join/rule-join-key-inference.d.ts +7 -0
  469. package/dist/src/planner/rules/join/rule-join-key-inference.d.ts.map +1 -1
  470. package/dist/src/planner/rules/join/rule-join-key-inference.js +23 -11
  471. package/dist/src/planner/rules/join/rule-join-key-inference.js.map +1 -1
  472. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts +10 -4
  473. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  474. package/dist/src/planner/rules/join/rule-join-physical-selection.js +115 -29
  475. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  476. package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts +2 -0
  477. package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts.map +1 -1
  478. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +18 -4
  479. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
  480. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts +2 -2
  481. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts.map +1 -1
  482. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js +19 -22
  483. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js.map +1 -1
  484. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts +21 -8
  485. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts.map +1 -1
  486. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js +70 -14
  487. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js.map +1 -1
  488. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +56 -17
  489. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -1
  490. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +103 -154
  491. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -1
  492. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts +76 -0
  493. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts.map +1 -0
  494. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js +208 -0
  495. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js.map +1 -0
  496. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts +14 -11
  497. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -1
  498. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +21 -85
  499. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
  500. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts +7 -1
  501. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -1
  502. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +18 -22
  503. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
  504. package/dist/src/planner/rules/shared/access-leaf.d.ts +52 -0
  505. package/dist/src/planner/rules/shared/access-leaf.d.ts.map +1 -0
  506. package/dist/src/planner/rules/shared/access-leaf.js +95 -0
  507. package/dist/src/planner/rules/shared/access-leaf.js.map +1 -0
  508. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -1
  509. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +17 -7
  510. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -1
  511. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts +3 -1
  512. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -1
  513. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +26 -9
  514. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -1
  515. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  516. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +69 -11
  517. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  518. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts +17 -7
  519. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
  520. package/dist/src/planner/rules/window/rule-monotonic-window.js +124 -87
  521. package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
  522. package/dist/src/planner/scopes/aliased.d.ts.map +1 -1
  523. package/dist/src/planner/scopes/aliased.js +6 -0
  524. package/dist/src/planner/scopes/aliased.js.map +1 -1
  525. package/dist/src/planner/stats/catalog-stats.d.ts +44 -13
  526. package/dist/src/planner/stats/catalog-stats.d.ts.map +1 -1
  527. package/dist/src/planner/stats/catalog-stats.js +137 -61
  528. package/dist/src/planner/stats/catalog-stats.js.map +1 -1
  529. package/dist/src/planner/stats/conjunct-selectivity.d.ts +48 -0
  530. package/dist/src/planner/stats/conjunct-selectivity.d.ts.map +1 -0
  531. package/dist/src/planner/stats/conjunct-selectivity.js +168 -0
  532. package/dist/src/planner/stats/conjunct-selectivity.js.map +1 -0
  533. package/dist/src/planner/stats/index.d.ts +22 -3
  534. package/dist/src/planner/stats/index.d.ts.map +1 -1
  535. package/dist/src/planner/stats/index.js.map +1 -1
  536. package/dist/src/planner/stats/table-cardinality.d.ts +28 -0
  537. package/dist/src/planner/stats/table-cardinality.d.ts.map +1 -0
  538. package/dist/src/planner/stats/table-cardinality.js +29 -0
  539. package/dist/src/planner/stats/table-cardinality.js.map +1 -0
  540. package/dist/src/planner/stored-body-context.d.ts +57 -0
  541. package/dist/src/planner/stored-body-context.d.ts.map +1 -0
  542. package/dist/src/planner/stored-body-context.js +64 -0
  543. package/dist/src/planner/stored-body-context.js.map +1 -0
  544. package/dist/src/planner/util/column-origins.d.ts +29 -8
  545. package/dist/src/planner/util/column-origins.d.ts.map +1 -1
  546. package/dist/src/planner/util/column-origins.js +74 -14
  547. package/dist/src/planner/util/column-origins.js.map +1 -1
  548. package/dist/src/planner/util/fd-utils.d.ts +32 -8
  549. package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
  550. package/dist/src/planner/util/fd-utils.js +46 -9
  551. package/dist/src/planner/util/fd-utils.js.map +1 -1
  552. package/dist/src/planner/util/ind-utils.d.ts +66 -19
  553. package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
  554. package/dist/src/planner/util/ind-utils.js +91 -21
  555. package/dist/src/planner/util/ind-utils.js.map +1 -1
  556. package/dist/src/planner/util/key-utils.d.ts +36 -3
  557. package/dist/src/planner/util/key-utils.d.ts.map +1 -1
  558. package/dist/src/planner/util/key-utils.js +57 -7
  559. package/dist/src/planner/util/key-utils.js.map +1 -1
  560. package/dist/src/planner/util/output-names.d.ts +12 -0
  561. package/dist/src/planner/util/output-names.d.ts.map +1 -0
  562. package/dist/src/planner/util/output-names.js +20 -0
  563. package/dist/src/planner/util/output-names.js.map +1 -0
  564. package/dist/src/planner/util/row-estimates.d.ts +39 -0
  565. package/dist/src/planner/util/row-estimates.d.ts.map +1 -0
  566. package/dist/src/planner/util/row-estimates.js +68 -0
  567. package/dist/src/planner/util/row-estimates.js.map +1 -0
  568. package/dist/src/planner/util/row-population.d.ts +42 -0
  569. package/dist/src/planner/util/row-population.d.ts.map +1 -0
  570. package/dist/src/planner/util/row-population.js +71 -0
  571. package/dist/src/planner/util/row-population.js.map +1 -0
  572. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  573. package/dist/src/runtime/deferred-constraint-queue.js +3 -2
  574. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  575. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  576. package/dist/src/runtime/emit/add-constraint.js +60 -6
  577. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  578. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  579. package/dist/src/runtime/emit/aggregate.js +4 -4
  580. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  581. package/dist/src/runtime/emit/alter-schema-event.d.ts +97 -0
  582. package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -0
  583. package/dist/src/runtime/emit/alter-schema-event.js +87 -0
  584. package/dist/src/runtime/emit/alter-schema-event.js.map +1 -0
  585. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  586. package/dist/src/runtime/emit/alter-table.js +582 -236
  587. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  588. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  589. package/dist/src/runtime/emit/analyze.js +50 -7
  590. package/dist/src/runtime/emit/analyze.js.map +1 -1
  591. package/dist/src/runtime/emit/assertion-drop-guard.d.ts +37 -0
  592. package/dist/src/runtime/emit/assertion-drop-guard.d.ts.map +1 -0
  593. package/dist/src/runtime/emit/assertion-drop-guard.js +59 -0
  594. package/dist/src/runtime/emit/assertion-drop-guard.js.map +1 -0
  595. package/dist/src/runtime/emit/assertion-rename-helpers.d.ts +33 -0
  596. package/dist/src/runtime/emit/assertion-rename-helpers.d.ts.map +1 -0
  597. package/dist/src/runtime/emit/assertion-rename-helpers.js +124 -0
  598. package/dist/src/runtime/emit/assertion-rename-helpers.js.map +1 -0
  599. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  600. package/dist/src/runtime/emit/cast.js +4 -19
  601. package/dist/src/runtime/emit/cast.js.map +1 -1
  602. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  603. package/dist/src/runtime/emit/constraint-check.js +10 -227
  604. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  605. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  606. package/dist/src/runtime/emit/create-assertion.js +31 -14
  607. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  608. package/dist/src/runtime/emit/cte.d.ts.map +1 -1
  609. package/dist/src/runtime/emit/cte.js +11 -6
  610. package/dist/src/runtime/emit/cte.js.map +1 -1
  611. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  612. package/dist/src/runtime/emit/dml-executor.js +233 -28
  613. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  614. package/dist/src/runtime/emit/drop-assertion.js +8 -8
  615. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  616. package/dist/src/runtime/emit/drop-column-guards.d.ts +151 -0
  617. package/dist/src/runtime/emit/drop-column-guards.d.ts.map +1 -0
  618. package/dist/src/runtime/emit/drop-column-guards.js +230 -0
  619. package/dist/src/runtime/emit/drop-column-guards.js.map +1 -0
  620. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  621. package/dist/src/runtime/emit/drop-index.js +4 -3
  622. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  623. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  624. package/dist/src/runtime/emit/drop-table.js +6 -0
  625. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  626. package/dist/src/runtime/emit/drop-view.d.ts.map +1 -1
  627. package/dist/src/runtime/emit/drop-view.js +4 -0
  628. package/dist/src/runtime/emit/drop-view.js.map +1 -1
  629. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  630. package/dist/src/runtime/emit/hash-aggregate.js +2 -2
  631. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  632. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  633. package/dist/src/runtime/emit/join.js +8 -67
  634. package/dist/src/runtime/emit/join.js.map +1 -1
  635. package/dist/src/runtime/emit/key-set-semi-join.d.ts.map +1 -1
  636. package/dist/src/runtime/emit/key-set-semi-join.js +11 -3
  637. package/dist/src/runtime/emit/key-set-semi-join.js.map +1 -1
  638. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +4 -4
  639. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  640. package/dist/src/runtime/emit/materialized-view-helpers.js +34 -22
  641. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  642. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  643. package/dist/src/runtime/emit/materialized-view.js +7 -2
  644. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  645. package/dist/src/runtime/emit/operand-comparator.d.ts +30 -0
  646. package/dist/src/runtime/emit/operand-comparator.d.ts.map +1 -1
  647. package/dist/src/runtime/emit/operand-comparator.js +34 -0
  648. package/dist/src/runtime/emit/operand-comparator.js.map +1 -1
  649. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  650. package/dist/src/runtime/emit/recursive-cte.js +4 -5
  651. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  652. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  653. package/dist/src/runtime/emit/schema-declarative.js +30 -0
  654. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  655. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  656. package/dist/src/runtime/emit/subquery.js +153 -52
  657. package/dist/src/runtime/emit/subquery.js.map +1 -1
  658. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  659. package/dist/src/runtime/emit/update.js +18 -6
  660. package/dist/src/runtime/emit/update.js.map +1 -1
  661. package/dist/src/runtime/emit/window.js +36 -23
  662. package/dist/src/runtime/emit/window.js.map +1 -1
  663. package/dist/src/runtime/row-constraints.d.ts +85 -0
  664. package/dist/src/runtime/row-constraints.d.ts.map +1 -0
  665. package/dist/src/runtime/row-constraints.js +239 -0
  666. package/dist/src/runtime/row-constraints.js.map +1 -0
  667. package/dist/src/runtime/types.d.ts +8 -11
  668. package/dist/src/runtime/types.d.ts.map +1 -1
  669. package/dist/src/runtime/types.js.map +1 -1
  670. package/dist/src/schema/assertion.d.ts +14 -1
  671. package/dist/src/schema/assertion.d.ts.map +1 -1
  672. package/dist/src/schema/assertion.js +14 -1
  673. package/dist/src/schema/assertion.js.map +1 -1
  674. package/dist/src/schema/catalog-persistability.d.ts +19 -16
  675. package/dist/src/schema/catalog-persistability.d.ts.map +1 -1
  676. package/dist/src/schema/catalog-persistability.js +92 -20
  677. package/dist/src/schema/catalog-persistability.js.map +1 -1
  678. package/dist/src/schema/catalog.d.ts +73 -2
  679. package/dist/src/schema/catalog.d.ts.map +1 -1
  680. package/dist/src/schema/catalog.js +220 -39
  681. package/dist/src/schema/catalog.js.map +1 -1
  682. package/dist/src/schema/column-source-resolver.d.ts +18 -0
  683. package/dist/src/schema/column-source-resolver.d.ts.map +1 -0
  684. package/dist/src/schema/column-source-resolver.js +22 -0
  685. package/dist/src/schema/column-source-resolver.js.map +1 -0
  686. package/dist/src/schema/column.d.ts +26 -3
  687. package/dist/src/schema/column.d.ts.map +1 -1
  688. package/dist/src/schema/column.js.map +1 -1
  689. package/dist/src/schema/constraint-builder.d.ts.map +1 -1
  690. package/dist/src/schema/constraint-builder.js +7 -1
  691. package/dist/src/schema/constraint-builder.js.map +1 -1
  692. package/dist/src/schema/ddl-generator.d.ts.map +1 -1
  693. package/dist/src/schema/ddl-generator.js +27 -6
  694. package/dist/src/schema/ddl-generator.js.map +1 -1
  695. package/dist/src/schema/function.d.ts +32 -1
  696. package/dist/src/schema/function.d.ts.map +1 -1
  697. package/dist/src/schema/function.js +10 -2
  698. package/dist/src/schema/function.js.map +1 -1
  699. package/dist/src/schema/lens-compiler.d.ts.map +1 -1
  700. package/dist/src/schema/lens-compiler.js +203 -51
  701. package/dist/src/schema/lens-compiler.js.map +1 -1
  702. package/dist/src/schema/lens-prover.d.ts +2 -3
  703. package/dist/src/schema/lens-prover.d.ts.map +1 -1
  704. package/dist/src/schema/lens-prover.js +19 -11
  705. package/dist/src/schema/lens-prover.js.map +1 -1
  706. package/dist/src/schema/manager.d.ts +115 -20
  707. package/dist/src/schema/manager.d.ts.map +1 -1
  708. package/dist/src/schema/manager.js +202 -70
  709. package/dist/src/schema/manager.js.map +1 -1
  710. package/dist/src/schema/rename-rewriter.d.ts +142 -0
  711. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  712. package/dist/src/schema/rename-rewriter.js +254 -9
  713. package/dist/src/schema/rename-rewriter.js.map +1 -1
  714. package/dist/src/schema/reserved-tags.d.ts +1 -1
  715. package/dist/src/schema/reserved-tags.d.ts.map +1 -1
  716. package/dist/src/schema/reserved-tags.js +4 -3
  717. package/dist/src/schema/reserved-tags.js.map +1 -1
  718. package/dist/src/schema/schema-differ.d.ts +16 -0
  719. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  720. package/dist/src/schema/schema-differ.js +225 -38
  721. package/dist/src/schema/schema-differ.js.map +1 -1
  722. package/dist/src/schema/table.d.ts +149 -1
  723. package/dist/src/schema/table.d.ts.map +1 -1
  724. package/dist/src/schema/table.js +248 -1
  725. package/dist/src/schema/table.js.map +1 -1
  726. package/dist/src/schema/unique-enforcement.d.ts +5 -3
  727. package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
  728. package/dist/src/schema/unique-enforcement.js +5 -3
  729. package/dist/src/schema/unique-enforcement.js.map +1 -1
  730. package/dist/src/schema/view.d.ts +11 -0
  731. package/dist/src/schema/view.d.ts.map +1 -1
  732. package/dist/src/schema/view.js +12 -0
  733. package/dist/src/schema/view.js.map +1 -1
  734. package/dist/src/types/builtin-types.d.ts +54 -0
  735. package/dist/src/types/builtin-types.d.ts.map +1 -1
  736. package/dist/src/types/builtin-types.js +123 -34
  737. package/dist/src/types/builtin-types.js.map +1 -1
  738. package/dist/src/types/cast-semantics.d.ts +42 -0
  739. package/dist/src/types/cast-semantics.d.ts.map +1 -1
  740. package/dist/src/types/cast-semantics.js +64 -0
  741. package/dist/src/types/cast-semantics.js.map +1 -1
  742. package/dist/src/types/comparison-coercion.d.ts +101 -0
  743. package/dist/src/types/comparison-coercion.d.ts.map +1 -0
  744. package/dist/src/types/comparison-coercion.js +162 -0
  745. package/dist/src/types/comparison-coercion.js.map +1 -0
  746. package/dist/src/types/index.d.ts +2 -2
  747. package/dist/src/types/index.d.ts.map +1 -1
  748. package/dist/src/types/index.js +2 -2
  749. package/dist/src/types/index.js.map +1 -1
  750. package/dist/src/types/logical-type.d.ts +7 -0
  751. package/dist/src/types/logical-type.d.ts.map +1 -1
  752. package/dist/src/types/logical-type.js.map +1 -1
  753. package/dist/src/types/validation.d.ts +56 -0
  754. package/dist/src/types/validation.d.ts.map +1 -1
  755. package/dist/src/types/validation.js +68 -0
  756. package/dist/src/types/validation.js.map +1 -1
  757. package/dist/src/util/{working-table-iterable.d.ts → array-row-iterable.d.ts} +6 -6
  758. package/dist/src/util/array-row-iterable.d.ts.map +1 -0
  759. package/dist/src/util/{working-table-iterable.js → array-row-iterable.js} +6 -6
  760. package/dist/src/util/array-row-iterable.js.map +1 -0
  761. package/dist/src/util/coercion.d.ts +8 -0
  762. package/dist/src/util/coercion.d.ts.map +1 -1
  763. package/dist/src/util/coercion.js +8 -0
  764. package/dist/src/util/coercion.js.map +1 -1
  765. package/dist/src/util/comparison.d.ts +16 -3
  766. package/dist/src/util/comparison.d.ts.map +1 -1
  767. package/dist/src/util/comparison.js +21 -5
  768. package/dist/src/util/comparison.js.map +1 -1
  769. package/dist/src/util/key-serializer.d.ts +46 -0
  770. package/dist/src/util/key-serializer.d.ts.map +1 -1
  771. package/dist/src/util/key-serializer.js +47 -0
  772. package/dist/src/util/key-serializer.js.map +1 -1
  773. package/dist/src/util/value-set.d.ts +21 -0
  774. package/dist/src/util/value-set.d.ts.map +1 -0
  775. package/dist/src/util/value-set.js +22 -0
  776. package/dist/src/util/value-set.js.map +1 -0
  777. package/dist/src/vtab/capabilities.d.ts +1 -1
  778. package/dist/src/vtab/events.d.ts +8 -1
  779. package/dist/src/vtab/events.d.ts.map +1 -1
  780. package/dist/src/vtab/events.js.map +1 -1
  781. package/dist/src/vtab/manifest.d.ts +15 -0
  782. package/dist/src/vtab/manifest.d.ts.map +1 -1
  783. package/dist/src/vtab/memory/layer/alter-column.d.ts +147 -0
  784. package/dist/src/vtab/memory/layer/alter-column.d.ts.map +1 -0
  785. package/dist/src/vtab/memory/layer/alter-column.js +214 -0
  786. package/dist/src/vtab/memory/layer/alter-column.js.map +1 -0
  787. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  788. package/dist/src/vtab/memory/layer/base.js +4 -3
  789. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  790. package/dist/src/vtab/memory/layer/interface.d.ts +2 -2
  791. package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
  792. package/dist/src/vtab/memory/layer/manager.d.ts +176 -25
  793. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  794. package/dist/src/vtab/memory/layer/manager.js +569 -558
  795. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  796. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  797. package/dist/src/vtab/memory/layer/scan-layer.js +32 -5
  798. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  799. package/dist/src/vtab/memory/layer/transaction.d.ts +101 -15
  800. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  801. package/dist/src/vtab/memory/layer/transaction.js +133 -45
  802. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  803. package/dist/src/vtab/memory/module.d.ts +16 -1
  804. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  805. package/dist/src/vtab/memory/module.js +64 -3
  806. package/dist/src/vtab/memory/module.js.map +1 -1
  807. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  808. package/dist/src/vtab/memory/table.js +11 -6
  809. package/dist/src/vtab/memory/table.js.map +1 -1
  810. package/dist/src/vtab/module.d.ts +77 -23
  811. package/dist/src/vtab/module.d.ts.map +1 -1
  812. package/dist/src/vtab/table.d.ts +9 -2
  813. package/dist/src/vtab/table.d.ts.map +1 -1
  814. package/dist/src/vtab/table.js +1 -1
  815. package/dist/src/vtab/table.js.map +1 -1
  816. package/package.json +3 -3
  817. package/dist/src/util/working-table-iterable.d.ts.map +0 -1
  818. package/dist/src/util/working-table-iterable.js.map +0 -1
@@ -1,10 +1,11 @@
1
1
  import { createScalarFunction } from '../registration.js';
2
2
  import { compareSqlValues, getSqlDataTypeName } from '../../util/comparison.js';
3
- import { ANY_TYPE, INTEGER_TYPE, REAL_TYPE, TEXT_TYPE } from '../../types/builtin-types.js';
3
+ import { ANY_TYPE, INTEGER_TYPE, NULL_TYPE, REAL_TYPE, isNumericOrUnknownType } from '../../types/builtin-types.js';
4
4
  import { asRun } from '../../runtime/types.js';
5
5
  import { emitPlanNode } from '../../runtime/emitters.js';
6
- import { effectiveComparisonCollation, effectiveGroupCollation } from '../../planner/analysis/comparison-collation.js';
7
- import { makeGroupComparator, makeOperandComparator, formatOperandCollationNote } from '../../runtime/emit/operand-comparator.js';
6
+ import { BLOB_RETURN, INTEGER_RETURN_NOT_NULL, REAL_RETURN, TEXT_RETURN_NOT_NULL } from './return-types.js';
7
+ import { effectiveCollationOfTypes, effectiveGroupCollation } from '../../planner/analysis/comparison-collation.js';
8
+ import { makeComparisonGroup, makeGroupComparator, makeOperandComparator, formatOperandCollationNote } from '../../runtime/emit/operand-comparator.js';
8
9
  /**
9
10
  * Find the common type among multiple logical types.
10
11
  * This implements type promotion rules for polymorphic functions.
@@ -38,10 +39,17 @@ function findCommonType(types) {
38
39
  return INTEGER_TYPE;
39
40
  }
40
41
  // For non-numeric types, return the first type (conservative)
41
- // In a more sophisticated implementation, we could:
42
- // - Find a common supertype
43
- // - Return ANY_TYPE if types are incompatible
44
- // - Throw an error for incompatible types
42
+ // NOTE: this fallback is DISHONEST for a value-returning function over a
43
+ // mixed-category group — `coalesce(int_col, text_col)` advertises INTEGER while
44
+ // it can return the text. Benign today because the write path converts or
45
+ // rejects rather than storing the wrong storage class (`insert into int_col
46
+ // select coalesce(null, text_col)` converts; a VALUES insert of unconvertible
47
+ // text raises `Type conversion failed`), and no reader trusts the declared type
48
+ // over the runtime value. `greatest`/`least` opted out via `extremumReturnType`
49
+ // because their fix made the divergence newly *visible*. If a consumer ever
50
+ // starts trusting a declared type without re-checking the value — a storage
51
+ // encoder keyed off it, say — every caller here (coalesce, iif, choose) needs
52
+ // the same ANY_TYPE treatment.
45
53
  return firstType;
46
54
  }
47
55
  // --- abs(X) ---
@@ -56,8 +64,8 @@ export const absFunc = createScalarFunction({
56
64
  nullable: false,
57
65
  isReadOnly: true
58
66
  }),
59
- // Validate that the argument is numeric
60
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
67
+ // Validate that the argument is numeric (or unclassifiable — see the helper)
68
+ validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
61
69
  }, (arg) => {
62
70
  if (arg === null)
63
71
  return null;
@@ -100,7 +108,7 @@ const roundSchemaBase = {
100
108
  nullable: false,
101
109
  isReadOnly: true
102
110
  }),
103
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
111
+ validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
104
112
  };
105
113
  export const roundFunc1 = createScalarFunction({ ...roundSchemaBase, numArgs: 1 }, roundImpl);
106
114
  export const roundFunc2 = createScalarFunction({ ...roundSchemaBase, numArgs: 2 }, roundImpl);
@@ -125,13 +133,28 @@ export const coalesceFunc = createScalarFunction({
125
133
  return null;
126
134
  });
127
135
  // --- nullif(X, Y) ---
136
+ /**
137
+ * The call site's comparison group, with its cross-type coercion resolved at emit
138
+ * time. `nullif`/`greatest`/`least` declare `returnsArg`, so `buildFunctionCall`
139
+ * deliberately leaves their arguments un-rewritten (a plan-time cast would replace
140
+ * the RETURNED value); the group converts *copies* for the comparison instead. A
141
+ * schema that names no group yields an identity group — raw values, raw types.
142
+ */
143
+ function callComparisonGroup(plan) {
144
+ return makeComparisonGroup(plan.operands.map(op => op.getType()), plan.functionSchema.comparesArgs ?? []);
145
+ }
128
146
  /**
129
147
  * Emit `nullif(x, y)` deciding the match exactly as `x = y` would: the pair's
130
- * collation resolves through the shared provenance lattice and the comparator
131
- * routing (declared semantic-ordering type / storage class / runtime temporal
132
- * check) is the one `=`, BETWEEN and simple CASE share. Resolved ONCE at emit,
133
- * never per row. A same-rank explicit/declared collation conflict between the
134
- * two operands throws here, exactly as `x = y` throws for the same pair.
148
+ * cross-type coercion, collation (through the shared provenance lattice) and
149
+ * comparator routing (declared semantic-ordering type / storage class / runtime
150
+ * temporal check) are the ones `=`, BETWEEN and simple CASE share. All resolved
151
+ * ONCE at emit, never per row. A same-rank explicit/declared collation conflict
152
+ * between the two operands throws here, exactly as `x = y` throws for the same
153
+ * pair.
154
+ *
155
+ * The comparison runs over coerced KEYS while the returned value is the raw first
156
+ * argument — `nullif('abc', 1)` compares `0` against `1` (no match) and returns
157
+ * `'abc'`, not the `0` the conversion produced.
135
158
  *
136
159
  * NOTE: that throw happens at emit time, where `=` validates in
137
160
  * `BinaryOpNode.generateType` — the same deferral simple CASE has (see the
@@ -142,13 +165,13 @@ export const coalesceFunc = createScalarFunction({
142
165
  * here. Applies to `emitExtremum` below identically.
143
166
  */
144
167
  function emitNullif(plan, ctx, _defaultEmit) {
145
- const [x, y] = plan.operands;
146
- const collationName = effectiveComparisonCollation(x, y, plan.expression);
147
- const comparator = makeOperandComparator(x.getType().logicalType, y.getType().logicalType, ctx.resolveCollation(collationName));
168
+ const group = callComparisonGroup(plan);
169
+ const collationName = effectiveCollationOfTypes(group.types[0], group.types[1], plan.expression);
170
+ const comparator = makeOperandComparator(group.types[0].logicalType, group.types[1].logicalType, ctx.resolveCollation(collationName));
148
171
  // Same shape as the unemitted default: every comparator route ranks NULL
149
172
  // first (NULL/NULL → 0), so NULL handling is unchanged.
150
173
  function run(_rctx, argX, argY) {
151
- return comparator(argX, argY) === 0 ? null : argX;
174
+ return comparator(group.key(0, argX), group.key(1, argY)) === 0 ? null : argX;
152
175
  }
153
176
  return {
154
177
  params: plan.operands.map(op => emitPlanNode(op, ctx)),
@@ -161,7 +184,10 @@ export const nullifFunc = createScalarFunction({
161
184
  numArgs: 2,
162
185
  deterministic: true,
163
186
  comparesArgs: [0, 1],
164
- // Type inference: return the type of the first argument (nullable)
187
+ returnsArg: true,
188
+ // Type inference: return the type of the first argument (nullable). Honest
189
+ // because `returnsArg` keeps the plan-time cast off that argument — the value
190
+ // handed back really is the first argument as written.
165
191
  inferReturnType: (argTypes) => ({
166
192
  typeClass: 'scalar',
167
193
  logicalType: argTypes[0],
@@ -169,8 +195,16 @@ export const nullifFunc = createScalarFunction({
169
195
  isReadOnly: true
170
196
  })
171
197
  },
172
- // BINARY default for any caller that reaches the implementation without
173
- // emitting; the custom emitter binds the call site's collation + type routing.
198
+ // NOTE: BINARY and UNCOERCED — the plain fallback for any caller that reaches the
199
+ // implementation without emitting; the custom emitter binds the call site's
200
+ // cross-type coercion, collation and type routing. Unreachable today
201
+ // (`emitScalarFunctionCall` always prefers `customEmitter`), and it used to be
202
+ // coerced anyway because the plan-time cast rewrote the arguments before the
203
+ // implementation saw them. If a path ever DOES evaluate a comparison builtin
204
+ // without emitting — a folder that calls `implementation` directly, or a plugin
205
+ // that re-registers one of these names without the emitter — it will silently
206
+ // compare raw values; route it through the emitter instead of duplicating the
207
+ // coercion here. Same applies to `greatest`/`least` below.
174
208
  (argX, argY) => {
175
209
  const comparison = compareSqlValues(argX, argY);
176
210
  return comparison === 0 ? null : argX;
@@ -186,22 +220,17 @@ export const typeofFunc = createScalarFunction({
186
220
  name: 'typeof',
187
221
  numArgs: 1,
188
222
  deterministic: true,
189
- returnType: {
190
- typeClass: 'scalar',
191
- logicalType: TEXT_TYPE,
192
- nullable: false,
193
- isReadOnly: true
194
- }
223
+ returnType: TEXT_RETURN_NOT_NULL
195
224
  }, (arg) => {
196
225
  return getSqlDataTypeName(arg);
197
226
  });
198
227
  // --- random() ---
199
- export const randomFunc = createScalarFunction({ name: 'random', numArgs: 0, deterministic: false }, () => {
228
+ export const randomFunc = createScalarFunction({ name: 'random', numArgs: 0, deterministic: false, returnType: INTEGER_RETURN_NOT_NULL }, () => {
200
229
  const randomInt = Math.floor(Math.random() * (Number.MAX_SAFE_INTEGER - Number.MIN_SAFE_INTEGER + 1)) + Number.MIN_SAFE_INTEGER;
201
230
  return BigInt(randomInt);
202
231
  });
203
232
  // --- randomblob(N) ---
204
- export const randomblobFunc = createScalarFunction({ name: 'randomblob', numArgs: 1, deterministic: false }, (nVal) => {
233
+ export const randomblobFunc = createScalarFunction({ name: 'randomblob', numArgs: 1, deterministic: false, returnType: BLOB_RETURN }, (nVal) => {
205
234
  if (typeof nVal !== 'number' && typeof nVal !== 'bigint')
206
235
  return null;
207
236
  const n = Number(nVal);
@@ -251,14 +280,13 @@ export const sqrtFunc = createScalarFunction({
251
280
  name: 'sqrt',
252
281
  numArgs: 1,
253
282
  deterministic: true,
254
- // Type inference: sqrt always returns REAL (even for INTEGER input)
255
- inferReturnType: (argTypes) => ({
256
- typeClass: 'scalar',
257
- logicalType: argTypes[0].name === 'INTEGER' ? argTypes[0] : argTypes[0], // Keep input type
258
- nullable: false,
259
- isReadOnly: true
260
- }),
261
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
283
+ // REAL rather than inferred-from-input, for the same reason as pow/power below:
284
+ // Math.sqrt is not closed over the integers, so `sqrt(int_col)` claiming INTEGER
285
+ // is a lie the write path acts on — it would skip conversion and store
286
+ // 1.4142135623730951 in an INTEGER column. Nullable because a negative or NULL
287
+ // argument yields NULL.
288
+ returnType: REAL_RETURN,
289
+ validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
262
290
  }, (arg) => {
263
291
  if (arg === null)
264
292
  return null;
@@ -277,8 +305,10 @@ const pow = (base, exponent) => {
277
305
  return null;
278
306
  return Math.pow(numBase, numExp);
279
307
  };
280
- export const powFunc = createScalarFunction({ name: 'pow', numArgs: 2, deterministic: true }, pow);
281
- export const powerFunc = createScalarFunction({ name: 'power', numArgs: 2, deterministic: true }, pow);
308
+ // REAL rather than inferred-from-input: unlike abs/round/floor/ceil, Math.pow is not
309
+ // closed over the integers (`pow(2, -1)` is 0.5), so the input type is not the answer.
310
+ export const powFunc = createScalarFunction({ name: 'pow', numArgs: 2, deterministic: true, returnType: REAL_RETURN }, pow);
311
+ export const powerFunc = createScalarFunction({ name: 'power', numArgs: 2, deterministic: true, returnType: REAL_RETURN }, pow);
282
312
  // --- floor(X) ---
283
313
  export const floorFunc = createScalarFunction({
284
314
  name: 'floor',
@@ -291,7 +321,7 @@ export const floorFunc = createScalarFunction({
291
321
  nullable: false,
292
322
  isReadOnly: true
293
323
  }),
294
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
324
+ validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
295
325
  }, (arg) => {
296
326
  if (arg === null)
297
327
  return null;
@@ -316,7 +346,7 @@ const ceilTypeInference = {
316
346
  nullable: false,
317
347
  isReadOnly: true
318
348
  }),
319
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
349
+ validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
320
350
  };
321
351
  export const ceilFunc = createScalarFunction({ name: 'ceil', numArgs: 1, deterministic: true, ...ceilTypeInference }, ceil);
322
352
  export const ceilingFunc = createScalarFunction({ name: 'ceiling', numArgs: 1, deterministic: true, ...ceilTypeInference }, ceil);
@@ -332,8 +362,13 @@ export const clampFunc = createScalarFunction({
332
362
  nullable: true,
333
363
  isReadOnly: true
334
364
  }),
335
- validateArgTypes: (argTypes) => argTypes[0].isNumeric === true && argTypes[1].isNumeric === true && argTypes[2].isNumeric === true
365
+ validateArgTypes: (argTypes) => argTypes.every(isNumericOrUnknownType)
336
366
  }, (value, min, max) => {
367
+ // Unlike the other numeric builtins, clamp's arguments reach Number() together,
368
+ // so the null short-circuit has to be explicit: Number(null) is 0, which would
369
+ // make clamp(null, 1, 2) return 1 instead of null.
370
+ if (value === null || min === null || max === null)
371
+ return null;
337
372
  const v = Number(value);
338
373
  const minVal = Number(min);
339
374
  const maxVal = Number(max);
@@ -344,34 +379,47 @@ export const clampFunc = createScalarFunction({
344
379
  // --- greatest(...) / least(...) ---
345
380
  /**
346
381
  * Emit `greatest`/`least` ranking the whole argument group the way `order by`
347
- * would rank a column of the group's declared type and collation. ONE collation
348
- * resolves for the group through the lattice's N-ary merge
349
- * (`effectiveGroupCollation` — a same-rank explicit/declared conflict among the
350
- * arguments throws, matching `=`), and ONE comparator serves the fold, routed by
351
- * `makeGroupComparator` — the N-ary form of the same rule `=`, BETWEEN and
352
- * simple CASE route through, so a TIMESPAN column ranked against a bare text
353
- * literal still compares by elapsed time. `direction` is +1 for greatest, -1
354
- * for least — sharing the comparator keeps the two directions mirror images.
382
+ * would rank a column of the group's declared type and collation. The group's
383
+ * cross-type coercion, ONE collation (through the lattice's N-ary merge
384
+ * `effectiveGroupCollation` — a same-rank explicit/declared conflict among the
385
+ * arguments throws, matching `=`) and ONE comparator (`makeGroupComparator`, the
386
+ * N-ary form of the rule `=`, BETWEEN and simple CASE route through, so a TIMESPAN
387
+ * column ranked against a bare text literal still compares by elapsed time) all
388
+ * resolve once at emit. `direction` is +1 for greatest, -1 for least — sharing the
389
+ * comparator keeps the two directions mirror images.
355
390
  *
356
- * The fold is byte-for-byte the unemitted default's reduce with only the
357
- * comparator swapped, so NULL handling is unchanged. Ties under a non-BINARY
358
- * comparator leave which raw value survives unspecified (same latitude as the
359
- * min/max aggregate, DISTINCT, and GROUP BY).
391
+ * The fold ranks coerced KEYS but tracks the winning INDEX and returns the raw
392
+ * argument there, so `greatest(t, 1)` over the stored text `'3'` hands back `'3'`
393
+ * rather than the integer the conversion produced. Arguments whose KEY is null
394
+ * are skipped entirely — the running best is never a NULL key — matching
395
+ * `min`/`max` and the window MIN/MAX, so `greatest`/`least` agree with each
396
+ * other and the answer never depends on where a NULL sits in the argument
397
+ * list. That is the argument itself for an uncoerced group; in a coerced one it
398
+ * also covers an argument the conversion nulls (`cast('' as integer)`), which
399
+ * `greatest` already skipped before this fold was made symmetric. A call with
400
+ * no surviving key (all-NULL, or no arguments) yields NULL. Ties under a non-BINARY
401
+ * comparator leave which argument survives unspecified (same latitude as the
402
+ * min/max aggregate, DISTINCT, and GROUP BY) — but it is always one of the
403
+ * arguments.
360
404
  */
361
405
  function emitExtremum(direction) {
362
406
  return (plan, ctx, _defaultEmit) => {
363
- const types = plan.operands.map(op => op.getType());
364
- const collationName = effectiveGroupCollation(types, plan.expression);
365
- const compare = makeGroupComparator(types.map(t => t.logicalType), ctx.resolveCollation(collationName));
407
+ const group = callComparisonGroup(plan);
408
+ const collationName = effectiveGroupCollation(group.types, plan.expression);
409
+ const compare = makeGroupComparator(group.types.map(t => t.logicalType), ctx.resolveCollation(collationName));
366
410
  function run(_rctx, ...args) {
367
- if (args.length === 0)
368
- return null;
369
- return args.reduce((best, current) => {
370
- if (best === null || compare(current, best) * direction > 0) {
371
- return current;
411
+ let bestIndex = -1;
412
+ let bestKey = null;
413
+ for (let i = 0; i < args.length; i++) {
414
+ const currentKey = group.key(i, args[i]);
415
+ if (currentKey === null)
416
+ continue;
417
+ if (bestIndex === -1 || compare(currentKey, bestKey) * direction > 0) {
418
+ bestIndex = i;
419
+ bestKey = currentKey;
372
420
  }
373
- return best;
374
- }, args[0]);
421
+ }
422
+ return bestIndex === -1 ? null : args[bestIndex];
375
423
  }
376
424
  return {
377
425
  params: plan.operands.map(op => emitPlanNode(op, ctx)),
@@ -380,31 +428,54 @@ function emitExtremum(direction) {
380
428
  };
381
429
  };
382
430
  }
431
+ /**
432
+ * Declared return type of `greatest`/`least`. The fold returns one of its
433
+ * arguments verbatim (`returnsArg`), so the declaration must cover every argument
434
+ * it could pick: only an all-same or an all-numeric group has a type that does.
435
+ * A mixed-category group (`greatest(int_col, '2')` can return the text `'2'`)
436
+ * declares ANY rather than {@link findCommonType}'s first-argument fallback, which
437
+ * would advertise INTEGER for a value that is text.
438
+ *
439
+ * A NULL-typed argument contributes no value the declaration has to cover — the
440
+ * only thing it can win with is NULL, which `nullable: true` already allows — so
441
+ * it is dropped before the test rather than dragged into a mixed-category ANY:
442
+ * `greatest(int_col, null)` stays INTEGER.
443
+ */
444
+ function extremumReturnType(argTypes) {
445
+ const valued = argTypes.filter(t => t.name !== NULL_TYPE.name);
446
+ // Nothing but NULLs (or no arguments at all) — findCommonType already answers
447
+ // NULL / ANY respectively.
448
+ if (valued.length === 0)
449
+ return findCommonType(argTypes);
450
+ const allSame = valued.every(t => t.name === valued[0].name);
451
+ const allNumeric = valued.every(t => t.isNumeric === true);
452
+ return allSame || allNumeric ? findCommonType(valued) : ANY_TYPE;
453
+ }
383
454
  // Greatest-of function
384
455
  export const greatestFunc = createScalarFunction({
385
456
  name: 'greatest',
386
457
  numArgs: -1,
387
458
  deterministic: true,
388
459
  comparesArgs: 'all',
389
- // Type inference: find the common type among all arguments
460
+ returnsArg: true,
461
+ // Type inference: the common type when every argument shares one, else ANY
390
462
  inferReturnType: (argTypes) => ({
391
463
  typeClass: 'scalar',
392
- logicalType: findCommonType(argTypes),
464
+ logicalType: extremumReturnType(argTypes),
393
465
  nullable: true,
394
466
  isReadOnly: true
395
467
  })
396
468
  },
397
- // BINARY default for any caller that reaches the implementation without
398
- // emitting; the custom emitter binds the group's collation + type routing.
469
+ // BINARY, uncoerced fallback — see the NOTE on `nullif`'s implementation above.
399
470
  (...args) => {
400
- if (args.length === 0)
401
- return null;
402
471
  return args.reduce((max, current) => {
472
+ if (current === null)
473
+ return max;
403
474
  if (max === null || compareSqlValues(current, max) > 0) {
404
475
  return current;
405
476
  }
406
477
  return max;
407
- }, args[0]);
478
+ }, null);
408
479
  });
409
480
  greatestFunc.customEmitter = emitExtremum(1);
410
481
  // Least-of function
@@ -413,25 +484,25 @@ export const leastFunc = createScalarFunction({
413
484
  numArgs: -1,
414
485
  deterministic: true,
415
486
  comparesArgs: 'all',
416
- // Type inference: find the common type among all arguments
487
+ returnsArg: true,
488
+ // Type inference: the common type when every argument shares one, else ANY
417
489
  inferReturnType: (argTypes) => ({
418
490
  typeClass: 'scalar',
419
- logicalType: findCommonType(argTypes),
491
+ logicalType: extremumReturnType(argTypes),
420
492
  nullable: true,
421
493
  isReadOnly: true
422
494
  })
423
495
  },
424
- // BINARY default for any caller that reaches the implementation without
425
- // emitting; the custom emitter binds the group's collation + type routing.
496
+ // BINARY, uncoerced fallback — see the NOTE on `nullif`'s implementation above.
426
497
  (...args) => {
427
- if (args.length === 0)
428
- return null;
429
498
  return args.reduce((min, current) => {
499
+ if (current === null)
500
+ return min;
430
501
  if (min === null || compareSqlValues(current, min) < 0) {
431
502
  return current;
432
503
  }
433
504
  return min;
434
- }, args[0]);
505
+ }, null);
435
506
  });
436
507
  leastFunc.customEmitter = emitExtremum(-1);
437
508
  // Choose function
@@ -1 +1 @@
1
- {"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../../../src/func/builtins/scalar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../../../src/func/builtins/scalar.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/func/builtins/schema.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAwF/D,eAAO,MAAM,UAAU,8DAyHtB,CAAC;AAGF,eAAO,MAAM,aAAa,8DA4DzB,CAAC;AAGF,eAAO,MAAM,kBAAkB,8DAiF9B,CAAC;AAGF,eAAO,MAAM,aAAa,8DAoEzB,CAAC;AAGF,eAAO,MAAM,uBAAuB,8DAmDnC,CAAC;AAGF,eAAO,MAAM,wBAAwB,8DAwDpC,CAAC;AAGF,eAAO,MAAM,iBAAiB,8DAoC7B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAMnE;AAeD,eAAO,MAAM,gBAAgB,8DA4C5B,CAAC;AAmVF,eAAO,MAAM,YAAY,8DA0DxB,CAAC;AAiSF,eAAO,MAAM,cAAc,8DA4C1B,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/func/builtins/schema.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAyF/D,eAAO,MAAM,UAAU,8DAgItB,CAAC;AAGF,eAAO,MAAM,aAAa,8DA4DzB,CAAC;AAGF,eAAO,MAAM,kBAAkB,8DAiF9B,CAAC;AAGF,eAAO,MAAM,aAAa,8DAoEzB,CAAC;AAGF,eAAO,MAAM,uBAAuB,8DAmDnC,CAAC;AAGF,eAAO,MAAM,wBAAwB,8DAwDpC,CAAC;AAGF,eAAO,MAAM,iBAAiB,8DAwC7B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAMnE;AAeD,eAAO,MAAM,gBAAgB,8DA4C5B,CAAC;AAwWF,eAAO,MAAM,YAAY,8DA0DxB,CAAC;AAkSF,eAAO,MAAM,cAAc,8DA4C1B,CAAC"}
@@ -3,7 +3,7 @@ import { QuereusError } from "../../common/errors.js";
3
3
  import { StatusCode } from "../../common/types.js";
4
4
  import { isScalarFunctionSchema, isTableValuedFunctionSchema, isAggregateFunctionSchema } from "../../schema/function.js";
5
5
  import { isWindowFunction } from "../../schema/window-function.js";
6
- import { exposedImplicitIndexes } from "../../schema/catalog.js";
6
+ import { exposedImplicitIndexes, isHiddenImplicitIndex } from "../../schema/catalog.js";
7
7
  import { isMaintainedTable } from "../../schema/derivation.js";
8
8
  import { generateMaintainedTableDDL } from "../../schema/ddl-generator.js";
9
9
  import { INTEGER_TYPE, TEXT_TYPE } from "../../types/builtin-types.js";
@@ -12,6 +12,7 @@ import { RowOpFlag } from "../../schema/table.js";
12
12
  import { jsonStringify } from "../../util/serialization.js";
13
13
  import { expressionToString } from "../../emit/ast-stringify.js";
14
14
  import { createLogger } from "../../common/logger.js";
15
+ import { firstDataModifyingCte } from "../../parser/utils.js";
15
16
  import { TableReferenceNode } from "../../planner/nodes/reference.js";
16
17
  import { isJoinBody, isDecomposableJoinBody } from "../../planner/mutation/multi-source.js";
17
18
  import { isSetOpMembershipBody, isSetOpBranchWritable, setOpHasSubtreeOperand, setOpJoinLegsInsertable, surfacedInnerFlagNames, isSetOpFlaglessWritableBody, flaglessDiscriminatorColumnNames } from "../../planner/mutation/set-op.js";
@@ -132,9 +133,17 @@ export const schemaFunc = createIntegratedTableValuedFunction({
132
133
  createSql,
133
134
  tagsToJson(tableSchema.tags)
134
135
  ];
135
- // Process Indexes for this table
136
+ // Process Indexes for this table. A hidden implicit covering structure
137
+ // (a plain UNIQUE's auto-built index) is a backing detail, not a
138
+ // user-addressable index — same rule `collectSchemaCatalog` applies.
139
+ // NOTE: `isHiddenImplicitIndex` rebuilds the table's exposure map per
140
+ // call, so this is O(indexes × unique constraints) per table; if a
141
+ // table ever carries enough of both to matter, hoist the map the way
142
+ // `collectSchemaCatalog` does.
136
143
  if (tableSchema.indexes) {
137
144
  for (const indexSchema of tableSchema.indexes) {
145
+ if (isHiddenImplicitIndex(tableSchema, indexSchema.name))
146
+ continue;
138
147
  yield [
139
148
  schemaName,
140
149
  'index',
@@ -371,7 +380,7 @@ export const indexInfoFunc = createIntegratedTableValuedFunction({
371
380
  // matches across backends. Synthetic descriptors carry no `unique` flag —
372
381
  // UNIQUE enforcement routes through `uniqueConstraints` — so they report
373
382
  // `unique = 0`, mirroring the memory materialized entry.
374
- const realIndexes = table.indexes ?? [];
383
+ const realIndexes = (table.indexes ?? []).filter(idx => !isHiddenImplicitIndex(table, idx.name));
375
384
  const synthetic = exposedImplicitIndexes(table);
376
385
  if (realIndexes.length === 0 && synthetic.length === 0)
377
386
  return;
@@ -506,6 +515,7 @@ export const assertionInfoFunc = createIntegratedTableValuedFunction({
506
515
  isReadOnly: true,
507
516
  isSet: false,
508
517
  columns: [
518
+ { name: 'schema_name', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
509
519
  { name: 'name', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
510
520
  { name: 'violation_sql', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
511
521
  { name: 'deferrable', type: { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false, isReadOnly: true }, generated: true },
@@ -517,12 +527,15 @@ export const assertionInfoFunc = createIntegratedTableValuedFunction({
517
527
  },
518
528
  relationalAdvertisement: {
519
529
  isSet: true,
520
- keys: [[{ index: 0 }]],
530
+ // Assertion names are unique per schema, not globally — the honest key
531
+ // is the (schema_name, name) pair.
532
+ keys: [[{ index: 0 }, { index: 1 }]],
521
533
  },
522
534
  }, async function* (db) {
523
535
  for (const assertion of db.schemaManager.getAllAssertions()) {
524
536
  const deps = assertion.dependentTables ?? [];
525
537
  yield [
538
+ assertion.schemaName,
526
539
  assertion.name,
527
540
  assertion.violationSql,
528
541
  assertion.deferrable ? 1 : 0,
@@ -653,6 +666,18 @@ function buildTableRefsById(nodes) {
653
666
  }
654
667
  return tableRefsById;
655
668
  }
669
+ /**
670
+ * True when the view body's own `WITH` clause defines a data-modifying block — an
671
+ * `insert`/`update`/`delete … returning` CTE. The static shadow of the dynamic write
672
+ * path's `rejectDataModifyingBodyCTE` gate, so `view_info` reports the conservative row
673
+ * for a shape every write through it rejects. Both read the same predicate
674
+ * (`firstDataModifyingCte`) so the two cannot drift apart.
675
+ */
676
+ function hasDataModifyingBodyCte(selectAst) {
677
+ if (selectAst.type !== 'select' || !selectAst.withClause)
678
+ return false;
679
+ return firstDataModifyingCte(selectAst.withClause) !== undefined;
680
+ }
656
681
  /** Record `baseColumn` (lowercased) as defaultable for base table `table`. */
657
682
  function addDefaultable(map, table, baseColumn) {
658
683
  const set = map.get(table) ?? new Set();
@@ -673,7 +698,16 @@ function addDefaultable(map, table, baseColumn) {
673
698
  * caching is a later optimization.
674
699
  */
675
700
  function deriveViewInfo(db, view) {
676
- const { plan } = db._buildPlan([view.selectAst]);
701
+ // Data-modifying body `with` block (`with m as (insert … returning …)`): the body plans
702
+ // fine — and its lineage may look perfectly writable — but every write through the view
703
+ // is rejected up front (`unsupported-body-cte-dml`, `rejectDataModifyingBodyCTE` in
704
+ // `planner/building/view-mutation-builder.ts`), so reporting anything but the conservative
705
+ // row would over-claim. Mirrors the `isJoinBody && !isDecomposableJoinBody` shape gate below;
706
+ // answered from the AST alone, so it runs BEFORE the body re-plan below rather than after it.
707
+ if (hasDataModifyingBodyCte(view.selectAst))
708
+ return CONSERVATIVE_VIEW_INFO;
709
+ // Home-schema path: the body's unqualified names resolve next to the view.
710
+ const { plan } = db._buildPlan([view.selectAst], undefined, db._homeSchemaPath(view.schemaName));
677
711
  const root = plan.getRelations()[0];
678
712
  if (!root)
679
713
  return CONSERVATIVE_VIEW_INFO;
@@ -708,7 +742,7 @@ function deriveViewInfo(db, view) {
708
742
  // operand is a subtree: inserting into a multi-leaf subtree has no single deterministic
709
743
  // target leaf (product-coordinate addressing — `set-op-membership-nested`).
710
744
  const isInsertableInto = !setOpHasSubtreeOperand(view.selectAst)
711
- && setOpJoinLegsInsertable(db._buildProbeContext(), viewAsMutable);
745
+ && setOpJoinLegsInsertable(db._buildProbeContext(undefined, db._homeSchemaPath(view.schemaName)), viewAsMutable);
712
746
  return { isInsertableInto, isUpdatable: true, isDeletable: true, effectiveTargets: targets };
713
747
  }
714
748
  // Flag-less predicate-honest set-op body (`set-op-flagless-predicate-honest-writes`): a
@@ -726,7 +760,7 @@ function deriveViewInfo(db, view) {
726
760
  // a body whose join legs are ALL insertable — re-derived dynamically by
727
761
  // `setOpJoinLegsInsertable` (NO for a composite-key / no-default / non-equi join leg) —
728
762
  // matching the dynamic `buildFlaglessInsert`; UPDATE / DELETE through the join leg stay YES.
729
- const isInsertableInto = setOpJoinLegsInsertable(db._buildProbeContext(), viewAsMutable);
763
+ const isInsertableInto = setOpJoinLegsInsertable(db._buildProbeContext(undefined, db._homeSchemaPath(view.schemaName)), viewAsMutable);
730
764
  return { isInsertableInto, isUpdatable: true, isDeletable: true, effectiveTargets: targets };
731
765
  }
732
766
  // Non-decomposable join shape gate: cross / comma (implicit) / subquery- or
@@ -1071,7 +1105,8 @@ function deriveColumnInfo(db, name) {
1071
1105
  * attribute names the AST probes report.
1072
1106
  */
1073
1107
  function deriveBodyColumnRows(db, schemaName, objectName, selectAst, columnNames) {
1074
- const { plan } = db._buildPlan([selectAst]);
1108
+ // Home-schema path: the body's unqualified names resolve next to the owner.
1109
+ const { plan } = db._buildPlan([selectAst], undefined, db._homeSchemaPath(schemaName));
1075
1110
  const root = plan.getRelations()[0];
1076
1111
  if (!root)
1077
1112
  return [];