kysely 0.26.2 → 0.27.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 (215) hide show
  1. package/dist/cjs/dialect/dialect-adapter-base.d.ts +8 -0
  2. package/dist/cjs/dialect/dialect-adapter-base.js +3 -0
  3. package/dist/cjs/dialect/dialect-adapter.d.ts +8 -0
  4. package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +78 -0
  5. package/dist/cjs/dialect/mssql/mssql-adapter.js +30 -0
  6. package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +143 -0
  7. package/dist/cjs/dialect/mssql/mssql-dialect-config.js +2 -0
  8. package/dist/cjs/dialect/mssql/mssql-dialect.d.ts +70 -0
  9. package/dist/cjs/dialect/mssql/mssql-dialect.js +65 -0
  10. package/dist/cjs/dialect/mssql/mssql-driver.d.ts +54 -0
  11. package/dist/cjs/dialect/mssql/mssql-driver.js +268 -0
  12. package/dist/cjs/dialect/mssql/mssql-introspector.d.ts +20 -0
  13. package/dist/cjs/dialect/mssql/mssql-introspector.js +97 -0
  14. package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +11 -0
  15. package/dist/cjs/dialect/mssql/mssql-query-compiler.js +64 -0
  16. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +2 -0
  17. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +28 -0
  18. package/dist/cjs/dialect/postgres/postgres-driver.js +1 -1
  19. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +1 -1
  20. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +2 -1
  21. package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
  22. package/dist/cjs/dialect/sqlite/sqlite-driver.js +15 -2
  23. package/dist/cjs/driver/driver.d.ts +1 -1
  24. package/dist/cjs/driver/driver.js +1 -0
  25. package/dist/cjs/driver/runtime-driver.js +5 -1
  26. package/dist/cjs/driver/single-connection-provider.js +7 -8
  27. package/dist/cjs/expression/expression-builder.d.ts +66 -73
  28. package/dist/cjs/expression/expression-builder.js +8 -17
  29. package/dist/cjs/expression/expression-wrapper.d.ts +8 -8
  30. package/dist/cjs/helpers/mssql.d.ts +152 -0
  31. package/dist/cjs/helpers/mssql.js +160 -0
  32. package/dist/cjs/helpers/mysql.d.ts +3 -3
  33. package/dist/cjs/helpers/sqlite.d.ts +3 -3
  34. package/dist/cjs/index.d.ts +8 -2
  35. package/dist/cjs/index.js +6 -0
  36. package/dist/cjs/migration/migrator.js +12 -16
  37. package/dist/cjs/operation-node/add-index-node.d.ts +21 -0
  38. package/dist/cjs/operation-node/add-index-node.js +31 -0
  39. package/dist/cjs/operation-node/alter-table-node.d.ts +5 -1
  40. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
  41. package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
  42. package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
  43. package/dist/cjs/operation-node/create-table-node.d.ts +1 -0
  44. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  45. package/dist/cjs/operation-node/operation-node-transformer.js +17 -0
  46. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  47. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  48. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  49. package/dist/cjs/operation-node/operator-node.d.ts +3 -3
  50. package/dist/cjs/operation-node/operator-node.js +2 -0
  51. package/dist/cjs/operation-node/unique-constraint-node.d.ts +4 -1
  52. package/dist/cjs/operation-node/unique-constraint-node.js +8 -1
  53. package/dist/cjs/parser/binary-operation-parser.js +1 -1
  54. package/dist/cjs/parser/coalesce-parser.d.ts +12 -2
  55. package/dist/cjs/parser/expression-parser.d.ts +2 -2
  56. package/dist/cjs/parser/reference-parser.d.ts +3 -2
  57. package/dist/cjs/parser/returning-parser.d.ts +2 -1
  58. package/dist/cjs/parser/select-parser.d.ts +20 -9
  59. package/dist/cjs/parser/update-set-parser.d.ts +5 -2
  60. package/dist/cjs/parser/update-set-parser.js +13 -3
  61. package/dist/cjs/parser/value-parser.d.ts +2 -2
  62. package/dist/cjs/query-builder/aggregate-function-builder.d.ts +4 -4
  63. package/dist/cjs/query-builder/case-builder.d.ts +5 -4
  64. package/dist/cjs/query-builder/delete-query-builder.d.ts +8 -6
  65. package/dist/cjs/query-builder/function-module.d.ts +98 -27
  66. package/dist/cjs/query-builder/function-module.js +17 -3
  67. package/dist/cjs/query-builder/having-interface.d.ts +3 -5
  68. package/dist/cjs/query-builder/insert-query-builder.d.ts +32 -12
  69. package/dist/cjs/query-builder/insert-query-builder.js +3 -3
  70. package/dist/cjs/query-builder/insert-result.d.ts +8 -1
  71. package/dist/cjs/query-builder/insert-result.js +8 -1
  72. package/dist/cjs/query-builder/json-path-builder.d.ts +3 -2
  73. package/dist/cjs/query-builder/json-path-builder.js +6 -3
  74. package/dist/cjs/query-builder/on-conflict-builder.d.ts +58 -16
  75. package/dist/cjs/query-builder/on-conflict-builder.js +1 -6
  76. package/dist/cjs/query-builder/over-builder.d.ts +2 -2
  77. package/dist/cjs/query-builder/returning-interface.d.ts +3 -2
  78. package/dist/cjs/query-builder/select-query-builder-expression.d.ts +20 -0
  79. package/dist/cjs/query-builder/select-query-builder-expression.js +2 -0
  80. package/dist/cjs/query-builder/select-query-builder.d.ts +48 -29
  81. package/dist/cjs/query-builder/select-query-builder.js +5 -2
  82. package/dist/cjs/query-builder/update-query-builder.d.ts +25 -7
  83. package/dist/cjs/query-builder/update-query-builder.js +2 -2
  84. package/dist/cjs/query-builder/where-interface.d.ts +3 -3
  85. package/dist/cjs/query-compiler/default-query-compiler.d.ts +9 -1
  86. package/dist/cjs/query-compiler/default-query-compiler.js +65 -12
  87. package/dist/cjs/query-creator.d.ts +5 -3
  88. package/dist/cjs/query-creator.js +0 -47
  89. package/dist/cjs/raw-builder/raw-builder.d.ts +0 -3
  90. package/dist/cjs/schema/alter-table-add-index-builder.d.ts +104 -0
  91. package/dist/cjs/schema/alter-table-add-index-builder.js +146 -0
  92. package/dist/cjs/schema/alter-table-builder.d.ts +41 -1
  93. package/dist/cjs/schema/alter-table-builder.js +59 -2
  94. package/dist/cjs/schema/column-definition-builder.d.ts +25 -0
  95. package/dist/cjs/schema/column-definition-builder.js +27 -0
  96. package/dist/cjs/schema/create-index-builder.d.ts +23 -0
  97. package/dist/cjs/schema/create-index-builder.js +30 -0
  98. package/dist/cjs/schema/create-table-builder.d.ts +28 -2
  99. package/dist/cjs/schema/create-table-builder.js +38 -3
  100. package/dist/cjs/schema/create-view-builder.d.ts +2 -2
  101. package/dist/cjs/schema/unique-constraint-builder.d.ts +14 -0
  102. package/dist/cjs/schema/unique-constraint-builder.js +24 -0
  103. package/dist/cjs/util/infer-result.d.ts +2 -1
  104. package/dist/cjs/util/log.js +5 -1
  105. package/dist/cjs/util/object-utils.d.ts +1 -1
  106. package/dist/cjs/util/type-utils.d.ts +27 -20
  107. package/dist/esm/dialect/dialect-adapter-base.d.ts +8 -0
  108. package/dist/esm/dialect/dialect-adapter-base.js +3 -0
  109. package/dist/esm/dialect/dialect-adapter.d.ts +8 -0
  110. package/dist/esm/dialect/mssql/mssql-adapter.d.ts +78 -0
  111. package/dist/esm/dialect/mssql/mssql-adapter.js +27 -0
  112. package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +143 -0
  113. package/dist/esm/dialect/mssql/mssql-dialect-config.js +2 -0
  114. package/dist/esm/dialect/mssql/mssql-dialect.d.ts +70 -0
  115. package/dist/esm/dialect/mssql/mssql-dialect.js +62 -0
  116. package/dist/esm/dialect/mssql/mssql-driver.d.ts +54 -0
  117. package/dist/esm/dialect/mssql/mssql-driver.js +265 -0
  118. package/dist/esm/dialect/mssql/mssql-introspector.d.ts +20 -0
  119. package/dist/esm/dialect/mssql/mssql-introspector.js +94 -0
  120. package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +11 -0
  121. package/dist/esm/dialect/mssql/mssql-query-compiler.js +61 -0
  122. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +2 -0
  123. package/dist/esm/dialect/mysql/mysql-query-compiler.js +28 -0
  124. package/dist/esm/dialect/postgres/postgres-driver.js +1 -1
  125. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +1 -1
  126. package/dist/esm/dialect/sqlite/sqlite-adapter.js +2 -1
  127. package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
  128. package/dist/esm/dialect/sqlite/sqlite-driver.js +15 -2
  129. package/dist/esm/driver/driver.d.ts +1 -1
  130. package/dist/esm/driver/driver.js +1 -0
  131. package/dist/esm/driver/runtime-driver.js +5 -1
  132. package/dist/esm/driver/single-connection-provider.js +7 -8
  133. package/dist/esm/expression/expression-builder.d.ts +66 -73
  134. package/dist/esm/expression/expression-builder.js +10 -19
  135. package/dist/esm/expression/expression-wrapper.d.ts +8 -8
  136. package/dist/esm/helpers/mssql.d.ts +152 -0
  137. package/dist/esm/helpers/mssql.js +155 -0
  138. package/dist/esm/helpers/mysql.d.ts +3 -3
  139. package/dist/esm/helpers/sqlite.d.ts +3 -3
  140. package/dist/esm/index.d.ts +8 -2
  141. package/dist/esm/index.js +6 -0
  142. package/dist/esm/migration/migrator.js +12 -16
  143. package/dist/esm/operation-node/add-index-node.d.ts +21 -0
  144. package/dist/esm/operation-node/add-index-node.js +29 -0
  145. package/dist/esm/operation-node/alter-table-node.d.ts +5 -1
  146. package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
  147. package/dist/esm/operation-node/column-update-node.d.ts +2 -3
  148. package/dist/esm/operation-node/create-index-node.d.ts +1 -0
  149. package/dist/esm/operation-node/create-table-node.d.ts +1 -0
  150. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  151. package/dist/esm/operation-node/operation-node-transformer.js +17 -0
  152. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  153. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  154. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  155. package/dist/esm/operation-node/operator-node.d.ts +3 -3
  156. package/dist/esm/operation-node/operator-node.js +2 -0
  157. package/dist/esm/operation-node/unique-constraint-node.d.ts +4 -1
  158. package/dist/esm/operation-node/unique-constraint-node.js +8 -1
  159. package/dist/esm/parser/binary-operation-parser.js +1 -1
  160. package/dist/esm/parser/coalesce-parser.d.ts +12 -2
  161. package/dist/esm/parser/expression-parser.d.ts +2 -2
  162. package/dist/esm/parser/reference-parser.d.ts +3 -2
  163. package/dist/esm/parser/returning-parser.d.ts +2 -1
  164. package/dist/esm/parser/select-parser.d.ts +20 -9
  165. package/dist/esm/parser/update-set-parser.d.ts +5 -2
  166. package/dist/esm/parser/update-set-parser.js +10 -1
  167. package/dist/esm/parser/value-parser.d.ts +2 -2
  168. package/dist/esm/query-builder/aggregate-function-builder.d.ts +4 -4
  169. package/dist/esm/query-builder/case-builder.d.ts +5 -4
  170. package/dist/esm/query-builder/delete-query-builder.d.ts +8 -6
  171. package/dist/esm/query-builder/function-module.d.ts +98 -27
  172. package/dist/esm/query-builder/function-module.js +17 -3
  173. package/dist/esm/query-builder/having-interface.d.ts +3 -5
  174. package/dist/esm/query-builder/insert-query-builder.d.ts +32 -12
  175. package/dist/esm/query-builder/insert-query-builder.js +4 -4
  176. package/dist/esm/query-builder/insert-result.d.ts +8 -1
  177. package/dist/esm/query-builder/insert-result.js +8 -1
  178. package/dist/esm/query-builder/json-path-builder.d.ts +3 -2
  179. package/dist/esm/query-builder/json-path-builder.js +6 -3
  180. package/dist/esm/query-builder/on-conflict-builder.d.ts +58 -16
  181. package/dist/esm/query-builder/on-conflict-builder.js +2 -7
  182. package/dist/esm/query-builder/over-builder.d.ts +2 -2
  183. package/dist/esm/query-builder/returning-interface.d.ts +3 -2
  184. package/dist/esm/query-builder/select-query-builder-expression.d.ts +20 -0
  185. package/dist/esm/query-builder/select-query-builder-expression.js +2 -0
  186. package/dist/esm/query-builder/select-query-builder.d.ts +48 -29
  187. package/dist/esm/query-builder/select-query-builder.js +5 -2
  188. package/dist/esm/query-builder/update-query-builder.d.ts +25 -7
  189. package/dist/esm/query-builder/update-query-builder.js +3 -3
  190. package/dist/esm/query-builder/where-interface.d.ts +3 -3
  191. package/dist/esm/query-compiler/default-query-compiler.d.ts +9 -1
  192. package/dist/esm/query-compiler/default-query-compiler.js +65 -12
  193. package/dist/esm/query-creator.d.ts +5 -3
  194. package/dist/esm/query-creator.js +0 -47
  195. package/dist/esm/raw-builder/raw-builder.d.ts +0 -3
  196. package/dist/esm/schema/alter-table-add-index-builder.d.ts +104 -0
  197. package/dist/esm/schema/alter-table-add-index-builder.js +143 -0
  198. package/dist/esm/schema/alter-table-builder.d.ts +41 -1
  199. package/dist/esm/schema/alter-table-builder.js +59 -2
  200. package/dist/esm/schema/column-definition-builder.d.ts +25 -0
  201. package/dist/esm/schema/column-definition-builder.js +27 -0
  202. package/dist/esm/schema/create-index-builder.d.ts +23 -0
  203. package/dist/esm/schema/create-index-builder.js +30 -0
  204. package/dist/esm/schema/create-table-builder.d.ts +28 -2
  205. package/dist/esm/schema/create-table-builder.js +38 -3
  206. package/dist/esm/schema/create-view-builder.d.ts +2 -2
  207. package/dist/esm/schema/unique-constraint-builder.d.ts +14 -0
  208. package/dist/esm/schema/unique-constraint-builder.js +21 -0
  209. package/dist/esm/util/infer-result.d.ts +2 -1
  210. package/dist/esm/util/log.js +5 -1
  211. package/dist/esm/util/object-utils.d.ts +1 -1
  212. package/dist/esm/util/type-utils.d.ts +27 -20
  213. package/helpers/mssql.d.ts +1 -0
  214. package/helpers/mssql.js +1 -0
  215. package/package.json +17 -6
@@ -1,10 +1,11 @@
1
1
  import { AliasableExpression, AliasedExpression, Expression } from '../expression/expression.js';
2
2
  import { AliasNode } from '../operation-node/alias-node.js';
3
+ import { JSONPathNode } from '../operation-node/json-path-node.js';
3
4
  import { JSONReferenceNode } from '../operation-node/json-reference-node.js';
4
5
  import { OperationNode } from '../operation-node/operation-node.js';
5
6
  export declare class JSONPathBuilder<S, O = S> {
6
7
  #private;
7
- constructor(node: JSONReferenceNode);
8
+ constructor(node: JSONReferenceNode | JSONPathNode);
8
9
  /**
9
10
  * Access an element of a JSON array in a specific location.
10
11
  *
@@ -123,7 +124,7 @@ export declare class JSONPathBuilder<S, O = S> {
123
124
  }
124
125
  export declare class TraversedJSONPathBuilder<S, O> extends JSONPathBuilder<S, O> implements AliasableExpression<O> {
125
126
  #private;
126
- constructor(node: JSONReferenceNode);
127
+ constructor(node: JSONReferenceNode | JSONPathNode);
127
128
  /** @private */
128
129
  /**
129
130
  * All expressions need to have this getter for complicated type-related reasons.
@@ -134,9 +134,12 @@ class JSONPathBuilder {
134
134
  return this.#createBuilderWithPathLeg('Member', key);
135
135
  }
136
136
  #createBuilderWithPathLeg(legType, value) {
137
- return new TraversedJSONPathBuilder(json_reference_node_js_1.JSONReferenceNode.cloneWithTraversal(this.#node, json_path_node_js_1.JSONPathNode.is(this.#node.traversal)
138
- ? json_path_node_js_1.JSONPathNode.cloneWithLeg(this.#node.traversal, json_path_leg_node_js_1.JSONPathLegNode.create(legType, value))
139
- : json_operator_chain_node_js_1.JSONOperatorChainNode.cloneWithValue(this.#node.traversal, value_node_js_1.ValueNode.createImmediate(value))));
137
+ if (json_reference_node_js_1.JSONReferenceNode.is(this.#node)) {
138
+ return new TraversedJSONPathBuilder(json_reference_node_js_1.JSONReferenceNode.cloneWithTraversal(this.#node, json_path_node_js_1.JSONPathNode.is(this.#node.traversal)
139
+ ? json_path_node_js_1.JSONPathNode.cloneWithLeg(this.#node.traversal, json_path_leg_node_js_1.JSONPathLegNode.create(legType, value))
140
+ : json_operator_chain_node_js_1.JSONOperatorChainNode.cloneWithValue(this.#node.traversal, value_node_js_1.ValueNode.createImmediate(value))));
141
+ }
142
+ return new TraversedJSONPathBuilder(json_path_node_js_1.JSONPathNode.cloneWithLeg(this.#node, json_path_leg_node_js_1.JSONPathLegNode.create(legType, value)));
140
143
  }
141
144
  }
142
145
  exports.JSONPathBuilder = JSONPathBuilder;
@@ -4,7 +4,8 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
4
4
  import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
5
5
  import { ExpressionOrFactory } from '../parser/expression-parser.js';
6
6
  import { ReferenceExpression } from '../parser/reference-parser.js';
7
- import { UpdateExpression } from '../parser/update-set-parser.js';
7
+ import { UpdateObjectExpression } from '../parser/update-set-parser.js';
8
+ import { Updateable } from '../util/column-type.js';
8
9
  import { AnyColumn, SqlBool } from '../util/type-utils.js';
9
10
  import { WhereInterface } from './where-interface.js';
10
11
  export declare class OnConflictBuilder<DB, TB extends keyof DB> implements WhereInterface<DB, TB> {
@@ -40,12 +41,6 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
40
41
  * methods for alternative ways to specify the conflict target.
41
42
  */
42
43
  expression(expression: Expression<any>): OnConflictBuilder<DB, TB>;
43
- /**
44
- * Specify an index predicate for the index target.
45
- *
46
- * See {@link WhereInterface.where} for more info.
47
- */
48
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): OnConflictBuilder<DB, TB>;
49
44
  /**
50
45
  * Adds a `where` expression to the query.
51
46
  *
@@ -345,13 +340,60 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
345
340
  * .execute()
346
341
  * ```
347
342
  */
348
- where(expression: ExpressionOrFactory<DB, TB, SqlBool>): OnConflictBuilder<DB, TB>;
343
+ where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): OnConflictBuilder<DB, TB>;
344
+ where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): OnConflictBuilder<DB, TB>;
349
345
  /**
350
- * Specify an index predicate for the index target.
346
+ * Adds a `where` clause where both sides of the operator are references
347
+ * to columns.
351
348
  *
352
- * See {@link WhereInterface.whereRef} for more info.
349
+ * The normal `where` method treats the right hand side argument as a
350
+ * value by default. `whereRef` treats it as a column reference. This method is
351
+ * expecially useful with joins and correlated subqueries.
352
+ *
353
+ * ### Examples
354
+ *
355
+ * Usage with a join:
356
+ *
357
+ * ```ts
358
+ * db.selectFrom(['person', 'pet'])
359
+ * .selectAll()
360
+ * .whereRef('person.first_name', '=', 'pet.name')
361
+ * ```
362
+ *
363
+ * The generated SQL (PostgreSQL):
364
+ *
365
+ * ```sql
366
+ * select * from "person", "pet" where "person"."first_name" = "pet"."name"
367
+ * ```
368
+ *
369
+ * Usage in a subquery:
370
+ *
371
+ * ```ts
372
+ * const persons = await db
373
+ * .selectFrom('person')
374
+ * .selectAll('person')
375
+ * .select((eb) => eb
376
+ * .selectFrom('pet')
377
+ * .select('name')
378
+ * .whereRef('pet.owner_id', '=', 'person.id')
379
+ * .limit(1)
380
+ * .as('pet_name')
381
+ * )
382
+ * .execute()
383
+ * ```
384
+ *
385
+ * The generated SQL (PostgreSQL):
386
+ *
387
+ * ```sql
388
+ * select "person".*, (
389
+ * select "name"
390
+ * from "pet"
391
+ * where "pet"."owner_id" = "person"."id"
392
+ * limit $1
393
+ * ) as "pet_name"
394
+ * from "person"
353
395
  */
354
- whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): OnConflictBuilder<DB, TB>;
396
+ whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): OnConflictBuilder<DB, TB>;
355
397
  /**
356
398
  * Clears all where expressions from the query.
357
399
  *
@@ -435,7 +477,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
435
477
  * )
436
478
  * ```
437
479
  */
438
- doUpdateSet(update: UpdateExpression<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
480
+ doUpdateSet(update: UpdateObjectExpression<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
439
481
  /**
440
482
  * Simply calls the provided function passing `this` as the only argument. `$call` returns
441
483
  * what the provided function returns.
@@ -446,7 +488,7 @@ export interface OnConflictBuilderProps {
446
488
  readonly onConflictNode: OnConflictNode;
447
489
  }
448
490
  export type OnConflictDatabase<DB, TB extends keyof DB> = {
449
- [K in keyof DB | 'excluded']: K extends keyof DB ? DB[K] : DB[TB];
491
+ [K in keyof DB | 'excluded']: Updateable<K extends keyof DB ? DB[K] : DB[TB]>;
450
492
  };
451
493
  export type OnConflictTables<TB> = TB | 'excluded';
452
494
  export declare class OnConflictDoNothingBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
@@ -462,7 +504,7 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
462
504
  *
463
505
  * See {@link WhereInterface.where} for more info.
464
506
  */
465
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): OnConflictUpdateBuilder<DB, TB>;
507
+ where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): OnConflictUpdateBuilder<DB, TB>;
466
508
  /**
467
509
  * Adds a `where` expression to the query.
468
510
  *
@@ -762,13 +804,13 @@ export declare class OnConflictUpdateBuilder<DB, TB extends keyof DB> implements
762
804
  * .execute()
763
805
  * ```
764
806
  */
765
- where(expression: ExpressionOrFactory<DB, TB, SqlBool>): OnConflictUpdateBuilder<DB, TB>;
807
+ where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): OnConflictUpdateBuilder<DB, TB>;
766
808
  /**
767
809
  * Specify a where condition for the update operation.
768
810
  *
769
811
  * See {@link WhereInterface.whereRef} for more info.
770
812
  */
771
- whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): OnConflictUpdateBuilder<DB, TB>;
813
+ whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): OnConflictUpdateBuilder<DB, TB>;
772
814
  /**
773
815
  * Clears all where expressions from the query.
774
816
  *
@@ -83,11 +83,6 @@ class OnConflictBuilder {
83
83
  onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, (0, binary_operation_parser_js_1.parseValueBinaryOperationOrExpression)(args)),
84
84
  });
85
85
  }
86
- /**
87
- * Specify an index predicate for the index target.
88
- *
89
- * See {@link WhereInterface.whereRef} for more info.
90
- */
91
86
  whereRef(lhs, op, rhs) {
92
87
  return new OnConflictBuilder({
93
88
  ...this.#props,
@@ -175,7 +170,7 @@ class OnConflictBuilder {
175
170
  return new OnConflictUpdateBuilder({
176
171
  ...this.#props,
177
172
  onConflictNode: on_conflict_node_js_1.OnConflictNode.cloneWith(this.#props.onConflictNode, {
178
- updates: (0, update_set_parser_js_1.parseUpdateExpression)(update),
173
+ updates: (0, update_set_parser_js_1.parseUpdateObjectExpression)(update),
179
174
  }),
180
175
  });
181
176
  }
@@ -28,7 +28,7 @@ export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNo
28
28
  * from "person"
29
29
  * ```
30
30
  */
31
- orderBy(orderBy: StringReference<DB, TB> | DynamicReferenceBuilder<any>, direction?: OrderByDirectionExpression): OverBuilder<DB, TB>;
31
+ orderBy<OE extends StringReference<DB, TB> | DynamicReferenceBuilder<any>>(orderBy: OE, direction?: OrderByDirectionExpression): OverBuilder<DB, TB>;
32
32
  /**
33
33
  * Adds partition by clause item/s inside the over function.
34
34
  *
@@ -51,7 +51,7 @@ export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNo
51
51
  * ```
52
52
  */
53
53
  partitionBy(partitionBy: ReadonlyArray<PartitionByExpression<DB, TB>>): OverBuilder<DB, TB>;
54
- partitionBy(partitionBy: PartitionByExpression<DB, TB>): OverBuilder<DB, TB>;
54
+ partitionBy<PE extends PartitionByExpression<DB, TB>>(partitionBy: PE): OverBuilder<DB, TB>;
55
55
  /**
56
56
  * Simply calls the provided function passing `this` as the only argument. `$call` returns
57
57
  * what the provided function returns.
@@ -1,5 +1,5 @@
1
- import { ReturningRow } from '../parser/returning-parser.js';
2
- import { SelectExpression } from '../parser/select-parser.js';
1
+ import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
2
+ import { SelectCallback, SelectExpression } from '../parser/select-parser.js';
3
3
  import { Selectable } from '../util/column-type.js';
4
4
  export interface ReturningInterface<DB, TB extends keyof DB, O> {
5
5
  /**
@@ -62,6 +62,7 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
62
62
  * ```
63
63
  */
64
64
  returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): ReturningInterface<DB, TB, ReturningRow<DB, TB, O, SE>>;
65
+ returning<CB extends SelectCallback<DB, TB>>(callback: CB): ReturningInterface<DB, TB, ReturningCallbackRow<DB, TB, O, CB>>;
65
66
  returning<SE extends SelectExpression<DB, TB>>(selection: SE): ReturningInterface<DB, TB, ReturningRow<DB, TB, O, SE>>;
66
67
  /**
67
68
  * Adds a `returning *` to an insert/update/delete query on databases
@@ -0,0 +1,20 @@
1
+ import { AliasableExpression } from '../expression/expression.js';
2
+ import { SelectQueryNode } from '../operation-node/select-query-node.js';
3
+ export interface SelectQueryBuilderExpression<O> extends AliasableExpression<O> {
4
+ get isSelectQueryBuilder(): true;
5
+ /**
6
+ * Creates the OperationNode that describes how to compile this expression into SQL.
7
+ *
8
+ * If you are creating a custom expression, it's often easiest to use the {@link sql}
9
+ * template tag to build the node:
10
+ *
11
+ * ```ts
12
+ * class SomeExpression<T> implements Expression<T> {
13
+ * toOperationNode(): OperationNode {
14
+ * return sql`some sql here`.toOperationNode()
15
+ * }
16
+ * }
17
+ * ```
18
+ */
19
+ toOperationNode(): SelectQueryNode;
20
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,7 +1,7 @@
1
1
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
2
2
  import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
3
3
  import { TableExpression } from '../parser/table-parser.js';
4
- import { SelectExpression, Selection, SelectArg, AllSelection } from '../parser/select-parser.js';
4
+ import { SelectExpression, Selection, AllSelection, SelectCallback, CallbackSelection } from '../parser/select-parser.js';
5
5
  import { ReferenceExpression } from '../parser/reference-parser.js';
6
6
  import { SelectQueryNode } from '../operation-node/select-query-node.js';
7
7
  import { QueryNode } from '../operation-node/query-node.js';
@@ -17,14 +17,15 @@ import { NoResultErrorConstructor } from './no-result-error.js';
17
17
  import { HavingInterface } from './having-interface.js';
18
18
  import { Explainable, ExplainFormat } from '../util/explainable.js';
19
19
  import { SetOperandExpression } from '../parser/set-operation-parser.js';
20
- import { AliasableExpression, AliasedExpression, Expression } from '../expression/expression.js';
20
+ import { AliasedExpression, Expression } from '../expression/expression.js';
21
21
  import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
22
22
  import { KyselyTypeError } from '../util/type-error.js';
23
23
  import { Selectable } from '../util/column-type.js';
24
24
  import { Streamable } from '../util/streamable.js';
25
25
  import { ExpressionOrFactory } from '../parser/expression-parser.js';
26
26
  import { ExpressionWrapper } from '../expression/expression-wrapper.js';
27
- export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInterface<DB, TB>, HavingInterface<DB, TB>, AliasableExpression<O>, Compilable<O>, Explainable, Streamable<O> {
27
+ import { SelectQueryBuilderExpression } from './select-query-builder-expression.js';
28
+ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInterface<DB, TB>, HavingInterface<DB, TB>, SelectQueryBuilderExpression<O>, Compilable<O>, Explainable, Streamable<O> {
28
29
  /**
29
30
  * Adds a `where` expression to the query.
30
31
  *
@@ -324,8 +325,8 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
324
325
  * .execute()
325
326
  * ```
326
327
  */
327
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
328
- where(expression: ExpressionOrFactory<DB, TB, SqlBool>): SelectQueryBuilder<DB, TB, O>;
328
+ where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): SelectQueryBuilder<DB, TB, O>;
329
+ where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): SelectQueryBuilder<DB, TB, O>;
329
330
  /**
330
331
  * Adds a `where` clause where both sides of the operator are references
331
332
  * to columns.
@@ -377,18 +378,18 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
377
378
  * ) as "pet_name"
378
379
  * from "person"
379
380
  */
380
- whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
381
+ whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): SelectQueryBuilder<DB, TB, O>;
381
382
  /**
382
383
  * Just like {@link WhereInterface.where | where} but adds a `having` statement
383
384
  * instead of a `where` statement.
384
385
  */
385
- having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
386
- having(expression: ExpressionOrFactory<DB, TB, SqlBool>): SelectQueryBuilder<DB, TB, O>;
386
+ having<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): SelectQueryBuilder<DB, TB, O>;
387
+ having<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): SelectQueryBuilder<DB, TB, O>;
387
388
  /**
388
389
  * Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
389
390
  * instead of a `where` statement.
390
391
  */
391
- havingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
392
+ havingRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): SelectQueryBuilder<DB, TB, O>;
392
393
  /**
393
394
  * Adds a select statement to the query.
394
395
  *
@@ -467,14 +468,14 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
467
468
  *
468
469
  * <!-- siteExample("select", "Aliases", 40) -->
469
470
  *
470
- * You can provide an alias for the selections by appending `as the_alias` to the selection.
471
+ * You can give an alias for selections and tables by appending `as the_alias` to the name:
471
472
  *
472
473
  * ```ts
473
474
  * const persons = await db
474
- * .selectFrom('person')
475
+ * .selectFrom('person as p')
475
476
  * .select([
476
477
  * 'first_name as fn',
477
- * 'person.last_name as ln'
478
+ * 'p.last_name as ln'
478
479
  * ])
479
480
  * .execute()
480
481
  * ```
@@ -484,8 +485,8 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
484
485
  * ```sql
485
486
  * select
486
487
  * "first_name" as "fn",
487
- * "person"."last_name" as "ln"
488
- * from "person"
488
+ * "p"."last_name" as "ln"
489
+ * from "person" as "p"
489
490
  * ```
490
491
  *
491
492
  * <!-- siteExample("select", "Complex selections", 50) -->
@@ -575,7 +576,9 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
575
576
  * persons[0].id
576
577
  * ```
577
578
  */
578
- select<SE extends SelectExpression<DB, TB>>(selection: SelectArg<DB, TB, SE>): SelectQueryBuilder<DB, TB, O & Selection<DB, TB, SE>>;
579
+ select<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): SelectQueryBuilder<DB, TB, O & Selection<DB, TB, SE>>;
580
+ select<CB extends SelectCallback<DB, TB>>(callback: CB): SelectQueryBuilder<DB, TB, O & CallbackSelection<DB, TB, CB>>;
581
+ select<SE extends SelectExpression<DB, TB>>(selection: SE): SelectQueryBuilder<DB, TB, O & Selection<DB, TB, SE>>;
579
582
  /**
580
583
  * Adds `distinct on` expressions to the select clause.
581
584
  *
@@ -1032,9 +1035,9 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1032
1035
  * order by "fn" asc
1033
1036
  * ```
1034
1037
  */
1035
- orderBy(orderBy: UndirectedOrderByExpression<DB, TB, O>, direction?: OrderByDirectionExpression): SelectQueryBuilder<DB, TB, O>;
1036
- orderBy(ref: DirectedOrderByStringReference<DB, TB, O>): SelectQueryBuilder<DB, TB, O>;
1037
- orderBy(refs: ReadonlyArray<OrderByExpression<DB, TB, O>>): SelectQueryBuilder<DB, TB, O>;
1038
+ orderBy<OE extends UndirectedOrderByExpression<DB, TB, O>>(orderBy: OE, direction?: OrderByDirectionExpression): SelectQueryBuilder<DB, TB, O>;
1039
+ orderBy<OE extends DirectedOrderByStringReference<DB, TB, O>>(ref: OE): SelectQueryBuilder<DB, TB, O>;
1040
+ orderBy<OE extends OrderByExpression<DB, TB, O>>(refs: ReadonlyArray<OE>): SelectQueryBuilder<DB, TB, O>;
1038
1041
  /**
1039
1042
  * Adds a `group by` clause to the query.
1040
1043
  *
@@ -1133,7 +1136,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1133
1136
  * group by "first_name"
1134
1137
  * ```
1135
1138
  */
1136
- groupBy(groupBy: GroupByArg<DB, TB, O>): SelectQueryBuilder<DB, TB, O>;
1139
+ groupBy<GE extends GroupByArg<DB, TB, O>>(groupBy: GE): SelectQueryBuilder<DB, TB, O>;
1137
1140
  /**
1138
1141
  * Adds a limit clause to the query.
1139
1142
  *
@@ -1201,7 +1204,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1201
1204
  * .orderBy('name')
1202
1205
  * ```
1203
1206
  */
1204
- union(expression: SetOperandExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1207
+ union<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
1205
1208
  /**
1206
1209
  * Combines another select query or raw expression to this query using `union all`.
1207
1210
  *
@@ -1228,7 +1231,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1228
1231
  * .orderBy('name')
1229
1232
  * ```
1230
1233
  */
1231
- unionAll(expression: SetOperandExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1234
+ unionAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
1232
1235
  /**
1233
1236
  * Combines another select query or raw expression to this query using `intersect`.
1234
1237
  *
@@ -1255,7 +1258,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1255
1258
  * .orderBy('name')
1256
1259
  * ```
1257
1260
  */
1258
- intersect(expression: SetOperandExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1261
+ intersect<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
1259
1262
  /**
1260
1263
  * Combines another select query or raw expression to this query using `intersect all`.
1261
1264
  *
@@ -1282,7 +1285,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1282
1285
  * .orderBy('name')
1283
1286
  * ```
1284
1287
  */
1285
- intersectAll(expression: SetOperandExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1288
+ intersectAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
1286
1289
  /**
1287
1290
  * Combines another select query or raw expression to this query using `except`.
1288
1291
  *
@@ -1309,7 +1312,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1309
1312
  * .orderBy('name')
1310
1313
  * ```
1311
1314
  */
1312
- except(expression: SetOperandExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1315
+ except<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
1313
1316
  /**
1314
1317
  * Combines another select query or raw expression to this query using `except all`.
1315
1318
  *
@@ -1336,7 +1339,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1336
1339
  * .orderBy('name')
1337
1340
  * ```
1338
1341
  */
1339
- exceptAll(expression: SetOperandExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
1342
+ exceptAll<E extends SetOperandExpression<DB, O>>(expression: E): SelectQueryBuilder<DB, TB, O>;
1340
1343
  /**
1341
1344
  * Gives an alias for the query. This method is only useful for sub queries.
1342
1345
  *
@@ -1356,7 +1359,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1356
1359
  * pets[0].owner_first_name
1357
1360
  * ```
1358
1361
  */
1359
- as<A extends string>(alias: A): AliasedSelectQueryBuilder<DB, TB, O, A>;
1362
+ as<A extends string>(alias: A): AliasedSelectQueryBuilder<O, A>;
1360
1363
  /**
1361
1364
  * Clears all select clauses from the query.
1362
1365
  *
@@ -1542,7 +1545,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1542
1545
  * )
1543
1546
  * ```
1544
1547
  */
1545
- $if<O2>(condition: boolean, func: (qb: this) => SelectQueryBuilder<any, any, O & O2>): SelectQueryBuilder<DB, TB, O & Partial<O2>>;
1548
+ $if<O2>(condition: boolean, func: (qb: this) => SelectQueryBuilder<any, any, O & O2>): SelectQueryBuilder<DB, TB, O & Partial<Omit<O2, keyof O>>>;
1546
1549
  /**
1547
1550
  * Change the output type of the query.
1548
1551
  *
@@ -1637,6 +1640,22 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
1637
1640
  *
1638
1641
  * functionThatExpectsPersonWithNonNullValue(person)
1639
1642
  * ```
1643
+ *
1644
+ * Giving the explicit narrowed type (`string` in the example above) works fine for
1645
+ * simple types. If the type is complex, for example a JSON column or a subquery,
1646
+ * you can use the special `NotNull` type to make the column not null.
1647
+ *
1648
+ * ```ts
1649
+ * import { NotNull } from 'kysely'
1650
+ *
1651
+ * const person = await db.selectFrom('person')
1652
+ * .where('nullable_column', 'is not', null)
1653
+ * .selectAll()
1654
+ * .$narrowType<{ nullable_column: NotNull }>()
1655
+ * .executeTakeFirstOrThrow()
1656
+ *
1657
+ * functionThatExpectsPersonWithNonNullValue(person)
1658
+ * ```
1640
1659
  */
1641
1660
  $narrowType<T>(): SelectQueryBuilder<DB, TB, NarrowPartial<O, T>>;
1642
1661
  /**
@@ -1789,8 +1808,8 @@ export interface SelectQueryBuilderProps {
1789
1808
  readonly queryNode: SelectQueryNode;
1790
1809
  readonly executor: QueryExecutor;
1791
1810
  }
1792
- export interface AliasedSelectQueryBuilder<DB, TB extends keyof DB, O = undefined, A extends string = never> extends AliasedExpression<O, A> {
1793
- get selectQueryBuilder(): SelectQueryBuilder<DB, TB, O>;
1811
+ export interface AliasedSelectQueryBuilder<O = undefined, A extends string = never> extends AliasedExpression<O, A> {
1812
+ get isAliasedSelectQueryBuilder(): true;
1794
1813
  }
1795
1814
  export type SelectQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? SelectQueryBuilder<DB, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : never;
1796
1815
  type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? SelectQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : SelectQueryBuilder<DB & ShallowRecord<A, R>, TB | A, O>;
@@ -27,6 +27,9 @@ class SelectQueryBuilderImpl {
27
27
  get expressionType() {
28
28
  return undefined;
29
29
  }
30
+ get isSelectQueryBuilder() {
31
+ return true;
32
+ }
30
33
  where(...args) {
31
34
  return new SelectQueryBuilderImpl({
32
35
  ...this.#props,
@@ -342,8 +345,8 @@ class AliasedSelectQueryBuilderImpl {
342
345
  get alias() {
343
346
  return this.#alias;
344
347
  }
345
- get selectQueryBuilder() {
346
- return this.#queryBuilder;
348
+ get isAliasedSelectQueryBuilder() {
349
+ return true;
347
350
  }
348
351
  toOperationNode() {
349
352
  return alias_node_js_1.AliasNode.create(this.#queryBuilder.toOperationNode(), identifier_node_js_1.IdentifierNode.create(this.#alias));
@@ -2,13 +2,13 @@ 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, SelectArg } from '../parser/select-parser.js';
6
- import { ReturningRow } from '../parser/returning-parser.js';
5
+ import { SelectExpression, SelectCallback } from '../parser/select-parser.js';
6
+ import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
7
7
  import { ReferenceExpression } from '../parser/reference-parser.js';
8
8
  import { QueryNode } from '../operation-node/query-node.js';
9
9
  import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, SimplifyResult, SimplifySingleResult, SqlBool } from '../util/type-utils.js';
10
10
  import { UpdateQueryNode } from '../operation-node/update-query-node.js';
11
- import { UpdateObject, UpdateObjectFactory } from '../parser/update-set-parser.js';
11
+ import { UpdateObject, UpdateObjectFactory, ExtractUpdateTypeFromReferenceExpression } from '../parser/update-set-parser.js';
12
12
  import { Compilable } from '../util/compilable.js';
13
13
  import { QueryExecutor } from '../query-executor/query-executor.js';
14
14
  import { QueryId } from '../util/query-id.js';
@@ -24,6 +24,7 @@ import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../p
24
24
  import { KyselyTypeError } from '../util/type-error.js';
25
25
  import { Streamable } from '../util/streamable.js';
26
26
  import { ExpressionOrFactory } from '../parser/expression-parser.js';
27
+ import { ValueExpression } from '../parser/value-parser.js';
27
28
  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> {
28
29
  #private;
29
30
  constructor(props: UpdateQueryBuilderProps);
@@ -326,8 +327,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
326
327
  * .execute()
327
328
  * ```
328
329
  */
329
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
330
- where(expression: ExpressionOrFactory<DB, TB, SqlBool>): UpdateQueryBuilder<DB, UT, TB, O>;
330
+ where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): UpdateQueryBuilder<DB, UT, TB, O>;
331
+ where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): UpdateQueryBuilder<DB, UT, TB, O>;
331
332
  /**
332
333
  * Adds a `where` clause where both sides of the operator are references
333
334
  * to columns.
@@ -379,7 +380,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
379
380
  * ) as "pet_name"
380
381
  * from "person"
381
382
  */
382
- whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
383
+ whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): UpdateQueryBuilder<DB, UT, TB, O>;
383
384
  /**
384
385
  * Clears all where expressions from the query.
385
386
  *
@@ -625,6 +626,20 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
625
626
  * "id" = $4
626
627
  * ```
627
628
  *
629
+ * If you provide two arguments the first one is interpreted as the column
630
+ * (or other target) and the second as the value:
631
+ *
632
+ * ```ts
633
+ * const result = await db
634
+ * .updateTable('person')
635
+ * .set('first_name', 'Foo')
636
+ * // As always, both arguments can be arbitrary expressions or
637
+ * // callbacks that give you access to an expression builder:
638
+ * .set(sql`address['postalCode']`, (eb) => eb.val('61710))
639
+ * .where('id', '=', '1')
640
+ * .executeTakeFirst()
641
+ * ```
642
+ *
628
643
  * On PostgreSQL you can chain `returning` to the query to get
629
644
  * the updated rows' columns (or any other expression) as the
630
645
  * return value:
@@ -682,6 +697,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
682
697
  */
683
698
  set(update: UpdateObject<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
684
699
  set(update: UpdateObjectFactory<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
700
+ set<RE extends ReferenceExpression<DB, UT>>(key: RE, value: ValueExpression<DB, TB, ExtractUpdateTypeFromReferenceExpression<DB, UT, RE>>): UpdateQueryBuilder<DB, UT, TB, O>;
685
701
  /**
686
702
  * Allows you to return data from modified rows.
687
703
  *
@@ -741,7 +757,9 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
741
757
  * .executeTakeFirst()
742
758
  * ```
743
759
  */
744
- returning<SE extends SelectExpression<DB, TB>>(selection: SelectArg<DB, TB, SE>): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
760
+ returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
761
+ returning<CB extends SelectCallback<DB, TB>>(callback: CB): UpdateQueryBuilder<DB, UT, TB, ReturningCallbackRow<DB, TB, O, CB>>;
762
+ returning<SE extends SelectExpression<DB, TB>>(selection: SE): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
745
763
  /**
746
764
  * Adds a `returning *` to an insert/update/delete query on databases
747
765
  * that support `returning` such as PostgreSQL.
@@ -65,10 +65,10 @@ class UpdateQueryBuilder {
65
65
  queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('FullJoin', args)),
66
66
  });
67
67
  }
68
- set(update) {
68
+ set(...args) {
69
69
  return new UpdateQueryBuilder({
70
70
  ...this.#props,
71
- queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, (0, update_set_parser_js_1.parseUpdateExpression)(update)),
71
+ queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, (0, update_set_parser_js_1.parseUpdate)(...args)),
72
72
  });
73
73
  }
74
74
  returning(selection) {
@@ -302,8 +302,8 @@ export interface WhereInterface<DB, TB extends keyof DB> {
302
302
  * .execute()
303
303
  * ```
304
304
  */
305
- where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
306
- where(expression: ExpressionOrFactory<DB, TB, SqlBool>): WhereInterface<DB, TB>;
305
+ where<RE extends ReferenceExpression<DB, TB>, VE extends OperandValueExpressionOrList<DB, TB, RE>>(lhs: RE, op: ComparisonOperatorExpression, rhs: VE): WhereInterface<DB, TB>;
306
+ where<E extends ExpressionOrFactory<DB, TB, SqlBool>>(expression: E): WhereInterface<DB, TB>;
307
307
  /**
308
308
  * Adds a `where` clause where both sides of the operator are references
309
309
  * to columns.
@@ -355,7 +355,7 @@ export interface WhereInterface<DB, TB extends keyof DB> {
355
355
  * ) as "pet_name"
356
356
  * from "person"
357
357
  */
358
- whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
358
+ whereRef<LRE extends ReferenceExpression<DB, TB>, RRE extends ReferenceExpression<DB, TB>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): WhereInterface<DB, TB>;
359
359
  /**
360
360
  * Clears all where expressions from the query.
361
361
  *