kysely 0.27.6 → 0.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -1
- package/deno.check.d.ts +7 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/cjs/dialect/mssql/mssql-driver.js +33 -19
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +27 -12
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +28 -18
- package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/cjs/driver/database-connection.d.ts +0 -4
- package/dist/cjs/driver/driver.d.ts +17 -0
- package/dist/cjs/driver/driver.js +13 -1
- package/dist/cjs/driver/dummy-driver.d.ts +3 -0
- package/dist/cjs/driver/dummy-driver.js +9 -0
- package/dist/cjs/driver/runtime-driver.d.ts +4 -0
- package/dist/cjs/driver/runtime-driver.js +43 -3
- package/dist/cjs/expression/expression-builder.d.ts +7 -10
- package/dist/cjs/helpers/postgres.d.ts +48 -0
- package/dist/cjs/helpers/postgres.js +50 -0
- package/dist/cjs/index.d.ts +13 -2
- package/dist/cjs/index.js +13 -2
- package/dist/cjs/kysely.d.ts +339 -2
- package/dist/cjs/kysely.js +465 -11
- package/dist/cjs/migration/migrator.d.ts +8 -0
- package/dist/cjs/migration/migrator.js +1 -1
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/cjs/operation-node/aggregate-function-node.js +4 -3
- package/dist/cjs/operation-node/alter-table-node.d.ts +3 -1
- package/dist/cjs/operation-node/collate-node.d.ts +13 -0
- package/dist/cjs/operation-node/collate-node.js +19 -0
- package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.js +1 -1
- package/dist/cjs/operation-node/delete-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/delete-query-node.js +11 -15
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/cjs/operation-node/operation-node-transformer.js +352 -312
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/or-action-node.d.ts +12 -0
- package/dist/cjs/operation-node/or-action-node.js +18 -0
- package/dist/cjs/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/cjs/operation-node/order-by-item-node.js +6 -0
- package/dist/cjs/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/cjs/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/cjs/operation-node/query-node.d.ts +7 -0
- package/dist/cjs/operation-node/query-node.js +15 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.js +25 -0
- package/dist/cjs/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/cjs/operation-node/rename-constraint-node.js +20 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/select-query-node.js +11 -15
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
- package/dist/cjs/operation-node/update-query-node.js +5 -2
- package/dist/cjs/parser/collate-parser.d.ts +1 -0
- package/dist/cjs/parser/collate-parser.js +2 -0
- package/dist/cjs/parser/delete-from-parser.d.ts +5 -0
- package/dist/cjs/parser/delete-from-parser.js +2 -0
- package/dist/cjs/parser/join-parser.d.ts +1 -1
- package/dist/cjs/parser/join-parser.js +7 -1
- package/dist/cjs/parser/merge-into-parser.d.ts +5 -0
- package/dist/cjs/parser/merge-into-parser.js +2 -0
- package/dist/cjs/parser/order-by-parser.d.ts +18 -5
- package/dist/cjs/parser/order-by-parser.js +24 -14
- package/dist/cjs/parser/savepoint-parser.d.ts +4 -0
- package/dist/cjs/parser/savepoint-parser.js +11 -0
- package/dist/cjs/parser/select-from-parser.d.ts +4 -0
- package/dist/cjs/parser/select-from-parser.js +2 -0
- package/dist/cjs/parser/table-parser.d.ts +2 -5
- package/dist/cjs/parser/update-parser.d.ts +5 -0
- package/dist/cjs/parser/update-parser.js +2 -0
- package/dist/cjs/parser/update-set-parser.d.ts +7 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +162 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +29 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.js +66 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/cjs/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +6 -5
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +29 -24
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/cjs/query-builder/aggregate-function-builder.js +15 -27
- package/dist/cjs/query-builder/cte-builder.js +0 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/cjs/query-builder/delete-query-builder.js +12 -78
- package/dist/cjs/query-builder/function-module.d.ts +31 -4
- package/dist/cjs/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/cjs/query-builder/insert-query-builder.js +197 -10
- package/dist/cjs/query-builder/join-builder.js +0 -2
- package/dist/cjs/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/cjs/query-builder/merge-query-builder.js +28 -7
- package/dist/cjs/query-builder/on-conflict-builder.js +0 -4
- package/dist/cjs/query-builder/order-by-interface.d.ts +176 -0
- package/dist/cjs/query-builder/order-by-interface.js +2 -0
- package/dist/cjs/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/cjs/query-builder/order-by-item-builder.js +75 -0
- package/dist/cjs/query-builder/over-builder.d.ts +43 -6
- package/dist/cjs/query-builder/over-builder.js +8 -25
- package/dist/cjs/query-builder/returning-interface.d.ts +20 -3
- package/dist/cjs/query-builder/select-query-builder.d.ts +279 -98
- package/dist/cjs/query-builder/select-query-builder.js +26 -26
- package/dist/cjs/query-builder/update-query-builder.d.ts +88 -9
- package/dist/cjs/query-builder/update-query-builder.js +17 -15
- package/dist/cjs/query-compiler/compiled-query.d.ts +2 -0
- package/dist/cjs/query-compiler/compiled-query.js +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +97 -2
- package/dist/cjs/query-compiler/query-compiler.d.ts +4 -2
- package/dist/cjs/query-creator.d.ts +23 -25
- package/dist/cjs/query-creator.js +280 -8
- package/dist/cjs/query-executor/default-query-executor.d.ts +2 -1
- package/dist/cjs/query-executor/default-query-executor.js +2 -2
- package/dist/cjs/query-executor/query-executor-base.js +7 -25
- package/dist/cjs/raw-builder/raw-builder.js +0 -3
- package/dist/cjs/raw-builder/sql.d.ts +3 -3
- package/dist/cjs/raw-builder/sql.js +1 -1
- package/dist/cjs/schema/alter-column-builder.js +0 -3
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/cjs/schema/alter-table-add-index-builder.js +0 -2
- package/dist/cjs/schema/alter-table-builder.d.ts +7 -3
- package/dist/cjs/schema/alter-table-builder.js +21 -10
- package/dist/cjs/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/cjs/schema/alter-table-executor.js +0 -2
- package/dist/cjs/schema/check-constraint-builder.d.ts +13 -0
- package/dist/cjs/schema/check-constraint-builder.js +20 -0
- package/dist/cjs/schema/column-definition-builder.js +0 -2
- package/dist/cjs/schema/create-index-builder.js +1 -3
- package/dist/cjs/schema/create-schema-builder.js +0 -2
- package/dist/cjs/schema/create-table-builder.d.ts +5 -4
- package/dist/cjs/schema/create-table-builder.js +9 -7
- package/dist/cjs/schema/create-type-builder.d.ts +1 -1
- package/dist/cjs/schema/create-type-builder.js +0 -2
- package/dist/cjs/schema/create-view-builder.js +0 -2
- package/dist/cjs/schema/drop-index-builder.js +0 -2
- package/dist/cjs/schema/drop-schema-builder.js +0 -2
- package/dist/cjs/schema/drop-table-builder.js +0 -2
- package/dist/cjs/schema/drop-type-builder.js +0 -2
- package/dist/cjs/schema/drop-view-builder.js +0 -2
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/cjs/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/cjs/schema/primary-key-constraint-builder.js +37 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.js +75 -0
- package/dist/cjs/schema/schema.d.ts +14 -0
- package/dist/cjs/schema/schema.js +21 -0
- package/dist/cjs/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/cjs/schema/unique-constraint-builder.js +26 -5
- package/dist/cjs/util/infer-result.d.ts +1 -1
- package/dist/cjs/util/log.d.ts +1 -0
- package/dist/cjs/util/log.js +3 -2
- package/dist/cjs/util/provide-controlled-connection.d.ts +7 -0
- package/dist/cjs/util/provide-controlled-connection.js +24 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/esm/dialect/mssql/mssql-driver.js +33 -19
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +27 -12
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +28 -18
- package/dist/esm/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/esm/driver/database-connection.d.ts +0 -4
- package/dist/esm/driver/driver.d.ts +17 -0
- package/dist/esm/driver/driver.js +11 -0
- package/dist/esm/driver/dummy-driver.d.ts +3 -0
- package/dist/esm/driver/dummy-driver.js +9 -0
- package/dist/esm/driver/runtime-driver.d.ts +4 -0
- package/dist/esm/driver/runtime-driver.js +43 -3
- package/dist/esm/expression/expression-builder.d.ts +7 -10
- package/dist/esm/helpers/postgres.d.ts +48 -0
- package/dist/esm/helpers/postgres.js +49 -0
- package/dist/esm/index.d.ts +13 -2
- package/dist/esm/index.js +11 -1
- package/dist/esm/kysely.d.ts +339 -2
- package/dist/esm/kysely.js +461 -10
- package/dist/esm/migration/migrator.d.ts +8 -0
- package/dist/esm/migration/migrator.js +1 -1
- package/dist/esm/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/esm/operation-node/aggregate-function-node.js +4 -3
- package/dist/esm/operation-node/alter-table-node.d.ts +3 -1
- package/dist/esm/operation-node/collate-node.d.ts +13 -0
- package/dist/esm/operation-node/collate-node.js +17 -0
- package/dist/esm/operation-node/constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.js +1 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +8 -2
- package/dist/esm/operation-node/delete-query-node.js +11 -15
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/esm/operation-node/operation-node-transformer.js +352 -312
- package/dist/esm/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/esm/operation-node/operation-node-visitor.js +4 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/or-action-node.d.ts +12 -0
- package/dist/esm/operation-node/or-action-node.js +16 -0
- package/dist/esm/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/esm/operation-node/order-by-item-node.js +6 -0
- package/dist/esm/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/esm/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/esm/operation-node/query-node.d.ts +7 -0
- package/dist/esm/operation-node/query-node.js +15 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.js +23 -0
- package/dist/esm/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/esm/operation-node/rename-constraint-node.js +18 -0
- package/dist/esm/operation-node/select-query-node.d.ts +8 -2
- package/dist/esm/operation-node/select-query-node.js +11 -15
- package/dist/esm/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -4
- package/dist/esm/operation-node/update-query-node.js +5 -2
- package/dist/esm/parser/collate-parser.d.ts +1 -0
- package/dist/esm/parser/collate-parser.js +2 -0
- package/dist/esm/parser/delete-from-parser.d.ts +5 -0
- package/dist/esm/parser/delete-from-parser.js +2 -0
- package/dist/esm/parser/join-parser.d.ts +1 -1
- package/dist/esm/parser/join-parser.js +7 -1
- package/dist/esm/parser/merge-into-parser.d.ts +5 -0
- package/dist/esm/parser/merge-into-parser.js +2 -0
- package/dist/esm/parser/order-by-parser.d.ts +18 -5
- package/dist/esm/parser/order-by-parser.js +27 -17
- package/dist/esm/parser/savepoint-parser.d.ts +4 -0
- package/dist/esm/parser/savepoint-parser.js +9 -0
- package/dist/esm/parser/select-from-parser.d.ts +4 -0
- package/dist/esm/parser/select-from-parser.js +2 -0
- package/dist/esm/parser/table-parser.d.ts +2 -5
- package/dist/esm/parser/update-parser.d.ts +5 -0
- package/dist/esm/parser/update-parser.js +2 -0
- package/dist/esm/parser/update-set-parser.d.ts +7 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +159 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +26 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.js +63 -0
- package/dist/esm/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +6 -5
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +29 -24
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/esm/query-builder/aggregate-function-builder.js +15 -27
- package/dist/esm/query-builder/cte-builder.js +0 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/esm/query-builder/delete-query-builder.js +12 -78
- package/dist/esm/query-builder/function-module.d.ts +31 -4
- package/dist/esm/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/esm/query-builder/insert-query-builder.js +197 -10
- package/dist/esm/query-builder/join-builder.js +0 -2
- package/dist/esm/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/esm/query-builder/merge-query-builder.js +29 -8
- package/dist/esm/query-builder/on-conflict-builder.js +0 -4
- package/dist/esm/query-builder/order-by-interface.d.ts +176 -0
- package/dist/esm/query-builder/order-by-interface.js +2 -0
- package/dist/esm/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/esm/query-builder/order-by-item-builder.js +72 -0
- package/dist/esm/query-builder/over-builder.d.ts +43 -6
- package/dist/esm/query-builder/over-builder.js +8 -25
- package/dist/esm/query-builder/returning-interface.d.ts +20 -3
- package/dist/esm/query-builder/select-query-builder.d.ts +279 -98
- package/dist/esm/query-builder/select-query-builder.js +26 -26
- package/dist/esm/query-builder/update-query-builder.d.ts +88 -9
- package/dist/esm/query-builder/update-query-builder.js +17 -15
- package/dist/esm/query-compiler/compiled-query.d.ts +2 -0
- package/dist/esm/query-compiler/compiled-query.js +2 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/esm/query-compiler/default-query-compiler.js +97 -2
- package/dist/esm/query-compiler/query-compiler.d.ts +4 -2
- package/dist/esm/query-creator.d.ts +23 -25
- package/dist/esm/query-creator.js +281 -9
- package/dist/esm/query-executor/default-query-executor.d.ts +2 -1
- package/dist/esm/query-executor/default-query-executor.js +2 -2
- package/dist/esm/query-executor/query-executor-base.js +7 -25
- package/dist/esm/raw-builder/raw-builder.js +0 -3
- package/dist/esm/raw-builder/sql.d.ts +3 -3
- package/dist/esm/raw-builder/sql.js +1 -1
- package/dist/esm/schema/alter-column-builder.js +0 -3
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/esm/schema/alter-table-add-index-builder.js +0 -2
- package/dist/esm/schema/alter-table-builder.d.ts +7 -3
- package/dist/esm/schema/alter-table-builder.js +22 -11
- package/dist/esm/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/esm/schema/alter-table-executor.js +0 -2
- package/dist/esm/schema/check-constraint-builder.d.ts +13 -0
- package/dist/esm/schema/check-constraint-builder.js +17 -0
- package/dist/esm/schema/column-definition-builder.js +0 -2
- package/dist/esm/schema/create-index-builder.js +1 -3
- package/dist/esm/schema/create-schema-builder.js +0 -2
- package/dist/esm/schema/create-table-builder.d.ts +5 -4
- package/dist/esm/schema/create-table-builder.js +10 -8
- package/dist/esm/schema/create-type-builder.d.ts +1 -1
- package/dist/esm/schema/create-type-builder.js +0 -2
- package/dist/esm/schema/create-view-builder.js +0 -2
- package/dist/esm/schema/drop-index-builder.js +0 -2
- package/dist/esm/schema/drop-schema-builder.js +0 -2
- package/dist/esm/schema/drop-table-builder.js +0 -2
- package/dist/esm/schema/drop-type-builder.js +0 -2
- package/dist/esm/schema/drop-view-builder.js +0 -2
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/esm/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/esm/schema/primary-key-constraint-builder.js +34 -0
- package/dist/esm/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/esm/schema/refresh-materialized-view-builder.js +72 -0
- package/dist/esm/schema/schema.d.ts +14 -0
- package/dist/esm/schema/schema.js +21 -0
- package/dist/esm/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/esm/schema/unique-constraint-builder.js +26 -5
- package/dist/esm/util/infer-result.d.ts +1 -1
- package/dist/esm/util/log.d.ts +1 -0
- package/dist/esm/util/log.js +3 -2
- package/dist/esm/util/provide-controlled-connection.d.ts +7 -0
- package/dist/esm/util/provide-controlled-connection.js +22 -0
- package/outdated-typescript.d.ts +5 -0
- package/package.json +16 -2
- package/CONTRIBUTING.md +0 -168
- package/dist/cjs/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/cjs/util/prevent-await.d.ts +0 -1
- package/dist/cjs/util/prevent-await.js +0 -13
- package/dist/esm/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/esm/util/prevent-await.d.ts +0 -1
- 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 {
|
|
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
|
-
|
|
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 `
|
|
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
|
|
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
|
|
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)(
|
|
107
|
+
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(joinType, args)),
|
|
102
108
|
});
|
|
103
109
|
}
|
|
104
|
-
|
|
110
|
+
orderBy(...args) {
|
|
105
111
|
return new UpdateQueryBuilder({
|
|
106
112
|
...this.#props,
|
|
107
|
-
queryNode: query_node_js_1.QueryNode.
|
|
113
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrderByItems(this.#props.queryNode, (0, order_by_parser_js_1.parseOrderBy)(args)),
|
|
108
114
|
});
|
|
109
115
|
}
|
|
110
|
-
|
|
116
|
+
clearOrderBy() {
|
|
111
117
|
return new UpdateQueryBuilder({
|
|
112
118
|
...this.#props,
|
|
113
|
-
queryNode: query_node_js_1.QueryNode.
|
|
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.
|
|
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
|
}
|