@quereus/quereus 0.7.2 → 0.7.4
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/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
|
@@ -1,319 +0,0 @@
|
|
|
1
|
-
import type { Database } from '../core/database.js';
|
|
2
|
-
import type { SchemaManager } from '../schema/manager.js';
|
|
3
|
-
import type { TableSchema } from '../schema/table.js';
|
|
4
|
-
import type { FunctionSchema } from '../schema/function.js';
|
|
5
|
-
import type { AnyVirtualTableModule } from '../vtab/module.js';
|
|
6
|
-
import { createLogger } from '../common/logger.js';
|
|
7
|
-
import { QuereusError } from '../common/errors.js';
|
|
8
|
-
import { StatusCode } from '../common/types.js';
|
|
9
|
-
import type { CollationFunction } from '../util/comparison.js';
|
|
10
|
-
|
|
11
|
-
const log = createLogger('runtime:emission-context');
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Represents a dependency on a schema object that was resolved during emission.
|
|
15
|
-
* Used for plan invalidation when schema changes.
|
|
16
|
-
*/
|
|
17
|
-
export interface SchemaDependency {
|
|
18
|
-
readonly type: 'table' | 'function' | 'vtab_module' | 'collation';
|
|
19
|
-
readonly schemaName?: string; // undefined for functions, collations, and vtab modules
|
|
20
|
-
readonly objectName: string;
|
|
21
|
-
readonly objectVersion?: number; // For future versioning support
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Tracks schema dependencies and provides a unique identifier for a set of dependencies.
|
|
26
|
-
*/
|
|
27
|
-
export class DependencyTracker {
|
|
28
|
-
private dependencies = new Set<string>();
|
|
29
|
-
private _fingerprint: string | null = null;
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Records a dependency on a schema object.
|
|
33
|
-
*/
|
|
34
|
-
addDependency(dep: SchemaDependency): void {
|
|
35
|
-
const key = this.dependencyKey(dep);
|
|
36
|
-
this.dependencies.add(key);
|
|
37
|
-
this._fingerprint = null; // Invalidate cached fingerprint
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Gets all tracked dependencies.
|
|
42
|
-
*/
|
|
43
|
-
getDependencies(): SchemaDependency[] {
|
|
44
|
-
return Array.from(this.dependencies).map(key => this.parseDependencyKey(key));
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Gets a fingerprint representing the current set of dependencies.
|
|
49
|
-
* This can be used to quickly check if dependencies have changed.
|
|
50
|
-
*/
|
|
51
|
-
getFingerprint(): string {
|
|
52
|
-
if (this._fingerprint === null) {
|
|
53
|
-
const sorted = Array.from(this.dependencies).sort();
|
|
54
|
-
this._fingerprint = sorted.join('|');
|
|
55
|
-
}
|
|
56
|
-
return this._fingerprint;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Checks if this tracker has any dependencies that overlap with the given dependency.
|
|
61
|
-
*/
|
|
62
|
-
dependsOn(dep: SchemaDependency): boolean {
|
|
63
|
-
const key = this.dependencyKey(dep);
|
|
64
|
-
return this.dependencies.has(key);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Clears all tracked dependencies.
|
|
69
|
-
*/
|
|
70
|
-
clear(): void {
|
|
71
|
-
this.dependencies.clear();
|
|
72
|
-
this._fingerprint = null;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
private dependencyKey(dep: SchemaDependency): string {
|
|
76
|
-
const schema = dep.schemaName || '';
|
|
77
|
-
const version = dep.objectVersion || 0;
|
|
78
|
-
return `${dep.type}:${schema}:${dep.objectName}:${version}`;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
private parseDependencyKey(key: string): SchemaDependency {
|
|
82
|
-
const [type, schemaName, objectName, versionStr] = key.split(':');
|
|
83
|
-
return {
|
|
84
|
-
type: type as SchemaDependency['type'],
|
|
85
|
-
schemaName: schemaName || undefined,
|
|
86
|
-
objectName,
|
|
87
|
-
objectVersion: parseInt(versionStr) || undefined
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
type SchemaObject = TableSchema | FunctionSchema | { module: AnyVirtualTableModule, auxData?: unknown } | CollationFunction;
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Context provided to emitters during plan emission.
|
|
96
|
-
* Allows schema lookups and tracks dependencies for plan invalidation.
|
|
97
|
-
* Also captures schema object references for runtime use.
|
|
98
|
-
*/
|
|
99
|
-
export class EmissionContext {
|
|
100
|
-
private readonly schemaManager: SchemaManager;
|
|
101
|
-
private readonly dependencyTracker = new DependencyTracker();
|
|
102
|
-
/** Schema snapshot for table/view references during emission */
|
|
103
|
-
private readonly schemaSnapshot = new Map<string, SchemaObject>();
|
|
104
|
-
public readonly tracePlanStack: boolean;
|
|
105
|
-
|
|
106
|
-
constructor(
|
|
107
|
-
public readonly db: Database,
|
|
108
|
-
) {
|
|
109
|
-
const option = db.getOption('trace_plan_stack');
|
|
110
|
-
this.tracePlanStack = typeof option === 'object' && option !== null && 'value' in option
|
|
111
|
-
? Boolean((option as { value: unknown }).value)
|
|
112
|
-
: Boolean(option);
|
|
113
|
-
this.schemaManager = db.schemaManager;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Looks up a table schema and records the dependency.
|
|
118
|
-
* Also captures the table reference for runtime use.
|
|
119
|
-
*/
|
|
120
|
-
findTable(tableName: string, schemaName?: string): TableSchema | undefined {
|
|
121
|
-
const table = this.schemaManager.findTable(tableName, schemaName);
|
|
122
|
-
if (table) {
|
|
123
|
-
const key = `table:${table.schemaName}:${table.name}`;
|
|
124
|
-
this.schemaSnapshot.set(key, table);
|
|
125
|
-
this.dependencyTracker.addDependency({
|
|
126
|
-
type: 'table',
|
|
127
|
-
schemaName: table.schemaName,
|
|
128
|
-
objectName: table.name
|
|
129
|
-
});
|
|
130
|
-
log('Recorded table dependency: %s.%s', table.schemaName, table.name);
|
|
131
|
-
}
|
|
132
|
-
return table;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Looks up a function schema and records the dependency.
|
|
137
|
-
* Also captures the function reference for runtime use.
|
|
138
|
-
*/
|
|
139
|
-
findFunction(funcName: string, numArgs: number): FunctionSchema | undefined {
|
|
140
|
-
const func = this.schemaManager.findFunction(funcName, numArgs);
|
|
141
|
-
if (func) {
|
|
142
|
-
const key = `function:${func.name}/${func.numArgs}`;
|
|
143
|
-
this.schemaSnapshot.set(key, func);
|
|
144
|
-
this.dependencyTracker.addDependency({
|
|
145
|
-
type: 'function',
|
|
146
|
-
objectName: `${func.name}/${func.numArgs}`
|
|
147
|
-
});
|
|
148
|
-
log('Recorded function dependency: %s/%d', func.name, func.numArgs);
|
|
149
|
-
}
|
|
150
|
-
return func;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Looks up a virtual table module and records the dependency.
|
|
155
|
-
* Also captures the module reference for runtime use.
|
|
156
|
-
*/
|
|
157
|
-
getVtabModule(moduleName: string): { module: AnyVirtualTableModule, auxData?: unknown } | undefined {
|
|
158
|
-
const moduleInfo = this.schemaManager.getModule(moduleName);
|
|
159
|
-
if (moduleInfo) {
|
|
160
|
-
const key = `vtab_module:${moduleName}`;
|
|
161
|
-
this.schemaSnapshot.set(key, moduleInfo);
|
|
162
|
-
this.dependencyTracker.addDependency({
|
|
163
|
-
type: 'vtab_module',
|
|
164
|
-
objectName: moduleName
|
|
165
|
-
});
|
|
166
|
-
log('Recorded vtab module dependency: %s', moduleName);
|
|
167
|
-
}
|
|
168
|
-
return moduleInfo;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Looks up a collation and records the dependency.
|
|
173
|
-
* Also captures the collation reference for runtime use.
|
|
174
|
-
*/
|
|
175
|
-
getCollation(collationName: string): CollationFunction | undefined {
|
|
176
|
-
const collation = this.db._getCollation(collationName);
|
|
177
|
-
if (collation) {
|
|
178
|
-
const key = `collation:${collationName}`;
|
|
179
|
-
this.schemaSnapshot.set(key, collation);
|
|
180
|
-
this.dependencyTracker.addDependency({
|
|
181
|
-
type: 'collation',
|
|
182
|
-
objectName: collationName
|
|
183
|
-
});
|
|
184
|
-
log('Recorded collation dependency: %s', collationName);
|
|
185
|
-
}
|
|
186
|
-
return collation;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Gets the dependency tracker for this emission context.
|
|
191
|
-
*/
|
|
192
|
-
getDependencyTracker(): DependencyTracker {
|
|
193
|
-
return this.dependencyTracker;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Gets a snapshot of all dependencies recorded during emission.
|
|
198
|
-
*/
|
|
199
|
-
getDependencies(): SchemaDependency[] {
|
|
200
|
-
return this.dependencyTracker.getDependencies();
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Gets a fingerprint representing all dependencies.
|
|
205
|
-
*/
|
|
206
|
-
getDependencyFingerprint(): string {
|
|
207
|
-
return this.dependencyTracker.getFingerprint();
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Provides access to the database instance for cases where direct access is needed.
|
|
212
|
-
* Use sparingly - prefer the specific lookup methods above.
|
|
213
|
-
*/
|
|
214
|
-
getDatabase(): Database {
|
|
215
|
-
return this.db;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Provides access to the schema manager for cases where direct access is needed.
|
|
220
|
-
* Use sparingly - prefer the specific lookup methods above.
|
|
221
|
-
*/
|
|
222
|
-
getSchemaManager(): SchemaManager {
|
|
223
|
-
return this.schemaManager;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Retrieves a captured schema object by its key.
|
|
228
|
-
* This allows runtime instructions to use the schema objects that were
|
|
229
|
-
* captured at emission time, providing consistency even if the schema changes.
|
|
230
|
-
*/
|
|
231
|
-
getCapturedSchemaObject<T = SchemaObject>(key: string): T | undefined {
|
|
232
|
-
return this.schemaSnapshot.get(key) as T | undefined;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* Validates that all captured schema objects still exist in the current schema.
|
|
237
|
-
* This can be called at the start of query execution to provide early error detection.
|
|
238
|
-
* Only validates objects that were actually captured during emission.
|
|
239
|
-
*/
|
|
240
|
-
validateCapturedSchemaObjects(): void {
|
|
241
|
-
for (const [key, capturedObject] of this.schemaSnapshot.entries()) {
|
|
242
|
-
const [type, ...nameParts] = key.split(':');
|
|
243
|
-
|
|
244
|
-
switch (type) {
|
|
245
|
-
case 'table': {
|
|
246
|
-
const [schemaName, tableName] = nameParts;
|
|
247
|
-
const currentTable = this.schemaManager.findTable(tableName, schemaName);
|
|
248
|
-
if (!currentTable) {
|
|
249
|
-
throw new QuereusError(
|
|
250
|
-
`Table ${schemaName}.${tableName} was dropped after query was planned`,
|
|
251
|
-
StatusCode.ERROR
|
|
252
|
-
);
|
|
253
|
-
}
|
|
254
|
-
// Optionally check if it's the same object reference
|
|
255
|
-
if (currentTable !== capturedObject) {
|
|
256
|
-
log('Warning: Table %s.%s schema changed after query was planned', schemaName, tableName);
|
|
257
|
-
}
|
|
258
|
-
break;
|
|
259
|
-
}
|
|
260
|
-
case 'function': {
|
|
261
|
-
const funcKey = nameParts.join(':'); // Rejoin in case function name had colons
|
|
262
|
-
const [funcName, numArgsStr] = funcKey.split('/');
|
|
263
|
-
const numArgs = parseInt(numArgsStr);
|
|
264
|
-
const currentFunc = this.schemaManager.findFunction(funcName, numArgs);
|
|
265
|
-
if (!currentFunc) {
|
|
266
|
-
throw new QuereusError(
|
|
267
|
-
`Function ${funcName}/${numArgs} was removed after query was planned`,
|
|
268
|
-
StatusCode.ERROR
|
|
269
|
-
);
|
|
270
|
-
}
|
|
271
|
-
if (currentFunc !== capturedObject) {
|
|
272
|
-
log('Warning: Function %s/%d changed after query was planned', funcName, numArgs);
|
|
273
|
-
}
|
|
274
|
-
break;
|
|
275
|
-
}
|
|
276
|
-
case 'vtab_module': {
|
|
277
|
-
const moduleName = nameParts.join(':');
|
|
278
|
-
const currentModule = this.schemaManager.getModule(moduleName);
|
|
279
|
-
if (!currentModule) {
|
|
280
|
-
throw new QuereusError(
|
|
281
|
-
`Virtual table module ${moduleName} was unregistered after query was planned`,
|
|
282
|
-
StatusCode.ERROR
|
|
283
|
-
);
|
|
284
|
-
}
|
|
285
|
-
if (currentModule !== capturedObject) {
|
|
286
|
-
log('Warning: Virtual table module %s changed after query was planned', moduleName);
|
|
287
|
-
}
|
|
288
|
-
break;
|
|
289
|
-
}
|
|
290
|
-
case 'collation': {
|
|
291
|
-
const collationName = nameParts.join(':');
|
|
292
|
-
const currentCollation = this.db._getCollation(collationName);
|
|
293
|
-
if (!currentCollation) {
|
|
294
|
-
throw new QuereusError(
|
|
295
|
-
`Collation ${collationName} was removed after query was planned`,
|
|
296
|
-
StatusCode.ERROR
|
|
297
|
-
);
|
|
298
|
-
}
|
|
299
|
-
if (currentCollation !== capturedObject) {
|
|
300
|
-
log('Warning: Collation %s changed after query was planned', collationName);
|
|
301
|
-
}
|
|
302
|
-
break;
|
|
303
|
-
}
|
|
304
|
-
default:
|
|
305
|
-
log('Warning: Unknown schema object type in validation: %s', type);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
* Gets the number of schema objects captured during emission.
|
|
312
|
-
* Useful for debugging and testing.
|
|
313
|
-
*/
|
|
314
|
-
getCapturedObjectCount(): number {
|
|
315
|
-
return this.schemaSnapshot.size;
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import type { AddConstraintNode } from '../../planner/nodes/add-constraint-node.js';
|
|
2
|
-
import type { Instruction, RuntimeContext, InstructionRun } from '../types.js';
|
|
3
|
-
import type { EmissionContext } from '../emission-context.js';
|
|
4
|
-
import { QuereusError } from '../../common/errors.js';
|
|
5
|
-
import { SqlValue, StatusCode } from '../../common/types.js';
|
|
6
|
-
import { createLogger } from '../../common/logger.js';
|
|
7
|
-
import type { RowConstraintSchema, TableSchema } from '../../schema/table.js';
|
|
8
|
-
import { opsToMask } from '../../schema/table.js';
|
|
9
|
-
|
|
10
|
-
const log = createLogger('runtime:emit:add-constraint');
|
|
11
|
-
|
|
12
|
-
export function emitAddConstraint(plan: AddConstraintNode, _ctx: EmissionContext): Instruction {
|
|
13
|
-
const tableSchema = plan.table.tableSchema;
|
|
14
|
-
|
|
15
|
-
async function run(rctx: RuntimeContext): Promise<SqlValue> {
|
|
16
|
-
// Convert the AST constraint to a schema constraint object
|
|
17
|
-
const constraint = plan.constraint;
|
|
18
|
-
|
|
19
|
-
if (constraint.type !== 'check') {
|
|
20
|
-
throw new QuereusError(
|
|
21
|
-
`ADD CONSTRAINT ${constraint.type} is not yet implemented`,
|
|
22
|
-
StatusCode.UNSUPPORTED
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
if (!constraint.expr) {
|
|
27
|
-
throw new QuereusError(
|
|
28
|
-
'CHECK constraint requires an expression',
|
|
29
|
-
StatusCode.ERROR
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Create the constraint schema object
|
|
34
|
-
// Note: We don't validate determinism here because constraints may reference NEW/OLD
|
|
35
|
-
// which require special scoping. Determinism is validated at INSERT/UPDATE plan time
|
|
36
|
-
// in constraint-builder.ts when the constraint is actually checked.
|
|
37
|
-
const constraintSchema: RowConstraintSchema = {
|
|
38
|
-
name: constraint.name || `check_${tableSchema.checkConstraints.length}`,
|
|
39
|
-
expr: constraint.expr,
|
|
40
|
-
operations: opsToMask(constraint.operations), // Convert operations array to bitmask
|
|
41
|
-
deferrable: constraint.deferrable ?? false,
|
|
42
|
-
initiallyDeferred: constraint.initiallyDeferred,
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
// Create a new table schema with the additional constraint (honor immutability)
|
|
46
|
-
const updatedConstraints = [...tableSchema.checkConstraints, constraintSchema];
|
|
47
|
-
const updatedTableSchema: TableSchema = {
|
|
48
|
-
...tableSchema,
|
|
49
|
-
checkConstraints: Object.freeze(updatedConstraints),
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
// Replace the table schema in the database
|
|
53
|
-
const schemaManager = rctx.db.schemaManager;
|
|
54
|
-
const schema = schemaManager.getSchemaOrFail(tableSchema.schemaName);
|
|
55
|
-
|
|
56
|
-
// Replace the table schema (addTable overwrites existing)
|
|
57
|
-
schema.addTable(updatedTableSchema);
|
|
58
|
-
|
|
59
|
-
// Notify schema change listeners that the table was modified
|
|
60
|
-
schemaManager.getChangeNotifier().notifyChange({
|
|
61
|
-
type: 'table_modified',
|
|
62
|
-
schemaName: tableSchema.schemaName,
|
|
63
|
-
objectName: tableSchema.name,
|
|
64
|
-
oldObject: tableSchema,
|
|
65
|
-
newObject: updatedTableSchema
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
log('Added constraint %s to table %s.%s', constraintSchema.name, tableSchema.schemaName, tableSchema.name);
|
|
69
|
-
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return {
|
|
74
|
-
params: [],
|
|
75
|
-
run: run as InstructionRun,
|
|
76
|
-
note: `addConstraint(${plan.table.tableSchema.name}, ${plan.constraint.name || 'unnamed'})`
|
|
77
|
-
};
|
|
78
|
-
}
|