@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,214 +0,0 @@
|
|
|
1
|
-
import type { SchemaCatalog } from './catalog.js';
|
|
2
|
-
import type * as AST from '../parser/ast.js';
|
|
3
|
-
import { createTableToString, createViewToString, createIndexToString } from '../util/ast-stringify.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Represents the difference between a declared schema and actual database state
|
|
7
|
-
*/
|
|
8
|
-
export interface SchemaDiff {
|
|
9
|
-
tablesToCreate: string[];
|
|
10
|
-
tablesToDrop: string[];
|
|
11
|
-
tablesToAlter: TableAlterDiff[];
|
|
12
|
-
viewsToCreate: string[];
|
|
13
|
-
viewsToDrop: string[];
|
|
14
|
-
indexesToCreate: string[];
|
|
15
|
-
indexesToDrop: string[];
|
|
16
|
-
assertionsToCreate: string[];
|
|
17
|
-
assertionsToDrop: string[];
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface TableAlterDiff {
|
|
21
|
-
tableName: string;
|
|
22
|
-
columnsToAdd: string[];
|
|
23
|
-
columnsToDrop: string[];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Computes the difference between declared schema and actual catalog
|
|
28
|
-
*/
|
|
29
|
-
export function computeSchemaDiff(
|
|
30
|
-
declaredSchema: AST.DeclareSchemaStmt,
|
|
31
|
-
actualCatalog: SchemaCatalog
|
|
32
|
-
): SchemaDiff {
|
|
33
|
-
const diff: SchemaDiff = {
|
|
34
|
-
tablesToCreate: [],
|
|
35
|
-
tablesToDrop: [],
|
|
36
|
-
tablesToAlter: [],
|
|
37
|
-
viewsToCreate: [],
|
|
38
|
-
viewsToDrop: [],
|
|
39
|
-
indexesToCreate: [],
|
|
40
|
-
indexesToDrop: [],
|
|
41
|
-
assertionsToCreate: [],
|
|
42
|
-
assertionsToDrop: []
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
const targetSchemaName = actualCatalog.schemaName;
|
|
46
|
-
|
|
47
|
-
// Build maps of declared items
|
|
48
|
-
const declaredTables = new Map<string, AST.DeclaredTable>();
|
|
49
|
-
const declaredViews = new Map<string, AST.DeclaredView>();
|
|
50
|
-
const declaredIndexes = new Map<string, AST.DeclaredIndex>();
|
|
51
|
-
|
|
52
|
-
for (const item of declaredSchema.items) {
|
|
53
|
-
switch (item.type) {
|
|
54
|
-
case 'declaredTable':
|
|
55
|
-
declaredTables.set(item.tableStmt.table.name.toLowerCase(), item);
|
|
56
|
-
break;
|
|
57
|
-
case 'declaredView':
|
|
58
|
-
declaredViews.set(item.viewStmt.view.name.toLowerCase(), item);
|
|
59
|
-
break;
|
|
60
|
-
case 'declaredIndex':
|
|
61
|
-
declaredIndexes.set(item.indexStmt.index.name.toLowerCase(), item);
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Build maps of actual items
|
|
67
|
-
const actualTables = new Map(actualCatalog.tables.map(t => [t.name.toLowerCase(), t]));
|
|
68
|
-
const actualViews = new Map(actualCatalog.views.map(v => [v.name.toLowerCase(), v]));
|
|
69
|
-
const actualIndexes = new Map(actualCatalog.indexes.map(i => [i.name.toLowerCase(), i]));
|
|
70
|
-
|
|
71
|
-
// Find tables to create (in declared but not in actual)
|
|
72
|
-
for (const [name, declaredTable] of declaredTables) {
|
|
73
|
-
if (!actualTables.has(name)) {
|
|
74
|
-
// Qualify with schema if not main
|
|
75
|
-
const tableStmt = declaredTable.tableStmt;
|
|
76
|
-
if (targetSchemaName && targetSchemaName !== 'main' && !tableStmt.table.schema) {
|
|
77
|
-
const qualifiedStmt: AST.CreateTableStmt = {
|
|
78
|
-
...tableStmt,
|
|
79
|
-
table: {
|
|
80
|
-
...tableStmt.table,
|
|
81
|
-
schema: targetSchemaName
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
diff.tablesToCreate.push(createTableToString(qualifiedStmt));
|
|
85
|
-
} else {
|
|
86
|
-
diff.tablesToCreate.push(createTableToString(tableStmt));
|
|
87
|
-
}
|
|
88
|
-
} else {
|
|
89
|
-
// Table exists - check if it needs alteration
|
|
90
|
-
const alterDiff = computeTableAlterDiff(declaredTable, actualTables.get(name)!);
|
|
91
|
-
if (alterDiff.columnsToAdd.length > 0 || alterDiff.columnsToDrop.length > 0) {
|
|
92
|
-
diff.tablesToAlter.push(alterDiff);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// Find tables to drop (in actual but not in declared)
|
|
98
|
-
for (const [name] of actualTables) {
|
|
99
|
-
if (!declaredTables.has(name)) {
|
|
100
|
-
diff.tablesToDrop.push(name);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Find views to create/drop
|
|
105
|
-
for (const [name, declaredView] of declaredViews) {
|
|
106
|
-
if (!actualViews.has(name)) {
|
|
107
|
-
// Generate proper view DDL using AST stringifier
|
|
108
|
-
diff.viewsToCreate.push(createViewToString(declaredView.viewStmt));
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
for (const [name] of actualViews) {
|
|
113
|
-
if (!declaredViews.has(name)) {
|
|
114
|
-
diff.viewsToDrop.push(name);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// Find indexes to create/drop
|
|
119
|
-
for (const [name, declaredIndex] of declaredIndexes) {
|
|
120
|
-
if (!actualIndexes.has(name)) {
|
|
121
|
-
// Generate proper index DDL using AST stringifier
|
|
122
|
-
diff.indexesToCreate.push(createIndexToString(declaredIndex.indexStmt));
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
for (const [name] of actualIndexes) {
|
|
127
|
-
if (!declaredIndexes.has(name)) {
|
|
128
|
-
diff.indexesToDrop.push(name);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
return diff;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
function computeTableAlterDiff(
|
|
136
|
-
declaredTable: AST.DeclaredTable,
|
|
137
|
-
actualTable: { name: string; columns: Array<{ name: string }> }
|
|
138
|
-
): TableAlterDiff {
|
|
139
|
-
const diff: TableAlterDiff = {
|
|
140
|
-
tableName: declaredTable.tableStmt.table.name,
|
|
141
|
-
columnsToAdd: [],
|
|
142
|
-
columnsToDrop: []
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
const declaredColumns = new Set(
|
|
146
|
-
declaredTable.tableStmt.columns.map(c => c.name.toLowerCase())
|
|
147
|
-
);
|
|
148
|
-
const actualColumns = new Set(
|
|
149
|
-
actualTable.columns.map(c => c.name.toLowerCase())
|
|
150
|
-
);
|
|
151
|
-
|
|
152
|
-
// Find columns to add
|
|
153
|
-
for (const col of declaredTable.tableStmt.columns) {
|
|
154
|
-
if (!actualColumns.has(col.name.toLowerCase())) {
|
|
155
|
-
diff.columnsToAdd.push(col.name);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// Find columns to drop
|
|
160
|
-
for (const col of actualTable.columns) {
|
|
161
|
-
if (!declaredColumns.has(col.name.toLowerCase())) {
|
|
162
|
-
diff.columnsToDrop.push(col.name);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
return diff;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Serializes a schema diff to JSON string
|
|
171
|
-
*/
|
|
172
|
-
export function serializeSchemaDiff(diff: SchemaDiff): string {
|
|
173
|
-
return JSON.stringify(diff, null, 2);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Generates migration DDL statements from a schema diff
|
|
178
|
-
*/
|
|
179
|
-
export function generateMigrationDDL(diff: SchemaDiff, schemaName?: string): string[] {
|
|
180
|
-
const statements: string[] = [];
|
|
181
|
-
const schemaPrefix = (schemaName && schemaName !== 'main') ? `${schemaName}.` : '';
|
|
182
|
-
|
|
183
|
-
// Drop items first (reverse order)
|
|
184
|
-
for (const tableName of diff.tablesToDrop) {
|
|
185
|
-
statements.push(`DROP TABLE IF EXISTS ${schemaPrefix}${tableName}`);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
for (const viewName of diff.viewsToDrop) {
|
|
189
|
-
statements.push(`DROP VIEW IF EXISTS ${schemaPrefix}${viewName}`);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
for (const indexName of diff.indexesToDrop) {
|
|
193
|
-
statements.push(`DROP INDEX IF EXISTS ${schemaPrefix}${indexName}`);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
// Create new items
|
|
197
|
-
statements.push(...diff.tablesToCreate);
|
|
198
|
-
statements.push(...diff.viewsToCreate);
|
|
199
|
-
statements.push(...diff.indexesToCreate);
|
|
200
|
-
|
|
201
|
-
// Alter existing tables
|
|
202
|
-
for (const alter of diff.tablesToAlter) {
|
|
203
|
-
for (const colName of alter.columnsToAdd) {
|
|
204
|
-
statements.push(`ALTER TABLE ${schemaPrefix}${alter.tableName} ADD COLUMN ${colName}`);
|
|
205
|
-
}
|
|
206
|
-
for (const colName of alter.columnsToDrop) {
|
|
207
|
-
statements.push(`ALTER TABLE ${schemaPrefix}${alter.tableName} DROP COLUMN ${colName}`);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
return statements;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type * as AST from '../parser/ast.js';
|
|
2
|
-
import { generateDeclaredDDL } from './catalog.js';
|
|
3
|
-
import { fnv1aHash, toBase64Url } from '../util/hash.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Computes a hash of a declared schema for versioning
|
|
7
|
-
*/
|
|
8
|
-
export function computeSchemaHash(declaredSchema: AST.DeclareSchemaStmt): string {
|
|
9
|
-
// Generate canonical DDL representation
|
|
10
|
-
const ddlStatements = generateDeclaredDDL(declaredSchema);
|
|
11
|
-
const canonicalText = ddlStatements.join('\n');
|
|
12
|
-
|
|
13
|
-
// Compute hash using FNV-1a algorithm and encode as base64url
|
|
14
|
-
const hashBytes = fnv1aHash(canonicalText);
|
|
15
|
-
return toBase64Url(hashBytes);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Computes a short hash (first 8 characters) for display
|
|
20
|
-
*/
|
|
21
|
-
export function computeShortSchemaHash(declaredSchema: AST.DeclareSchemaStmt): string {
|
|
22
|
-
const fullHash = computeSchemaHash(declaredSchema);
|
|
23
|
-
return fullHash.substring(0, 8);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
package/src/schema/schema.ts
DELETED
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
import type { TableSchema } from './table.js';
|
|
2
|
-
import type { FunctionSchema } from './function.js';
|
|
3
|
-
import { getFunctionKey } from './function.js';
|
|
4
|
-
import type { ViewSchema } from './view.js';
|
|
5
|
-
import { quereusError, QuereusError } from '../common/errors.js';
|
|
6
|
-
import { createLogger } from '../common/logger.js';
|
|
7
|
-
import type { IntegrityAssertionSchema } from './assertion.js';
|
|
8
|
-
|
|
9
|
-
const log = createLogger('schema:schema');
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Represents a single database schema (e.g., "main", "temp").
|
|
13
|
-
* Contains collections of tables, functions, etc. defined within that schema.
|
|
14
|
-
*/
|
|
15
|
-
export class Schema {
|
|
16
|
-
public readonly name: string;
|
|
17
|
-
private tables: Map<string, TableSchema> = new Map();
|
|
18
|
-
private functions: Map<string, FunctionSchema> = new Map();
|
|
19
|
-
private views: Map<string, ViewSchema> = new Map();
|
|
20
|
-
private assertions: Map<string, IntegrityAssertionSchema> = new Map();
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Creates a new schema instance
|
|
24
|
-
*
|
|
25
|
-
* @param name The schema name (e.g. "main", "temp")
|
|
26
|
-
*/
|
|
27
|
-
constructor(name: string) {
|
|
28
|
-
this.name = name;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Retrieves a table schema definition
|
|
33
|
-
*
|
|
34
|
-
* @param tableName The name of the table (case-insensitive)
|
|
35
|
-
* @returns The table schema or undefined if not found
|
|
36
|
-
*/
|
|
37
|
-
getTable(tableName: string): TableSchema | undefined {
|
|
38
|
-
return this.tables.get(tableName.toLowerCase());
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Adds or replaces a table definition in the schema
|
|
43
|
-
*
|
|
44
|
-
* @param table The table schema object
|
|
45
|
-
* @throws QuereusError if a view with the same name exists
|
|
46
|
-
*/
|
|
47
|
-
addTable(table: TableSchema): void {
|
|
48
|
-
// Ensure no view conflict
|
|
49
|
-
if (this.views.has(table.name.toLowerCase())) {
|
|
50
|
-
throw new QuereusError(`Schema '${this.name}': Cannot add table '${table.name}', a view with the same name already exists.`);
|
|
51
|
-
}
|
|
52
|
-
this.tables.set(table.name.toLowerCase(), table);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Returns an iterator over all tables in the schema
|
|
57
|
-
*
|
|
58
|
-
* @returns Iterator of table schemas
|
|
59
|
-
*/
|
|
60
|
-
getAllTables(): IterableIterator<TableSchema> {
|
|
61
|
-
return this.tables.values();
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Removes a table definition from the schema
|
|
66
|
-
*
|
|
67
|
-
* @param tableName The name of the table to remove
|
|
68
|
-
* @returns true if found and removed, false otherwise
|
|
69
|
-
*/
|
|
70
|
-
removeTable(tableName: string): boolean {
|
|
71
|
-
const key = tableName.toLowerCase();
|
|
72
|
-
const exists = this.tables.has(key);
|
|
73
|
-
if (exists) {
|
|
74
|
-
this.tables.delete(key);
|
|
75
|
-
}
|
|
76
|
-
return exists;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Clears all tables (does not call VTable disconnect/destroy)
|
|
81
|
-
*/
|
|
82
|
-
clearTables(): void {
|
|
83
|
-
this.tables.clear();
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Adds or replaces a view definition in the schema
|
|
88
|
-
*
|
|
89
|
-
* @param view The view schema to add
|
|
90
|
-
* @throws Error if view's schema name doesn't match or a table with same name exists
|
|
91
|
-
*/
|
|
92
|
-
addView(view: ViewSchema): void {
|
|
93
|
-
if (view.schemaName !== this.name) {
|
|
94
|
-
quereusError(`View ${view.name} has wrong schema name ${view.schemaName}, expected ${this.name}`);
|
|
95
|
-
}
|
|
96
|
-
if (this.tables.has(view.name.toLowerCase())) {
|
|
97
|
-
throw new QuereusError(`Schema '${this.name}': Cannot add view '${view.name}', a table with the same name already exists.`);
|
|
98
|
-
}
|
|
99
|
-
this.views.set(view.name.toLowerCase(), view);
|
|
100
|
-
log(`Added/Updated view '%s' in schema '%s'`, view.name, this.name);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Gets a view definition by name (case-insensitive)
|
|
105
|
-
*
|
|
106
|
-
* @param viewName The view name to look up
|
|
107
|
-
* @returns The view schema or undefined if not found
|
|
108
|
-
*/
|
|
109
|
-
getView(viewName: string): ViewSchema | undefined {
|
|
110
|
-
return this.views.get(viewName.toLowerCase());
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Returns an iterator over all views in the schema
|
|
115
|
-
*
|
|
116
|
-
* @returns Iterator of view schemas
|
|
117
|
-
*/
|
|
118
|
-
getAllViews(): IterableIterator<ViewSchema> {
|
|
119
|
-
return this.views.values();
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Removes a view definition from the schema
|
|
124
|
-
*
|
|
125
|
-
* @param viewName The name of the view to remove
|
|
126
|
-
* @returns true if found and removed, false otherwise
|
|
127
|
-
*/
|
|
128
|
-
removeView(viewName: string): boolean {
|
|
129
|
-
const key = viewName.toLowerCase();
|
|
130
|
-
const exists = this.views.has(key);
|
|
131
|
-
if (exists) {
|
|
132
|
-
log(`Removed view '%s' from schema '%s'`, viewName, this.name);
|
|
133
|
-
this.views.delete(key);
|
|
134
|
-
}
|
|
135
|
-
return exists;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Clears all views
|
|
140
|
-
*/
|
|
141
|
-
clearViews(): void {
|
|
142
|
-
this.views.clear();
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/** Assertions */
|
|
146
|
-
addAssertion(assertion: IntegrityAssertionSchema): void {
|
|
147
|
-
this.assertions.set(assertion.name.toLowerCase(), assertion);
|
|
148
|
-
log(`Added/Updated assertion '%s' in schema '%s'`, assertion.name, this.name);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
getAssertion(name: string): IntegrityAssertionSchema | undefined {
|
|
152
|
-
return this.assertions.get(name.toLowerCase());
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
getAllAssertions(): IterableIterator<IntegrityAssertionSchema> {
|
|
156
|
-
return this.assertions.values();
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
removeAssertion(name: string): boolean {
|
|
160
|
-
const key = name.toLowerCase();
|
|
161
|
-
const existed = this.assertions.delete(key);
|
|
162
|
-
if (existed) log(`Removed assertion '%s' from schema '%s'`, name, this.name);
|
|
163
|
-
return existed;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Adds or replaces a function definition in the schema
|
|
168
|
-
* Calls the destructor for any existing function being replaced
|
|
169
|
-
*
|
|
170
|
-
* @param func The function schema to add
|
|
171
|
-
*/
|
|
172
|
-
addFunction(func: FunctionSchema): void {
|
|
173
|
-
const key = getFunctionKey(func.name, func.numArgs);
|
|
174
|
-
this.functions.set(key, func);
|
|
175
|
-
log(`Added/Updated function '%s' in schema '%s'`, `${func.name}/${func.numArgs}`, this.name);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Gets a function definition by name and argument count (case-insensitive name)
|
|
180
|
-
* First checks for exact argument count match, then tries variable args (-1)
|
|
181
|
-
*
|
|
182
|
-
* @param name The function name
|
|
183
|
-
* @param numArgs The number of arguments
|
|
184
|
-
* @returns The function schema or undefined if not found
|
|
185
|
-
*/
|
|
186
|
-
getFunction(name: string, numArgs: number): FunctionSchema | undefined {
|
|
187
|
-
const key = getFunctionKey(name, numArgs);
|
|
188
|
-
const varArgsKey = getFunctionKey(name, -1);
|
|
189
|
-
return this.functions.get(key) ?? this.functions.get(varArgsKey);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* @internal Returns iterator over managed functions
|
|
194
|
-
*/
|
|
195
|
-
_getAllFunctions(): IterableIterator<FunctionSchema> {
|
|
196
|
-
return this.functions.values();
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Removes a function definition, calling its destructor if needed
|
|
201
|
-
*
|
|
202
|
-
* @param name The function name
|
|
203
|
-
* @param numArgs The number of arguments
|
|
204
|
-
* @returns true if found and removed, false otherwise
|
|
205
|
-
*/
|
|
206
|
-
removeFunction(name: string, numArgs: number): boolean {
|
|
207
|
-
const key = getFunctionKey(name, numArgs);
|
|
208
|
-
const func = this.functions.get(key);
|
|
209
|
-
if (func) {
|
|
210
|
-
log(`Removed function '%s' from schema '%s'`, `${name}/${numArgs}`, this.name);
|
|
211
|
-
return this.functions.delete(key);
|
|
212
|
-
}
|
|
213
|
-
return false;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* Clears all functions, calling destructors if needed
|
|
218
|
-
*/
|
|
219
|
-
clearFunctions(): void {
|
|
220
|
-
this.functions.clear();
|
|
221
|
-
}
|
|
222
|
-
}
|