@quereus/quereus 0.7.3 → 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
package/src/schema/table.ts
DELETED
|
@@ -1,409 +0,0 @@
|
|
|
1
|
-
import type { ColumnSchema } from './column.js';
|
|
2
|
-
import type { AnyVirtualTableModule } from '../vtab/module.js';
|
|
3
|
-
import { MemoryTableModule } from '../vtab/memory/module.js';
|
|
4
|
-
import type { Expression } from '../parser/ast.js';
|
|
5
|
-
import { type ColumnDef, type TableConstraint } from '../parser/ast.js';
|
|
6
|
-
import { RowOp, SqlDataType, StatusCode, type SqlValue } from '../common/types.js';
|
|
7
|
-
import type * as AST from '../parser/ast.js';
|
|
8
|
-
import { quereusError, QuereusError } from '../common/errors.js';
|
|
9
|
-
import { createLogger } from '../common/logger.js';
|
|
10
|
-
import { inferType } from '../types/registry.js';
|
|
11
|
-
|
|
12
|
-
const log = createLogger('schema:table');
|
|
13
|
-
const warnLog = log.extend('warn');
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Represents the schema definition of a table (real or virtual).
|
|
17
|
-
*/
|
|
18
|
-
export interface TableSchema {
|
|
19
|
-
/** Table name */
|
|
20
|
-
name: string;
|
|
21
|
-
/** Schema name (e.g., "main", "temp") */
|
|
22
|
-
schemaName: string;
|
|
23
|
-
/** Ordered list of column definitions */
|
|
24
|
-
columns: ReadonlyArray<ColumnSchema>;
|
|
25
|
-
/** Map from column name (lowercase) to column index */
|
|
26
|
-
columnIndexMap: ReadonlyMap<string, number>;
|
|
27
|
-
/** Definition of the primary key, including order and direction */
|
|
28
|
-
primaryKeyDefinition: ReadonlyArray<PrimaryKeyColumnDefinition>;
|
|
29
|
-
/** CHECK constraints defined on the table or its columns */
|
|
30
|
-
checkConstraints: ReadonlyArray<RowConstraintSchema>;
|
|
31
|
-
/** Reference to the registered module */
|
|
32
|
-
vtabModule: AnyVirtualTableModule;
|
|
33
|
-
/** If virtual, aux data passed during module registration */
|
|
34
|
-
vtabAuxData?: unknown;
|
|
35
|
-
/** If virtual, the arguments passed in CREATE VIRTUAL TABLE */
|
|
36
|
-
vtabArgs?: Record<string, SqlValue>;
|
|
37
|
-
/** If virtual, the name the module was registered with */
|
|
38
|
-
vtabModuleName: string;
|
|
39
|
-
/** Whether the table is a temporary table */
|
|
40
|
-
isTemporary?: boolean;
|
|
41
|
-
/** Whether the table is a view */
|
|
42
|
-
isView: boolean;
|
|
43
|
-
/** Whether the table is a subquery source */
|
|
44
|
-
subqueryAST?: AST.SelectStmt;
|
|
45
|
-
/** If virtual, the view definition */
|
|
46
|
-
viewDefinition?: AST.SelectStmt;
|
|
47
|
-
/** Table-level constraints */
|
|
48
|
-
tableConstraints?: readonly TableConstraint[];
|
|
49
|
-
/** Definitions of secondary indexes (relevant for planning) */
|
|
50
|
-
indexes?: ReadonlyArray<IndexSchema>;
|
|
51
|
-
/** Estimated number of rows in the table (for query planning) */
|
|
52
|
-
readonly estimatedRows?: number;
|
|
53
|
-
/** Whether the table is read-only */
|
|
54
|
-
isReadOnly?: boolean; // default false
|
|
55
|
-
/** Mutation context variables for this table */
|
|
56
|
-
mutationContext?: ReadonlyArray<MutationContextDefinition>;
|
|
57
|
-
/** Foreign key constraints (parsed but not yet enforced by engine) */
|
|
58
|
-
// foreignKeys?: ReadonlyArray<ForeignKeyConstraintSchema>;
|
|
59
|
-
/** Unique constraints (beyond primary key) */
|
|
60
|
-
// uniqueConstraints?: ReadonlyArray<ConstraintSchema>;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Builds a map from column names to their indices in the columns array
|
|
65
|
-
*
|
|
66
|
-
* @param columns Array of column schemas
|
|
67
|
-
* @returns Map of lowercase column names to their indices
|
|
68
|
-
*/
|
|
69
|
-
export function buildColumnIndexMap(columns: ReadonlyArray<ColumnSchema>): Map<string, number> {
|
|
70
|
-
const map = new Map<string, number>();
|
|
71
|
-
columns.forEach((col, index) => {
|
|
72
|
-
map.set(col.name.toLowerCase(), index);
|
|
73
|
-
});
|
|
74
|
-
return map;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Extracts just the column indices from a primary key definition
|
|
79
|
-
*
|
|
80
|
-
* @param pkDef Primary key definition array
|
|
81
|
-
* @returns Array of column indices that form the primary key
|
|
82
|
-
*/
|
|
83
|
-
export function getPrimaryKeyIndices(pkDef: ReadonlyArray<PrimaryKeyColumnDefinition>): ReadonlyArray<number> {
|
|
84
|
-
return Object.freeze(pkDef.map(def => def.index));
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Converts a parsed ColumnDef AST node into a runtime ColumnSchema object
|
|
89
|
-
*
|
|
90
|
-
* @param def Column definition AST node
|
|
91
|
-
* @param defaultNotNull Whether columns should be NOT NULL by default (Third Manifesto approach)
|
|
92
|
-
* @returns A runtime ColumnSchema object
|
|
93
|
-
*/
|
|
94
|
-
export function columnDefToSchema(def: ColumnDef, defaultNotNull: boolean = true): ColumnSchema {
|
|
95
|
-
// Infer logical type from the declared type name
|
|
96
|
-
const logicalType = inferType(def.dataType);
|
|
97
|
-
|
|
98
|
-
const schema: Partial<ColumnSchema> & { name: string } = {
|
|
99
|
-
name: def.name,
|
|
100
|
-
logicalType: logicalType,
|
|
101
|
-
notNull: defaultNotNull, // Default based on Third Manifesto principles
|
|
102
|
-
primaryKey: false,
|
|
103
|
-
pkOrder: 0,
|
|
104
|
-
defaultValue: null,
|
|
105
|
-
collation: 'BINARY',
|
|
106
|
-
generated: false,
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
for (const constraint of def.constraints ?? []) {
|
|
110
|
-
switch (constraint.type) {
|
|
111
|
-
case 'primaryKey':
|
|
112
|
-
schema.primaryKey = true;
|
|
113
|
-
schema.pkDirection = constraint.direction;
|
|
114
|
-
break;
|
|
115
|
-
case 'notNull':
|
|
116
|
-
schema.notNull = true;
|
|
117
|
-
break;
|
|
118
|
-
case 'null':
|
|
119
|
-
schema.notNull = false;
|
|
120
|
-
break;
|
|
121
|
-
case 'unique':
|
|
122
|
-
break;
|
|
123
|
-
case 'default':
|
|
124
|
-
schema.defaultValue = constraint.expr;
|
|
125
|
-
break;
|
|
126
|
-
case 'collate':
|
|
127
|
-
schema.collation = constraint.collation;
|
|
128
|
-
// Validate collation compatibility with type
|
|
129
|
-
if (constraint.collation && logicalType.supportedCollations &&
|
|
130
|
-
!logicalType.supportedCollations.includes(constraint.collation)) {
|
|
131
|
-
throw new QuereusError(
|
|
132
|
-
`Collation '${constraint.collation}' is not supported for type '${logicalType.name}' on column '${def.name}'`,
|
|
133
|
-
StatusCode.ERROR
|
|
134
|
-
);
|
|
135
|
-
}
|
|
136
|
-
break;
|
|
137
|
-
case 'generated':
|
|
138
|
-
schema.generated = true;
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// PK implies NOT NULL (always, regardless of default)
|
|
144
|
-
if (schema.primaryKey) {
|
|
145
|
-
schema.notNull = true;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// If no explicit nullability constraint and default is nullable,
|
|
149
|
-
// we need to check if there's an explicit NULL declaration
|
|
150
|
-
// Note: SQL doesn't have explicit NULL constraints in standard syntax,
|
|
151
|
-
// so this primarily affects the default behavior
|
|
152
|
-
|
|
153
|
-
// Assign a default pkOrder if it's a PK but order isn't specified elsewhere
|
|
154
|
-
if (schema.primaryKey && schema.pkOrder === 0) {
|
|
155
|
-
schema.pkOrder = 1;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
return schema as ColumnSchema;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Mutation context variable definition
|
|
163
|
-
*/
|
|
164
|
-
export interface MutationContextDefinition {
|
|
165
|
-
/** Variable name */
|
|
166
|
-
name: string;
|
|
167
|
-
/** Logical type of the variable */
|
|
168
|
-
logicalType: import('../types/logical-type.js').LogicalType;
|
|
169
|
-
/** Whether the variable is NOT NULL */
|
|
170
|
-
notNull: boolean;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Converts AST mutation context variable to schema definition
|
|
175
|
-
*
|
|
176
|
-
* @param varDef AST mutation context variable definition
|
|
177
|
-
* @param defaultNotNull Whether variables should be NOT NULL by default
|
|
178
|
-
* @returns Mutation context definition schema object
|
|
179
|
-
*/
|
|
180
|
-
export function mutationContextVarToSchema(varDef: AST.MutationContextVar, defaultNotNull: boolean = true): MutationContextDefinition {
|
|
181
|
-
return {
|
|
182
|
-
name: varDef.name,
|
|
183
|
-
logicalType: inferType(varDef.dataType),
|
|
184
|
-
notNull: varDef.notNull !== undefined ? varDef.notNull : defaultNotNull,
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Defines a column in an index
|
|
190
|
-
*/
|
|
191
|
-
export interface IndexColumnSchema {
|
|
192
|
-
/** Column index in TableSchema.columns */
|
|
193
|
-
index: number;
|
|
194
|
-
/** Whether the index should sort in descending order */
|
|
195
|
-
desc?: boolean; // default false
|
|
196
|
-
/** Optional collation sequence for the column */
|
|
197
|
-
collation?: string;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Represents an index definition
|
|
202
|
-
*/
|
|
203
|
-
export interface IndexSchema {
|
|
204
|
-
/** Index name */
|
|
205
|
-
name: string;
|
|
206
|
-
/** Columns in the index */
|
|
207
|
-
columns: ReadonlyArray<IndexColumnSchema>;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Creates a basic TableSchema with minimal configuration
|
|
212
|
-
*
|
|
213
|
-
* @param name Table name
|
|
214
|
-
* @param columns Array of column name and type objects
|
|
215
|
-
* @param pkColNames Optional array of primary key column names
|
|
216
|
-
* @param defaultNotNull Whether columns should be NOT NULL by default (defaults to true for Third Manifesto compliance)
|
|
217
|
-
* @returns A frozen TableSchema object
|
|
218
|
-
*/
|
|
219
|
-
export function createBasicSchema(name: string, columns: { name: string, type: string }[], pkColNames?: string[], defaultNotNull: boolean = true): Readonly<TableSchema> {
|
|
220
|
-
const columnSchemas = columns.map(c => columnDefToSchema({
|
|
221
|
-
name: c.name,
|
|
222
|
-
dataType: c.type,
|
|
223
|
-
constraints: []
|
|
224
|
-
}, defaultNotNull));
|
|
225
|
-
const columnIndexMap = buildColumnIndexMap(columnSchemas);
|
|
226
|
-
const pkDef = pkColNames
|
|
227
|
-
? pkColNames.map(pkName => {
|
|
228
|
-
const idx = columnIndexMap.get(pkName.toLowerCase());
|
|
229
|
-
if (idx === undefined) quereusError(`PK column ${pkName} not found`);
|
|
230
|
-
return { index: idx, desc: false };
|
|
231
|
-
})
|
|
232
|
-
: [];
|
|
233
|
-
|
|
234
|
-
const defaultMemoryModule = new MemoryTableModule();
|
|
235
|
-
|
|
236
|
-
return Object.freeze({
|
|
237
|
-
name: name,
|
|
238
|
-
schemaName: 'main',
|
|
239
|
-
columns: columnSchemas,
|
|
240
|
-
columnIndexMap: columnIndexMap,
|
|
241
|
-
primaryKeyDefinition: pkDef,
|
|
242
|
-
checkConstraints: [] as RowConstraintSchema[],
|
|
243
|
-
indexes: [],
|
|
244
|
-
vtabModule: defaultMemoryModule,
|
|
245
|
-
vtabAuxData: null,
|
|
246
|
-
vtabArgs: {},
|
|
247
|
-
vtabModuleName: 'memory',
|
|
248
|
-
isTemporary: false,
|
|
249
|
-
isView: false,
|
|
250
|
-
subqueryAST: undefined,
|
|
251
|
-
viewDefinition: undefined,
|
|
252
|
-
tableConstraints: [],
|
|
253
|
-
primaryKey: pkDef.map(def => columnSchemas[def.index].name),
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
/** Bitmask for row operations */
|
|
258
|
-
export const enum RowOpFlag {
|
|
259
|
-
INSERT = 1,
|
|
260
|
-
UPDATE = 2,
|
|
261
|
-
DELETE = 4
|
|
262
|
-
}
|
|
263
|
-
export type RowOpMask = RowOpFlag;
|
|
264
|
-
export const DEFAULT_ROWOP_MASK = RowOpFlag.INSERT | RowOpFlag.UPDATE;
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* Converts an array of row operations to a bitmask
|
|
268
|
-
*
|
|
269
|
-
* @param list Optional array of operation types
|
|
270
|
-
* @returns A bitmask representing the operations
|
|
271
|
-
*/
|
|
272
|
-
export function opsToMask(list?: RowOp[]): RowOpMask {
|
|
273
|
-
if (!list || list.length === 0) {
|
|
274
|
-
return DEFAULT_ROWOP_MASK;
|
|
275
|
-
}
|
|
276
|
-
let mask: RowOpMask = 0 as RowOpMask;
|
|
277
|
-
list.forEach(op => {
|
|
278
|
-
switch (op) {
|
|
279
|
-
case 'insert': mask |= RowOpFlag.INSERT; break;
|
|
280
|
-
case 'update': mask |= RowOpFlag.UPDATE; break;
|
|
281
|
-
case 'delete': mask |= RowOpFlag.DELETE; break;
|
|
282
|
-
}
|
|
283
|
-
});
|
|
284
|
-
return mask;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Represents a CHECK constraint with operation flags
|
|
289
|
-
*/
|
|
290
|
-
export interface RowConstraintSchema {
|
|
291
|
-
/** Optional constraint name */
|
|
292
|
-
name?: string;
|
|
293
|
-
/** Constraint expression */
|
|
294
|
-
expr: Expression;
|
|
295
|
-
/** Bitmask of operations the constraint applies to */
|
|
296
|
-
operations: RowOpMask;
|
|
297
|
-
/** Whether the constraint is deferrable */
|
|
298
|
-
deferrable?: boolean;
|
|
299
|
-
/** Whether the constraint is initially deferred */
|
|
300
|
-
initiallyDeferred?: boolean;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
export interface PrimaryKeyColumnDefinition {
|
|
304
|
-
index: number;
|
|
305
|
-
desc?: boolean; // default false
|
|
306
|
-
autoIncrement?: boolean;
|
|
307
|
-
collation?: string;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
* Helper to parse primary key from AST column and table constraints.
|
|
312
|
-
* @param columns Parsed column definitions from AST.
|
|
313
|
-
* @param constraints Parsed table constraints from AST.
|
|
314
|
-
* @returns A ReadonlyArray defining the primary key columns (index and direction), or undefined.
|
|
315
|
-
* @throws QuereusError if multiple primary keys are defined or PK column not found.
|
|
316
|
-
*/
|
|
317
|
-
export function findPKDefinition(
|
|
318
|
-
columns: ReadonlyArray<ColumnSchema>,
|
|
319
|
-
constraints: ReadonlyArray<AST.TableConstraint> | undefined,
|
|
320
|
-
): ReadonlyArray<PrimaryKeyColumnDefinition> {
|
|
321
|
-
const columnPK = findColumnPKDefinition(columns);
|
|
322
|
-
const constraintPK = findConstraintPKDefinition(columns, constraints);
|
|
323
|
-
|
|
324
|
-
if (constraintPK && columnPK) {
|
|
325
|
-
throw new QuereusError("Cannot define both table-level and column-level PRIMARY KEYs", StatusCode.CONSTRAINT);
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
let finalPkDef = constraintPK ?? columnPK;
|
|
329
|
-
|
|
330
|
-
if (!finalPkDef) {
|
|
331
|
-
// Quereus-specific behavior: Include all columns in the primary key when no explicit primary key is defined
|
|
332
|
-
// This differs from SQLite which would use the first INTEGER column or an implicit rowid
|
|
333
|
-
// This design choice ensures predictable behavior and avoids potential confusion with SQLite's implicit rules
|
|
334
|
-
warnLog(`No PRIMARY KEY explicitly defined. Including all columns in primary key.`);
|
|
335
|
-
finalPkDef = Object.freeze(
|
|
336
|
-
columns.map((col, index) => ({
|
|
337
|
-
index,
|
|
338
|
-
desc: false,
|
|
339
|
-
collation: col.collation || 'BINARY'
|
|
340
|
-
}))
|
|
341
|
-
);
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
// Don't require NOT NULL, we want to be more flexible
|
|
345
|
-
|
|
346
|
-
return finalPkDef as ReadonlyArray<PrimaryKeyColumnDefinition>;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
function findConstraintPKDefinition(
|
|
350
|
-
columns: readonly ColumnSchema[],
|
|
351
|
-
constraints: readonly TableConstraint[] | undefined
|
|
352
|
-
): PrimaryKeyColumnDefinition[] | undefined {
|
|
353
|
-
const colMap = buildColumnIndexMap(columns);
|
|
354
|
-
let constraintPKs: PrimaryKeyColumnDefinition[] | undefined;
|
|
355
|
-
|
|
356
|
-
if (constraints) {
|
|
357
|
-
for (const constraint of constraints) {
|
|
358
|
-
if (constraint.type === 'primaryKey') {
|
|
359
|
-
if (constraintPKs) {
|
|
360
|
-
throw new QuereusError("Multiple table-level PRIMARY KEY constraints defined", StatusCode.CONSTRAINT);
|
|
361
|
-
}
|
|
362
|
-
if (!constraint.columns || constraint.columns.length === 0) {
|
|
363
|
-
// An empty column list is fine; means table can have 0-1 rows
|
|
364
|
-
constraintPKs = [];
|
|
365
|
-
} else {
|
|
366
|
-
constraintPKs = constraint.columns.map(colInfo => {
|
|
367
|
-
const colIndex = colMap.get(colInfo.name.toLowerCase());
|
|
368
|
-
if (colIndex === undefined) {
|
|
369
|
-
throw new QuereusError(`PRIMARY KEY column '${colInfo.name}' not found in table definition`, StatusCode.ERROR);
|
|
370
|
-
}
|
|
371
|
-
return {
|
|
372
|
-
index: colIndex,
|
|
373
|
-
desc: colInfo.direction === 'desc',
|
|
374
|
-
collation: columns[colIndex].collation || 'BINARY'
|
|
375
|
-
};
|
|
376
|
-
});
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
return constraintPKs;
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
function findColumnPKDefinition(columns: ReadonlyArray<ColumnSchema>): ReadonlyArray<PrimaryKeyColumnDefinition> | undefined {
|
|
385
|
-
const pkCols = columns
|
|
386
|
-
.map((col, index) => ({ ...col, originalIndex: index }))
|
|
387
|
-
.filter(col => col.primaryKey)
|
|
388
|
-
.sort((a, b) => a.pkOrder - b.pkOrder);
|
|
389
|
-
|
|
390
|
-
if (pkCols.length > 1 && pkCols.some(col => col.pkOrder === 0)) {
|
|
391
|
-
warnLog("Multiple column-level PRIMARY KEYs defined without explicit pkOrder; consider a table-level PRIMARY KEY for composite keys.");
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
if (pkCols.length > 1) {
|
|
395
|
-
warnLog('Multiple columns defined as PRIMARY KEY at column level. Forming a composite key.');
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
if (pkCols.length === 0) {
|
|
399
|
-
return undefined;
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
return Object.freeze(pkCols.map(col => ({
|
|
403
|
-
index: col.originalIndex,
|
|
404
|
-
desc: col.logicalType.name === 'INTEGER' && col.pkDirection === 'desc',
|
|
405
|
-
autoIncrement: col.logicalType.name === 'INTEGER',
|
|
406
|
-
collation: col.collation || 'BINARY'
|
|
407
|
-
})));
|
|
408
|
-
}
|
|
409
|
-
|
package/src/schema/view.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type * as AST from '../parser/ast.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Represents the schema definition of a database view.
|
|
5
|
-
* Views are stored SELECT statements that act like virtual tables.
|
|
6
|
-
*/
|
|
7
|
-
export interface ViewSchema {
|
|
8
|
-
/** The name of the view */
|
|
9
|
-
name: string;
|
|
10
|
-
/** The name of the schema this view belongs to (e.g., 'main') */
|
|
11
|
-
schemaName: string;
|
|
12
|
-
/** The original SQL text used to create the view */
|
|
13
|
-
sql: string;
|
|
14
|
-
/** The parsed SELECT statement AST that defines the view's logic */
|
|
15
|
-
selectAst: AST.SelectStmt;
|
|
16
|
-
/** Columns explicitly defined in CREATE VIEW (e.g., CREATE VIEW v(a,b) AS...) */
|
|
17
|
-
columns?: ReadonlyArray<string>; // Optional list of explicitly named columns
|
|
18
|
-
// Add any other relevant metadata later if needed
|
|
19
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import type { ScalarType } from '../common/datatype.js';
|
|
2
|
-
import type { SqlValue } from '../common/types.js';
|
|
3
|
-
|
|
4
|
-
export interface WindowFunctionSchema {
|
|
5
|
-
name: string; // 'ROW_NUMBER', 'RANK', 'SUM', etc.
|
|
6
|
-
argCount: number | 'variadic'; // Number of arguments, or 'variadic' for any
|
|
7
|
-
returnType: ScalarType; // Return type
|
|
8
|
-
requiresOrderBy: boolean; // Whether ORDER BY is required
|
|
9
|
-
kind: 'ranking' | 'aggregate' | 'value' | 'navigation';
|
|
10
|
-
|
|
11
|
-
// Optional custom step/final hooks for aggregate-style windows
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
-
step?: (state: any, value: SqlValue) => any;
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
|
-
final?: (state: any, rowCount: number) => SqlValue;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// Global registry for window functions
|
|
19
|
-
const windowRegistry = new Map<string, WindowFunctionSchema>();
|
|
20
|
-
|
|
21
|
-
export function registerWindowFunction(schema: WindowFunctionSchema): void {
|
|
22
|
-
windowRegistry.set(schema.name.toLowerCase(), schema);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export function resolveWindowFunction(name: string): WindowFunctionSchema | undefined {
|
|
26
|
-
return windowRegistry.get(name.toLowerCase());
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function isWindowFunction(name: string): boolean {
|
|
30
|
-
return windowRegistry.has(name.toLowerCase());
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function getAllWindowFunctions(): WindowFunctionSchema[] {
|
|
34
|
-
return Array.from(windowRegistry.values());
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Helper to create ranking function state
|
|
38
|
-
export function createRankingState() {
|
|
39
|
-
return {
|
|
40
|
-
rowNumber: 0,
|
|
41
|
-
rank: 0,
|
|
42
|
-
denseRank: 0,
|
|
43
|
-
lastValues: null as SqlValue[] | null
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Helper for aggregate window function state
|
|
48
|
-
export function createAggregateState(schema: WindowFunctionSchema) {
|
|
49
|
-
if (schema.step && schema.final) {
|
|
50
|
-
return {
|
|
51
|
-
accumulator: null,
|
|
52
|
-
rowCount: 0
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
return null;
|
|
56
|
-
}
|