@quereus/quereus 4.5.0 → 4.7.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 +5 -4
- package/dist/src/common/errors.d.ts +17 -0
- package/dist/src/common/errors.d.ts.map +1 -1
- package/dist/src/common/errors.js +21 -0
- package/dist/src/common/errors.js.map +1 -1
- package/dist/src/core/database-assertions.d.ts +4 -3
- package/dist/src/core/database-assertions.d.ts.map +1 -1
- package/dist/src/core/database-assertions.js +44 -14
- package/dist/src/core/database-assertions.js.map +1 -1
- package/dist/src/core/database-events.d.ts +161 -1
- package/dist/src/core/database-events.d.ts.map +1 -1
- package/dist/src/core/database-events.js +307 -5
- package/dist/src/core/database-events.js.map +1 -1
- package/dist/src/core/database-internal.d.ts +5 -2
- package/dist/src/core/database-internal.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views-plan-builders.js +33 -4
- package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
- package/dist/src/core/database-materialized-views-plans.d.ts +12 -2
- package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views.d.ts +46 -0
- package/dist/src/core/database-materialized-views.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views.js +75 -4
- package/dist/src/core/database-materialized-views.js.map +1 -1
- package/dist/src/core/database-transaction.d.ts +9 -0
- package/dist/src/core/database-transaction.d.ts.map +1 -1
- package/dist/src/core/database-transaction.js +9 -0
- package/dist/src/core/database-transaction.js.map +1 -1
- package/dist/src/core/database.d.ts +16 -2
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +56 -15
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/derived-row-validator.d.ts.map +1 -1
- package/dist/src/core/derived-row-validator.js +7 -1
- package/dist/src/core/derived-row-validator.js.map +1 -1
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +15 -5
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/emit/ast-stringify.d.ts +18 -2
- package/dist/src/emit/ast-stringify.d.ts.map +1 -1
- package/dist/src/emit/ast-stringify.js +22 -4
- package/dist/src/emit/ast-stringify.js.map +1 -1
- package/dist/src/func/builtins/aggregate.js +11 -11
- 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 +15 -85
- package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
- package/dist/src/func/builtins/conversion.d.ts.map +1 -1
- package/dist/src/func/builtins/conversion.js +10 -9
- package/dist/src/func/builtins/conversion.js.map +1 -1
- package/dist/src/func/builtins/datetime.d.ts.map +1 -1
- package/dist/src/func/builtins/datetime.js +28 -10
- package/dist/src/func/builtins/datetime.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +19 -5
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/json.d.ts.map +1 -1
- package/dist/src/func/builtins/json.js +23 -17
- package/dist/src/func/builtins/json.js.map +1 -1
- package/dist/src/func/builtins/mutation.js +2 -2
- package/dist/src/func/builtins/mutation.js.map +1 -1
- package/dist/src/func/builtins/return-types.d.ts +327 -0
- package/dist/src/func/builtins/return-types.d.ts.map +1 -0
- package/dist/src/func/builtins/return-types.js +43 -0
- package/dist/src/func/builtins/return-types.js.map +1 -0
- package/dist/src/func/builtins/scalar.d.ts.map +1 -1
- package/dist/src/func/builtins/scalar.js +150 -79
- package/dist/src/func/builtins/scalar.js.map +1 -1
- package/dist/src/func/builtins/schema.d.ts.map +1 -1
- package/dist/src/func/builtins/schema.js +43 -8
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/func/builtins/string.d.ts.map +1 -1
- package/dist/src/func/builtins/string.js +4 -2
- package/dist/src/func/builtins/string.js.map +1 -1
- package/dist/src/func/builtins/timespan.d.ts +3 -0
- package/dist/src/func/builtins/timespan.d.ts.map +1 -1
- package/dist/src/func/builtins/timespan.js +15 -11
- package/dist/src/func/builtins/timespan.js.map +1 -1
- package/dist/src/func/registration.d.ts +35 -1
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js +235 -41
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +14 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +15 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/ast.d.ts +58 -1
- package/dist/src/parser/ast.d.ts.map +1 -1
- package/dist/src/parser/parser.d.ts +46 -0
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +161 -45
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/parser/utils.d.ts +13 -1
- package/dist/src/parser/utils.d.ts.map +1 -1
- package/dist/src/parser/utils.js +14 -0
- package/dist/src/parser/utils.js.map +1 -1
- package/dist/src/planner/analysis/assertion-classifier.d.ts.map +1 -1
- package/dist/src/planner/analysis/assertion-classifier.js +7 -2
- 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 +5 -0
- package/dist/src/planner/analysis/assertion-hoist-cache.js.map +1 -1
- package/dist/src/planner/analysis/change-scope.d.ts +11 -3
- package/dist/src/planner/analysis/change-scope.d.ts.map +1 -1
- package/dist/src/planner/analysis/change-scope.js +5 -4
- package/dist/src/planner/analysis/change-scope.js.map +1 -1
- package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
- package/dist/src/planner/analysis/check-extraction.js +37 -4
- package/dist/src/planner/analysis/check-extraction.js.map +1 -1
- package/dist/src/planner/analysis/comparison-collation.d.ts +20 -22
- package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
- package/dist/src/planner/analysis/comparison-collation.js +29 -26
- package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts +0 -7
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +59 -59
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -1
- package/dist/src/planner/analysis/coverage-prover.js +13 -5
- package/dist/src/planner/analysis/coverage-prover.js.map +1 -1
- package/dist/src/planner/analysis/equi-correlation.d.ts +6 -1
- package/dist/src/planner/analysis/equi-correlation.d.ts.map +1 -1
- package/dist/src/planner/analysis/equi-correlation.js +8 -1
- package/dist/src/planner/analysis/equi-correlation.js.map +1 -1
- package/dist/src/planner/analysis/predicate-dependencies.d.ts +34 -0
- package/dist/src/planner/analysis/predicate-dependencies.d.ts.map +1 -0
- package/dist/src/planner/analysis/predicate-dependencies.js +60 -0
- package/dist/src/planner/analysis/predicate-dependencies.js.map +1 -0
- package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +1 -1
- package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
- package/dist/src/planner/analysis/query-rewrite-matcher.js +0 -26
- package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
- package/dist/src/planner/building/alter-table.d.ts.map +1 -1
- package/dist/src/planner/building/alter-table.js +117 -43
- package/dist/src/planner/building/alter-table.js.map +1 -1
- package/dist/src/planner/building/coercion.d.ts +21 -45
- package/dist/src/planner/building/coercion.d.ts.map +1 -1
- package/dist/src/planner/building/coercion.js +42 -91
- package/dist/src/planner/building/coercion.js.map +1 -1
- package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
- package/dist/src/planner/building/constraint-builder.js +9 -5
- package/dist/src/planner/building/constraint-builder.js.map +1 -1
- package/dist/src/planner/building/create-assertion.d.ts.map +1 -1
- package/dist/src/planner/building/create-assertion.js +72 -1
- package/dist/src/planner/building/create-assertion.js.map +1 -1
- package/dist/src/planner/building/create-view.d.ts +6 -1
- package/dist/src/planner/building/create-view.d.ts.map +1 -1
- package/dist/src/planner/building/create-view.js +12 -3
- 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 +6 -2
- package/dist/src/planner/building/ddl.js.map +1 -1
- package/dist/src/planner/building/delete.d.ts.map +1 -1
- package/dist/src/planner/building/delete.js +23 -10
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/dml-target.d.ts.map +1 -1
- package/dist/src/planner/building/dml-target.js +4 -0
- package/dist/src/planner/building/dml-target.js.map +1 -1
- package/dist/src/planner/building/drop-assertion.d.ts.map +1 -1
- package/dist/src/planner/building/drop-assertion.js +3 -1
- package/dist/src/planner/building/drop-assertion.js.map +1 -1
- package/dist/src/planner/building/expression.d.ts +17 -0
- package/dist/src/planner/building/expression.d.ts.map +1 -1
- package/dist/src/planner/building/expression.js +28 -17
- package/dist/src/planner/building/expression.js.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.js +7 -5
- package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
- package/dist/src/planner/building/function-call.d.ts +35 -0
- package/dist/src/planner/building/function-call.d.ts.map +1 -1
- package/dist/src/planner/building/function-call.js +60 -42
- package/dist/src/planner/building/function-call.js.map +1 -1
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +185 -48
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/materialized-view.d.ts.map +1 -1
- package/dist/src/planner/building/materialized-view.js +3 -1
- package/dist/src/planner/building/materialized-view.js.map +1 -1
- package/dist/src/planner/building/schema-authored-context.d.ts +69 -0
- package/dist/src/planner/building/schema-authored-context.d.ts.map +1 -0
- package/dist/src/planner/building/schema-authored-context.js +75 -0
- package/dist/src/planner/building/schema-authored-context.js.map +1 -0
- package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
- package/dist/src/planner/building/schema-resolution.js +7 -4
- package/dist/src/planner/building/schema-resolution.js.map +1 -1
- package/dist/src/planner/building/select-aggregates.d.ts +188 -3
- package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.js +449 -65
- package/dist/src/planner/building/select-aggregates.js.map +1 -1
- package/dist/src/planner/building/select-compound.js +2 -2
- package/dist/src/planner/building/select-compound.js.map +1 -1
- package/dist/src/planner/building/select-context.d.ts +98 -0
- package/dist/src/planner/building/select-context.d.ts.map +1 -1
- package/dist/src/planner/building/select-context.js +120 -37
- package/dist/src/planner/building/select-context.js.map +1 -1
- package/dist/src/planner/building/select-modifiers.d.ts +10 -3
- package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
- package/dist/src/planner/building/select-modifiers.js +29 -8
- package/dist/src/planner/building/select-modifiers.js.map +1 -1
- package/dist/src/planner/building/select-ordinal.d.ts +64 -19
- package/dist/src/planner/building/select-ordinal.d.ts.map +1 -1
- package/dist/src/planner/building/select-ordinal.js +79 -30
- package/dist/src/planner/building/select-ordinal.js.map +1 -1
- package/dist/src/planner/building/select-projections.d.ts +1 -1
- package/dist/src/planner/building/select-projections.d.ts.map +1 -1
- package/dist/src/planner/building/select-projections.js +18 -11
- package/dist/src/planner/building/select-projections.js.map +1 -1
- package/dist/src/planner/building/select-window.d.ts +13 -3
- package/dist/src/planner/building/select-window.d.ts.map +1 -1
- package/dist/src/planner/building/select-window.js +142 -37
- package/dist/src/planner/building/select-window.js.map +1 -1
- package/dist/src/planner/building/select.d.ts +37 -1
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +240 -109
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/building/update.d.ts.map +1 -1
- package/dist/src/planner/building/update.js +27 -13
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/building/view-mutation-builder.d.ts +1 -1
- package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -1
- package/dist/src/planner/building/view-mutation-builder.js +102 -8
- package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
- package/dist/src/planner/building/with.d.ts.map +1 -1
- package/dist/src/planner/building/with.js +34 -4
- package/dist/src/planner/building/with.js.map +1 -1
- package/dist/src/planner/cache/correlation-detector.d.ts +15 -0
- package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -1
- package/dist/src/planner/cache/correlation-detector.js +26 -0
- package/dist/src/planner/cache/correlation-detector.js.map +1 -1
- package/dist/src/planner/cache/materialization-advisory.d.ts +7 -0
- package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
- package/dist/src/planner/cache/materialization-advisory.js +12 -3
- package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
- package/dist/src/planner/cost/conjunct-cost.d.ts +40 -0
- package/dist/src/planner/cost/conjunct-cost.d.ts.map +1 -1
- package/dist/src/planner/cost/conjunct-cost.js +45 -0
- package/dist/src/planner/cost/conjunct-cost.js.map +1 -1
- package/dist/src/planner/cost/index.d.ts +10 -0
- package/dist/src/planner/cost/index.d.ts.map +1 -1
- package/dist/src/planner/cost/index.js +15 -0
- package/dist/src/planner/cost/index.js.map +1 -1
- package/dist/src/planner/framework/characteristics.d.ts +9 -0
- package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
- package/dist/src/planner/framework/characteristics.js.map +1 -1
- package/dist/src/planner/framework/pass.d.ts +2 -0
- package/dist/src/planner/framework/pass.d.ts.map +1 -1
- package/dist/src/planner/framework/pass.js +15 -0
- package/dist/src/planner/framework/pass.js.map +1 -1
- package/dist/src/planner/mutation/backward-body.d.ts.map +1 -1
- package/dist/src/planner/mutation/backward-body.js +4 -1
- package/dist/src/planner/mutation/backward-body.js.map +1 -1
- package/dist/src/planner/mutation/body-context.d.ts +23 -0
- package/dist/src/planner/mutation/body-context.d.ts.map +1 -0
- package/dist/src/planner/mutation/body-context.js +26 -0
- package/dist/src/planner/mutation/body-context.js.map +1 -0
- package/dist/src/planner/mutation/cte-flatten.js +15 -2
- package/dist/src/planner/mutation/cte-flatten.js.map +1 -1
- package/dist/src/planner/mutation/decomposition.d.ts +8 -0
- package/dist/src/planner/mutation/decomposition.d.ts.map +1 -1
- package/dist/src/planner/mutation/decomposition.js +8 -3
- package/dist/src/planner/mutation/decomposition.js.map +1 -1
- package/dist/src/planner/mutation/lens-enforcement.js +1 -1
- package/dist/src/planner/mutation/multi-source.d.ts +7 -0
- package/dist/src/planner/mutation/multi-source.d.ts.map +1 -1
- package/dist/src/planner/mutation/multi-source.js +5 -0
- package/dist/src/planner/mutation/multi-source.js.map +1 -1
- package/dist/src/planner/mutation/mutation-diagnostic.d.ts +1 -1
- package/dist/src/planner/mutation/mutation-diagnostic.d.ts.map +1 -1
- package/dist/src/planner/mutation/mutation-diagnostic.js.map +1 -1
- package/dist/src/planner/mutation/scope-transform.d.ts +32 -0
- package/dist/src/planner/mutation/scope-transform.d.ts.map +1 -1
- package/dist/src/planner/mutation/scope-transform.js +181 -33
- package/dist/src/planner/mutation/scope-transform.js.map +1 -1
- package/dist/src/planner/mutation/set-op.d.ts.map +1 -1
- package/dist/src/planner/mutation/set-op.js +66 -16
- package/dist/src/planner/mutation/set-op.js.map +1 -1
- package/dist/src/planner/mutation/single-source.d.ts.map +1 -1
- package/dist/src/planner/mutation/single-source.js +100 -24
- package/dist/src/planner/mutation/single-source.js.map +1 -1
- package/dist/src/planner/nodes/add-constraint-node.d.ts +15 -1
- package/dist/src/planner/nodes/add-constraint-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/add-constraint-node.js +10 -1
- package/dist/src/planner/nodes/add-constraint-node.js.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.d.ts +15 -0
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.js +32 -17
- 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 +2 -1
- package/dist/src/planner/nodes/alias-node.js.map +1 -1
- package/dist/src/planner/nodes/alter-table-node.d.ts +51 -10
- package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/alter-table-node.js +49 -2
- package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
- package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/asof-scan-node.js +4 -1
- package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/asserted-keys-node.js +2 -1
- package/dist/src/planner/nodes/asserted-keys-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 +8 -3
- package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
- package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cache-node.js +2 -1
- package/dist/src/planner/nodes/cache-node.js.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.js +17 -19
- package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
- package/dist/src/planner/nodes/create-assertion-node.d.ts +2 -1
- package/dist/src/planner/nodes/create-assertion-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/create-assertion-node.js +5 -2
- package/dist/src/planner/nodes/create-assertion-node.js.map +1 -1
- package/dist/src/planner/nodes/cte-node.d.ts +19 -9
- package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cte-node.js +25 -9
- package/dist/src/planner/nodes/cte-node.js.map +1 -1
- package/dist/src/planner/nodes/delete-node.d.ts +20 -2
- package/dist/src/planner/nodes/delete-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/delete-node.js +11 -2
- package/dist/src/planner/nodes/delete-node.js.map +1 -1
- package/dist/src/planner/nodes/distinct-node.d.ts +6 -0
- package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/distinct-node.js +10 -2
- package/dist/src/planner/nodes/distinct-node.js.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts +58 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.js +107 -15
- package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
- package/dist/src/planner/nodes/drop-assertion-node.d.ts +2 -1
- package/dist/src/planner/nodes/drop-assertion-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/drop-assertion-node.js +5 -2
- package/dist/src/planner/nodes/drop-assertion-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 -1
- package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -1
- package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts +5 -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 +13 -6
- 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 +18 -5
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts +1 -0
- package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.js +21 -16
- package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/insert-node.d.ts +19 -2
- package/dist/src/planner/nodes/insert-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/insert-node.js +10 -2
- package/dist/src/planner/nodes/insert-node.js.map +1 -1
- package/dist/src/planner/nodes/join-node.d.ts +20 -1
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +30 -9
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/join-utils.d.ts +21 -0
- package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-utils.js +26 -0
- package/dist/src/planner/nodes/join-utils.js.map +1 -1
- package/dist/src/planner/nodes/key-set-semi-join-node.d.ts +42 -10
- package/dist/src/planner/nodes/key-set-semi-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/key-set-semi-join-node.js +90 -17
- package/dist/src/planner/nodes/key-set-semi-join-node.js.map +1 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts +5 -0
- package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.js +2 -1
- package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
- package/dist/src/planner/nodes/limit-offset.d.ts +6 -0
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
- package/dist/src/planner/nodes/limit-offset.js +10 -2
- package/dist/src/planner/nodes/limit-offset.js.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.js +8 -3
- package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts +5 -0
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.js +9 -2
- package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +29 -0
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node.js +12 -0
- package/dist/src/planner/nodes/plan-node.js.map +1 -1
- package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/project-node.js +18 -36
- 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 +3 -2
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.d.ts +16 -2
- package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/retrieve-node.js +10 -2
- 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 +13 -32
- package/dist/src/planner/nodes/returning-node.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +5 -18
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/planner/nodes/sort.d.ts.map +1 -1
- package/dist/src/planner/nodes/sort.js +3 -1
- package/dist/src/planner/nodes/sort.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts +1 -0
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +22 -20
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +89 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +69 -2
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/update-node.d.ts +19 -2
- package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/update-node.js +10 -2
- package/dist/src/planner/nodes/update-node.js.map +1 -1
- package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-function.js +8 -0
- package/dist/src/planner/nodes/window-function.js.map +1 -1
- package/dist/src/planner/nodes/window-node.d.ts +1 -1
- package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-node.js +3 -1
- package/dist/src/planner/nodes/window-node.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts +27 -1
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +130 -10
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/planning-context.d.ts +24 -0
- package/dist/src/planner/planning-context.d.ts.map +1 -1
- package/dist/src/planner/planning-context.js.map +1 -1
- package/dist/src/planner/rules/access/rule-key-set-seek.d.ts +78 -20
- package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-key-set-seek.js +296 -135
- package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
- package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-monotonic-range-access.js +2 -2
- package/dist/src/planner/rules/access/rule-monotonic-range-access.js.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts +30 -1
- 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 +70 -5
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts +7 -4
- 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 +39 -5
- package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.js +15 -2
- package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +10 -3
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +6 -4
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -1
- package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +5 -31
- package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -1
- package/dist/src/planner/rules/join/equi-pair-extractor.js +4 -44
- package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -1
- package/dist/src/planner/rules/join/index-nested-loop.d.ts +49 -0
- package/dist/src/planner/rules/join/index-nested-loop.d.ts.map +1 -0
- package/dist/src/planner/rules/join/index-nested-loop.js +291 -0
- package/dist/src/planner/rules/join/index-nested-loop.js.map +1 -0
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +8 -8
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts +4 -0
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +50 -15
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
- package/dist/src/planner/rules/join/rule-join-elimination.d.ts +6 -0
- package/dist/src/planner/rules/join/rule-join-elimination.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-elimination.js +25 -9
- package/dist/src/planner/rules/join/rule-join-elimination.js.map +1 -1
- package/dist/src/planner/rules/join/rule-join-key-inference.d.ts +7 -0
- package/dist/src/planner/rules/join/rule-join-key-inference.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-key-inference.js +23 -11
- package/dist/src/planner/rules/join/rule-join-key-inference.js.map +1 -1
- package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts +10 -4
- 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 +115 -29
- package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts +2 -0
- 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 +18 -4
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts +2 -2
- 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 +19 -22
- package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts +21 -8
- package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js +70 -14
- package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +56 -17
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +103 -154
- package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts +76 -0
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js +208 -0
- package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts +14 -11
- 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 +21 -85
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts +7 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +18 -22
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
- package/dist/src/planner/rules/shared/access-leaf.d.ts +52 -0
- package/dist/src/planner/rules/shared/access-leaf.d.ts.map +1 -0
- package/dist/src/planner/rules/shared/access-leaf.js +95 -0
- package/dist/src/planner/rules/shared/access-leaf.js.map +1 -0
- 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 +17 -7
- 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 +3 -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 +26 -9
- 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 +69 -11
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
- package/dist/src/planner/rules/window/rule-monotonic-window.d.ts +17 -7
- package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
- package/dist/src/planner/rules/window/rule-monotonic-window.js +124 -87
- package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
- package/dist/src/planner/scopes/aliased.d.ts.map +1 -1
- package/dist/src/planner/scopes/aliased.js +6 -0
- package/dist/src/planner/scopes/aliased.js.map +1 -1
- package/dist/src/planner/stats/catalog-stats.d.ts +44 -13
- package/dist/src/planner/stats/catalog-stats.d.ts.map +1 -1
- package/dist/src/planner/stats/catalog-stats.js +137 -61
- package/dist/src/planner/stats/catalog-stats.js.map +1 -1
- package/dist/src/planner/stats/conjunct-selectivity.d.ts +48 -0
- package/dist/src/planner/stats/conjunct-selectivity.d.ts.map +1 -0
- package/dist/src/planner/stats/conjunct-selectivity.js +168 -0
- package/dist/src/planner/stats/conjunct-selectivity.js.map +1 -0
- package/dist/src/planner/stats/index.d.ts +22 -3
- package/dist/src/planner/stats/index.d.ts.map +1 -1
- package/dist/src/planner/stats/index.js.map +1 -1
- package/dist/src/planner/stats/table-cardinality.d.ts +28 -0
- package/dist/src/planner/stats/table-cardinality.d.ts.map +1 -0
- package/dist/src/planner/stats/table-cardinality.js +29 -0
- package/dist/src/planner/stats/table-cardinality.js.map +1 -0
- package/dist/src/planner/stored-body-context.d.ts +57 -0
- package/dist/src/planner/stored-body-context.d.ts.map +1 -0
- package/dist/src/planner/stored-body-context.js +64 -0
- package/dist/src/planner/stored-body-context.js.map +1 -0
- package/dist/src/planner/util/column-origins.d.ts +29 -8
- package/dist/src/planner/util/column-origins.d.ts.map +1 -1
- package/dist/src/planner/util/column-origins.js +74 -14
- package/dist/src/planner/util/column-origins.js.map +1 -1
- package/dist/src/planner/util/fd-utils.d.ts +32 -8
- package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
- package/dist/src/planner/util/fd-utils.js +46 -9
- package/dist/src/planner/util/fd-utils.js.map +1 -1
- package/dist/src/planner/util/ind-utils.d.ts +66 -19
- package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
- package/dist/src/planner/util/ind-utils.js +91 -21
- package/dist/src/planner/util/ind-utils.js.map +1 -1
- package/dist/src/planner/util/key-utils.d.ts +36 -3
- package/dist/src/planner/util/key-utils.d.ts.map +1 -1
- package/dist/src/planner/util/key-utils.js +57 -7
- package/dist/src/planner/util/key-utils.js.map +1 -1
- package/dist/src/planner/util/output-names.d.ts +12 -0
- package/dist/src/planner/util/output-names.d.ts.map +1 -0
- package/dist/src/planner/util/output-names.js +20 -0
- package/dist/src/planner/util/output-names.js.map +1 -0
- package/dist/src/planner/util/row-estimates.d.ts +39 -0
- package/dist/src/planner/util/row-estimates.d.ts.map +1 -0
- package/dist/src/planner/util/row-estimates.js +68 -0
- package/dist/src/planner/util/row-estimates.js.map +1 -0
- package/dist/src/planner/util/row-population.d.ts +42 -0
- package/dist/src/planner/util/row-population.d.ts.map +1 -0
- package/dist/src/planner/util/row-population.js +71 -0
- package/dist/src/planner/util/row-population.js.map +1 -0
- package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.js +3 -2
- package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
- package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
- package/dist/src/runtime/emit/add-constraint.js +60 -6
- 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 +4 -4
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/alter-schema-event.d.ts +97 -0
- package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -0
- package/dist/src/runtime/emit/alter-schema-event.js +87 -0
- package/dist/src/runtime/emit/alter-schema-event.js.map +1 -0
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +582 -236
- 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 +50 -7
- package/dist/src/runtime/emit/analyze.js.map +1 -1
- package/dist/src/runtime/emit/assertion-drop-guard.d.ts +37 -0
- package/dist/src/runtime/emit/assertion-drop-guard.d.ts.map +1 -0
- package/dist/src/runtime/emit/assertion-drop-guard.js +59 -0
- package/dist/src/runtime/emit/assertion-drop-guard.js.map +1 -0
- package/dist/src/runtime/emit/assertion-rename-helpers.d.ts +33 -0
- package/dist/src/runtime/emit/assertion-rename-helpers.d.ts.map +1 -0
- package/dist/src/runtime/emit/assertion-rename-helpers.js +124 -0
- package/dist/src/runtime/emit/assertion-rename-helpers.js.map +1 -0
- package/dist/src/runtime/emit/cast.d.ts.map +1 -1
- package/dist/src/runtime/emit/cast.js +4 -19
- package/dist/src/runtime/emit/cast.js.map +1 -1
- package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
- package/dist/src/runtime/emit/constraint-check.js +10 -227
- package/dist/src/runtime/emit/constraint-check.js.map +1 -1
- package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-assertion.js +31 -14
- package/dist/src/runtime/emit/create-assertion.js.map +1 -1
- package/dist/src/runtime/emit/cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/cte.js +11 -6
- package/dist/src/runtime/emit/cte.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +233 -28
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.js +8 -8
- package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
- package/dist/src/runtime/emit/drop-column-guards.d.ts +151 -0
- package/dist/src/runtime/emit/drop-column-guards.d.ts.map +1 -0
- package/dist/src/runtime/emit/drop-column-guards.js +230 -0
- package/dist/src/runtime/emit/drop-column-guards.js.map +1 -0
- package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-index.js +4 -3
- package/dist/src/runtime/emit/drop-index.js.map +1 -1
- package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-table.js +6 -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 +4 -0
- package/dist/src/runtime/emit/drop-view.js.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.js +2 -2
- package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
- package/dist/src/runtime/emit/join.d.ts.map +1 -1
- package/dist/src/runtime/emit/join.js +8 -67
- package/dist/src/runtime/emit/join.js.map +1 -1
- package/dist/src/runtime/emit/key-set-semi-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/key-set-semi-join.js +11 -3
- package/dist/src/runtime/emit/key-set-semi-join.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts +4 -4
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.js +34 -22
- package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view.js +7 -2
- package/dist/src/runtime/emit/materialized-view.js.map +1 -1
- package/dist/src/runtime/emit/operand-comparator.d.ts +30 -0
- package/dist/src/runtime/emit/operand-comparator.d.ts.map +1 -1
- package/dist/src/runtime/emit/operand-comparator.js +34 -0
- package/dist/src/runtime/emit/operand-comparator.js.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.js +4 -5
- package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.js +30 -0
- package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
- package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
- package/dist/src/runtime/emit/subquery.js +153 -52
- package/dist/src/runtime/emit/subquery.js.map +1 -1
- package/dist/src/runtime/emit/update.d.ts.map +1 -1
- package/dist/src/runtime/emit/update.js +18 -6
- package/dist/src/runtime/emit/update.js.map +1 -1
- package/dist/src/runtime/emit/window.js +36 -23
- package/dist/src/runtime/emit/window.js.map +1 -1
- package/dist/src/runtime/row-constraints.d.ts +85 -0
- package/dist/src/runtime/row-constraints.d.ts.map +1 -0
- package/dist/src/runtime/row-constraints.js +239 -0
- package/dist/src/runtime/row-constraints.js.map +1 -0
- package/dist/src/runtime/types.d.ts +8 -11
- package/dist/src/runtime/types.d.ts.map +1 -1
- package/dist/src/runtime/types.js.map +1 -1
- package/dist/src/schema/assertion.d.ts +14 -1
- package/dist/src/schema/assertion.d.ts.map +1 -1
- package/dist/src/schema/assertion.js +14 -1
- package/dist/src/schema/assertion.js.map +1 -1
- package/dist/src/schema/catalog-persistability.d.ts +19 -16
- package/dist/src/schema/catalog-persistability.d.ts.map +1 -1
- package/dist/src/schema/catalog-persistability.js +92 -20
- package/dist/src/schema/catalog-persistability.js.map +1 -1
- package/dist/src/schema/catalog.d.ts +73 -2
- package/dist/src/schema/catalog.d.ts.map +1 -1
- package/dist/src/schema/catalog.js +220 -39
- package/dist/src/schema/catalog.js.map +1 -1
- package/dist/src/schema/column-source-resolver.d.ts +18 -0
- package/dist/src/schema/column-source-resolver.d.ts.map +1 -0
- package/dist/src/schema/column-source-resolver.js +22 -0
- package/dist/src/schema/column-source-resolver.js.map +1 -0
- package/dist/src/schema/column.d.ts +26 -3
- 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.map +1 -1
- package/dist/src/schema/constraint-builder.js +7 -1
- package/dist/src/schema/constraint-builder.js.map +1 -1
- package/dist/src/schema/ddl-generator.d.ts.map +1 -1
- package/dist/src/schema/ddl-generator.js +27 -6
- package/dist/src/schema/ddl-generator.js.map +1 -1
- package/dist/src/schema/function.d.ts +32 -1
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js +10 -2
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/lens-compiler.d.ts.map +1 -1
- package/dist/src/schema/lens-compiler.js +203 -51
- package/dist/src/schema/lens-compiler.js.map +1 -1
- package/dist/src/schema/lens-prover.d.ts +2 -3
- package/dist/src/schema/lens-prover.d.ts.map +1 -1
- package/dist/src/schema/lens-prover.js +19 -11
- package/dist/src/schema/lens-prover.js.map +1 -1
- package/dist/src/schema/manager.d.ts +115 -20
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +202 -70
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/rename-rewriter.d.ts +142 -0
- package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
- package/dist/src/schema/rename-rewriter.js +254 -9
- package/dist/src/schema/rename-rewriter.js.map +1 -1
- package/dist/src/schema/reserved-tags.d.ts +1 -1
- package/dist/src/schema/reserved-tags.d.ts.map +1 -1
- package/dist/src/schema/reserved-tags.js +4 -3
- package/dist/src/schema/reserved-tags.js.map +1 -1
- package/dist/src/schema/schema-differ.d.ts +16 -0
- package/dist/src/schema/schema-differ.d.ts.map +1 -1
- package/dist/src/schema/schema-differ.js +225 -38
- package/dist/src/schema/schema-differ.js.map +1 -1
- package/dist/src/schema/table.d.ts +149 -1
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +248 -1
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/schema/unique-enforcement.d.ts +5 -3
- package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
- package/dist/src/schema/unique-enforcement.js +5 -3
- package/dist/src/schema/unique-enforcement.js.map +1 -1
- package/dist/src/schema/view.d.ts +11 -0
- package/dist/src/schema/view.d.ts.map +1 -1
- package/dist/src/schema/view.js +12 -0
- package/dist/src/schema/view.js.map +1 -1
- package/dist/src/types/builtin-types.d.ts +54 -0
- package/dist/src/types/builtin-types.d.ts.map +1 -1
- package/dist/src/types/builtin-types.js +123 -34
- package/dist/src/types/builtin-types.js.map +1 -1
- package/dist/src/types/cast-semantics.d.ts +42 -0
- package/dist/src/types/cast-semantics.d.ts.map +1 -1
- package/dist/src/types/cast-semantics.js +64 -0
- package/dist/src/types/cast-semantics.js.map +1 -1
- package/dist/src/types/comparison-coercion.d.ts +101 -0
- package/dist/src/types/comparison-coercion.d.ts.map +1 -0
- package/dist/src/types/comparison-coercion.js +162 -0
- package/dist/src/types/comparison-coercion.js.map +1 -0
- package/dist/src/types/index.d.ts +2 -2
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +2 -2
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/logical-type.d.ts +7 -0
- package/dist/src/types/logical-type.d.ts.map +1 -1
- package/dist/src/types/logical-type.js.map +1 -1
- package/dist/src/types/validation.d.ts +56 -0
- package/dist/src/types/validation.d.ts.map +1 -1
- package/dist/src/types/validation.js +68 -0
- package/dist/src/types/validation.js.map +1 -1
- package/dist/src/util/{working-table-iterable.d.ts → array-row-iterable.d.ts} +6 -6
- package/dist/src/util/array-row-iterable.d.ts.map +1 -0
- package/dist/src/util/{working-table-iterable.js → array-row-iterable.js} +6 -6
- package/dist/src/util/array-row-iterable.js.map +1 -0
- package/dist/src/util/coercion.d.ts +8 -0
- package/dist/src/util/coercion.d.ts.map +1 -1
- package/dist/src/util/coercion.js +8 -0
- package/dist/src/util/coercion.js.map +1 -1
- package/dist/src/util/comparison.d.ts +16 -3
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +21 -5
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/util/key-serializer.d.ts +46 -0
- package/dist/src/util/key-serializer.d.ts.map +1 -1
- package/dist/src/util/key-serializer.js +47 -0
- package/dist/src/util/key-serializer.js.map +1 -1
- package/dist/src/util/value-set.d.ts +21 -0
- package/dist/src/util/value-set.d.ts.map +1 -0
- package/dist/src/util/value-set.js +22 -0
- package/dist/src/util/value-set.js.map +1 -0
- package/dist/src/vtab/capabilities.d.ts +1 -1
- package/dist/src/vtab/events.d.ts +8 -1
- package/dist/src/vtab/events.d.ts.map +1 -1
- package/dist/src/vtab/events.js.map +1 -1
- package/dist/src/vtab/manifest.d.ts +15 -0
- package/dist/src/vtab/manifest.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/alter-column.d.ts +147 -0
- package/dist/src/vtab/memory/layer/alter-column.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/alter-column.js +214 -0
- package/dist/src/vtab/memory/layer/alter-column.js.map +1 -0
- package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base.js +4 -3
- package/dist/src/vtab/memory/layer/base.js.map +1 -1
- package/dist/src/vtab/memory/layer/interface.d.ts +2 -2
- package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.d.ts +176 -25
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +569 -558
- package/dist/src/vtab/memory/layer/manager.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 +32 -5
- package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.d.ts +101 -15
- package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.js +133 -45
- package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts +16 -1
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +64 -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 +11 -6
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/module.d.ts +77 -23
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/dist/src/vtab/table.d.ts +9 -2
- package/dist/src/vtab/table.d.ts.map +1 -1
- package/dist/src/vtab/table.js +1 -1
- package/dist/src/vtab/table.js.map +1 -1
- package/package.json +3 -3
- package/dist/src/util/working-table-iterable.d.ts.map +0 -1
- package/dist/src/util/working-table-iterable.js.map +0 -1
|
@@ -19,9 +19,11 @@
|
|
|
19
19
|
* (`UNBOUNDED PRECEDING TO CURRENT ROW`, ROWS or RANGE — RANGE handles peer
|
|
20
20
|
* groups via delayed emit at peer boundaries)
|
|
21
21
|
* - `SUM` / `COUNT` / `AVG` / `MIN` / `MAX` / `FIRST_VALUE` / `LAST_VALUE`
|
|
22
|
-
* over a sliding frame `ROWS BETWEEN n PRECEDING AND m FOLLOWING`
|
|
23
|
-
*
|
|
24
|
-
*
|
|
22
|
+
* over a sliding frame `ROWS BETWEEN n PRECEDING AND m FOLLOWING` or
|
|
23
|
+
* `RANGE BETWEEN n PRECEDING AND m FOLLOWING` (single numeric ORDER BY key),
|
|
24
|
+
* `n` and `m` being non-negative integer literals in both modes. Either
|
|
25
|
+
* bound may instead be `CURRENT ROW`, which is that bound at offset zero;
|
|
26
|
+
* a start-only frame (`ROWS n PRECEDING`) means `... AND CURRENT ROW`.
|
|
25
27
|
*
|
|
26
28
|
* Bail conditions:
|
|
27
29
|
*
|
|
@@ -34,12 +36,20 @@
|
|
|
34
36
|
* - frame is anything other than the default (or the explicit equivalent
|
|
35
37
|
* `UNBOUNDED PRECEDING TO CURRENT ROW` in `ROWS` or `RANGE`), or a
|
|
36
38
|
* supported sliding shape (see above)
|
|
39
|
+
* - `RANGE` sliding frame whose ORDER BY is not a single numeric key
|
|
40
|
+
* (`isRangeSlidingEligible`)
|
|
41
|
+
* - frame offset that is not a non-negative integer literal (`readFrameOffset`)
|
|
42
|
+
*
|
|
43
|
+
* Every bail is a *performance* decision, never a semantic one: a shape this
|
|
44
|
+
* rule recognizes must produce exactly the rows the buffered frame walk in
|
|
45
|
+
* `runtime/emit/window.ts` produces for it. The two RANGE-specific bails above
|
|
46
|
+
* exist precisely because the two paths would otherwise answer differently.
|
|
47
|
+
* `test/plan/window-one-sided-frames.spec.ts` runs every case both ways.
|
|
37
48
|
*
|
|
38
49
|
* Out of scope (deferred): NTILE/PERCENT_RANK/CUME_DIST (need partition size up
|
|
39
|
-
* front), DISTINCT aggregates,
|
|
40
|
-
* (`UNBOUNDED PRECEDING AND m FOLLOWING`, `n PRECEDING AND UNBOUNDED
|
|
41
|
-
*
|
|
42
|
-
* buffered halves.
|
|
50
|
+
* front), DISTINCT aggregates, unbounded-on-one-side sliding shapes
|
|
51
|
+
* (`UNBOUNDED PRECEDING AND m FOLLOWING`, `n PRECEDING AND UNBOUNDED
|
|
52
|
+
* FOLLOWING`), splitting a mixed WindowNode into streaming + buffered halves.
|
|
43
53
|
*/
|
|
44
54
|
import { createLogger } from '../../../common/logger.js';
|
|
45
55
|
import { WindowNode } from '../../nodes/window-node.js';
|
|
@@ -68,52 +78,110 @@ function isDefaultEquivalentFrame(frame) {
|
|
|
68
78
|
return frame.end.type === 'currentRow';
|
|
69
79
|
}
|
|
70
80
|
/**
|
|
71
|
-
*
|
|
81
|
+
* Read one frame bound as a non-negative offset from the current row, in the
|
|
82
|
+
* direction that bound sits on (`preceding` for the start bound, `following`
|
|
83
|
+
* for the end bound).
|
|
84
|
+
*
|
|
85
|
+
* `CURRENT ROW` is the offset-zero case of the bound it replaces:
|
|
86
|
+
*
|
|
87
|
+
* - ROWS: row `j` itself, which is what `0 PRECEDING` / `0 FOLLOWING` select.
|
|
88
|
+
* - RANGE: every peer row sharing `v_j`, which is what the range scan's
|
|
89
|
+
* `[v_j - 0, v_j + 0]` interval already selects.
|
|
72
90
|
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
91
|
+
* Returns undefined when the bound is not a recognized offset shape
|
|
92
|
+
* (`UNBOUNDED PRECEDING`/`FOLLOWING`, a non-literal offset, or an offset that
|
|
93
|
+
* is not a non-negative integer).
|
|
94
|
+
*
|
|
95
|
+
* The non-negative-integer rule is what the buffered frame walk's
|
|
96
|
+
* `getFrameOffset` (runtime/emit/window.ts) enforces — it *throws* on anything
|
|
97
|
+
* else, in RANGE mode as much as in ROWS. Accepting a wider set here would make
|
|
98
|
+
* `range between 1.5 preceding and current row` succeed or raise depending on
|
|
99
|
+
* whether the optimizer happened to pick the streaming plan.
|
|
100
|
+
*/
|
|
101
|
+
function readFrameOffset(bound, direction) {
|
|
102
|
+
if (bound.type === 'currentRow')
|
|
103
|
+
return 0;
|
|
104
|
+
if (bound.type !== direction)
|
|
105
|
+
return undefined;
|
|
106
|
+
const offset = tryExtractNumericLiteral(bound.value);
|
|
107
|
+
if (offset === undefined)
|
|
108
|
+
return undefined;
|
|
109
|
+
if (!Number.isInteger(offset) || offset < 0)
|
|
110
|
+
return undefined;
|
|
111
|
+
return offset;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Recognize a sliding-frame shape supported by streaming: a start bound that is
|
|
115
|
+
* `n PRECEDING` or `CURRENT ROW`, and an end bound that is `m FOLLOWING` or
|
|
116
|
+
* `CURRENT ROW` (or absent, since a start-only frame means `... AND CURRENT
|
|
117
|
+
* ROW`). Offsets must be non-negative integer literals in both modes.
|
|
118
|
+
*
|
|
119
|
+
* One-sided shapes reduce to the two-sided form with the `CURRENT ROW` side at
|
|
120
|
+
* offset zero, so `n PRECEDING AND CURRENT ROW` runs the same sliding-buffer
|
|
121
|
+
* state machine as `n PRECEDING AND 0 FOLLOWING`.
|
|
77
122
|
*
|
|
78
123
|
* Returns the recognized shape, or null when the frame is not a supported
|
|
79
|
-
* sliding shape (caller falls back to other recognition paths).
|
|
124
|
+
* sliding shape (caller falls back to other recognition paths). Note that
|
|
125
|
+
* `UNBOUNDED PRECEDING AND CURRENT ROW` is rejected here — callers check
|
|
126
|
+
* `isDefaultEquivalentFrame` first so it keeps routing to the cheaper
|
|
127
|
+
* running-accumulator path.
|
|
80
128
|
*/
|
|
81
129
|
function recognizeSlidingFrame(frame) {
|
|
82
130
|
if (!frame)
|
|
83
131
|
return null;
|
|
84
132
|
if (frame.exclusion && frame.exclusion !== 'no others')
|
|
85
133
|
return null;
|
|
86
|
-
if (frame.end === null)
|
|
87
|
-
return null;
|
|
88
|
-
if (frame.start.type !== 'preceding')
|
|
89
|
-
return null;
|
|
90
|
-
if (frame.end.type !== 'following')
|
|
91
|
-
return null;
|
|
92
134
|
if (frame.type !== 'rows' && frame.type !== 'range')
|
|
93
135
|
return null;
|
|
94
|
-
const preceding =
|
|
95
|
-
|
|
96
|
-
if (preceding === undefined || following === undefined)
|
|
97
|
-
return null;
|
|
98
|
-
if (!Number.isFinite(preceding) || !Number.isFinite(following))
|
|
136
|
+
const preceding = readFrameOffset(frame.start, 'preceding');
|
|
137
|
+
if (preceding === undefined)
|
|
99
138
|
return null;
|
|
100
|
-
|
|
139
|
+
const following = frame.end === null
|
|
140
|
+
? 0
|
|
141
|
+
: readFrameOffset(frame.end, 'following');
|
|
142
|
+
if (following === undefined)
|
|
101
143
|
return null;
|
|
102
|
-
if (frame.type === 'rows') {
|
|
103
|
-
if (!Number.isInteger(preceding) || !Number.isInteger(following))
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
144
|
return { mode: frame.type, preceding, following };
|
|
107
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Whether a RANGE-mode sliding frame may stream on this WindowNode at all.
|
|
148
|
+
*
|
|
149
|
+
* A numeric RANGE offset is arithmetic on the ORDER BY value (`[v - n, v + m]`),
|
|
150
|
+
* which the SQL standard only defines for a single ORDER BY key of a type that
|
|
151
|
+
* arithmetic applies to. The streaming range scan does that arithmetic in
|
|
152
|
+
* `Number` space; the buffered frame walk falls back to peer-group scanning when
|
|
153
|
+
* the value isn't numeric, and the two do NOT agree there — e.g. under a TEXT
|
|
154
|
+
* ORDER BY key the buffered walk still bounds the frame at peer-group edges
|
|
155
|
+
* while the streaming scan treats the whole non-numeric run as one span. So a
|
|
156
|
+
* non-numeric ORDER BY key must keep the buffered path.
|
|
157
|
+
*/
|
|
158
|
+
function isRangeSlidingEligible(orderByExpressions) {
|
|
159
|
+
if (orderByExpressions.length !== 1)
|
|
160
|
+
return false;
|
|
161
|
+
return orderByExpressions[0].getType().logicalType.isNumeric === true;
|
|
162
|
+
}
|
|
163
|
+
/** Classify a WindowNode's frame once, for every function in the node to share. */
|
|
164
|
+
function classifyFrame(frame, orderByExpressions) {
|
|
165
|
+
const sliding = recognizeSlidingFrame(frame);
|
|
166
|
+
const streamable = sliding !== null
|
|
167
|
+
&& (sliding.mode !== 'range' || isRangeSlidingEligible(orderByExpressions));
|
|
168
|
+
return { isDefault: isDefaultEquivalentFrame(frame), sliding: streamable ? sliding : null };
|
|
169
|
+
}
|
|
170
|
+
/** Build the sliding-buffer mode for a recognized aggregate under a sliding frame. */
|
|
171
|
+
function slidingAggMode(name, sliding) {
|
|
172
|
+
return {
|
|
173
|
+
kind: 'slidingAgg',
|
|
174
|
+
name,
|
|
175
|
+
frameMode: sliding.mode,
|
|
176
|
+
preceding: sliding.preceding,
|
|
177
|
+
following: sliding.following,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
108
180
|
/**
|
|
109
181
|
* Decide the streaming mode for a single window function. Returns null if the
|
|
110
182
|
* function is not streaming-capable under v1 preconditions.
|
|
111
|
-
*
|
|
112
|
-
* `orderByLength` is the number of ORDER BY keys on the WindowNode — required
|
|
113
|
-
* for the RANGE-sliding-frame check, which mandates a single numeric ORDER BY
|
|
114
|
-
* key.
|
|
115
183
|
*/
|
|
116
|
-
function recognizeFunctionMode(functionName, isDistinct, args, frame
|
|
184
|
+
function recognizeFunctionMode(functionName, isDistinct, args, frame) {
|
|
117
185
|
if (isDistinct)
|
|
118
186
|
return null;
|
|
119
187
|
const name = functionName.toLowerCase();
|
|
@@ -127,47 +195,21 @@ function recognizeFunctionMode(functionName, isDistinct, args, frame, orderByLen
|
|
|
127
195
|
return { kind: 'rank' };
|
|
128
196
|
case 'dense_rank':
|
|
129
197
|
return { kind: 'denseRank' };
|
|
130
|
-
case 'first_value':
|
|
198
|
+
case 'first_value':
|
|
131
199
|
if (args.length < 1)
|
|
132
200
|
return null;
|
|
133
201
|
// Default-equivalent frame: cache first row's value for the partition.
|
|
134
|
-
if (
|
|
202
|
+
if (frame.isDefault)
|
|
135
203
|
return { kind: 'firstValue' };
|
|
136
204
|
// Sliding frame: defer to slidingAgg machinery.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
if (sliding.mode === 'range' && orderByLength !== 1)
|
|
140
|
-
return null;
|
|
141
|
-
return {
|
|
142
|
-
kind: 'slidingAgg',
|
|
143
|
-
name: 'first_value',
|
|
144
|
-
frameMode: sliding.mode,
|
|
145
|
-
preceding: sliding.preceding,
|
|
146
|
-
following: sliding.following,
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
return null;
|
|
150
|
-
}
|
|
151
|
-
case 'last_value': {
|
|
205
|
+
return frame.sliding && slidingAggMode('first_value', frame.sliding);
|
|
206
|
+
case 'last_value':
|
|
152
207
|
if (args.length < 1)
|
|
153
208
|
return null;
|
|
154
209
|
// LAST_VALUE under the default frame == current row.
|
|
155
|
-
if (
|
|
210
|
+
if (frame.isDefault)
|
|
156
211
|
return { kind: 'lastValue' };
|
|
157
|
-
|
|
158
|
-
if (sliding) {
|
|
159
|
-
if (sliding.mode === 'range' && orderByLength !== 1)
|
|
160
|
-
return null;
|
|
161
|
-
return {
|
|
162
|
-
kind: 'slidingAgg',
|
|
163
|
-
name: 'last_value',
|
|
164
|
-
frameMode: sliding.mode,
|
|
165
|
-
preceding: sliding.preceding,
|
|
166
|
-
following: sliding.following,
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
return null;
|
|
170
|
-
}
|
|
212
|
+
return frame.sliding && slidingAggMode('last_value', frame.sliding);
|
|
171
213
|
case 'lag':
|
|
172
214
|
case 'lead': {
|
|
173
215
|
if (args.length < 1)
|
|
@@ -186,26 +228,13 @@ function recognizeFunctionMode(functionName, isDistinct, args, frame, orderByLen
|
|
|
186
228
|
return { kind: name === 'lag' ? 'lag' : 'lead', offset };
|
|
187
229
|
}
|
|
188
230
|
default:
|
|
189
|
-
if (RECOGNIZED_RUNNING_AGG.has(name))
|
|
190
|
-
if (isDefaultEquivalentFrame(frame))
|
|
191
|
-
return { kind: 'runningAgg' };
|
|
192
|
-
if (RECOGNIZED_SLIDING_AGG.has(name)) {
|
|
193
|
-
const sliding = recognizeSlidingFrame(frame);
|
|
194
|
-
if (sliding) {
|
|
195
|
-
if (sliding.mode === 'range' && orderByLength !== 1)
|
|
196
|
-
return null;
|
|
197
|
-
return {
|
|
198
|
-
kind: 'slidingAgg',
|
|
199
|
-
name: name,
|
|
200
|
-
frameMode: sliding.mode,
|
|
201
|
-
preceding: sliding.preceding,
|
|
202
|
-
following: sliding.following,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
}
|
|
231
|
+
if (!RECOGNIZED_RUNNING_AGG.has(name))
|
|
206
232
|
return null;
|
|
207
|
-
|
|
208
|
-
|
|
233
|
+
if (frame.isDefault)
|
|
234
|
+
return { kind: 'runningAgg' };
|
|
235
|
+
if (!RECOGNIZED_SLIDING_AGG.has(name) || !frame.sliding)
|
|
236
|
+
return null;
|
|
237
|
+
return slidingAggMode(name, frame.sliding);
|
|
209
238
|
}
|
|
210
239
|
}
|
|
211
240
|
export function ruleMonotonicWindow(node, _context) {
|
|
@@ -288,6 +317,13 @@ export function ruleMonotonicWindow(node, _context) {
|
|
|
288
317
|
log('Source ordering prefix too short (have=%d, need=%d)', orderingAttrIds.length, requiredPrefixLen);
|
|
289
318
|
return null;
|
|
290
319
|
}
|
|
320
|
+
// NOTE: a PARTITION BY window never reaches here in practice today. A table
|
|
321
|
+
// access advertises `monotonicOn` for its leading *unbound* index column only
|
|
322
|
+
// (`buildMonotonicAdvertisement`, vtab/memory/module.ts), so on an index
|
|
323
|
+
// (g, k) the advertisement names `g`, and the `monotonicOn` check above
|
|
324
|
+
// rejects `partition by g order by k` before this prefix check runs. If
|
|
325
|
+
// partitioned windows should stream, that advertisement is the thing to
|
|
326
|
+
// widen — the checks below already handle the multi-key shape.
|
|
291
327
|
// First slice: partition attrs in any permutation.
|
|
292
328
|
const partitionPrefix = orderingAttrIds.slice(0, partitionAttrIds.length);
|
|
293
329
|
const partitionSet = new Set(partitionAttrIds);
|
|
@@ -311,7 +347,8 @@ export function ruleMonotonicWindow(node, _context) {
|
|
|
311
347
|
return null;
|
|
312
348
|
}
|
|
313
349
|
}
|
|
314
|
-
// Per-function recognition.
|
|
350
|
+
// Per-function recognition, against the node's one shared frame classification.
|
|
351
|
+
const frameShape = classifyFrame(frame, node.orderByExpressions);
|
|
315
352
|
const modes = [];
|
|
316
353
|
for (let fi = 0; fi < node.functions.length; fi++) {
|
|
317
354
|
const func = node.functions[fi];
|
|
@@ -319,7 +356,7 @@ export function ruleMonotonicWindow(node, _context) {
|
|
|
319
356
|
// LAG/LEAD/FIRST_VALUE/LAST_VALUE need the actual literal AST for the
|
|
320
357
|
// offset. We approximate by inspecting LiteralNode in args.
|
|
321
358
|
const argDescriptors = args.map(a => ({ expression: a.expression }));
|
|
322
|
-
const mode = recognizeFunctionMode(func.functionName, func.isDistinct, argDescriptors,
|
|
359
|
+
const mode = recognizeFunctionMode(func.functionName, func.isDistinct, argDescriptors, frameShape);
|
|
323
360
|
if (!mode) {
|
|
324
361
|
log('Function %s not streaming-capable; falling back', func.functionName);
|
|
325
362
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-monotonic-window.js","sourceRoot":"","sources":["../../../../../src/planner/rules/window/rule-monotonic-window.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rule-monotonic-window.js","sourceRoot":"","sources":["../../../../../src/planner/rules/window/rule-monotonic-window.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aliased.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/aliased.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,SAAS;aAKzB,MAAM,EAAE,KAAK;IAJ9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAGf,MAAM,EAAE,KAAK,EAC7B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM;IAOd,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"aliased.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/aliased.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,SAAS;aAKzB,MAAM,EAAE,KAAK;IAJ9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAGf,MAAM,EAAE,KAAK,EAC7B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM;IAOd,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;CA8BrG"}
|
|
@@ -17,6 +17,12 @@ export class AliasedScope extends BaseScope {
|
|
|
17
17
|
resolveSymbol(symbolKey, expression) {
|
|
18
18
|
const parts = symbolKey.split('.');
|
|
19
19
|
// Handle schema-qualified symbols like "main.j.value"
|
|
20
|
+
// NOTE: for a non-empty parent name this rewrites to "main.<parentName>.value" and asks
|
|
21
|
+
// the parent, but a FROM source's RegisteredScope only holds BARE column names, so the
|
|
22
|
+
// lookup always misses. Three-part column references are unsupported today either way
|
|
23
|
+
// ("main.t.id isn't a column"). If they are ever supported, strip to the bare column name
|
|
24
|
+
// here the way the two-part branch below does — the parent no longer falls back to the
|
|
25
|
+
// enclosing query's scope (see registerColumnScope), so a miss now ends the search.
|
|
20
26
|
if (parts.length === 3 && parts[1].toLowerCase() === this._alias) {
|
|
21
27
|
// Replace alias with parent name: "main.j.value" -> "main..value" -> "main.value" (if parent name is empty)
|
|
22
28
|
if (this._parentName === '') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aliased.js","sourceRoot":"","sources":["../../../../src/planner/scopes/aliased.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,SAAS;IAKzB;IAJA,WAAW,CAAS;IACpB,MAAM,CAAS;IAEhC,YACiB,MAAa,EAC7B,UAAkB,EAClB,KAAa;QAEb,KAAK,EAAE,CAAC;QAJQ,WAAM,GAAN,MAAM,CAAO;QAK7B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,aAAa,CAAC,SAAiB,EAAE,UAA0B;QAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEnC,sDAAsD;QACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAClE,4GAA4G;YAC5G,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;gBAC7B,mFAAmF;gBACnF,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACP,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;YAC/D,CAAC;QACF,CAAC;QACD,0CAA0C;aACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACvE,8DAA8D;YAC9D,iFAAiF;YACjF,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACxD,CAAC;QAED,4EAA4E;QAC5E,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;CACD"}
|
|
1
|
+
{"version":3,"file":"aliased.js","sourceRoot":"","sources":["../../../../src/planner/scopes/aliased.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,SAAS;IAKzB;IAJA,WAAW,CAAS;IACpB,MAAM,CAAS;IAEhC,YACiB,MAAa,EAC7B,UAAkB,EAClB,KAAa;QAEb,KAAK,EAAE,CAAC;QAJQ,WAAM,GAAN,MAAM,CAAO;QAK7B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,aAAa,CAAC,SAAiB,EAAE,UAA0B;QAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEnC,sDAAsD;QACtD,wFAAwF;QACxF,uFAAuF;QACvF,sFAAsF;QACtF,0FAA0F;QAC1F,uFAAuF;QACvF,oFAAoF;QACpF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAClE,4GAA4G;YAC5G,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;gBAC7B,mFAAmF;gBACnF,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACP,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;YAC/D,CAAC;QACF,CAAC;QACD,0CAA0C;aACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACvE,8DAA8D;YAC9D,iFAAiF;YACjF,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACxD,CAAC;QAED,4EAA4E;QAC5E,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;CACD"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import type { SqlValue } from '../../common/types.js';
|
|
8
8
|
import type { ScalarPlanNode } from '../nodes/plan-node.js';
|
|
9
9
|
import type { TableSchema } from '../../schema/table.js';
|
|
10
|
-
import type { StatsProvider } from './index.js';
|
|
10
|
+
import type { ColumnStatsResolver, StatsProvider } from './index.js';
|
|
11
11
|
import { NaiveStatsProvider } from './index.js';
|
|
12
12
|
/**
|
|
13
13
|
* An equi-height histogram bucket.
|
|
@@ -63,15 +63,24 @@ export declare class CatalogStatsProvider implements StatsProvider {
|
|
|
63
63
|
private readonly fallback;
|
|
64
64
|
constructor(fallback?: NaiveStatsProvider);
|
|
65
65
|
tableRows(table: TableSchema): number | undefined;
|
|
66
|
-
selectivity(table: TableSchema, predicate: ScalarPlanNode): number | undefined;
|
|
66
|
+
selectivity(table: TableSchema, predicate: ScalarPlanNode, resolve?: ColumnStatsResolver): number | undefined;
|
|
67
67
|
/**
|
|
68
68
|
* The catalog half of {@link selectivity}: undefined rather than a naive guess
|
|
69
69
|
* when the table carries no statistics, or when the predicate's shape puts it out
|
|
70
|
-
* of reach of the ones it has
|
|
71
|
-
*
|
|
70
|
+
* of reach of the ones it has —
|
|
71
|
+
*
|
|
72
|
+
* - the column is not a direct child of the comparison (`lower(cat) = 'x'` —
|
|
73
|
+
* {@link extractColumnFromPredicate} looks one level down and finds none), or
|
|
74
|
+
* - the column was minted above the base table (a computed projection, an
|
|
75
|
+
* aggregate or window output), which a caller-supplied
|
|
76
|
+
* {@link ColumnStatsResolver} reports by resolving the attribute to nothing.
|
|
77
|
+
*
|
|
78
|
+
* A partly-known OR reads as undefined here: this method means "real statistics
|
|
79
|
+
* answered *the predicate*", and `rule-filter-selectivity` uses it as its
|
|
80
|
+
* does-this-relation-have-usable-statistics gate. A floor is not an answer.
|
|
72
81
|
*/
|
|
73
|
-
statsOnlySelectivity(table: TableSchema, predicate: ScalarPlanNode): number | undefined;
|
|
74
|
-
joinSelectivity(leftTable: TableSchema, rightTable: TableSchema, joinCondition: ScalarPlanNode): number | undefined;
|
|
82
|
+
statsOnlySelectivity(table: TableSchema, predicate: ScalarPlanNode, resolve?: ColumnStatsResolver): number | undefined;
|
|
83
|
+
joinSelectivity(leftTable: TableSchema, rightTable: TableSchema, joinCondition: ScalarPlanNode, resolve?: ColumnStatsResolver): number | undefined;
|
|
75
84
|
/**
|
|
76
85
|
* Check if an equi-join column pair represents a FK→PK relationship.
|
|
77
86
|
* If so, return selectivity = 1/ndv_pk (each FK row matches at most one PK row).
|
|
@@ -80,13 +89,20 @@ export declare class CatalogStatsProvider implements StatsProvider {
|
|
|
80
89
|
private isFkColumn;
|
|
81
90
|
private getPkDistinct;
|
|
82
91
|
distinctValues(table: TableSchema, columnName: string): number | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* NOTE: no {@link ColumnStatsResolver} is threaded here, so the delegated estimate
|
|
94
|
+
* matches columns by AST name. Nothing in the engine calls this today (only its own
|
|
95
|
+
* tests do), so nothing is wrong now — but the first production caller must widen
|
|
96
|
+
* this signature to take a resolver and pass it down, or it will silently get the
|
|
97
|
+
* name matching the selectivity family no longer uses.
|
|
98
|
+
*/
|
|
83
99
|
indexSelectivity(table: TableSchema, indexName: string, predicate: ScalarPlanNode): number | undefined;
|
|
84
100
|
private getDistinct;
|
|
85
101
|
/**
|
|
86
|
-
* Entry point for predicate selectivity:
|
|
87
|
-
* walk the predicate's boolean structure.
|
|
102
|
+
* Entry point for predicate selectivity: no statistics at all, or the empty
|
|
103
|
+
* table, short-circuit; otherwise walk the predicate's boolean structure.
|
|
88
104
|
*/
|
|
89
|
-
private
|
|
105
|
+
private estimate;
|
|
90
106
|
/**
|
|
91
107
|
* Recurse over the boolean structure (AND / OR / NOT) of a predicate,
|
|
92
108
|
* delegating anything else to {@link estimateLeaf}.
|
|
@@ -96,6 +112,8 @@ export declare class CatalogStatsProvider implements StatsProvider {
|
|
|
96
112
|
* existed.
|
|
97
113
|
*/
|
|
98
114
|
private estimateNode;
|
|
115
|
+
/** {@link estimateLeaf} lifted into the {@link Estimate} vocabulary. */
|
|
116
|
+
private leafEstimate;
|
|
99
117
|
/**
|
|
100
118
|
* AND: estimate each conjunct and combine the ones we could estimate.
|
|
101
119
|
*
|
|
@@ -108,15 +126,28 @@ export declare class CatalogStatsProvider implements StatsProvider {
|
|
|
108
126
|
*
|
|
109
127
|
* If *every* conjunct is unknown we return undefined so the whole-predicate
|
|
110
128
|
* naive fallback in `selectivity()` still runs.
|
|
129
|
+
*
|
|
130
|
+
* A conjunct that only produced a lower bound (a partly-known OR) counts as
|
|
131
|
+
* unknown here for the same reason: folding a floor into the product would drag
|
|
132
|
+
* the result down, and AND deliberately errs high.
|
|
111
133
|
*/
|
|
112
134
|
private estimateConjunction;
|
|
113
135
|
/**
|
|
114
|
-
* OR: estimate every disjunct
|
|
136
|
+
* OR: estimate every disjunct; combine them when all were readable, otherwise
|
|
137
|
+
* report what was proved as a lower bound.
|
|
115
138
|
*
|
|
116
139
|
* Unlike AND there is no safe default for an unknown disjunct — assuming 1.0
|
|
117
|
-
* would make the whole disjunction 1.0 (safe but useless), and assuming 0
|
|
118
|
-
*
|
|
119
|
-
*
|
|
140
|
+
* would make the whole disjunction 1.0 (safe but useless), and assuming 0 would
|
|
141
|
+
* silently drop a branch that may match everything. But giving up outright
|
|
142
|
+
* discards a bound already in hand: `a or b` keeps at least as many rows as `a`,
|
|
143
|
+
* so the most permissive branch that COULD be read floors the whole disjunction.
|
|
144
|
+
* That floor travels out as a `lowerBound`, which `selectivity` uses to lift the
|
|
145
|
+
* naive guess (see there) and `statsOnlySelectivity` still reports as unknown.
|
|
146
|
+
*
|
|
147
|
+
* The floor is the max of the readable branches, NOT their disjunctive
|
|
148
|
+
* combination: `1 - Π(1 - sᵢ)` assumes the branches are independent, which is an
|
|
149
|
+
* estimate rather than a proof — if one readable branch subsumes another the true
|
|
150
|
+
* value is only the max.
|
|
120
151
|
*/
|
|
121
152
|
private estimateDisjunction;
|
|
122
153
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-stats.d.ts","sourceRoot":"","sources":["../../../../src/planner/stats/catalog-stats.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog-stats.d.ts","sourceRoot":"","sources":["../../../../src/planner/stats/catalog-stats.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA4DhD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC/B,6CAA6C;IAC7C,UAAU,EAAE,QAAQ,CAAC;IACrB,2DAA2D;IAC3D,eAAe,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sDAAsD;IACtD,SAAS,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACnD,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAID;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAElC,QAAQ,CAAC,EAAE,kBAAkB;IAIzC,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAOjD,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS;IAoB7G;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS;IAKtH,eAAe,CACd,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,WAAW,EACvB,aAAa,EAAE,cAAc,EAC7B,OAAO,CAAC,EAAE,mBAAmB,GAC3B,MAAM,GAAG,SAAS;IAwBrB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,aAAa;IAMrB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAM1E;;;;;;OAMG;IACH,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS;IAStG,OAAO,CAAC,WAAW;IAKnB;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAWhB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IAwCpB,wEAAwE;IACxE,OAAO,CAAC,YAAY;IAKpB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,mBAAmB;IA+B3B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAOrB,4EAA4E;IAC5E,OAAO,CAAC,YAAY;CAsFpB"}
|