kysely 0.22.0 → 0.23.1

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 (358) hide show
  1. package/CONTRIBUTING.md +70 -0
  2. package/README.md +25 -2
  3. package/dist/cjs/dialect/database-introspector.d.ts +4 -0
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +6 -3
  5. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  6. package/dist/cjs/dialect/postgres/postgres-driver.js +7 -2
  7. package/dist/cjs/dialect/postgres/postgres-introspector.js +8 -0
  8. package/dist/cjs/dialect/sqlite/sqlite-driver.js +4 -3
  9. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
  10. package/dist/cjs/driver/database-connection.d.ts +6 -2
  11. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +2 -3
  12. package/dist/cjs/dynamic/dynamic-reference-builder.js +1 -1
  13. package/dist/cjs/expression/expression.d.ts +100 -0
  14. package/dist/cjs/expression/expression.js +16 -0
  15. package/dist/cjs/index.d.ts +10 -6
  16. package/dist/cjs/index.js +8 -2
  17. package/dist/cjs/migration/file-migration-provider.js +5 -3
  18. package/dist/cjs/operation-node/aggregate-function-node.d.ts +7 -4
  19. package/dist/cjs/operation-node/aggregate-function-node.js +17 -0
  20. package/dist/cjs/operation-node/alias-node.d.ts +3 -11
  21. package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
  22. package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
  23. package/dist/cjs/operation-node/alter-table-node.js +9 -1
  24. package/dist/cjs/operation-node/and-node.d.ts +3 -4
  25. package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
  26. package/dist/cjs/operation-node/binary-operation-node.js +20 -0
  27. package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
  28. package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
  29. package/dist/cjs/operation-node/column-definition-node.js +16 -0
  30. package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
  31. package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
  32. package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
  33. package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
  34. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  35. package/dist/cjs/operation-node/create-type-node.js +1 -2
  36. package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
  37. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
  38. package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
  39. package/dist/cjs/operation-node/drop-type-node.js +1 -2
  40. package/dist/cjs/operation-node/explain-node.d.ts +2 -4
  41. package/dist/cjs/operation-node/explain-node.js +1 -1
  42. package/dist/cjs/operation-node/from-node.d.ts +3 -4
  43. package/dist/cjs/operation-node/generated-node.d.ts +2 -3
  44. package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
  45. package/dist/cjs/operation-node/having-node.d.ts +3 -4
  46. package/dist/cjs/operation-node/having-node.js +4 -4
  47. package/dist/cjs/operation-node/insert-query-node.d.ts +1 -5
  48. package/dist/cjs/operation-node/join-node.d.ts +5 -9
  49. package/dist/cjs/operation-node/join-node.js +6 -6
  50. package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
  51. package/dist/cjs/operation-node/on-conflict-node.js +12 -12
  52. package/dist/cjs/operation-node/on-node.d.ts +3 -4
  53. package/dist/cjs/operation-node/on-node.js +4 -4
  54. package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -2
  55. package/dist/cjs/operation-node/operation-node-transformer.js +22 -15
  56. package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -2
  57. package/dist/cjs/operation-node/operation-node-visitor.js +2 -1
  58. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  59. package/dist/cjs/operation-node/operator-node.d.ts +5 -3
  60. package/dist/cjs/operation-node/operator-node.js +3 -5
  61. package/dist/cjs/operation-node/or-node.d.ts +3 -4
  62. package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
  63. package/dist/cjs/operation-node/parens-node.d.ts +2 -3
  64. package/dist/cjs/operation-node/partition-by-item-node.d.ts +3 -4
  65. package/dist/cjs/operation-node/query-node.d.ts +2 -3
  66. package/dist/cjs/operation-node/query-node.js +6 -6
  67. package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
  68. package/dist/cjs/operation-node/select-modifier-node.js +1 -1
  69. package/dist/cjs/operation-node/select-query-node.d.ts +5 -6
  70. package/dist/cjs/operation-node/select-query-node.js +10 -10
  71. package/dist/cjs/operation-node/selection-node.d.ts +2 -3
  72. package/dist/cjs/operation-node/set-operation-node.d.ts +2 -5
  73. package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
  74. package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
  75. package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
  76. package/dist/cjs/operation-node/unary-operation-node.js +19 -0
  77. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  78. package/dist/cjs/operation-node/value-list-node.d.ts +2 -9
  79. package/dist/cjs/operation-node/where-node.d.ts +3 -4
  80. package/dist/cjs/operation-node/where-node.js +4 -4
  81. package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
  82. package/dist/cjs/parser/binary-operation-parser.js +99 -0
  83. package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
  84. package/dist/cjs/parser/coalesce-parser.js +11 -0
  85. package/dist/cjs/parser/data-type-parser.d.ts +5 -5
  86. package/dist/cjs/parser/default-value-parser.d.ts +4 -5
  87. package/dist/cjs/parser/default-value-parser.js +2 -2
  88. package/dist/cjs/parser/expression-parser.d.ts +10 -0
  89. package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
  90. package/dist/cjs/parser/identifier-parser.d.ts +2 -0
  91. package/dist/cjs/parser/identifier-parser.js +23 -0
  92. package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
  93. package/dist/cjs/parser/insert-values-parser.js +2 -2
  94. package/dist/cjs/parser/join-parser.js +2 -2
  95. package/dist/cjs/parser/order-by-parser.d.ts +2 -2
  96. package/dist/cjs/parser/reference-parser.d.ts +14 -14
  97. package/dist/cjs/parser/reference-parser.js +12 -9
  98. package/dist/cjs/parser/select-parser.d.ts +6 -7
  99. package/dist/cjs/parser/select-parser.js +2 -2
  100. package/dist/cjs/parser/set-operation-parser.d.ts +2 -4
  101. package/dist/cjs/parser/table-parser.d.ts +11 -12
  102. package/dist/cjs/parser/table-parser.js +2 -2
  103. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
  104. package/dist/cjs/parser/unary-operation-parser.js +17 -0
  105. package/dist/cjs/parser/update-set-parser.d.ts +1 -1
  106. package/dist/cjs/parser/value-parser.d.ts +5 -9
  107. package/dist/cjs/parser/value-parser.js +4 -4
  108. package/dist/cjs/parser/with-parser.d.ts +3 -4
  109. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  110. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +245 -14
  111. package/dist/cjs/query-builder/aggregate-function-builder.js +164 -12
  112. package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
  113. package/dist/cjs/query-builder/delete-query-builder.js +19 -16
  114. package/dist/cjs/query-builder/function-module.d.ts +123 -22
  115. package/dist/cjs/query-builder/function-module.js +91 -48
  116. package/dist/cjs/query-builder/having-interface.d.ts +9 -8
  117. package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
  118. package/dist/cjs/query-builder/insert-query-builder.js +11 -9
  119. package/dist/cjs/query-builder/insert-result.d.ts +8 -1
  120. package/dist/cjs/query-builder/insert-result.js +12 -1
  121. package/dist/cjs/query-builder/join-builder.d.ts +9 -8
  122. package/dist/cjs/query-builder/join-builder.js +10 -9
  123. package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
  124. package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
  125. package/dist/cjs/query-builder/select-query-builder.d.ts +82 -51
  126. package/dist/cjs/query-builder/select-query-builder.js +39 -37
  127. package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
  128. package/dist/cjs/query-builder/update-query-builder.js +19 -16
  129. package/dist/cjs/query-builder/where-interface.d.ts +12 -11
  130. package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
  131. package/dist/cjs/query-compiler/default-query-compiler.d.ts +5 -3
  132. package/dist/cjs/query-compiler/default-query-compiler.js +37 -33
  133. package/dist/cjs/query-executor/query-executor-base.js +16 -1
  134. package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
  135. package/dist/cjs/raw-builder/raw-builder.js +24 -14
  136. package/dist/cjs/raw-builder/sql.d.ts +4 -4
  137. package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
  138. package/dist/cjs/schema/alter-column-builder.js +55 -0
  139. package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
  140. package/dist/cjs/schema/alter-table-builder.js +63 -278
  141. package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
  142. package/dist/cjs/schema/column-definition-builder.js +189 -0
  143. package/dist/cjs/schema/create-index-builder.d.ts +3 -3
  144. package/dist/cjs/schema/create-index-builder.js +7 -7
  145. package/dist/cjs/schema/create-schema-builder.d.ts +1 -1
  146. package/dist/cjs/schema/create-schema-builder.js +2 -2
  147. package/dist/cjs/schema/create-table-builder.d.ts +39 -6
  148. package/dist/cjs/schema/create-table-builder.js +47 -12
  149. package/dist/cjs/schema/create-type-builder.d.ts +1 -1
  150. package/dist/cjs/schema/create-type-builder.js +2 -2
  151. package/dist/cjs/schema/create-view-builder.d.ts +4 -3
  152. package/dist/cjs/schema/create-view-builder.js +7 -7
  153. package/dist/cjs/schema/drop-index-builder.d.ts +1 -1
  154. package/dist/cjs/schema/drop-index-builder.js +4 -4
  155. package/dist/cjs/schema/drop-schema-builder.d.ts +1 -1
  156. package/dist/cjs/schema/drop-schema-builder.js +3 -3
  157. package/dist/cjs/schema/drop-table-builder.d.ts +1 -1
  158. package/dist/cjs/schema/drop-table-builder.js +3 -3
  159. package/dist/cjs/schema/drop-type-builder.d.ts +1 -1
  160. package/dist/cjs/schema/drop-type-builder.js +2 -2
  161. package/dist/cjs/schema/drop-view-builder.d.ts +1 -1
  162. package/dist/cjs/schema/drop-view-builder.js +4 -4
  163. package/dist/cjs/schema/schema.d.ts +2 -2
  164. package/dist/cjs/schema/schema.js +14 -13
  165. package/dist/cjs/util/compilable.d.ts +2 -2
  166. package/dist/cjs/util/explainable.d.ts +2 -2
  167. package/dist/cjs/util/infer-result.d.ts +46 -0
  168. package/dist/cjs/util/infer-result.js +2 -0
  169. package/dist/cjs/util/log-once.d.ts +5 -0
  170. package/dist/cjs/util/log-once.js +16 -0
  171. package/dist/cjs/util/object-utils.d.ts +1 -0
  172. package/dist/cjs/util/object-utils.js +5 -1
  173. package/dist/cjs/util/type-utils.d.ts +3 -17
  174. package/dist/esm/dialect/database-introspector.d.ts +4 -0
  175. package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
  176. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  177. package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
  178. package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
  179. package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
  180. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  181. package/dist/esm/driver/database-connection.d.ts +6 -2
  182. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
  183. package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
  184. package/dist/esm/expression/expression.d.ts +100 -0
  185. package/dist/esm/expression/expression.js +12 -0
  186. package/dist/esm/index.d.ts +10 -6
  187. package/dist/esm/index.js +6 -2
  188. package/dist/esm/migration/file-migration-provider.js +5 -3
  189. package/dist/esm/operation-node/aggregate-function-node.d.ts +7 -4
  190. package/dist/esm/operation-node/aggregate-function-node.js +17 -0
  191. package/dist/esm/operation-node/alias-node.d.ts +3 -11
  192. package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
  193. package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
  194. package/dist/esm/operation-node/alter-table-node.js +9 -1
  195. package/dist/esm/operation-node/and-node.d.ts +3 -4
  196. package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
  197. package/dist/esm/operation-node/binary-operation-node.js +18 -0
  198. package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
  199. package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
  200. package/dist/esm/operation-node/column-definition-node.js +16 -0
  201. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  202. package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
  203. package/dist/esm/operation-node/create-index-node.d.ts +1 -3
  204. package/dist/esm/operation-node/create-table-node.d.ts +4 -5
  205. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  206. package/dist/esm/operation-node/create-type-node.js +1 -2
  207. package/dist/esm/operation-node/default-value-node.d.ts +2 -4
  208. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  209. package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
  210. package/dist/esm/operation-node/drop-type-node.js +1 -2
  211. package/dist/esm/operation-node/explain-node.d.ts +2 -4
  212. package/dist/esm/operation-node/explain-node.js +1 -1
  213. package/dist/esm/operation-node/from-node.d.ts +3 -4
  214. package/dist/esm/operation-node/generated-node.d.ts +2 -3
  215. package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
  216. package/dist/esm/operation-node/having-node.d.ts +3 -4
  217. package/dist/esm/operation-node/having-node.js +4 -4
  218. package/dist/esm/operation-node/insert-query-node.d.ts +1 -5
  219. package/dist/esm/operation-node/join-node.d.ts +5 -9
  220. package/dist/esm/operation-node/join-node.js +6 -6
  221. package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
  222. package/dist/esm/operation-node/on-conflict-node.js +12 -12
  223. package/dist/esm/operation-node/on-node.d.ts +3 -4
  224. package/dist/esm/operation-node/on-node.js +4 -4
  225. package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
  226. package/dist/esm/operation-node/operation-node-transformer.js +22 -15
  227. package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
  228. package/dist/esm/operation-node/operation-node-visitor.js +2 -1
  229. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  230. package/dist/esm/operation-node/operator-node.d.ts +5 -3
  231. package/dist/esm/operation-node/operator-node.js +2 -4
  232. package/dist/esm/operation-node/or-node.d.ts +3 -4
  233. package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
  234. package/dist/esm/operation-node/parens-node.d.ts +2 -3
  235. package/dist/esm/operation-node/partition-by-item-node.d.ts +3 -4
  236. package/dist/esm/operation-node/query-node.d.ts +2 -3
  237. package/dist/esm/operation-node/query-node.js +6 -6
  238. package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
  239. package/dist/esm/operation-node/select-modifier-node.js +1 -1
  240. package/dist/esm/operation-node/select-query-node.d.ts +5 -6
  241. package/dist/esm/operation-node/select-query-node.js +10 -10
  242. package/dist/esm/operation-node/selection-node.d.ts +2 -3
  243. package/dist/esm/operation-node/set-operation-node.d.ts +2 -5
  244. package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
  245. package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
  246. package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
  247. package/dist/esm/operation-node/unary-operation-node.js +17 -0
  248. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  249. package/dist/esm/operation-node/value-list-node.d.ts +2 -9
  250. package/dist/esm/operation-node/where-node.d.ts +3 -4
  251. package/dist/esm/operation-node/where-node.js +4 -4
  252. package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
  253. package/dist/esm/parser/binary-operation-parser.js +92 -0
  254. package/dist/esm/parser/coalesce-parser.d.ts +4 -0
  255. package/dist/esm/parser/coalesce-parser.js +8 -0
  256. package/dist/esm/parser/data-type-parser.d.ts +5 -5
  257. package/dist/esm/parser/default-value-parser.d.ts +4 -5
  258. package/dist/esm/parser/default-value-parser.js +2 -2
  259. package/dist/esm/parser/expression-parser.d.ts +10 -0
  260. package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
  261. package/dist/esm/parser/identifier-parser.d.ts +2 -0
  262. package/dist/esm/parser/identifier-parser.js +20 -0
  263. package/dist/esm/parser/insert-values-parser.d.ts +1 -1
  264. package/dist/esm/parser/insert-values-parser.js +2 -2
  265. package/dist/esm/parser/join-parser.js +2 -2
  266. package/dist/esm/parser/order-by-parser.d.ts +2 -2
  267. package/dist/esm/parser/reference-parser.d.ts +14 -14
  268. package/dist/esm/parser/reference-parser.js +10 -8
  269. package/dist/esm/parser/select-parser.d.ts +6 -7
  270. package/dist/esm/parser/select-parser.js +2 -2
  271. package/dist/esm/parser/set-operation-parser.d.ts +2 -4
  272. package/dist/esm/parser/table-parser.d.ts +11 -12
  273. package/dist/esm/parser/table-parser.js +2 -2
  274. package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
  275. package/dist/esm/parser/unary-operation-parser.js +13 -0
  276. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  277. package/dist/esm/parser/value-parser.d.ts +5 -9
  278. package/dist/esm/parser/value-parser.js +4 -4
  279. package/dist/esm/parser/with-parser.d.ts +3 -4
  280. package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
  281. package/dist/esm/query-builder/aggregate-function-builder.d.ts +245 -14
  282. package/dist/esm/query-builder/aggregate-function-builder.js +164 -12
  283. package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
  284. package/dist/esm/query-builder/delete-query-builder.js +19 -16
  285. package/dist/esm/query-builder/function-module.d.ts +123 -22
  286. package/dist/esm/query-builder/function-module.js +92 -49
  287. package/dist/esm/query-builder/having-interface.d.ts +9 -8
  288. package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
  289. package/dist/esm/query-builder/insert-query-builder.js +11 -9
  290. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  291. package/dist/esm/query-builder/insert-result.js +12 -1
  292. package/dist/esm/query-builder/join-builder.d.ts +9 -8
  293. package/dist/esm/query-builder/join-builder.js +10 -9
  294. package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
  295. package/dist/esm/query-builder/on-conflict-builder.js +18 -17
  296. package/dist/esm/query-builder/select-query-builder.d.ts +82 -51
  297. package/dist/esm/query-builder/select-query-builder.js +38 -36
  298. package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
  299. package/dist/esm/query-builder/update-query-builder.js +19 -16
  300. package/dist/esm/query-builder/where-interface.d.ts +12 -11
  301. package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
  302. package/dist/esm/query-compiler/default-query-compiler.d.ts +5 -3
  303. package/dist/esm/query-compiler/default-query-compiler.js +38 -34
  304. package/dist/esm/query-executor/query-executor-base.js +16 -1
  305. package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
  306. package/dist/esm/raw-builder/raw-builder.js +23 -14
  307. package/dist/esm/raw-builder/sql.d.ts +4 -4
  308. package/dist/esm/schema/alter-column-builder.d.ts +28 -0
  309. package/dist/esm/schema/alter-column-builder.js +51 -0
  310. package/dist/esm/schema/alter-table-builder.d.ts +39 -341
  311. package/dist/esm/schema/alter-table-builder.js +59 -272
  312. package/dist/esm/schema/column-definition-builder.d.ts +43 -155
  313. package/dist/esm/schema/column-definition-builder.js +189 -0
  314. package/dist/esm/schema/create-index-builder.d.ts +3 -3
  315. package/dist/esm/schema/create-index-builder.js +7 -7
  316. package/dist/esm/schema/create-schema-builder.d.ts +1 -1
  317. package/dist/esm/schema/create-schema-builder.js +2 -2
  318. package/dist/esm/schema/create-table-builder.d.ts +39 -6
  319. package/dist/esm/schema/create-table-builder.js +47 -12
  320. package/dist/esm/schema/create-type-builder.d.ts +1 -1
  321. package/dist/esm/schema/create-type-builder.js +2 -2
  322. package/dist/esm/schema/create-view-builder.d.ts +4 -3
  323. package/dist/esm/schema/create-view-builder.js +7 -7
  324. package/dist/esm/schema/drop-index-builder.d.ts +1 -1
  325. package/dist/esm/schema/drop-index-builder.js +4 -4
  326. package/dist/esm/schema/drop-schema-builder.d.ts +1 -1
  327. package/dist/esm/schema/drop-schema-builder.js +3 -3
  328. package/dist/esm/schema/drop-table-builder.d.ts +1 -1
  329. package/dist/esm/schema/drop-table-builder.js +3 -3
  330. package/dist/esm/schema/drop-type-builder.d.ts +1 -1
  331. package/dist/esm/schema/drop-type-builder.js +2 -2
  332. package/dist/esm/schema/drop-view-builder.d.ts +1 -1
  333. package/dist/esm/schema/drop-view-builder.js +4 -4
  334. package/dist/esm/schema/schema.d.ts +2 -2
  335. package/dist/esm/schema/schema.js +14 -13
  336. package/dist/esm/util/compilable.d.ts +2 -2
  337. package/dist/esm/util/explainable.d.ts +2 -2
  338. package/dist/esm/util/infer-result.d.ts +46 -0
  339. package/dist/esm/util/infer-result.js +2 -0
  340. package/dist/esm/util/log-once.d.ts +5 -0
  341. package/dist/esm/util/log-once.js +13 -0
  342. package/dist/esm/util/object-utils.d.ts +1 -0
  343. package/dist/esm/util/object-utils.js +3 -0
  344. package/dist/esm/util/type-utils.d.ts +3 -17
  345. package/package.json +1 -1
  346. package/dist/cjs/operation-node/filter-node.d.ts +0 -18
  347. package/dist/cjs/operation-node/filter-node.js +0 -20
  348. package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -18
  349. package/dist/cjs/parser/complex-expression-parser.d.ts +0 -12
  350. package/dist/cjs/parser/filter-parser.d.ts +0 -24
  351. package/dist/cjs/parser/filter-parser.js +0 -109
  352. package/dist/esm/operation-node/filter-node.d.ts +0 -18
  353. package/dist/esm/operation-node/filter-node.js +0 -18
  354. package/dist/esm/operation-node/operation-node-utils.d.ts +0 -18
  355. package/dist/esm/operation-node/operation-node-utils.js +0 -2
  356. package/dist/esm/parser/complex-expression-parser.d.ts +0 -12
  357. package/dist/esm/parser/filter-parser.d.ts +0 -24
  358. package/dist/esm/parser/filter-parser.js +0 -100
@@ -3,10 +3,9 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
3
3
  import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
4
4
  import { TableExpression, From, FromTables } from '../parser/table-parser.js';
5
5
  import { SelectExpression } from '../parser/select-parser.js';
6
- import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
7
6
  import { ReturningRow } from '../parser/returning-parser.js';
8
7
  import { ReferenceExpression } from '../parser/reference-parser.js';
9
- import { AnyRawBuilder, MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
8
+ import { MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
10
9
  import { UpdateQueryNode } from '../operation-node/update-query-node.js';
11
10
  import { MutationObject } from '../parser/update-set-parser.js';
12
11
  import { Compilable } from '../util/compilable.js';
@@ -18,10 +17,11 @@ import { WhereInterface } from './where-interface.js';
18
17
  import { ReturningInterface } from './returning-interface.js';
19
18
  import { NoResultErrorConstructor } from './no-result-error.js';
20
19
  import { Selectable } from '../util/column-type.js';
21
- import { AliasedQueryBuilder } from './select-query-builder.js';
22
- import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
23
20
  import { Explainable, ExplainFormat } from '../util/explainable.js';
24
- export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable, Explainable {
21
+ import { AliasedExpression, Expression } from '../expression/expression.js';
22
+ import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
23
+ import { ExistsExpression } from '../parser/unary-operation-parser.js';
24
+ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable {
25
25
  #private;
26
26
  constructor(props: UpdateQueryBuilderProps);
27
27
  /**
@@ -208,16 +208,16 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
208
208
  * .execute()
209
209
  * ```
210
210
  */
211
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
211
+ where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
212
212
  where(grouper: WhereGrouper<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
213
- where(raw: AnyRawBuilder): UpdateQueryBuilder<DB, UT, TB, O>;
213
+ where(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
214
214
  /**
215
215
  * Adds a `where` clause where both sides of the operator are references
216
216
  * to columns.
217
217
  *
218
218
  * The normal `where` method treats the right hand side argument as a
219
219
  * value by default. `whereRef` treats it as a column reference. This method is
220
- * expecially useful with joins and correclated subqueries.
220
+ * expecially useful with joins and correlated subqueries.
221
221
  *
222
222
  * ### Examples
223
223
  *
@@ -262,7 +262,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
262
262
  * ) as "pet_name"
263
263
  * from "person"
264
264
  */
265
- whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
265
+ whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
266
266
  /**
267
267
  * Adds an `or where` clause to the query. Otherwise works just like {@link where}.
268
268
  *
@@ -326,15 +326,15 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
326
326
  * select * from "person" (where "id" = 1 or "id" = 2)
327
327
  * ```
328
328
  */
329
- orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
329
+ orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
330
330
  orWhere(grouper: WhereGrouper<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
331
- orWhere(raw: AnyRawBuilder): UpdateQueryBuilder<DB, UT, TB, O>;
331
+ orWhere(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
332
332
  /**
333
333
  * Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
334
334
  *
335
335
  * Also see {@link orWhere} and {@link where}.
336
336
  */
337
- orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
337
+ orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
338
338
  /**
339
339
  * Adds a `where exists` clause to the query.
340
340
  *
@@ -401,11 +401,11 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
401
401
  */
402
402
  whereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
403
403
  /**
404
- * Just like {@link whereExists} but creates a `or exists` clause.
404
+ * Just like {@link whereExists} but creates an `or exists` clause.
405
405
  */
406
406
  orWhereExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
407
407
  /**
408
- * Just like {@link whereExists} but creates a `or not exists` clause.
408
+ * Just like {@link whereExists} but creates an `or not exists` clause.
409
409
  */
410
410
  orWhereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
411
411
  /**
@@ -789,7 +789,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
789
789
  */
790
790
  withPlugin(plugin: KyselyPlugin): UpdateQueryBuilder<DB, UT, TB, O>;
791
791
  toOperationNode(): UpdateQueryNode;
792
- compile(): CompiledQuery;
792
+ compile(): CompiledQuery<O>;
793
793
  /**
794
794
  * Executes the query and returns an array of rows.
795
795
  *
@@ -827,29 +827,29 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
827
827
  * explain format=json update `person` set `first_name` = ?, `last_name` = ? where `id` = ?
828
828
  * ```
829
829
  */
830
- explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: AnyRawBuilder): Promise<ER[]>;
830
+ explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<ER[]>;
831
831
  }
832
832
  export interface UpdateQueryBuilderProps {
833
833
  readonly queryId: QueryId;
834
834
  readonly queryNode: UpdateQueryNode;
835
835
  readonly executor: QueryExecutor;
836
836
  }
837
- export declare type UpdateQueryBuilderWithInnerJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? UpdateQueryBuilder<DB, UT, TB | TE, O> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, UT, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, UT, TB, O, RA, RO> : never;
837
+ export declare type UpdateQueryBuilderWithInnerJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? UpdateQueryBuilder<DB, UT, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
838
838
  declare type InnerJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? UpdateQueryBuilder<InnerJoinedDB<DB, A, R>, UT, TB | A, O> : UpdateQueryBuilder<DB & Record<A, R>, UT, TB | A, O>;
839
839
  declare type InnerJoinedDB<DB, A extends string, R> = {
840
840
  [C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
841
841
  };
842
- export declare type UpdateQueryBuilderWithLeftJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, UT, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, UT, TB, O, RA, RO> : never;
842
+ export declare type UpdateQueryBuilderWithLeftJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
843
843
  declare type LeftJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? UpdateQueryBuilder<LeftJoinedDB<DB, A, R>, UT, TB | A, O> : UpdateQueryBuilder<DB & Record<A, Nullable<R>>, UT, TB | A, O>;
844
844
  declare type LeftJoinedDB<DB, A extends keyof any, R> = {
845
845
  [C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
846
846
  };
847
- export declare type UpdateQueryBuilderWithRightJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, UT, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, UT, TB, O, RA, RO> : never;
847
+ export declare type UpdateQueryBuilderWithRightJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
848
848
  declare type RightJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = UpdateQueryBuilder<RightJoinedDB<DB, TB, A, R>, UT, TB | A, O>;
849
849
  declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = {
850
850
  [C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
851
851
  };
852
- export declare type UpdateQueryBuilderWithFullJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, UT, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, UT, TB, O, RA, RO> : never;
852
+ export declare type UpdateQueryBuilderWithFullJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
853
853
  declare type OuterJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = UpdateQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, UT, TB | A, O>;
854
854
  declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = {
855
855
  [C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
@@ -2,7 +2,6 @@
2
2
  import { parseJoin, } from '../parser/join-parser.js';
3
3
  import { parseTableExpressionOrList, } from '../parser/table-parser.js';
4
4
  import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
5
- import { parseExistFilter, parseReferenceFilter, parseWhereFilter, parseNotExistFilter, } from '../parser/filter-parser.js';
6
5
  import { QueryNode } from '../operation-node/query-node.js';
7
6
  import { UpdateQueryNode } from '../operation-node/update-query-node.js';
8
7
  import { parseUpdateObject, } from '../parser/update-set-parser.js';
@@ -11,6 +10,8 @@ import { freeze } from '../util/object-utils.js';
11
10
  import { UpdateResult } from './update-result.js';
12
11
  import { NoResultError } from './no-result-error.js';
13
12
  import { ExplainNode } from '../operation-node/explain-node.js';
13
+ import { parseReferentialFilter, parseWhere, } from '../parser/binary-operation-parser.js';
14
+ import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
14
15
  export class UpdateQueryBuilder {
15
16
  #props;
16
17
  constructor(props) {
@@ -19,49 +20,49 @@ export class UpdateQueryBuilder {
19
20
  where(...args) {
20
21
  return new UpdateQueryBuilder({
21
22
  ...this.#props,
22
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhereFilter(args)),
23
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhere(args)),
23
24
  });
24
25
  }
25
26
  whereRef(lhs, op, rhs) {
26
27
  return new UpdateQueryBuilder({
27
28
  ...this.#props,
28
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferenceFilter(lhs, op, rhs)),
29
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
29
30
  });
30
31
  }
31
32
  orWhere(...args) {
32
33
  return new UpdateQueryBuilder({
33
34
  ...this.#props,
34
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhereFilter(args)),
35
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhere(args)),
35
36
  });
36
37
  }
37
38
  orWhereRef(lhs, op, rhs) {
38
39
  return new UpdateQueryBuilder({
39
40
  ...this.#props,
40
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferenceFilter(lhs, op, rhs)),
41
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
41
42
  });
42
43
  }
43
44
  whereExists(arg) {
44
45
  return new UpdateQueryBuilder({
45
46
  ...this.#props,
46
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExistFilter(arg)),
47
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExists(arg)),
47
48
  });
48
49
  }
49
50
  whereNotExists(arg) {
50
51
  return new UpdateQueryBuilder({
51
52
  ...this.#props,
52
- queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExistFilter(arg)),
53
+ queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExists(arg)),
53
54
  });
54
55
  }
55
56
  orWhereExists(arg) {
56
57
  return new UpdateQueryBuilder({
57
58
  ...this.#props,
58
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExistFilter(arg)),
59
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExists(arg)),
59
60
  });
60
61
  }
61
62
  orWhereNotExists(arg) {
62
63
  return new UpdateQueryBuilder({
63
64
  ...this.#props,
64
- queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExistFilter(arg)),
65
+ queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExists(arg)),
65
66
  });
66
67
  }
67
68
  from(from) {
@@ -298,15 +299,17 @@ export class UpdateQueryBuilder {
298
299
  * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
299
300
  */
300
301
  async execute() {
301
- const compildQuery = this.compile();
302
- const query = compildQuery.query;
303
- const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
302
+ const compiledQuery = this.compile();
303
+ const query = compiledQuery.query;
304
+ const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
304
305
  if (this.#props.executor.adapter.supportsReturning && query.returning) {
305
306
  return result.rows;
306
307
  }
307
- else {
308
- return [new UpdateResult(result.numUpdatedOrDeletedRows)];
309
- }
308
+ return [
309
+ new UpdateResult(
310
+ // TODO: remove numUpdatedOrDeletedRows.
311
+ (result.numAffectedRows ?? result.numUpdatedOrDeletedRows)),
312
+ ];
310
313
  }
311
314
  /**
312
315
  * Executes the query and returns the first result or undefined if
@@ -351,7 +354,7 @@ export class UpdateQueryBuilder {
351
354
  async explain(format, options) {
352
355
  const builder = new UpdateQueryBuilder({
353
356
  ...this.#props,
354
- queryNode: UpdateQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options)),
357
+ queryNode: UpdateQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options?.toOperationNode())),
355
358
  });
356
359
  return await builder.execute();
357
360
  }
@@ -1,6 +1,7 @@
1
- import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
1
+ import { Expression } from '../expression/expression.js';
2
+ import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
2
3
  import { ReferenceExpression } from '../parser/reference-parser.js';
3
- import { AnyRawBuilder } from '../util/type-utils.js';
4
+ import { ExistsExpression } from '../parser/unary-operation-parser.js';
4
5
  export interface WhereInterface<DB, TB extends keyof DB> {
5
6
  /**
6
7
  * Adds a `where` clause to the query.
@@ -186,16 +187,16 @@ export interface WhereInterface<DB, TB extends keyof DB> {
186
187
  * .execute()
187
188
  * ```
188
189
  */
189
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
190
+ where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
190
191
  where(grouper: WhereGrouper<DB, TB>): WhereInterface<DB, TB>;
191
- where(raw: AnyRawBuilder): WhereInterface<DB, TB>;
192
+ where(expression: Expression<any>): WhereInterface<DB, TB>;
192
193
  /**
193
194
  * Adds a `where` clause where both sides of the operator are references
194
195
  * to columns.
195
196
  *
196
197
  * The normal `where` method treats the right hand side argument as a
197
198
  * value by default. `whereRef` treats it as a column reference. This method is
198
- * expecially useful with joins and correclated subqueries.
199
+ * expecially useful with joins and correlated subqueries.
199
200
  *
200
201
  * ### Examples
201
202
  *
@@ -240,7 +241,7 @@ export interface WhereInterface<DB, TB extends keyof DB> {
240
241
  * ) as "pet_name"
241
242
  * from "person"
242
243
  */
243
- whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
244
+ whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
244
245
  /**
245
246
  * Adds an `or where` clause to the query. Otherwise works just like {@link where}.
246
247
  *
@@ -304,15 +305,15 @@ export interface WhereInterface<DB, TB extends keyof DB> {
304
305
  * select * from "person" (where "id" = 1 or "id" = 2)
305
306
  * ```
306
307
  */
307
- orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
308
+ orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
308
309
  orWhere(grouper: WhereGrouper<DB, TB>): WhereInterface<DB, TB>;
309
- orWhere(raw: AnyRawBuilder): WhereInterface<DB, TB>;
310
+ orWhere(expression: Expression<any>): WhereInterface<DB, TB>;
310
311
  /**
311
312
  * Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
312
313
  *
313
314
  * Also see {@link orWhere} and {@link where}.
314
315
  */
315
- orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
316
+ orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
316
317
  /**
317
318
  * Adds a `where exists` clause to the query.
318
319
  *
@@ -379,11 +380,11 @@ export interface WhereInterface<DB, TB extends keyof DB> {
379
380
  */
380
381
  whereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
381
382
  /**
382
- * Just like {@link whereExists} but creates a `or exists` clause.
383
+ * Just like {@link whereExists} but creates an `or exists` clause.
383
384
  */
384
385
  orWhereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
385
386
  /**
386
- * Just like {@link whereExists} but creates a `or not exists` clause.
387
+ * Just like {@link whereExists} but creates an `or not exists` clause.
387
388
  */
388
389
  orWhereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
389
390
  }
@@ -1,5 +1,5 @@
1
1
  import { RootOperationNode } from './query-compiler.js';
2
- export interface CompiledQuery {
2
+ export interface CompiledQuery<O = unknown> {
3
3
  readonly query: RootOperationNode;
4
4
  readonly sql: string;
5
5
  readonly parameters: ReadonlyArray<unknown>;
@@ -9,7 +9,6 @@ import { DataTypeNode } from '../operation-node/data-type-node.js';
9
9
  import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
10
10
  import { DropIndexNode } from '../operation-node/drop-index-node.js';
11
11
  import { DropTableNode } from '../operation-node/drop-table-node.js';
12
- import { FilterNode } from '../operation-node/filter-node.js';
13
12
  import { FromNode } from '../operation-node/from-node.js';
14
13
  import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
15
14
  import { GroupByNode } from '../operation-node/group-by-node.js';
@@ -78,6 +77,8 @@ import { OverNode } from '../operation-node/over-node.js';
78
77
  import { PartitionByNode } from '../operation-node/partition-by-node.js';
79
78
  import { PartitionByItemNode } from '../operation-node/partition-by-item-node.js';
80
79
  import { SetOperationNode } from '../operation-node/set-operation-node.js';
80
+ import { BinaryOperationNode } from '../operation-node/binary-operation-node.js';
81
+ import { UnaryOperationNode } from '../operation-node/unary-operation-node.js';
81
82
  export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
82
83
  #private;
83
84
  protected get numParameters(): number;
@@ -87,7 +88,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
87
88
  protected visitFrom(node: FromNode): void;
88
89
  protected visitSelection(node: SelectionNode): void;
89
90
  protected visitColumn(node: ColumnNode): void;
90
- protected compileDistinctOn(selections: ReadonlyArray<SelectionNode>): void;
91
+ protected compileDistinctOn(expressions: ReadonlyArray<OperationNode>): void;
91
92
  protected compileList(nodes: ReadonlyArray<OperationNode>, separator?: string): void;
92
93
  protected visitWhere(node: WhereNode): void;
93
94
  protected visitHaving(node: HavingNode): void;
@@ -100,7 +101,6 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
100
101
  protected visitSelectAll(_: SelectAllNode): void;
101
102
  protected visitIdentifier(node: IdentifierNode): void;
102
103
  protected compileUnwrappedIdentifier(node: IdentifierNode): void;
103
- protected visitFilter(node: FilterNode): void;
104
104
  protected visitAnd(node: AndNode): void;
105
105
  protected visitOr(node: OrNode): void;
106
106
  protected visitValue(node: ValueNode): void;
@@ -163,6 +163,8 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
163
163
  protected visitOver(node: OverNode): void;
164
164
  protected visitPartitionBy(node: PartitionByNode): void;
165
165
  protected visitPartitionByItem(node: PartitionByItemNode): void;
166
+ protected visitBinaryOperation(node: BinaryOperationNode): void;
167
+ protected visitUnaryOperation(node: UnaryOperationNode): void;
166
168
  protected append(str: string): void;
167
169
  protected appendValue(parameter: unknown): void;
168
170
  protected getLeftIdentifierWrapper(): string;
@@ -2,7 +2,7 @@
2
2
  import { InsertQueryNode } from '../operation-node/insert-query-node.js';
3
3
  import { OperationNodeVisitor } from '../operation-node/operation-node-visitor.js';
4
4
  import { QueryNode } from '../operation-node/query-node.js';
5
- import { getLast, freeze, isString, isNumber, isBoolean, isNull, isDate, isBigInt, } from '../util/object-utils.js';
5
+ import { freeze, isString, isNumber, isBoolean, isNull, isDate, isBigInt, } from '../util/object-utils.js';
6
6
  import { CreateViewNode } from '../operation-node/create-view-node.js';
7
7
  import { SetOperationNode } from '../operation-node/set-operation-node.js';
8
8
  export class DefaultQueryCompiler extends OperationNodeVisitor {
@@ -41,8 +41,8 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
41
41
  this.append(' ');
42
42
  }
43
43
  this.append('select ');
44
- if (node.distinctOnSelections) {
45
- this.compileDistinctOn(node.distinctOnSelections);
44
+ if (node.distinctOn) {
45
+ this.compileDistinctOn(node.distinctOn);
46
46
  this.append(' ');
47
47
  }
48
48
  if (node.frontModifiers && node.frontModifiers.length > 0) {
@@ -104,16 +104,16 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
104
104
  visitColumn(node) {
105
105
  this.visitNode(node.column);
106
106
  }
107
- compileDistinctOn(selections) {
107
+ compileDistinctOn(expressions) {
108
108
  this.append('distinct on (');
109
- this.compileList(selections);
109
+ this.compileList(expressions);
110
110
  this.append(')');
111
111
  }
112
112
  compileList(nodes, separator = ', ') {
113
- const lastNode = getLast(nodes);
114
- for (const node of nodes) {
115
- this.visitNode(node);
116
- if (node !== lastNode) {
113
+ const lastIndex = nodes.length - 1;
114
+ for (let i = 0; i <= lastIndex; i++) {
115
+ this.visitNode(nodes[i]);
116
+ if (i < lastIndex) {
117
117
  this.append(separator);
118
118
  }
119
119
  }
@@ -241,15 +241,6 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
241
241
  }
242
242
  this.append(this.sanitizeIdentifier(node.name));
243
243
  }
244
- visitFilter(node) {
245
- if (node.left) {
246
- this.visitNode(node.left);
247
- this.append(' ');
248
- }
249
- this.visitNode(node.op);
250
- this.append(' ');
251
- this.visitNode(node.right);
252
- }
253
244
  visitAnd(node) {
254
245
  this.visitNode(node.left);
255
246
  this.append(' and ');
@@ -326,7 +317,7 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
326
317
  }
327
318
  visitCreateTable(node) {
328
319
  this.append('create ');
329
- if (node.frontModifiers) {
320
+ if (node.frontModifiers && node.frontModifiers.length > 0) {
330
321
  this.compileList(node.frontModifiers, ' ');
331
322
  this.append(' ');
332
323
  }
@@ -345,7 +336,7 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
345
336
  this.append(' on commit ');
346
337
  this.append(node.onCommit);
347
338
  }
348
- if (node.endModifiers) {
339
+ if (node.endModifiers && node.endModifiers.length > 0) {
349
340
  this.append(' ');
350
341
  this.compileList(node.endModifiers, ' ');
351
342
  }
@@ -357,6 +348,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
357
348
  if (node.unsigned) {
358
349
  this.append(' unsigned');
359
350
  }
351
+ if (node.frontModifiers && node.frontModifiers.length > 0) {
352
+ this.append(' ');
353
+ this.compileList(node.frontModifiers, ' ');
354
+ }
360
355
  if (node.generated) {
361
356
  this.append(' ');
362
357
  this.visitNode(node.generated);
@@ -386,6 +381,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
386
381
  this.append(' ');
387
382
  this.visitNode(node.check);
388
383
  }
384
+ if (node.endModifiers && node.endModifiers.length > 0) {
385
+ this.append(' ');
386
+ this.compileList(node.endModifiers, ' ');
387
+ }
389
388
  }
390
389
  getAutoIncrement() {
391
390
  return 'auto_increment';
@@ -666,20 +665,8 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
666
665
  if (node.dropConstraint) {
667
666
  this.visitNode(node.dropConstraint);
668
667
  }
669
- if (node.renameColumn) {
670
- this.visitNode(node.renameColumn);
671
- }
672
- if (node.addColumn) {
673
- this.visitNode(node.addColumn);
674
- }
675
- if (node.dropColumn) {
676
- this.visitNode(node.dropColumn);
677
- }
678
- if (node.alterColumn) {
679
- this.visitNode(node.alterColumn);
680
- }
681
- if (node.modifyColumn) {
682
- this.visitNode(node.modifyColumn);
668
+ if (node.columnAlterations) {
669
+ this.compileList(node.columnAlterations);
683
670
  }
684
671
  }
685
672
  visitAddColumn(node) {
@@ -870,6 +857,11 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
870
857
  }
871
858
  this.visitNode(node.column);
872
859
  this.append(')');
860
+ if (node.filter) {
861
+ this.append(' filter(');
862
+ this.visitNode(node.filter);
863
+ this.append(')');
864
+ }
873
865
  if (node.over) {
874
866
  this.append(' ');
875
867
  this.visitNode(node.over);
@@ -895,6 +887,18 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
895
887
  visitPartitionByItem(node) {
896
888
  this.visitNode(node.partitionBy);
897
889
  }
890
+ visitBinaryOperation(node) {
891
+ this.visitNode(node.leftOperand);
892
+ this.append(' ');
893
+ this.visitNode(node.operator);
894
+ this.append(' ');
895
+ this.visitNode(node.rightOperand);
896
+ }
897
+ visitUnaryOperation(node) {
898
+ this.visitNode(node.operator);
899
+ this.append(' ');
900
+ this.visitNode(node.operand);
901
+ }
898
902
  append(str) {
899
903
  this.#sql += str;
900
904
  }
@@ -1,6 +1,7 @@
1
1
  /// <reference types="./query-executor-base.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
3
  import { Deferred } from '../util/deferred.js';
4
+ import { logOnce } from '../util/log-once.js';
4
5
  const NO_PLUGINS = freeze([]);
5
6
  export class QueryExecutorBase {
6
7
  #plugins;
@@ -32,7 +33,10 @@ export class QueryExecutorBase {
32
33
  async executeQuery(compiledQuery, queryId) {
33
34
  return await this.provideConnection(async (connection) => {
34
35
  const result = await connection.executeQuery(compiledQuery);
35
- return this.#transformResult(result, queryId);
36
+ const transformedResult = await this.#transformResult(result, queryId);
37
+ // TODO: remove.
38
+ warnOfOutdatedDriverOrPlugins(result, transformedResult);
39
+ return transformedResult;
36
40
  });
37
41
  }
38
42
  async *stream(compiledQuery, chunkSize, queryId) {
@@ -60,3 +64,14 @@ export class QueryExecutorBase {
60
64
  return result;
61
65
  }
62
66
  }
67
+ // TODO: remove.
68
+ function warnOfOutdatedDriverOrPlugins(result, transformedResult) {
69
+ const { numAffectedRows } = result;
70
+ if ((numAffectedRows === undefined &&
71
+ result.numUpdatedOrDeletedRows === undefined) ||
72
+ (numAffectedRows !== undefined &&
73
+ transformedResult.numAffectedRows !== undefined)) {
74
+ return;
75
+ }
76
+ logOnce('kysely:warning: outdated driver/plugin detected! QueryResult.numUpdatedOrDeletedRows is deprecated and will be removed in a future release.');
77
+ }