@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 @@
|
|
|
1
|
+
{"version":3,"file":"lens-enforcement.js","sourceRoot":"","sources":["../../../../src/planner/mutation/lens-enforcement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
import type * as AST from '../../parser/ast.js';
|
|
2
|
+
import type { PlanningContext } from '../planning-context.js';
|
|
3
|
+
import type { Scope } from '../scopes/scope.js';
|
|
4
|
+
import type { TableSchema } from '../../schema/table.js';
|
|
5
|
+
import { type RelationalPlanNode, type TableDescriptor, type RelationalComponentRef } from '../nodes/plan-node.js';
|
|
6
|
+
import type { ScalarType } from '../../common/datatype.js';
|
|
7
|
+
import { TableReferenceNode } from '../nodes/reference.js';
|
|
8
|
+
import { InternalRecursiveCTERefNode } from '../nodes/internal-recursive-cte-ref-node.js';
|
|
9
|
+
import { JoinNode } from '../nodes/join-node.js';
|
|
10
|
+
import type { BaseOp, MutableViewLike, MutationRequest } from './propagate.js';
|
|
11
|
+
/**
|
|
12
|
+
* Multi-source view-mediated DML decomposition — the **key-preserving join**
|
|
13
|
+
* acceptance case of the view-mutation substrate (docs/view-updateability.md
|
|
14
|
+
* § Per-Operator Semantics — Inner Join, § Outer Joins, § Multi-Base-Table Mutations).
|
|
15
|
+
*
|
|
16
|
+
* Scope: a view body that is an **n-way (≥2) equi-join** of base tables — `inner`,
|
|
17
|
+
* `left`, or `full` — including composite-PK sides and **self-joins** (one base table
|
|
18
|
+
* under two or more distinct aliases) — written through with `update` / `delete` /
|
|
19
|
+
* `insert`. **LEFT** and **RIGHT** outer joins are admitted for the
|
|
20
|
+
* **statically-expressible** cases: preserved-side update passthrough,
|
|
21
|
+
* delete-to-the-preserved-side, and insert routing (both-side / preserved-only /
|
|
22
|
+
* presence-gated non-preserved member). RIGHT is the exact **mirror** of LEFT — the
|
|
23
|
+
* right operand of a `right` join is preserved, the left operand is null-extended — and
|
|
24
|
+
* the runtime now executes a RIGHT join (`outer-join-right-full-runtime`), so a
|
|
25
|
+
* RIGHT-join view is both readable and writable. **FULL** is admitted only to carry its
|
|
26
|
+
* precise conservative diagnostics (no preserved side, so all writes reject and the
|
|
27
|
+
* surfaces report all-`NO`; FULL write-through — a preserved anchor for a body that is
|
|
28
|
+
* null-extended per row — is a separable future concern). The one outer-join case that
|
|
29
|
+
* needs new runtime — an UPDATE of a **non-preserved** column (a per-row matched-update /
|
|
30
|
+
* null-extended-insert branch) — defers with `unsupported-outer-join-update`
|
|
31
|
+
* (`view-write-optional-member-transitions`). The body is
|
|
32
|
+
* **planned once**
|
|
33
|
+
* (`analyzeJoinView`); its `PhysicalProperties.updateLineage` (threaded by
|
|
34
|
+
* `view-mutation-physical-lineage`) routes each output column to its owning base
|
|
35
|
+
* table. Each per-base SET/value is still lowered to an AST `BaseOp` so the ordinary
|
|
36
|
+
* base-table builders are reused verbatim (the documented lower-risk path — the base
|
|
37
|
+
* builders stay untouched), but **row identification no longer round-trips through a
|
|
38
|
+
* re-planned AST body**: every affected view row's base-PK identities are captured
|
|
39
|
+
* ONCE up-front, built as plan nodes directly over the already-planned join body
|
|
40
|
+
* (`Project_{k<side>}(Filter_{idPred}(joinNode))` — the derived backward walk the
|
|
41
|
+
* docs name, § Round-Trip Laws and the Derived Backward Walk), materialized before
|
|
42
|
+
* any base op fires, and each base op reads its identifying values back from that
|
|
43
|
+
* `__vmupd_keys` set:
|
|
44
|
+
*
|
|
45
|
+
* ```sql
|
|
46
|
+
* -- view: select j1.id as id, j1.a as a, j2.c as c
|
|
47
|
+
* -- from tj1 j1 join tj2 j2 on j2.id = j1.t2id
|
|
48
|
+
* update jv set a = 5, c = 9 where id = 3
|
|
49
|
+
* -- capture (plan nodes over the planned join body, materialized once):
|
|
50
|
+
* -- __vmupd_keys = π_{j1.id as k0, j2.id as k1}( σ_{id = 3}( tj1 ⋈ tj2 ) )
|
|
51
|
+
* -> update tj1 set a = 5 where id in (select k0 from __vmupd_keys)
|
|
52
|
+
* update tj2 set c = 9 where id in (select k1 from __vmupd_keys)
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* The capture reconstructs the row-identifying predicate (each owning side's base PK)
|
|
56
|
+
* from the planned join body — exactly the predicate the optimizer already proves a
|
|
57
|
+
* key over — so a side whose own PK is hidden by the projection (`tj2.id` above) is
|
|
58
|
+
* still addressable, and a both-sides write is mutation-order-independent (the
|
|
59
|
+
* FK-parent op cannot rewrite a predicate column out from under the FK-child op).
|
|
60
|
+
* UPDATE RETURNING re-queries the same planned `joinNode` (post-mutation, restricted
|
|
61
|
+
* to the captured identities); DELETE RETURNING projects the planned body `root` (the
|
|
62
|
+
* `pre` OLD image). The body is planned once and reused — no second `buildSelectStmt`
|
|
63
|
+
* / `cloneFromClause` of it for identification or RETURNING.
|
|
64
|
+
*
|
|
65
|
+
* Multi-source **`insert`** is analysed here (`analyzeMultiSourceInsert`) but *built* by
|
|
66
|
+
* `building/view-mutation-builder.ts` (`buildMultiSourceInsert`), because it needs the
|
|
67
|
+
* plan-level shared-surrogate envelope rather than an AST `BaseOp`: the shared join key is
|
|
68
|
+
* not a view column, so it is sourced from the anchor key column's declared `default` once
|
|
69
|
+
* per row at the envelope and threaded into the active base inserts via the equivalence
|
|
70
|
+
* class (§ Mutation Context). For an outer join the **non-preserved** side is an *optional*
|
|
71
|
+
* member of the fan-out — dropped when its columns are absent (the preserved-only insert),
|
|
72
|
+
* presence-gated per row when supplied (the both-side insert).
|
|
73
|
+
*
|
|
74
|
+
* **Deferred, rejected here with a structured diagnostic:**
|
|
75
|
+
* - UPDATE of a non-preserved outer-join column — `unsupported-outer-join-update`.
|
|
76
|
+
* - INSERT of only non-preserved columns with no preserved anchor — `null-extended-create-conflict`.
|
|
77
|
+
* - cross / set-op / aggregate / window bodies — `unsupported-*`.
|
|
78
|
+
* - comma (implicit) joins, `select *` join bodies, and cross-side `set` value
|
|
79
|
+
* references — each a precise diagnostic.
|
|
80
|
+
* - composite **shared-key insert** (the surrogate envelope threads a single-column
|
|
81
|
+
* key) — `unsupported-decomposition-key`. (Composite-PK *identification* on the
|
|
82
|
+
* update/delete capture path IS supported here; only the insert envelope's shared
|
|
83
|
+
* key stays single-column.)
|
|
84
|
+
*/
|
|
85
|
+
/**
|
|
86
|
+
* The shared identity-capture CTE name for a multi-source (n-way inner-join) UPDATE /
|
|
87
|
+
* multi-side DELETE fan-out. Each affected view row's base-PK identities are
|
|
88
|
+
* materialized ONCE — *before* any base op fires — into `rctx.tableContexts` under a
|
|
89
|
+
* shared descriptor. *Every* per-side base op reads its identifying values back from
|
|
90
|
+
* this set via a correlated EXISTS (`exists (select 1 from __vmupd_keys k where
|
|
91
|
+
* k.k<side>_<j> = <side>.<pk<j>> …)`) instead of a live re-query of the join body, so
|
|
92
|
+
* the first op cannot empty the join — or rewrite a predicate column — out from under
|
|
93
|
+
* a later op's identifying subquery (a mutation-order-independent identity). The same
|
|
94
|
+
* capture backs the UPDATE RETURNING re-query (docs/view-updateability.md § Inner Join,
|
|
95
|
+
* § `returning`).
|
|
96
|
+
*
|
|
97
|
+
* The capture relation carries one column **per side per PK column**, named
|
|
98
|
+
* `k<sideIndex>_<pkColumnOrdinal>` ({@link keyColumnName}) — so a composite-PK side
|
|
99
|
+
* contributes `k<side>_0, k<side>_1, …`. This flattened per-side-per-column shape is
|
|
100
|
+
* what generalizes the substrate past the retired single-column `(k0, k1)` tuple.
|
|
101
|
+
*/
|
|
102
|
+
export declare const MS_UPDATE_KEYS_CTE = "__vmupd_keys";
|
|
103
|
+
/**
|
|
104
|
+
* The capture column name for side `sideIndex`'s `j`-th PK column. A single-column-PK
|
|
105
|
+
* side yields just `k<side>_0`; a composite-PK side yields `k<side>_0, k<side>_1, …`.
|
|
106
|
+
*/
|
|
107
|
+
export declare function keyColumnName(sideIndex: number, j: number): string;
|
|
108
|
+
/** One base-table side of the join. */
|
|
109
|
+
interface JoinSide {
|
|
110
|
+
readonly table: TableReferenceNode;
|
|
111
|
+
readonly schema: TableSchema;
|
|
112
|
+
/** AST alias (lowercased) the body uses for this source, or the table name. */
|
|
113
|
+
readonly alias: string;
|
|
114
|
+
/**
|
|
115
|
+
* True when this side is **preserved** by the join shape — an inner-join side, or
|
|
116
|
+
* the preserved side of a LEFT/RIGHT outer join (the left of `left`, the right of
|
|
117
|
+
* `right`). A **non-preserved** side (`preserved: false`) is potentially
|
|
118
|
+
* null-extended: the right of a `left`, the left of a `right`, and *both* sides of
|
|
119
|
+
* a `full` outer join (§ Outer Joins). The per-op routing keys off this: an UPDATE
|
|
120
|
+
* defers a non-preserved-column write, a DELETE routes to preserved side(s), an
|
|
121
|
+
* INSERT treats a non-preserved side as an optional (presence-gated) member.
|
|
122
|
+
*/
|
|
123
|
+
readonly preserved: boolean;
|
|
124
|
+
/**
|
|
125
|
+
* The enclosing outer join's ON predicate — the *guard* under which this
|
|
126
|
+
* non-preserved side's columns are real (the row is null-extended when the guard
|
|
127
|
+
* fails). Absent for a preserved side, and for an outer join expressed with USING
|
|
128
|
+
* (no AST `Expression` guard). Surfaced from the planned join shape for future
|
|
129
|
+
* per-row materialization; v1 routing does not consume it.
|
|
130
|
+
*/
|
|
131
|
+
readonly guard?: AST.Expression;
|
|
132
|
+
}
|
|
133
|
+
/** One output column of the join view body, by backward lineage. */
|
|
134
|
+
interface OutColumn {
|
|
135
|
+
/** Output (view) column name, lowercased. */
|
|
136
|
+
readonly name: string;
|
|
137
|
+
/** Output (view) column name in its original display spelling (for `returning *`). */
|
|
138
|
+
readonly displayName: string;
|
|
139
|
+
/** Index into `sides` of the owning base table (base-writable columns only). */
|
|
140
|
+
readonly sideIndex?: number;
|
|
141
|
+
/** Owning base column name (base-writable columns only). */
|
|
142
|
+
readonly baseColumn?: string;
|
|
143
|
+
/**
|
|
144
|
+
* True for a `base` lineage site — an identity/rename projection OR a
|
|
145
|
+
* non-identity invertible transform (`inverse` present). Writable on update: an
|
|
146
|
+
* `inverse` column lowers its assigned value through {@link inverse} (§ Scalar
|
|
147
|
+
* Invertibility). A `computed` / `null-extended` site is read-only (`false`).
|
|
148
|
+
*/
|
|
149
|
+
readonly writable: boolean;
|
|
150
|
+
/**
|
|
151
|
+
* True when the owning site is an outer-join **non-preserved** (null-extended)
|
|
152
|
+
* base column. Distinguishes a deferred outer-join column (base lineage present,
|
|
153
|
+
* but the write needs per-row materialization — `unsupported-outer-join-update`)
|
|
154
|
+
* from a genuinely computed column (no base lineage — `no-inverse`). A
|
|
155
|
+
* null-extended base column is still **insertable** (the both-sides envelope
|
|
156
|
+
* supplies it), so it carries {@link sideIndex} / {@link baseColumn}.
|
|
157
|
+
*/
|
|
158
|
+
readonly nullExtended: boolean;
|
|
159
|
+
/**
|
|
160
|
+
* Backward inverse closure for a non-identity invertible base site — maps a
|
|
161
|
+
* *written* (view-domain) value to the base column's value (e.g. `cv + 1` ⇒
|
|
162
|
+
* `w ↦ w - 1`). Absent for an identity/rename column. Insert through such a
|
|
163
|
+
* column is NOT supported (the shared-surrogate envelope writes raw values) —
|
|
164
|
+
* see {@link analyzeMultiSourceInsert}.
|
|
165
|
+
*/
|
|
166
|
+
readonly inverse?: (written: AST.Expression) => AST.Expression;
|
|
167
|
+
/**
|
|
168
|
+
* Domain predicate (base terms) an `inverse` profile restricts to; conjoined
|
|
169
|
+
* into the row-identifying predicate on update (§ Scalar Invertibility). No
|
|
170
|
+
* shipped profile produces one yet (`x ± k` is unrestricted), so it is
|
|
171
|
+
* currently always absent.
|
|
172
|
+
*/
|
|
173
|
+
readonly domain?: AST.Expression;
|
|
174
|
+
/**
|
|
175
|
+
* Set for an outer-join `existence` (`exists … as`) flag column. It maps to **no
|
|
176
|
+
* base column** ({@link sideIndex} / {@link baseColumn} stay undefined), so it is
|
|
177
|
+
* not a base-write target; instead a write to it is a per-row insert/delete of the
|
|
178
|
+
* named component (§ Existence columns). `existenceSide` is the resolved
|
|
179
|
+
* non-preserved side it reifies the match of — the side the flag-flip materializes
|
|
180
|
+
* (`true`) or removes (`false`). The write router keys off this presence.
|
|
181
|
+
*/
|
|
182
|
+
readonly existenceComponent?: RelationalComponentRef;
|
|
183
|
+
/** The non-preserved side index the existence flag drives (present iff {@link existenceComponent}). */
|
|
184
|
+
readonly existenceSide?: number;
|
|
185
|
+
/**
|
|
186
|
+
* Set for an authored (`with inverse`) column — writable through the put
|
|
187
|
+
* expressions, one base assignment per put, each routed to its owning join side
|
|
188
|
+
* ({@link sideIndex} / {@link baseColumn} stay undefined: there is no single
|
|
189
|
+
* verbatim base column). `newRefIndex` maps a put's `new.<name>` references to
|
|
190
|
+
* output column indexes of this analysis's `outColumns`
|
|
191
|
+
* (docs/view-updateability.md § Authored inverses).
|
|
192
|
+
*/
|
|
193
|
+
readonly authored?: {
|
|
194
|
+
readonly puts: ReadonlyArray<{
|
|
195
|
+
readonly sideIndex: number;
|
|
196
|
+
readonly baseColumn: string;
|
|
197
|
+
readonly expr: AST.Expression;
|
|
198
|
+
}>;
|
|
199
|
+
readonly newRefIndex: ReadonlyMap<string, number>;
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
export interface JoinViewAnalysis {
|
|
203
|
+
readonly sel: AST.SelectStmt;
|
|
204
|
+
/** The base-table sides (≥2), in AST source order; routing is keyed by index 0..n-1. */
|
|
205
|
+
readonly sides: readonly JoinSide[];
|
|
206
|
+
/** View column name (lowercased) -> its base-term replacement expression. */
|
|
207
|
+
readonly viewColToBaseRef: ReadonlyMap<string, AST.Expression>;
|
|
208
|
+
readonly outColumns: readonly OutColumn[];
|
|
209
|
+
/**
|
|
210
|
+
* The planned view body (the source of `updateLineage`). Reused by the DELETE
|
|
211
|
+
* RETURNING re-query (the OLD view image, projected `pre` over `root`) — so the
|
|
212
|
+
* body is planned **once** rather than re-expanded through the view name.
|
|
213
|
+
*/
|
|
214
|
+
readonly root: RelationalPlanNode;
|
|
215
|
+
/**
|
|
216
|
+
* The raw `JoinNode` inside {@link root} (the ON-condition join, *before* the
|
|
217
|
+
* body's σ/projection). The capture's identifying relation and the UPDATE
|
|
218
|
+
* RETURNING re-query are built directly on top of it (Filter + Project plan
|
|
219
|
+
* nodes) instead of re-planning a cloned AST body — the derived backward walk
|
|
220
|
+
* the docs name (§ Round-Trip Laws and the Derived Backward Walk).
|
|
221
|
+
*/
|
|
222
|
+
readonly joinNode: JoinNode;
|
|
223
|
+
/**
|
|
224
|
+
* The join's combined column scope (`ctx.outputScopes.get(joinNode)`), which
|
|
225
|
+
* resolves both alias-qualified (`j1.id`) and unqualified base columns — the
|
|
226
|
+
* exact scope `buildSelectStmt` used when planning the body. Reused to build the
|
|
227
|
+
* identifying predicate / PK projections / RETURNING columns as `ScalarPlanNode`s
|
|
228
|
+
* over {@link joinNode}, so resolution is byte-identical to the retired re-plan.
|
|
229
|
+
*/
|
|
230
|
+
readonly joinScope: Scope;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* True when the view body is a join (and so routes to this multi-source path
|
|
234
|
+
* rather than the single-source spine). Cheap AST peek — no plan built.
|
|
235
|
+
*
|
|
236
|
+
* A **compound (set-op) body** returns `false` even when its left-most leg's FROM is a
|
|
237
|
+
* join (`select … from a join b … union …`): a set-op body routes to the set-op write path
|
|
238
|
+
* (`set-op.ts`), never this multi-source join spine, whose capture/lineage walk reads only
|
|
239
|
+
* the leg's `JoinNode` and silently ignores the surrounding compound — mishandling it
|
|
240
|
+
* (`set-op-write-multisource-leg-reject`). Excluding it here lets such a body fall through to
|
|
241
|
+
* the single-source spine's clean `classifyViewBody` reject (the intent
|
|
242
|
+
* `propagate.ts` already documents). The set-op path itself detects a multi-source LEG by
|
|
243
|
+
* calling this same predicate on the **leg** SELECT (which carries no `compound`).
|
|
244
|
+
*/
|
|
245
|
+
export declare function isJoinBody(selectAst: AST.QueryExpr): boolean;
|
|
246
|
+
/**
|
|
247
|
+
* Non-throwing AST shape check — the boolean shadow of {@link collectJoinSources}'s
|
|
248
|
+
* acceptance: `true` iff the body is a single explicit **n-way (≥2) equi-join** — `inner`,
|
|
249
|
+
* `left`, `right`, or `full` (RIGHT is the exact mirror of LEFT; FULL has no preserved
|
|
250
|
+
* side, so it self-conservatizes downstream; see {@link collectJoinSources}) with an ON
|
|
251
|
+
* (or USING) predicate over plain base tables (the
|
|
252
|
+
* exact multi-source shape `propagate()` decomposes), including **composite-PK sides** and
|
|
253
|
+
* **self-joins** (one base table under two or more distinct aliases). Every other
|
|
254
|
+
* multi-table body — cross / comma (implicit) / subquery- or function-source — returns
|
|
255
|
+
* `false`.
|
|
256
|
+
*
|
|
257
|
+
* Shared with the static updateability surfaces (`deriveViewInfo` /
|
|
258
|
+
* `deriveColumnInfo` in `func/builtins/schema.ts`): they gate on this so they
|
|
259
|
+
* agree with what a real mutation through the view accepts. An outer join is now
|
|
260
|
+
* **partially** writable (preserved-side update, delete-to-preserved, insert), so it is
|
|
261
|
+
* decomposable here; those surfaces read per-column `null-extended` lineage to report a
|
|
262
|
+
* non-preserved column non-updatable (the matching deferral). The throwing
|
|
263
|
+
* {@link collectJoinSources} stays the substrate's source of truth; this mirrors only its
|
|
264
|
+
* AST-level shape gate (it does not re-check DISTINCT/LIMIT/`select *`, which are deeper
|
|
265
|
+
* semantic rejects handled downstream — PK shape is no longer a reject now that composite
|
|
266
|
+
* keys are admitted).
|
|
267
|
+
*/
|
|
268
|
+
export declare function isDecomposableJoinBody(selectAst: AST.QueryExpr): boolean;
|
|
269
|
+
/**
|
|
270
|
+
* True iff `selectAst` is a decomposable join body ({@link isDecomposableJoinBody}) whose
|
|
271
|
+
* joins are **all INNER**. The set-op join-leg compose
|
|
272
|
+
* (`set-op-write-multisource-leg-compose`) ships INNER join legs — the gate is purely
|
|
273
|
+
* `joinType`-based, so a non-equi (theta) INNER join is admitted identically to an equi-join.
|
|
274
|
+
* An OUTER (left/right/full) join leg's set-op write composition is deferred. The set-op
|
|
275
|
+
* recognizers gate on this so a body with an outer-join leg reports the conservative
|
|
276
|
+
* all-`NO` static surface AND rejects the dynamic write cleanly (never an internal error),
|
|
277
|
+
* matching exactly. A cross / no-ON join (not decomposable) likewise fails this and is
|
|
278
|
+
* deferred — agreeing with `analyzeJoinView`'s downstream reject.
|
|
279
|
+
*/
|
|
280
|
+
export declare function isInnerJoinBody(selectAst: AST.QueryExpr): boolean;
|
|
281
|
+
/**
|
|
282
|
+
* Decompose a multi-source (n-way `inner`/`left`/`full` join) view mutation into
|
|
283
|
+
* an ordered `BaseOp[]`. Throws a structured diagnostic for any unsupported shape.
|
|
284
|
+
*/
|
|
285
|
+
export declare function propagateMultiSource(ctx: PlanningContext, view: MutableViewLike, req: MutationRequest): BaseOp[];
|
|
286
|
+
/**
|
|
287
|
+
* One base side of a multi-source insert, fully resolved: the base columns it
|
|
288
|
+
* writes (shared key first, then the supplied view columns it owns) and, for
|
|
289
|
+
* each, the index into the materialized envelope row supplying the value.
|
|
290
|
+
*/
|
|
291
|
+
export interface MsInsertSide {
|
|
292
|
+
readonly table: TableReferenceNode;
|
|
293
|
+
readonly schema: TableSchema;
|
|
294
|
+
readonly targetColumns: readonly string[];
|
|
295
|
+
readonly envelopeIndices: readonly number[];
|
|
296
|
+
/**
|
|
297
|
+
* Envelope indices whose non-null presence gates this side's insert per row — a
|
|
298
|
+
* non-preserved (outer-join optional) member inserts only for rows that supply ≥1
|
|
299
|
+
* of its columns (§ Outer Joins — Inserts). Empty ⇒ unconditional (a preserved /
|
|
300
|
+
* inner side, always inserted). Reuses the decomposition fan-out's presence gate
|
|
301
|
+
* (`buildDecompositionMemberInsert`).
|
|
302
|
+
*/
|
|
303
|
+
readonly presenceGateIndices: readonly number[];
|
|
304
|
+
/**
|
|
305
|
+
* Set when this side's shared-key (FK-child) column must be threaded conditionally:
|
|
306
|
+
* `keyTargetIndex` is its position in `targetColumns` (0 — the key is pushed first
|
|
307
|
+
* when `needsSharedKey`), and `groups` is an AND-of-(OR-within) list of envelope
|
|
308
|
+
* indices — one inner group per presence-gated FK-parent partner — that gates the
|
|
309
|
+
* key. When all referenced presence-gated partners are absent for a row, the key
|
|
310
|
+
* column projects null (the correct "no partner" marker), so the FK does not dangle
|
|
311
|
+
* (§ Outer Joins — Inserts). Absent ⇒ the key threads unconditionally (a
|
|
312
|
+
* parent/anchor side, or a key shared only among always-active sides).
|
|
313
|
+
*/
|
|
314
|
+
readonly keyGate?: {
|
|
315
|
+
readonly keyTargetIndex: number;
|
|
316
|
+
readonly groups: readonly (readonly number[])[];
|
|
317
|
+
};
|
|
318
|
+
/**
|
|
319
|
+
* Per-side constant-FD insert-defaults lifted from the join body's σ (where-clause)
|
|
320
|
+
* equality constants (§ Inner Join — Inserts; the multi-source analog of the single-
|
|
321
|
+
* source § Selection rule). Each entry supplies an omitted σ-constrained base column its
|
|
322
|
+
* σ value, so the inserted row satisfies the view predicate and is visible through the
|
|
323
|
+
* view. Unlike the minted shared key these are NOT envelope-sourced — they are per-row
|
|
324
|
+
* **constants**, so they carry their literal node directly and ride the side's
|
|
325
|
+
* `ProjectNode` as a compiled constant (`buildExpression`), needing no envelope column.
|
|
326
|
+
* Because the projection rides the side (not the VALUES rows), this also supports a
|
|
327
|
+
* **SELECT-source** insert (a strict capability gain over the single-source path, which
|
|
328
|
+
* defers σ-defaulting for SELECT sources). Empty/absent ⇒ no σ-constrained columns this
|
|
329
|
+
* side. A σ over the side's shared join key is skipped (the EC thread owns that value).
|
|
330
|
+
*/
|
|
331
|
+
readonly sigmaDefaults?: readonly {
|
|
332
|
+
readonly baseColumn: string;
|
|
333
|
+
readonly valueExpr: AST.Expression;
|
|
334
|
+
}[];
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* The plan-agnostic decomposition of a multi-source inner-join INSERT, consumed
|
|
338
|
+
* by `buildMultiSourceInsert`. The **envelope** is the per-row augmented source:
|
|
339
|
+
* its leading columns are the supplied view columns (`suppliedColumns`, in
|
|
340
|
+
* user-source order), optionally followed by a surrogate shared key sourced from
|
|
341
|
+
* the anchor key column's declared `default` (`keyDefault`). Each side reads its
|
|
342
|
+
* values back out of that one materialized envelope, so the default is evaluated
|
|
343
|
+
* exactly once per row and the value threads across both base inserts via the
|
|
344
|
+
* equivalence class (docs/view-updateability.md § Mutation Context).
|
|
345
|
+
*/
|
|
346
|
+
export interface MsInsertAnalysis {
|
|
347
|
+
readonly suppliedColumns: readonly {
|
|
348
|
+
readonly name: string;
|
|
349
|
+
readonly type: ScalarType;
|
|
350
|
+
}[];
|
|
351
|
+
/** Sides ordered FK-parent before FK-child (the FK-safe insert order). */
|
|
352
|
+
readonly orderedSides: readonly MsInsertSide[];
|
|
353
|
+
/**
|
|
354
|
+
* The anchor key column's declared `default`, evaluated once per produced row at
|
|
355
|
+
* the envelope (with `mutation_ordinal()` in scope) and threaded into every side's
|
|
356
|
+
* key column via the equivalence class. Set only when the shared key is **not**
|
|
357
|
+
* directly supplied; absent ⇒ a supplied view column threads the key.
|
|
358
|
+
*/
|
|
359
|
+
readonly keyDefault?: AST.Expression;
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Decompose an n-way key-preserving INSERT into the per-side base inserts plus the
|
|
363
|
+
* shared-surrogate envelope they fan out from. Throws a structured diagnostic for any
|
|
364
|
+
* unsupported shape (computed target column, a not-null base column with no value, a
|
|
365
|
+
* non-equi-join key, …). The shared key remains **single-column**: a side contributing a
|
|
366
|
+
* composite shared key to the join's equivalence class is rejected with
|
|
367
|
+
* `unsupported-decomposition-key` (the envelope threads one key value per row).
|
|
368
|
+
*
|
|
369
|
+
* **Outer joins** (§ Outer Joins — Inserts): a **non-preserved** side is an *optional*
|
|
370
|
+
* member of the fan-out. A side whose columns are all absent emits no insert (it is
|
|
371
|
+
* dropped); a non-preserved side that IS supplied is presence-gated per row (it inserts
|
|
372
|
+
* only for rows supplying ≥1 of its columns). The shared key is minted/threaded only when
|
|
373
|
+
* ≥2 sides are active (the preserved-only case is a single preserved insert — the row
|
|
374
|
+
* reads back null-extended); an insert supplying *only* non-preserved columns, with no
|
|
375
|
+
* preserved anchor row to attach to, is rejected `null-extended-create-conflict` (v1).
|
|
376
|
+
*/
|
|
377
|
+
export declare function analyzeMultiSourceInsert(ctx: PlanningContext, view: MutableViewLike, stmt: AST.InsertStmt): MsInsertAnalysis;
|
|
378
|
+
export declare function analyzeJoinView(ctx: PlanningContext, view: MutableViewLike): JoinViewAnalysis;
|
|
379
|
+
/**
|
|
380
|
+
* A partner-side base column a cross-source SET value reads (`update v set a.x = b.y`),
|
|
381
|
+
* captured into `__vmupd_keys` so the lowered single-table UPDATE can read it back. The
|
|
382
|
+
* `expr` is the read column in base terms (alias-qualified — `b.y`), projected into the
|
|
383
|
+
* capture over the join body's scope under the stable `alias` (`src0`, `src1`, …); the
|
|
384
|
+
* rewritten value (`select <alias> from __vmupd_keys k where <ownerPk = capture>`) reads
|
|
385
|
+
* it correlated by the owning side's PK. Because the capture materializes **before** any
|
|
386
|
+
* base op fires, the read-back value is the **pre-mutation** partner value — robust to a
|
|
387
|
+
* both-sides update that also rewrites it (docs/view-updateability.md § Inner Join).
|
|
388
|
+
*/
|
|
389
|
+
export interface CrossSourceValue {
|
|
390
|
+
readonly alias: string;
|
|
391
|
+
readonly expr: AST.Expression;
|
|
392
|
+
}
|
|
393
|
+
export declare function decomposeUpdate(ctx: PlanningContext, view: MutableViewLike, analysis: JoinViewAnalysis, stmt: AST.UpdateStmt, sourceValues?: CrossSourceValue[], captureRelationName?: string): BaseOp[];
|
|
394
|
+
/**
|
|
395
|
+
* The up-front base-PK identity capture for a multi-source (n-way inner-join) UPDATE or
|
|
396
|
+
* multi-side DELETE fan-out (docs/view-updateability.md § Inner Join, § `returning`).
|
|
397
|
+
* Built ONCE and shared between the per-side base ops' identifying subqueries and (for
|
|
398
|
+
* an UPDATE with RETURNING) the RETURNING re-query.
|
|
399
|
+
*
|
|
400
|
+
* - `source`: the capture SELECT `select s0.pk0 as k0_0[, s0.pk1 as k0_1], s1.pk0 as
|
|
401
|
+
* k1_0, … from <body> where <idPredicate>` — the emitter materializes it into
|
|
402
|
+
* `rctx.tableContexts` under {@link descriptor} **before** any base op runs.
|
|
403
|
+
* - `descriptor`: the identity stitch shared between the materialized capture rows
|
|
404
|
+
* and every {@link InternalRecursiveCTERefNode} that reads them back.
|
|
405
|
+
* - `keyColumns`: the flattened `k<side>_<j>` column shape (one entry per requested
|
|
406
|
+
* side per PK column) each reader mints a key ref over.
|
|
407
|
+
* - `relationName`: the AST relation name this capture is injected under in `cteNodes`
|
|
408
|
+
* (and that every base-op predicate reads back via `from <relationName> k`). Absent ⇒
|
|
409
|
+
* {@link MS_UPDATE_KEYS_CTE} — the standalone multi-source / decomposition / set-op /
|
|
410
|
+
* CTE-self-read paths all use the shared default. A **nested** capture mints a fresh
|
|
411
|
+
* name so two captures can coexist by name in one lowered statement
|
|
412
|
+
* (`set-op-write-multisource-leg-compose`): the inner per-branch capture's readers and
|
|
413
|
+
* its injected ref agree on the fresh name while shadowing nothing under the default.
|
|
414
|
+
*/
|
|
415
|
+
export interface MultiSourceKeyCapture {
|
|
416
|
+
readonly source: RelationalPlanNode;
|
|
417
|
+
readonly descriptor: TableDescriptor;
|
|
418
|
+
readonly keyColumns: readonly {
|
|
419
|
+
readonly name: string;
|
|
420
|
+
readonly type: ScalarType;
|
|
421
|
+
}[];
|
|
422
|
+
readonly relationName?: string;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Mint a context-backed key relation (`InternalRecursiveCTERefNode`) over a
|
|
426
|
+
* capture's descriptor — what a multi-side base op's identifying `in`-subquery or
|
|
427
|
+
* the RETURNING re-query's EXISTS scans `__vmupd_keys` through. Fresh attribute ids
|
|
428
|
+
* per call (each ref lives in its own subtree); the **descriptor** identity is what
|
|
429
|
+
* ties it to the rows the emitter materializes.
|
|
430
|
+
*
|
|
431
|
+
* `captureRelationName` is used for BOTH the node's display CTE name and every
|
|
432
|
+
* attribute's `sourceRelation`, so a half-updated node can never keep the constant as
|
|
433
|
+
* `sourceRelation` while the caller injects under a fresh name. It defaults to the
|
|
434
|
+
* capture's own {@link MultiSourceKeyCapture.relationName} (falling back to
|
|
435
|
+
* {@link MS_UPDATE_KEYS_CTE}), so a ref minted from a fresh-named capture is
|
|
436
|
+
* self-consistent without the caller re-passing the name.
|
|
437
|
+
*/
|
|
438
|
+
export declare function makeMultiSourceKeyRef(scope: Scope, capture: MultiSourceKeyCapture, captureRelationName?: string): InternalRecursiveCTERefNode;
|
|
439
|
+
/**
|
|
440
|
+
* A planning context with `capture` injected into `cteNodes` under its relation name (the
|
|
441
|
+
* capture's {@link MultiSourceKeyCapture.relationName}, defaulting to {@link MS_UPDATE_KEYS_CTE}),
|
|
442
|
+
* so a base op's / inner capture's `from <relationName> k` reference resolves to the capture's
|
|
443
|
+
* context-backed key relation (over the shared capture descriptor). The injected ref's own
|
|
444
|
+
* name is pinned to the SAME `relationName` so the map key and the ref agree — a nested capture
|
|
445
|
+
* injects under its fresh `__vmupd_keys$N` name while shadowing nothing under the default. A
|
|
446
|
+
* fresh ref per call keeps each consumer's subtree from sharing a node instance.
|
|
447
|
+
*
|
|
448
|
+
* Shared by the multi-source UPDATE/DELETE builder (`view-mutation-builder.ts`) and the set-op
|
|
449
|
+
* join-leg compose (`set-op.ts`, which injects the OUTER set-op capture so an inner per-branch
|
|
450
|
+
* capture's `memberExists` filter resolves against it).
|
|
451
|
+
*/
|
|
452
|
+
export declare function withKeyCapture(ctx: PlanningContext, capture: MultiSourceKeyCapture): PlanningContext;
|
|
453
|
+
/**
|
|
454
|
+
* The distinct join-side indices the emitted base ops target (each base op carries the
|
|
455
|
+
* planned side's `TableReferenceNode`), sorted ascending — the sides whose PKs the capture
|
|
456
|
+
* must project so each op's `select k<side> from <relationName>` resolves. Shared by the
|
|
457
|
+
* standalone multi-source UPDATE/DELETE builder (`view-mutation-builder.ts`) and the set-op
|
|
458
|
+
* join-leg compose (`set-op.ts`), which each pass it straight to
|
|
459
|
+
* {@link buildMultiSourceKeyCapture}.
|
|
460
|
+
*/
|
|
461
|
+
export declare function capturedSideIndices(baseOps: readonly BaseOp[], analysis: JoinViewAnalysis): number[];
|
|
462
|
+
/**
|
|
463
|
+
* Build the up-front identity capture: each affected view row's base-PK identities,
|
|
464
|
+
* by the same identifying predicate the base ops route on (user WHERE → base ∧ body
|
|
465
|
+
* WHERE). Built as **plan nodes directly over the ALREADY-planned join body**
|
|
466
|
+
* (`analysis.joinNode` + `analysis.joinScope`) — `Project_{k<side>_<j>}(Filter_{idPred}
|
|
467
|
+
* (joinNode))` — instead of re-planning a cloned AST FROM, so the body is planned
|
|
468
|
+
* ONCE (§ Round-Trip Laws and the Derived Backward Walk). `preserveInputColumns=false`
|
|
469
|
+
* ⇒ the materialized rows are exactly the requested key columns, positionally aligned
|
|
470
|
+
* to the `k<side>_<j>` columns every reader scans back (`keyColumns` and the projection
|
|
471
|
+
* derive from the same `sideIndices` order; a composite-PK side contributes one column
|
|
472
|
+
* per PK column).
|
|
473
|
+
*
|
|
474
|
+
* `sideIndices` selects which sides' PKs to capture (each requires ≥1 PK column via
|
|
475
|
+
* {@link requireKeyColumns}; a keyless side is rejected with `unsupported-join`). The
|
|
476
|
+
* builder passes exactly the sides whose base ops read the capture (plus all sides, for
|
|
477
|
+
* an UPDATE with RETURNING whose EXISTS correlates the full joined row), so a single-
|
|
478
|
+
* side write never forces a PK on an untouched side.
|
|
479
|
+
*
|
|
480
|
+
* Op-agnostic: takes the user `where` directly (an UPDATE's or a DELETE's) — the
|
|
481
|
+
* identifying predicate is the same either way.
|
|
482
|
+
*
|
|
483
|
+
* `captureRelationName` is the AST relation name the resulting capture is injected
|
|
484
|
+
* under (and that the base-op predicates `decomposeUpdate`/`decomposeDelete` emit read
|
|
485
|
+
* back); it is stamped onto the returned {@link MultiSourceKeyCapture.relationName} so
|
|
486
|
+
* downstream injection/RETURNING read it from the capture object rather than
|
|
487
|
+
* re-deriving the literal. Defaults to {@link MS_UPDATE_KEYS_CTE} — the standalone
|
|
488
|
+
* multi-source path is byte-identical; a nested capture passes a fresh name.
|
|
489
|
+
*/
|
|
490
|
+
export declare function buildMultiSourceKeyCapture(ctx: PlanningContext, view: MutableViewLike, where: AST.Expression | undefined, analysis: JoinViewAnalysis, sideIndices: readonly number[], sourceValues?: readonly CrossSourceValue[], captureRelationName?: string): MultiSourceKeyCapture;
|
|
491
|
+
/**
|
|
492
|
+
* Build the post-mutation RETURNING re-query for a multi-source UPDATE
|
|
493
|
+
* (docs/view-updateability.md § `returning`). A re-query that matched by the *user
|
|
494
|
+
* predicate* cannot recapture a row whose predicate column the update itself
|
|
495
|
+
* rewrote (the changed row no longer matches), so this matches by the captured
|
|
496
|
+
* **identity** instead: project the view-spelled, base-term RETURNING columns over
|
|
497
|
+
* the post-mutation join body, restricted to the captured identities by a correlated
|
|
498
|
+
* `exists (select 1 from __vmupd_keys k where <per-side identity>)` — so a row the
|
|
499
|
+
* update pushed *out* of the view's filter (or whose predicate column it rewrote) is
|
|
500
|
+
* still returned (single-source NEW semantics). It keeps only the structural join
|
|
501
|
+
* ON-condition; the body/user WHERE is intentionally NOT re-applied.
|
|
502
|
+
*
|
|
503
|
+
* The per-side identity is **preserved-keyed**: a preserved side matches by exact
|
|
504
|
+
* per-PK-column equality (`k.k<p>_<j> = s<p>.pk<j>`), while a non-preserved (outer-join
|
|
505
|
+
* null-extended) side uses a matched-OR-null disjunction `(AND_j k.k<np>_<j> =
|
|
506
|
+
* s<np>.pk<j>) OR (AND_j k.k<np>_<j> is null)`. This re-keys the re-query off the
|
|
507
|
+
* **stable preserved-side identity** so a freshly-materialized null-extended row (whose
|
|
508
|
+
* non-preserved PK was captured NULL) surfaces via its preserved-side equalities alone,
|
|
509
|
+
* rather than being silently dropped by a `NULL = <minted pk>` match. For an all-
|
|
510
|
+
* preserved (inner) join every side is exact equality — byte-identical to the prior
|
|
511
|
+
* behavior, so inner-join RETURNING is unchanged.
|
|
512
|
+
*
|
|
513
|
+
* Reads the shared {@link MultiSourceKeyCapture} the builder materializes
|
|
514
|
+
* before the base ops fire (via its own freshly-minted key ref over the same
|
|
515
|
+
* descriptor). The capture covers ALL sides for an UPDATE with RETURNING, so this
|
|
516
|
+
* correlates the full joined row's identity.
|
|
517
|
+
*/
|
|
518
|
+
export declare function buildMultiSourceUpdateReturning(ctx: PlanningContext, view: MutableViewLike, stmt: AST.UpdateStmt, capture: MultiSourceKeyCapture, analysis: JoinViewAnalysis): RelationalPlanNode;
|
|
519
|
+
/**
|
|
520
|
+
* Build the pre-mutation RETURNING re-query for a multi-source DELETE
|
|
521
|
+
* (docs/view-updateability.md § `returning`). The OLD view image of the rows about
|
|
522
|
+
* to vanish: project the view-spelled, base-term RETURNING columns over the raw
|
|
523
|
+
* `analysis.joinNode` restricted to the identifying predicate (user WHERE → base ∧
|
|
524
|
+
* body WHERE — the same predicate the key capture and base ops route on). Captured
|
|
525
|
+
* `pre` (before the base ops fire) so it reads the live base tables through the join.
|
|
526
|
+
*
|
|
527
|
+
* Building the projection in **base terms** (rather than referencing the planned
|
|
528
|
+
* body `root`'s output attribute ids) is what fixes a computed view column: a
|
|
529
|
+
* computed column has no surviving intermediate attribute id after project-merge, so
|
|
530
|
+
* a by-id reference dangles — recomputing from base columns has nothing fragile to
|
|
531
|
+
* reference. Mirrors {@link buildMultiSourceUpdateReturning}; they differ only in the
|
|
532
|
+
* filter + timing.
|
|
533
|
+
*/
|
|
534
|
+
export declare function buildMultiSourceDeleteReturning(ctx: PlanningContext, view: MutableViewLike, stmt: AST.DeleteStmt, analysis: JoinViewAnalysis): RelationalPlanNode;
|
|
535
|
+
export declare function decomposeDelete(_ctx: PlanningContext, view: MutableViewLike, analysis: JoinViewAnalysis, stmt: AST.DeleteStmt, captureRelationName?: string): BaseOp[];
|
|
536
|
+
/**
|
|
537
|
+
* The correlated scalar read a cross-source SET value lowers to:
|
|
538
|
+
* `(select <srcAlias> from __vmupd_keys k where k.k<owningSide>_0 = <pk0> [and …])`
|
|
539
|
+
* — `<srcAlias>` is the capture projection of the partner base column; the unqualified
|
|
540
|
+
* `<pk_j>` bind to the lowered UPDATE's own target row (the owning side), matching the
|
|
541
|
+
* per-side identifying EXISTS so each target row reads the captured pre-mutation partner
|
|
542
|
+
* value of its joined row. Composite owning keys conjoin one equality per PK column.
|
|
543
|
+
*
|
|
544
|
+
* `dedupAggregate` wraps the projection in that aggregate (`min(k.<srcAlias>)`) so the
|
|
545
|
+
* correlated read is single-valued even when the owning PK matches MORE THAN ONE capture
|
|
546
|
+
* row — the non-preserved-side fan-out case, where N preserved rows share one non-preserved
|
|
547
|
+
* partner so its PK matches all N captures (§ Outer Joins). For a constant / np-only SET the
|
|
548
|
+
* captured value is identical across the group so `min` is an exact no-op de-dup; for a
|
|
549
|
+
* value that genuinely differs per preserved row it resolves the ambiguity deterministically
|
|
550
|
+
* rather than erroring at runtime. The cross-source `set` callers leave it off (their gate
|
|
551
|
+
* already proves at-most-one partner), keeping the bare-column form byte-identical.
|
|
552
|
+
*
|
|
553
|
+
* `correlationAlias` qualifies each owning-PK right operand (`<pk_j>` → `<alias>.<pk_j>`).
|
|
554
|
+
* When this read-back nests inside a user value subquery whose own FROM introduces a
|
|
555
|
+
* column named like the owning PK, a **bare** `<pk_j>` would re-bind to that inner column
|
|
556
|
+
* by innermost-scope SQL rules (keying the read-back on the wrong value); qualifying it with
|
|
557
|
+
* the lowered per-side UPDATE's collision-proof alias ({@link SELF_ALIAS}) binds the outer
|
|
558
|
+
* target row instead. The multi-source per-side callers pass `SELF_ALIAS`; `decomposition.ts`
|
|
559
|
+
* and any caller that omits it keep the bare form (byte-identical — composite keys still
|
|
560
|
+
* qualify every conjunct only when supplied).
|
|
561
|
+
*
|
|
562
|
+
* `captureRelationName` is the relation the correlated read scans (`from <name> k`); it
|
|
563
|
+
* defaults to {@link MS_UPDATE_KEYS_CTE} so the standalone multi-source and decomposition
|
|
564
|
+
* callers are byte-identical, while a nested multi-source capture threads its fresh name.
|
|
565
|
+
*/
|
|
566
|
+
export declare function capturedValueSubquery(srcAlias: string, owningSideIndex: number, owningPk: readonly string[], dedupAggregate?: string, correlationAlias?: string, captureRelationName?: string): AST.Expression;
|
|
567
|
+
export {};
|
|
568
|
+
//# sourceMappingURL=multi-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-source.d.ts","sourceRoot":"","sources":["../../../../src/planner/mutation/multi-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAA8B,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EAAY,KAAK,kBAAkB,EAAkB,KAAK,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC7I,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,EAAE,kBAAkB,EAAuB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAI1F,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAKjD,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAK/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAElE;AAID,uCAAuC;AACvC,UAAU,QAAQ;IACjB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;CAChC;AAED,oEAAoE;AACpE,UAAU,SAAS;IAClB,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,CAAC;IAC/D;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IACrD,uGAAuG;IACvG,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACnB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;YAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAA;SAAE,CAAC,CAAC;QACzH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClD,CAAC;CACF;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC;IAC7B,wFAAwF;IACxF,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/D,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;CAC1B;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,GAAG,OAAO,CAI5D;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,GAAG,OAAO,CAgCxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,GAAG,OAAO,CAMjE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CAsBhH;AAID;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAA;KAAE,CAAC;IACxG;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAA;KAAE,EAAE,CAAC;CACxG;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,eAAe,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IAC1F,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/C;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;CACrC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,GAAG,gBAAgB,CA0T5H;AAmSD,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,GAAG,gBAAgB,CAmK7F;AAoPD;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,gBAAgB,EAAE,EAAE,mBAAmB,GAAE,MAA2B,GAAG,MAAM,EAAE,CAiY5N;AAiND;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IACrF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,qBAAqB,EAC9B,mBAAmB,GAAE,MAAmD,GACtE,2BAA2B,CAgB7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,qBAAqB,GAAG,eAAe,CAKpG;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAOpG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,0BAA0B,CACzC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,GAAG,CAAC,UAAU,GAAG,SAAS,EACjC,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,YAAY,CAAC,EAAE,SAAS,gBAAgB,EAAE,EAC1C,mBAAmB,GAAE,MAA2B,GAC9C,qBAAqB,CA6CvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,+BAA+B,CAC9C,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,gBAAgB,GACxB,kBAAkB,CA+DpB;AA4ED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,+BAA+B,CAC9C,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,QAAQ,EAAE,gBAAgB,GACxB,kBAAkB,CASpB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,mBAAmB,GAAE,MAA2B,GAAG,MAAM,EAAE,CAoF1L;AAyRD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,mBAAmB,GAAE,MAA2B,GAAG,GAAG,CAAC,UAAU,CAoBlO"}
|