kysely 0.23.4 → 0.24.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 (314) hide show
  1. package/README.md +49 -25
  2. package/dist/cjs/dialect/database-introspector.d.ts +4 -2
  3. package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
  4. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
  5. package/dist/cjs/dialect/mysql/mysql-driver.js +1 -1
  6. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
  7. package/dist/cjs/dialect/mysql/mysql-introspector.js +19 -13
  8. package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
  9. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
  10. package/dist/cjs/dialect/postgres/postgres-introspector.js +3 -1
  11. package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  12. package/dist/cjs/dialect/sqlite/sqlite-dialect.js +1 -0
  13. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  14. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +6 -5
  15. package/dist/cjs/driver/runtime-driver.js +4 -2
  16. package/dist/cjs/expression/expression-builder.d.ts +386 -0
  17. package/dist/cjs/expression/expression-builder.js +92 -0
  18. package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
  19. package/dist/cjs/expression/expression-wrapper.js +54 -0
  20. package/dist/cjs/expression/expression.d.ts +1 -1
  21. package/dist/cjs/helpers/postgres.d.ts +133 -0
  22. package/dist/cjs/helpers/postgres.js +141 -0
  23. package/dist/cjs/index.d.ts +4 -3
  24. package/dist/cjs/index.js +4 -2
  25. package/dist/cjs/kysely.d.ts +10 -0
  26. package/dist/cjs/kysely.js +12 -1
  27. package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
  28. package/dist/cjs/migration/migrator.d.ts +5 -2
  29. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -2
  30. package/dist/cjs/operation-node/aggregate-function-node.js +2 -2
  31. package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
  32. package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
  33. package/dist/cjs/operation-node/delete-query-node.js +2 -8
  34. package/dist/cjs/operation-node/function-node.d.ts +13 -0
  35. package/dist/cjs/operation-node/function-node.js +19 -0
  36. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  37. package/dist/cjs/operation-node/operation-node-transformer.js +11 -2
  38. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  39. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  40. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  41. package/dist/cjs/operation-node/operator-node.d.ts +13 -2
  42. package/dist/cjs/operation-node/operator-node.js +38 -3
  43. package/dist/cjs/operation-node/query-node.d.ts +25 -8
  44. package/dist/cjs/operation-node/query-node.js +9 -2
  45. package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
  46. package/dist/cjs/operation-node/select-query-node.js +0 -6
  47. package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
  48. package/dist/cjs/operation-node/update-query-node.js +0 -6
  49. package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
  50. package/dist/cjs/parser/binary-operation-parser.js +89 -39
  51. package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
  52. package/dist/cjs/parser/coalesce-parser.js +0 -9
  53. package/dist/cjs/parser/expression-parser.d.ts +7 -3
  54. package/dist/cjs/parser/expression-parser.js +4 -4
  55. package/dist/cjs/parser/group-by-parser.d.ts +3 -2
  56. package/dist/cjs/parser/group-by-parser.js +3 -0
  57. package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
  58. package/dist/cjs/parser/insert-values-parser.js +19 -13
  59. package/dist/cjs/parser/join-parser.js +1 -1
  60. package/dist/cjs/parser/parse-utils.d.ts +0 -2
  61. package/dist/cjs/parser/parse-utils.js +1 -8
  62. package/dist/cjs/parser/returning-parser.d.ts +2 -1
  63. package/dist/cjs/parser/select-parser.d.ts +5 -13
  64. package/dist/cjs/parser/select-parser.js +8 -4
  65. package/dist/cjs/parser/table-parser.d.ts +6 -3
  66. package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
  67. package/dist/cjs/parser/unary-operation-parser.js +9 -8
  68. package/dist/cjs/parser/update-set-parser.d.ts +4 -1
  69. package/dist/cjs/parser/update-set-parser.js +9 -4
  70. package/dist/cjs/parser/value-parser.d.ts +5 -0
  71. package/dist/cjs/parser/value-parser.js +1 -3
  72. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +7 -0
  73. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +10 -4
  74. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  75. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  76. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
  77. package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
  78. package/dist/cjs/query-builder/delete-query-builder.d.ts +224 -205
  79. package/dist/cjs/query-builder/delete-query-builder.js +21 -27
  80. package/dist/cjs/query-builder/delete-result.js +3 -0
  81. package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  82. package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
  83. package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  84. package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
  85. package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  86. package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
  87. package/dist/cjs/query-builder/function-module.d.ts +304 -42
  88. package/dist/cjs/query-builder/function-module.js +44 -208
  89. package/dist/cjs/query-builder/having-interface.d.ts +19 -16
  90. package/dist/cjs/query-builder/insert-query-builder.d.ts +78 -30
  91. package/dist/cjs/query-builder/insert-query-builder.js +21 -30
  92. package/dist/cjs/query-builder/insert-result.js +3 -0
  93. package/dist/cjs/query-builder/join-builder.d.ts +23 -26
  94. package/dist/cjs/query-builder/join-builder.js +17 -22
  95. package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
  96. package/dist/cjs/query-builder/no-result-error.js +5 -1
  97. package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
  98. package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
  99. package/dist/cjs/query-builder/over-builder.d.ts +5 -0
  100. package/dist/cjs/query-builder/over-builder.js +7 -0
  101. package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
  102. package/dist/cjs/query-builder/select-query-builder.d.ts +155 -243
  103. package/dist/cjs/query-builder/select-query-builder.js +333 -78
  104. package/dist/cjs/query-builder/update-query-builder.d.ts +149 -217
  105. package/dist/cjs/query-builder/update-query-builder.js +21 -115
  106. package/dist/cjs/query-builder/update-result.js +3 -0
  107. package/dist/cjs/query-builder/where-interface.d.ts +71 -184
  108. package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
  109. package/dist/cjs/query-compiler/default-query-compiler.js +18 -2
  110. package/dist/cjs/query-creator.d.ts +38 -2
  111. package/dist/cjs/query-creator.js +3 -45
  112. package/dist/cjs/query-executor/query-executor.d.ts +3 -3
  113. package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
  114. package/dist/cjs/raw-builder/raw-builder.js +13 -7
  115. package/dist/cjs/raw-builder/sql.d.ts +17 -9
  116. package/dist/cjs/raw-builder/sql.js +8 -2
  117. package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
  118. package/dist/cjs/schema/alter-column-builder.js +7 -0
  119. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  120. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  121. package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  122. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
  123. package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
  124. package/dist/cjs/schema/column-definition-builder.js +8 -1
  125. package/dist/cjs/schema/create-index-builder.d.ts +51 -9
  126. package/dist/cjs/schema/create-index-builder.js +17 -0
  127. package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
  128. package/dist/cjs/schema/create-schema-builder.js +7 -0
  129. package/dist/cjs/schema/create-table-builder.d.ts +3 -1
  130. package/dist/cjs/schema/create-table-builder.js +3 -1
  131. package/dist/cjs/schema/create-type-builder.d.ts +5 -0
  132. package/dist/cjs/schema/create-type-builder.js +7 -0
  133. package/dist/cjs/schema/create-view-builder.d.ts +5 -0
  134. package/dist/cjs/schema/create-view-builder.js +7 -0
  135. package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
  136. package/dist/cjs/schema/drop-index-builder.js +7 -0
  137. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
  138. package/dist/cjs/schema/drop-schema-builder.js +7 -0
  139. package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
  140. package/dist/cjs/schema/drop-table-builder.js +7 -0
  141. package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
  142. package/dist/cjs/schema/drop-type-builder.js +7 -0
  143. package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
  144. package/dist/cjs/schema/drop-view-builder.js +7 -0
  145. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
  146. package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
  147. package/dist/cjs/util/compilable.d.ts +1 -0
  148. package/dist/cjs/util/compilable.js +6 -0
  149. package/dist/cjs/util/explainable.d.ts +35 -0
  150. package/dist/cjs/util/log.d.ts +2 -0
  151. package/dist/cjs/util/object-utils.js +1 -1
  152. package/dist/cjs/util/streamable.d.ts +29 -0
  153. package/dist/cjs/util/streamable.js +2 -0
  154. package/dist/cjs/util/type-utils.d.ts +6 -4
  155. package/dist/esm/dialect/database-introspector.d.ts +4 -2
  156. package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
  157. package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
  158. package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
  159. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
  160. package/dist/esm/dialect/mysql/mysql-introspector.js +19 -13
  161. package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
  162. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
  163. package/dist/esm/dialect/postgres/postgres-introspector.js +3 -1
  164. package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
  165. package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
  166. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  167. package/dist/esm/dialect/sqlite/sqlite-introspector.js +6 -5
  168. package/dist/esm/driver/runtime-driver.js +4 -2
  169. package/dist/esm/expression/expression-builder.d.ts +386 -0
  170. package/dist/esm/expression/expression-builder.js +88 -0
  171. package/dist/esm/expression/expression-wrapper.d.ts +92 -0
  172. package/dist/esm/expression/expression-wrapper.js +50 -0
  173. package/dist/esm/expression/expression.d.ts +1 -1
  174. package/dist/esm/helpers/postgres.d.ts +133 -0
  175. package/dist/esm/helpers/postgres.js +136 -0
  176. package/dist/esm/index.d.ts +4 -3
  177. package/dist/esm/index.js +2 -1
  178. package/dist/esm/kysely.d.ts +10 -0
  179. package/dist/esm/kysely.js +13 -2
  180. package/dist/esm/migration/file-migration-provider.d.ts +5 -2
  181. package/dist/esm/migration/migrator.d.ts +5 -2
  182. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -2
  183. package/dist/esm/operation-node/aggregate-function-node.js +2 -2
  184. package/dist/esm/operation-node/create-index-node.d.ts +2 -0
  185. package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
  186. package/dist/esm/operation-node/delete-query-node.js +2 -8
  187. package/dist/esm/operation-node/function-node.d.ts +13 -0
  188. package/dist/esm/operation-node/function-node.js +17 -0
  189. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  190. package/dist/esm/operation-node/operation-node-transformer.js +11 -2
  191. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  192. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  193. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  194. package/dist/esm/operation-node/operator-node.d.ts +13 -2
  195. package/dist/esm/operation-node/operator-node.js +34 -3
  196. package/dist/esm/operation-node/query-node.d.ts +25 -8
  197. package/dist/esm/operation-node/query-node.js +9 -2
  198. package/dist/esm/operation-node/select-query-node.d.ts +0 -1
  199. package/dist/esm/operation-node/select-query-node.js +0 -6
  200. package/dist/esm/operation-node/update-query-node.d.ts +0 -1
  201. package/dist/esm/operation-node/update-query-node.js +0 -6
  202. package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
  203. package/dist/esm/parser/binary-operation-parser.js +85 -37
  204. package/dist/esm/parser/coalesce-parser.d.ts +0 -2
  205. package/dist/esm/parser/coalesce-parser.js +1 -7
  206. package/dist/esm/parser/expression-parser.d.ts +7 -3
  207. package/dist/esm/parser/expression-parser.js +5 -5
  208. package/dist/esm/parser/group-by-parser.d.ts +3 -2
  209. package/dist/esm/parser/group-by-parser.js +3 -0
  210. package/dist/esm/parser/insert-values-parser.d.ts +4 -1
  211. package/dist/esm/parser/insert-values-parser.js +18 -12
  212. package/dist/esm/parser/join-parser.js +2 -2
  213. package/dist/esm/parser/parse-utils.d.ts +0 -2
  214. package/dist/esm/parser/parse-utils.js +0 -6
  215. package/dist/esm/parser/returning-parser.d.ts +2 -1
  216. package/dist/esm/parser/select-parser.d.ts +5 -13
  217. package/dist/esm/parser/select-parser.js +7 -3
  218. package/dist/esm/parser/table-parser.d.ts +6 -3
  219. package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
  220. package/dist/esm/parser/unary-operation-parser.js +8 -8
  221. package/dist/esm/parser/update-set-parser.d.ts +4 -1
  222. package/dist/esm/parser/update-set-parser.js +7 -2
  223. package/dist/esm/parser/value-parser.d.ts +5 -0
  224. package/dist/esm/parser/value-parser.js +1 -3
  225. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +7 -0
  226. package/dist/esm/plugin/camel-case/camel-case-plugin.js +10 -4
  227. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
  228. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  229. package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
  230. package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
  231. package/dist/esm/query-builder/delete-query-builder.d.ts +224 -205
  232. package/dist/esm/query-builder/delete-query-builder.js +24 -30
  233. package/dist/esm/query-builder/delete-result.js +3 -0
  234. package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
  235. package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
  236. package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
  237. package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
  238. package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
  239. package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
  240. package/dist/esm/query-builder/function-module.d.ts +304 -42
  241. package/dist/esm/query-builder/function-module.js +43 -207
  242. package/dist/esm/query-builder/having-interface.d.ts +19 -16
  243. package/dist/esm/query-builder/insert-query-builder.d.ts +78 -30
  244. package/dist/esm/query-builder/insert-query-builder.js +25 -34
  245. package/dist/esm/query-builder/insert-result.js +3 -0
  246. package/dist/esm/query-builder/join-builder.d.ts +23 -26
  247. package/dist/esm/query-builder/join-builder.js +18 -23
  248. package/dist/esm/query-builder/no-result-error.d.ts +1 -0
  249. package/dist/esm/query-builder/no-result-error.js +3 -0
  250. package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
  251. package/dist/esm/query-builder/on-conflict-builder.js +54 -38
  252. package/dist/esm/query-builder/over-builder.d.ts +5 -0
  253. package/dist/esm/query-builder/over-builder.js +7 -0
  254. package/dist/esm/query-builder/returning-interface.d.ts +2 -2
  255. package/dist/esm/query-builder/select-query-builder.d.ts +155 -243
  256. package/dist/esm/query-builder/select-query-builder.js +337 -82
  257. package/dist/esm/query-builder/update-query-builder.d.ts +149 -217
  258. package/dist/esm/query-builder/update-query-builder.js +25 -119
  259. package/dist/esm/query-builder/update-result.js +3 -0
  260. package/dist/esm/query-builder/where-interface.d.ts +71 -184
  261. package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
  262. package/dist/esm/query-compiler/default-query-compiler.js +18 -2
  263. package/dist/esm/query-creator.d.ts +38 -2
  264. package/dist/esm/query-creator.js +3 -45
  265. package/dist/esm/query-executor/query-executor.d.ts +3 -3
  266. package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
  267. package/dist/esm/raw-builder/raw-builder.js +13 -7
  268. package/dist/esm/raw-builder/sql.d.ts +17 -9
  269. package/dist/esm/raw-builder/sql.js +8 -2
  270. package/dist/esm/schema/alter-column-builder.d.ts +5 -0
  271. package/dist/esm/schema/alter-column-builder.js +7 -0
  272. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
  273. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
  274. package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
  275. package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
  276. package/dist/esm/schema/column-definition-builder.d.ts +6 -1
  277. package/dist/esm/schema/column-definition-builder.js +8 -1
  278. package/dist/esm/schema/create-index-builder.d.ts +51 -9
  279. package/dist/esm/schema/create-index-builder.js +17 -0
  280. package/dist/esm/schema/create-schema-builder.d.ts +5 -0
  281. package/dist/esm/schema/create-schema-builder.js +7 -0
  282. package/dist/esm/schema/create-table-builder.d.ts +3 -1
  283. package/dist/esm/schema/create-table-builder.js +3 -1
  284. package/dist/esm/schema/create-type-builder.d.ts +5 -0
  285. package/dist/esm/schema/create-type-builder.js +7 -0
  286. package/dist/esm/schema/create-view-builder.d.ts +5 -0
  287. package/dist/esm/schema/create-view-builder.js +7 -0
  288. package/dist/esm/schema/drop-index-builder.d.ts +5 -0
  289. package/dist/esm/schema/drop-index-builder.js +7 -0
  290. package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
  291. package/dist/esm/schema/drop-schema-builder.js +7 -0
  292. package/dist/esm/schema/drop-table-builder.d.ts +5 -0
  293. package/dist/esm/schema/drop-table-builder.js +7 -0
  294. package/dist/esm/schema/drop-type-builder.d.ts +5 -0
  295. package/dist/esm/schema/drop-type-builder.js +7 -0
  296. package/dist/esm/schema/drop-view-builder.d.ts +5 -0
  297. package/dist/esm/schema/drop-view-builder.js +7 -0
  298. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
  299. package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
  300. package/dist/esm/util/compilable.d.ts +1 -0
  301. package/dist/esm/util/compilable.js +4 -1
  302. package/dist/esm/util/explainable.d.ts +35 -0
  303. package/dist/esm/util/log.d.ts +2 -0
  304. package/dist/esm/util/object-utils.js +1 -1
  305. package/dist/esm/util/streamable.d.ts +29 -0
  306. package/dist/esm/util/streamable.js +2 -0
  307. package/dist/esm/util/type-utils.d.ts +6 -4
  308. package/helpers/postgres.d.ts +1 -0
  309. package/helpers/postgres.js +1 -0
  310. package/package.json +20 -9
  311. package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
  312. package/dist/cjs/query-builder/expression-builder.js +0 -107
  313. package/dist/esm/query-builder/expression-builder.d.ts +0 -126
  314. package/dist/esm/query-builder/expression-builder.js +0 -104
@@ -2,77 +2,63 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
2
2
  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
- import { SelectExpression } from '../parser/select-parser.js';
5
+ import { SelectExpression, SelectArg } from '../parser/select-parser.js';
6
6
  import { ReturningRow } from '../parser/returning-parser.js';
7
7
  import { ReferenceExpression } from '../parser/reference-parser.js';
8
- import { MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
8
+ import { QueryNode } from '../operation-node/query-node.js';
9
+ import { MergePartial, Nullable, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
9
10
  import { UpdateQueryNode } from '../operation-node/update-query-node.js';
10
- import { UpdateObject } from '../parser/update-set-parser.js';
11
+ import { UpdateObject, UpdateObjectFactory } from '../parser/update-set-parser.js';
11
12
  import { Compilable } from '../util/compilable.js';
12
13
  import { QueryExecutor } from '../query-executor/query-executor.js';
13
14
  import { QueryId } from '../util/query-id.js';
14
15
  import { UpdateResult } from './update-result.js';
15
16
  import { KyselyPlugin } from '../plugin/kysely-plugin.js';
16
- import { WhereInterface } from './where-interface.js';
17
+ import { WhereExpressionFactory, WhereInterface } from './where-interface.js';
17
18
  import { ReturningInterface } from './returning-interface.js';
18
19
  import { NoResultErrorConstructor } from './no-result-error.js';
19
20
  import { Selectable } from '../util/column-type.js';
20
21
  import { Explainable, ExplainFormat } from '../util/explainable.js';
21
22
  import { AliasedExpression, Expression } from '../expression/expression.js';
22
- import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
23
+ import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
23
24
  import { ExistsExpression } from '../parser/unary-operation-parser.js';
24
25
  import { KyselyTypeError } from '../util/type-error.js';
25
- 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 {
26
+ import { Streamable } from '../util/streamable.js';
27
+ 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, Streamable<O> {
26
28
  #private;
27
29
  constructor(props: UpdateQueryBuilderProps);
28
30
  /**
29
- * Adds a `where` clause to the query.
31
+ * Adds a `where` expression to the query.
30
32
  *
31
- * Also see {@link orWhere}, {@link whereExists} and {@link whereRef}.
33
+ * Calling this method multiple times will combine the expressions using `and`.
32
34
  *
33
- * ### Examples
35
+ * Also see {@link whereRef}
34
36
  *
35
- * Find a row by column value:
37
+ * ### Examples
36
38
  *
37
39
  * ```ts
38
40
  * const person = await db
39
41
  * .selectFrom('person')
40
42
  * .selectAll()
41
- * .where('id', '=', 100)
43
+ * .where('first_name', '=', 'Jennifer')
44
+ * .where('age', '>', 40)
42
45
  * .executeTakeFirst()
43
46
  * ```
44
47
  *
45
48
  * The generated SQL (PostgreSQL):
46
49
  *
47
50
  * ```sql
48
- * select * from "person" where "id" = $1
51
+ * select * from "person" where "first_name" = $1 and "age" > $2
49
52
  * ```
50
53
  *
51
54
  * Operator can be any supported operator or if the typings don't support it
52
- * you can always use
55
+ * you can always use:
53
56
  *
54
57
  * ```ts
55
58
  * sql`your operator`
56
59
  * ```
57
60
  *
58
- * The next example uses the `>` operator:
59
- *
60
- * ```ts
61
- * const persons = await db
62
- * .selectFrom('person')
63
- * .selectAll()
64
- * .where('id', '>', 100)
65
- * .execute()
66
- * ```
67
- *
68
- * The generated SQL (PostgreSQL):
69
- *
70
- * ```sql
71
- * select * from "person" where "id" > $1
72
- * ```
73
- *
74
- * `where` methods don't change the type of the query. You can add
75
- * conditional statements easily by doing something like this:
61
+ * You can add expressions conditionally like this:
76
62
  *
77
63
  * ```ts
78
64
  * let query = db
@@ -85,16 +71,16 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
85
71
  * query = query.where('first_name', '=', firstName)
86
72
  * }
87
73
  *
74
+ * if (lastName) {
75
+ * query = query.where('last_name', '=', lastName)
76
+ * }
77
+ *
88
78
  * const persons = await query.execute()
89
79
  * ```
90
80
  *
91
- * This is true for basically all methods execpt the `select` and
92
- * `returning`, that __do__ change the return type of the query.
93
- *
94
- * Both the first and third argument can also be subqueries.
95
- * A subquery is defined by passing a function and calling
96
- * the `selectFrom` method of the object passed into the
97
- * function:
81
+ * Both the first and third argument can also be arbitrary expressions like
82
+ * subqueries. An expression can defined by passing a function and calling
83
+ * the methods of the {@link ExpressionBuilder} passed to the callback:
98
84
  *
99
85
  * ```ts
100
86
  * const persons = await db
@@ -125,8 +111,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
125
111
  * ```
126
112
  *
127
113
  * A `where in` query can be built by using the `in` operator and an array
128
- * of values. The values in the array can also be subqueries or raw
129
- * {@link sql} expressions.
114
+ * of values. The values in the array can also be expressions:
130
115
  *
131
116
  * ```ts
132
117
  * const persons = await db
@@ -142,40 +127,53 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
142
127
  * select * from "person" where "id" in ($1, $2, $3)
143
128
  * ```
144
129
  *
145
- * If everything else fails, you can always use the {@link sql} tag
146
- * as any of the arguments, including the operator:
130
+ * For complex `where` expressions you can pass in a single callback and
131
+ * use the {@link ExpressionBuilder} to build your expression:
147
132
  *
148
133
  * ```ts
149
- * import { sql } from 'kysely'
150
- *
151
134
  * const persons = await db
152
135
  * .selectFrom('person')
153
- * .selectAll()
154
- * .where(
155
- * sql`coalesce(first_name, last_name)`,
156
- * 'like',
157
- * '%' + name + '%',
158
- * )
159
- * .execute()
136
+ * .selectAll('person')
137
+ * .where(({ cmpr, or, and, not, exists, selectFrom, val }) => and([
138
+ * or([
139
+ * cmpr('first_name', '=', firstName),
140
+ * cmpr('age', '<', maxAge)
141
+ * ]),
142
+ * not(exists(
143
+ * selectFrom('pet').select('pet.id').whereRef('pet.owner_id', '=', 'person.id')
144
+ * ))
145
+ * ]))
160
146
  * ```
161
147
  *
162
148
  * The generated SQL (PostgreSQL):
163
149
  *
164
150
  * ```sql
165
- * select * from "person"
166
- * where coalesce(first_name, last_name) like $1
151
+ * select "person".*
152
+ * from "person"
153
+ * where (
154
+ * (
155
+ * "first_name" = $1
156
+ * or "age" < $2
157
+ * )
158
+ * and not exists (
159
+ * select "pet"."id" from "pet" where "pet"."owner_id" = "person"."id"
160
+ * )
161
+ * )
167
162
  * ```
168
163
  *
169
- * If you only pass one function argument to this method, it can be
170
- * used to create parentheses around other where statements:
164
+ * If everything else fails, you can always use the {@link sql} tag
165
+ * as any of the arguments, including the operator:
171
166
  *
172
167
  * ```ts
168
+ * import { sql } from 'kysely'
169
+ *
173
170
  * const persons = await db
174
171
  * .selectFrom('person')
175
172
  * .selectAll()
176
- * .where((qb) => qb
177
- * .where('id', '=', 1)
178
- * .orWhere('id', '=', 2)
173
+ * .where(
174
+ * sql`coalesce(first_name, last_name)`,
175
+ * 'like',
176
+ * '%' + name + '%',
179
177
  * )
180
178
  * .execute()
181
179
  * ```
@@ -183,7 +181,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
183
181
  * The generated SQL (PostgreSQL):
184
182
  *
185
183
  * ```sql
186
- * select * from "person" (where "id" = 1 or "id" = 2)
184
+ * select * from "person"
185
+ * where coalesce(first_name, last_name) like $1
187
186
  * ```
188
187
  *
189
188
  * In all examples above the columns were known at compile time
@@ -205,12 +204,12 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
205
204
  * .selectFrom('person')
206
205
  * .selectAll()
207
206
  * .where(ref(columnFromUserInput), '=', 1)
208
- * .orWhere(sql.id(columnFromUserInput), '=', 2)
207
+ * .where(sql.id(columnFromUserInput), '=', 2)
209
208
  * .execute()
210
209
  * ```
211
210
  */
212
211
  where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
213
- where(grouper: WhereGrouper<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
212
+ where(factory: WhereExpressionFactory<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
214
213
  where(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
215
214
  /**
216
215
  * Adds a `where` clause where both sides of the operator are references
@@ -242,7 +241,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
242
241
  * const persons = await db
243
242
  * .selectFrom('person')
244
243
  * .selectAll('person')
245
- * .select((qb) => qb
244
+ * .select((eb) => eb
246
245
  * .selectFrom('pet')
247
246
  * .select('name')
248
247
  * .whereRef('pet.owner_id', '=', 'person.id')
@@ -265,152 +264,33 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
265
264
  */
266
265
  whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
267
266
  /**
268
- * Adds an `or where` clause to the query. Otherwise works just like {@link where}.
269
- *
270
- * It's often necessary to wrap `or where` clauses in parentheses to control
271
- * precendence. You can use the one argument version of the `where` method
272
- * for that. See the examples.
273
- *
274
- * ### Examples
275
- *
276
- * ```ts
277
- * const persons = await db
278
- * .selectFrom('person')
279
- * .selectAll()
280
- * .where('id', '=', 1)
281
- * .orWhere('id', '=', 2)
282
- * .execute()
283
- * ```
284
- *
285
- * The generated SQL (PostgreSQL):
286
- *
287
- * ```sql
288
- * select * from "person" where "id" = 1 or "id" = 2
289
- * ```
290
- *
291
- * Grouping with parentheses:
292
- *
293
- * ```ts
294
- * const persons = await db
295
- * .selectFrom('person')
296
- * .selectAll()
297
- * .where((qb) => qb
298
- * .where('id', '=', 1)
299
- * .orWhere('id', '=', 2)
300
- * )
301
- * .execute()
302
- * ```
303
- *
304
- * The generated SQL (PostgreSQL):
305
- *
306
- * ```sql
307
- * select * from "person" (where "id" = 1 or "id" = 2)
308
- * ```
309
- *
310
- * Even the first `where` can be an `orWhere`. This is useful
311
- * if you are looping through a set of conditions:
312
- *
313
- * ```ts
314
- * const persons = await db
315
- * .selectFrom('person')
316
- * .selectAll()
317
- * .where((qb) => qb
318
- * .orWhere('id', '=', 1)
319
- * .orWhere('id', '=', 2)
320
- * )
321
- * .execute()
322
- * ```
323
- *
324
- * The generated SQL (PostgreSQL):
325
- *
326
- * ```sql
327
- * select * from "person" (where "id" = 1 or "id" = 2)
328
- * ```
267
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
329
268
  */
330
269
  orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
331
- orWhere(grouper: WhereGrouper<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
270
+ orWhere(factory: WhereExpressionFactory<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
332
271
  orWhere(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
333
272
  /**
334
- * Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
335
- *
336
- * Also see {@link orWhere} and {@link where}.
273
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
337
274
  */
338
275
  orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
339
276
  /**
340
- * Adds a `where exists` clause to the query.
341
- *
342
- * You can either use a subquery or a raw {@link sql} snippet.
343
- *
344
- * ### Examples
345
- *
346
- * The query below selets all persons that own a pet named Catto:
347
- *
348
- * ```ts
349
- * const petName = 'Catto'
350
- * const persons = await db
351
- * .selectFrom('person')
352
- * .selectAll()
353
- * .whereExists((qb) => qb
354
- * .selectFrom('pet')
355
- * .select('pet.id')
356
- * .whereRef('person.id', '=', 'pet.owner_id')
357
- * .where('pet.name', '=', petName)
358
- * )
359
- * .execute()
360
- * ```
361
- *
362
- * The generated SQL (PostgreSQL):
363
- *
364
- * ```sql
365
- * select * from "person"
366
- * where exists (
367
- * select "pet"."id"
368
- * from "pet"
369
- * where "person"."id" = "pet"."owner_id"
370
- * and "pet"."name" = $1
371
- * )
372
- * ```
373
- *
374
- * The same query as in the previous example but with using raw {@link sql}:
375
- *
376
- * ```ts
377
- * import { sql } from 'kysely'
378
- *
379
- * const petName = 'Catto'
380
- * db.selectFrom('person')
381
- * .selectAll()
382
- * .whereExists(
383
- * sql`(select pet.id from pet where person.id = pet.owner_id and pet.name = ${petName})`
384
- * )
385
- * ```
386
- *
387
- * The generated SQL (PostgreSQL):
388
- *
389
- * ```sql
390
- * select * from "person"
391
- * where exists (
392
- * select pet.id
393
- * from pet
394
- * where person.id = pet.owner_id
395
- * and pet.name = $1
396
- * )
397
- * ```
277
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
398
278
  */
399
279
  whereExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
400
280
  /**
401
- * Just like {@link whereExists} but creates a `not exists` clause.
281
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
402
282
  */
403
283
  whereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
404
284
  /**
405
- * Just like {@link whereExists} but creates an `or exists` clause.
285
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
406
286
  */
407
287
  orWhereExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
408
288
  /**
409
- * Just like {@link whereExists} but creates an `or not exists` clause.
289
+ * @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
410
290
  */
411
291
  orWhereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
412
292
  /**
413
- * Clears all where clauses from the query.
293
+ * Clears all where expressions from the query.
414
294
  *
415
295
  * ### Examples
416
296
  *
@@ -440,9 +320,9 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
440
320
  * ```ts
441
321
  * db.updateTable('person')
442
322
  * .from('pet')
443
- * .set({
444
- * first_name: (eb) => eb.ref('pet.name')
445
- * })
323
+ * .set((eb) => ({
324
+ * first_name: eb.ref('pet.name')
325
+ * }))
446
326
  * .whereRef('pet.owner_id', '=', 'person.id')
447
327
  * ```
448
328
  *
@@ -470,7 +350,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
470
350
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
471
351
  * // `select` needs to come after the call to `innerJoin` so
472
352
  * // that you can select from the joined table.
473
- * .select('person.id', 'pet.name')
353
+ * .select(['person.id', 'pet.name'])
474
354
  * .execute()
475
355
  *
476
356
  * result[0].id
@@ -588,7 +468,11 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
588
468
  *
589
469
  * This method takes an object whose keys are column names and values are
590
470
  * values to update. In addition to the column's type, the values can be
591
- * raw {@link sql} snippets or select queries.
471
+ * any expressions such as raw {@link sql} snippets or select queries.
472
+ *
473
+ * This method also accepts a callback that returns the update object. The
474
+ * callback takes an instance of `{@link ExpressionBuilder} as its only argument.
475
+ * The expression builder can be used to create arbitrary update expressions.
592
476
  *
593
477
  * The return value of an update query is an instance of {@link UpdateResult}.
594
478
  * You can use the {@link returning} method on supported databases to get out
@@ -641,19 +525,20 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
641
525
  * update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3 returning "id"
642
526
  * ```
643
527
  *
644
- * In addition to primitives, the values can also be raw sql expressions or
645
- * select queries:
528
+ * In addition to primitives, the values can arbitrary expressions including
529
+ * raw `sql` snippets or subqueries:
646
530
  *
647
531
  * ```ts
648
532
  * import { sql } from 'kysely'
649
533
  *
650
534
  * const result = await db
651
535
  * .updateTable('person')
652
- * .set({
536
+ * .set(({ selectFrom, ref, fn }) => ({
653
537
  * first_name: 'Jennifer',
538
+ * middle_name: ref('first_name'),
539
+ * age: selectFrom('person').select(fn.avg('age')),
654
540
  * last_name: sql`${'Ani'} || ${'ston'}`,
655
- * age: db.selectFrom('person').select(sql`avg(age)`),
656
- * })
541
+ * }))
657
542
  * .where('id', '=', 1)
658
543
  * .executeTakeFirst()
659
544
  *
@@ -665,12 +550,14 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
665
550
  * ```sql
666
551
  * update "person" set
667
552
  * "first_name" = $1,
668
- * "last_name" = $2 || $3,
669
- * "age" = (select avg(age) from "person")
553
+ * "middle_name" = "first_name",
554
+ * "age" = (select avg(age) from "person"),
555
+ * "last_name" = $2 || $3
670
556
  * where "id" = $4
671
557
  * ```
672
558
  */
673
- set(row: UpdateObject<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
559
+ set(update: UpdateObject<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
560
+ set(update: UpdateObjectFactory<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
674
561
  /**
675
562
  * Allows you to return data from modified rows.
676
563
  *
@@ -722,23 +609,23 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
722
609
  * first_name: 'Jennifer',
723
610
  * last_name: 'Aniston'
724
611
  * })
725
- * .returning([
612
+ * .returning(eb => [
726
613
  * 'id as id',
727
614
  * sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
728
- * (qb) => qb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
615
+ * eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
729
616
  * ])
730
617
  * .executeTakeFirst()
731
618
  * ```
732
619
  */
733
- returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
734
- returning<SE extends SelectExpression<DB, TB>>(selection: SE): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
620
+ returning<SE extends SelectExpression<DB, TB>>(selection: SelectArg<DB, TB, SE>): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
735
621
  /**
736
622
  * Adds a `returning *` to an insert/update/delete query on databases
737
623
  * that support `returning` such as PostgreSQL.
738
624
  */
739
625
  returningAll(): UpdateQueryBuilder<DB, UT, TB, Selectable<DB[TB]>>;
740
626
  /**
741
- * Simply calls the given function passing `this` as the only argument.
627
+ * Simply calls the provided function passing `this` as the only argument. `$call` returns
628
+ * what the provided function returns.
742
629
  *
743
630
  * If you want to conditionally call a method on `this`, see
744
631
  * the {@link $if} method.
@@ -869,42 +756,87 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
869
756
  */
870
757
  withPlugin(plugin: KyselyPlugin): UpdateQueryBuilder<DB, UT, TB, O>;
871
758
  toOperationNode(): UpdateQueryNode;
872
- compile(): CompiledQuery<O>;
759
+ compile(): CompiledQuery<SimplifyResult<O>>;
873
760
  /**
874
761
  * Executes the query and returns an array of rows.
875
762
  *
876
763
  * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
877
764
  */
878
- execute(): Promise<O[]>;
765
+ execute(): Promise<SimplifyResult<O>[]>;
879
766
  /**
880
767
  * Executes the query and returns the first result or undefined if
881
768
  * the query returned no result.
882
769
  */
883
- executeTakeFirst(): Promise<SingleResultType<O>>;
770
+ executeTakeFirst(): Promise<SimplifySingleResult<O>>;
884
771
  /**
885
772
  * Executes the query and returns the first result or throws if
886
773
  * the query returned no result.
887
774
  *
888
775
  * By default an instance of {@link NoResultError} is thrown, but you can
889
- * provide a custom error class as the only argument to throw a different
776
+ * provide a custom error class, or callback as the only argument to throw a different
890
777
  * error.
891
778
  */
892
- executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<O>;
779
+ executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor | ((node: QueryNode) => Error)): Promise<SimplifyResult<O>>;
893
780
  /**
894
- * Executes query with `explain` statement before `update` keyword.
781
+ * Executes the query and streams the rows.
782
+ *
783
+ * The optional argument `chunkSize` defines how many rows to fetch from the database
784
+ * at a time. It only affects some dialects like PostgreSQL that support it.
785
+ *
786
+ * ### Examples
787
+ *
788
+ * ```ts
789
+ * const stream = db.
790
+ * .selectFrom('person')
791
+ * .select(['first_name', 'last_name'])
792
+ * .where('gender', '=', 'other')
793
+ * .stream()
794
+ *
795
+ * for await (const person of stream) {
796
+ * console.log(person.first_name)
797
+ *
798
+ * if (person.last_name === 'Something') {
799
+ * // Breaking or returning before the stream has ended will release
800
+ * // the database connection and invalidate the stream.
801
+ * break
802
+ * }
803
+ * }
804
+ * ```
805
+ */
806
+ stream(chunkSize?: number): AsyncIterableIterator<O>;
807
+ /**
808
+ * Executes query with `explain` statement before the main query.
895
809
  *
896
810
  * ```ts
897
811
  * const explained = await db
898
- * .updateTable('person')
899
- * .set(updates)
900
- * .where('id', '=', 123)
812
+ * .selectFrom('person')
813
+ * .where('gender', '=', 'female')
814
+ * .selectAll()
901
815
  * .explain('json')
902
816
  * ```
903
817
  *
904
818
  * The generated SQL (MySQL):
905
819
  *
906
820
  * ```sql
907
- * explain format=json update `person` set `first_name` = ?, `last_name` = ? where `id` = ?
821
+ * explain format=json select * from `person` where `gender` = ?
822
+ * ```
823
+ *
824
+ * You can also execute `explain analyze` statements.
825
+ *
826
+ * ```ts
827
+ * import { sql } from 'kysely'
828
+ *
829
+ * const explained = await db
830
+ * .selectFrom('person')
831
+ * .where('gender', '=', 'female')
832
+ * .selectAll()
833
+ * .explain('json', sql`analyze`)
834
+ * ```
835
+ *
836
+ * The generated SQL (PostgreSQL):
837
+ *
838
+ * ```sql
839
+ * explain (analyze, format json) select * from "person" where "gender" = $1
908
840
  * ```
909
841
  */
910
842
  explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<ER[]>;