@quereus/quereus 3.2.1 → 4.0.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.
- package/README.md +7 -0
- package/dist/src/common/datatype.d.ts +12 -0
- package/dist/src/common/datatype.d.ts.map +1 -1
- package/dist/src/common/datatype.js.map +1 -1
- package/dist/src/common/types.d.ts +24 -0
- package/dist/src/common/types.d.ts.map +1 -1
- package/dist/src/common/types.js.map +1 -1
- package/dist/src/core/database-assertions.d.ts +37 -9
- package/dist/src/core/database-assertions.d.ts.map +1 -1
- package/dist/src/core/database-assertions.js +62 -106
- package/dist/src/core/database-assertions.js.map +1 -1
- package/dist/src/core/database-events.d.ts +163 -0
- package/dist/src/core/database-events.d.ts.map +1 -1
- package/dist/src/core/database-events.js +235 -21
- package/dist/src/core/database-events.js.map +1 -1
- package/dist/src/core/database-external-changes.d.ts +28 -0
- package/dist/src/core/database-external-changes.d.ts.map +1 -0
- package/dist/src/core/database-external-changes.js +242 -0
- package/dist/src/core/database-external-changes.js.map +1 -0
- package/dist/src/core/database-internal.d.ts +50 -1
- package/dist/src/core/database-internal.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views.d.ts +1253 -0
- package/dist/src/core/database-materialized-views.d.ts.map +1 -0
- package/dist/src/core/database-materialized-views.js +3064 -0
- package/dist/src/core/database-materialized-views.js.map +1 -0
- package/dist/src/core/database-options.d.ts +4 -0
- package/dist/src/core/database-options.d.ts.map +1 -1
- package/dist/src/core/database-options.js +10 -0
- package/dist/src/core/database-options.js.map +1 -1
- package/dist/src/core/database-transaction.d.ts +19 -3
- package/dist/src/core/database-transaction.d.ts.map +1 -1
- package/dist/src/core/database-transaction.js +30 -3
- package/dist/src/core/database-transaction.js.map +1 -1
- package/dist/src/core/database-watchers.d.ts +19 -0
- package/dist/src/core/database-watchers.d.ts.map +1 -1
- package/dist/src/core/database-watchers.js +63 -3
- package/dist/src/core/database-watchers.js.map +1 -1
- package/dist/src/core/database.d.ts +203 -11
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +493 -29
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/derived-row-validator.d.ts +137 -0
- package/dist/src/core/derived-row-validator.d.ts.map +1 -0
- package/dist/src/core/derived-row-validator.js +314 -0
- package/dist/src/core/derived-row-validator.js.map +1 -0
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +30 -9
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/emit/ast-stringify.d.ts +135 -1
- package/dist/src/emit/ast-stringify.d.ts.map +1 -1
- package/dist/src/emit/ast-stringify.js +795 -120
- package/dist/src/emit/ast-stringify.js.map +1 -1
- package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
- package/dist/src/func/builtins/aggregate.js +11 -10
- package/dist/src/func/builtins/aggregate.js.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.js +32 -0
- package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts +3 -0
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +229 -0
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/index.d.ts.map +1 -1
- package/dist/src/func/builtins/index.js +10 -2
- package/dist/src/func/builtins/index.js.map +1 -1
- package/dist/src/func/builtins/json.d.ts.map +1 -1
- package/dist/src/func/builtins/json.js +3 -2
- package/dist/src/func/builtins/json.js.map +1 -1
- package/dist/src/func/builtins/mutation.d.ts +2 -0
- package/dist/src/func/builtins/mutation.d.ts.map +1 -0
- package/dist/src/func/builtins/mutation.js +53 -0
- package/dist/src/func/builtins/mutation.js.map +1 -0
- package/dist/src/func/builtins/schema.d.ts +2 -0
- package/dist/src/func/builtins/schema.d.ts.map +1 -1
- package/dist/src/func/builtins/schema.js +713 -26
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/func/builtins/string.js +1 -1
- package/dist/src/func/builtins/string.js.map +1 -1
- package/dist/src/func/registration.d.ts +9 -0
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js +4 -0
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +25 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +27 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/ast.d.ts +353 -21
- package/dist/src/parser/ast.d.ts.map +1 -1
- package/dist/src/parser/index.d.ts +14 -1
- package/dist/src/parser/index.d.ts.map +1 -1
- package/dist/src/parser/index.js +19 -0
- package/dist/src/parser/index.js.map +1 -1
- package/dist/src/parser/lexer.d.ts +9 -0
- package/dist/src/parser/lexer.d.ts.map +1 -1
- package/dist/src/parser/lexer.js +9 -0
- package/dist/src/parser/lexer.js.map +1 -1
- package/dist/src/parser/parser.d.ts +277 -8
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +1393 -471
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/parser/visitor.d.ts.map +1 -1
- package/dist/src/parser/visitor.js +12 -8
- package/dist/src/parser/visitor.js.map +1 -1
- package/dist/src/planner/analysis/assertion-classifier.d.ts.map +1 -1
- package/dist/src/planner/analysis/assertion-classifier.js +4 -0
- package/dist/src/planner/analysis/assertion-classifier.js.map +1 -1
- package/dist/src/planner/analysis/assertion-hoist-cache.d.ts.map +1 -1
- package/dist/src/planner/analysis/assertion-hoist-cache.js +8 -4
- package/dist/src/planner/analysis/assertion-hoist-cache.js.map +1 -1
- package/dist/src/planner/analysis/authored-inverse.d.ts +22 -0
- package/dist/src/planner/analysis/authored-inverse.d.ts.map +1 -0
- package/dist/src/planner/analysis/authored-inverse.js +267 -0
- package/dist/src/planner/analysis/authored-inverse.js.map +1 -0
- package/dist/src/planner/analysis/binding-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/binding-extractor.js +9 -6
- package/dist/src/planner/analysis/binding-extractor.js.map +1 -1
- package/dist/src/planner/analysis/change-scope.d.ts +34 -4
- package/dist/src/planner/analysis/change-scope.d.ts.map +1 -1
- package/dist/src/planner/analysis/change-scope.js +115 -7
- package/dist/src/planner/analysis/change-scope.js.map +1 -1
- package/dist/src/planner/analysis/check-extraction.d.ts +36 -2
- package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
- package/dist/src/planner/analysis/check-extraction.js +174 -46
- package/dist/src/planner/analysis/check-extraction.js.map +1 -1
- package/dist/src/planner/analysis/coarsened-key.d.ts +109 -0
- package/dist/src/planner/analysis/coarsened-key.d.ts.map +1 -0
- package/dist/src/planner/analysis/coarsened-key.js +228 -0
- package/dist/src/planner/analysis/coarsened-key.js.map +1 -0
- package/dist/src/planner/analysis/comparison-collation.d.ts +216 -0
- package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -0
- package/dist/src/planner/analysis/comparison-collation.js +341 -0
- package/dist/src/planner/analysis/comparison-collation.js.map +1 -0
- package/dist/src/planner/analysis/constraint-extractor.d.ts +13 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +220 -21
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/analysis/coverage-prover.d.ts +321 -0
- package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -0
- package/dist/src/planner/analysis/coverage-prover.js +1038 -0
- package/dist/src/planner/analysis/coverage-prover.js.map +1 -0
- package/dist/src/planner/analysis/key-filter.d.ts +22 -0
- package/dist/src/planner/analysis/key-filter.d.ts.map +1 -0
- package/dist/src/planner/analysis/key-filter.js +105 -0
- package/dist/src/planner/analysis/key-filter.js.map +1 -0
- package/dist/src/planner/analysis/partial-unique-extraction.d.ts +36 -1
- package/dist/src/planner/analysis/partial-unique-extraction.d.ts.map +1 -1
- package/dist/src/planner/analysis/partial-unique-extraction.js +148 -22
- package/dist/src/planner/analysis/partial-unique-extraction.js.map +1 -1
- package/dist/src/planner/analysis/predicate-normalizer.d.ts.map +1 -1
- package/dist/src/planner/analysis/predicate-normalizer.js +30 -1
- package/dist/src/planner/analysis/predicate-normalizer.js.map +1 -1
- package/dist/src/planner/analysis/predicate-shape.d.ts +36 -1
- package/dist/src/planner/analysis/predicate-shape.d.ts.map +1 -1
- package/dist/src/planner/analysis/predicate-shape.js +51 -13
- package/dist/src/planner/analysis/predicate-shape.js.map +1 -1
- package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +314 -0
- package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -0
- package/dist/src/planner/analysis/query-rewrite-matcher.js +1081 -0
- package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -0
- package/dist/src/planner/analysis/scalar-invertibility.d.ts +92 -0
- package/dist/src/planner/analysis/scalar-invertibility.d.ts.map +1 -0
- package/dist/src/planner/analysis/scalar-invertibility.js +129 -0
- package/dist/src/planner/analysis/scalar-invertibility.js.map +1 -0
- package/dist/src/planner/analysis/update-lineage.d.ts +196 -0
- package/dist/src/planner/analysis/update-lineage.d.ts.map +1 -0
- package/dist/src/planner/analysis/update-lineage.js +322 -0
- package/dist/src/planner/analysis/update-lineage.js.map +1 -0
- package/dist/src/planner/analysis/view-complement.d.ts +42 -0
- package/dist/src/planner/analysis/view-complement.d.ts.map +1 -0
- package/dist/src/planner/analysis/view-complement.js +54 -0
- package/dist/src/planner/analysis/view-complement.js.map +1 -0
- package/dist/src/planner/building/alter-table.d.ts +1 -1
- package/dist/src/planner/building/alter-table.d.ts.map +1 -1
- package/dist/src/planner/building/alter-table.js +211 -2
- package/dist/src/planner/building/alter-table.js.map +1 -1
- package/dist/src/planner/building/block.d.ts.map +1 -1
- package/dist/src/planner/building/block.js +18 -1
- package/dist/src/planner/building/block.js.map +1 -1
- package/dist/src/planner/building/constraint-builder.d.ts +33 -5
- package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
- package/dist/src/planner/building/constraint-builder.js +63 -28
- package/dist/src/planner/building/constraint-builder.js.map +1 -1
- package/dist/src/planner/building/create-view.d.ts +9 -0
- package/dist/src/planner/building/create-view.d.ts.map +1 -1
- package/dist/src/planner/building/create-view.js +41 -12
- package/dist/src/planner/building/create-view.js.map +1 -1
- package/dist/src/planner/building/ddl.d.ts.map +1 -1
- package/dist/src/planner/building/ddl.js +94 -0
- package/dist/src/planner/building/ddl.js.map +1 -1
- package/dist/src/planner/building/declare-schema.d.ts +1 -0
- package/dist/src/planner/building/declare-schema.d.ts.map +1 -1
- package/dist/src/planner/building/declare-schema.js +4 -1
- package/dist/src/planner/building/declare-schema.js.map +1 -1
- package/dist/src/planner/building/default-scope.d.ts +26 -0
- package/dist/src/planner/building/default-scope.d.ts.map +1 -0
- package/dist/src/planner/building/default-scope.js +41 -0
- package/dist/src/planner/building/default-scope.js.map +1 -0
- package/dist/src/planner/building/delete.d.ts +19 -1
- package/dist/src/planner/building/delete.d.ts.map +1 -1
- package/dist/src/planner/building/delete.js +116 -34
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/dml-target.d.ts +118 -0
- package/dist/src/planner/building/dml-target.d.ts.map +1 -0
- package/dist/src/planner/building/dml-target.js +282 -0
- package/dist/src/planner/building/dml-target.js.map +1 -0
- package/dist/src/planner/building/drop-index.d.ts.map +1 -1
- package/dist/src/planner/building/drop-index.js +4 -1
- package/dist/src/planner/building/drop-index.js.map +1 -1
- package/dist/src/planner/building/drop-view.d.ts.map +1 -1
- package/dist/src/planner/building/drop-view.js +4 -2
- package/dist/src/planner/building/drop-view.js.map +1 -1
- package/dist/src/planner/building/expression.d.ts.map +1 -1
- package/dist/src/planner/building/expression.js +60 -21
- package/dist/src/planner/building/expression.js.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.d.ts +30 -0
- package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.js +160 -129
- package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
- package/dist/src/planner/building/insert.d.ts +45 -2
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +257 -88
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/lens-auxiliary-access.d.ts +22 -0
- package/dist/src/planner/building/lens-auxiliary-access.d.ts.map +1 -0
- package/dist/src/planner/building/lens-auxiliary-access.js +132 -0
- package/dist/src/planner/building/lens-auxiliary-access.js.map +1 -0
- package/dist/src/planner/building/materialized-view.d.ts +16 -0
- package/dist/src/planner/building/materialized-view.d.ts.map +1 -0
- package/dist/src/planner/building/materialized-view.js +57 -0
- package/dist/src/planner/building/materialized-view.js.map +1 -0
- package/dist/src/planner/building/returning-star.d.ts +32 -0
- package/dist/src/planner/building/returning-star.d.ts.map +1 -0
- package/dist/src/planner/building/returning-star.js +45 -0
- package/dist/src/planner/building/returning-star.js.map +1 -0
- package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.js +51 -13
- package/dist/src/planner/building/select-aggregates.js.map +1 -1
- package/dist/src/planner/building/select-compound.d.ts.map +1 -1
- package/dist/src/planner/building/select-compound.js +84 -11
- package/dist/src/planner/building/select-compound.js.map +1 -1
- package/dist/src/planner/building/select-context.d.ts +10 -2
- package/dist/src/planner/building/select-context.d.ts.map +1 -1
- package/dist/src/planner/building/select-context.js +7 -1
- package/dist/src/planner/building/select-context.js.map +1 -1
- package/dist/src/planner/building/select-modifiers.js +6 -0
- package/dist/src/planner/building/select-modifiers.js.map +1 -1
- package/dist/src/planner/building/select-ordinal.d.ts +18 -0
- package/dist/src/planner/building/select-ordinal.d.ts.map +1 -1
- package/dist/src/planner/building/select-ordinal.js +30 -0
- package/dist/src/planner/building/select-ordinal.js.map +1 -1
- package/dist/src/planner/building/select-projections.d.ts +8 -2
- package/dist/src/planner/building/select-projections.d.ts.map +1 -1
- package/dist/src/planner/building/select-projections.js +26 -4
- package/dist/src/planner/building/select-projections.js.map +1 -1
- package/dist/src/planner/building/select-window.d.ts.map +1 -1
- package/dist/src/planner/building/select-window.js +8 -5
- package/dist/src/planner/building/select-window.js.map +1 -1
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +164 -59
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/building/set-object-tags.d.ts +7 -0
- package/dist/src/planner/building/set-object-tags.d.ts.map +1 -0
- package/dist/src/planner/building/set-object-tags.js +38 -0
- package/dist/src/planner/building/set-object-tags.js.map +1 -0
- package/dist/src/planner/building/tag-diagnostics.d.ts +27 -0
- package/dist/src/planner/building/tag-diagnostics.d.ts.map +1 -0
- package/dist/src/planner/building/tag-diagnostics.js +37 -0
- package/dist/src/planner/building/tag-diagnostics.js.map +1 -0
- package/dist/src/planner/building/update.d.ts +18 -1
- package/dist/src/planner/building/update.d.ts.map +1 -1
- package/dist/src/planner/building/update.js +134 -58
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/building/view-mutation-builder.d.ts +15 -0
- package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -0
- package/dist/src/planner/building/view-mutation-builder.js +1158 -0
- package/dist/src/planner/building/view-mutation-builder.js.map +1 -0
- package/dist/src/planner/building/with.d.ts +11 -0
- package/dist/src/planner/building/with.d.ts.map +1 -1
- package/dist/src/planner/building/with.js +48 -10
- package/dist/src/planner/building/with.js.map +1 -1
- package/dist/src/planner/cost/index.d.ts +83 -0
- package/dist/src/planner/cost/index.d.ts.map +1 -1
- package/dist/src/planner/cost/index.js +114 -0
- package/dist/src/planner/cost/index.js.map +1 -1
- package/dist/src/planner/framework/characteristics.d.ts +38 -4
- package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
- package/dist/src/planner/framework/characteristics.js +50 -6
- package/dist/src/planner/framework/characteristics.js.map +1 -1
- package/dist/src/planner/framework/pass.d.ts.map +1 -1
- package/dist/src/planner/framework/pass.js +2 -1
- package/dist/src/planner/framework/pass.js.map +1 -1
- package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
- package/dist/src/planner/framework/physical-utils.js +7 -1
- package/dist/src/planner/framework/physical-utils.js.map +1 -1
- package/dist/src/planner/framework/registry.d.ts +39 -1
- package/dist/src/planner/framework/registry.d.ts.map +1 -1
- package/dist/src/planner/framework/registry.js +18 -2
- package/dist/src/planner/framework/registry.js.map +1 -1
- package/dist/src/planner/mutation/backward-body.d.ts +131 -0
- package/dist/src/planner/mutation/backward-body.d.ts.map +1 -0
- package/dist/src/planner/mutation/backward-body.js +135 -0
- package/dist/src/planner/mutation/backward-body.js.map +1 -0
- package/dist/src/planner/mutation/cte-flatten.d.ts +17 -0
- package/dist/src/planner/mutation/cte-flatten.d.ts.map +1 -0
- package/dist/src/planner/mutation/cte-flatten.js +364 -0
- package/dist/src/planner/mutation/cte-flatten.js.map +1 -0
- package/dist/src/planner/mutation/decomposition.d.ts +273 -0
- package/dist/src/planner/mutation/decomposition.d.ts.map +1 -0
- package/dist/src/planner/mutation/decomposition.js +1719 -0
- package/dist/src/planner/mutation/decomposition.js.map +1 -0
- package/dist/src/planner/mutation/lens-enforcement.d.ts +165 -0
- package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -0
- package/dist/src/planner/mutation/lens-enforcement.js +745 -0
- package/dist/src/planner/mutation/lens-enforcement.js.map +1 -0
- package/dist/src/planner/mutation/multi-source.d.ts +568 -0
- package/dist/src/planner/mutation/multi-source.d.ts.map +1 -0
- package/dist/src/planner/mutation/multi-source.js +2915 -0
- package/dist/src/planner/mutation/multi-source.js.map +1 -0
- package/dist/src/planner/mutation/mutation-diagnostic.d.ts +37 -0
- package/dist/src/planner/mutation/mutation-diagnostic.d.ts.map +1 -0
- package/dist/src/planner/mutation/mutation-diagnostic.js +24 -0
- package/dist/src/planner/mutation/mutation-diagnostic.js.map +1 -0
- package/dist/src/planner/mutation/mutation-tags.d.ts +33 -0
- package/dist/src/planner/mutation/mutation-tags.d.ts.map +1 -0
- package/dist/src/planner/mutation/mutation-tags.js +31 -0
- package/dist/src/planner/mutation/mutation-tags.js.map +1 -0
- package/dist/src/planner/mutation/propagate.d.ts +97 -0
- package/dist/src/planner/mutation/propagate.d.ts.map +1 -0
- package/dist/src/planner/mutation/propagate.js +220 -0
- package/dist/src/planner/mutation/propagate.js.map +1 -0
- package/dist/src/planner/mutation/scope-transform.d.ts +181 -0
- package/dist/src/planner/mutation/scope-transform.d.ts.map +1 -0
- package/dist/src/planner/mutation/scope-transform.js +574 -0
- package/dist/src/planner/mutation/scope-transform.js.map +1 -0
- package/dist/src/planner/mutation/set-op.d.ts +242 -0
- package/dist/src/planner/mutation/set-op.d.ts.map +1 -0
- package/dist/src/planner/mutation/set-op.js +1687 -0
- package/dist/src/planner/mutation/set-op.js.map +1 -0
- package/dist/src/planner/mutation/single-source.d.ts +261 -0
- package/dist/src/planner/mutation/single-source.d.ts.map +1 -0
- package/dist/src/planner/mutation/single-source.js +1096 -0
- package/dist/src/planner/mutation/single-source.js.map +1 -0
- package/dist/src/planner/nodes/aggregate-node.d.ts +6 -4
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.js +11 -9
- package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
- package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/alias-node.js +5 -1
- package/dist/src/planner/nodes/alias-node.js.map +1 -1
- package/dist/src/planner/nodes/alter-table-node.d.ts +124 -1
- package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/alter-table-node.js +27 -0
- package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
- package/dist/src/planner/nodes/analyze-node.d.ts +2 -1
- package/dist/src/planner/nodes/analyze-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/analyze-node.js +21 -1
- package/dist/src/planner/nodes/analyze-node.js.map +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.d.ts +43 -0
- package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/asserted-keys-node.js +99 -0
- package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -0
- package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/async-gather-node.js +33 -8
- package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
- package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/bloom-join-node.js +2 -1
- package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
- package/dist/src/planner/nodes/create-view-node.d.ts +7 -2
- package/dist/src/planner/nodes/create-view-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/create-view-node.js +4 -1
- package/dist/src/planner/nodes/create-view-node.js.map +1 -1
- package/dist/src/planner/nodes/declarative-schema.d.ts +13 -1
- package/dist/src/planner/nodes/declarative-schema.d.ts.map +1 -1
- package/dist/src/planner/nodes/declarative-schema.js +32 -0
- package/dist/src/planner/nodes/declarative-schema.js.map +1 -1
- package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/distinct-node.js +2 -0
- package/dist/src/planner/nodes/distinct-node.js.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts +29 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.js +27 -3
- package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
- package/dist/src/planner/nodes/eager-prefetch-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/eager-prefetch-node.js +2 -0
- package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -1
- package/dist/src/planner/nodes/envelope-scan-node.d.ts +42 -0
- package/dist/src/planner/nodes/envelope-scan-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/envelope-scan-node.js +62 -0
- package/dist/src/planner/nodes/envelope-scan-node.js.map +1 -0
- package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/fanout-lookup-join-node.js +11 -1
- package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
- package/dist/src/planner/nodes/filter.d.ts.map +1 -1
- package/dist/src/planner/nodes/filter.js +63 -13
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.js +6 -16
- package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/join-node.d.ts +41 -1
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +78 -8
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/join-utils.d.ts +33 -6
- package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-utils.js +131 -10
- package/dist/src/planner/nodes/join-utils.js.map +1 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts +104 -0
- package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/lens-auxiliary-access-node.js +91 -0
- package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -0
- package/dist/src/planner/nodes/limit-offset.d.ts +12 -0
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
- package/dist/src/planner/nodes/limit-offset.js +52 -3
- package/dist/src/planner/nodes/limit-offset.js.map +1 -1
- package/dist/src/planner/nodes/materialized-view-nodes.d.ts +69 -0
- package/dist/src/planner/nodes/materialized-view-nodes.d.ts.map +1 -0
- package/dist/src/planner/nodes/materialized-view-nodes.js +111 -0
- package/dist/src/planner/nodes/materialized-view-nodes.js.map +1 -0
- package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.js +2 -1
- package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.js +2 -0
- package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.d.ts +9 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.js +9 -0
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +265 -5
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node.js.map +1 -1
- package/dist/src/planner/nodes/pragma.d.ts +2 -1
- package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
- package/dist/src/planner/nodes/pragma.js +12 -0
- package/dist/src/planner/nodes/pragma.js.map +1 -1
- package/dist/src/planner/nodes/project-node.d.ts +14 -1
- package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/project-node.js +103 -16
- package/dist/src/planner/nodes/project-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +63 -30
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.js +7 -0
- package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
- package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/returning-node.js +10 -3
- package/dist/src/planner/nodes/returning-node.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts +20 -0
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +71 -14
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/planner/nodes/set-object-tags-node.d.ts +39 -0
- package/dist/src/planner/nodes/set-object-tags-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/set-object-tags-node.js +41 -0
- package/dist/src/planner/nodes/set-object-tags-node.js.map +1 -0
- package/dist/src/planner/nodes/set-operation-node.d.ts +123 -1
- package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.js +302 -18
- package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
- package/dist/src/planner/nodes/single-row.d.ts.map +1 -1
- package/dist/src/planner/nodes/single-row.js +3 -0
- package/dist/src/planner/nodes/single-row.js.map +1 -1
- package/dist/src/planner/nodes/sort.d.ts.map +1 -1
- package/dist/src/planner/nodes/sort.js +8 -7
- package/dist/src/planner/nodes/sort.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +8 -23
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/subquery.d.ts +2 -0
- package/dist/src/planner/nodes/subquery.d.ts.map +1 -1
- package/dist/src/planner/nodes/subquery.js +18 -2
- package/dist/src/planner/nodes/subquery.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +23 -3
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/table-function-call.js +6 -0
- package/dist/src/planner/nodes/table-function-call.js.map +1 -1
- package/dist/src/planner/nodes/values-node.d.ts +3 -1
- package/dist/src/planner/nodes/values-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/values-node.js +26 -0
- package/dist/src/planner/nodes/values-node.js.map +1 -1
- package/dist/src/planner/nodes/view-mutation-node.d.ts +259 -0
- package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/view-mutation-node.js +273 -0
- package/dist/src/planner/nodes/view-mutation-node.js.map +1 -0
- package/dist/src/planner/nodes/window-function.d.ts +17 -1
- package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-function.js +15 -1
- package/dist/src/planner/nodes/window-function.js.map +1 -1
- package/dist/src/planner/nodes/window-node.js +3 -3
- package/dist/src/planner/nodes/window-node.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +372 -39
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/planning-context.d.ts +1 -1
- package/dist/src/planner/planning-context.d.ts.map +1 -1
- package/dist/src/planner/rules/access/lens-access-form-matcher.d.ts +70 -0
- package/dist/src/planner/rules/access/lens-access-form-matcher.d.ts.map +1 -0
- package/dist/src/planner/rules/access/lens-access-form-matcher.js +156 -0
- package/dist/src/planner/rules/access/lens-access-form-matcher.js.map +1 -0
- package/dist/src/planner/rules/access/rule-lens-auxiliary-access.d.ts +31 -0
- package/dist/src/planner/rules/access/rule-lens-auxiliary-access.d.ts.map +1 -0
- package/dist/src/planner/rules/access/rule-lens-auxiliary-access.js +176 -0
- package/dist/src/planner/rules/access/rule-lens-auxiliary-access.js.map +1 -0
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.js +435 -37
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +8 -27
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts +9 -3
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js +56 -5
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts +39 -0
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts.map +1 -0
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +616 -0
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -0
- package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-scalar-cse.js +8 -1
- package/dist/src/planner/rules/cache/rule-scalar-cse.js.map +1 -1
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts +8 -7
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts.map +1 -1
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.js +14 -21
- package/dist/src/planner/rules/distinct/rule-distinct-elimination.js.map +1 -1
- package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +36 -0
- package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -1
- package/dist/src/planner/rules/join/equi-pair-extractor.js +42 -5
- package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -1
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +10 -0
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.js.map +1 -1
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +25 -9
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
- package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.d.ts +130 -0
- package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.js +206 -0
- package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.js.map +1 -0
- package/dist/src/planner/rules/join/rule-join-elimination.d.ts +67 -14
- package/dist/src/planner/rules/join/rule-join-elimination.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-elimination.js +81 -25
- package/dist/src/planner/rules/join/rule-join-elimination.js.map +1 -1
- package/dist/src/planner/rules/join/rule-join-existence-pruning.d.ts +84 -0
- package/dist/src/planner/rules/join/rule-join-existence-pruning.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-join-existence-pruning.js +138 -0
- package/dist/src/planner/rules/join/rule-join-existence-pruning.js.map +1 -0
- package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-greedy-commute.js +19 -1
- package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +1 -1
- package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-physical-selection.js +14 -2
- package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
- package/dist/src/planner/rules/join/rule-lateral-top1-asof.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-lateral-top1-asof.js +5 -2
- package/dist/src/planner/rules/join/rule-lateral-top1-asof.js.map +1 -1
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +4 -0
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.js +10 -0
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +1 -1
- package/dist/src/planner/rules/join/rule-semijoin-existence-recovery.d.ts +286 -0
- package/dist/src/planner/rules/join/rule-semijoin-existence-recovery.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-semijoin-existence-recovery.js +548 -0
- package/dist/src/planner/rules/join/rule-semijoin-existence-recovery.js.map +1 -0
- package/dist/src/planner/rules/parallel/rule-async-gather-union-all.d.ts.map +1 -1
- package/dist/src/planner/rules/parallel/rule-async-gather-union-all.js +9 -1
- package/dist/src/planner/rules/parallel/rule-async-gather-union-all.js.map +1 -1
- package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.d.ts.map +1 -1
- package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js +7 -0
- package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js.map +1 -1
- package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.d.ts.map +1 -1
- package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.js +10 -1
- package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js +10 -1
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +18 -0
- package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.js +7 -0
- package/dist/src/planner/rules/predicate/rule-filter-contradiction.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +9 -0
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +13 -3
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +2 -2
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-projection-pruning.d.ts.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-projection-pruning.js +14 -0
- package/dist/src/planner/rules/retrieve/rule-projection-pruning.js.map +1 -1
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts +16 -0
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts.map +1 -1
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js +47 -4
- package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js.map +1 -1
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -1
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +8 -0
- package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -1
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -1
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +7 -0
- package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -1
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +12 -0
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
- package/dist/src/planner/rules/window/rule-monotonic-window.js +1 -1
- package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
- package/dist/src/planner/type-utils.d.ts +14 -0
- package/dist/src/planner/type-utils.d.ts.map +1 -1
- package/dist/src/planner/type-utils.js +66 -21
- package/dist/src/planner/type-utils.js.map +1 -1
- package/dist/src/planner/util/fd-utils.d.ts +228 -36
- package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
- package/dist/src/planner/util/fd-utils.js +501 -84
- package/dist/src/planner/util/fd-utils.js.map +1 -1
- package/dist/src/planner/util/ind-utils.d.ts +27 -1
- package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
- package/dist/src/planner/util/ind-utils.js +80 -6
- package/dist/src/planner/util/ind-utils.js.map +1 -1
- package/dist/src/planner/util/key-utils.d.ts +26 -3
- package/dist/src/planner/util/key-utils.d.ts.map +1 -1
- package/dist/src/planner/util/key-utils.js +182 -33
- package/dist/src/planner/util/key-utils.js.map +1 -1
- package/dist/src/planner/util/set-op-wrapper.d.ts +37 -0
- package/dist/src/planner/util/set-op-wrapper.d.ts.map +1 -0
- package/dist/src/planner/util/set-op-wrapper.js +82 -0
- package/dist/src/planner/util/set-op-wrapper.js.map +1 -0
- package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
- package/dist/src/planner/validation/plan-validator.js +1 -0
- package/dist/src/planner/validation/plan-validator.js.map +1 -1
- package/dist/src/runtime/context-helpers.d.ts +13 -1
- package/dist/src/runtime/context-helpers.d.ts.map +1 -1
- package/dist/src/runtime/context-helpers.js +7 -1
- package/dist/src/runtime/context-helpers.js.map +1 -1
- package/dist/src/runtime/delta-executor.d.ts +30 -1
- package/dist/src/runtime/delta-executor.d.ts.map +1 -1
- package/dist/src/runtime/delta-executor.js +38 -4
- package/dist/src/runtime/delta-executor.js.map +1 -1
- package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
- package/dist/src/runtime/emit/add-constraint.js +38 -5
- package/dist/src/runtime/emit/add-constraint.js.map +1 -1
- package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate.js +10 -8
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/alter-table.d.ts +1 -1
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +664 -108
- package/dist/src/runtime/emit/alter-table.js.map +1 -1
- package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
- package/dist/src/runtime/emit/analyze.js +2 -1
- package/dist/src/runtime/emit/analyze.js.map +1 -1
- package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/asof-scan.js +24 -9
- package/dist/src/runtime/emit/asof-scan.js.map +1 -1
- package/dist/src/runtime/emit/asserted-keys.d.ts +13 -0
- package/dist/src/runtime/emit/asserted-keys.d.ts.map +1 -0
- package/dist/src/runtime/emit/asserted-keys.js +13 -0
- package/dist/src/runtime/emit/asserted-keys.js.map +1 -0
- package/dist/src/runtime/emit/between.d.ts.map +1 -1
- package/dist/src/runtime/emit/between.js +24 -19
- package/dist/src/runtime/emit/between.js.map +1 -1
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +24 -36
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/block.d.ts.map +1 -1
- package/dist/src/runtime/emit/block.js +11 -2
- package/dist/src/runtime/emit/block.js.map +1 -1
- package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/bloom-join.js +12 -4
- package/dist/src/runtime/emit/bloom-join.js.map +1 -1
- package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
- package/dist/src/runtime/emit/constraint-check.js +50 -1
- package/dist/src/runtime/emit/constraint-check.js.map +1 -1
- package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-table.js +8 -0
- package/dist/src/runtime/emit/create-table.js.map +1 -1
- package/dist/src/runtime/emit/create-view.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-view.js +16 -1
- package/dist/src/runtime/emit/create-view.js.map +1 -1
- package/dist/src/runtime/emit/delete.d.ts.map +1 -1
- package/dist/src/runtime/emit/delete.js +15 -5
- package/dist/src/runtime/emit/delete.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts +27 -0
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +413 -193
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-table.js +10 -0
- package/dist/src/runtime/emit/drop-table.js.map +1 -1
- package/dist/src/runtime/emit/drop-view.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-view.js +17 -0
- package/dist/src/runtime/emit/drop-view.js.map +1 -1
- package/dist/src/runtime/emit/envelope-scan.d.ts +13 -0
- package/dist/src/runtime/emit/envelope-scan.d.ts.map +1 -0
- package/dist/src/runtime/emit/envelope-scan.js +22 -0
- package/dist/src/runtime/emit/envelope-scan.js.map +1 -0
- package/dist/src/runtime/emit/join.d.ts +10 -2
- package/dist/src/runtime/emit/join.d.ts.map +1 -1
- package/dist/src/runtime/emit/join.js +128 -38
- package/dist/src/runtime/emit/join.js.map +1 -1
- package/dist/src/runtime/emit/lens-auxiliary-access.d.ts +16 -0
- package/dist/src/runtime/emit/lens-auxiliary-access.d.ts.map +1 -0
- package/dist/src/runtime/emit/lens-auxiliary-access.js +16 -0
- package/dist/src/runtime/emit/lens-auxiliary-access.js.map +1 -0
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts +640 -0
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -0
- package/dist/src/runtime/emit/materialized-view-helpers.js +2576 -0
- package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -0
- package/dist/src/runtime/emit/materialized-view.d.ts +31 -0
- package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -0
- package/dist/src/runtime/emit/materialized-view.js +187 -0
- package/dist/src/runtime/emit/materialized-view.js.map +1 -0
- package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/merge-join.js +19 -5
- package/dist/src/runtime/emit/merge-join.js.map +1 -1
- package/dist/src/runtime/emit/project.d.ts.map +1 -1
- package/dist/src/runtime/emit/project.js +10 -5
- package/dist/src/runtime/emit/project.js.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.d.ts +1 -0
- package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.js +101 -5
- package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
- package/dist/src/runtime/emit/set-object-tags.d.ts +16 -0
- package/dist/src/runtime/emit/set-object-tags.d.ts.map +1 -0
- package/dist/src/runtime/emit/set-object-tags.js +57 -0
- package/dist/src/runtime/emit/set-object-tags.js.map +1 -0
- package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
- package/dist/src/runtime/emit/set-operation.js +140 -24
- package/dist/src/runtime/emit/set-operation.js.map +1 -1
- package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
- package/dist/src/runtime/emit/subquery.js +110 -5
- package/dist/src/runtime/emit/subquery.js.map +1 -1
- package/dist/src/runtime/emit/unary.d.ts.map +1 -1
- package/dist/src/runtime/emit/unary.js +34 -6
- package/dist/src/runtime/emit/unary.js.map +1 -1
- package/dist/src/runtime/emit/view-mutation.d.ts +70 -0
- package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -0
- package/dist/src/runtime/emit/view-mutation.js +299 -0
- package/dist/src/runtime/emit/view-mutation.js.map +1 -0
- package/dist/src/runtime/emit/window.js +29 -5
- package/dist/src/runtime/emit/window.js.map +1 -1
- package/dist/src/runtime/foreign-key-actions.d.ts +66 -3
- package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
- package/dist/src/runtime/foreign-key-actions.js +580 -172
- package/dist/src/runtime/foreign-key-actions.js.map +1 -1
- package/dist/src/runtime/parallel-driver.d.ts +4 -1
- package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
- package/dist/src/runtime/parallel-driver.js +5 -1
- package/dist/src/runtime/parallel-driver.js.map +1 -1
- package/dist/src/runtime/register.d.ts.map +1 -1
- package/dist/src/runtime/register.js +17 -1
- package/dist/src/runtime/register.js.map +1 -1
- package/dist/src/runtime/types.d.ts +10 -0
- package/dist/src/runtime/types.d.ts.map +1 -1
- package/dist/src/runtime/types.js.map +1 -1
- package/dist/src/schema/basis-backfill.d.ts +63 -0
- package/dist/src/schema/basis-backfill.d.ts.map +1 -0
- package/dist/src/schema/basis-backfill.js +161 -0
- package/dist/src/schema/basis-backfill.js.map +1 -0
- package/dist/src/schema/catalog.d.ts +115 -1
- package/dist/src/schema/catalog.d.ts.map +1 -1
- package/dist/src/schema/catalog.js +249 -22
- package/dist/src/schema/catalog.js.map +1 -1
- package/dist/src/schema/change-events.d.ts +42 -1
- package/dist/src/schema/change-events.d.ts.map +1 -1
- package/dist/src/schema/change-events.js.map +1 -1
- package/dist/src/schema/column.d.ts +16 -0
- package/dist/src/schema/column.d.ts.map +1 -1
- package/dist/src/schema/column.js.map +1 -1
- package/dist/src/schema/constraint-builder.d.ts +182 -0
- package/dist/src/schema/constraint-builder.d.ts.map +1 -0
- package/dist/src/schema/constraint-builder.js +424 -0
- package/dist/src/schema/constraint-builder.js.map +1 -0
- package/dist/src/schema/ddl-generator.d.ts +86 -1
- package/dist/src/schema/ddl-generator.d.ts.map +1 -1
- package/dist/src/schema/ddl-generator.js +316 -20
- package/dist/src/schema/ddl-generator.js.map +1 -1
- package/dist/src/schema/declared-schema-manager.d.ts +51 -0
- package/dist/src/schema/declared-schema-manager.d.ts.map +1 -1
- package/dist/src/schema/declared-schema-manager.js +61 -0
- package/dist/src/schema/declared-schema-manager.js.map +1 -1
- package/dist/src/schema/derivation.d.ts +106 -0
- package/dist/src/schema/derivation.d.ts.map +1 -0
- package/dist/src/schema/derivation.js +25 -0
- package/dist/src/schema/derivation.js.map +1 -0
- package/dist/src/schema/function.d.ts +13 -0
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/lens-ack.d.ts +90 -0
- package/dist/src/schema/lens-ack.d.ts.map +1 -0
- package/dist/src/schema/lens-ack.js +361 -0
- package/dist/src/schema/lens-ack.js.map +1 -0
- package/dist/src/schema/lens-compiler.d.ts +62 -0
- package/dist/src/schema/lens-compiler.d.ts.map +1 -0
- package/dist/src/schema/lens-compiler.js +1594 -0
- package/dist/src/schema/lens-compiler.js.map +1 -0
- package/dist/src/schema/lens-fk-discovery.d.ts +175 -0
- package/dist/src/schema/lens-fk-discovery.d.ts.map +1 -0
- package/dist/src/schema/lens-fk-discovery.js +336 -0
- package/dist/src/schema/lens-fk-discovery.js.map +1 -0
- package/dist/src/schema/lens-prover.d.ts +336 -0
- package/dist/src/schema/lens-prover.d.ts.map +1 -0
- package/dist/src/schema/lens-prover.js +1988 -0
- package/dist/src/schema/lens-prover.js.map +1 -0
- package/dist/src/schema/lens.d.ts +254 -0
- package/dist/src/schema/lens.d.ts.map +1 -0
- package/dist/src/schema/lens.js +21 -0
- package/dist/src/schema/lens.js.map +1 -0
- package/dist/src/schema/manager.d.ts +676 -18
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +1573 -238
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/mapping-advertisement-tags.d.ts +39 -0
- package/dist/src/schema/mapping-advertisement-tags.d.ts.map +1 -0
- package/dist/src/schema/mapping-advertisement-tags.js +216 -0
- package/dist/src/schema/mapping-advertisement-tags.js.map +1 -0
- package/dist/src/schema/rename-rewriter.d.ts +45 -4
- package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
- package/dist/src/schema/rename-rewriter.js +412 -19
- package/dist/src/schema/rename-rewriter.js.map +1 -1
- package/dist/src/schema/reserved-tags-policy.d.ts +32 -0
- package/dist/src/schema/reserved-tags-policy.d.ts.map +1 -0
- package/dist/src/schema/reserved-tags-policy.js +34 -0
- package/dist/src/schema/reserved-tags-policy.js.map +1 -0
- package/dist/src/schema/reserved-tags.d.ts +170 -0
- package/dist/src/schema/reserved-tags.d.ts.map +1 -0
- package/dist/src/schema/reserved-tags.js +507 -0
- package/dist/src/schema/reserved-tags.js.map +1 -0
- package/dist/src/schema/schema-differ.d.ts +158 -2
- package/dist/src/schema/schema-differ.d.ts.map +1 -1
- package/dist/src/schema/schema-differ.js +1460 -78
- package/dist/src/schema/schema-differ.js.map +1 -1
- package/dist/src/schema/schema-hasher.d.ts +8 -3
- package/dist/src/schema/schema-hasher.d.ts.map +1 -1
- package/dist/src/schema/schema-hasher.js +22 -2
- package/dist/src/schema/schema-hasher.js.map +1 -1
- package/dist/src/schema/schema.d.ts +25 -1
- package/dist/src/schema/schema.d.ts.map +1 -1
- package/dist/src/schema/schema.js +36 -2
- package/dist/src/schema/schema.js.map +1 -1
- package/dist/src/schema/table.d.ts +259 -10
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +309 -26
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/schema/unique-enforcement.d.ts +78 -0
- package/dist/src/schema/unique-enforcement.d.ts.map +1 -0
- package/dist/src/schema/unique-enforcement.js +93 -0
- package/dist/src/schema/unique-enforcement.js.map +1 -0
- package/dist/src/schema/view.d.ts +83 -2
- package/dist/src/schema/view.d.ts.map +1 -1
- package/dist/src/schema/view.js +67 -1
- package/dist/src/schema/view.js.map +1 -1
- package/dist/src/schema/window-function.d.ts +9 -1
- package/dist/src/schema/window-function.d.ts.map +1 -1
- package/dist/src/schema/window-function.js.map +1 -1
- package/dist/src/types/temporal-types.d.ts.map +1 -1
- package/dist/src/types/temporal-types.js +71 -36
- package/dist/src/types/temporal-types.js.map +1 -1
- package/dist/src/util/comparison.d.ts +24 -0
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +34 -0
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/util/mutation-statement.d.ts.map +1 -1
- package/dist/src/util/mutation-statement.js +4 -1
- package/dist/src/util/mutation-statement.js.map +1 -1
- package/dist/src/util/serialization.d.ts +9 -0
- package/dist/src/util/serialization.d.ts.map +1 -1
- package/dist/src/util/serialization.js +26 -0
- package/dist/src/util/serialization.js.map +1 -1
- package/dist/src/vtab/backing-host.d.ts +286 -0
- package/dist/src/vtab/backing-host.d.ts.map +1 -0
- package/dist/src/vtab/backing-host.js +118 -0
- package/dist/src/vtab/backing-host.js.map +1 -0
- package/dist/src/vtab/best-access-plan.d.ts +21 -0
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
- package/dist/src/vtab/best-access-plan.js.map +1 -1
- package/dist/src/vtab/capabilities.d.ts +5 -5
- package/dist/src/vtab/capabilities.d.ts.map +1 -1
- package/dist/src/vtab/mapping-advertisement.d.ts +163 -0
- package/dist/src/vtab/mapping-advertisement.d.ts.map +1 -0
- package/dist/src/vtab/mapping-advertisement.js +2 -0
- package/dist/src/vtab/mapping-advertisement.js.map +1 -0
- package/dist/src/vtab/memory/index.d.ts +64 -4
- package/dist/src/vtab/memory/index.d.ts.map +1 -1
- package/dist/src/vtab/memory/index.js +119 -12
- package/dist/src/vtab/memory/index.js.map +1 -1
- package/dist/src/vtab/memory/layer/base.d.ts +38 -1
- package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base.js +112 -24
- package/dist/src/vtab/memory/layer/base.js.map +1 -1
- package/dist/src/vtab/memory/layer/manager.d.ts +291 -4
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +1050 -91
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/plan-filter.js +35 -6
- package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
- package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/scan-layer.js +66 -14
- package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
- package/dist/src/vtab/memory/layer/scan-plan.d.ts +14 -0
- package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/scan-plan.js +27 -4
- package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.js +5 -1
- package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts +17 -0
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +82 -3
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/dist/src/vtab/memory/table.d.ts.map +1 -1
- package/dist/src/vtab/memory/table.js +15 -5
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/memory/types.d.ts +20 -2
- package/dist/src/vtab/memory/types.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/predicate.js +46 -24
- package/dist/src/vtab/memory/utils/predicate.js.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key-encode.d.ts +31 -0
- package/dist/src/vtab/memory/utils/primary-key-encode.d.ts.map +1 -0
- package/dist/src/vtab/memory/utils/primary-key-encode.js +101 -0
- package/dist/src/vtab/memory/utils/primary-key-encode.js.map +1 -0
- package/dist/src/vtab/memory/utils/primary-key.d.ts +8 -0
- package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key.js +12 -5
- package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
- package/dist/src/vtab/module.d.ts +203 -4
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/dist/src/vtab/table.d.ts +9 -0
- package/dist/src/vtab/table.d.ts.map +1 -1
- package/dist/src/vtab/table.js.map +1 -1
- package/package.json +6 -5
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { raiseMutationDiagnostic } from '../mutation/mutation-diagnostic.js';
|
|
2
|
+
import { flattenCteBody } from '../mutation/cte-flatten.js';
|
|
3
|
+
import { isRecursiveCte } from './with.js';
|
|
4
|
+
/**
|
|
5
|
+
* Resolve a DML target identifier against the statement's own leading WITH clause,
|
|
6
|
+
* returning an ephemeral {@link MutableViewLike} over the named CTE's body — the
|
|
7
|
+
* adapter the view-mutation substrate routes through exactly as for a named view —
|
|
8
|
+
* or `undefined` when the target is not a CTE (a schema table / view / MV, whose
|
|
9
|
+
* dispatch is unchanged).
|
|
10
|
+
*
|
|
11
|
+
* A CTE name **shadows** a same-named schema table / view / MV as a write target,
|
|
12
|
+
* matching read semantics (a CTE shadows a base table in FROM). So the three DML
|
|
13
|
+
* builders call this *ahead* of their `getView` / `getMaintainedTable` /
|
|
14
|
+
* `buildTableReference` dispatch; a match short-circuits to the ephemeral substrate.
|
|
15
|
+
*
|
|
16
|
+
* Behavior:
|
|
17
|
+
* - No leading WITH, or a schema-qualified target (`main.t` — a CTE is never
|
|
18
|
+
* schema-qualified) → `undefined` (ordinary schema dispatch).
|
|
19
|
+
* - Name miss against `withClause.ctes` → `undefined`.
|
|
20
|
+
* - A genuinely-recursive (self-referential) target → the structured `recursive-cte`
|
|
21
|
+
* diagnostic (never a generic table-not-found miss). Gated on the actual recursive
|
|
22
|
+
* shape ({@link isRecursiveCte}), so a `with recursive` clause whose *target* member
|
|
23
|
+
* is a plain non-self-referential body is still writable.
|
|
24
|
+
* - Otherwise → an ephemeral view-like over the CTE body.
|
|
25
|
+
*
|
|
26
|
+
* The CTE body itself is re-planned by the substrate against its own base table(s);
|
|
27
|
+
* the caller threads the statement's CTEs into the planning context so any
|
|
28
|
+
* sibling-CTE read in the user `where` / `set` / source resolves.
|
|
29
|
+
*
|
|
30
|
+
* **Multi-level body.** When the body is a single-source projection-and-filter that reads
|
|
31
|
+
* ANOTHER (prior) sibling CTE, {@link flattenCteBody} collapses the linear chain down to a
|
|
32
|
+
* flat body over the terminal base table, so the substrate sees a genuine single base-table
|
|
33
|
+
* body (byte-equivalent to collapsing the chain into one CTE). The target's OWN name is passed
|
|
34
|
+
* as the shadow-out name so the load-bearing `with base as (… from base) …` case stays
|
|
35
|
+
* terminal; a non-updateable intermediate in the chain rejects with its own body-shape reason.
|
|
36
|
+
* When nothing inlines, `flattenCteBody` returns `cte.query`'s identity unchanged.
|
|
37
|
+
*/
|
|
38
|
+
export function resolveCteTarget(ctx, table, withClause) {
|
|
39
|
+
// No leading WITH, or a schema-qualified name (a bare CTE reference can never be
|
|
40
|
+
// schema-qualified): not a CTE target — leave it to the schema lookups.
|
|
41
|
+
if (!withClause || table.schema)
|
|
42
|
+
return undefined;
|
|
43
|
+
const cte = withClause.ctes.find(c => c.name.toLowerCase() === table.name.toLowerCase());
|
|
44
|
+
if (!cte)
|
|
45
|
+
return undefined;
|
|
46
|
+
// A recursive (self-referential) CTE has no recoverable single base operation —
|
|
47
|
+
// reject with the structured reason rather than the generic table-not-found miss
|
|
48
|
+
// the schema dispatch would otherwise raise downstream.
|
|
49
|
+
if (isRecursiveCte(withClause.recursive, cte)) {
|
|
50
|
+
raiseMutationDiagnostic({
|
|
51
|
+
reason: 'recursive-cte',
|
|
52
|
+
table: cte.name,
|
|
53
|
+
message: `cannot write through common table expression '${cte.name}': a recursive CTE has no recoverable base operation`,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
name: cte.name,
|
|
58
|
+
// Cosmetic for an ephemeral target: only lens / dependency lookups read it,
|
|
59
|
+
// and both are suppressed (ephemeral) or return undefined (no schema object).
|
|
60
|
+
// The current schema name keeps any leaked diagnostic readable.
|
|
61
|
+
schemaName: ctx.schemaManager.getCurrentSchemaName(),
|
|
62
|
+
// Flatten a single-source multi-level chain (`with a …, t as (select * from a) …`) down
|
|
63
|
+
// to a flat body over the terminal base table; the target's own name shadows out so its
|
|
64
|
+
// own same-named FROM source stays the real table. A non-chain body is returned unchanged.
|
|
65
|
+
selectAst: flattenCteBody(ctx, cte.query, ctesBefore(withClause, cte), cte.name),
|
|
66
|
+
columns: cte.columns,
|
|
67
|
+
ephemeral: true,
|
|
68
|
+
// Marks this as a CTE-name target (vs an inline subquery), gating the
|
|
69
|
+
// user-predicate self-read eager-capture path in the view-mutation builder.
|
|
70
|
+
cteTarget: true,
|
|
71
|
+
noun: 'common table expression',
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Build an ephemeral {@link MutableViewLike} from an inline parenthesized subquery DML
|
|
76
|
+
* target (`update (select …) as v set …` / `delete from (select …) as v where …`), or
|
|
77
|
+
* `undefined` when the statement carries no `targetSource` (an ordinary named / CTE
|
|
78
|
+
* target — unchanged dispatch). This is the inline-subquery dual of
|
|
79
|
+
* {@link resolveCteTarget}: per docs/view-updateability.md, a subquery in `from` is
|
|
80
|
+
* structurally an inlined CTE, so the body routes through the SAME view-mutation
|
|
81
|
+
* substrate via the same ephemeral adapter.
|
|
82
|
+
*
|
|
83
|
+
* - `name` is the user's alias `v` — the substrate resolves the user `where`/`set`
|
|
84
|
+
* column refs (`v.col` and the bare form) against it, exactly as for a named view's
|
|
85
|
+
* own name.
|
|
86
|
+
* - `selectAst` is the parenthesized body, re-planned against its own base table(s).
|
|
87
|
+
* - `columns` carries the optional `as v(a,b)` rename list (the renamed names are what
|
|
88
|
+
* `where`/`set` reference; the body's own projection names are hidden).
|
|
89
|
+
*
|
|
90
|
+
* A **DML-bodied** inline target (`update (insert … returning …) as v …`) is rejected
|
|
91
|
+
* up front: {@link import('../../parser/parser.js')}'s `subquerySource` admits a
|
|
92
|
+
* RETURNING DML body in a FROM position, but it is not a meaningful *write* target — the
|
|
93
|
+
* body must be a SELECT/VALUES-shaped relation with recoverable base lineage. (A
|
|
94
|
+
* VALUES/`select`-with-no-base body still rejects downstream in `analyzeView`; this
|
|
95
|
+
* guard adds a target-named fast-fail for the DML case.)
|
|
96
|
+
*
|
|
97
|
+
* The caller threads the statement's CTEs into the planning context so a sibling-CTE
|
|
98
|
+
* read in the body / user `where` / `set` resolves. Unlike the CTE-name target, an
|
|
99
|
+
* inline subquery has no own-name to shadow out of its body, so no `cteNodes` deletion
|
|
100
|
+
* is needed.
|
|
101
|
+
*/
|
|
102
|
+
export function resolveSubqueryTarget(ctx, stmt) {
|
|
103
|
+
const source = stmt.targetSource;
|
|
104
|
+
if (!source)
|
|
105
|
+
return undefined;
|
|
106
|
+
const body = source.subquery;
|
|
107
|
+
if (body.type === 'insert' || body.type === 'update' || body.type === 'delete') {
|
|
108
|
+
raiseMutationDiagnostic({
|
|
109
|
+
reason: 'no-base-lineage',
|
|
110
|
+
table: source.alias,
|
|
111
|
+
message: `cannot write through inline subquery target '${source.alias}': a ${body.type.toUpperCase()} body has no recoverable base operation — the write target must be a SELECT-shaped relation`,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
name: source.alias,
|
|
116
|
+
// Cosmetic for an ephemeral target (see resolveCteTarget): only lens / dependency
|
|
117
|
+
// lookups read it, and both are suppressed (ephemeral) or return undefined.
|
|
118
|
+
schemaName: ctx.schemaManager.getCurrentSchemaName(),
|
|
119
|
+
// Flatten a single-source multi-level chain (`with t as (…) update (select … from t) …`)
|
|
120
|
+
// down to the terminal base table. An inline subquery sees ALL the statement's CTEs (it
|
|
121
|
+
// sits after the WITH clause) and has no own-name to shadow out. Non-chain bodies are
|
|
122
|
+
// returned unchanged.
|
|
123
|
+
selectAst: flattenCteBody(ctx, body, stmt.withClause?.ctes ?? [], undefined),
|
|
124
|
+
columns: source.columns,
|
|
125
|
+
ephemeral: true,
|
|
126
|
+
noun: 'derived table',
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/** The CTEs of `withClause` defined strictly before `cte` — its in-scope prior siblings (the
|
|
130
|
+
* visibility prefix a CTE-name target's body may inline against). */
|
|
131
|
+
function ctesBefore(withClause, cte) {
|
|
132
|
+
const idx = withClause.ctes.indexOf(cte);
|
|
133
|
+
return idx <= 0 ? [] : withClause.ctes.slice(0, idx);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* The planning context the view-mutation substrate uses for a CTE-name target: the
|
|
137
|
+
* statement's CTE-threaded context narrowed to the target's **prior-sibling prefix** —
|
|
138
|
+
* the target's OWN name **and every sibling defined at or after it** are removed from
|
|
139
|
+
* `cteNodes`.
|
|
140
|
+
*
|
|
141
|
+
* `buildFrom` resolves a FROM name against `cteNodes` *before* the schema, so leaving
|
|
142
|
+
* the target's own name in scope would make its body's same-named FROM source
|
|
143
|
+
* self-resolve to the CTE instead of the real object — silently wrong for the
|
|
144
|
+
* load-bearing shadow case `with base as (select … from base) update base …`, whose
|
|
145
|
+
* body must reach the REAL `base` table. A non-recursive CTE cannot reference itself,
|
|
146
|
+
* so SQL scopes its own name OUT of its body anyway.
|
|
147
|
+
*
|
|
148
|
+
* The same definition-order rule applies to **later** siblings: a non-recursive CTE is
|
|
149
|
+
* visible only to siblings defined after it, so the target's body sees only its PRIOR
|
|
150
|
+
* siblings — a later sibling is out of scope and a same-named FROM in the body binds the
|
|
151
|
+
* real object instead (`with x as (select … from fwd), fwd as (…) update x …` writes
|
|
152
|
+
* through to the real `fwd`). This mirrors {@link import('./with.js').buildCommonTableExpr},
|
|
153
|
+
* which builds each body against the prior siblings only.
|
|
154
|
+
*
|
|
155
|
+
* PRIOR sibling CTEs stay in scope, so a prior-sibling read in the body still resolves.
|
|
156
|
+
*
|
|
157
|
+
* Two consequences for the shared user-clause context (body and user `where`/`set`/
|
|
158
|
+
* `returning` share this one context in v1 — see
|
|
159
|
+
* {@link import('./view-mutation-builder.js')}):
|
|
160
|
+
* - A user-clause read of a LATER-defined sibling resolves to a real same-named table
|
|
161
|
+
* (or errors table-not-found), not the later CTE — never silently wrong.
|
|
162
|
+
* - A user-clause self-read of the target name (`… where id in (select id from t)`)
|
|
163
|
+
* does NOT resolve the CTE here — the self-capture path (`ctxSelfRead`) re-adds the
|
|
164
|
+
* target name for that, leaving this context Halloween-safe.
|
|
165
|
+
* See docs/view-updateability.md § CTEs and Subqueries.
|
|
166
|
+
*/
|
|
167
|
+
export function contextForCteTarget(ctx, withClause, targetName) {
|
|
168
|
+
if (!ctx.cteNodes?.size)
|
|
169
|
+
return ctx;
|
|
170
|
+
const target = targetName.toLowerCase();
|
|
171
|
+
// The target itself + every sibling defined at-or-after it are out of scope inside the
|
|
172
|
+
// target's body (a non-recursive CTE sees only PRIOR siblings). `resolveCteTarget`
|
|
173
|
+
// already matched targetName, so idx is normally >= 0; guard the not-found case to a
|
|
174
|
+
// no-op slice rather than slicing from the end.
|
|
175
|
+
const idx = withClause.ctes.findIndex(c => c.name.toLowerCase() === target);
|
|
176
|
+
if (idx < 0)
|
|
177
|
+
return ctx;
|
|
178
|
+
const shadowed = new Set(withClause.ctes.slice(idx).map(c => c.name.toLowerCase()));
|
|
179
|
+
const cteNodes = new Map(ctx.cteNodes);
|
|
180
|
+
for (const name of shadowed)
|
|
181
|
+
cteNodes.delete(name);
|
|
182
|
+
return { ...ctx, cteNodes };
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* True iff the user clauses of an UPDATE/DELETE **self-read** the CTE-name target
|
|
186
|
+
* `targetName` — a FROM source named `targetName` (unqualified) appears in any subquery
|
|
187
|
+
* reachable from the `where`, an assignment value, or a RETURNING expression. This is
|
|
188
|
+
* the gate the view-mutation builder uses to build the eager self-read capture + split
|
|
189
|
+
* planning context (docs/view-updateability.md § Common Table Expressions —
|
|
190
|
+
* self-reference): the body is planned target-EXCLUDED (so a same-named base FROM reaches
|
|
191
|
+
* the real table), while the user clause's self-read resolves `t` against a materialized
|
|
192
|
+
* snapshot of the body — a Halloween-safe positive write. Absent a self-read this returns
|
|
193
|
+
* false and the lowering is byte-identical to today (no extra materialization).
|
|
194
|
+
*
|
|
195
|
+
* A CTE name is never schema-qualified, so only an unqualified FROM-source name matches.
|
|
196
|
+
* The scan descends nested subqueries / their FROM (incl. join legs, TVF args, subquery
|
|
197
|
+
* sources) and compound / union legs; a DML…RETURNING subquery is not descended (the
|
|
198
|
+
* capture path never lowers one).
|
|
199
|
+
*/
|
|
200
|
+
export function needsSelfCapture(stmt, targetName) {
|
|
201
|
+
const target = targetName.toLowerCase();
|
|
202
|
+
const exprs = [];
|
|
203
|
+
if (stmt.where)
|
|
204
|
+
exprs.push(stmt.where);
|
|
205
|
+
if (stmt.type === 'update')
|
|
206
|
+
for (const a of stmt.assignments)
|
|
207
|
+
exprs.push(a.value);
|
|
208
|
+
if (stmt.returning)
|
|
209
|
+
for (const rc of stmt.returning)
|
|
210
|
+
if (rc.type !== 'all')
|
|
211
|
+
exprs.push(rc.expr);
|
|
212
|
+
return exprs.some(e => exprReadsTarget(e, target));
|
|
213
|
+
}
|
|
214
|
+
/** True iff any subquery operand of `expr` reads a FROM source named `target`. */
|
|
215
|
+
function exprReadsTarget(expr, target) {
|
|
216
|
+
switch (expr.type) {
|
|
217
|
+
case 'binary':
|
|
218
|
+
return exprReadsTarget(expr.left, target) || exprReadsTarget(expr.right, target);
|
|
219
|
+
case 'unary':
|
|
220
|
+
case 'cast':
|
|
221
|
+
case 'collate':
|
|
222
|
+
return exprReadsTarget(expr.expr, target);
|
|
223
|
+
case 'function':
|
|
224
|
+
return expr.args.some(a => exprReadsTarget(a, target));
|
|
225
|
+
case 'between':
|
|
226
|
+
return exprReadsTarget(expr.expr, target) || exprReadsTarget(expr.lower, target) || exprReadsTarget(expr.upper, target);
|
|
227
|
+
case 'case':
|
|
228
|
+
return (!!expr.baseExpr && exprReadsTarget(expr.baseExpr, target))
|
|
229
|
+
|| expr.whenThenClauses.some(w => exprReadsTarget(w.when, target) || exprReadsTarget(w.then, target))
|
|
230
|
+
|| (!!expr.elseExpr && exprReadsTarget(expr.elseExpr, target));
|
|
231
|
+
case 'in':
|
|
232
|
+
return exprReadsTarget(expr.expr, target)
|
|
233
|
+
|| (!!expr.values && expr.values.some(v => exprReadsTarget(v, target)))
|
|
234
|
+
|| (!!expr.subquery && queryReadsTarget(expr.subquery, target));
|
|
235
|
+
case 'subquery':
|
|
236
|
+
return queryReadsTarget(expr.query, target);
|
|
237
|
+
case 'exists':
|
|
238
|
+
return queryReadsTarget(expr.subquery, target);
|
|
239
|
+
case 'windowFunction':
|
|
240
|
+
return expr.function.args.some(a => exprReadsTarget(a, target))
|
|
241
|
+
|| (!!expr.window?.partitionBy && expr.window.partitionBy.some(e => exprReadsTarget(e, target)))
|
|
242
|
+
|| (!!expr.window?.orderBy && expr.window.orderBy.some(ob => exprReadsTarget(ob.expr, target)));
|
|
243
|
+
default:
|
|
244
|
+
// literal / identifier / parameter / functionSource — no subquery operand.
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/** True iff a relation-producing subquery reads (anywhere) a FROM source named `target`. */
|
|
249
|
+
function queryReadsTarget(query, target) {
|
|
250
|
+
if (query.type === 'select') {
|
|
251
|
+
return (!!query.from && query.from.some(fc => fromReadsTarget(fc, target)))
|
|
252
|
+
|| query.columns.some(rc => rc.type !== 'all' && exprReadsTarget(rc.expr, target))
|
|
253
|
+
|| (!!query.where && exprReadsTarget(query.where, target))
|
|
254
|
+
|| (!!query.groupBy && query.groupBy.some(e => exprReadsTarget(e, target)))
|
|
255
|
+
|| (!!query.having && exprReadsTarget(query.having, target))
|
|
256
|
+
|| (!!query.orderBy && query.orderBy.some(ob => exprReadsTarget(ob.expr, target)))
|
|
257
|
+
|| (!!query.limit && exprReadsTarget(query.limit, target))
|
|
258
|
+
|| (!!query.offset && exprReadsTarget(query.offset, target))
|
|
259
|
+
|| (!!query.compound && queryReadsTarget(query.compound.select, target))
|
|
260
|
+
|| (!!query.union && queryReadsTarget(query.union, target));
|
|
261
|
+
}
|
|
262
|
+
if (query.type === 'values') {
|
|
263
|
+
return query.values.some(row => row.some(e => exprReadsTarget(e, target)));
|
|
264
|
+
}
|
|
265
|
+
// A DML … RETURNING subquery — not descended (the capture path never lowers one).
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
/** True iff a FROM clause names (or nests a subquery that reads) a source named `target`. */
|
|
269
|
+
function fromReadsTarget(fc, target) {
|
|
270
|
+
switch (fc.type) {
|
|
271
|
+
case 'table':
|
|
272
|
+
return !fc.table.schema && fc.table.name.toLowerCase() === target;
|
|
273
|
+
case 'join':
|
|
274
|
+
return fromReadsTarget(fc.left, target) || fromReadsTarget(fc.right, target)
|
|
275
|
+
|| (!!fc.condition && exprReadsTarget(fc.condition, target));
|
|
276
|
+
case 'functionSource':
|
|
277
|
+
return fc.args.some(a => exprReadsTarget(a, target));
|
|
278
|
+
case 'subquerySource':
|
|
279
|
+
return queryReadsTarget(fc.subquery, target);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=dml-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dml-target.js","sourceRoot":"","sources":["../../../../src/planner/building/dml-target.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop-index.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/drop-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"drop-index.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/drop-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,GAAG,aAAa,CAa1F"}
|
|
@@ -3,7 +3,10 @@ import { DropIndexNode } from '../nodes/drop-index-node.js';
|
|
|
3
3
|
* Builds a plan node for DROP INDEX statements.
|
|
4
4
|
*/
|
|
5
5
|
export function buildDropIndexStmt(ctx, stmt) {
|
|
6
|
-
|
|
6
|
+
// Canonical schemaName, unqualified names landing in the current schema —
|
|
7
|
+
// symmetric with createIndex's resolution and the other DDL builders.
|
|
8
|
+
const sm = ctx.db.schemaManager;
|
|
9
|
+
const schemaName = stmt.name.schema ? sm.canonicalSchemaName(stmt.name.schema) : sm.getCurrentSchemaName();
|
|
7
10
|
const indexName = stmt.name.name;
|
|
8
11
|
return new DropIndexNode(ctx.scope, indexName, schemaName, stmt.ifExists);
|
|
9
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop-index.js","sourceRoot":"","sources":["../../../../src/planner/building/drop-index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAoB,EAAE,IAAkB;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"drop-index.js","sourceRoot":"","sources":["../../../../src/planner/building/drop-index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAoB,EAAE,IAAkB;IAC1E,0EAA0E;IAC1E,sEAAsE;IACtE,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC;IAC3G,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAEjC,OAAO,IAAI,aAAa,CACvB,GAAG,CAAC,KAAK,EACT,SAAS,EACT,UAAU,EACV,IAAI,CAAC,QAAQ,CACb,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop-view.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/drop-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"drop-view.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/drop-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,GAAG,YAAY,CAaxF"}
|
|
@@ -3,8 +3,10 @@ import { DropViewNode } from '../nodes/drop-view-node.js';
|
|
|
3
3
|
* Builds a plan node for DROP VIEW statements.
|
|
4
4
|
*/
|
|
5
5
|
export function buildDropViewStmt(ctx, stmt) {
|
|
6
|
-
//
|
|
7
|
-
|
|
6
|
+
// Canonical schemaName, unqualified names landing in the current schema —
|
|
7
|
+
// symmetric with buildCreateViewStmt and the other DDL builders.
|
|
8
|
+
const sm = ctx.db.schemaManager;
|
|
9
|
+
const schemaName = stmt.name.schema ? sm.canonicalSchemaName(stmt.name.schema) : sm.getCurrentSchemaName();
|
|
8
10
|
const viewName = stmt.name.name;
|
|
9
11
|
return new DropViewNode(ctx.scope, viewName, schemaName, stmt.ifExists);
|
|
10
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop-view.js","sourceRoot":"","sources":["../../../../src/planner/building/drop-view.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAoB,EAAE,IAAkB;IACzE
|
|
1
|
+
{"version":3,"file":"drop-view.js","sourceRoot":"","sources":["../../../../src/planner/building/drop-view.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAoB,EAAE,IAAkB;IACzE,0EAA0E;IAC1E,iEAAiE;IACjE,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC;IAC3G,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAEhC,OAAO,IAAI,YAAY,CACtB,GAAG,CAAC,KAAK,EACT,QAAQ,EACR,UAAU,EACV,IAAI,CAAC,QAAQ,CACb,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/expression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/expression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,uBAAuB,CAAC;AA6FhF;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,eAAe,GAAE,OAAe,GAAG,cAAc,CAsN5H"}
|
|
@@ -5,10 +5,37 @@ import { QuereusError } from '../../common/errors.js';
|
|
|
5
5
|
import { StatusCode } from '../../common/types.js';
|
|
6
6
|
import { resolveColumn, resolveParameter } from '../resolve.js';
|
|
7
7
|
import { Ambiguous } from '../scopes/scope.js';
|
|
8
|
-
import { buildSelectStmt } from './select.js';
|
|
8
|
+
import { buildSelectStmt, buildValuesStmt } from './select.js';
|
|
9
|
+
import { buildInsertStmt } from './insert.js';
|
|
10
|
+
import { buildUpdateStmt } from './update.js';
|
|
11
|
+
import { buildDeleteStmt } from './delete.js';
|
|
9
12
|
import { resolveWindowFunction } from '../../schema/window-function.js';
|
|
10
13
|
import { buildFunctionCall } from './function-call.js';
|
|
11
14
|
import { createLogger } from '../../common/logger.js';
|
|
15
|
+
/**
|
|
16
|
+
* Plans a `QueryExpr` in scalar / IN / EXISTS expression position.
|
|
17
|
+
*
|
|
18
|
+
* SELECT and VALUES legs lower to their normal relational builders. DML
|
|
19
|
+
* legs (INSERT/UPDATE/DELETE with RETURNING — the parser requires RETURNING
|
|
20
|
+
* in this position) build through the standard DML builders and yield a
|
|
21
|
+
* `ReturningNode`. The runtime emitters for scalar / IN / EXISTS detect a
|
|
22
|
+
* side-effecting inner via `subtreeHasSideEffects` and apply full-drain +
|
|
23
|
+
* run-once semantics (see `docs/runtime.md`).
|
|
24
|
+
*/
|
|
25
|
+
function buildExpressionPositionQueryExpr(ctx, query, preserveInputColumns, _siteLabel) {
|
|
26
|
+
switch (query.type) {
|
|
27
|
+
case 'select':
|
|
28
|
+
return buildSelectStmt(ctx, query, ctx.cteNodes, preserveInputColumns);
|
|
29
|
+
case 'values':
|
|
30
|
+
return buildValuesStmt(ctx, query);
|
|
31
|
+
case 'insert':
|
|
32
|
+
return buildInsertStmt(ctx, query);
|
|
33
|
+
case 'update':
|
|
34
|
+
return buildUpdateStmt(ctx, query);
|
|
35
|
+
case 'delete':
|
|
36
|
+
return buildDeleteStmt(ctx, query);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
12
39
|
const logger = createLogger('planner:expression');
|
|
13
40
|
/** Comparison operators that should trigger cross-category coercion insertion */
|
|
14
41
|
const COMPARISON_OPS = new Set(['=', '==', '!=', '<>', '<', '<=', '>', '>=']);
|
|
@@ -97,7 +124,13 @@ export function buildExpression(ctx, expr, allowAggregates = false) {
|
|
|
97
124
|
if (COMPARISON_OPS.has(expr.operator)) {
|
|
98
125
|
[left, right] = insertCrossTypeCoercion(ctx.scope, left, right);
|
|
99
126
|
}
|
|
100
|
-
|
|
127
|
+
const binaryNode = new BinaryOpNode(ctx.scope, expr, left, right);
|
|
128
|
+
// Comparisons validate their collation lattice in generateType, which is
|
|
129
|
+
// lazily cached — force it so a conflict errors at prepare time.
|
|
130
|
+
if (COMPARISON_OPS.has(expr.operator)) {
|
|
131
|
+
binaryNode.getType();
|
|
132
|
+
}
|
|
133
|
+
return binaryNode;
|
|
101
134
|
}
|
|
102
135
|
case 'case': {
|
|
103
136
|
// Build base expression if present
|
|
@@ -131,11 +164,8 @@ export function buildExpression(ctx, expr, allowAggregates = false) {
|
|
|
131
164
|
};
|
|
132
165
|
// Preserve input columns in scalar subqueries to ensure correlated predicates
|
|
133
166
|
// have access to all underlying attributes.
|
|
134
|
-
const subqueryPlan =
|
|
167
|
+
const subqueryPlan = buildExpressionPositionQueryExpr(subqueryContext, expr.query, true, 'scalar subquery');
|
|
135
168
|
logger(`Building scalar subquery with preserveInputColumns=true`);
|
|
136
|
-
if (subqueryPlan.getType().typeClass !== 'relation') {
|
|
137
|
-
throw new QuereusError('Subquery must produce a relation', StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
|
|
138
|
-
}
|
|
139
169
|
// Validate that scalar subquery returns exactly one column
|
|
140
170
|
const scalarSubqueryType = subqueryPlan.getType();
|
|
141
171
|
if (scalarSubqueryType.typeClass === 'relation' && scalarSubqueryType.columns.length !== 1) {
|
|
@@ -159,34 +189,42 @@ export function buildExpression(ctx, expr, allowAggregates = false) {
|
|
|
159
189
|
if (windowSchema.requiresOrderBy && (!expr.window?.orderBy || expr.window.orderBy.length === 0)) {
|
|
160
190
|
throw new QuereusError(`Window function ${expr.function.name} requires ORDER BY clause`, StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
|
|
161
191
|
}
|
|
162
|
-
|
|
192
|
+
// Build the argument expressions to derive their logical types. The
|
|
193
|
+
// authoritative argument plan nodes are (re)built in select-window.ts for
|
|
194
|
+
// the WindowNode; these exist only so this node's getType() can consult
|
|
195
|
+
// inferReturnType (e.g. min(text_col) over (...) must type as TEXT so a
|
|
196
|
+
// surrounding `|| 'x'` types correctly).
|
|
197
|
+
const windowArgTypes = expr.function.args.map(arg => buildExpression(ctx, arg, false).getType().logicalType);
|
|
198
|
+
return new WindowFunctionCallNode(ctx.scope, expr, expr.function.name, expr.function.distinct ?? false, undefined, windowArgTypes);
|
|
163
199
|
}
|
|
164
200
|
case 'in': {
|
|
165
201
|
// Build the left expression
|
|
166
202
|
const leftExpr = buildExpression(ctx, expr.expr, allowAggregates);
|
|
167
203
|
if (expr.subquery) {
|
|
168
|
-
// IN subquery: expr IN (
|
|
204
|
+
// IN subquery: expr IN (<QueryExpr>)
|
|
169
205
|
const inSubqueryContext = {
|
|
170
206
|
...ctx,
|
|
171
207
|
cteReferenceCache: ctx.cteReferenceCache || new Map()
|
|
172
208
|
};
|
|
173
|
-
const inSubqueryPlan =
|
|
174
|
-
if (inSubqueryPlan.getType().typeClass !== 'relation') {
|
|
175
|
-
throw new QuereusError('IN subquery must produce a relation', StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
|
|
176
|
-
}
|
|
209
|
+
const inSubqueryPlan = buildExpressionPositionQueryExpr(inSubqueryContext, expr.subquery, true, 'IN subquery');
|
|
177
210
|
// Validate that subquery returns exactly one column
|
|
178
211
|
const subqueryType = inSubqueryPlan.getType();
|
|
179
212
|
if (subqueryType.typeClass === 'relation' && subqueryType.columns.length !== 1) {
|
|
180
213
|
throw new QuereusError('IN subquery must return exactly one column', StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
|
|
181
214
|
}
|
|
182
|
-
|
|
215
|
+
const inSubqueryNode = new InNode(ctx.scope, expr, leftExpr, inSubqueryPlan);
|
|
216
|
+
// Force the lazily-cached generateType so a collation-lattice
|
|
217
|
+
// conflict errors at prepare time, not first emit.
|
|
218
|
+
inSubqueryNode.getType();
|
|
219
|
+
return inSubqueryNode;
|
|
183
220
|
}
|
|
184
221
|
else if (expr.values) {
|
|
185
222
|
// IN value list: expr IN (value1, value2, ...)
|
|
186
223
|
const valueExprs = expr.values.map(val => buildExpression(ctx, val, allowAggregates));
|
|
187
|
-
|
|
188
|
-
//
|
|
189
|
-
|
|
224
|
+
const inListNode = new InNode(ctx.scope, expr, leftExpr, undefined, valueExprs);
|
|
225
|
+
// Same eager collation-lattice validation as the subquery form.
|
|
226
|
+
inListNode.getType();
|
|
227
|
+
return inListNode;
|
|
190
228
|
}
|
|
191
229
|
else {
|
|
192
230
|
throw new QuereusError('IN expression must have either values or subquery', StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
|
|
@@ -198,10 +236,7 @@ export function buildExpression(ctx, expr, allowAggregates = false) {
|
|
|
198
236
|
...ctx,
|
|
199
237
|
cteReferenceCache: ctx.cteReferenceCache || new Map()
|
|
200
238
|
};
|
|
201
|
-
const existsSubqueryPlan =
|
|
202
|
-
if (existsSubqueryPlan.getType().typeClass !== 'relation') {
|
|
203
|
-
throw new QuereusError('EXISTS subquery must produce a relation', StatusCode.ERROR, undefined, expr.loc?.start.line, expr.loc?.start.column);
|
|
204
|
-
}
|
|
239
|
+
const existsSubqueryPlan = buildExpressionPositionQueryExpr(existsSubqueryContext, expr.subquery, true, 'EXISTS subquery');
|
|
205
240
|
return new ExistsNode(ctx.scope, expr, existsSubqueryPlan);
|
|
206
241
|
}
|
|
207
242
|
case 'between': {
|
|
@@ -212,7 +247,11 @@ export function buildExpression(ctx, expr, allowAggregates = false) {
|
|
|
212
247
|
// Insert explicit casts for cross-category operands (same logic as comparisons)
|
|
213
248
|
[exprNode, lowerNode] = insertCrossTypeCoercion(ctx.scope, exprNode, lowerNode);
|
|
214
249
|
[exprNode, upperNode] = insertCrossTypeCoercion(ctx.scope, exprNode, upperNode);
|
|
215
|
-
|
|
250
|
+
const betweenNode = new BetweenNode(ctx.scope, expr, exprNode, lowerNode, upperNode);
|
|
251
|
+
// Force the lazily-cached generateType so a per-bound collation-lattice
|
|
252
|
+
// conflict errors at prepare time.
|
|
253
|
+
betweenNode.getType();
|
|
254
|
+
return betweenNode;
|
|
216
255
|
}
|
|
217
256
|
default:
|
|
218
257
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../../src/planner/building/expression.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9H,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,MAAM,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC;AAElD,iFAAiF;AACjF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAE9E;;;;GAIG;AACH,SAAS,uBAAuB,CAC/B,KAAyC,EACzC,IAAoB,EACpB,KAAqB;IAErB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC;IAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC;IAEjD,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC;IAC5C,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC;IAC9C,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC;IAC5C,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC;IAE9C,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;QACjC,4DAA4D;QAC5D,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,YAAY,IAAI,WAAW,EAAE,CAAC;QACjC,4DAA4D;QAC5D,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,sFAAsF;AACtF,SAAS,UAAU,CAClB,KAAyC,EACzC,OAAuB,EACvB,UAAkB;IAElB,gFAAgF;IAChF,MAAM,aAAa,GAAiB;QACnC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAqB,EAAE,cAAc;QACzE,UAAU;KACV,CAAC;IACF,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAoB,EAAE,IAAoB,EAAE,kBAA2B,KAAK;IAC1G,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE1C,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC,CAAC;YAElG,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,YAAY,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3I,CAAC;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,YAAY,CAAC,qBAAqB,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACtI,CAAC;YACD,OAAO,aAA+B,CAAC;QAC3C,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACf,MAAM,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,IAAI,YAAY,CAAC,wBAAwB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACvJ,CAAC;YACD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,IAAI,YAAY,CAAC,wBAAwB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACvJ,CAAC;YACD,OAAO,eAAiC,CAAC;QAC7C,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,8EAA8E;YAC9E,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAuB,CAAC;gBACjD,IAAI,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACnF,yDAAyD;oBACzD,MAAM,cAAc,GAAoB;wBACtC,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK;wBACtF,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;wBACjE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,kDAAkD;qBACjE,CAAC;oBACF,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YACjE,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,IAAI,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAC5D,IAAI,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YAC9D,mEAAmE;YACnE,sEAAsE;YACtE,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;QAEC,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,mCAAmC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAElG,0BAA0B;YAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC1D,IAAI,EAAE,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC;gBACxD,IAAI,EAAE,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC;aACzD,CAAC,CAAC,CAAC;YAEJ,mCAAmC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAElG,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClF,CAAC;QAEC,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YACrE,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YACxE,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1D,CAAC;QAEH,KAAK,UAAU,CAAC,CAAC,OAAO,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;QAEpE,KAAK,UAAU,CAAC,CAAC,CAAC;YACf,kEAAkE;YAClE,gGAAgG;YAChG,2FAA2F;YAC3F,MAAM,CAAC,0DAA0D,GAAG,CAAC,iBAAiB,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;YAC/G,MAAM,eAAe,GAAG;gBACtB,GAAG,GAAG;gBACN,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,IAAI,GAAG,EAAE;aACtD,CAAC;YACF,8EAA8E;YAC9E,4CAA4C;YAC5C,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtF,MAAM,CAAC,yDAAyD,CAAC,CAAC;YAClE,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBACpD,MAAM,IAAI,YAAY,CAAC,kCAAkC,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACxI,CAAC;YACD,2DAA2D;YAC3D,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;YAClD,IAAI,kBAAkB,CAAC,SAAS,KAAK,UAAU,IAAK,kBAAmC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7G,MAAM,IAAI,YAAY,CAAC,gDAAgD,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACtJ,CAAC;YACD,OAAO,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,YAAkC,CAAC,CAAC;QACxF,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACnB,oEAAoE;YACpE,2DAA2D;YAC3D,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,YAAY,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACtJ,CAAC;YAED,sDAAsD;YACtD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;YACpG,IAAI,YAAY,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;gBAChH,MAAM,IAAI,YAAY,CAAC,mBAAmB,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,YAAY,CAAC,QAAQ,mBAAmB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1N,CAAC;YAED,gCAAgC;YAChC,IAAI,YAAY,CAAC,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChG,MAAM,IAAI,YAAY,CAAC,mBAAmB,IAAI,CAAC,QAAQ,CAAC,IAAI,2BAA2B,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACtK,CAAC;YAED,OAAO,IAAI,sBAAsB,CAC/B,GAAG,CAAC,KAAK,EACT,IAAI,EACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAChC,CAAC;QACP,CAAC;QAED,KAAK,IAAI,CAAC,CAAC,CAAC;YACP,4BAA4B;YAC5B,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAElE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,oCAAoC;gBACpC,MAAM,iBAAiB,GAAG;oBACxB,GAAG,GAAG;oBACN,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,IAAI,GAAG,EAAE;iBACtD,CAAC;gBACF,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC7F,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;oBACtD,MAAM,IAAI,YAAY,CAAC,qCAAqC,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC3I,CAAC;gBACD,oDAAoD;gBACpD,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC9C,IAAI,YAAY,CAAC,SAAS,KAAK,UAAU,IAAK,YAA6B,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjG,MAAM,IAAI,YAAY,CAAC,4CAA4C,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClJ,CAAC;gBACS,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAoC,CAAC,CAAC;YACvF,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC9B,+CAA+C;gBAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;gBACtF,2CAA2C;gBAC3C,yCAAyC;gBACzC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,YAAY,CAAC,mDAAmD,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACzJ,CAAC;QACN,CAAC;QAEC,KAAK,QAAQ,CAAC,CAAC,CAAC;YACb,4BAA4B;YAC5B,MAAM,qBAAqB,GAAG;gBAC5B,GAAG,GAAG;gBACN,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,IAAI,GAAG,EAAE;aACtD,CAAC;YACF,MAAM,kBAAkB,GAAG,eAAe,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACrG,IAAI,kBAAkB,CAAC,OAAO,EAAE,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC1D,MAAM,IAAI,YAAY,CAAC,yCAAyC,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/I,CAAC;YACD,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,kBAAwC,CAAC,CAAC;QACtF,CAAC;QAEC,KAAK,SAAS,CAAC,CAAC,CAAC;YACd,6DAA6D;YAC7D,IAAI,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAChE,IAAI,SAAS,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YAClE,IAAI,SAAS,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YAClE,gFAAgF;YAChF,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChF,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChF,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7E,CAAC;QAED;YACI,8DAA8D;YAC9D,MAAM,IAAI,YAAY,CAAC,oBAAqB,IAAY,CAAC,IAAI,yCAAyC,EAAE,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7L,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../../src/planner/building/expression.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,36 @@ import type { TableSchema } from '../../schema/table.js';
|
|
|
3
3
|
import { RowOpFlag } from '../../schema/table.js';
|
|
4
4
|
import type { Attribute } from '../nodes/plan-node.js';
|
|
5
5
|
import type { ConstraintCheck } from '../nodes/constraint-check-node.js';
|
|
6
|
+
import * as AST from '../../parser/ast.js';
|
|
7
|
+
/**
|
|
8
|
+
* Assembles the MATCH SIMPLE-guarded child-side FK existence expression:
|
|
9
|
+
*
|
|
10
|
+
* ( <q>.<child1> IS NULL OR … OR
|
|
11
|
+
* EXISTS(SELECT 1 FROM [<schema>.]<parent> WHERE <parent>.<ref_i> = <q>.<child_i> …) )
|
|
12
|
+
*
|
|
13
|
+
* The child column names are taken verbatim — the physical builder passes the
|
|
14
|
+
* child table's own column names; the lens collector passes basis-rewritten
|
|
15
|
+
* names. The parent column names are the referenced-column names (logical names
|
|
16
|
+
* for the lens, which resolve against the logical view named by `fromSchema`).
|
|
17
|
+
* Shared by the physical child-side FK check and the lens FK collector so the
|
|
18
|
+
* synthesis lives in exactly one place.
|
|
19
|
+
*/
|
|
20
|
+
export declare function synthesizeFKExistsExpr(parentTableName: string, parentColumns: readonly string[], childColumns: readonly string[], qualifier: 'NEW' | 'OLD', fromSchema?: string): AST.Expression;
|
|
21
|
+
/**
|
|
22
|
+
* Assembles the parent-side FK non-existence expression:
|
|
23
|
+
*
|
|
24
|
+
* not exists (select 1 from [<schema>.]<child> where <child>.<childCol_i> = <q>.<parentCol_i> …)
|
|
25
|
+
*
|
|
26
|
+
* The dual of {@link synthesizeFKExistsExpr}: the physical parent-side RESTRICT
|
|
27
|
+
* check passes the child table's own column names and the parent's referenced
|
|
28
|
+
* column names off the `TableSchema`s (no `fromSchema`); the lens parent-side
|
|
29
|
+
* collector passes the logical child column names, the parent's referenced
|
|
30
|
+
* columns rewritten to basis terms, and the logical child schema as `fromSchema`
|
|
31
|
+
* so the child relation resolves to the registered logical view regardless of the
|
|
32
|
+
* basis search path the routed constraint is built under. Shared so the
|
|
33
|
+
* `NOT EXISTS` synthesis lives in exactly one place.
|
|
34
|
+
*/
|
|
35
|
+
export declare function synthesizeFKNotExistsExpr(childTableName: string, childColumns: readonly string[], parentColumns: readonly string[], qualifier: 'NEW' | 'OLD', fromSchema?: string): AST.UnaryExpr;
|
|
6
36
|
/**
|
|
7
37
|
* Builds child-side FK constraint checks (for INSERT/UPDATE on the referencing table).
|
|
8
38
|
* For each FK, generates an EXISTS check ensuring the parent row exists.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foreign-key-builder.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/foreign-key-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAmD,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,SAAS,EAA4C,MAAM,uBAAuB,CAAC;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"foreign-key-builder.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/foreign-key-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAmD,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,SAAS,EAA4C,MAAM,uBAAuB,CAAC;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAMzE,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AA6C3C;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACrC,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,SAAS,EAAE,KAAK,GAAG,KAAK,EACxB,UAAU,CAAC,EAAE,MAAM,GACjB,GAAG,CAAC,UAAU,CAyBhB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACxC,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,SAAS,EAAE,KAAK,GAAG,KAAK,EACxB,UAAU,CAAC,EAAE,MAAM,GACjB,GAAG,CAAC,SAAS,CAgBf;AAiDD;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,SAAS,EAAE,EAC1B,aAAa,EAAE,SAAS,EAAE,EAC1B,iBAAiB,GAAE,SAAS,EAAO,GACjC,eAAe,EAAE,CAmHnB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,SAAS,EAAE,EAC1B,aAAa,EAAE,SAAS,EAAE,EAC1B,iBAAiB,GAAE,SAAS,EAAO,GACjC,eAAe,EAAE,CAqHnB"}
|