@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
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createScalarFunction } from '../registration.js';
|
|
2
2
|
import { compareSqlValues, getSqlDataTypeName } from '../../util/comparison.js';
|
|
3
|
-
import { ANY_TYPE, INTEGER_TYPE, REAL_TYPE,
|
|
3
|
+
import { ANY_TYPE, INTEGER_TYPE, NULL_TYPE, REAL_TYPE, isNumericOrUnknownType } from '../../types/builtin-types.js';
|
|
4
4
|
import { asRun } from '../../runtime/types.js';
|
|
5
5
|
import { emitPlanNode } from '../../runtime/emitters.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { BLOB_RETURN, INTEGER_RETURN_NOT_NULL, REAL_RETURN, TEXT_RETURN_NOT_NULL } from './return-types.js';
|
|
7
|
+
import { effectiveCollationOfTypes, effectiveGroupCollation } from '../../planner/analysis/comparison-collation.js';
|
|
8
|
+
import { makeComparisonGroup, makeGroupComparator, makeOperandComparator, formatOperandCollationNote } from '../../runtime/emit/operand-comparator.js';
|
|
8
9
|
/**
|
|
9
10
|
* Find the common type among multiple logical types.
|
|
10
11
|
* This implements type promotion rules for polymorphic functions.
|
|
@@ -38,10 +39,17 @@ function findCommonType(types) {
|
|
|
38
39
|
return INTEGER_TYPE;
|
|
39
40
|
}
|
|
40
41
|
// For non-numeric types, return the first type (conservative)
|
|
41
|
-
//
|
|
42
|
-
// -
|
|
43
|
-
//
|
|
44
|
-
//
|
|
42
|
+
// NOTE: this fallback is DISHONEST for a value-returning function over a
|
|
43
|
+
// mixed-category group — `coalesce(int_col, text_col)` advertises INTEGER while
|
|
44
|
+
// it can return the text. Benign today because the write path converts or
|
|
45
|
+
// rejects rather than storing the wrong storage class (`insert into int_col
|
|
46
|
+
// select coalesce(null, text_col)` converts; a VALUES insert of unconvertible
|
|
47
|
+
// text raises `Type conversion failed`), and no reader trusts the declared type
|
|
48
|
+
// over the runtime value. `greatest`/`least` opted out via `extremumReturnType`
|
|
49
|
+
// because their fix made the divergence newly *visible*. If a consumer ever
|
|
50
|
+
// starts trusting a declared type without re-checking the value — a storage
|
|
51
|
+
// encoder keyed off it, say — every caller here (coalesce, iif, choose) needs
|
|
52
|
+
// the same ANY_TYPE treatment.
|
|
45
53
|
return firstType;
|
|
46
54
|
}
|
|
47
55
|
// --- abs(X) ---
|
|
@@ -56,8 +64,8 @@ export const absFunc = createScalarFunction({
|
|
|
56
64
|
nullable: false,
|
|
57
65
|
isReadOnly: true
|
|
58
66
|
}),
|
|
59
|
-
// Validate that the argument is numeric
|
|
60
|
-
validateArgTypes: (argTypes) => argTypes[0]
|
|
67
|
+
// Validate that the argument is numeric (or unclassifiable — see the helper)
|
|
68
|
+
validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
|
|
61
69
|
}, (arg) => {
|
|
62
70
|
if (arg === null)
|
|
63
71
|
return null;
|
|
@@ -100,7 +108,7 @@ const roundSchemaBase = {
|
|
|
100
108
|
nullable: false,
|
|
101
109
|
isReadOnly: true
|
|
102
110
|
}),
|
|
103
|
-
validateArgTypes: (argTypes) => argTypes[0]
|
|
111
|
+
validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
|
|
104
112
|
};
|
|
105
113
|
export const roundFunc1 = createScalarFunction({ ...roundSchemaBase, numArgs: 1 }, roundImpl);
|
|
106
114
|
export const roundFunc2 = createScalarFunction({ ...roundSchemaBase, numArgs: 2 }, roundImpl);
|
|
@@ -125,13 +133,28 @@ export const coalesceFunc = createScalarFunction({
|
|
|
125
133
|
return null;
|
|
126
134
|
});
|
|
127
135
|
// --- nullif(X, Y) ---
|
|
136
|
+
/**
|
|
137
|
+
* The call site's comparison group, with its cross-type coercion resolved at emit
|
|
138
|
+
* time. `nullif`/`greatest`/`least` declare `returnsArg`, so `buildFunctionCall`
|
|
139
|
+
* deliberately leaves their arguments un-rewritten (a plan-time cast would replace
|
|
140
|
+
* the RETURNED value); the group converts *copies* for the comparison instead. A
|
|
141
|
+
* schema that names no group yields an identity group — raw values, raw types.
|
|
142
|
+
*/
|
|
143
|
+
function callComparisonGroup(plan) {
|
|
144
|
+
return makeComparisonGroup(plan.operands.map(op => op.getType()), plan.functionSchema.comparesArgs ?? []);
|
|
145
|
+
}
|
|
128
146
|
/**
|
|
129
147
|
* Emit `nullif(x, y)` deciding the match exactly as `x = y` would: the pair's
|
|
130
|
-
* collation
|
|
131
|
-
* routing (declared semantic-ordering type / storage class / runtime
|
|
132
|
-
* check)
|
|
133
|
-
* never per row. A same-rank explicit/declared collation conflict
|
|
134
|
-
* two operands throws here, exactly as `x = y` throws for the same
|
|
148
|
+
* cross-type coercion, collation (through the shared provenance lattice) and
|
|
149
|
+
* comparator routing (declared semantic-ordering type / storage class / runtime
|
|
150
|
+
* temporal check) are the ones `=`, BETWEEN and simple CASE share. All resolved
|
|
151
|
+
* ONCE at emit, never per row. A same-rank explicit/declared collation conflict
|
|
152
|
+
* between the two operands throws here, exactly as `x = y` throws for the same
|
|
153
|
+
* pair.
|
|
154
|
+
*
|
|
155
|
+
* The comparison runs over coerced KEYS while the returned value is the raw first
|
|
156
|
+
* argument — `nullif('abc', 1)` compares `0` against `1` (no match) and returns
|
|
157
|
+
* `'abc'`, not the `0` the conversion produced.
|
|
135
158
|
*
|
|
136
159
|
* NOTE: that throw happens at emit time, where `=` validates in
|
|
137
160
|
* `BinaryOpNode.generateType` — the same deferral simple CASE has (see the
|
|
@@ -142,13 +165,13 @@ export const coalesceFunc = createScalarFunction({
|
|
|
142
165
|
* here. Applies to `emitExtremum` below identically.
|
|
143
166
|
*/
|
|
144
167
|
function emitNullif(plan, ctx, _defaultEmit) {
|
|
145
|
-
const
|
|
146
|
-
const collationName =
|
|
147
|
-
const comparator = makeOperandComparator(
|
|
168
|
+
const group = callComparisonGroup(plan);
|
|
169
|
+
const collationName = effectiveCollationOfTypes(group.types[0], group.types[1], plan.expression);
|
|
170
|
+
const comparator = makeOperandComparator(group.types[0].logicalType, group.types[1].logicalType, ctx.resolveCollation(collationName));
|
|
148
171
|
// Same shape as the unemitted default: every comparator route ranks NULL
|
|
149
172
|
// first (NULL/NULL → 0), so NULL handling is unchanged.
|
|
150
173
|
function run(_rctx, argX, argY) {
|
|
151
|
-
return comparator(argX, argY) === 0 ? null : argX;
|
|
174
|
+
return comparator(group.key(0, argX), group.key(1, argY)) === 0 ? null : argX;
|
|
152
175
|
}
|
|
153
176
|
return {
|
|
154
177
|
params: plan.operands.map(op => emitPlanNode(op, ctx)),
|
|
@@ -161,7 +184,10 @@ export const nullifFunc = createScalarFunction({
|
|
|
161
184
|
numArgs: 2,
|
|
162
185
|
deterministic: true,
|
|
163
186
|
comparesArgs: [0, 1],
|
|
164
|
-
|
|
187
|
+
returnsArg: true,
|
|
188
|
+
// Type inference: return the type of the first argument (nullable). Honest
|
|
189
|
+
// because `returnsArg` keeps the plan-time cast off that argument — the value
|
|
190
|
+
// handed back really is the first argument as written.
|
|
165
191
|
inferReturnType: (argTypes) => ({
|
|
166
192
|
typeClass: 'scalar',
|
|
167
193
|
logicalType: argTypes[0],
|
|
@@ -169,8 +195,16 @@ export const nullifFunc = createScalarFunction({
|
|
|
169
195
|
isReadOnly: true
|
|
170
196
|
})
|
|
171
197
|
},
|
|
172
|
-
// BINARY
|
|
173
|
-
// emitting; the custom emitter binds the call site's
|
|
198
|
+
// NOTE: BINARY and UNCOERCED — the plain fallback for any caller that reaches the
|
|
199
|
+
// implementation without emitting; the custom emitter binds the call site's
|
|
200
|
+
// cross-type coercion, collation and type routing. Unreachable today
|
|
201
|
+
// (`emitScalarFunctionCall` always prefers `customEmitter`), and it used to be
|
|
202
|
+
// coerced anyway because the plan-time cast rewrote the arguments before the
|
|
203
|
+
// implementation saw them. If a path ever DOES evaluate a comparison builtin
|
|
204
|
+
// without emitting — a folder that calls `implementation` directly, or a plugin
|
|
205
|
+
// that re-registers one of these names without the emitter — it will silently
|
|
206
|
+
// compare raw values; route it through the emitter instead of duplicating the
|
|
207
|
+
// coercion here. Same applies to `greatest`/`least` below.
|
|
174
208
|
(argX, argY) => {
|
|
175
209
|
const comparison = compareSqlValues(argX, argY);
|
|
176
210
|
return comparison === 0 ? null : argX;
|
|
@@ -186,22 +220,17 @@ export const typeofFunc = createScalarFunction({
|
|
|
186
220
|
name: 'typeof',
|
|
187
221
|
numArgs: 1,
|
|
188
222
|
deterministic: true,
|
|
189
|
-
returnType:
|
|
190
|
-
typeClass: 'scalar',
|
|
191
|
-
logicalType: TEXT_TYPE,
|
|
192
|
-
nullable: false,
|
|
193
|
-
isReadOnly: true
|
|
194
|
-
}
|
|
223
|
+
returnType: TEXT_RETURN_NOT_NULL
|
|
195
224
|
}, (arg) => {
|
|
196
225
|
return getSqlDataTypeName(arg);
|
|
197
226
|
});
|
|
198
227
|
// --- random() ---
|
|
199
|
-
export const randomFunc = createScalarFunction({ name: 'random', numArgs: 0, deterministic: false }, () => {
|
|
228
|
+
export const randomFunc = createScalarFunction({ name: 'random', numArgs: 0, deterministic: false, returnType: INTEGER_RETURN_NOT_NULL }, () => {
|
|
200
229
|
const randomInt = Math.floor(Math.random() * (Number.MAX_SAFE_INTEGER - Number.MIN_SAFE_INTEGER + 1)) + Number.MIN_SAFE_INTEGER;
|
|
201
230
|
return BigInt(randomInt);
|
|
202
231
|
});
|
|
203
232
|
// --- randomblob(N) ---
|
|
204
|
-
export const randomblobFunc = createScalarFunction({ name: 'randomblob', numArgs: 1, deterministic: false }, (nVal) => {
|
|
233
|
+
export const randomblobFunc = createScalarFunction({ name: 'randomblob', numArgs: 1, deterministic: false, returnType: BLOB_RETURN }, (nVal) => {
|
|
205
234
|
if (typeof nVal !== 'number' && typeof nVal !== 'bigint')
|
|
206
235
|
return null;
|
|
207
236
|
const n = Number(nVal);
|
|
@@ -251,14 +280,13 @@ export const sqrtFunc = createScalarFunction({
|
|
|
251
280
|
name: 'sqrt',
|
|
252
281
|
numArgs: 1,
|
|
253
282
|
deterministic: true,
|
|
254
|
-
//
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
validateArgTypes: (argTypes) => argTypes[0].isNumeric === true
|
|
283
|
+
// REAL rather than inferred-from-input, for the same reason as pow/power below:
|
|
284
|
+
// Math.sqrt is not closed over the integers, so `sqrt(int_col)` claiming INTEGER
|
|
285
|
+
// is a lie the write path acts on — it would skip conversion and store
|
|
286
|
+
// 1.4142135623730951 in an INTEGER column. Nullable because a negative or NULL
|
|
287
|
+
// argument yields NULL.
|
|
288
|
+
returnType: REAL_RETURN,
|
|
289
|
+
validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
|
|
262
290
|
}, (arg) => {
|
|
263
291
|
if (arg === null)
|
|
264
292
|
return null;
|
|
@@ -277,8 +305,10 @@ const pow = (base, exponent) => {
|
|
|
277
305
|
return null;
|
|
278
306
|
return Math.pow(numBase, numExp);
|
|
279
307
|
};
|
|
280
|
-
|
|
281
|
-
|
|
308
|
+
// REAL rather than inferred-from-input: unlike abs/round/floor/ceil, Math.pow is not
|
|
309
|
+
// closed over the integers (`pow(2, -1)` is 0.5), so the input type is not the answer.
|
|
310
|
+
export const powFunc = createScalarFunction({ name: 'pow', numArgs: 2, deterministic: true, returnType: REAL_RETURN }, pow);
|
|
311
|
+
export const powerFunc = createScalarFunction({ name: 'power', numArgs: 2, deterministic: true, returnType: REAL_RETURN }, pow);
|
|
282
312
|
// --- floor(X) ---
|
|
283
313
|
export const floorFunc = createScalarFunction({
|
|
284
314
|
name: 'floor',
|
|
@@ -291,7 +321,7 @@ export const floorFunc = createScalarFunction({
|
|
|
291
321
|
nullable: false,
|
|
292
322
|
isReadOnly: true
|
|
293
323
|
}),
|
|
294
|
-
validateArgTypes: (argTypes) => argTypes[0]
|
|
324
|
+
validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
|
|
295
325
|
}, (arg) => {
|
|
296
326
|
if (arg === null)
|
|
297
327
|
return null;
|
|
@@ -316,7 +346,7 @@ const ceilTypeInference = {
|
|
|
316
346
|
nullable: false,
|
|
317
347
|
isReadOnly: true
|
|
318
348
|
}),
|
|
319
|
-
validateArgTypes: (argTypes) => argTypes[0]
|
|
349
|
+
validateArgTypes: (argTypes) => isNumericOrUnknownType(argTypes[0])
|
|
320
350
|
};
|
|
321
351
|
export const ceilFunc = createScalarFunction({ name: 'ceil', numArgs: 1, deterministic: true, ...ceilTypeInference }, ceil);
|
|
322
352
|
export const ceilingFunc = createScalarFunction({ name: 'ceiling', numArgs: 1, deterministic: true, ...ceilTypeInference }, ceil);
|
|
@@ -332,8 +362,13 @@ export const clampFunc = createScalarFunction({
|
|
|
332
362
|
nullable: true,
|
|
333
363
|
isReadOnly: true
|
|
334
364
|
}),
|
|
335
|
-
validateArgTypes: (argTypes) => argTypes
|
|
365
|
+
validateArgTypes: (argTypes) => argTypes.every(isNumericOrUnknownType)
|
|
336
366
|
}, (value, min, max) => {
|
|
367
|
+
// Unlike the other numeric builtins, clamp's arguments reach Number() together,
|
|
368
|
+
// so the null short-circuit has to be explicit: Number(null) is 0, which would
|
|
369
|
+
// make clamp(null, 1, 2) return 1 instead of null.
|
|
370
|
+
if (value === null || min === null || max === null)
|
|
371
|
+
return null;
|
|
337
372
|
const v = Number(value);
|
|
338
373
|
const minVal = Number(min);
|
|
339
374
|
const maxVal = Number(max);
|
|
@@ -344,34 +379,47 @@ export const clampFunc = createScalarFunction({
|
|
|
344
379
|
// --- greatest(...) / least(...) ---
|
|
345
380
|
/**
|
|
346
381
|
* Emit `greatest`/`least` ranking the whole argument group the way `order by`
|
|
347
|
-
* would rank a column of the group's declared type and collation.
|
|
348
|
-
*
|
|
349
|
-
*
|
|
350
|
-
* arguments throws, matching `=`)
|
|
351
|
-
*
|
|
352
|
-
*
|
|
353
|
-
*
|
|
354
|
-
*
|
|
382
|
+
* would rank a column of the group's declared type and collation. The group's
|
|
383
|
+
* cross-type coercion, ONE collation (through the lattice's N-ary merge
|
|
384
|
+
* `effectiveGroupCollation` — a same-rank explicit/declared conflict among the
|
|
385
|
+
* arguments throws, matching `=`) and ONE comparator (`makeGroupComparator`, the
|
|
386
|
+
* N-ary form of the rule `=`, BETWEEN and simple CASE route through, so a TIMESPAN
|
|
387
|
+
* column ranked against a bare text literal still compares by elapsed time) all
|
|
388
|
+
* resolve once at emit. `direction` is +1 for greatest, -1 for least — sharing the
|
|
389
|
+
* comparator keeps the two directions mirror images.
|
|
355
390
|
*
|
|
356
|
-
* The fold
|
|
357
|
-
*
|
|
358
|
-
*
|
|
359
|
-
*
|
|
391
|
+
* The fold ranks coerced KEYS but tracks the winning INDEX and returns the raw
|
|
392
|
+
* argument there, so `greatest(t, 1)` over the stored text `'3'` hands back `'3'`
|
|
393
|
+
* rather than the integer the conversion produced. Arguments whose KEY is null
|
|
394
|
+
* are skipped entirely — the running best is never a NULL key — matching
|
|
395
|
+
* `min`/`max` and the window MIN/MAX, so `greatest`/`least` agree with each
|
|
396
|
+
* other and the answer never depends on where a NULL sits in the argument
|
|
397
|
+
* list. That is the argument itself for an uncoerced group; in a coerced one it
|
|
398
|
+
* also covers an argument the conversion nulls (`cast('' as integer)`), which
|
|
399
|
+
* `greatest` already skipped before this fold was made symmetric. A call with
|
|
400
|
+
* no surviving key (all-NULL, or no arguments) yields NULL. Ties under a non-BINARY
|
|
401
|
+
* comparator leave which argument survives unspecified (same latitude as the
|
|
402
|
+
* min/max aggregate, DISTINCT, and GROUP BY) — but it is always one of the
|
|
403
|
+
* arguments.
|
|
360
404
|
*/
|
|
361
405
|
function emitExtremum(direction) {
|
|
362
406
|
return (plan, ctx, _defaultEmit) => {
|
|
363
|
-
const
|
|
364
|
-
const collationName = effectiveGroupCollation(types, plan.expression);
|
|
365
|
-
const compare = makeGroupComparator(types.map(t => t.logicalType), ctx.resolveCollation(collationName));
|
|
407
|
+
const group = callComparisonGroup(plan);
|
|
408
|
+
const collationName = effectiveGroupCollation(group.types, plan.expression);
|
|
409
|
+
const compare = makeGroupComparator(group.types.map(t => t.logicalType), ctx.resolveCollation(collationName));
|
|
366
410
|
function run(_rctx, ...args) {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
411
|
+
let bestIndex = -1;
|
|
412
|
+
let bestKey = null;
|
|
413
|
+
for (let i = 0; i < args.length; i++) {
|
|
414
|
+
const currentKey = group.key(i, args[i]);
|
|
415
|
+
if (currentKey === null)
|
|
416
|
+
continue;
|
|
417
|
+
if (bestIndex === -1 || compare(currentKey, bestKey) * direction > 0) {
|
|
418
|
+
bestIndex = i;
|
|
419
|
+
bestKey = currentKey;
|
|
372
420
|
}
|
|
373
|
-
|
|
374
|
-
|
|
421
|
+
}
|
|
422
|
+
return bestIndex === -1 ? null : args[bestIndex];
|
|
375
423
|
}
|
|
376
424
|
return {
|
|
377
425
|
params: plan.operands.map(op => emitPlanNode(op, ctx)),
|
|
@@ -380,31 +428,54 @@ function emitExtremum(direction) {
|
|
|
380
428
|
};
|
|
381
429
|
};
|
|
382
430
|
}
|
|
431
|
+
/**
|
|
432
|
+
* Declared return type of `greatest`/`least`. The fold returns one of its
|
|
433
|
+
* arguments verbatim (`returnsArg`), so the declaration must cover every argument
|
|
434
|
+
* it could pick: only an all-same or an all-numeric group has a type that does.
|
|
435
|
+
* A mixed-category group (`greatest(int_col, '2')` can return the text `'2'`)
|
|
436
|
+
* declares ANY rather than {@link findCommonType}'s first-argument fallback, which
|
|
437
|
+
* would advertise INTEGER for a value that is text.
|
|
438
|
+
*
|
|
439
|
+
* A NULL-typed argument contributes no value the declaration has to cover — the
|
|
440
|
+
* only thing it can win with is NULL, which `nullable: true` already allows — so
|
|
441
|
+
* it is dropped before the test rather than dragged into a mixed-category ANY:
|
|
442
|
+
* `greatest(int_col, null)` stays INTEGER.
|
|
443
|
+
*/
|
|
444
|
+
function extremumReturnType(argTypes) {
|
|
445
|
+
const valued = argTypes.filter(t => t.name !== NULL_TYPE.name);
|
|
446
|
+
// Nothing but NULLs (or no arguments at all) — findCommonType already answers
|
|
447
|
+
// NULL / ANY respectively.
|
|
448
|
+
if (valued.length === 0)
|
|
449
|
+
return findCommonType(argTypes);
|
|
450
|
+
const allSame = valued.every(t => t.name === valued[0].name);
|
|
451
|
+
const allNumeric = valued.every(t => t.isNumeric === true);
|
|
452
|
+
return allSame || allNumeric ? findCommonType(valued) : ANY_TYPE;
|
|
453
|
+
}
|
|
383
454
|
// Greatest-of function
|
|
384
455
|
export const greatestFunc = createScalarFunction({
|
|
385
456
|
name: 'greatest',
|
|
386
457
|
numArgs: -1,
|
|
387
458
|
deterministic: true,
|
|
388
459
|
comparesArgs: 'all',
|
|
389
|
-
|
|
460
|
+
returnsArg: true,
|
|
461
|
+
// Type inference: the common type when every argument shares one, else ANY
|
|
390
462
|
inferReturnType: (argTypes) => ({
|
|
391
463
|
typeClass: 'scalar',
|
|
392
|
-
logicalType:
|
|
464
|
+
logicalType: extremumReturnType(argTypes),
|
|
393
465
|
nullable: true,
|
|
394
466
|
isReadOnly: true
|
|
395
467
|
})
|
|
396
468
|
},
|
|
397
|
-
// BINARY
|
|
398
|
-
// emitting; the custom emitter binds the group's collation + type routing.
|
|
469
|
+
// BINARY, uncoerced fallback — see the NOTE on `nullif`'s implementation above.
|
|
399
470
|
(...args) => {
|
|
400
|
-
if (args.length === 0)
|
|
401
|
-
return null;
|
|
402
471
|
return args.reduce((max, current) => {
|
|
472
|
+
if (current === null)
|
|
473
|
+
return max;
|
|
403
474
|
if (max === null || compareSqlValues(current, max) > 0) {
|
|
404
475
|
return current;
|
|
405
476
|
}
|
|
406
477
|
return max;
|
|
407
|
-
},
|
|
478
|
+
}, null);
|
|
408
479
|
});
|
|
409
480
|
greatestFunc.customEmitter = emitExtremum(1);
|
|
410
481
|
// Least-of function
|
|
@@ -413,25 +484,25 @@ export const leastFunc = createScalarFunction({
|
|
|
413
484
|
numArgs: -1,
|
|
414
485
|
deterministic: true,
|
|
415
486
|
comparesArgs: 'all',
|
|
416
|
-
|
|
487
|
+
returnsArg: true,
|
|
488
|
+
// Type inference: the common type when every argument shares one, else ANY
|
|
417
489
|
inferReturnType: (argTypes) => ({
|
|
418
490
|
typeClass: 'scalar',
|
|
419
|
-
logicalType:
|
|
491
|
+
logicalType: extremumReturnType(argTypes),
|
|
420
492
|
nullable: true,
|
|
421
493
|
isReadOnly: true
|
|
422
494
|
})
|
|
423
495
|
},
|
|
424
|
-
// BINARY
|
|
425
|
-
// emitting; the custom emitter binds the group's collation + type routing.
|
|
496
|
+
// BINARY, uncoerced fallback — see the NOTE on `nullif`'s implementation above.
|
|
426
497
|
(...args) => {
|
|
427
|
-
if (args.length === 0)
|
|
428
|
-
return null;
|
|
429
498
|
return args.reduce((min, current) => {
|
|
499
|
+
if (current === null)
|
|
500
|
+
return min;
|
|
430
501
|
if (min === null || compareSqlValues(current, min) < 0) {
|
|
431
502
|
return current;
|
|
432
503
|
}
|
|
433
504
|
return min;
|
|
434
|
-
},
|
|
505
|
+
}, null);
|
|
435
506
|
});
|
|
436
507
|
leastFunc.customEmitter = emitExtremum(-1);
|
|
437
508
|
// Choose function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../../../src/func/builtins/scalar.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../../../src/func/builtins/scalar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/func/builtins/schema.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/func/builtins/schema.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAyF/D,eAAO,MAAM,UAAU,8DAgItB,CAAC;AAGF,eAAO,MAAM,aAAa,8DA4DzB,CAAC;AAGF,eAAO,MAAM,kBAAkB,8DAiF9B,CAAC;AAGF,eAAO,MAAM,aAAa,8DAoEzB,CAAC;AAGF,eAAO,MAAM,uBAAuB,8DAmDnC,CAAC;AAGF,eAAO,MAAM,wBAAwB,8DAwDpC,CAAC;AAGF,eAAO,MAAM,iBAAiB,8DAwC7B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAMnE;AAeD,eAAO,MAAM,gBAAgB,8DA4C5B,CAAC;AAwWF,eAAO,MAAM,YAAY,8DA0DxB,CAAC;AAkSF,eAAO,MAAM,cAAc,8DA4C1B,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { QuereusError } from "../../common/errors.js";
|
|
|
3
3
|
import { StatusCode } from "../../common/types.js";
|
|
4
4
|
import { isScalarFunctionSchema, isTableValuedFunctionSchema, isAggregateFunctionSchema } from "../../schema/function.js";
|
|
5
5
|
import { isWindowFunction } from "../../schema/window-function.js";
|
|
6
|
-
import { exposedImplicitIndexes } from "../../schema/catalog.js";
|
|
6
|
+
import { exposedImplicitIndexes, isHiddenImplicitIndex } from "../../schema/catalog.js";
|
|
7
7
|
import { isMaintainedTable } from "../../schema/derivation.js";
|
|
8
8
|
import { generateMaintainedTableDDL } from "../../schema/ddl-generator.js";
|
|
9
9
|
import { INTEGER_TYPE, TEXT_TYPE } from "../../types/builtin-types.js";
|
|
@@ -12,6 +12,7 @@ import { RowOpFlag } from "../../schema/table.js";
|
|
|
12
12
|
import { jsonStringify } from "../../util/serialization.js";
|
|
13
13
|
import { expressionToString } from "../../emit/ast-stringify.js";
|
|
14
14
|
import { createLogger } from "../../common/logger.js";
|
|
15
|
+
import { firstDataModifyingCte } from "../../parser/utils.js";
|
|
15
16
|
import { TableReferenceNode } from "../../planner/nodes/reference.js";
|
|
16
17
|
import { isJoinBody, isDecomposableJoinBody } from "../../planner/mutation/multi-source.js";
|
|
17
18
|
import { isSetOpMembershipBody, isSetOpBranchWritable, setOpHasSubtreeOperand, setOpJoinLegsInsertable, surfacedInnerFlagNames, isSetOpFlaglessWritableBody, flaglessDiscriminatorColumnNames } from "../../planner/mutation/set-op.js";
|
|
@@ -132,9 +133,17 @@ export const schemaFunc = createIntegratedTableValuedFunction({
|
|
|
132
133
|
createSql,
|
|
133
134
|
tagsToJson(tableSchema.tags)
|
|
134
135
|
];
|
|
135
|
-
// Process Indexes for this table
|
|
136
|
+
// Process Indexes for this table. A hidden implicit covering structure
|
|
137
|
+
// (a plain UNIQUE's auto-built index) is a backing detail, not a
|
|
138
|
+
// user-addressable index — same rule `collectSchemaCatalog` applies.
|
|
139
|
+
// NOTE: `isHiddenImplicitIndex` rebuilds the table's exposure map per
|
|
140
|
+
// call, so this is O(indexes × unique constraints) per table; if a
|
|
141
|
+
// table ever carries enough of both to matter, hoist the map the way
|
|
142
|
+
// `collectSchemaCatalog` does.
|
|
136
143
|
if (tableSchema.indexes) {
|
|
137
144
|
for (const indexSchema of tableSchema.indexes) {
|
|
145
|
+
if (isHiddenImplicitIndex(tableSchema, indexSchema.name))
|
|
146
|
+
continue;
|
|
138
147
|
yield [
|
|
139
148
|
schemaName,
|
|
140
149
|
'index',
|
|
@@ -371,7 +380,7 @@ export const indexInfoFunc = createIntegratedTableValuedFunction({
|
|
|
371
380
|
// matches across backends. Synthetic descriptors carry no `unique` flag —
|
|
372
381
|
// UNIQUE enforcement routes through `uniqueConstraints` — so they report
|
|
373
382
|
// `unique = 0`, mirroring the memory materialized entry.
|
|
374
|
-
const realIndexes = table.indexes ?? [];
|
|
383
|
+
const realIndexes = (table.indexes ?? []).filter(idx => !isHiddenImplicitIndex(table, idx.name));
|
|
375
384
|
const synthetic = exposedImplicitIndexes(table);
|
|
376
385
|
if (realIndexes.length === 0 && synthetic.length === 0)
|
|
377
386
|
return;
|
|
@@ -506,6 +515,7 @@ export const assertionInfoFunc = createIntegratedTableValuedFunction({
|
|
|
506
515
|
isReadOnly: true,
|
|
507
516
|
isSet: false,
|
|
508
517
|
columns: [
|
|
518
|
+
{ name: 'schema_name', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
|
|
509
519
|
{ name: 'name', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
|
|
510
520
|
{ name: 'violation_sql', type: { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false, isReadOnly: true }, generated: true },
|
|
511
521
|
{ name: 'deferrable', type: { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false, isReadOnly: true }, generated: true },
|
|
@@ -517,12 +527,15 @@ export const assertionInfoFunc = createIntegratedTableValuedFunction({
|
|
|
517
527
|
},
|
|
518
528
|
relationalAdvertisement: {
|
|
519
529
|
isSet: true,
|
|
520
|
-
|
|
530
|
+
// Assertion names are unique per schema, not globally — the honest key
|
|
531
|
+
// is the (schema_name, name) pair.
|
|
532
|
+
keys: [[{ index: 0 }, { index: 1 }]],
|
|
521
533
|
},
|
|
522
534
|
}, async function* (db) {
|
|
523
535
|
for (const assertion of db.schemaManager.getAllAssertions()) {
|
|
524
536
|
const deps = assertion.dependentTables ?? [];
|
|
525
537
|
yield [
|
|
538
|
+
assertion.schemaName,
|
|
526
539
|
assertion.name,
|
|
527
540
|
assertion.violationSql,
|
|
528
541
|
assertion.deferrable ? 1 : 0,
|
|
@@ -653,6 +666,18 @@ function buildTableRefsById(nodes) {
|
|
|
653
666
|
}
|
|
654
667
|
return tableRefsById;
|
|
655
668
|
}
|
|
669
|
+
/**
|
|
670
|
+
* True when the view body's own `WITH` clause defines a data-modifying block — an
|
|
671
|
+
* `insert`/`update`/`delete … returning` CTE. The static shadow of the dynamic write
|
|
672
|
+
* path's `rejectDataModifyingBodyCTE` gate, so `view_info` reports the conservative row
|
|
673
|
+
* for a shape every write through it rejects. Both read the same predicate
|
|
674
|
+
* (`firstDataModifyingCte`) so the two cannot drift apart.
|
|
675
|
+
*/
|
|
676
|
+
function hasDataModifyingBodyCte(selectAst) {
|
|
677
|
+
if (selectAst.type !== 'select' || !selectAst.withClause)
|
|
678
|
+
return false;
|
|
679
|
+
return firstDataModifyingCte(selectAst.withClause) !== undefined;
|
|
680
|
+
}
|
|
656
681
|
/** Record `baseColumn` (lowercased) as defaultable for base table `table`. */
|
|
657
682
|
function addDefaultable(map, table, baseColumn) {
|
|
658
683
|
const set = map.get(table) ?? new Set();
|
|
@@ -673,7 +698,16 @@ function addDefaultable(map, table, baseColumn) {
|
|
|
673
698
|
* caching is a later optimization.
|
|
674
699
|
*/
|
|
675
700
|
function deriveViewInfo(db, view) {
|
|
676
|
-
|
|
701
|
+
// Data-modifying body `with` block (`with m as (insert … returning …)`): the body plans
|
|
702
|
+
// fine — and its lineage may look perfectly writable — but every write through the view
|
|
703
|
+
// is rejected up front (`unsupported-body-cte-dml`, `rejectDataModifyingBodyCTE` in
|
|
704
|
+
// `planner/building/view-mutation-builder.ts`), so reporting anything but the conservative
|
|
705
|
+
// row would over-claim. Mirrors the `isJoinBody && !isDecomposableJoinBody` shape gate below;
|
|
706
|
+
// answered from the AST alone, so it runs BEFORE the body re-plan below rather than after it.
|
|
707
|
+
if (hasDataModifyingBodyCte(view.selectAst))
|
|
708
|
+
return CONSERVATIVE_VIEW_INFO;
|
|
709
|
+
// Home-schema path: the body's unqualified names resolve next to the view.
|
|
710
|
+
const { plan } = db._buildPlan([view.selectAst], undefined, db._homeSchemaPath(view.schemaName));
|
|
677
711
|
const root = plan.getRelations()[0];
|
|
678
712
|
if (!root)
|
|
679
713
|
return CONSERVATIVE_VIEW_INFO;
|
|
@@ -708,7 +742,7 @@ function deriveViewInfo(db, view) {
|
|
|
708
742
|
// operand is a subtree: inserting into a multi-leaf subtree has no single deterministic
|
|
709
743
|
// target leaf (product-coordinate addressing — `set-op-membership-nested`).
|
|
710
744
|
const isInsertableInto = !setOpHasSubtreeOperand(view.selectAst)
|
|
711
|
-
&& setOpJoinLegsInsertable(db._buildProbeContext(), viewAsMutable);
|
|
745
|
+
&& setOpJoinLegsInsertable(db._buildProbeContext(undefined, db._homeSchemaPath(view.schemaName)), viewAsMutable);
|
|
712
746
|
return { isInsertableInto, isUpdatable: true, isDeletable: true, effectiveTargets: targets };
|
|
713
747
|
}
|
|
714
748
|
// Flag-less predicate-honest set-op body (`set-op-flagless-predicate-honest-writes`): a
|
|
@@ -726,7 +760,7 @@ function deriveViewInfo(db, view) {
|
|
|
726
760
|
// a body whose join legs are ALL insertable — re-derived dynamically by
|
|
727
761
|
// `setOpJoinLegsInsertable` (NO for a composite-key / no-default / non-equi join leg) —
|
|
728
762
|
// matching the dynamic `buildFlaglessInsert`; UPDATE / DELETE through the join leg stay YES.
|
|
729
|
-
const isInsertableInto = setOpJoinLegsInsertable(db._buildProbeContext(), viewAsMutable);
|
|
763
|
+
const isInsertableInto = setOpJoinLegsInsertable(db._buildProbeContext(undefined, db._homeSchemaPath(view.schemaName)), viewAsMutable);
|
|
730
764
|
return { isInsertableInto, isUpdatable: true, isDeletable: true, effectiveTargets: targets };
|
|
731
765
|
}
|
|
732
766
|
// Non-decomposable join shape gate: cross / comma (implicit) / subquery- or
|
|
@@ -1071,7 +1105,8 @@ function deriveColumnInfo(db, name) {
|
|
|
1071
1105
|
* attribute names the AST probes report.
|
|
1072
1106
|
*/
|
|
1073
1107
|
function deriveBodyColumnRows(db, schemaName, objectName, selectAst, columnNames) {
|
|
1074
|
-
|
|
1108
|
+
// Home-schema path: the body's unqualified names resolve next to the owner.
|
|
1109
|
+
const { plan } = db._buildPlan([selectAst], undefined, db._homeSchemaPath(schemaName));
|
|
1075
1110
|
const root = plan.getRelations()[0];
|
|
1076
1111
|
if (!root)
|
|
1077
1112
|
return [];
|