@quereus/quereus 4.3.2 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/src/common/types.d.ts +9 -0
- package/dist/src/common/types.d.ts.map +1 -1
- package/dist/src/common/types.js.map +1 -1
- package/dist/src/core/database-events.d.ts +49 -0
- package/dist/src/core/database-events.d.ts.map +1 -1
- package/dist/src/core/database-events.js +148 -0
- package/dist/src/core/database-events.js.map +1 -1
- package/dist/src/core/database-external-changes.d.ts +2 -2
- package/dist/src/core/database-external-changes.d.ts.map +1 -1
- package/dist/src/core/database-external-changes.js +12 -9
- package/dist/src/core/database-external-changes.js.map +1 -1
- package/dist/src/core/database-materialized-views-apply.d.ts +156 -14
- package/dist/src/core/database-materialized-views-apply.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views-apply.js +370 -65
- package/dist/src/core/database-materialized-views-apply.js.map +1 -1
- package/dist/src/core/database-materialized-views-plan-builders.d.ts +66 -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 +368 -8
- package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
- package/dist/src/core/database-materialized-views-plans.d.ts +257 -30
- package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views.d.ts +99 -42
- package/dist/src/core/database-materialized-views.d.ts.map +1 -1
- package/dist/src/core/database-materialized-views.js +198 -121
- package/dist/src/core/database-materialized-views.js.map +1 -1
- package/dist/src/core/database.d.ts +5 -0
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +41 -18
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/internal-statement-cache.d.ts +18 -0
- package/dist/src/core/internal-statement-cache.d.ts.map +1 -0
- package/dist/src/core/internal-statement-cache.js +211 -0
- package/dist/src/core/internal-statement-cache.js.map +1 -0
- package/dist/src/func/builtins/aggregate.d.ts +13 -12
- package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
- package/dist/src/func/builtins/aggregate.js +146 -62
- 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 +63 -48
- package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
- package/dist/src/func/registration.d.ts +19 -1
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js +41 -0
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +8 -8
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -11
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/parser.d.ts +6 -0
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +45 -34
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/planner/analysis/comparison-collation.d.ts +2 -0
- package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
- package/dist/src/planner/analysis/comparison-collation.js +1 -1
- package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
- package/dist/src/planner/analysis/equi-correlation.d.ts +26 -0
- package/dist/src/planner/analysis/equi-correlation.d.ts.map +1 -0
- package/dist/src/planner/analysis/equi-correlation.js +62 -0
- package/dist/src/planner/analysis/equi-correlation.js.map +1 -0
- package/dist/src/planner/analysis/expression-fingerprint.d.ts.map +1 -1
- package/dist/src/planner/analysis/expression-fingerprint.js +29 -0
- package/dist/src/planner/analysis/expression-fingerprint.js.map +1 -1
- package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +60 -18
- package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
- package/dist/src/planner/analysis/query-rewrite-matcher.js +95 -42
- package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
- package/dist/src/planner/analysis/sat-checker.d.ts.map +1 -1
- package/dist/src/planner/analysis/sat-checker.js +43 -4
- package/dist/src/planner/analysis/sat-checker.js.map +1 -1
- package/dist/src/planner/analysis/scalar-subqueries.d.ts +28 -0
- package/dist/src/planner/analysis/scalar-subqueries.d.ts.map +1 -0
- package/dist/src/planner/analysis/scalar-subqueries.js +60 -0
- package/dist/src/planner/analysis/scalar-subqueries.js.map +1 -0
- package/dist/src/planner/building/delete.d.ts.map +1 -1
- package/dist/src/planner/building/delete.js +10 -3
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/expression.d.ts.map +1 -1
- package/dist/src/planner/building/expression.js +87 -6
- package/dist/src/planner/building/expression.js.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.d.ts +44 -1
- package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.js +54 -0
- package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +9 -12
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +15 -1
- 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 +13 -4
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/building/with.d.ts.map +1 -1
- package/dist/src/planner/building/with.js +5 -8
- package/dist/src/planner/building/with.js.map +1 -1
- package/dist/src/planner/cache/materialization-advisory.d.ts +33 -0
- package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
- package/dist/src/planner/cache/materialization-advisory.js +164 -28
- package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
- package/dist/src/planner/cache/reference-graph.d.ts +0 -4
- package/dist/src/planner/cache/reference-graph.d.ts.map +1 -1
- package/dist/src/planner/cache/reference-graph.js +5 -13
- package/dist/src/planner/cache/reference-graph.js.map +1 -1
- package/dist/src/planner/cost/index.d.ts +28 -7
- package/dist/src/planner/cost/index.d.ts.map +1 -1
- package/dist/src/planner/cost/index.js +26 -0
- package/dist/src/planner/cost/index.js.map +1 -1
- package/dist/src/planner/framework/pass.js +3 -3
- package/dist/src/planner/nodes/cache-node.d.ts +18 -2
- package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cache-node.js +42 -3
- package/dist/src/planner/nodes/cache-node.js.map +1 -1
- package/dist/src/planner/nodes/cte-node.d.ts +15 -1
- package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cte-node.js +12 -2
- package/dist/src/planner/nodes/cte-node.js.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts +0 -9
- package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
- package/dist/src/planner/nodes/recursive-cte-node.d.ts +30 -1
- package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/recursive-cte-node.js +30 -3
- package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +26 -3
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +129 -8
- package/dist/src/planner/optimizer.js.map +1 -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 +43 -18
- package/dist/src/planner/rules/access/rule-select-access-path.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 +8 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +72 -54
- package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js +6 -0
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts +25 -0
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -0
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +176 -0
- package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -0
- package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.d.ts +31 -0
- package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.d.ts.map +1 -0
- package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.js +68 -0
- package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.js.map +1 -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 +1 -54
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +8 -1
- package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
- package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.d.ts +191 -0
- package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.d.ts.map +1 -0
- package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.js +627 -0
- package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.js.map +1 -0
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts +10 -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 +242 -51
- package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
- package/dist/src/runtime/cache/shared-cache.d.ts +7 -0
- package/dist/src/runtime/cache/shared-cache.d.ts.map +1 -1
- package/dist/src/runtime/cache/shared-cache.js +34 -1
- package/dist/src/runtime/cache/shared-cache.js.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.js +10 -0
- package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
- package/dist/src/runtime/emit/aggregate-setup.d.ts +49 -0
- package/dist/src/runtime/emit/aggregate-setup.d.ts.map +1 -0
- package/dist/src/runtime/emit/aggregate-setup.js +99 -0
- package/dist/src/runtime/emit/aggregate-setup.js.map +1 -0
- package/dist/src/runtime/emit/aggregate.d.ts +2 -3
- package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate.js +10 -84
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +348 -165
- package/dist/src/runtime/emit/alter-table.js.map +1 -1
- package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/asof-scan.js +6 -0
- package/dist/src/runtime/emit/asof-scan.js.map +1 -1
- package/dist/src/runtime/emit/between.d.ts.map +1 -1
- package/dist/src/runtime/emit/between.js +32 -3
- package/dist/src/runtime/emit/between.js.map +1 -1
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +22 -2
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/bloom-join.js +24 -3
- package/dist/src/runtime/emit/bloom-join.js.map +1 -1
- package/dist/src/runtime/emit/cache.d.ts +7 -3
- package/dist/src/runtime/emit/cache.d.ts.map +1 -1
- package/dist/src/runtime/emit/cache.js +23 -6
- package/dist/src/runtime/emit/cache.js.map +1 -1
- package/dist/src/runtime/emit/cast.d.ts.map +1 -1
- package/dist/src/runtime/emit/cast.js +10 -23
- 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 +41 -44
- package/dist/src/runtime/emit/constraint-check.js.map +1 -1
- package/dist/src/runtime/emit/create-view.d.ts.map +1 -1
- package/dist/src/runtime/emit/create-view.js +6 -0
- package/dist/src/runtime/emit/create-view.js.map +1 -1
- package/dist/src/runtime/emit/cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/cte.js +43 -20
- package/dist/src/runtime/emit/cte.js.map +1 -1
- package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
- package/dist/src/runtime/emit/distinct.js +6 -3
- package/dist/src/runtime/emit/distinct.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +241 -115
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.js +16 -65
- package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
- package/dist/src/runtime/emit/insert.d.ts.map +1 -1
- package/dist/src/runtime/emit/insert.js +18 -7
- package/dist/src/runtime/emit/insert.js.map +1 -1
- package/dist/src/runtime/emit/join.js +5 -0
- package/dist/src/runtime/emit/join.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts +14 -1
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.js +38 -7
- 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 +47 -6
- package/dist/src/runtime/emit/materialized-view.js.map +1 -1
- package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/merge-join.js +18 -8
- package/dist/src/runtime/emit/merge-join.js.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.js +59 -1
- package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
- package/dist/src/runtime/emit/set-object-tags.d.ts +8 -0
- package/dist/src/runtime/emit/set-object-tags.d.ts.map +1 -1
- package/dist/src/runtime/emit/set-object-tags.js +8 -0
- package/dist/src/runtime/emit/set-object-tags.js.map +1 -1
- package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
- package/dist/src/runtime/emit/set-operation.js +7 -4
- package/dist/src/runtime/emit/set-operation.js.map +1 -1
- package/dist/src/runtime/emit/sort.d.ts.map +1 -1
- package/dist/src/runtime/emit/sort.js +5 -2
- package/dist/src/runtime/emit/sort.js.map +1 -1
- package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
- package/dist/src/runtime/emit/subquery.js +113 -13
- package/dist/src/runtime/emit/subquery.js.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.d.ts +7 -0
- package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.js +15 -7
- package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
- package/dist/src/runtime/emit/update.d.ts.map +1 -1
- package/dist/src/runtime/emit/update.js +44 -3
- package/dist/src/runtime/emit/update.js.map +1 -1
- package/dist/src/runtime/emit/window.d.ts.map +1 -1
- package/dist/src/runtime/emit/window.js +72 -55
- package/dist/src/runtime/emit/window.js.map +1 -1
- package/dist/src/runtime/foreign-key-actions.d.ts +36 -1
- package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
- package/dist/src/runtime/foreign-key-actions.js +238 -116
- package/dist/src/runtime/foreign-key-actions.js.map +1 -1
- package/dist/src/runtime/parallel-driver.d.ts +20 -1
- package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
- package/dist/src/runtime/parallel-driver.js +23 -1
- package/dist/src/runtime/parallel-driver.js.map +1 -1
- package/dist/src/runtime/types.d.ts +54 -0
- package/dist/src/runtime/types.d.ts.map +1 -1
- package/dist/src/runtime/types.js.map +1 -1
- package/dist/src/schema/catalog-persistability.d.ts +58 -0
- package/dist/src/schema/catalog-persistability.d.ts.map +1 -0
- package/dist/src/schema/catalog-persistability.js +87 -0
- package/dist/src/schema/catalog-persistability.js.map +1 -0
- package/dist/src/schema/catalog.d.ts +17 -1
- package/dist/src/schema/catalog.d.ts.map +1 -1
- package/dist/src/schema/catalog.js +25 -3
- package/dist/src/schema/catalog.js.map +1 -1
- package/dist/src/schema/constraint-builder.d.ts +20 -22
- package/dist/src/schema/constraint-builder.d.ts.map +1 -1
- package/dist/src/schema/constraint-builder.js +43 -36
- package/dist/src/schema/constraint-builder.js.map +1 -1
- package/dist/src/schema/ddl-generator.d.ts +23 -0
- package/dist/src/schema/ddl-generator.d.ts.map +1 -1
- package/dist/src/schema/ddl-generator.js +27 -0
- package/dist/src/schema/ddl-generator.js.map +1 -1
- package/dist/src/schema/function.d.ts +109 -1
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/manager.d.ts +28 -0
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +82 -14
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/schema-differ.d.ts.map +1 -1
- package/dist/src/schema/schema-differ.js +51 -12
- package/dist/src/schema/schema-differ.js.map +1 -1
- package/dist/src/schema/unique-enforcement.d.ts +31 -0
- package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
- package/dist/src/schema/unique-enforcement.js +37 -1
- package/dist/src/schema/unique-enforcement.js.map +1 -1
- package/dist/src/schema/window-function.d.ts +30 -10
- package/dist/src/schema/window-function.d.ts.map +1 -1
- package/dist/src/schema/window-function.js +20 -16
- package/dist/src/schema/window-function.js.map +1 -1
- package/dist/src/types/cast-semantics.d.ts +43 -0
- package/dist/src/types/cast-semantics.d.ts.map +1 -0
- package/dist/src/types/cast-semantics.js +59 -0
- package/dist/src/types/cast-semantics.js.map +1 -0
- package/dist/src/types/index.d.ts +1 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +1 -1
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/json-type.d.ts.map +1 -1
- package/dist/src/types/json-type.js +31 -10
- package/dist/src/types/json-type.js.map +1 -1
- package/dist/src/types/logical-type.d.ts +22 -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/temporal-types.d.ts.map +1 -1
- package/dist/src/types/temporal-types.js +33 -11
- package/dist/src/types/temporal-types.js.map +1 -1
- package/dist/src/types/validation.d.ts +39 -1
- package/dist/src/types/validation.d.ts.map +1 -1
- package/dist/src/types/validation.js +60 -0
- package/dist/src/types/validation.js.map +1 -1
- package/dist/src/util/ast-spine-clone.d.ts +23 -0
- package/dist/src/util/ast-spine-clone.d.ts.map +1 -0
- package/dist/src/util/ast-spine-clone.js +41 -0
- package/dist/src/util/ast-spine-clone.js.map +1 -0
- package/dist/src/util/coercion.d.ts +13 -0
- package/dist/src/util/coercion.d.ts.map +1 -1
- package/dist/src/util/coercion.js +10 -1
- package/dist/src/util/coercion.js.map +1 -1
- package/dist/src/util/comparison.d.ts +89 -0
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +156 -27
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/vtab/manifest.d.ts +7 -0
- package/dist/src/vtab/manifest.d.ts.map +1 -1
- package/dist/src/vtab/memory/connection.d.ts +14 -1
- package/dist/src/vtab/memory/connection.d.ts.map +1 -1
- package/dist/src/vtab/memory/connection.js +20 -2
- package/dist/src/vtab/memory/connection.js.map +1 -1
- package/dist/src/vtab/memory/layer/base.d.ts +6 -1
- package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base.js +14 -5
- package/dist/src/vtab/memory/layer/base.js.map +1 -1
- package/dist/src/vtab/memory/layer/connection.d.ts +17 -0
- package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/connection.js +26 -0
- package/dist/src/vtab/memory/layer/connection.js.map +1 -1
- package/dist/src/vtab/memory/layer/manager.d.ts +96 -13
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +595 -119
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/memory/layer/plan-filter.d.ts +41 -20
- package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/plan-filter.js +57 -27
- package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
- package/dist/src/vtab/memory/layer/row-convert.d.ts +21 -0
- package/dist/src/vtab/memory/layer/row-convert.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/row-convert.js +30 -0
- package/dist/src/vtab/memory/layer/row-convert.js.map +1 -0
- package/dist/src/vtab/memory/layer/scan-layer.d.ts +6 -3
- package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/scan-layer.js +69 -36
- package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.d.ts +127 -13
- package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/transaction.js +214 -65
- package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +9 -2
- 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 +3 -2
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/memory/types.d.ts +27 -1
- package/dist/src/vtab/memory/types.d.ts.map +1 -1
- package/dist/src/vtab/memory/types.js +16 -1
- package/dist/src/vtab/memory/types.js.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key.d.ts +9 -0
- package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/primary-key.js +11 -0
- package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
- package/dist/src/vtab/module.d.ts +63 -0
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/dist/src/vtab/table.d.ts +24 -6
- package/dist/src/vtab/table.d.ts.map +1 -1
- package/dist/src/vtab/table.js.map +1 -1
- package/package.json +3 -3
- package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts +0 -19
- package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts.map +0 -1
- package/dist/src/planner/rules/cache/rule-in-subquery-cache.js +0 -53
- package/dist/src/planner/rules/cache/rule-in-subquery-cache.js.map +0 -1
|
@@ -42,8 +42,8 @@ import { type SqlValue, type Row } from '../common/types.js';
|
|
|
42
42
|
import type { BackingRowChange } from '../vtab/backing-host.js';
|
|
43
43
|
import type { MaintainedTableSchema } from '../schema/derivation.js';
|
|
44
44
|
import type { UniqueConstraintSchema } from '../schema/table.js';
|
|
45
|
-
import type { MaterializedViewManagerContext, BackingConnectionCache } from './database-materialized-views-plans.js';
|
|
46
|
-
export type { BackingConnectionCache } from './database-materialized-views-plans.js';
|
|
45
|
+
import type { MaterializedViewManagerContext, ResidualKeyBatch, BackingConnectionCache } from './database-materialized-views-plans.js';
|
|
46
|
+
export type { BackingConnectionCache, ResidualKeyBatch } from './database-materialized-views-plans.js';
|
|
47
47
|
export declare class MaterializedViewManager {
|
|
48
48
|
private readonly ctx;
|
|
49
49
|
private unsubscribeSchemaChanges;
|
|
@@ -237,48 +237,95 @@ export declare class MaterializedViewManager {
|
|
|
237
237
|
* too. Omitted by the cold enforcement/eviction callers, which re-resolve the same
|
|
238
238
|
* connection deterministically.
|
|
239
239
|
*
|
|
240
|
-
* `deferred` is the optional per-statement deferred-rebuild set (MV keys)
|
|
241
|
-
* `
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
* once at the end-of-statement
|
|
245
|
-
*
|
|
246
|
-
*
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
*
|
|
240
|
+
* `deferred` is the optional per-statement deferred-rebuild set (MV keys) and
|
|
241
|
+
* `residualBatch` the optional per-statement residual key batch. A `'full-rebuild'`
|
|
242
|
+
* plan re-evaluates the WHOLE body, so applying it per source row is O(rows × body) —
|
|
243
|
+
* pathological; when the DML boundary supplies a `deferred` set it is instead marked
|
|
244
|
+
* dirty here (no per-row apply) and rebuilt exactly once at the end-of-statement
|
|
245
|
+
* {@link flushDeferredMaintenance} boundary. The three **residual** arms
|
|
246
|
+
* (`'residual-recompute'`, `'prefix-delete'`, `'join-residual'`) are likewise per-key
|
|
247
|
+
* recomputes whose per-row apply costs a scheduler run each; when the DML boundary
|
|
248
|
+
* supplies a `residualBatch`, they accumulate their affected binding keys (deduped
|
|
249
|
+
* across the statement) and recompute once per distinct key at the same flush.
|
|
250
|
+
* `'inverse-projection'` alone stays per-row-immediate: its delta is a cheap pure
|
|
251
|
+
* projection AND the covering-UNIQUE enforcement scan depends on its per-row backing
|
|
252
|
+
* visibility ({@link lookupCoveringConflicts} reads only inverse-projection backings,
|
|
253
|
+
* so deferring the other arms cannot starve that scan —
|
|
254
|
+
* {@link findRowTimeCoveringStructure} declines them). A cold caller without the
|
|
255
|
+
* per-statement structures falls through to the inline per-change apply — a safe,
|
|
256
|
+
* unamortized fallback (the enforcement/eviction callers only ever name
|
|
257
|
+
* inverse-projection MVs, but the fallback stays correct for every arm).
|
|
250
258
|
*/
|
|
251
|
-
maintainRowTime(sourceBase: string, change: BackingRowChange, cache?: BackingConnectionCache, deferred?: Set<string>, depth?: number): Promise<void>;
|
|
259
|
+
maintainRowTime(sourceBase: string, change: BackingRowChange, cache?: BackingConnectionCache, deferred?: Set<string>, residualBatch?: ResidualKeyBatch, depth?: number): Promise<void>;
|
|
252
260
|
/**
|
|
253
|
-
*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
*
|
|
261
|
+
* The invariant pipeline every realized maintenance delta runs, in order: coarsening
|
|
262
|
+
* collision telemetry (observe-only; gated on `coarseningWatch`), the NOT-NULL
|
|
263
|
+
* ordering-seeded-PK guard (no-op unless the MV carries the skew), derived-row
|
|
264
|
+
* CHECK/FK validation (no-op for a constraint-less table; BEFORE the cascade so a
|
|
265
|
+
* consumer never consumes an invalid producer row), parent-side referential
|
|
266
|
+
* enforcement (RESTRICT-walk then declared actions, after `M`'s own image is
|
|
267
|
+
* validated), then the MV-over-MV cascade — each effective {@link BackingRowChange}
|
|
268
|
+
* routed back through {@link maintainRowTime} with the SAME per-statement structures,
|
|
269
|
+
* so a residual consumer accumulates into the batch and a full-rebuild consumer
|
|
270
|
+
* re-dirties the deferred set. Shared verbatim by the per-row inline path and the
|
|
271
|
+
* end-of-statement flush ({@link flushDeferredMaintenance}, which calls with
|
|
272
|
+
* `depth = 0` — its own round bound {@link assertFlushRounds} replaces the recursion
|
|
273
|
+
* bound {@link assertCascadeDepth} there).
|
|
274
|
+
*/
|
|
275
|
+
private postApplyBackingChanges;
|
|
276
|
+
/**
|
|
277
|
+
* Flush the per-statement deferred maintenance at the end-of-statement boundary:
|
|
278
|
+
* recompute every accumulated residual key exactly once per distinct key
|
|
279
|
+
* ({@link applyResidualBatch}) and rebuild every dirtied full-rebuild MV exactly once
|
|
280
|
+
* (not once per source row), cascading each apply's effective
|
|
281
|
+
* {@link BackingRowChange}(s) onward so MV-over-MV consumers converge.
|
|
257
282
|
*
|
|
258
|
-
* Drained as a worklist over the producer→consumer DAG. Each
|
|
259
|
-
* {@link
|
|
260
|
-
*
|
|
261
|
-
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
283
|
+
* Drained as a worklist over the producer→consumer DAG. Each apply routes its realized
|
|
284
|
+
* delta back through {@link maintainRowTime} with the SAME `deferred` set and
|
|
285
|
+
* `residualBatch`: an inverse-projection consumer applies inline; a residual consumer
|
|
286
|
+
* accumulates its keys into the batch and a full-rebuild consumer re-dirties into the
|
|
287
|
+
* drain (recomputed in a later round, after its producer's delta has landed). The drain
|
|
288
|
+
* proceeds in **rounds** — each round snapshots both structures, clears them, and
|
|
289
|
+
* applies each member, collecting the next round's re-accumulations — so a consumer is
|
|
290
|
+
* never permanently stale (a producer flushed in the same round re-accumulates it for
|
|
291
|
+
* the next), and convergence takes at most one round per level of the deferred sub-DAG.
|
|
292
|
+
* Residual entries drain before rebuilds within a round (arbitrary for correctness —
|
|
293
|
+
* every apply reads live state — but it lets a same-round rebuild read its residual
|
|
294
|
+
* producers' already-flushed backings, saving a round in mixed chains).
|
|
268
295
|
*
|
|
269
296
|
* Termination: the dependency DAG is acyclic (a consumer MV requires its producer to
|
|
270
|
-
* pre-exist), so the longest
|
|
297
|
+
* pre-exist), so the longest deferred chain — hence the round count — is bounded by
|
|
271
298
|
* the registered-row-time-MV count. Exceeding it signals a structurally-impossible cycle
|
|
272
299
|
* and fails loud ({@link assertFlushRounds}) — the worklist analogue of
|
|
273
300
|
* {@link assertCascadeDepth}. This should never fire.
|
|
274
301
|
*
|
|
275
302
|
* The DML executor calls this INSIDE the statement-atomicity savepoint (after the row
|
|
276
|
-
* loop, before the savepoint release), so a failed rebuild
|
|
277
|
-
*
|
|
303
|
+
* loop, before the savepoint release), so a failed recompute/rebuild — including a
|
|
304
|
+
* derived-row validation failure or parent-side RESTRICT over the flushed delta — rolls
|
|
305
|
+
* the whole statement back with the same attribution as the per-row path. Empty
|
|
306
|
+
* structures are a no-op (no overhead on statements touching no deferred MV).
|
|
278
307
|
*/
|
|
279
|
-
|
|
308
|
+
flushDeferredMaintenance(deferred: Set<string>, residualBatch: ResidualKeyBatch, cache?: BackingConnectionCache): Promise<void>;
|
|
280
309
|
/**
|
|
281
|
-
*
|
|
310
|
+
* Flush one residual-arm MV's accumulated statement keys: run the residual variant
|
|
311
|
+
* once per distinct key against live post-statement state and apply all resulting ops
|
|
312
|
+
* in one {@link BackingHost.applyMaintenance} call (upsert recomputed slices, delete
|
|
313
|
+
* emptied keys — the same keyed diff the per-row path applies, evaluated once per key
|
|
314
|
+
* instead of once per touching row).
|
|
315
|
+
*
|
|
316
|
+
* **Per-statement rebuild demotion** ({@link shouldDegradeToRebuild}, re-costed here
|
|
317
|
+
* against the statement's ACTUAL distinct-key count and the plan's create-time
|
|
318
|
+
* {@link MaintenancePlanCommon.sourceStats}): when k residual runs cost more than one
|
|
319
|
+
* whole-body rebuild — a statement touching most groups — run the plan's
|
|
320
|
+
* {@link ResidualArmCommon.fullRebuildScheduler} and apply a single `'replace-all'`
|
|
321
|
+
* keyed diff instead. Stateless: the stored strategy is unchanged, so a later
|
|
322
|
+
* low-cardinality statement reverts to per-key residuals. Kept on the manager
|
|
323
|
+
* (delegating op computation to the apply-module free helpers) so the statement-flush
|
|
324
|
+
* suites can instrument it alongside {@link applyFullRebuild}.
|
|
325
|
+
*/
|
|
326
|
+
private applyResidualBatch;
|
|
327
|
+
/**
|
|
328
|
+
* Round backstop for {@link flushDeferredMaintenance}. The full-rebuild sub-DAG is acyclic,
|
|
282
329
|
* so the drain converges in at most one round per chain level — bounded by the row-time
|
|
283
330
|
* MV count. A round count beyond that (`+1` slack for an initial dirty set already
|
|
284
331
|
* spanning multiple levels) signals a structural impossibility (a cycle) — fail loud
|
|
@@ -323,13 +370,20 @@ export declare class MaterializedViewManager {
|
|
|
323
370
|
*
|
|
324
371
|
* Unlike the bounded-delta arms this ignores the specific changed row — the floor
|
|
325
372
|
* rebuilds wholesale. It is therefore deferred to a single end-of-statement flush
|
|
326
|
-
* ({@link
|
|
373
|
+
* ({@link flushDeferredMaintenance}) rather than run per source row, so a bulk statement
|
|
327
374
|
* rebuilds exactly once; this is that one rebuild. An empty body (zero rows) yields a
|
|
328
375
|
* `'replace-all' []`, which empties the backing. Kept on the manager (delegating the
|
|
329
376
|
* scan / backing write to the apply-module free helpers) so the per-statement-flush
|
|
330
377
|
* deferral suite can instrument it to count rebuilds.
|
|
331
378
|
*/
|
|
332
379
|
private applyFullRebuild;
|
|
380
|
+
/**
|
|
381
|
+
* Run a whole-body scheduler to completion against live mid-transaction source state
|
|
382
|
+
* and apply the single `'replace-all'` keyed diff. The shared kernel of the
|
|
383
|
+
* full-rebuild floor ({@link applyFullRebuild}) and the residual arms' per-statement
|
|
384
|
+
* rebuild demotion ({@link applyResidualBatch}).
|
|
385
|
+
*/
|
|
386
|
+
private applyReplaceAll;
|
|
333
387
|
/**
|
|
334
388
|
* Resolve the linked, enforcement-ready covering MV for a UNIQUE constraint on
|
|
335
389
|
* `schema.table`, or `undefined`. The constraint's `coveringStructureName`
|
|
@@ -337,13 +391,15 @@ export declare class MaterializedViewManager {
|
|
|
337
391
|
* this confirms a live row-time plan exists for the source, the MV is not
|
|
338
392
|
* `stale` (structural breakage), and the plan is **per-row maintained** — only
|
|
339
393
|
* then is its backing table row-time consistent enough to answer conflict
|
|
340
|
-
* resolution.
|
|
341
|
-
*
|
|
342
|
-
*
|
|
343
|
-
*
|
|
344
|
-
*
|
|
345
|
-
*
|
|
346
|
-
*
|
|
394
|
+
* resolution. Only the `'inverse-projection'` arm qualifies: every other arm —
|
|
395
|
+
* the `'full-rebuild'` floor and the residual arms — is deferred to the
|
|
396
|
+
* end-of-statement flush (its backing lags the source mid-statement), so it can
|
|
397
|
+
* never serve as a covering structure for a synchronous per-row UNIQUE probe —
|
|
398
|
+
* all are skipped here regardless of any (informational) `coveringStructureName`
|
|
399
|
+
* link, which keeps an eligibility flip from opening a stale-read enforcement
|
|
400
|
+
* path. O(1) negative fast path off {@link rowTimeBySource} so a source table
|
|
401
|
+
* with no row-time covering MV pays a single map lookup and stays on the
|
|
402
|
+
* synchronous index/scan path.
|
|
347
403
|
*
|
|
348
404
|
* **Collation eligibility gate.** A covering MV generates its conflict candidates
|
|
349
405
|
* by re-comparing each backing row under the SOURCE column's DECLARED collation
|
|
@@ -427,8 +483,9 @@ export declare class MaterializedViewManager {
|
|
|
427
483
|
* - the leading `k` backing-PK columns do not map to **exactly** the UC
|
|
428
484
|
* source-column set (defensive guard against a non-UC-leading structure);
|
|
429
485
|
* - any leading backing-PK column, or its source UC column, has a **non-BINARY**
|
|
430
|
-
* collation. This is a *soundness* gate, not a perf choice: the
|
|
431
|
-
*
|
|
486
|
+
* collation. This is a *soundness* gate, not a perf choice: the scan request
|
|
487
|
+
* carries no collation names, so the prefix seek's early-termination resolves its
|
|
488
|
+
* comparators at the BINARY floor (`resolveScanComparators`), while the
|
|
432
489
|
* backing btree orders the PK by its declared collation and the UNIQUE
|
|
433
490
|
* constraint conflicts by the source collation. Under a non-binary collation
|
|
434
491
|
* the binary early-termination could `break` before a collated-equal /
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-materialized-views.d.ts","sourceRoot":"","sources":["../../../src/core/database-materialized-views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAKH,OAAO,EAAc,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAIzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAe,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"database-materialized-views.d.ts","sourceRoot":"","sources":["../../../src/core/database-materialized-views.ts"],"names":[],"mappings":"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"}
|