@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
|
@@ -336,14 +336,9 @@ export function emitTemporalArithmetic(plan, ctx) {
|
|
|
336
336
|
* @returns Comparison result (boolean) if temporal comparison, undefined otherwise
|
|
337
337
|
*/
|
|
338
338
|
export function tryTemporalComparison(operator, v1, v2) {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
// because ISO 8601 duration strings don't compare correctly lexicographically
|
|
342
|
-
if (!isTimespanValue(v1) || !isTimespanValue(v2)) {
|
|
339
|
+
const cmp = tryTemporalCompare(v1, v2);
|
|
340
|
+
if (cmp === undefined)
|
|
343
341
|
return undefined;
|
|
344
|
-
}
|
|
345
|
-
// Use the TIMESPAN_TYPE's compare function
|
|
346
|
-
const cmp = TIMESPAN_TYPE.compare(v1, v2);
|
|
347
342
|
switch (operator) {
|
|
348
343
|
case '=':
|
|
349
344
|
case '==':
|
|
@@ -363,4 +358,17 @@ export function tryTemporalComparison(operator, v1, v2) {
|
|
|
363
358
|
return undefined;
|
|
364
359
|
}
|
|
365
360
|
}
|
|
361
|
+
/**
|
|
362
|
+
* Three-way duration compare, for callers that need an ordering rather than a
|
|
363
|
+
* boolean verdict (BETWEEN's per-bound comparator). Returns undefined unless BOTH
|
|
364
|
+
* values look like ISO 8601 duration strings — the same guard
|
|
365
|
+
* {@link tryTemporalComparison} applies, so the two never disagree.
|
|
366
|
+
*/
|
|
367
|
+
export function tryTemporalCompare(v1, v2) {
|
|
368
|
+
// Timespans are the only temporal type that needs special comparison logic
|
|
369
|
+
// because ISO 8601 duration strings don't compare correctly lexicographically
|
|
370
|
+
if (!isTimespanValue(v1) || !isTimespanValue(v2))
|
|
371
|
+
return undefined;
|
|
372
|
+
return TIMESPAN_TYPE.compare(v1, v2);
|
|
373
|
+
}
|
|
366
374
|
//# sourceMappingURL=temporal-arithmetic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temporal-arithmetic.js","sourceRoot":"","sources":["../../../../src/runtime/emit/temporal-arithmetic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"temporal-arithmetic.js","sourceRoot":"","sources":["../../../../src/runtime/emit/temporal-arithmetic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAK/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAK/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9D,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAuH9E"}
|
|
@@ -4,6 +4,7 @@ import { QuereusError } from '../../common/errors.js';
|
|
|
4
4
|
import { StatusCode } from '../../common/types.js';
|
|
5
5
|
import { buildRowDescriptor, composeOldNewRow } from '../../util/row-descriptor.js';
|
|
6
6
|
import { createRowSlot, withRowContext } from '../context-helpers.js';
|
|
7
|
+
import { buildRowCoercion } from '../../types/validation.js';
|
|
7
8
|
export function emitUpdate(plan, ctx) {
|
|
8
9
|
const tableSchema = plan.table.tableSchema;
|
|
9
10
|
// Create row descriptor for the source rows (needed for assignment expression evaluation)
|
|
@@ -30,6 +31,38 @@ export function emitUpdate(plan, ctx) {
|
|
|
30
31
|
});
|
|
31
32
|
// Emit assignment value expressions as callbacks
|
|
32
33
|
const assignmentEvaluators = plan.assignments.map(assign => emitCallFromPlan(assign.value, ctx));
|
|
34
|
+
// Convert the NEW row to declared column types HERE, driven by static types,
|
|
35
|
+
// so constraint checking and the storage layer (told `preCoerced`) see the
|
|
36
|
+
// declared form exactly once. An assigned column's source type is its
|
|
37
|
+
// assignment expression's type; an unassigned column keeps whatever the
|
|
38
|
+
// source relation reports at that position — for the ordinary target-table
|
|
39
|
+
// scan that is the declared column type itself (identity match ⇒ leave
|
|
40
|
+
// alone: the scanned value is already converted, and e.g. JSON conversion
|
|
41
|
+
// is not repeatable — see buildRowCoercion). Never assume "unassigned ⇒
|
|
42
|
+
// converted": a non-scan source (view decomposition, member insert) reports
|
|
43
|
+
// its own types and converts by the same rule.
|
|
44
|
+
//
|
|
45
|
+
// Split across the two assignment phases so a generated column derives from
|
|
46
|
+
// the value that will actually be STORED, not the raw assignment: phase 1
|
|
47
|
+
// converts the regular assignments (and any unassigned cell whose source
|
|
48
|
+
// type differs), phase 2 the generated cells. A generated column left in
|
|
49
|
+
// place by phase 1 still holds its scanned value, which is already in
|
|
50
|
+
// declared form.
|
|
51
|
+
const sourceAttrs = plan.source.getAttributes();
|
|
52
|
+
const regularCellTypes = tableSchema.columns.map((_, i) => sourceAttrs[i]?.type.logicalType);
|
|
53
|
+
for (const i of regularIndices) {
|
|
54
|
+
regularCellTypes[assignmentTargetIndices[i]] = plan.assignments[i].value.getType().logicalType;
|
|
55
|
+
}
|
|
56
|
+
const coerceRegular = buildRowCoercion(regularCellTypes, tableSchema.columns);
|
|
57
|
+
// After phase 1 every non-generated cell is in declared form (identity ⇒
|
|
58
|
+
// skip), so only the generated cells can still need converting.
|
|
59
|
+
const generatedCellTypes = tableSchema.columns.map(column => column.logicalType);
|
|
60
|
+
for (const i of generatedIndices) {
|
|
61
|
+
generatedCellTypes[assignmentTargetIndices[i]] = plan.assignments[i].value.getType().logicalType;
|
|
62
|
+
}
|
|
63
|
+
const coerceGenerated = generatedIndices.length > 0
|
|
64
|
+
? buildRowCoercion(generatedCellTypes, tableSchema.columns)
|
|
65
|
+
: undefined;
|
|
33
66
|
async function* run(rctx, sourceRowsIterable, ...assignmentEvaluators) {
|
|
34
67
|
const slot = createRowSlot(rctx, sourceRowDescriptor);
|
|
35
68
|
try {
|
|
@@ -38,12 +71,16 @@ export function emitUpdate(plan, ctx) {
|
|
|
38
71
|
// Phase 1: Evaluate regular (non-generated) assignment expressions.
|
|
39
72
|
// Await to support async evaluators (e.g. scalar subqueries) — non-async
|
|
40
73
|
// callbacks return values directly and `await` is a no-op for them.
|
|
41
|
-
|
|
74
|
+
let updatedRow = [...sourceRow]; // Copy the original row
|
|
42
75
|
for (const i of regularIndices) {
|
|
43
76
|
const value = await assignmentEvaluators[i](rctx);
|
|
44
77
|
updatedRow[assignmentTargetIndices[i]] = value;
|
|
45
78
|
}
|
|
46
|
-
|
|
79
|
+
if (coerceRegular)
|
|
80
|
+
updatedRow = coerceRegular(updatedRow);
|
|
81
|
+
// Phase 2: Evaluate generated column expressions against the updated row,
|
|
82
|
+
// now holding the CONVERTED values of the regular assignments (a generated
|
|
83
|
+
// column must derive from what is stored, not from the raw assignment).
|
|
47
84
|
// Generated expressions are validated as deterministic (see
|
|
48
85
|
// validateDeterministicGenerated in update.ts builder), so they cannot
|
|
49
86
|
// contain scalar subqueries and always return synchronously.
|
|
@@ -54,8 +91,12 @@ export function emitUpdate(plan, ctx) {
|
|
|
54
91
|
updatedRow[assignmentTargetIndices[i]] = value;
|
|
55
92
|
}
|
|
56
93
|
});
|
|
94
|
+
if (coerceGenerated)
|
|
95
|
+
updatedRow = coerceGenerated(updatedRow);
|
|
57
96
|
}
|
|
58
|
-
// Create flat row with OLD (source) and NEW (updated) values for constraint
|
|
97
|
+
// Create flat row with OLD (source) and NEW (updated) values for constraint
|
|
98
|
+
// checking. The NEW half is now fully in declared column types; OLD is the
|
|
99
|
+
// scanned row, already in stored form.
|
|
59
100
|
const flatRow = composeOldNewRow(sourceRow, updatedRow, tableSchema.columns.length);
|
|
60
101
|
// Yield the flat row for constraint checking
|
|
61
102
|
// NOTE: UpdateNode only transforms rows - it does NOT execute the actual update
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/runtime/emit/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAA2B,MAAM,uBAAuB,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/runtime/emit/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAkB9D,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAkB9D,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAkK9E"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { asRun } from '../types.js';
|
|
2
2
|
import { emitPlanNode, emitCallFromPlan } from '../emitters.js';
|
|
3
|
-
import { resolveWindowFunction } from '../../schema/window-function.js';
|
|
3
|
+
import { bindWindowSchema, resolveWindowFunction } from '../../schema/window-function.js';
|
|
4
|
+
import { argComparisonContext } from './aggregate-setup.js';
|
|
4
5
|
import { QuereusError } from '../../common/errors.js';
|
|
5
6
|
import { StatusCode } from '../../common/types.js';
|
|
6
|
-
import { createTypedComparator,
|
|
7
|
+
import { createTypedComparator, createTypedOrderByComparator, semanticKeyTransform } from '../../util/comparison.js';
|
|
7
8
|
import { hashKeyCollationName } from '../../planner/analysis/comparison-collation.js';
|
|
8
9
|
import { serializeKeyNullGrouping } from '../../util/key-serializer.js';
|
|
9
10
|
import { createLogger } from '../../common/logger.js';
|
|
@@ -12,13 +13,21 @@ import { createRowSlot } from '../context-helpers.js';
|
|
|
12
13
|
import { tryExtractNumericLiteral } from '../../util/ast-literal.js';
|
|
13
14
|
const log = createLogger('runtime:emit:window');
|
|
14
15
|
export function emitWindow(plan, ctx) {
|
|
15
|
-
//
|
|
16
|
-
|
|
16
|
+
// Resolve + bind each window function's schema ONCE here: the call site's
|
|
17
|
+
// argument types and collations specialize comparison-sensitive windows
|
|
18
|
+
// (min/max via bindArgs) so their step ranks by the argument's semantic order,
|
|
19
|
+
// exactly as the min/max aggregate does. Every execution shape below —
|
|
20
|
+
// the buffered frame walk (computeAggregateFunction), the streaming running
|
|
21
|
+
// aggregate (stepRunningAgg) and the sliding-frame scans — folds through THIS
|
|
22
|
+
// schema, so the physical shapes cannot drift apart. Nothing per-row resolves
|
|
23
|
+
// a type or a collation.
|
|
24
|
+
const functionSchemas = plan.functions.map((func, fi) => {
|
|
17
25
|
const schema = resolveWindowFunction(func.functionName);
|
|
18
26
|
if (!schema) {
|
|
19
27
|
throw new QuereusError(`Window function ${func.functionName} not found`, StatusCode.INTERNAL);
|
|
20
28
|
}
|
|
21
|
-
|
|
29
|
+
const argBindings = (plan.functionArguments[fi] ?? []).map(argPlan => argComparisonContext(argPlan, ctx));
|
|
30
|
+
return bindWindowSchema(schema, argBindings);
|
|
22
31
|
});
|
|
23
32
|
// Emit callbacks for partition expressions
|
|
24
33
|
const partitionCallbacks = plan.partitionExpressions.map(exprPlan => emitCallFromPlan(exprPlan, ctx));
|
|
@@ -30,13 +39,15 @@ export function emitWindow(plan, ctx) {
|
|
|
30
39
|
const functionArgCounts = plan.functionArguments.map(args => args.length);
|
|
31
40
|
// Create row descriptors
|
|
32
41
|
const sourceRowDescriptor = buildRowDescriptor(plan.source.getAttributes());
|
|
33
|
-
// Pre-resolve ORDER BY comparators using actual expression types (not hardcoded BINARY)
|
|
42
|
+
// Pre-resolve ORDER BY comparators using actual expression types (not hardcoded BINARY).
|
|
43
|
+
// Semantic-ordering types (TIMESPAN, JSON) rank by the type's compare — matching the
|
|
44
|
+
// typed peer-equality comparators below, so ordering and peer detection agree.
|
|
34
45
|
const orderByComparators = plan.orderByExpressions.map((exprPlan, i) => {
|
|
35
46
|
const exprType = exprPlan.getType();
|
|
36
47
|
const collationName = exprType.collationName || 'BINARY';
|
|
37
48
|
const collationFunc = ctx.resolveCollation(collationName);
|
|
38
49
|
const orderClause = plan.windowSpec.orderBy[i];
|
|
39
|
-
return
|
|
50
|
+
return createTypedOrderByComparator(exprType.logicalType, orderClause.direction, orderClause.nulls, collationFunc);
|
|
40
51
|
});
|
|
41
52
|
// Pre-resolve typed equality comparators for ORDER BY (used in ranking functions)
|
|
42
53
|
const orderByEqualityComparators = plan.orderByExpressions.map(exprPlan => {
|
|
@@ -49,6 +60,18 @@ export function emitWindow(plan, ctx) {
|
|
|
49
60
|
const exprType = exprPlan.getType();
|
|
50
61
|
return ctx.resolveKeyNormalizer(hashKeyCollationName(exprType.collationName, [exprType]));
|
|
51
62
|
});
|
|
63
|
+
// Partition-key canonicalizers for semantic-ordering key types: values the type's
|
|
64
|
+
// compare treats as equal (TIMESPAN 'PT1H' ≡ 'PT60M') must land in one partition,
|
|
65
|
+
// so they serialize via the type's groupKey representative (mirrors GROUP BY in
|
|
66
|
+
// hash-aggregate.ts).
|
|
67
|
+
const partitionKeyCanonicalizers = plan.partitionExpressions.map(exprPlan => semanticKeyTransform(exprPlan.getType().logicalType));
|
|
68
|
+
const hasPartitionCanonicalizer = partitionKeyCanonicalizers.some(c => c !== undefined);
|
|
69
|
+
const serializePartitionKey = (values) => {
|
|
70
|
+
const keyValues = hasPartitionCanonicalizer
|
|
71
|
+
? values.map((v, i) => partitionKeyCanonicalizers[i] ? partitionKeyCanonicalizers[i](v) : v)
|
|
72
|
+
: values;
|
|
73
|
+
return serializeKeyNullGrouping(keyValues, partitionKeyNormalizers);
|
|
74
|
+
};
|
|
52
75
|
async function* run(rctx, source, ...callbacks) {
|
|
53
76
|
log('Starting window function execution');
|
|
54
77
|
// Extract callbacks in order: partitions, orderBy, function args
|
|
@@ -70,7 +93,7 @@ export function emitWindow(plan, ctx) {
|
|
|
70
93
|
// Streaming fast path: source already arrives in
|
|
71
94
|
// [PARTITION BY..., ORDER BY] order, so we walk it once and emit
|
|
72
95
|
// in source order without materializing.
|
|
73
|
-
yield* runStreaming(plan, functionSchemas, rctx, source, sourceRowDescriptor, partitionCallbackList, orderByCallbackList, funcArgCallbackGroups,
|
|
96
|
+
yield* runStreaming(plan, functionSchemas, rctx, source, sourceRowDescriptor, partitionCallbackList, orderByCallbackList, funcArgCallbackGroups, serializePartitionKey, orderByEqualityComparators);
|
|
74
97
|
return;
|
|
75
98
|
}
|
|
76
99
|
// Buffered path: materialize then partition/sort.
|
|
@@ -84,7 +107,7 @@ export function emitWindow(plan, ctx) {
|
|
|
84
107
|
}
|
|
85
108
|
else {
|
|
86
109
|
// With partitioning - group by partition keys
|
|
87
|
-
const partitions = await groupByPartitions(allRows, partitionCallbackList, rctx, sourceSlot,
|
|
110
|
+
const partitions = await groupByPartitions(allRows, partitionCallbackList, rctx, sourceSlot, serializePartitionKey);
|
|
88
111
|
for (const partitionRows of partitions.values()) {
|
|
89
112
|
yield* processPartition(partitionRows, plan, functionSchemas, rctx, sourceRowDescriptor, partitionCallbackList, orderByCallbackList, funcArgCallbackGroups, sourceSlot, orderByComparators, orderByEqualityComparators);
|
|
90
113
|
}
|
|
@@ -107,7 +130,7 @@ export function emitWindow(plan, ctx) {
|
|
|
107
130
|
note: `window(${plan.functions.map(f => f.functionName).join(', ')})`
|
|
108
131
|
};
|
|
109
132
|
}
|
|
110
|
-
async function groupByPartitions(rows, partitionCallbacks, rctx, sourceSlot,
|
|
133
|
+
async function groupByPartitions(rows, partitionCallbacks, rctx, sourceSlot, serializePartitionKey) {
|
|
111
134
|
const partitions = new Map();
|
|
112
135
|
for (const row of rows) {
|
|
113
136
|
sourceSlot.set(row);
|
|
@@ -120,7 +143,7 @@ async function groupByPartitions(rows, partitionCallbacks, rctx, sourceSlot, key
|
|
|
120
143
|
const raw = callback(rctx);
|
|
121
144
|
partitionValues.push((raw instanceof Promise ? await raw : raw));
|
|
122
145
|
}
|
|
123
|
-
const partitionKey =
|
|
146
|
+
const partitionKey = serializePartitionKey(partitionValues);
|
|
124
147
|
if (!partitions.has(partitionKey)) {
|
|
125
148
|
partitions.set(partitionKey, []);
|
|
126
149
|
}
|
|
@@ -569,7 +592,7 @@ function arePeers(a, b, cmps) {
|
|
|
569
592
|
* Streaming runner. Processes one row at a time, yielding output rows once
|
|
570
593
|
* their slot values are all finalised.
|
|
571
594
|
*/
|
|
572
|
-
async function* runStreaming(plan, functionSchemas, rctx, source, sourceRowDescriptor, partitionCallbacks, orderByCallbacks, funcArgCallbackGroups,
|
|
595
|
+
async function* runStreaming(plan, functionSchemas, rctx, source, sourceRowDescriptor, partitionCallbacks, orderByCallbacks, funcArgCallbackGroups, serializePartitionKey, orderByEqualityComparators) {
|
|
573
596
|
const streaming = plan.streaming;
|
|
574
597
|
const funcContexts = plan.functions.map((_func, fi) => ({
|
|
575
598
|
fi,
|
|
@@ -650,7 +673,7 @@ async function* runStreaming(plan, functionSchemas, rctx, source, sourceRowDescr
|
|
|
650
673
|
const rawP = cb(rctx);
|
|
651
674
|
partitionValues.push((rawP instanceof Promise ? await rawP : rawP));
|
|
652
675
|
}
|
|
653
|
-
const partitionKey =
|
|
676
|
+
const partitionKey = serializePartitionKey(partitionValues);
|
|
654
677
|
// Resolve ORDER BY values (same shared-subtree concern as above).
|
|
655
678
|
const orderByValues = [];
|
|
656
679
|
for (const cb of orderByCallbacks) {
|
|
@@ -746,7 +769,7 @@ async function* runStreaming(plan, functionSchemas, rctx, source, sourceRowDescr
|
|
|
746
769
|
stepRunningAgg(entry, fi, fs, fc, argVal, isRangeMode);
|
|
747
770
|
break;
|
|
748
771
|
case 'slidingAgg':
|
|
749
|
-
handleSlidingArrival(entry,
|
|
772
|
+
handleSlidingArrival(entry, fc, fs, argVal, orderByVal0Num);
|
|
750
773
|
break;
|
|
751
774
|
}
|
|
752
775
|
}
|
|
@@ -897,7 +920,7 @@ async function* finalizePartition(state, funcContexts, isRangeMode, rctx, promot
|
|
|
897
920
|
const fs = state.funcStates[fi];
|
|
898
921
|
if (fs.mode.kind !== 'slidingAgg')
|
|
899
922
|
continue;
|
|
900
|
-
finalizeSlidingTrailing(fi, fs);
|
|
923
|
+
finalizeSlidingTrailing(funcContexts[fi], fs);
|
|
901
924
|
}
|
|
902
925
|
// Yield queued entries in order. Promote our slot to each entry's row so
|
|
903
926
|
// downstream attribute resolution sees the correct row.
|
|
@@ -956,27 +979,24 @@ function slidingFinalAcc(name, acc) {
|
|
|
956
979
|
default: return null;
|
|
957
980
|
}
|
|
958
981
|
}
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
let
|
|
982
|
+
/**
|
|
983
|
+
* MIN/MAX over a sliding-frame buffer slice, folded through the BOUND schema's own
|
|
984
|
+
* step/final rather than a local `<`. Reusing the schema is what keeps the sliding
|
|
985
|
+
* fast path ranking identically to the buffered frame walk — both consume the
|
|
986
|
+
* comparator `bindWindowSchema` installed at emit (semantic ordering for
|
|
987
|
+
* TIMESPAN/JSON arguments, the declared collation for text, storage-class order
|
|
988
|
+
* otherwise). `lo > hi` (empty slice) folds to the empty accumulator ⇒ NULL.
|
|
989
|
+
*/
|
|
990
|
+
function slidingScanExtremum(schema, buf, lo, hi) {
|
|
991
|
+
if (!schema.step)
|
|
992
|
+
return null;
|
|
993
|
+
let acc = null;
|
|
994
|
+
let rowCount = 0;
|
|
972
995
|
for (let k = lo; k <= hi; k++) {
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
continue;
|
|
976
|
-
if (best === null || v > best)
|
|
977
|
-
best = v;
|
|
996
|
+
acc = schema.step(acc, buf[k].argVal);
|
|
997
|
+
rowCount++;
|
|
978
998
|
}
|
|
979
|
-
return
|
|
999
|
+
return schema.final ? schema.final(acc, rowCount) : acc;
|
|
980
1000
|
}
|
|
981
1001
|
function slidingScanCountNonNull(buf, lo, hi) {
|
|
982
1002
|
let n = 0;
|
|
@@ -997,28 +1017,29 @@ function slidingScanSum(buf, lo, hi) {
|
|
|
997
1017
|
}
|
|
998
1018
|
return { sum, count };
|
|
999
1019
|
}
|
|
1000
|
-
/** Per-row dispatch for slidingAgg functions.
|
|
1001
|
-
|
|
1020
|
+
/** Per-row dispatch for slidingAgg functions. `fc` carries the emit-time-bound
|
|
1021
|
+
* registry schema, consulted by the MIN/MAX scans. */
|
|
1022
|
+
function handleSlidingArrival(entry, fc, fs, argVal, orderByVal0Num) {
|
|
1002
1023
|
const m = fs.mode;
|
|
1003
1024
|
fs.slidingBuffer.push({ argVal, orderByVal0: orderByVal0Num });
|
|
1004
1025
|
if (m.frameMode === 'rows') {
|
|
1005
|
-
handleSlidingRowsArrival(entry,
|
|
1026
|
+
handleSlidingRowsArrival(entry, fc, fs, m, argVal);
|
|
1006
1027
|
}
|
|
1007
1028
|
else {
|
|
1008
|
-
handleSlidingRangeArrival(entry,
|
|
1029
|
+
handleSlidingRangeArrival(entry, fc, fs, m, orderByVal0Num);
|
|
1009
1030
|
}
|
|
1010
1031
|
}
|
|
1011
1032
|
// ----- ROWS sliding -----
|
|
1012
|
-
function handleSlidingRowsArrival(entry,
|
|
1033
|
+
function handleSlidingRowsArrival(entry, fc, fs, m, argVal) {
|
|
1013
1034
|
if (m.name === 'sum' || m.name === 'count' || m.name === 'avg') {
|
|
1014
1035
|
slidingStepNum(fs.slidingAcc, argVal);
|
|
1015
1036
|
}
|
|
1016
1037
|
fs.slidingPending.push(entry);
|
|
1017
1038
|
while (fs.slidingPending.length > m.following) {
|
|
1018
|
-
finalizeSlidingRowsEntry(
|
|
1039
|
+
finalizeSlidingRowsEntry(fc, fs, m);
|
|
1019
1040
|
}
|
|
1020
1041
|
}
|
|
1021
|
-
function finalizeSlidingRowsEntry(
|
|
1042
|
+
function finalizeSlidingRowsEntry(fc, fs, m) {
|
|
1022
1043
|
const j = fs.slidingNextFinalizeIdx;
|
|
1023
1044
|
const targetLeft = Math.max(0, j - m.preceding);
|
|
1024
1045
|
// Trim left: rows that have aged out of the next-pending entry's frame.
|
|
@@ -1040,10 +1061,8 @@ function finalizeSlidingRowsEntry(fi, fs, m) {
|
|
|
1040
1061
|
value = slidingFinalAcc(m.name, fs.slidingAcc);
|
|
1041
1062
|
break;
|
|
1042
1063
|
case 'min':
|
|
1043
|
-
value = slidingScanMin(buf, lo, hi);
|
|
1044
|
-
break;
|
|
1045
1064
|
case 'max':
|
|
1046
|
-
value =
|
|
1065
|
+
value = slidingScanExtremum(fc.schema, buf, lo, hi);
|
|
1047
1066
|
break;
|
|
1048
1067
|
case 'first_value':
|
|
1049
1068
|
value = lo > hi ? null : buf[lo].argVal;
|
|
@@ -1055,11 +1074,11 @@ function finalizeSlidingRowsEntry(fi, fs, m) {
|
|
|
1055
1074
|
value = null;
|
|
1056
1075
|
}
|
|
1057
1076
|
const targetEntry = fs.slidingPending.shift();
|
|
1058
|
-
fillSlot(targetEntry, fi, value);
|
|
1077
|
+
fillSlot(targetEntry, fc.fi, value);
|
|
1059
1078
|
fs.slidingNextFinalizeIdx++;
|
|
1060
1079
|
}
|
|
1061
1080
|
// ----- RANGE sliding -----
|
|
1062
|
-
function handleSlidingRangeArrival(entry,
|
|
1081
|
+
function handleSlidingRangeArrival(entry, fc, fs, m, orderByVal0Num) {
|
|
1063
1082
|
const isFinite = Number.isFinite(orderByVal0Num);
|
|
1064
1083
|
const pending = fs.slidingRangePending;
|
|
1065
1084
|
pending.push({ entry, v_j: orderByVal0Num, isFinite, rightClosed: false });
|
|
@@ -1086,7 +1105,7 @@ function handleSlidingRangeArrival(entry, fi, fs, m, orderByVal0Num) {
|
|
|
1086
1105
|
}
|
|
1087
1106
|
}
|
|
1088
1107
|
while (pending.length > 0 && pending[0].rightClosed) {
|
|
1089
|
-
finalizeSlidingRangeEntry(
|
|
1108
|
+
finalizeSlidingRangeEntry(fc, fs, m);
|
|
1090
1109
|
}
|
|
1091
1110
|
}
|
|
1092
1111
|
/**
|
|
@@ -1131,7 +1150,7 @@ function findNonFinitePeerSpan(buf) {
|
|
|
1131
1150
|
}
|
|
1132
1151
|
return { lo, hi };
|
|
1133
1152
|
}
|
|
1134
|
-
function finalizeSlidingRangeEntry(
|
|
1153
|
+
function finalizeSlidingRangeEntry(fc, fs, m) {
|
|
1135
1154
|
const pending = fs.slidingRangePending;
|
|
1136
1155
|
const head = pending[0];
|
|
1137
1156
|
const buf = fs.slidingBuffer;
|
|
@@ -1163,10 +1182,8 @@ function finalizeSlidingRangeEntry(fi, fs, m) {
|
|
|
1163
1182
|
break;
|
|
1164
1183
|
}
|
|
1165
1184
|
case 'min':
|
|
1166
|
-
value = slidingScanMin(buf, lo, hi);
|
|
1167
|
-
break;
|
|
1168
1185
|
case 'max':
|
|
1169
|
-
value =
|
|
1186
|
+
value = slidingScanExtremum(fc.schema, buf, lo, hi);
|
|
1170
1187
|
break;
|
|
1171
1188
|
case 'first_value':
|
|
1172
1189
|
value = buf[lo].argVal;
|
|
@@ -1178,7 +1195,7 @@ function finalizeSlidingRangeEntry(fi, fs, m) {
|
|
|
1178
1195
|
value = null;
|
|
1179
1196
|
}
|
|
1180
1197
|
}
|
|
1181
|
-
fillSlot(head.entry, fi, value);
|
|
1198
|
+
fillSlot(head.entry, fc.fi, value);
|
|
1182
1199
|
pending.shift();
|
|
1183
1200
|
// Trim buffer rows that no remaining pending entry needs.
|
|
1184
1201
|
trimSlidingRangeBuffer(fs, m);
|
|
@@ -1230,16 +1247,16 @@ function trimSlidingRangeBuffer(fs, m) {
|
|
|
1230
1247
|
break;
|
|
1231
1248
|
}
|
|
1232
1249
|
}
|
|
1233
|
-
function finalizeSlidingTrailing(
|
|
1250
|
+
function finalizeSlidingTrailing(fc, fs) {
|
|
1234
1251
|
const m = fs.mode;
|
|
1235
1252
|
if (m.frameMode === 'rows') {
|
|
1236
1253
|
while (fs.slidingPending.length > 0) {
|
|
1237
|
-
finalizeSlidingRowsEntry(
|
|
1254
|
+
finalizeSlidingRowsEntry(fc, fs, m);
|
|
1238
1255
|
}
|
|
1239
1256
|
}
|
|
1240
1257
|
else {
|
|
1241
1258
|
while (fs.slidingRangePending.length > 0) {
|
|
1242
|
-
finalizeSlidingRangeEntry(
|
|
1259
|
+
finalizeSlidingRangeEntry(fc, fs, m);
|
|
1243
1260
|
}
|
|
1244
1261
|
}
|
|
1245
1262
|
}
|