kysely 0.27.5 → 0.28.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 (371) hide show
  1. package/CODE_OF_CONDUCT.md +183 -0
  2. package/FUNDING.md +25 -0
  3. package/README.md +182 -3
  4. package/deno.check.d.ts +7 -0
  5. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +26 -16
  6. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +6 -3
  7. package/dist/cjs/dialect/mssql/mssql-driver.js +33 -19
  8. package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +2 -0
  9. package/dist/cjs/dialect/mssql/mssql-query-compiler.js +11 -0
  10. package/dist/cjs/dialect/mysql/mysql-driver.d.ts +4 -0
  11. package/dist/cjs/dialect/mysql/mysql-driver.js +27 -12
  12. package/dist/cjs/dialect/postgres/postgres-driver.d.ts +4 -0
  13. package/dist/cjs/dialect/postgres/postgres-driver.js +28 -18
  14. package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -17
  15. package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +4 -0
  16. package/dist/cjs/dialect/sqlite/sqlite-driver.js +19 -13
  17. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +66 -44
  18. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
  19. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
  20. package/dist/cjs/driver/database-connection.d.ts +0 -4
  21. package/dist/cjs/driver/driver.d.ts +17 -0
  22. package/dist/cjs/driver/driver.js +13 -1
  23. package/dist/cjs/driver/dummy-driver.d.ts +3 -0
  24. package/dist/cjs/driver/dummy-driver.js +9 -0
  25. package/dist/cjs/driver/runtime-driver.d.ts +4 -0
  26. package/dist/cjs/driver/runtime-driver.js +43 -3
  27. package/dist/cjs/expression/expression-builder.d.ts +9 -10
  28. package/dist/cjs/helpers/postgres.d.ts +48 -0
  29. package/dist/cjs/helpers/postgres.js +50 -0
  30. package/dist/cjs/index.d.ts +13 -2
  31. package/dist/cjs/index.js +13 -2
  32. package/dist/cjs/kysely.d.ts +339 -2
  33. package/dist/cjs/kysely.js +465 -11
  34. package/dist/cjs/migration/migrator.d.ts +16 -1
  35. package/dist/cjs/migration/migrator.js +14 -4
  36. package/dist/cjs/operation-node/aggregate-function-node.d.ts +2 -1
  37. package/dist/cjs/operation-node/aggregate-function-node.js +4 -3
  38. package/dist/cjs/operation-node/alter-table-node.d.ts +3 -1
  39. package/dist/cjs/operation-node/collate-node.d.ts +13 -0
  40. package/dist/cjs/operation-node/collate-node.js +19 -0
  41. package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
  42. package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
  43. package/dist/cjs/operation-node/create-type-node.js +1 -1
  44. package/dist/cjs/operation-node/delete-query-node.d.ts +8 -2
  45. package/dist/cjs/operation-node/delete-query-node.js +11 -15
  46. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -0
  47. package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
  48. package/dist/cjs/operation-node/join-node.d.ts +1 -1
  49. package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
  50. package/dist/cjs/operation-node/operation-node-transformer.d.ts +106 -97
  51. package/dist/cjs/operation-node/operation-node-transformer.js +352 -312
  52. package/dist/cjs/operation-node/operation-node-visitor.d.ts +9 -1
  53. package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
  54. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  55. package/dist/cjs/operation-node/or-action-node.d.ts +12 -0
  56. package/dist/cjs/operation-node/or-action-node.js +18 -0
  57. package/dist/cjs/operation-node/order-by-item-node.d.ts +5 -0
  58. package/dist/cjs/operation-node/order-by-item-node.js +6 -0
  59. package/dist/cjs/operation-node/primary-key-constraint-node.d.ts +29 -0
  60. package/dist/cjs/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
  61. package/dist/cjs/operation-node/query-node.d.ts +7 -0
  62. package/dist/cjs/operation-node/query-node.js +15 -0
  63. package/dist/cjs/operation-node/refresh-materialized-view-node.d.ts +17 -0
  64. package/dist/cjs/operation-node/refresh-materialized-view-node.js +25 -0
  65. package/dist/cjs/operation-node/rename-constraint-node.d.ts +14 -0
  66. package/dist/cjs/operation-node/rename-constraint-node.js +20 -0
  67. package/dist/cjs/operation-node/select-query-node.d.ts +8 -2
  68. package/dist/cjs/operation-node/select-query-node.js +11 -15
  69. package/dist/cjs/operation-node/unique-constraint-node.d.ts +2 -0
  70. package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
  71. package/dist/cjs/operation-node/update-query-node.js +5 -2
  72. package/dist/cjs/parser/collate-parser.d.ts +1 -0
  73. package/dist/cjs/parser/collate-parser.js +2 -0
  74. package/dist/cjs/parser/delete-from-parser.d.ts +5 -0
  75. package/dist/cjs/parser/delete-from-parser.js +2 -0
  76. package/dist/cjs/parser/insert-values-parser.js +3 -1
  77. package/dist/cjs/parser/join-parser.d.ts +1 -1
  78. package/dist/cjs/parser/join-parser.js +7 -1
  79. package/dist/cjs/parser/merge-into-parser.d.ts +5 -0
  80. package/dist/cjs/parser/merge-into-parser.js +2 -0
  81. package/dist/cjs/parser/order-by-parser.d.ts +18 -5
  82. package/dist/cjs/parser/order-by-parser.js +24 -14
  83. package/dist/cjs/parser/savepoint-parser.d.ts +4 -0
  84. package/dist/cjs/parser/savepoint-parser.js +11 -0
  85. package/dist/cjs/parser/select-from-parser.d.ts +4 -0
  86. package/dist/cjs/parser/select-from-parser.js +2 -0
  87. package/dist/cjs/parser/table-parser.d.ts +2 -5
  88. package/dist/cjs/parser/update-parser.d.ts +5 -0
  89. package/dist/cjs/parser/update-parser.js +2 -0
  90. package/dist/cjs/parser/update-set-parser.d.ts +7 -4
  91. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
  92. package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +2 -1
  93. package/dist/cjs/plugin/camel-case/camel-case-transformer.js +2 -2
  94. package/dist/cjs/plugin/camel-case/camel-case.js +4 -1
  95. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  96. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
  97. package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
  98. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
  99. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +162 -0
  100. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
  101. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +29 -0
  102. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
  103. package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.js +66 -0
  104. package/dist/cjs/plugin/immediate-value/immediate-value-plugin.js +1 -1
  105. package/dist/cjs/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
  106. package/dist/cjs/plugin/immediate-value/immediate-value-transformer.js +6 -4
  107. package/dist/cjs/plugin/with-schema/with-schema-plugin.js +1 -1
  108. package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +8 -3
  109. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +45 -14
  110. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +83 -5
  111. package/dist/cjs/query-builder/aggregate-function-builder.js +15 -27
  112. package/dist/cjs/query-builder/cte-builder.js +0 -2
  113. package/dist/cjs/query-builder/delete-query-builder.d.ts +36 -47
  114. package/dist/cjs/query-builder/delete-query-builder.js +12 -78
  115. package/dist/cjs/query-builder/function-module.d.ts +31 -4
  116. package/dist/cjs/query-builder/insert-query-builder.d.ts +161 -6
  117. package/dist/cjs/query-builder/insert-query-builder.js +197 -10
  118. package/dist/cjs/query-builder/join-builder.js +0 -2
  119. package/dist/cjs/query-builder/merge-query-builder.d.ts +145 -3
  120. package/dist/cjs/query-builder/merge-query-builder.js +28 -7
  121. package/dist/cjs/query-builder/on-conflict-builder.js +0 -4
  122. package/dist/cjs/query-builder/order-by-interface.d.ts +176 -0
  123. package/dist/cjs/query-builder/order-by-interface.js +2 -0
  124. package/dist/cjs/query-builder/order-by-item-builder.d.ts +43 -0
  125. package/dist/cjs/query-builder/order-by-item-builder.js +75 -0
  126. package/dist/cjs/query-builder/over-builder.d.ts +43 -6
  127. package/dist/cjs/query-builder/over-builder.js +8 -25
  128. package/dist/cjs/query-builder/returning-interface.d.ts +20 -3
  129. package/dist/cjs/query-builder/select-query-builder.d.ts +279 -98
  130. package/dist/cjs/query-builder/select-query-builder.js +26 -26
  131. package/dist/cjs/query-builder/update-query-builder.d.ts +88 -9
  132. package/dist/cjs/query-builder/update-query-builder.js +17 -15
  133. package/dist/cjs/query-compiler/compiled-query.d.ts +2 -0
  134. package/dist/cjs/query-compiler/compiled-query.js +2 -0
  135. package/dist/cjs/query-compiler/default-query-compiler.d.ts +17 -2
  136. package/dist/cjs/query-compiler/default-query-compiler.js +97 -2
  137. package/dist/cjs/query-compiler/query-compiler.d.ts +4 -2
  138. package/dist/cjs/query-creator.d.ts +23 -25
  139. package/dist/cjs/query-creator.js +280 -8
  140. package/dist/cjs/query-executor/default-query-executor.d.ts +2 -1
  141. package/dist/cjs/query-executor/default-query-executor.js +2 -2
  142. package/dist/cjs/query-executor/query-executor-base.js +7 -25
  143. package/dist/cjs/raw-builder/raw-builder.js +0 -3
  144. package/dist/cjs/raw-builder/sql.d.ts +4 -4
  145. package/dist/cjs/raw-builder/sql.js +1 -1
  146. package/dist/cjs/schema/alter-column-builder.js +0 -3
  147. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
  148. package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
  149. package/dist/cjs/schema/alter-table-add-index-builder.js +0 -2
  150. package/dist/cjs/schema/alter-table-builder.d.ts +7 -3
  151. package/dist/cjs/schema/alter-table-builder.js +21 -10
  152. package/dist/cjs/schema/alter-table-drop-constraint-builder.js +0 -2
  153. package/dist/cjs/schema/alter-table-executor.js +0 -2
  154. package/dist/cjs/schema/check-constraint-builder.d.ts +13 -0
  155. package/dist/cjs/schema/check-constraint-builder.js +20 -0
  156. package/dist/cjs/schema/column-definition-builder.js +0 -2
  157. package/dist/cjs/schema/create-index-builder.js +1 -3
  158. package/dist/cjs/schema/create-schema-builder.js +0 -2
  159. package/dist/cjs/schema/create-table-builder.d.ts +5 -4
  160. package/dist/cjs/schema/create-table-builder.js +9 -7
  161. package/dist/cjs/schema/create-type-builder.d.ts +1 -1
  162. package/dist/cjs/schema/create-type-builder.js +0 -2
  163. package/dist/cjs/schema/create-view-builder.js +0 -2
  164. package/dist/cjs/schema/drop-index-builder.js +0 -2
  165. package/dist/cjs/schema/drop-schema-builder.js +0 -2
  166. package/dist/cjs/schema/drop-table-builder.js +0 -2
  167. package/dist/cjs/schema/drop-type-builder.js +0 -2
  168. package/dist/cjs/schema/drop-view-builder.js +0 -2
  169. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +9 -0
  170. package/dist/cjs/schema/foreign-key-constraint-builder.js +16 -2
  171. package/dist/cjs/schema/primary-key-constraint-builder.d.ts +17 -0
  172. package/dist/cjs/schema/primary-key-constraint-builder.js +37 -0
  173. package/dist/cjs/schema/refresh-materialized-view-builder.d.ts +47 -0
  174. package/dist/cjs/schema/refresh-materialized-view-builder.js +75 -0
  175. package/dist/cjs/schema/schema.d.ts +14 -0
  176. package/dist/cjs/schema/schema.js +21 -0
  177. package/dist/cjs/schema/unique-constraint-builder.d.ts +10 -1
  178. package/dist/cjs/schema/unique-constraint-builder.js +26 -5
  179. package/dist/cjs/util/infer-result.d.ts +1 -1
  180. package/dist/cjs/util/log.d.ts +1 -0
  181. package/dist/cjs/util/log.js +3 -2
  182. package/dist/cjs/util/provide-controlled-connection.d.ts +7 -0
  183. package/dist/cjs/util/provide-controlled-connection.js +24 -0
  184. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +26 -16
  185. package/dist/esm/dialect/mssql/mssql-driver.d.ts +6 -3
  186. package/dist/esm/dialect/mssql/mssql-driver.js +33 -19
  187. package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +2 -0
  188. package/dist/esm/dialect/mssql/mssql-query-compiler.js +11 -0
  189. package/dist/esm/dialect/mysql/mysql-driver.d.ts +4 -0
  190. package/dist/esm/dialect/mysql/mysql-driver.js +27 -12
  191. package/dist/esm/dialect/postgres/postgres-driver.d.ts +4 -0
  192. package/dist/esm/dialect/postgres/postgres-driver.js +28 -18
  193. package/dist/esm/dialect/postgres/postgres-introspector.js +7 -17
  194. package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +4 -0
  195. package/dist/esm/dialect/sqlite/sqlite-driver.js +19 -13
  196. package/dist/esm/dialect/sqlite/sqlite-introspector.js +66 -44
  197. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
  198. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
  199. package/dist/esm/driver/database-connection.d.ts +0 -4
  200. package/dist/esm/driver/driver.d.ts +17 -0
  201. package/dist/esm/driver/driver.js +11 -0
  202. package/dist/esm/driver/dummy-driver.d.ts +3 -0
  203. package/dist/esm/driver/dummy-driver.js +9 -0
  204. package/dist/esm/driver/runtime-driver.d.ts +4 -0
  205. package/dist/esm/driver/runtime-driver.js +43 -3
  206. package/dist/esm/expression/expression-builder.d.ts +9 -10
  207. package/dist/esm/helpers/postgres.d.ts +48 -0
  208. package/dist/esm/helpers/postgres.js +49 -0
  209. package/dist/esm/index.d.ts +13 -2
  210. package/dist/esm/index.js +11 -1
  211. package/dist/esm/kysely.d.ts +339 -2
  212. package/dist/esm/kysely.js +461 -10
  213. package/dist/esm/migration/migrator.d.ts +16 -1
  214. package/dist/esm/migration/migrator.js +14 -4
  215. package/dist/esm/operation-node/aggregate-function-node.d.ts +2 -1
  216. package/dist/esm/operation-node/aggregate-function-node.js +4 -3
  217. package/dist/esm/operation-node/alter-table-node.d.ts +3 -1
  218. package/dist/esm/operation-node/collate-node.d.ts +13 -0
  219. package/dist/esm/operation-node/collate-node.js +17 -0
  220. package/dist/esm/operation-node/constraint-node.d.ts +1 -1
  221. package/dist/esm/operation-node/create-type-node.d.ts +1 -1
  222. package/dist/esm/operation-node/create-type-node.js +1 -1
  223. package/dist/esm/operation-node/delete-query-node.d.ts +8 -2
  224. package/dist/esm/operation-node/delete-query-node.js +11 -15
  225. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -0
  226. package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
  227. package/dist/esm/operation-node/join-node.d.ts +1 -1
  228. package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
  229. package/dist/esm/operation-node/operation-node-transformer.d.ts +106 -97
  230. package/dist/esm/operation-node/operation-node-transformer.js +352 -312
  231. package/dist/esm/operation-node/operation-node-visitor.d.ts +9 -1
  232. package/dist/esm/operation-node/operation-node-visitor.js +4 -0
  233. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  234. package/dist/esm/operation-node/or-action-node.d.ts +12 -0
  235. package/dist/esm/operation-node/or-action-node.js +16 -0
  236. package/dist/esm/operation-node/order-by-item-node.d.ts +5 -0
  237. package/dist/esm/operation-node/order-by-item-node.js +6 -0
  238. package/dist/esm/operation-node/primary-key-constraint-node.d.ts +29 -0
  239. package/dist/esm/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
  240. package/dist/esm/operation-node/query-node.d.ts +7 -0
  241. package/dist/esm/operation-node/query-node.js +15 -0
  242. package/dist/esm/operation-node/refresh-materialized-view-node.d.ts +17 -0
  243. package/dist/esm/operation-node/refresh-materialized-view-node.js +23 -0
  244. package/dist/esm/operation-node/rename-constraint-node.d.ts +14 -0
  245. package/dist/esm/operation-node/rename-constraint-node.js +18 -0
  246. package/dist/esm/operation-node/select-query-node.d.ts +8 -2
  247. package/dist/esm/operation-node/select-query-node.js +11 -15
  248. package/dist/esm/operation-node/unique-constraint-node.d.ts +2 -0
  249. package/dist/esm/operation-node/update-query-node.d.ts +3 -4
  250. package/dist/esm/operation-node/update-query-node.js +5 -2
  251. package/dist/esm/parser/collate-parser.d.ts +1 -0
  252. package/dist/esm/parser/collate-parser.js +2 -0
  253. package/dist/esm/parser/delete-from-parser.d.ts +5 -0
  254. package/dist/esm/parser/delete-from-parser.js +2 -0
  255. package/dist/esm/parser/insert-values-parser.js +3 -1
  256. package/dist/esm/parser/join-parser.d.ts +1 -1
  257. package/dist/esm/parser/join-parser.js +7 -1
  258. package/dist/esm/parser/merge-into-parser.d.ts +5 -0
  259. package/dist/esm/parser/merge-into-parser.js +2 -0
  260. package/dist/esm/parser/order-by-parser.d.ts +18 -5
  261. package/dist/esm/parser/order-by-parser.js +27 -17
  262. package/dist/esm/parser/savepoint-parser.d.ts +4 -0
  263. package/dist/esm/parser/savepoint-parser.js +9 -0
  264. package/dist/esm/parser/select-from-parser.d.ts +4 -0
  265. package/dist/esm/parser/select-from-parser.js +2 -0
  266. package/dist/esm/parser/table-parser.d.ts +2 -5
  267. package/dist/esm/parser/update-parser.d.ts +5 -0
  268. package/dist/esm/parser/update-parser.js +2 -0
  269. package/dist/esm/parser/update-set-parser.d.ts +7 -4
  270. package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -1
  271. package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +2 -1
  272. package/dist/esm/plugin/camel-case/camel-case-transformer.js +2 -2
  273. package/dist/esm/plugin/camel-case/camel-case.js +4 -1
  274. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
  275. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
  276. package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
  277. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
  278. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +159 -0
  279. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
  280. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +26 -0
  281. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
  282. package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.js +63 -0
  283. package/dist/esm/plugin/immediate-value/immediate-value-plugin.js +1 -1
  284. package/dist/esm/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
  285. package/dist/esm/plugin/immediate-value/immediate-value-transformer.js +6 -4
  286. package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -1
  287. package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +8 -3
  288. package/dist/esm/plugin/with-schema/with-schema-transformer.js +45 -14
  289. package/dist/esm/query-builder/aggregate-function-builder.d.ts +83 -5
  290. package/dist/esm/query-builder/aggregate-function-builder.js +15 -27
  291. package/dist/esm/query-builder/cte-builder.js +0 -2
  292. package/dist/esm/query-builder/delete-query-builder.d.ts +36 -47
  293. package/dist/esm/query-builder/delete-query-builder.js +12 -78
  294. package/dist/esm/query-builder/function-module.d.ts +31 -4
  295. package/dist/esm/query-builder/insert-query-builder.d.ts +161 -6
  296. package/dist/esm/query-builder/insert-query-builder.js +197 -10
  297. package/dist/esm/query-builder/join-builder.js +0 -2
  298. package/dist/esm/query-builder/merge-query-builder.d.ts +145 -3
  299. package/dist/esm/query-builder/merge-query-builder.js +29 -8
  300. package/dist/esm/query-builder/on-conflict-builder.js +0 -4
  301. package/dist/esm/query-builder/order-by-interface.d.ts +176 -0
  302. package/dist/esm/query-builder/order-by-interface.js +2 -0
  303. package/dist/esm/query-builder/order-by-item-builder.d.ts +43 -0
  304. package/dist/esm/query-builder/order-by-item-builder.js +72 -0
  305. package/dist/esm/query-builder/over-builder.d.ts +43 -6
  306. package/dist/esm/query-builder/over-builder.js +8 -25
  307. package/dist/esm/query-builder/returning-interface.d.ts +20 -3
  308. package/dist/esm/query-builder/select-query-builder.d.ts +279 -98
  309. package/dist/esm/query-builder/select-query-builder.js +26 -26
  310. package/dist/esm/query-builder/update-query-builder.d.ts +88 -9
  311. package/dist/esm/query-builder/update-query-builder.js +17 -15
  312. package/dist/esm/query-compiler/compiled-query.d.ts +2 -0
  313. package/dist/esm/query-compiler/compiled-query.js +2 -0
  314. package/dist/esm/query-compiler/default-query-compiler.d.ts +17 -2
  315. package/dist/esm/query-compiler/default-query-compiler.js +97 -2
  316. package/dist/esm/query-compiler/query-compiler.d.ts +4 -2
  317. package/dist/esm/query-creator.d.ts +23 -25
  318. package/dist/esm/query-creator.js +281 -9
  319. package/dist/esm/query-executor/default-query-executor.d.ts +2 -1
  320. package/dist/esm/query-executor/default-query-executor.js +2 -2
  321. package/dist/esm/query-executor/query-executor-base.js +7 -25
  322. package/dist/esm/raw-builder/raw-builder.js +0 -3
  323. package/dist/esm/raw-builder/sql.d.ts +4 -4
  324. package/dist/esm/raw-builder/sql.js +1 -1
  325. package/dist/esm/schema/alter-column-builder.js +0 -3
  326. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
  327. package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
  328. package/dist/esm/schema/alter-table-add-index-builder.js +0 -2
  329. package/dist/esm/schema/alter-table-builder.d.ts +7 -3
  330. package/dist/esm/schema/alter-table-builder.js +22 -11
  331. package/dist/esm/schema/alter-table-drop-constraint-builder.js +0 -2
  332. package/dist/esm/schema/alter-table-executor.js +0 -2
  333. package/dist/esm/schema/check-constraint-builder.d.ts +13 -0
  334. package/dist/esm/schema/check-constraint-builder.js +17 -0
  335. package/dist/esm/schema/column-definition-builder.js +0 -2
  336. package/dist/esm/schema/create-index-builder.js +1 -3
  337. package/dist/esm/schema/create-schema-builder.js +0 -2
  338. package/dist/esm/schema/create-table-builder.d.ts +5 -4
  339. package/dist/esm/schema/create-table-builder.js +10 -8
  340. package/dist/esm/schema/create-type-builder.d.ts +1 -1
  341. package/dist/esm/schema/create-type-builder.js +0 -2
  342. package/dist/esm/schema/create-view-builder.js +0 -2
  343. package/dist/esm/schema/drop-index-builder.js +0 -2
  344. package/dist/esm/schema/drop-schema-builder.js +0 -2
  345. package/dist/esm/schema/drop-table-builder.js +0 -2
  346. package/dist/esm/schema/drop-type-builder.js +0 -2
  347. package/dist/esm/schema/drop-view-builder.js +0 -2
  348. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +9 -0
  349. package/dist/esm/schema/foreign-key-constraint-builder.js +16 -2
  350. package/dist/esm/schema/primary-key-constraint-builder.d.ts +17 -0
  351. package/dist/esm/schema/primary-key-constraint-builder.js +34 -0
  352. package/dist/esm/schema/refresh-materialized-view-builder.d.ts +47 -0
  353. package/dist/esm/schema/refresh-materialized-view-builder.js +72 -0
  354. package/dist/esm/schema/schema.d.ts +14 -0
  355. package/dist/esm/schema/schema.js +21 -0
  356. package/dist/esm/schema/unique-constraint-builder.d.ts +10 -1
  357. package/dist/esm/schema/unique-constraint-builder.js +26 -5
  358. package/dist/esm/util/infer-result.d.ts +1 -1
  359. package/dist/esm/util/log.d.ts +1 -0
  360. package/dist/esm/util/log.js +3 -2
  361. package/dist/esm/util/provide-controlled-connection.d.ts +7 -0
  362. package/dist/esm/util/provide-controlled-connection.js +22 -0
  363. package/outdated-typescript.d.ts +5 -0
  364. package/package.json +16 -2
  365. package/CONTRIBUTING.md +0 -70
  366. package/dist/cjs/operation-node/primary-constraint-node.d.ts +0 -15
  367. package/dist/cjs/util/prevent-await.d.ts +0 -1
  368. package/dist/cjs/util/prevent-await.js +0 -13
  369. package/dist/esm/operation-node/primary-constraint-node.d.ts +0 -15
  370. package/dist/esm/util/prevent-await.d.ts +0 -1
  371. package/dist/esm/util/prevent-await.js +0 -11
@@ -15,7 +15,7 @@ import { QueryId } from '../util/query-id.js';
15
15
  import { UpdateResult } from './update-result.js';
16
16
  import { KyselyPlugin } from '../plugin/kysely-plugin.js';
17
17
  import { WhereInterface } from './where-interface.js';
18
- import { ReturningInterface } from './returning-interface.js';
18
+ import { MultiTableReturningInterface } from './returning-interface.js';
19
19
  import { NoResultErrorConstructor } from './no-result-error.js';
20
20
  import { Explainable, ExplainFormat } from '../util/explainable.js';
21
21
  import { AliasedExpression, Expression } from '../expression/expression.js';
@@ -25,7 +25,9 @@ import { Streamable } from '../util/streamable.js';
25
25
  import { ExpressionOrFactory } from '../parser/expression-parser.js';
26
26
  import { ValueExpression } from '../parser/value-parser.js';
27
27
  import { OutputCallback, OutputExpression, OutputInterface, OutputPrefix, SelectExpressionFromOutputCallback, SelectExpressionFromOutputExpression } from './output-interface.js';
28
- export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OutputInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
28
+ import { OrderByInterface } from './order-by-interface.js';
29
+ import { DirectedOrderByStringReference, OrderByExpression, OrderByModifiers } from '../parser/order-by-parser.js';
30
+ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, MultiTableReturningInterface<DB, TB, O>, OutputInterface<DB, TB, O>, OrderByInterface<DB, TB, never>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
29
31
  #private;
30
32
  constructor(props: UpdateQueryBuilderProps);
31
33
  /**
@@ -599,6 +601,50 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
599
601
  */
600
602
  fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): UpdateQueryBuilderWithFullJoin<DB, UT, TB, O, TE>;
601
603
  fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): UpdateQueryBuilderWithFullJoin<DB, UT, TB, O, TE>;
604
+ /**
605
+ * @description This is only supported by some dialects like MySQL or SQLite with `SQLITE_ENABLE_UPDATE_DELETE_LIMIT`.
606
+ */
607
+ orderBy<OE extends OrderByExpression<DB, TB, {}>>(expr: OE, modifiers?: OrderByModifiers): UpdateQueryBuilder<DB, UT, TB, O>;
608
+ /**
609
+ * @description This is only supported by some dialects like MySQL or SQLite with `SQLITE_ENABLE_UPDATE_DELETE_LIMIT`.
610
+ * @deprecated It does ~2-2.6x more compile-time instantiations compared to multiple chained `orderBy(expr, modifiers?)` calls (in `order by` clauses with reasonable item counts), and has broken autocompletion.
611
+ */
612
+ orderBy<OE extends OrderByExpression<DB, TB, {}> | DirectedOrderByStringReference<DB, TB, {}>>(exprs: ReadonlyArray<OE>): UpdateQueryBuilder<DB, UT, TB, O>;
613
+ /**
614
+ * @description This is only supported by some dialects like MySQL or SQLite with `SQLITE_ENABLE_UPDATE_DELETE_LIMIT`.
615
+ * @deprecated It does ~2.9x more compile-time instantiations compared to a `orderBy(expr, direction)` call.
616
+ */
617
+ orderBy<OE extends DirectedOrderByStringReference<DB, TB, {}>>(expr: OE): UpdateQueryBuilder<DB, UT, TB, O>;
618
+ /**
619
+ * @description This is only supported by some dialects like MySQL or SQLite with `SQLITE_ENABLE_UPDATE_DELETE_LIMIT`.
620
+ * @deprecated Use `orderBy(expr, (ob) => ...)` instead.
621
+ */
622
+ orderBy<OE extends OrderByExpression<DB, TB, {}>>(expr: OE, modifiers: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
623
+ /**
624
+ * Clears the `order by` clause from the query.
625
+ *
626
+ * See {@link orderBy} for adding an `order by` clause or item to a query.
627
+ *
628
+ * ### Examples
629
+ *
630
+ * ```ts
631
+ * const query = db
632
+ * .selectFrom('person')
633
+ * .selectAll()
634
+ * .orderBy('id', 'desc')
635
+ *
636
+ * const results = await query
637
+ * .clearOrderBy()
638
+ * .execute()
639
+ * ```
640
+ *
641
+ * The generated SQL (PostgreSQL):
642
+ *
643
+ * ```sql
644
+ * select * from "person"
645
+ * ```
646
+ */
647
+ clearOrderBy(): UpdateQueryBuilder<DB, UT, TB, O>;
602
648
  /**
603
649
  * Adds a limit clause to the update query for supported databases, such as MySQL.
604
650
  *
@@ -651,8 +697,6 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
651
697
  * })
652
698
  * .where('id', '=', 1)
653
699
  * .executeTakeFirst()
654
- *
655
- * console.log(result.numUpdatedRows)
656
700
  * ```
657
701
  *
658
702
  * The generated SQL (PostgreSQL):
@@ -676,8 +720,6 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
676
720
  * }))
677
721
  * .where('id', '=', 1)
678
722
  * .executeTakeFirst()
679
- *
680
- * console.log(result.numUpdatedRows)
681
723
  * ```
682
724
  *
683
725
  * The generated SQL (PostgreSQL):
@@ -762,6 +804,43 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
762
804
  * "last_name" = $3 || $4
763
805
  * where "id" = $5
764
806
  * ```
807
+ *
808
+ * <!-- siteExample("update", "MySQL joins", 30) -->
809
+ *
810
+ * MySQL allows you to join tables directly to the "main" table and update
811
+ * rows of all joined tables. This is possible by passing all tables to the
812
+ * `updateTable` method as a list and adding the `ON` conditions as `WHERE`
813
+ * statements. You can then use the `set(column, value)` variant to update
814
+ * columns using table qualified names.
815
+ *
816
+ * The `UpdateQueryBuilder` also has `innerJoin` etc. join methods, but those
817
+ * can only be used as part of a PostgreSQL `update set from join` query.
818
+ * Due to type complexity issues, we unfortunately can't make the same
819
+ * methods work in both cases.
820
+ *
821
+ * ```ts
822
+ * const result = await db
823
+ * .updateTable(['person', 'pet'])
824
+ * .set('person.first_name', 'Updated person')
825
+ * .set('pet.name', 'Updated doggo')
826
+ * .whereRef('person.id', '=', 'pet.owner_id')
827
+ * .where('person.id', '=', 1)
828
+ * .executeTakeFirst()
829
+ * ```
830
+ *
831
+ * The generated SQL (MySQL):
832
+ *
833
+ * ```sql
834
+ * update
835
+ * `person`,
836
+ * `pet`
837
+ * set
838
+ * `person`.`first_name` = ?,
839
+ * `pet`.`name` = ?
840
+ * where
841
+ * `person`.`id` = `pet`.`owner_id`
842
+ * and `person`.`id` = ?
843
+ * ```
765
844
  */
766
845
  set(update: UpdateObjectExpression<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
767
846
  set<RE extends ReferenceExpression<DB, UT>>(key: RE, value: ValueExpression<DB, TB, ExtractUpdateTypeFromReferenceExpression<DB, UT, RE>>): UpdateQueryBuilder<DB, UT, TB, O>;
@@ -769,7 +848,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
769
848
  * Allows you to return data from modified rows.
770
849
  *
771
850
  * On supported databases like PostgreSQL, this method can be chained to
772
- * `insert`, `update` and `delete` queries to return data.
851
+ * `insert`, `update`, `delete` and `merge` queries to return data.
773
852
  *
774
853
  * Note that on SQLite you need to give aliases for the expressions to avoid
775
854
  * [this bug](https://sqlite.org/forum/forumpost/033daf0b32) in SQLite.
@@ -828,8 +907,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
828
907
  returning<CB extends SelectCallback<DB, TB>>(callback: CB): UpdateQueryBuilder<DB, UT, TB, ReturningCallbackRow<DB, TB, O, CB>>;
829
908
  returning<SE extends SelectExpression<DB, TB>>(selection: SE): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
830
909
  /**
831
- * Adds a `returning *` to an insert/update/delete query on databases
832
- * that support `returning` such as PostgreSQL.
910
+ * Adds a `returning *` or `returning table.*` to an insert/update/delete/merge
911
+ * query on databases that support `returning` such as PostgreSQL.
833
912
  *
834
913
  * Also see the {@link returning} method.
835
914
  */
@@ -7,7 +7,6 @@ const select_parser_js_1 = require("../parser/select-parser.js");
7
7
  const query_node_js_1 = require("../operation-node/query-node.js");
8
8
  const update_query_node_js_1 = require("../operation-node/update-query-node.js");
9
9
  const update_set_parser_js_1 = require("../parser/update-set-parser.js");
10
- const prevent_await_js_1 = require("../util/prevent-await.js");
11
10
  const object_utils_js_1 = require("../util/object-utils.js");
12
11
  const update_result_js_1 = require("./update-result.js");
13
12
  const no_result_error_js_1 = require("./no-result-error.js");
@@ -15,6 +14,7 @@ const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.
15
14
  const value_parser_js_1 = require("../parser/value-parser.js");
16
15
  const limit_node_js_1 = require("../operation-node/limit-node.js");
17
16
  const top_parser_js_1 = require("../parser/top-parser.js");
17
+ const order_by_parser_js_1 = require("../parser/order-by-parser.js");
18
18
  class UpdateQueryBuilder {
19
19
  #props;
20
20
  constructor(props) {
@@ -90,27 +90,33 @@ class UpdateQueryBuilder {
90
90
  });
91
91
  }
92
92
  innerJoin(...args) {
93
- return new UpdateQueryBuilder({
94
- ...this.#props,
95
- queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('InnerJoin', args)),
96
- });
93
+ return this.#join('InnerJoin', args);
97
94
  }
98
95
  leftJoin(...args) {
96
+ return this.#join('LeftJoin', args);
97
+ }
98
+ rightJoin(...args) {
99
+ return this.#join('RightJoin', args);
100
+ }
101
+ fullJoin(...args) {
102
+ return this.#join('FullJoin', args);
103
+ }
104
+ #join(joinType, args) {
99
105
  return new UpdateQueryBuilder({
100
106
  ...this.#props,
101
- queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('LeftJoin', args)),
107
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(joinType, args)),
102
108
  });
103
109
  }
104
- rightJoin(...args) {
110
+ orderBy(...args) {
105
111
  return new UpdateQueryBuilder({
106
112
  ...this.#props,
107
- queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('RightJoin', args)),
113
+ queryNode: query_node_js_1.QueryNode.cloneWithOrderByItems(this.#props.queryNode, (0, order_by_parser_js_1.parseOrderBy)(args)),
108
114
  });
109
115
  }
110
- fullJoin(...args) {
116
+ clearOrderBy() {
111
117
  return new UpdateQueryBuilder({
112
118
  ...this.#props,
113
- queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('FullJoin', args)),
119
+ queryNode: query_node_js_1.QueryNode.cloneWithoutOrderBy(this.#props.queryNode),
114
120
  });
115
121
  }
116
122
  /**
@@ -460,10 +466,7 @@ class UpdateQueryBuilder {
460
466
  return result.rows;
461
467
  }
462
468
  return [
463
- new update_result_js_1.UpdateResult(
464
- // TODO: remove numUpdatedOrDeletedRows.
465
- // TODO: https://github.com/kysely-org/kysely/pull/431#discussion_r1172330899
466
- result.numAffectedRows ?? result.numUpdatedOrDeletedRows ?? BigInt(0), result.numChangedRows),
469
+ new update_result_js_1.UpdateResult(result.numAffectedRows ?? BigInt(0), result.numChangedRows),
467
470
  ];
468
471
  }
469
472
  /**
@@ -508,4 +511,3 @@ class UpdateQueryBuilder {
508
511
  }
509
512
  }
510
513
  exports.UpdateQueryBuilder = UpdateQueryBuilder;
511
- (0, prevent_await_js_1.preventAwait)(UpdateQueryBuilder, "don't await UpdateQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
@@ -1,6 +1,8 @@
1
+ import { QueryId } from '../util/query-id.js';
1
2
  import { RootOperationNode } from './query-compiler.js';
2
3
  export interface CompiledQuery<O = unknown> {
3
4
  readonly query: RootOperationNode;
5
+ readonly queryId: QueryId;
4
6
  readonly sql: string;
5
7
  readonly parameters: ReadonlyArray<unknown>;
6
8
  }
@@ -3,12 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CompiledQuery = void 0;
4
4
  const raw_node_js_1 = require("../operation-node/raw-node.js");
5
5
  const object_utils_js_1 = require("../util/object-utils.js");
6
+ const query_id_js_1 = require("../util/query-id.js");
6
7
  exports.CompiledQuery = (0, object_utils_js_1.freeze)({
7
8
  raw(sql, parameters = []) {
8
9
  return (0, object_utils_js_1.freeze)({
9
10
  sql,
10
11
  query: raw_node_js_1.RawNode.createWithSql(sql),
11
12
  parameters: (0, object_utils_js_1.freeze)(parameters),
13
+ queryId: (0, query_id_js_1.createQueryId)(),
12
14
  });
13
15
  },
14
16
  });
@@ -35,7 +35,7 @@ import { SelectAllNode } from '../operation-node/select-all-node.js';
35
35
  import { SelectQueryNode } from '../operation-node/select-query-node.js';
36
36
  import { SelectionNode } from '../operation-node/selection-node.js';
37
37
  import { TableNode } from '../operation-node/table-node.js';
38
- import { PrimaryKeyConstraintNode } from '../operation-node/primary-constraint-node.js';
38
+ import { PrimaryKeyConstraintNode } from '../operation-node/primary-key-constraint-node.js';
39
39
  import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';
40
40
  import { UpdateQueryNode } from '../operation-node/update-query-node.js';
41
41
  import { ValueListNode } from '../operation-node/value-list-node.js';
@@ -95,10 +95,15 @@ import { CastNode } from '../operation-node/cast-node.js';
95
95
  import { FetchNode } from '../operation-node/fetch-node.js';
96
96
  import { TopNode } from '../operation-node/top-node.js';
97
97
  import { OutputNode } from '../operation-node/output-node.js';
98
+ import { RefreshMaterializedViewNode } from '../operation-node/refresh-materialized-view-node.js';
99
+ import { OrActionNode } from '../operation-node/or-action-node.js';
100
+ import { CollateNode } from '../operation-node/collate-node.js';
101
+ import { QueryId } from '../util/query-id.js';
102
+ import { RenameConstraintNode } from '../operation-node/rename-constraint-node.js';
98
103
  export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
99
104
  #private;
100
105
  protected get numParameters(): number;
101
- compileQuery(node: RootOperationNode): CompiledQuery;
106
+ compileQuery(node: RootOperationNode, queryId: QueryId): CompiledQuery;
102
107
  protected getSql(): string;
103
108
  protected visitSelectQuery(node: SelectQueryNode): void;
104
109
  protected visitFrom(node: FromNode): void;
@@ -151,6 +156,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
151
156
  protected visitCreateSchema(node: CreateSchemaNode): void;
152
157
  protected visitDropSchema(node: DropSchemaNode): void;
153
158
  protected visitPrimaryKeyConstraint(node: PrimaryKeyConstraintNode): void;
159
+ protected buildDeferrable(node: {
160
+ deferrable?: boolean;
161
+ initiallyDeferred?: boolean;
162
+ }): void;
154
163
  protected visitUniqueConstraint(node: UniqueConstraintNode): void;
155
164
  protected visitCheckConstraint(node: CheckConstraintNode): void;
156
165
  protected visitForeignKeyConstraint(node: ForeignKeyConstraintNode): void;
@@ -166,8 +175,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
166
175
  protected visitModifyColumn(node: ModifyColumnNode): void;
167
176
  protected visitAddConstraint(node: AddConstraintNode): void;
168
177
  protected visitDropConstraint(node: DropConstraintNode): void;
178
+ protected visitRenameConstraint(node: RenameConstraintNode): void;
169
179
  protected visitSetOperation(node: SetOperationNode): void;
170
180
  protected visitCreateView(node: CreateViewNode): void;
181
+ protected visitRefreshMaterializedView(node: RefreshMaterializedViewNode): void;
171
182
  protected visitDropView(node: DropViewNode): void;
172
183
  protected visitGenerated(node: GeneratedNode): void;
173
184
  protected visitDefaultValue(node: DefaultValueNode): void;
@@ -198,6 +209,8 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
198
209
  protected visitFetch(node: FetchNode): void;
199
210
  protected visitOutput(node: OutputNode): void;
200
211
  protected visitTop(node: TopNode): void;
212
+ protected visitOrAction(node: OrActionNode): void;
213
+ protected visitCollate(node: CollateNode): void;
201
214
  protected append(str: string): void;
202
215
  protected appendValue(parameter: unknown): void;
203
216
  protected getLeftIdentifierWrapper(): string;
@@ -208,8 +221,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
208
221
  protected getExplainOptionsDelimiter(): string;
209
222
  protected getRightExplainOptionsWrapper(): string;
210
223
  protected sanitizeIdentifier(identifier: string): string;
224
+ protected sanitizeStringLiteral(value: string): string;
211
225
  protected addParameter(parameter: unknown): void;
212
226
  protected appendImmediateValue(value: unknown): void;
227
+ protected appendStringLiteral(value: string): void;
213
228
  protected sortSelectModifiers(arr: SelectModifierNode[]): ReadonlyArray<SelectModifierNode>;
214
229
  protected compileColumnAlterations(columnAlterations: readonly AlterTableColumnAlterationNode[]): void;
215
230
  /**
@@ -11,19 +11,22 @@ const object_utils_js_1 = require("../util/object-utils.js");
11
11
  const create_view_node_js_1 = require("../operation-node/create-view-node.js");
12
12
  const set_operation_node_js_1 = require("../operation-node/set-operation-node.js");
13
13
  const merge_query_node_js_1 = require("../operation-node/merge-query-node.js");
14
+ const log_once_js_1 = require("../util/log-once.js");
15
+ const LIT_WRAP_REGEX = /'/g;
14
16
  class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisitor {
15
17
  #sql = '';
16
18
  #parameters = [];
17
19
  get numParameters() {
18
20
  return this.#parameters.length;
19
21
  }
20
- compileQuery(node) {
22
+ compileQuery(node, queryId) {
21
23
  this.#sql = '';
22
24
  this.#parameters = [];
23
25
  this.nodeStack.splice(0, this.nodeStack.length);
24
26
  this.visitNode(node);
25
27
  return (0, object_utils_js_1.freeze)({
26
28
  query: node,
29
+ queryId,
27
30
  sql: this.getSql(),
28
31
  parameters: [...this.#parameters],
29
32
  });
@@ -161,9 +164,15 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
161
164
  this.append(' ');
162
165
  }
163
166
  this.append(node.replace ? 'replace' : 'insert');
167
+ // TODO: remove in 0.29.
164
168
  if (node.ignore) {
169
+ (0, log_once_js_1.logOnce)('`InsertQueryNode.ignore` is deprecated. Use `InsertQueryNode.orAction` instead.');
165
170
  this.append(' ignore');
166
171
  }
172
+ if (node.orAction) {
173
+ this.append(' ');
174
+ this.visitNode(node.orAction);
175
+ }
167
176
  if (node.top) {
168
177
  this.append(' ');
169
178
  this.visitNode(node.top);
@@ -500,10 +509,18 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
500
509
  }
501
510
  visitOrderByItem(node) {
502
511
  this.visitNode(node.orderBy);
512
+ if (node.collation) {
513
+ this.append(' ');
514
+ this.visitNode(node.collation);
515
+ }
503
516
  if (node.direction) {
504
517
  this.append(' ');
505
518
  this.visitNode(node.direction);
506
519
  }
520
+ if (node.nulls) {
521
+ this.append(' nulls ');
522
+ this.append(node.nulls);
523
+ }
507
524
  }
508
525
  visitGroupBy(node) {
509
526
  this.append('group by ');
@@ -548,6 +565,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
548
565
  this.visitNode(node.from);
549
566
  }
550
567
  if (node.joins) {
568
+ if (!node.from) {
569
+ throw new Error("Joins in an update query are only supported as a part of a PostgreSQL 'update set from join' query. If you want to create a MySQL 'update join set' query, see https://kysely.dev/docs/examples/update/my-sql-joins");
570
+ }
551
571
  this.append(' ');
552
572
  this.compileList(node.joins, ' ');
553
573
  }
@@ -555,6 +575,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
555
575
  this.append(' ');
556
576
  this.visitNode(node.where);
557
577
  }
578
+ if (node.orderBy) {
579
+ this.append(' ');
580
+ this.visitNode(node.orderBy);
581
+ }
558
582
  if (node.limit) {
559
583
  this.append(' ');
560
584
  this.visitNode(node.limit);
@@ -691,6 +715,25 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
691
715
  this.append('primary key (');
692
716
  this.compileList(node.columns);
693
717
  this.append(')');
718
+ this.buildDeferrable(node);
719
+ }
720
+ buildDeferrable(node) {
721
+ if (node.deferrable !== undefined) {
722
+ if (node.deferrable) {
723
+ this.append(' deferrable');
724
+ }
725
+ else {
726
+ this.append(' not deferrable');
727
+ }
728
+ }
729
+ if (node.initiallyDeferred !== undefined) {
730
+ if (node.initiallyDeferred) {
731
+ this.append(' initially deferred');
732
+ }
733
+ else {
734
+ this.append(' initially immediate');
735
+ }
736
+ }
694
737
  }
695
738
  visitUniqueConstraint(node) {
696
739
  if (node.name) {
@@ -705,6 +748,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
705
748
  this.append(' (');
706
749
  this.compileList(node.columns);
707
750
  this.append(')');
751
+ this.buildDeferrable(node);
708
752
  }
709
753
  visitCheckConstraint(node) {
710
754
  if (node.name) {
@@ -734,6 +778,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
734
778
  this.append(' on update ');
735
779
  this.append(node.onUpdate);
736
780
  }
781
+ this.buildDeferrable(node);
737
782
  }
738
783
  visitList(node) {
739
784
  this.compileList(node.items);
@@ -782,6 +827,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
782
827
  if (node.dropConstraint) {
783
828
  this.visitNode(node.dropConstraint);
784
829
  }
830
+ if (node.renameConstraint) {
831
+ this.visitNode(node.renameConstraint);
832
+ }
785
833
  if (node.columnAlterations) {
786
834
  this.compileColumnAlterations(node.columnAlterations);
787
835
  }
@@ -855,6 +903,12 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
855
903
  this.append(' restrict');
856
904
  }
857
905
  }
906
+ visitRenameConstraint(node) {
907
+ this.append('rename constraint ');
908
+ this.visitNode(node.oldName);
909
+ this.append(' to ');
910
+ this.visitNode(node.newName);
911
+ }
858
912
  visitSetOperation(node) {
859
913
  this.append(node.operator);
860
914
  this.append(' ');
@@ -890,6 +944,19 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
890
944
  this.visitNode(node.as);
891
945
  }
892
946
  }
947
+ visitRefreshMaterializedView(node) {
948
+ this.append('refresh materialized view ');
949
+ if (node.concurrently) {
950
+ this.append('concurrently ');
951
+ }
952
+ this.visitNode(node.name);
953
+ if (node.withNoData) {
954
+ this.append(' with no data');
955
+ }
956
+ else {
957
+ this.append(' with data');
958
+ }
959
+ }
893
960
  visitDropView(node) {
894
961
  this.append('drop ');
895
962
  if (node.materialized) {
@@ -990,6 +1057,11 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
990
1057
  this.visitNode(node.orderBy);
991
1058
  }
992
1059
  this.append(')');
1060
+ if (node.withinGroup) {
1061
+ this.append(' within group (');
1062
+ this.visitNode(node.withinGroup);
1063
+ this.append(')');
1064
+ }
993
1065
  if (node.filter) {
994
1066
  this.append(' filter(');
995
1067
  this.visitNode(node.filter);
@@ -1127,6 +1199,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
1127
1199
  this.append(' ');
1128
1200
  this.compileList(node.whens, ' ');
1129
1201
  }
1202
+ if (node.returning) {
1203
+ this.append(' ');
1204
+ this.visitNode(node.returning);
1205
+ }
1130
1206
  if (node.output) {
1131
1207
  this.append(' ');
1132
1208
  this.visitNode(node.output);
@@ -1184,6 +1260,13 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
1184
1260
  this.append(` ${node.modifiers}`);
1185
1261
  }
1186
1262
  }
1263
+ visitOrAction(node) {
1264
+ this.append(node.action);
1265
+ }
1266
+ visitCollate(node) {
1267
+ this.append('collate ');
1268
+ this.visitNode(node.collation);
1269
+ }
1187
1270
  append(str) {
1188
1271
  this.#sql += str;
1189
1272
  }
@@ -1227,12 +1310,15 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
1227
1310
  }
1228
1311
  return sanitized;
1229
1312
  }
1313
+ sanitizeStringLiteral(value) {
1314
+ return value.replace(LIT_WRAP_REGEX, "''");
1315
+ }
1230
1316
  addParameter(parameter) {
1231
1317
  this.#parameters.push(parameter);
1232
1318
  }
1233
1319
  appendImmediateValue(value) {
1234
1320
  if ((0, object_utils_js_1.isString)(value)) {
1235
- this.append(`'${value}'`);
1321
+ this.appendStringLiteral(value);
1236
1322
  }
1237
1323
  else if ((0, object_utils_js_1.isNumber)(value) || (0, object_utils_js_1.isBoolean)(value)) {
1238
1324
  this.append(value.toString());
@@ -1250,6 +1336,11 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
1250
1336
  throw new Error(`invalid immediate value ${value}`);
1251
1337
  }
1252
1338
  }
1339
+ appendStringLiteral(value) {
1340
+ this.append("'");
1341
+ this.append(this.sanitizeStringLiteral(value));
1342
+ this.append("'");
1343
+ }
1253
1344
  sortSelectModifiers(arr) {
1254
1345
  arr.sort((left, right) => left.modifier && right.modifier
1255
1346
  ? SELECT_MODIFIER_PRIORITY[left.modifier] -
@@ -1292,7 +1383,11 @@ const JOIN_TYPE_SQL = (0, object_utils_js_1.freeze)({
1292
1383
  LeftJoin: 'left join',
1293
1384
  RightJoin: 'right join',
1294
1385
  FullJoin: 'full join',
1386
+ CrossJoin: 'cross join',
1295
1387
  LateralInnerJoin: 'inner join lateral',
1296
1388
  LateralLeftJoin: 'left join lateral',
1389
+ LateralCrossJoin: 'cross join lateral',
1390
+ OuterApply: 'outer apply',
1391
+ CrossApply: 'cross apply',
1297
1392
  Using: 'using',
1298
1393
  });
@@ -12,11 +12,13 @@ import { DropViewNode } from '../operation-node/drop-view-node.js';
12
12
  import { MergeQueryNode } from '../operation-node/merge-query-node.js';
13
13
  import { QueryNode } from '../operation-node/query-node.js';
14
14
  import { RawNode } from '../operation-node/raw-node.js';
15
+ import { RefreshMaterializedViewNode } from '../operation-node/refresh-materialized-view-node.js';
16
+ import { QueryId } from '../util/query-id.js';
15
17
  import { CompiledQuery } from './compiled-query.js';
16
- export type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | CreateSchemaNode | CreateViewNode | DropTableNode | DropIndexNode | DropSchemaNode | DropViewNode | AlterTableNode | RawNode | CreateTypeNode | DropTypeNode | MergeQueryNode;
18
+ export type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | CreateSchemaNode | CreateViewNode | RefreshMaterializedViewNode | DropTableNode | DropIndexNode | DropSchemaNode | DropViewNode | AlterTableNode | RawNode | CreateTypeNode | DropTypeNode | MergeQueryNode;
17
19
  /**
18
20
  * a `QueryCompiler` compiles a query expressed as a tree of `OperationNodes` into SQL.
19
21
  */
20
22
  export interface QueryCompiler {
21
- compileQuery(node: RootOperationNode): CompiledQuery;
23
+ compileQuery(node: RootOperationNode, queryId: QueryId): CompiledQuery;
22
24
  }