@quereus/quereus 0.7.3 → 0.7.5
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/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +19 -18
- package/package.json +3 -3
- package/dist/src/common/constants.js.map +0 -1
- package/dist/src/common/datatype.js.map +0 -1
- package/dist/src/common/errors.js.map +0 -1
- package/dist/src/common/json-types.js.map +0 -1
- package/dist/src/common/logger.js.map +0 -1
- package/dist/src/common/type-inference.js.map +0 -1
- package/dist/src/common/types.js.map +0 -1
- package/dist/src/core/database-options.js.map +0 -1
- package/dist/src/core/database.js.map +0 -1
- package/dist/src/core/param.js.map +0 -1
- package/dist/src/core/statement.js.map +0 -1
- package/dist/src/func/builtins/aggregate.js.map +0 -1
- package/dist/src/func/builtins/builtin-window-functions.js.map +0 -1
- package/dist/src/func/builtins/conversion.js.map +0 -1
- package/dist/src/func/builtins/datetime.js.map +0 -1
- package/dist/src/func/builtins/explain.js.map +0 -1
- package/dist/src/func/builtins/generation.js.map +0 -1
- package/dist/src/func/builtins/index.js.map +0 -1
- package/dist/src/func/builtins/json-helpers.js.map +0 -1
- package/dist/src/func/builtins/json-tvf.js.map +0 -1
- package/dist/src/func/builtins/json.js.map +0 -1
- package/dist/src/func/builtins/scalar.js.map +0 -1
- package/dist/src/func/builtins/schema.js.map +0 -1
- package/dist/src/func/builtins/string.js.map +0 -1
- package/dist/src/func/builtins/timespan.js.map +0 -1
- package/dist/src/func/context.js.map +0 -1
- package/dist/src/func/registration.js.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/parser/ast.js.map +0 -1
- package/dist/src/parser/index.js.map +0 -1
- package/dist/src/parser/lexer.js.map +0 -1
- package/dist/src/parser/parser.js.map +0 -1
- package/dist/src/parser/utils.js.map +0 -1
- package/dist/src/parser/visitor.js.map +0 -1
- package/dist/src/planner/analysis/binding-collector.js.map +0 -1
- package/dist/src/planner/analysis/const-evaluator.js.map +0 -1
- package/dist/src/planner/analysis/const-pass.js.map +0 -1
- package/dist/src/planner/analysis/constraint-extractor.js.map +0 -1
- package/dist/src/planner/analysis/predicate-normalizer.js.map +0 -1
- package/dist/src/planner/building/alter-table.js.map +0 -1
- package/dist/src/planner/building/block.js.map +0 -1
- package/dist/src/planner/building/constraint-builder.js.map +0 -1
- package/dist/src/planner/building/create-assertion.js.map +0 -1
- package/dist/src/planner/building/create-view.js.map +0 -1
- package/dist/src/planner/building/ddl.js.map +0 -1
- package/dist/src/planner/building/declare-schema.js.map +0 -1
- package/dist/src/planner/building/delete.js.map +0 -1
- package/dist/src/planner/building/drop-assertion.js.map +0 -1
- package/dist/src/planner/building/drop-table.js.map +0 -1
- package/dist/src/planner/building/drop-view.js.map +0 -1
- package/dist/src/planner/building/expression.js.map +0 -1
- package/dist/src/planner/building/function-call.js.map +0 -1
- package/dist/src/planner/building/insert.js.map +0 -1
- package/dist/src/planner/building/pragma.js.map +0 -1
- package/dist/src/planner/building/schema-resolution.js.map +0 -1
- package/dist/src/planner/building/select-aggregates.js.map +0 -1
- package/dist/src/planner/building/select-compound.js.map +0 -1
- package/dist/src/planner/building/select-context.js.map +0 -1
- package/dist/src/planner/building/select-modifiers.js.map +0 -1
- package/dist/src/planner/building/select-projections.js.map +0 -1
- package/dist/src/planner/building/select-window.js.map +0 -1
- package/dist/src/planner/building/select.js.map +0 -1
- package/dist/src/planner/building/table-function.js.map +0 -1
- package/dist/src/planner/building/table.js.map +0 -1
- package/dist/src/planner/building/transaction.js.map +0 -1
- package/dist/src/planner/building/update.js.map +0 -1
- package/dist/src/planner/building/with.js.map +0 -1
- package/dist/src/planner/cache/correlation-detector.js.map +0 -1
- package/dist/src/planner/cache/materialization-advisory.js.map +0 -1
- package/dist/src/planner/cache/reference-graph.js.map +0 -1
- package/dist/src/planner/cost/index.js.map +0 -1
- package/dist/src/planner/debug/logger-utils.js.map +0 -1
- package/dist/src/planner/debug.js.map +0 -1
- package/dist/src/planner/framework/characteristics.js.map +0 -1
- package/dist/src/planner/framework/context.js.map +0 -1
- package/dist/src/planner/framework/pass.js.map +0 -1
- package/dist/src/planner/framework/physical-utils.js.map +0 -1
- package/dist/src/planner/framework/registry.js.map +0 -1
- package/dist/src/planner/framework/trace.js.map +0 -1
- package/dist/src/planner/nodes/add-constraint-node.js.map +0 -1
- package/dist/src/planner/nodes/aggregate-function.js.map +0 -1
- package/dist/src/planner/nodes/aggregate-node.js.map +0 -1
- package/dist/src/planner/nodes/array-index-node.js.map +0 -1
- package/dist/src/planner/nodes/block.js.map +0 -1
- package/dist/src/planner/nodes/cache-node.js.map +0 -1
- package/dist/src/planner/nodes/constraint-check-node.js.map +0 -1
- package/dist/src/planner/nodes/create-assertion-node.js.map +0 -1
- package/dist/src/planner/nodes/create-index-node.js.map +0 -1
- package/dist/src/planner/nodes/create-table-node.js.map +0 -1
- package/dist/src/planner/nodes/create-view-node.js.map +0 -1
- package/dist/src/planner/nodes/cte-node.js.map +0 -1
- package/dist/src/planner/nodes/cte-reference-node.js.map +0 -1
- package/dist/src/planner/nodes/declarative-schema.js.map +0 -1
- package/dist/src/planner/nodes/delete-node.js.map +0 -1
- package/dist/src/planner/nodes/distinct-node.js.map +0 -1
- package/dist/src/planner/nodes/dml-executor-node.js.map +0 -1
- package/dist/src/planner/nodes/drop-assertion-node.js.map +0 -1
- package/dist/src/planner/nodes/drop-table-node.js.map +0 -1
- package/dist/src/planner/nodes/drop-view-node.js.map +0 -1
- package/dist/src/planner/nodes/filter.js.map +0 -1
- package/dist/src/planner/nodes/function.js.map +0 -1
- package/dist/src/planner/nodes/insert-node.js.map +0 -1
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +0 -1
- package/dist/src/planner/nodes/join-node.js.map +0 -1
- package/dist/src/planner/nodes/limit-offset.js.map +0 -1
- package/dist/src/planner/nodes/plan-node-type.js.map +0 -1
- package/dist/src/planner/nodes/plan-node.js.map +0 -1
- package/dist/src/planner/nodes/pragma.js.map +0 -1
- package/dist/src/planner/nodes/project-node.js.map +0 -1
- package/dist/src/planner/nodes/recursive-cte-node.js.map +0 -1
- package/dist/src/planner/nodes/reference.js.map +0 -1
- package/dist/src/planner/nodes/remote-query-node.js.map +0 -1
- package/dist/src/planner/nodes/retrieve-node.js.map +0 -1
- package/dist/src/planner/nodes/returning-node.js.map +0 -1
- package/dist/src/planner/nodes/scalar.js.map +0 -1
- package/dist/src/planner/nodes/sequencing-node.js.map +0 -1
- package/dist/src/planner/nodes/set-operation-node.js.map +0 -1
- package/dist/src/planner/nodes/single-row.js.map +0 -1
- package/dist/src/planner/nodes/sink-node.js.map +0 -1
- package/dist/src/planner/nodes/sort.js.map +0 -1
- package/dist/src/planner/nodes/stream-aggregate.js.map +0 -1
- package/dist/src/planner/nodes/subquery.js.map +0 -1
- package/dist/src/planner/nodes/table-access-nodes.js.map +0 -1
- package/dist/src/planner/nodes/table-function-call.js.map +0 -1
- package/dist/src/planner/nodes/transaction-node.js.map +0 -1
- package/dist/src/planner/nodes/update-node.js.map +0 -1
- package/dist/src/planner/nodes/values-node.js.map +0 -1
- package/dist/src/planner/nodes/view-reference-node.js.map +0 -1
- package/dist/src/planner/nodes/window-function.js.map +0 -1
- package/dist/src/planner/nodes/window-node.js.map +0 -1
- package/dist/src/planner/optimizer-tuning.js.map +0 -1
- package/dist/src/planner/optimizer.js.map +0 -1
- package/dist/src/planner/planning-context.js.map +0 -1
- package/dist/src/planner/resolve.js.map +0 -1
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +0 -1
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +0 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +0 -1
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +0 -1
- package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +0 -1
- package/dist/src/planner/rules/join/rule-join-key-inference.js.map +0 -1
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +0 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +0 -1
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +0 -1
- package/dist/src/planner/scopes/aliased.js.map +0 -1
- package/dist/src/planner/scopes/base.js.map +0 -1
- package/dist/src/planner/scopes/empty.js.map +0 -1
- package/dist/src/planner/scopes/global.js.map +0 -1
- package/dist/src/planner/scopes/multi.js.map +0 -1
- package/dist/src/planner/scopes/param.js.map +0 -1
- package/dist/src/planner/scopes/registered.js.map +0 -1
- package/dist/src/planner/scopes/scope.js.map +0 -1
- package/dist/src/planner/stats/basic-estimates.js.map +0 -1
- package/dist/src/planner/stats/index.js.map +0 -1
- package/dist/src/planner/type-utils.js.map +0 -1
- package/dist/src/planner/util/key-utils.js.map +0 -1
- package/dist/src/planner/validation/determinism-validator.js.map +0 -1
- package/dist/src/planner/validation/plan-validator.js.map +0 -1
- package/dist/src/runtime/async-util.js.map +0 -1
- package/dist/src/runtime/cache/shared-cache.js.map +0 -1
- package/dist/src/runtime/context-helpers.js.map +0 -1
- package/dist/src/runtime/deferred-constraint-queue.js.map +0 -1
- package/dist/src/runtime/emission-context.js.map +0 -1
- package/dist/src/runtime/emit/add-constraint.js.map +0 -1
- package/dist/src/runtime/emit/aggregate.js.map +0 -1
- package/dist/src/runtime/emit/array-index.js.map +0 -1
- package/dist/src/runtime/emit/between.js.map +0 -1
- package/dist/src/runtime/emit/binary.js.map +0 -1
- package/dist/src/runtime/emit/block.js.map +0 -1
- package/dist/src/runtime/emit/cache.js.map +0 -1
- package/dist/src/runtime/emit/case.js.map +0 -1
- package/dist/src/runtime/emit/cast.js.map +0 -1
- package/dist/src/runtime/emit/collate.js.map +0 -1
- package/dist/src/runtime/emit/column-reference.js.map +0 -1
- package/dist/src/runtime/emit/constraint-check.js.map +0 -1
- package/dist/src/runtime/emit/create-assertion.js.map +0 -1
- package/dist/src/runtime/emit/create-index.js.map +0 -1
- package/dist/src/runtime/emit/create-table.js.map +0 -1
- package/dist/src/runtime/emit/create-view.js.map +0 -1
- package/dist/src/runtime/emit/cte-reference.js.map +0 -1
- package/dist/src/runtime/emit/cte.js.map +0 -1
- package/dist/src/runtime/emit/delete.js.map +0 -1
- package/dist/src/runtime/emit/distinct.js.map +0 -1
- package/dist/src/runtime/emit/dml-executor.js.map +0 -1
- package/dist/src/runtime/emit/drop-assertion.js.map +0 -1
- package/dist/src/runtime/emit/drop-table.js.map +0 -1
- package/dist/src/runtime/emit/drop-view.js.map +0 -1
- package/dist/src/runtime/emit/filter.js.map +0 -1
- package/dist/src/runtime/emit/insert.js.map +0 -1
- package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +0 -1
- package/dist/src/runtime/emit/join.js.map +0 -1
- package/dist/src/runtime/emit/limit-offset.js.map +0 -1
- package/dist/src/runtime/emit/literal.js.map +0 -1
- package/dist/src/runtime/emit/parameter.js.map +0 -1
- package/dist/src/runtime/emit/pragma.js.map +0 -1
- package/dist/src/runtime/emit/project.js.map +0 -1
- package/dist/src/runtime/emit/recursive-cte.js.map +0 -1
- package/dist/src/runtime/emit/remote-query.js.map +0 -1
- package/dist/src/runtime/emit/retrieve.js.map +0 -1
- package/dist/src/runtime/emit/returning.js.map +0 -1
- package/dist/src/runtime/emit/scalar-function.js.map +0 -1
- package/dist/src/runtime/emit/scan.js.map +0 -1
- package/dist/src/runtime/emit/schema-declarative.js.map +0 -1
- package/dist/src/runtime/emit/sequencing.js.map +0 -1
- package/dist/src/runtime/emit/set-operation.js.map +0 -1
- package/dist/src/runtime/emit/sink.js.map +0 -1
- package/dist/src/runtime/emit/sort.js.map +0 -1
- package/dist/src/runtime/emit/subquery.js.map +0 -1
- package/dist/src/runtime/emit/table-valued-function.js.map +0 -1
- package/dist/src/runtime/emit/temporal-arithmetic.js.map +0 -1
- package/dist/src/runtime/emit/transaction.js.map +0 -1
- package/dist/src/runtime/emit/unary.js.map +0 -1
- package/dist/src/runtime/emit/update.js.map +0 -1
- package/dist/src/runtime/emit/values.js.map +0 -1
- package/dist/src/runtime/emit/window-function.js.map +0 -1
- package/dist/src/runtime/emit/window.js.map +0 -1
- package/dist/src/runtime/emitters.js.map +0 -1
- package/dist/src/runtime/register.js.map +0 -1
- package/dist/src/runtime/scheduler.js.map +0 -1
- package/dist/src/runtime/types.js.map +0 -1
- package/dist/src/runtime/utils.js.map +0 -1
- package/dist/src/schema/assertion.js.map +0 -1
- package/dist/src/schema/catalog.js.map +0 -1
- package/dist/src/schema/change-events.js.map +0 -1
- package/dist/src/schema/column.js.map +0 -1
- package/dist/src/schema/declared-schema-manager.js.map +0 -1
- package/dist/src/schema/function.js.map +0 -1
- package/dist/src/schema/manager.js.map +0 -1
- package/dist/src/schema/schema-differ.js.map +0 -1
- package/dist/src/schema/schema-hasher.js.map +0 -1
- package/dist/src/schema/schema.js.map +0 -1
- package/dist/src/schema/table.js.map +0 -1
- package/dist/src/schema/view.js.map +0 -1
- package/dist/src/schema/window-function.js.map +0 -1
- package/dist/src/types/builtin-types.js.map +0 -1
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/types/json-type.js.map +0 -1
- package/dist/src/types/logical-type.js.map +0 -1
- package/dist/src/types/plugin-interface.js.map +0 -1
- package/dist/src/types/registry.js.map +0 -1
- package/dist/src/types/temporal-types.js.map +0 -1
- package/dist/src/types/validation.js.map +0 -1
- package/dist/src/util/affinity.js.map +0 -1
- package/dist/src/util/ast-stringify.js.map +0 -1
- package/dist/src/util/cached.js.map +0 -1
- package/dist/src/util/coercion.js.map +0 -1
- package/dist/src/util/comparison.js.map +0 -1
- package/dist/src/util/environment.js.map +0 -1
- package/dist/src/util/hash.js.map +0 -1
- package/dist/src/util/latches.js.map +0 -1
- package/dist/src/util/mutation-statement.js.map +0 -1
- package/dist/src/util/patterns.js.map +0 -1
- package/dist/src/util/plan-formatter.js.map +0 -1
- package/dist/src/util/plugin-helper.js.map +0 -1
- package/dist/src/util/row-descriptor.js.map +0 -1
- package/dist/src/util/serialization.js.map +0 -1
- package/dist/src/util/sql-literal.js.map +0 -1
- package/dist/src/util/working-table-iterable.js.map +0 -1
- package/dist/src/vtab/best-access-plan.js.map +0 -1
- package/dist/src/vtab/connection.js.map +0 -1
- package/dist/src/vtab/filter-info.js.map +0 -1
- package/dist/src/vtab/index-info.js.map +0 -1
- package/dist/src/vtab/manifest.js.map +0 -1
- package/dist/src/vtab/memory/connection.js.map +0 -1
- package/dist/src/vtab/memory/index.js.map +0 -1
- package/dist/src/vtab/memory/layer/base-cursor.js.map +0 -1
- package/dist/src/vtab/memory/layer/base.js.map +0 -1
- package/dist/src/vtab/memory/layer/connection.js.map +0 -1
- package/dist/src/vtab/memory/layer/interface.js.map +0 -1
- package/dist/src/vtab/memory/layer/manager.js.map +0 -1
- package/dist/src/vtab/memory/layer/safe-iterate.js.map +0 -1
- package/dist/src/vtab/memory/layer/scan-plan.js.map +0 -1
- package/dist/src/vtab/memory/layer/transaction-cursor.js.map +0 -1
- package/dist/src/vtab/memory/layer/transaction.js.map +0 -1
- package/dist/src/vtab/memory/module.js.map +0 -1
- package/dist/src/vtab/memory/table.js.map +0 -1
- package/dist/src/vtab/memory/types.js.map +0 -1
- package/dist/src/vtab/memory/utils/logging.js.map +0 -1
- package/dist/src/vtab/memory/utils/primary-key.js.map +0 -1
- package/dist/src/vtab/module.js.map +0 -1
- package/dist/src/vtab/table.js.map +0 -1
- package/src/common/constants.ts +0 -60
- package/src/common/datatype.ts +0 -85
- package/src/common/errors.ts +0 -189
- package/src/common/json-types.ts +0 -16
- package/src/common/logger.ts +0 -97
- package/src/common/type-inference.ts +0 -39
- package/src/common/types.ts +0 -151
- package/src/core/database-options.ts +0 -258
- package/src/core/database.ts +0 -1461
- package/src/core/param.ts +0 -56
- package/src/core/statement.ts +0 -528
- package/src/func/builtins/aggregate.ts +0 -269
- package/src/func/builtins/builtin-window-functions.ts +0 -166
- package/src/func/builtins/conversion.ts +0 -226
- package/src/func/builtins/datetime.ts +0 -500
- package/src/func/builtins/explain.ts +0 -779
- package/src/func/builtins/generation.ts +0 -43
- package/src/func/builtins/index.ts +0 -167
- package/src/func/builtins/json-helpers.ts +0 -237
- package/src/func/builtins/json-tvf.ts +0 -224
- package/src/func/builtins/json.ts +0 -588
- package/src/func/builtins/scalar.ts +0 -423
- package/src/func/builtins/schema.ts +0 -213
- package/src/func/builtins/string.ts +0 -306
- package/src/func/builtins/timespan.ts +0 -179
- package/src/func/context.ts +0 -258
- package/src/func/registration.ts +0 -201
- package/src/index.ts +0 -172
- package/src/parser/ast.ts +0 -581
- package/src/parser/index.ts +0 -65
- package/src/parser/lexer.ts +0 -806
- package/src/parser/parser.ts +0 -3352
- package/src/parser/utils.ts +0 -10
- package/src/parser/visitor.ts +0 -188
- package/src/planner/analysis/README.md +0 -93
- package/src/planner/analysis/binding-collector.ts +0 -83
- package/src/planner/analysis/const-evaluator.ts +0 -63
- package/src/planner/analysis/const-pass.ts +0 -282
- package/src/planner/analysis/constraint-extractor.ts +0 -764
- package/src/planner/analysis/predicate-normalizer.ts +0 -237
- package/src/planner/building/alter-table.ts +0 -49
- package/src/planner/building/block.ts +0 -93
- package/src/planner/building/constraint-builder.ts +0 -178
- package/src/planner/building/create-assertion.ts +0 -7
- package/src/planner/building/create-view.ts +0 -29
- package/src/planner/building/ddl.ts +0 -24
- package/src/planner/building/declare-schema.ts +0 -22
- package/src/planner/building/delete.ts +0 -218
- package/src/planner/building/drop-assertion.ts +0 -11
- package/src/planner/building/drop-table.ts +0 -13
- package/src/planner/building/drop-view.ts +0 -19
- package/src/planner/building/expression.ts +0 -205
- package/src/planner/building/function-call.ts +0 -129
- package/src/planner/building/insert.ts +0 -435
- package/src/planner/building/pragma.ts +0 -34
- package/src/planner/building/schema-resolution.ts +0 -176
- package/src/planner/building/select-aggregates.ts +0 -318
- package/src/planner/building/select-compound.ts +0 -119
- package/src/planner/building/select-context.ts +0 -85
- package/src/planner/building/select-modifiers.ts +0 -236
- package/src/planner/building/select-projections.ts +0 -177
- package/src/planner/building/select-window.ts +0 -259
- package/src/planner/building/select.ts +0 -567
- package/src/planner/building/table-function.ts +0 -49
- package/src/planner/building/table.ts +0 -40
- package/src/planner/building/transaction.ts +0 -23
- package/src/planner/building/update.ts +0 -331
- package/src/planner/building/with.ts +0 -180
- package/src/planner/cache/correlation-detector.ts +0 -83
- package/src/planner/cache/materialization-advisory.ts +0 -265
- package/src/planner/cache/reference-graph.ts +0 -196
- package/src/planner/cost/index.ts +0 -169
- package/src/planner/debug/logger-utils.ts +0 -68
- package/src/planner/debug.ts +0 -480
- package/src/planner/framework/README.md +0 -132
- package/src/planner/framework/characteristics.ts +0 -503
- package/src/planner/framework/context.ts +0 -239
- package/src/planner/framework/pass.ts +0 -354
- package/src/planner/framework/physical-utils.ts +0 -210
- package/src/planner/framework/registry.ts +0 -261
- package/src/planner/framework/trace.ts +0 -259
- package/src/planner/nodes/add-constraint-node.ts +0 -62
- package/src/planner/nodes/aggregate-function.ts +0 -155
- package/src/planner/nodes/aggregate-node.ts +0 -267
- package/src/planner/nodes/array-index-node.ts +0 -50
- package/src/planner/nodes/block.ts +0 -80
- package/src/planner/nodes/cache-node.ts +0 -103
- package/src/planner/nodes/constraint-check-node.ts +0 -138
- package/src/planner/nodes/create-assertion-node.ts +0 -51
- package/src/planner/nodes/create-index-node.ts +0 -41
- package/src/planner/nodes/create-table-node.ts +0 -35
- package/src/planner/nodes/create-view-node.ts +0 -44
- package/src/planner/nodes/cte-node.ts +0 -168
- package/src/planner/nodes/cte-reference-node.ts +0 -125
- package/src/planner/nodes/declarative-schema.ts +0 -221
- package/src/planner/nodes/delete-node.ts +0 -102
- package/src/planner/nodes/distinct-node.ts +0 -107
- package/src/planner/nodes/dml-executor-node.ts +0 -104
- package/src/planner/nodes/drop-assertion-node.ts +0 -50
- package/src/planner/nodes/drop-table-node.ts +0 -36
- package/src/planner/nodes/drop-view-node.ts +0 -37
- package/src/planner/nodes/filter.ts +0 -144
- package/src/planner/nodes/function.ts +0 -98
- package/src/planner/nodes/insert-node.ts +0 -126
- package/src/planner/nodes/internal-recursive-cte-ref-node.ts +0 -61
- package/src/planner/nodes/join-node.ts +0 -336
- package/src/planner/nodes/limit-offset.ts +0 -144
- package/src/planner/nodes/plan-node-type.ts +0 -95
- package/src/planner/nodes/plan-node.ts +0 -503
- package/src/planner/nodes/pragma.ts +0 -98
- package/src/planner/nodes/project-node.ts +0 -337
- package/src/planner/nodes/recursive-cte-node.ts +0 -158
- package/src/planner/nodes/reference.ts +0 -334
- package/src/planner/nodes/remote-query-node.ts +0 -73
- package/src/planner/nodes/retrieve-node.ts +0 -86
- package/src/planner/nodes/returning-node.ts +0 -269
- package/src/planner/nodes/scalar.ts +0 -772
- package/src/planner/nodes/sequencing-node.ts +0 -113
- package/src/planner/nodes/set-operation-node.ts +0 -87
- package/src/planner/nodes/single-row.ts +0 -85
- package/src/planner/nodes/sink-node.ts +0 -61
- package/src/planner/nodes/sort.ts +0 -166
- package/src/planner/nodes/stream-aggregate.ts +0 -293
- package/src/planner/nodes/subquery.ts +0 -268
- package/src/planner/nodes/table-access-nodes.ts +0 -323
- package/src/planner/nodes/table-function-call.ts +0 -134
- package/src/planner/nodes/transaction-node.ts +0 -55
- package/src/planner/nodes/update-node.ts +0 -138
- package/src/planner/nodes/values-node.ts +0 -244
- package/src/planner/nodes/view-reference-node.ts +0 -97
- package/src/planner/nodes/window-function.ts +0 -73
- package/src/planner/nodes/window-node.ts +0 -199
- package/src/planner/optimizer-tuning.ts +0 -105
- package/src/planner/optimizer.ts +0 -332
- package/src/planner/planning-context.ts +0 -190
- package/src/planner/resolve.ts +0 -101
- package/src/planner/rules/README.md +0 -96
- package/src/planner/rules/access/rule-select-access-path.ts +0 -399
- package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +0 -162
- package/src/planner/rules/cache/rule-cte-optimization.ts +0 -79
- package/src/planner/rules/cache/rule-materialization-advisory.ts +0 -77
- package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +0 -104
- package/src/planner/rules/join/rule-join-greedy-commute.ts +0 -48
- package/src/planner/rules/join/rule-join-key-inference.ts +0 -35
- package/src/planner/rules/join/rule-quickpick-enumeration.ts +0 -267
- package/src/planner/rules/predicate/rule-predicate-pushdown.ts +0 -144
- package/src/planner/rules/retrieve/rule-grow-retrieve.ts +0 -337
- package/src/planner/scopes/aliased.ts +0 -50
- package/src/planner/scopes/base.ts +0 -10
- package/src/planner/scopes/empty.ts +0 -12
- package/src/planner/scopes/global.ts +0 -73
- package/src/planner/scopes/multi.ts +0 -40
- package/src/planner/scopes/param.ts +0 -95
- package/src/planner/scopes/registered.ts +0 -67
- package/src/planner/scopes/scope.ts +0 -16
- package/src/planner/stats/basic-estimates.ts +0 -107
- package/src/planner/stats/index.ts +0 -158
- package/src/planner/type-utils.ts +0 -87
- package/src/planner/util/key-utils.ts +0 -46
- package/src/planner/validation/determinism-validator.ts +0 -104
- package/src/planner/validation/plan-validator.ts +0 -335
- package/src/runtime/async-util.ts +0 -283
- package/src/runtime/cache/shared-cache.ts +0 -169
- package/src/runtime/context-helpers.ts +0 -191
- package/src/runtime/deferred-constraint-queue.ts +0 -196
- package/src/runtime/emission-context.ts +0 -319
- package/src/runtime/emit/add-constraint.ts +0 -78
- package/src/runtime/emit/aggregate.ts +0 -581
- package/src/runtime/emit/array-index.ts +0 -25
- package/src/runtime/emit/between.ts +0 -51
- package/src/runtime/emit/binary.ts +0 -357
- package/src/runtime/emit/block.ts +0 -23
- package/src/runtime/emit/cache.ts +0 -64
- package/src/runtime/emit/case.ts +0 -87
- package/src/runtime/emit/cast.ts +0 -151
- package/src/runtime/emit/collate.ts +0 -9
- package/src/runtime/emit/column-reference.ts +0 -17
- package/src/runtime/emit/constraint-check.ts +0 -290
- package/src/runtime/emit/create-assertion.ts +0 -82
- package/src/runtime/emit/create-index.ts +0 -15
- package/src/runtime/emit/create-table.ts +0 -15
- package/src/runtime/emit/create-view.ts +0 -52
- package/src/runtime/emit/cte-reference.ts +0 -38
- package/src/runtime/emit/cte.ts +0 -39
- package/src/runtime/emit/delete.ts +0 -24
- package/src/runtime/emit/distinct.ts +0 -40
- package/src/runtime/emit/dml-executor.ts +0 -198
- package/src/runtime/emit/drop-assertion.ts +0 -45
- package/src/runtime/emit/drop-table.ts +0 -27
- package/src/runtime/emit/drop-view.ts +0 -49
- package/src/runtime/emit/filter.ts +0 -30
- package/src/runtime/emit/insert.ts +0 -42
- package/src/runtime/emit/internal-recursive-cte-ref.ts +0 -37
- package/src/runtime/emit/join.ts +0 -148
- package/src/runtime/emit/limit-offset.ts +0 -73
- package/src/runtime/emit/literal.ts +0 -17
- package/src/runtime/emit/parameter.ts +0 -59
- package/src/runtime/emit/pragma.ts +0 -56
- package/src/runtime/emit/project.ts +0 -46
- package/src/runtime/emit/recursive-cte.ts +0 -111
- package/src/runtime/emit/remote-query.ts +0 -47
- package/src/runtime/emit/retrieve.ts +0 -15
- package/src/runtime/emit/returning.ts +0 -41
- package/src/runtime/emit/scalar-function.ts +0 -69
- package/src/runtime/emit/scan.ts +0 -106
- package/src/runtime/emit/schema-declarative.ts +0 -215
- package/src/runtime/emit/sequencing.ts +0 -24
- package/src/runtime/emit/set-operation.ts +0 -141
- package/src/runtime/emit/sink.ts +0 -27
- package/src/runtime/emit/sort.ts +0 -75
- package/src/runtime/emit/subquery.ts +0 -203
- package/src/runtime/emit/table-valued-function.ts +0 -106
- package/src/runtime/emit/temporal-arithmetic.ts +0 -302
- package/src/runtime/emit/transaction.ts +0 -205
- package/src/runtime/emit/unary.ts +0 -101
- package/src/runtime/emit/update.ts +0 -66
- package/src/runtime/emit/values.ts +0 -66
- package/src/runtime/emit/window-function.ts +0 -42
- package/src/runtime/emit/window.ts +0 -458
- package/src/runtime/emitters.ts +0 -183
- package/src/runtime/register.ts +0 -150
- package/src/runtime/scheduler.ts +0 -488
- package/src/runtime/types.ts +0 -242
- package/src/runtime/utils.ts +0 -177
- package/src/schema/assertion.ts +0 -21
- package/src/schema/catalog.ts +0 -269
- package/src/schema/change-events.ts +0 -80
- package/src/schema/column.ts +0 -51
- package/src/schema/declared-schema-manager.ts +0 -82
- package/src/schema/function.ts +0 -188
- package/src/schema/manager.ts +0 -1034
- package/src/schema/schema-differ.ts +0 -214
- package/src/schema/schema-hasher.ts +0 -26
- package/src/schema/schema.ts +0 -222
- package/src/schema/table.ts +0 -409
- package/src/schema/view.ts +0 -19
- package/src/schema/window-function.ts +0 -56
- package/src/types/builtin-types.ts +0 -350
- package/src/types/index.ts +0 -17
- package/src/types/json-type.ts +0 -152
- package/src/types/logical-type.ts +0 -91
- package/src/types/plugin-interface.ts +0 -10
- package/src/types/registry.ts +0 -204
- package/src/types/temporal-types.ts +0 -290
- package/src/types/validation.ts +0 -120
- package/src/util/affinity.ts +0 -151
- package/src/util/ast-stringify.ts +0 -887
- package/src/util/cached.ts +0 -25
- package/src/util/coercion.ts +0 -113
- package/src/util/comparison.ts +0 -510
- package/src/util/environment.ts +0 -52
- package/src/util/hash.ts +0 -90
- package/src/util/latches.ts +0 -47
- package/src/util/mutation-statement.ts +0 -135
- package/src/util/patterns.ts +0 -56
- package/src/util/plan-formatter.ts +0 -48
- package/src/util/plugin-helper.ts +0 -110
- package/src/util/row-descriptor.ts +0 -105
- package/src/util/serialization.ts +0 -47
- package/src/util/sql-literal.ts +0 -22
- package/src/util/working-table-iterable.ts +0 -38
- package/src/vtab/best-access-plan.ts +0 -244
- package/src/vtab/connection.ts +0 -36
- package/src/vtab/filter-info.ts +0 -23
- package/src/vtab/index-info.ts +0 -84
- package/src/vtab/manifest.ts +0 -86
- package/src/vtab/memory/connection.ts +0 -73
- package/src/vtab/memory/index.ts +0 -191
- package/src/vtab/memory/layer/base-cursor.ts +0 -124
- package/src/vtab/memory/layer/base.ts +0 -275
- package/src/vtab/memory/layer/connection.ts +0 -203
- package/src/vtab/memory/layer/interface.ts +0 -47
- package/src/vtab/memory/layer/manager.ts +0 -909
- package/src/vtab/memory/layer/safe-iterate.ts +0 -49
- package/src/vtab/memory/layer/scan-plan.ts +0 -84
- package/src/vtab/memory/layer/transaction-cursor.ts +0 -162
- package/src/vtab/memory/layer/transaction.ts +0 -229
- package/src/vtab/memory/module.ts +0 -667
- package/src/vtab/memory/table.ts +0 -251
- package/src/vtab/memory/types.ts +0 -23
- package/src/vtab/memory/utils/logging.ts +0 -36
- package/src/vtab/memory/utils/primary-key.ts +0 -163
- package/src/vtab/module.ts +0 -162
- package/src/vtab/table.ts +0 -177
package/src/runtime/register.ts
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { PlanNodeType } from "../planner/nodes/plan-node-type.js";
|
|
2
|
-
import { registerEmitter, type EmitterFunc } from "./emitters.js";
|
|
3
|
-
import { emitBinaryOp } from "./emit/binary.js";
|
|
4
|
-
import { emitUnaryOp } from "./emit/unary.js";
|
|
5
|
-
import { emitLiteral } from "./emit/literal.js";
|
|
6
|
-
import { emitSeqScan } from "./emit/scan.js";
|
|
7
|
-
import { emitIn, emitScalarSubquery, emitExists } from "./emit/subquery.js";
|
|
8
|
-
import { emitBlock } from "./emit/block.js";
|
|
9
|
-
import { emitParameterReference } from './emit/parameter.js';
|
|
10
|
-
import { emitCreateTable } from './emit/create-table.js';
|
|
11
|
-
import { emitCreateIndex } from './emit/create-index.js';
|
|
12
|
-
import { emitDropTable } from './emit/drop-table.js';
|
|
13
|
-
import { emitCreateView } from './emit/create-view.js';
|
|
14
|
-
import { emitDropView } from './emit/drop-view.js';
|
|
15
|
-
import { emitCreateAssertion } from './emit/create-assertion.js';
|
|
16
|
-
import { emitDropAssertion } from './emit/drop-assertion.js';
|
|
17
|
-
import { emitCTE } from './emit/cte.js';
|
|
18
|
-
import { emitCTEReference } from './emit/cte-reference.js';
|
|
19
|
-
import { emitInternalRecursiveCTERef } from './emit/internal-recursive-cte-ref.js';
|
|
20
|
-
import { emitInsert } from './emit/insert.js';
|
|
21
|
-
import { emitUpdate } from './emit/update.js';
|
|
22
|
-
import { emitDmlExecutor } from './emit/dml-executor.js';
|
|
23
|
-
import { emitDelete } from './emit/delete.js';
|
|
24
|
-
import { emitProject } from './emit/project.js';
|
|
25
|
-
import { emitColumnReference } from './emit/column-reference.js';
|
|
26
|
-
import { emitArrayIndex } from './emit/array-index.js';
|
|
27
|
-
import { emitValues, emitSingleRow, emitTableLiteral } from './emit/values.js';
|
|
28
|
-
import { emitFilter } from './emit/filter.js';
|
|
29
|
-
import { emitDistinct } from './emit/distinct.js';
|
|
30
|
-
import { emitScalarFunctionCall } from './emit/scalar-function.js';
|
|
31
|
-
import { emitLimitOffset } from './emit/limit-offset.js';
|
|
32
|
-
import { emitStreamAggregate } from './emit/aggregate.js';
|
|
33
|
-
import { emitCaseExpr } from './emit/case.js';
|
|
34
|
-
import { emitCast } from './emit/cast.js';
|
|
35
|
-
import { emitCollate } from "./emit/collate.js";
|
|
36
|
-
import { emitTableValuedFunctionCall } from './emit/table-valued-function.js';
|
|
37
|
-
import { emitTransaction } from './emit/transaction.js';
|
|
38
|
-
import { emitPragma } from './emit/pragma.js';
|
|
39
|
-
import { emitSort } from './emit/sort.js';
|
|
40
|
-
import { emitWindow } from './emit/window.js';
|
|
41
|
-
import { emitWindowFunctionCall } from './emit/window-function.js';
|
|
42
|
-
import { emitSequencing } from './emit/sequencing.js';
|
|
43
|
-
import { emitRecursiveCTE } from './emit/recursive-cte.js';
|
|
44
|
-
import { emitSetOperation } from './emit/set-operation.js';
|
|
45
|
-
import { emitConstraintCheck } from './emit/constraint-check.js';
|
|
46
|
-
import { emitAddConstraint } from './emit/add-constraint.js';
|
|
47
|
-
import { emitLoopJoin } from './emit/join.js';
|
|
48
|
-
import { emitCache } from './emit/cache.js';
|
|
49
|
-
import { emitReturning } from './emit/returning.js';
|
|
50
|
-
import { emitSink } from './emit/sink.js';
|
|
51
|
-
import { emitBetween } from './emit/between.js';
|
|
52
|
-
import { emitRetrieve } from './emit/retrieve.js';
|
|
53
|
-
import { emitRemoteQuery } from './emit/remote-query.js';
|
|
54
|
-
import { emitDeclareSchema, emitDiffSchema, emitApplySchema, emitExplainSchema } from './emit/schema-declarative.js';
|
|
55
|
-
|
|
56
|
-
let registered = false;
|
|
57
|
-
|
|
58
|
-
export function registerEmitters() {
|
|
59
|
-
if (registered) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
registered = true;
|
|
63
|
-
|
|
64
|
-
// Scalar expression emitters
|
|
65
|
-
registerEmitter(PlanNodeType.BinaryOp, emitBinaryOp as EmitterFunc);
|
|
66
|
-
registerEmitter(PlanNodeType.UnaryOp, emitUnaryOp as EmitterFunc);
|
|
67
|
-
registerEmitter(PlanNodeType.Literal, emitLiteral as EmitterFunc);
|
|
68
|
-
registerEmitter(PlanNodeType.ColumnReference, emitColumnReference as EmitterFunc);
|
|
69
|
-
registerEmitter(PlanNodeType.ArrayIndex, emitArrayIndex as EmitterFunc);
|
|
70
|
-
registerEmitter(PlanNodeType.ParameterReference, emitParameterReference as EmitterFunc);
|
|
71
|
-
registerEmitter(PlanNodeType.ScalarFunctionCall, emitScalarFunctionCall as EmitterFunc);
|
|
72
|
-
registerEmitter(PlanNodeType.WindowFunctionCall, emitWindowFunctionCall as EmitterFunc);
|
|
73
|
-
registerEmitter(PlanNodeType.CaseExpr, emitCaseExpr as EmitterFunc);
|
|
74
|
-
registerEmitter(PlanNodeType.Cast, emitCast as EmitterFunc);
|
|
75
|
-
registerEmitter(PlanNodeType.Collate, emitCollate as EmitterFunc);
|
|
76
|
-
registerEmitter(PlanNodeType.Between, emitBetween as EmitterFunc);
|
|
77
|
-
registerEmitter(PlanNodeType.ScalarSubquery, emitScalarSubquery as EmitterFunc);
|
|
78
|
-
registerEmitter(PlanNodeType.Exists, emitExists as EmitterFunc);
|
|
79
|
-
|
|
80
|
-
// Relational emitters (mix of logical and physical for now)
|
|
81
|
-
registerEmitter(PlanNodeType.Block, emitBlock as EmitterFunc);
|
|
82
|
-
registerEmitter(PlanNodeType.CTEReference, emitCTEReference as EmitterFunc);
|
|
83
|
-
registerEmitter(PlanNodeType.InternalRecursiveCTERef, emitInternalRecursiveCTERef as EmitterFunc);
|
|
84
|
-
registerEmitter(PlanNodeType.Retrieve, emitRetrieve as EmitterFunc);
|
|
85
|
-
|
|
86
|
-
// Physical access node emitters (Phase 1)
|
|
87
|
-
registerEmitter(PlanNodeType.SeqScan, emitSeqScan as EmitterFunc);
|
|
88
|
-
registerEmitter(PlanNodeType.IndexScan, emitSeqScan as EmitterFunc); // Reuse for now
|
|
89
|
-
registerEmitter(PlanNodeType.IndexSeek, emitSeqScan as EmitterFunc); // Reuse for now
|
|
90
|
-
registerEmitter(PlanNodeType.RemoteQuery, emitRemoteQuery as EmitterFunc);
|
|
91
|
-
|
|
92
|
-
registerEmitter(PlanNodeType.Values, emitValues as EmitterFunc);
|
|
93
|
-
registerEmitter(PlanNodeType.TableLiteral, emitTableLiteral as EmitterFunc);
|
|
94
|
-
registerEmitter(PlanNodeType.SingleRow, emitSingleRow as EmitterFunc);
|
|
95
|
-
registerEmitter(PlanNodeType.Filter, emitFilter as EmitterFunc);
|
|
96
|
-
registerEmitter(PlanNodeType.Project, emitProject as EmitterFunc);
|
|
97
|
-
registerEmitter(PlanNodeType.Distinct, emitDistinct as EmitterFunc);
|
|
98
|
-
registerEmitter(PlanNodeType.Sort, emitSort as EmitterFunc);
|
|
99
|
-
registerEmitter(PlanNodeType.LimitOffset, emitLimitOffset as EmitterFunc);
|
|
100
|
-
registerEmitter(PlanNodeType.TableFunctionCall, emitTableValuedFunctionCall as EmitterFunc);
|
|
101
|
-
registerEmitter(PlanNodeType.In, emitIn as EmitterFunc);
|
|
102
|
-
registerEmitter(PlanNodeType.Window, emitWindow as EmitterFunc);
|
|
103
|
-
registerEmitter(PlanNodeType.Sequencing, emitSequencing as EmitterFunc);
|
|
104
|
-
registerEmitter(PlanNodeType.CTE, emitCTE as EmitterFunc);
|
|
105
|
-
registerEmitter(PlanNodeType.RecursiveCTE, emitRecursiveCTE as EmitterFunc);
|
|
106
|
-
|
|
107
|
-
// Physical aggregate emitters
|
|
108
|
-
registerEmitter(PlanNodeType.StreamAggregate, emitStreamAggregate as EmitterFunc);
|
|
109
|
-
// Do not map the aggregate node to an emitter. It is logical only.
|
|
110
|
-
// NO: registerEmitter(PlanNodeType.Aggregate, emitStreamAggregate as EmitterFunc);
|
|
111
|
-
// TODO: registerEmitter(PlanNodeType.HashAggregate, emitHashAggregate as EmitterFunc);
|
|
112
|
-
|
|
113
|
-
// DML/DDL emitters
|
|
114
|
-
registerEmitter(PlanNodeType.CreateTable, emitCreateTable as EmitterFunc);
|
|
115
|
-
registerEmitter(PlanNodeType.CreateIndex, emitCreateIndex as EmitterFunc);
|
|
116
|
-
registerEmitter(PlanNodeType.DropTable, emitDropTable as EmitterFunc);
|
|
117
|
-
registerEmitter(PlanNodeType.CreateView, emitCreateView as EmitterFunc);
|
|
118
|
-
registerEmitter(PlanNodeType.DropView, emitDropView as EmitterFunc);
|
|
119
|
-
registerEmitter(PlanNodeType.CreateAssertion, emitCreateAssertion as EmitterFunc);
|
|
120
|
-
registerEmitter(PlanNodeType.DropAssertion, emitDropAssertion as EmitterFunc);
|
|
121
|
-
registerEmitter(PlanNodeType.Insert, emitInsert as EmitterFunc);
|
|
122
|
-
registerEmitter(PlanNodeType.Update, emitUpdate as EmitterFunc);
|
|
123
|
-
registerEmitter(PlanNodeType.UpdateExecutor, emitDmlExecutor as EmitterFunc);
|
|
124
|
-
registerEmitter(PlanNodeType.Delete, emitDelete as EmitterFunc);
|
|
125
|
-
registerEmitter(PlanNodeType.ConstraintCheck, emitConstraintCheck as EmitterFunc);
|
|
126
|
-
registerEmitter(PlanNodeType.AddConstraint, emitAddConstraint as EmitterFunc);
|
|
127
|
-
registerEmitter(PlanNodeType.Returning, emitReturning as EmitterFunc);
|
|
128
|
-
|
|
129
|
-
// Transaction control emitters
|
|
130
|
-
registerEmitter(PlanNodeType.Transaction, emitTransaction as EmitterFunc);
|
|
131
|
-
registerEmitter(PlanNodeType.Pragma, emitPragma as EmitterFunc);
|
|
132
|
-
|
|
133
|
-
// Declarative schema
|
|
134
|
-
registerEmitter(PlanNodeType.DeclareSchema, emitDeclareSchema as EmitterFunc);
|
|
135
|
-
registerEmitter(PlanNodeType.DiffSchema, emitDiffSchema as EmitterFunc);
|
|
136
|
-
registerEmitter(PlanNodeType.ApplySchema, emitApplySchema as EmitterFunc);
|
|
137
|
-
registerEmitter(PlanNodeType.ExplainSchema, emitExplainSchema as EmitterFunc);
|
|
138
|
-
|
|
139
|
-
// Set operation emitter
|
|
140
|
-
registerEmitter(PlanNodeType.SetOperation, emitSetOperation as EmitterFunc);
|
|
141
|
-
|
|
142
|
-
// Join emitters
|
|
143
|
-
registerEmitter(PlanNodeType.Join, emitLoopJoin as EmitterFunc);
|
|
144
|
-
|
|
145
|
-
// Cache emitter
|
|
146
|
-
registerEmitter(PlanNodeType.Cache, emitCache as EmitterFunc);
|
|
147
|
-
|
|
148
|
-
// Sink emitter
|
|
149
|
-
registerEmitter(PlanNodeType.Sink, emitSink as EmitterFunc);
|
|
150
|
-
}
|
package/src/runtime/scheduler.ts
DELETED
|
@@ -1,488 +0,0 @@
|
|
|
1
|
-
import type { Instruction, RuntimeContext, InstructionRuntimeStats } from "./types.js";
|
|
2
|
-
import type { OutputValue, RuntimeValue, Row } from "../common/types.js";
|
|
3
|
-
import { isAsyncIterable } from "./utils.js";
|
|
4
|
-
import { createLogger } from "../common/logger.js";
|
|
5
|
-
import { DefaultContextTracker } from './types.js';
|
|
6
|
-
|
|
7
|
-
const log = createLogger('runtime:metrics');
|
|
8
|
-
const contextLog = createLogger('runtime:context');
|
|
9
|
-
|
|
10
|
-
type ResultDestination = number | null;
|
|
11
|
-
|
|
12
|
-
/** Symbol to mark wrapped iterables to prevent double-wrapping */
|
|
13
|
-
const TRACED_ITERABLE_SYMBOL = Symbol('tracedIterable');
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Wraps an async iterable to emit row-level trace events
|
|
17
|
-
*/
|
|
18
|
-
function wrapIterableForTracing<T>(
|
|
19
|
-
src: AsyncIterable<T>,
|
|
20
|
-
ctx: RuntimeContext,
|
|
21
|
-
instructionIndex: number,
|
|
22
|
-
instruction: Instruction
|
|
23
|
-
): AsyncIterable<T> {
|
|
24
|
-
// Prevent double-wrapping
|
|
25
|
-
if ((src as unknown as Record<symbol, boolean>)[TRACED_ITERABLE_SYMBOL]) {
|
|
26
|
-
return src;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const tracer = ctx.tracer!;
|
|
30
|
-
const wrapped = (async function* () {
|
|
31
|
-
let rowIndex = 0;
|
|
32
|
-
for await (const row of src) {
|
|
33
|
-
// Only emit row trace events for valid rows (non-empty arrays)
|
|
34
|
-
if (Array.isArray(row) && row.length > 0) {
|
|
35
|
-
tracer.traceRow(instructionIndex, instruction, rowIndex++, row as Row);
|
|
36
|
-
}
|
|
37
|
-
yield row;
|
|
38
|
-
}
|
|
39
|
-
})();
|
|
40
|
-
|
|
41
|
-
// Mark as already wrapped
|
|
42
|
-
(wrapped as unknown as Record<symbol, boolean>)[TRACED_ITERABLE_SYMBOL] = true;
|
|
43
|
-
return wrapped;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export class Scheduler {
|
|
47
|
-
readonly instructions: Instruction[] = [];
|
|
48
|
-
/** Index of the instruction that consumes the output of each instruction. */
|
|
49
|
-
readonly destinations: ResultDestination[];
|
|
50
|
-
|
|
51
|
-
constructor(root: Instruction) {
|
|
52
|
-
const argIndexes: number[][] = [];
|
|
53
|
-
|
|
54
|
-
const buildPlan = (inst: Instruction): number => {
|
|
55
|
-
const instArgIndexes = inst.params.map(p => buildPlan(p));
|
|
56
|
-
const currentIndex = this.instructions.push(inst) - 1;
|
|
57
|
-
argIndexes[currentIndex] = instArgIndexes;
|
|
58
|
-
return currentIndex;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
buildPlan(root);
|
|
62
|
-
|
|
63
|
-
this.destinations = new Array<ResultDestination>(this.instructions.length).fill(null);
|
|
64
|
-
|
|
65
|
-
for (let instIndex = 0; instIndex < this.instructions.length; ++instIndex) {
|
|
66
|
-
const instArgIndexes = argIndexes[instIndex];
|
|
67
|
-
if (instArgIndexes) {
|
|
68
|
-
for (let argIndex = 0; argIndex < instArgIndexes.length; ++argIndex) {
|
|
69
|
-
this.destinations[instArgIndexes[argIndex]] = instIndex;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
run(ctx: RuntimeContext): OutputValue {
|
|
76
|
-
// Initialize context tracker if not already present
|
|
77
|
-
if (!ctx.contextTracker) {
|
|
78
|
-
ctx.contextTracker = new DefaultContextTracker();
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
let result: OutputValue;
|
|
82
|
-
|
|
83
|
-
if (ctx.enableMetrics) {
|
|
84
|
-
result = this.runWithMetrics(ctx);
|
|
85
|
-
} else if (!ctx.tracer) {
|
|
86
|
-
result = this.runOptimized(ctx);
|
|
87
|
-
} else {
|
|
88
|
-
result = this.runWithTracing(ctx);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// Check for remaining contexts and warn rather than error
|
|
92
|
-
if (ctx.contextTracker && ctx.contextTracker.hasRemainingContexts()) {
|
|
93
|
-
const remaining = ctx.contextTracker.getRemainingContexts();
|
|
94
|
-
contextLog('Context leak detected - remaining contexts:', remaining.map(c => c.source));
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return result;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
private runOptimized(ctx: RuntimeContext): OutputValue {
|
|
101
|
-
// Argument lists for each instruction.
|
|
102
|
-
const instrArgs = new Array(this.instructions.length).fill(null).map(() => [] as OutputValue[] | undefined);
|
|
103
|
-
// Running output
|
|
104
|
-
let output: OutputValue | undefined;
|
|
105
|
-
|
|
106
|
-
// Run synchronously until we hit a promise
|
|
107
|
-
for (let i = 0; i < this.instructions.length; ++i) {
|
|
108
|
-
const args = instrArgs[i]!; // Guaranteed not to contain promises
|
|
109
|
-
instrArgs[i] = undefined; // Clear args as we go to minimize memory usage.
|
|
110
|
-
|
|
111
|
-
output = this.instructions[i].run(ctx, ...(args as RuntimeValue[]));
|
|
112
|
-
|
|
113
|
-
// If the instruction returned a promise, switch to async mode for rest of instructions
|
|
114
|
-
if (output instanceof Promise) {
|
|
115
|
-
return this.runAsync(ctx, instrArgs, i, output);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// Store synchronous output
|
|
119
|
-
const destination = this.destinations[i];
|
|
120
|
-
if (destination !== null) {
|
|
121
|
-
instrArgs[destination]!.push(output);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
return output as OutputValue;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
private async runAsync(
|
|
129
|
-
ctx: RuntimeContext,
|
|
130
|
-
instrArgs: (OutputValue[] | undefined)[],
|
|
131
|
-
startIndex: number,
|
|
132
|
-
pendingOutput: OutputValue
|
|
133
|
-
): Promise<RuntimeValue> {
|
|
134
|
-
// Instruction indexes that have promise arguments
|
|
135
|
-
const hasPromise: boolean[] = [];
|
|
136
|
-
|
|
137
|
-
let output: OutputValue | undefined = pendingOutput;
|
|
138
|
-
|
|
139
|
-
// Store the output from the transition instruction
|
|
140
|
-
const transitionDestination = this.destinations[startIndex];
|
|
141
|
-
if (transitionDestination !== null) {
|
|
142
|
-
instrArgs[transitionDestination]!.push(output);
|
|
143
|
-
hasPromise[transitionDestination] = true;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// Continue with remaining instructions asynchronously
|
|
147
|
-
for (let i = startIndex + 1; i < this.instructions.length; ++i) {
|
|
148
|
-
let args = instrArgs[i]!;
|
|
149
|
-
instrArgs[i] = undefined;
|
|
150
|
-
|
|
151
|
-
// Resolve any promise arguments
|
|
152
|
-
if (hasPromise[i]) {
|
|
153
|
-
args = await Promise.all(args);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// Run the instruction
|
|
157
|
-
output = this.instructions[i].run(ctx, ...(args as RuntimeValue[]));
|
|
158
|
-
|
|
159
|
-
// Store the output
|
|
160
|
-
const destination = this.destinations[i];
|
|
161
|
-
if (destination !== null) {
|
|
162
|
-
instrArgs[destination]!.push(output);
|
|
163
|
-
if (output instanceof Promise) {
|
|
164
|
-
hasPromise[destination] = true;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
return output as OutputValue;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
private runWithTracing(ctx: RuntimeContext): OutputValue {
|
|
173
|
-
// Argument lists for each instruction.
|
|
174
|
-
const instrArgs = new Array(this.instructions.length).fill(null).map(() => [] as OutputValue[] | undefined);
|
|
175
|
-
// Running output
|
|
176
|
-
let output: OutputValue | undefined;
|
|
177
|
-
|
|
178
|
-
// Run synchronously until we hit a promise
|
|
179
|
-
for (let i = 0; i < this.instructions.length; ++i) {
|
|
180
|
-
const instruction = this.instructions[i];
|
|
181
|
-
const args = instrArgs[i]!; // Guaranteed not to contain promises
|
|
182
|
-
instrArgs[i] = undefined; // Clear args as we go to minimize memory usage.
|
|
183
|
-
|
|
184
|
-
// Trace input
|
|
185
|
-
ctx.tracer!.traceInput(i, instruction, args as RuntimeValue[]);
|
|
186
|
-
|
|
187
|
-
try {
|
|
188
|
-
output = instruction.run(ctx, ...(args as RuntimeValue[]));
|
|
189
|
-
|
|
190
|
-
// If the instruction returned a promise, switch to async mode for rest of instructions
|
|
191
|
-
if (output instanceof Promise) {
|
|
192
|
-
return this.runAsyncWithTracing(ctx, instrArgs, i, output);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
// Wrap async iterables for row-level tracing
|
|
196
|
-
if (isAsyncIterable(output)) {
|
|
197
|
-
output = wrapIterableForTracing(output, ctx, i, instruction);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
// Trace output - handle promises properly
|
|
201
|
-
ctx.tracer!.traceOutput(i, instruction, output);
|
|
202
|
-
|
|
203
|
-
// Keep the original output (promise or value) for flow control
|
|
204
|
-
} catch (error) {
|
|
205
|
-
// Trace error
|
|
206
|
-
ctx.tracer!.traceError(i, instruction, error as Error);
|
|
207
|
-
throw error; // Re-throw the error
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// Store synchronous output
|
|
211
|
-
const destination = this.destinations[i];
|
|
212
|
-
if (destination !== null) {
|
|
213
|
-
instrArgs[destination]!.push(output);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
return output as OutputValue;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
private async runAsyncWithTracing(
|
|
221
|
-
ctx: RuntimeContext,
|
|
222
|
-
instrArgs: (OutputValue[] | undefined)[],
|
|
223
|
-
startIndex: number,
|
|
224
|
-
pendingOutput: OutputValue
|
|
225
|
-
): Promise<RuntimeValue> {
|
|
226
|
-
// Handle the initial pending output
|
|
227
|
-
let resolvedPendingOutput = await pendingOutput;
|
|
228
|
-
if (isAsyncIterable(resolvedPendingOutput)) {
|
|
229
|
-
resolvedPendingOutput = wrapIterableForTracing(resolvedPendingOutput, ctx, startIndex, this.instructions[startIndex]);
|
|
230
|
-
}
|
|
231
|
-
ctx.tracer!.traceOutput(startIndex, this.instructions[startIndex], resolvedPendingOutput);
|
|
232
|
-
|
|
233
|
-
// Instruction indexes that have promise arguments
|
|
234
|
-
const hasPromise: boolean[] = [];
|
|
235
|
-
|
|
236
|
-
let output: OutputValue | undefined = resolvedPendingOutput;
|
|
237
|
-
|
|
238
|
-
// Store the output from the transition instruction
|
|
239
|
-
const transitionDestination = this.destinations[startIndex];
|
|
240
|
-
if (transitionDestination !== null) {
|
|
241
|
-
instrArgs[transitionDestination]!.push(output);
|
|
242
|
-
hasPromise[transitionDestination] = true;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
// Continue with remaining instructions asynchronously
|
|
246
|
-
for (let i = startIndex + 1; i < this.instructions.length; ++i) {
|
|
247
|
-
const instruction = this.instructions[i];
|
|
248
|
-
let args = instrArgs[i]!;
|
|
249
|
-
instrArgs[i] = undefined;
|
|
250
|
-
|
|
251
|
-
// Resolve any promise arguments
|
|
252
|
-
if (hasPromise[i]) {
|
|
253
|
-
args = await Promise.all(args);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
// Trace input
|
|
257
|
-
ctx.tracer!.traceInput(i, instruction, args as RuntimeValue[]);
|
|
258
|
-
|
|
259
|
-
try {
|
|
260
|
-
output = instruction.run(ctx, ...(args as RuntimeValue[]));
|
|
261
|
-
|
|
262
|
-
// Resolve and wrap async output for tracing
|
|
263
|
-
let resolvedOutput = output instanceof Promise ? await output : output;
|
|
264
|
-
if (isAsyncIterable(resolvedOutput)) {
|
|
265
|
-
resolvedOutput = wrapIterableForTracing(resolvedOutput, ctx, i, instruction);
|
|
266
|
-
output = resolvedOutput; // Update output to the wrapped version
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
// Trace output
|
|
270
|
-
ctx.tracer!.traceOutput(i, instruction, resolvedOutput);
|
|
271
|
-
|
|
272
|
-
// Keep the original output (promise or value) for flow control
|
|
273
|
-
} catch (error) {
|
|
274
|
-
// Trace error
|
|
275
|
-
ctx.tracer!.traceError(i, instruction, error as Error);
|
|
276
|
-
throw error; // Re-throw the error
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
// Store the output
|
|
280
|
-
const destination = this.destinations[i];
|
|
281
|
-
if (destination !== null) {
|
|
282
|
-
instrArgs[destination]!.push(output);
|
|
283
|
-
if (output instanceof Promise) {
|
|
284
|
-
hasPromise[destination] = true;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
return output as OutputValue;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
private runWithMetrics(ctx: RuntimeContext): OutputValue {
|
|
293
|
-
// Initialize metrics for all instructions
|
|
294
|
-
for (const instruction of this.instructions) {
|
|
295
|
-
if (!instruction.runtimeStats) {
|
|
296
|
-
instruction.runtimeStats = {
|
|
297
|
-
in: 0,
|
|
298
|
-
out: 0,
|
|
299
|
-
elapsedNs: 0n,
|
|
300
|
-
executions: 0
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
// Argument lists for each instruction.
|
|
306
|
-
const instrArgs = new Array(this.instructions.length).fill(null).map(() => [] as OutputValue[] | undefined);
|
|
307
|
-
// Running output
|
|
308
|
-
let output: OutputValue | undefined;
|
|
309
|
-
|
|
310
|
-
// Run synchronously until we hit a promise
|
|
311
|
-
for (let i = 0; i < this.instructions.length; ++i) {
|
|
312
|
-
const instruction = this.instructions[i];
|
|
313
|
-
const args = instrArgs[i]!;
|
|
314
|
-
instrArgs[i] = undefined; // Clear args as we go to minimize memory usage.
|
|
315
|
-
|
|
316
|
-
// Run with metrics collection
|
|
317
|
-
output = this.runInstructionWithMetrics(instruction, ctx, args as RuntimeValue[]);
|
|
318
|
-
|
|
319
|
-
// If the instruction returned a promise, switch to async mode for rest of instructions
|
|
320
|
-
if (output instanceof Promise) {
|
|
321
|
-
return this.runAsyncWithMetrics(ctx, instrArgs, i, output);
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
// Store synchronous output
|
|
325
|
-
const destination = this.destinations[i];
|
|
326
|
-
if (destination !== null) {
|
|
327
|
-
instrArgs[destination]!.push(output);
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
// Log aggregate metrics if debugging is enabled
|
|
332
|
-
this.logAggregateMetrics();
|
|
333
|
-
|
|
334
|
-
return output as OutputValue;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
private async runAsyncWithMetrics(
|
|
338
|
-
ctx: RuntimeContext,
|
|
339
|
-
instrArgs: (OutputValue[] | undefined)[],
|
|
340
|
-
startIndex: number,
|
|
341
|
-
pendingOutput: OutputValue
|
|
342
|
-
): Promise<RuntimeValue> {
|
|
343
|
-
// Instruction indexes that have promise arguments
|
|
344
|
-
const hasPromise: boolean[] = [];
|
|
345
|
-
|
|
346
|
-
let output: OutputValue | undefined = pendingOutput;
|
|
347
|
-
|
|
348
|
-
// Store the output from the transition instruction
|
|
349
|
-
const transitionDestination = this.destinations[startIndex];
|
|
350
|
-
if (transitionDestination !== null) {
|
|
351
|
-
instrArgs[transitionDestination]!.push(output);
|
|
352
|
-
hasPromise[transitionDestination] = true;
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
// Continue with remaining instructions asynchronously
|
|
356
|
-
for (let i = startIndex + 1; i < this.instructions.length; ++i) {
|
|
357
|
-
const instruction = this.instructions[i];
|
|
358
|
-
let args = instrArgs[i]!;
|
|
359
|
-
instrArgs[i] = undefined;
|
|
360
|
-
|
|
361
|
-
// Resolve any promise arguments
|
|
362
|
-
if (hasPromise[i]) {
|
|
363
|
-
args = await Promise.all(args);
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
// Run with metrics collection
|
|
367
|
-
output = await this.runInstructionWithMetricsAsync(instruction, ctx, args as RuntimeValue[]);
|
|
368
|
-
|
|
369
|
-
// Store the output
|
|
370
|
-
const destination = this.destinations[i];
|
|
371
|
-
if (destination !== null) {
|
|
372
|
-
instrArgs[destination]!.push(output);
|
|
373
|
-
if (output instanceof Promise) {
|
|
374
|
-
hasPromise[destination] = true;
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
// Log aggregate metrics if debugging is enabled
|
|
380
|
-
this.logAggregateMetrics();
|
|
381
|
-
|
|
382
|
-
return output as OutputValue;
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
private runInstructionWithMetrics(instruction: Instruction, ctx: RuntimeContext, args: RuntimeValue[]): OutputValue {
|
|
386
|
-
const stats = instruction.runtimeStats!;
|
|
387
|
-
const start = process.hrtime.bigint();
|
|
388
|
-
|
|
389
|
-
stats.executions++;
|
|
390
|
-
stats.in += this.countInputs(args);
|
|
391
|
-
|
|
392
|
-
try {
|
|
393
|
-
const result = instruction.run(ctx, ...args);
|
|
394
|
-
|
|
395
|
-
if (result instanceof Promise) {
|
|
396
|
-
// Handle async results separately
|
|
397
|
-
return result.then(resolved => {
|
|
398
|
-
stats.out += this.countOutputs(resolved);
|
|
399
|
-
stats.elapsedNs += process.hrtime.bigint() - start;
|
|
400
|
-
return resolved;
|
|
401
|
-
}).catch(error => {
|
|
402
|
-
stats.elapsedNs += process.hrtime.bigint() - start;
|
|
403
|
-
throw error;
|
|
404
|
-
});
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
stats.out += this.countOutputs(result);
|
|
408
|
-
stats.elapsedNs += process.hrtime.bigint() - start;
|
|
409
|
-
|
|
410
|
-
return result;
|
|
411
|
-
} catch (error) {
|
|
412
|
-
stats.elapsedNs += process.hrtime.bigint() - start;
|
|
413
|
-
throw error;
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
private async runInstructionWithMetricsAsync(instruction: Instruction, ctx: RuntimeContext, args: RuntimeValue[]): Promise<OutputValue> {
|
|
418
|
-
const stats = instruction.runtimeStats!;
|
|
419
|
-
const start = process.hrtime.bigint();
|
|
420
|
-
|
|
421
|
-
stats.executions++;
|
|
422
|
-
stats.in += this.countInputs(args);
|
|
423
|
-
|
|
424
|
-
try {
|
|
425
|
-
const result = await instruction.run(ctx, ...args);
|
|
426
|
-
stats.out += this.countOutputs(result);
|
|
427
|
-
stats.elapsedNs += process.hrtime.bigint() - start;
|
|
428
|
-
return result;
|
|
429
|
-
} catch (error) {
|
|
430
|
-
stats.elapsedNs += process.hrtime.bigint() - start;
|
|
431
|
-
throw error;
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
private countInputs(args: RuntimeValue[]): number {
|
|
436
|
-
return args.reduce((sum: number, arg) => {
|
|
437
|
-
if (isAsyncIterable(arg)) {
|
|
438
|
-
return sum + 1; // Count as 1 for async iterables (we don't know size)
|
|
439
|
-
} else if (Array.isArray(arg)) {
|
|
440
|
-
return sum + arg.length;
|
|
441
|
-
} else {
|
|
442
|
-
return sum + 1;
|
|
443
|
-
}
|
|
444
|
-
}, 0);
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
private countOutputs(result: OutputValue): number {
|
|
448
|
-
if (isAsyncIterable(result)) {
|
|
449
|
-
return 1; // Count as 1 for async iterables (we don't know size)
|
|
450
|
-
} else if (Array.isArray(result)) {
|
|
451
|
-
return result.length;
|
|
452
|
-
} else {
|
|
453
|
-
return 1;
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
private logAggregateMetrics(): void {
|
|
458
|
-
if (log.enabled) {
|
|
459
|
-
let totalExecutions = 0;
|
|
460
|
-
let totalElapsed = 0n;
|
|
461
|
-
let totalIn = 0;
|
|
462
|
-
let totalOut = 0;
|
|
463
|
-
|
|
464
|
-
for (const instruction of this.instructions) {
|
|
465
|
-
if (instruction.runtimeStats) {
|
|
466
|
-
totalExecutions += instruction.runtimeStats.executions;
|
|
467
|
-
totalElapsed += instruction.runtimeStats.elapsedNs;
|
|
468
|
-
totalIn += instruction.runtimeStats.in;
|
|
469
|
-
totalOut += instruction.runtimeStats.out;
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
log(`Aggregate metrics: ${totalExecutions} executions, ${totalElapsed / 1000n}μs elapsed, ${totalIn} inputs, ${totalOut} outputs`);
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
/**
|
|
478
|
-
* Get runtime statistics for all instructions
|
|
479
|
-
*/
|
|
480
|
-
getMetrics(): InstructionRuntimeStats[] {
|
|
481
|
-
return this.instructions.map(instruction => instruction.runtimeStats || {
|
|
482
|
-
in: 0,
|
|
483
|
-
out: 0,
|
|
484
|
-
elapsedNs: 0n,
|
|
485
|
-
executions: 0
|
|
486
|
-
});
|
|
487
|
-
}
|
|
488
|
-
}
|