@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
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type * as AST from '../../parser/ast.js';
|
|
2
|
-
import type { Scope } from '../scopes/scope.js';
|
|
3
|
-
import { PhysicalProperties, VoidNode } from './plan-node.js';
|
|
4
|
-
import { PlanNodeType } from './plan-node-type.js';
|
|
5
|
-
import { astToString, expressionToString } from '../../util/ast-stringify.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Represents a CREATE INDEX statement in the logical query plan.
|
|
9
|
-
*/
|
|
10
|
-
export class CreateIndexNode extends VoidNode {
|
|
11
|
-
override readonly nodeType = PlanNodeType.CreateIndex;
|
|
12
|
-
|
|
13
|
-
constructor(
|
|
14
|
-
scope: Scope,
|
|
15
|
-
public readonly statementAst: AST.CreateIndexStmt,
|
|
16
|
-
) {
|
|
17
|
-
super(scope);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
override toString(): string {
|
|
21
|
-
const uniquePrefix = this.statementAst.isUnique ? 'UNIQUE ' : '';
|
|
22
|
-
return `CREATE ${uniquePrefix}INDEX ${this.statementAst.index.name} ON ${this.statementAst.table.name}`;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
override getLogicalAttributes(): Record<string, unknown> {
|
|
26
|
-
return {
|
|
27
|
-
index: this.statementAst.index.name,
|
|
28
|
-
table: this.statementAst.table.name,
|
|
29
|
-
schema: this.statementAst.table.schema,
|
|
30
|
-
isUnique: this.statementAst.isUnique,
|
|
31
|
-
ifNotExists: this.statementAst.ifNotExists,
|
|
32
|
-
columns: this.statementAst.columns.map(col => col.name || expressionToString(col.expr!)),
|
|
33
|
-
hasWhereClause: !!this.statementAst.where,
|
|
34
|
-
statement: astToString(this.statementAst)
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
override computePhysical(_children: readonly PhysicalProperties[]): Partial<PhysicalProperties> {
|
|
39
|
-
return { readonly: false };
|
|
40
|
-
}
|
|
41
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type * as AST from '../../parser/ast.js';
|
|
2
|
-
import type { Scope } from '../scopes/scope.js';
|
|
3
|
-
import { PhysicalProperties, VoidNode } from './plan-node.js';
|
|
4
|
-
import { PlanNodeType } from './plan-node-type.js';
|
|
5
|
-
import { astToString } from '../../util/ast-stringify.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Represents a CREATE TABLE statement in the logical query plan.
|
|
9
|
-
*/
|
|
10
|
-
export class CreateTableNode extends VoidNode {
|
|
11
|
-
override readonly nodeType = PlanNodeType.CreateTable;
|
|
12
|
-
|
|
13
|
-
constructor(
|
|
14
|
-
scope: Scope,
|
|
15
|
-
public readonly statementAst: AST.CreateTableStmt,
|
|
16
|
-
) {
|
|
17
|
-
super(scope);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
override toString(): string {
|
|
21
|
-
return `CREATE TABLE ${this.statementAst.table.name}`;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
override getLogicalAttributes(): Record<string, unknown> {
|
|
25
|
-
return {
|
|
26
|
-
table: this.statementAst.table.name,
|
|
27
|
-
schema: this.statementAst.table.schema,
|
|
28
|
-
statement: astToString(this.statementAst)
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
override computePhysical(_children: readonly PhysicalProperties[]): Partial<PhysicalProperties> {
|
|
33
|
-
return { readonly: false };
|
|
34
|
-
}
|
|
35
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type * as AST from '../../parser/ast.js';
|
|
2
|
-
import { PhysicalProperties, VoidNode } from './plan-node.js';
|
|
3
|
-
import { PlanNodeType } from './plan-node-type.js';
|
|
4
|
-
import type { Scope } from '../scopes/scope.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Plan node for CREATE VIEW statements.
|
|
8
|
-
* Creates a new view definition in the schema.
|
|
9
|
-
*/
|
|
10
|
-
export class CreateViewNode extends VoidNode {
|
|
11
|
-
readonly nodeType = PlanNodeType.CreateView;
|
|
12
|
-
|
|
13
|
-
constructor(
|
|
14
|
-
scope: Scope,
|
|
15
|
-
public readonly viewName: string,
|
|
16
|
-
public readonly schemaName: string,
|
|
17
|
-
public readonly ifNotExists: boolean,
|
|
18
|
-
public readonly columns: string[] | undefined,
|
|
19
|
-
public readonly selectStmt: AST.SelectStmt,
|
|
20
|
-
public readonly sql: string
|
|
21
|
-
) {
|
|
22
|
-
super(scope, 1); // Low cost for DDL operations
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
override toString(): string {
|
|
26
|
-
const ifNotExistsClause = this.ifNotExists ? 'IF NOT EXISTS ' : '';
|
|
27
|
-
const columnsClause = this.columns ? `(${this.columns.join(', ')})` : '';
|
|
28
|
-
return `CREATE VIEW ${ifNotExistsClause}${this.schemaName}.${this.viewName}${columnsClause}`;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
override getLogicalAttributes(): Record<string, unknown> {
|
|
32
|
-
return {
|
|
33
|
-
viewName: this.viewName,
|
|
34
|
-
schemaName: this.schemaName,
|
|
35
|
-
ifNotExists: this.ifNotExists,
|
|
36
|
-
columns: this.columns,
|
|
37
|
-
selectSql: this.sql
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
override computePhysical(_children: readonly PhysicalProperties[]): Partial<PhysicalProperties> {
|
|
42
|
-
return { readonly: false };
|
|
43
|
-
}
|
|
44
|
-
}
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { PlanNode, type UnaryRelationalNode, type RelationalPlanNode, type Attribute, type TableDescriptor, isRelationalNode } from './plan-node.js';
|
|
2
|
-
import type { RelationType, ScalarType } from '../../common/datatype.js';
|
|
3
|
-
import { PlanNodeType } from './plan-node-type.js';
|
|
4
|
-
import type { Scope } from '../scopes/scope.js';
|
|
5
|
-
import { Cached } from '../../util/cached.js';
|
|
6
|
-
import type { CTECapable } from '../framework/characteristics.js';
|
|
7
|
-
import { TEXT_TYPE } from '../../types/builtin-types.js';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Narrow contract that any node must satisfy to be placed in the CTE lookup map
|
|
11
|
-
* while planning. Both regular `CTENode`s and the internal placeholder used
|
|
12
|
-
* for the recursive working table satisfy this contract.
|
|
13
|
-
*/
|
|
14
|
-
export interface CTEScopeNode extends PlanNode {
|
|
15
|
-
/** Lower-cased CTE name */
|
|
16
|
-
readonly cteName: string;
|
|
17
|
-
|
|
18
|
-
/** Column metadata produced by this CTE when referenced */
|
|
19
|
-
getAttributes(): readonly Attribute[];
|
|
20
|
-
|
|
21
|
-
/** Relation type for the CTE output */
|
|
22
|
-
getType(): RelationType;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Common interface for all CTE nodes (regular and recursive)
|
|
27
|
-
*/
|
|
28
|
-
export interface CTEPlanNode extends UnaryRelationalNode {
|
|
29
|
-
readonly cteName: string;
|
|
30
|
-
readonly columns: string[] | undefined;
|
|
31
|
-
readonly materializationHint: 'materialized' | 'not_materialized' | undefined;
|
|
32
|
-
readonly isRecursive: boolean;
|
|
33
|
-
readonly tableDescriptor: TableDescriptor;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Plan node for Common Table Expressions (CTEs).
|
|
38
|
-
* This represents a single CTE definition within a WITH clause.
|
|
39
|
-
*/
|
|
40
|
-
export class CTENode extends PlanNode implements CTEPlanNode, CTEScopeNode, CTECapable {
|
|
41
|
-
readonly nodeType = PlanNodeType.CTE;
|
|
42
|
-
readonly tableDescriptor: TableDescriptor = {}; // Identity object for table context lookup
|
|
43
|
-
|
|
44
|
-
private attributesCache: Cached<Attribute[]>;
|
|
45
|
-
private typeCache: Cached<RelationType>;
|
|
46
|
-
|
|
47
|
-
constructor(
|
|
48
|
-
scope: Scope,
|
|
49
|
-
public readonly cteName: string,
|
|
50
|
-
public readonly columns: string[] | undefined,
|
|
51
|
-
public readonly source: RelationalPlanNode,
|
|
52
|
-
public readonly materializationHint: 'materialized' | 'not_materialized' | undefined,
|
|
53
|
-
public readonly isRecursive: boolean = false
|
|
54
|
-
) {
|
|
55
|
-
super(scope, source.getTotalCost() + 10); // Add small overhead for CTE materialization
|
|
56
|
-
this.attributesCache = new Cached(() => this.buildAttributes());
|
|
57
|
-
this.typeCache = new Cached(() => this.buildType());
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
private buildAttributes(): Attribute[] {
|
|
61
|
-
const queryAttributes = this.source.getAttributes();
|
|
62
|
-
const queryType = this.source.getType();
|
|
63
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
64
|
-
const columnNames = this.columns || queryType.columns.map((c: any) => c.name);
|
|
65
|
-
|
|
66
|
-
return columnNames.map((name: string) => {
|
|
67
|
-
const srcAttr = queryAttributes.find(a => a.name.toLowerCase() === name.toLowerCase());
|
|
68
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
69
|
-
let resolvedType: any = srcAttr?.type;
|
|
70
|
-
if (!resolvedType) {
|
|
71
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
|
-
const colMeta = queryType.columns.find((c: any) => c.name.toLowerCase() === name.toLowerCase());
|
|
73
|
-
resolvedType = colMeta?.type;
|
|
74
|
-
}
|
|
75
|
-
// Fallback: generic TEXT scalar if nothing else is available (should not normally happen)
|
|
76
|
-
if (!resolvedType) {
|
|
77
|
-
resolvedType = { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: true, isReadOnly: false } satisfies ScalarType;
|
|
78
|
-
}
|
|
79
|
-
return {
|
|
80
|
-
id: srcAttr?.id ?? PlanNode.nextAttrId(),
|
|
81
|
-
name,
|
|
82
|
-
type: resolvedType,
|
|
83
|
-
sourceRelation: `cte:${this.cteName}`
|
|
84
|
-
};
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
private buildType(): RelationType {
|
|
89
|
-
const queryType = this.source.getType();
|
|
90
|
-
return {
|
|
91
|
-
typeClass: 'relation',
|
|
92
|
-
isReadOnly: false,
|
|
93
|
-
isSet: queryType.isSet, // CTEs preserve the set/bag nature of their query
|
|
94
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
95
|
-
columns: this.getAttributes().map((attr: any) => ({
|
|
96
|
-
name: attr.name,
|
|
97
|
-
type: attr.type
|
|
98
|
-
})),
|
|
99
|
-
keys: [], // CTEs don't have inherent keys
|
|
100
|
-
rowConstraints: []
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
getAttributes(): readonly Attribute[] {
|
|
105
|
-
return this.attributesCache.value;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
getType(): RelationType {
|
|
109
|
-
return this.typeCache.value;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
getChildren(): readonly [RelationalPlanNode] {
|
|
113
|
-
return [this.source];
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
getRelations(): readonly [RelationalPlanNode] {
|
|
117
|
-
return [this.source];
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
withChildren(newChildren: readonly PlanNode[]): PlanNode {
|
|
121
|
-
if (newChildren.length !== 1) {
|
|
122
|
-
throw new Error(`CTENode expects 1 child, got ${newChildren.length}`);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
const [newSource] = newChildren;
|
|
126
|
-
|
|
127
|
-
// Type check
|
|
128
|
-
if (!isRelationalNode(newSource)) {
|
|
129
|
-
throw new Error('CTENode: child must be a RelationalPlanNode');
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// Return same instance if nothing changed
|
|
133
|
-
if (newSource === this.source) {
|
|
134
|
-
return this;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// Create new instance with updated source
|
|
138
|
-
return new CTENode(
|
|
139
|
-
this.scope,
|
|
140
|
-
this.cteName,
|
|
141
|
-
this.columns,
|
|
142
|
-
newSource as RelationalPlanNode,
|
|
143
|
-
this.materializationHint,
|
|
144
|
-
this.isRecursive
|
|
145
|
-
);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
getCTESource(): RelationalPlanNode {
|
|
149
|
-
return this.source;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
override toString(): string {
|
|
153
|
-
const recursiveText = this.isRecursive ? 'RECURSIVE ' : '';
|
|
154
|
-
const columnsText = this.columns ? `(${this.columns.join(', ')})` : '';
|
|
155
|
-
const materializationText = this.materializationHint ? ` ${this.materializationHint.toUpperCase()}` : '';
|
|
156
|
-
return `${recursiveText}CTE ${this.cteName}${columnsText}${materializationText}`;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
override getLogicalAttributes(): Record<string, unknown> {
|
|
160
|
-
return {
|
|
161
|
-
cteName: this.cteName,
|
|
162
|
-
columns: this.columns,
|
|
163
|
-
materializationHint: this.materializationHint,
|
|
164
|
-
isRecursive: this.isRecursive,
|
|
165
|
-
queryType: this.getType()
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { PlanNode, type RelationalPlanNode, type Attribute } from './plan-node.js';
|
|
2
|
-
import type { RelationType } from '../../common/datatype.js';
|
|
3
|
-
import { PlanNodeType } from './plan-node-type.js';
|
|
4
|
-
import type { Scope } from '../scopes/scope.js';
|
|
5
|
-
import type { CTEPlanNode } from './cte-node.js';
|
|
6
|
-
import { Cached } from '../../util/cached.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Plan node for referencing a CTE in a FROM clause.
|
|
10
|
-
* This points to a materialized CTE result.
|
|
11
|
-
*/
|
|
12
|
-
export class CTEReferenceNode extends PlanNode implements RelationalPlanNode {
|
|
13
|
-
readonly nodeType = PlanNodeType.CTEReference;
|
|
14
|
-
private static nextRefId = 1;
|
|
15
|
-
public readonly referenceId: number;
|
|
16
|
-
|
|
17
|
-
// Cache of attributes to avoid regenerating new IDs on each plan rewrite
|
|
18
|
-
private attributesCache: Cached<Attribute[]>;
|
|
19
|
-
private typeCache: Cached<RelationType>;
|
|
20
|
-
|
|
21
|
-
constructor(
|
|
22
|
-
scope: Scope,
|
|
23
|
-
public readonly source: CTEPlanNode,
|
|
24
|
-
public readonly alias?: string,
|
|
25
|
-
/**
|
|
26
|
-
* Optionally provide an attribute list to preserve attribute IDs across
|
|
27
|
-
* plan rewrites (e.g. when `withChildren` creates a new instance). When
|
|
28
|
-
* omitted, a fresh list will be generated the first time it is requested.
|
|
29
|
-
*/
|
|
30
|
-
private readonly existingAttributes?: Attribute[]
|
|
31
|
-
) {
|
|
32
|
-
super(scope, 5); // Low cost since CTEs are materialized
|
|
33
|
-
this.referenceId = CTEReferenceNode.nextRefId++;
|
|
34
|
-
this.attributesCache = new Cached(() => this.existingAttributes ?? this.buildAttributes());
|
|
35
|
-
this.typeCache = new Cached(() => this.buildType());
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
private buildAttributes(): Attribute[] {
|
|
39
|
-
// CRITICAL: Always create fresh attribute IDs for each CTE reference instance.
|
|
40
|
-
// Since we now cache CTEReferenceNode instances per alias in buildFrom(),
|
|
41
|
-
// each alias gets its own unique set of attribute IDs that remain consistent
|
|
42
|
-
// throughout the planning and execution phases.
|
|
43
|
-
const relationName = this.alias || this.source.cteName;
|
|
44
|
-
// Only use fresh IDs when we have an alias that differs from the CTE name
|
|
45
|
-
const useFreshIds = this.alias !== undefined && this.alias.toLowerCase() !== this.source.cteName.toLowerCase();
|
|
46
|
-
return this.source.getAttributes().map((attr) => ({
|
|
47
|
-
id: useFreshIds ? PlanNode.nextAttrId() : attr.id,
|
|
48
|
-
name: attr.name,
|
|
49
|
-
type: attr.type,
|
|
50
|
-
sourceRelation: `cte_ref:${this.source.cteName}`,
|
|
51
|
-
relationName
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
private buildType(): RelationType {
|
|
56
|
-
const cteType = this.source.getType();
|
|
57
|
-
return {
|
|
58
|
-
typeClass: 'relation',
|
|
59
|
-
isReadOnly: false,
|
|
60
|
-
isSet: cteType.isSet,
|
|
61
|
-
columns: this.getAttributes().map(attr => ({
|
|
62
|
-
name: attr.name,
|
|
63
|
-
type: attr.type
|
|
64
|
-
})),
|
|
65
|
-
keys: [], // CTE references don't have inherent keys
|
|
66
|
-
rowConstraints: []
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
getAttributes(): Attribute[] {
|
|
71
|
-
return this.attributesCache.value;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
getType(): RelationType {
|
|
75
|
-
return this.typeCache.value;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
getChildren(): readonly [CTEPlanNode] {
|
|
79
|
-
return [this.source];
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
getRelations(): readonly [RelationalPlanNode] {
|
|
83
|
-
return [this.source];
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
withChildren(newChildren: readonly PlanNode[]): PlanNode {
|
|
87
|
-
if (newChildren.length !== 1) {
|
|
88
|
-
throw new Error(`CTEReferenceNode expects 1 child, got ${newChildren.length}`);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
const [newSource] = newChildren;
|
|
92
|
-
|
|
93
|
-
// Type check
|
|
94
|
-
if (newSource.nodeType !== PlanNodeType.CTE && newSource.nodeType !== PlanNodeType.RecursiveCTE) {
|
|
95
|
-
throw new Error(`CTEReferenceNode: child (${newSource.nodeType}) must be a CTEPlanNode`);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
// Return same instance if nothing changed
|
|
99
|
-
if (newSource === this.source) {
|
|
100
|
-
return this;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Create new instance with updated source
|
|
104
|
-
return new CTEReferenceNode(
|
|
105
|
-
this.scope,
|
|
106
|
-
newSource as CTEPlanNode,
|
|
107
|
-
this.alias,
|
|
108
|
-
// Preserve the original attribute list so IDs remain stable across rewrites
|
|
109
|
-
this.getAttributes()
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
override toString(): string {
|
|
114
|
-
const aliasText = this.alias ? ` AS ${this.alias}` : '';
|
|
115
|
-
return `CTE_REF ${this.source.cteName}${aliasText}`;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
override getLogicalAttributes(): Record<string, unknown> {
|
|
119
|
-
return {
|
|
120
|
-
cteName: this.source.cteName,
|
|
121
|
-
alias: this.alias,
|
|
122
|
-
materializationHint: this.source.materializationHint
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
}
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import { PlanNode, type VoidNode, type RelationalPlanNode, Attribute } from './plan-node.js';
|
|
2
|
-
import { PlanNodeType } from './plan-node-type.js';
|
|
3
|
-
import type { Scope } from '../scopes/scope.js';
|
|
4
|
-
import type * as AST from '../../parser/ast.js';
|
|
5
|
-
import { RelationType, type VoidType } from '../../common/datatype.js';
|
|
6
|
-
import { TEXT_TYPE } from '../../types/builtin-types.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* DECLARE SCHEMA statement plan node
|
|
10
|
-
*/
|
|
11
|
-
export class DeclareSchemaNode extends PlanNode implements VoidNode {
|
|
12
|
-
override readonly nodeType = PlanNodeType.DeclareSchema;
|
|
13
|
-
|
|
14
|
-
constructor(
|
|
15
|
-
scope: Scope,
|
|
16
|
-
public readonly statementAst: AST.DeclareSchemaStmt
|
|
17
|
-
) {
|
|
18
|
-
super(scope, 1);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
getType(): VoidType {
|
|
22
|
-
return { typeClass: 'void' };
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
getChildren(): PlanNode[] {
|
|
26
|
-
return [];
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
withChildren(_newChildren: readonly PlanNode[]): PlanNode {
|
|
30
|
-
return new DeclareSchemaNode(this.scope, this.statementAst);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
override toString(): string {
|
|
34
|
-
return `DECLARE SCHEMA ${this.statementAst.schemaName || 'main'}`;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
override getLogicalAttributes(): Record<string, unknown> {
|
|
38
|
-
return {
|
|
39
|
-
type: 'declareSchema',
|
|
40
|
-
schemaName: this.statementAst.schemaName || 'main',
|
|
41
|
-
itemCount: this.statementAst.items.length
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* DIFF SCHEMA statement plan node - returns DDL statements as rows
|
|
48
|
-
*/
|
|
49
|
-
export class DiffSchemaNode extends PlanNode implements RelationalPlanNode {
|
|
50
|
-
override readonly nodeType = PlanNodeType.DiffSchema;
|
|
51
|
-
|
|
52
|
-
constructor(
|
|
53
|
-
scope: Scope,
|
|
54
|
-
public readonly statementAst: AST.DiffSchemaStmt
|
|
55
|
-
) {
|
|
56
|
-
super(scope, 1);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
getType(): RelationType {
|
|
60
|
-
return {
|
|
61
|
-
typeClass: 'relation',
|
|
62
|
-
isReadOnly: true,
|
|
63
|
-
isSet: false, // DDL statements can have duplicates (though unlikely)
|
|
64
|
-
columns: [
|
|
65
|
-
{
|
|
66
|
-
name: 'ddl',
|
|
67
|
-
type: {
|
|
68
|
-
typeClass: 'scalar',
|
|
69
|
-
logicalType: TEXT_TYPE,
|
|
70
|
-
nullable: false,
|
|
71
|
-
isReadOnly: true,
|
|
72
|
-
},
|
|
73
|
-
generated: true,
|
|
74
|
-
}
|
|
75
|
-
],
|
|
76
|
-
keys: [],
|
|
77
|
-
rowConstraints: [],
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
get estimatedRows(): number | undefined {
|
|
82
|
-
return 10; // Estimated number of migration statements
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
getAttributes(): Attribute[] {
|
|
86
|
-
return this.getType().columns.map((column) => ({
|
|
87
|
-
id: PlanNode.nextAttrId(),
|
|
88
|
-
name: column.name,
|
|
89
|
-
type: column.type,
|
|
90
|
-
sourceRelation: `${this.nodeType}:${this.id}`
|
|
91
|
-
}));
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
getChildren(): PlanNode[] {
|
|
95
|
-
return [];
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
withChildren(_newChildren: readonly PlanNode[]): PlanNode {
|
|
99
|
-
return new DiffSchemaNode(this.scope, this.statementAst);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
override toString(): string {
|
|
103
|
-
return `DIFF SCHEMA ${this.statementAst.schemaName || 'main'}`;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
override getLogicalAttributes(): Record<string, unknown> {
|
|
107
|
-
return {
|
|
108
|
-
type: 'diffSchema',
|
|
109
|
-
schemaName: this.statementAst.schemaName || 'main'
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* APPLY SCHEMA statement plan node
|
|
116
|
-
*/
|
|
117
|
-
export class ApplySchemaNode extends PlanNode implements VoidNode {
|
|
118
|
-
override readonly nodeType = PlanNodeType.ApplySchema;
|
|
119
|
-
|
|
120
|
-
constructor(
|
|
121
|
-
scope: Scope,
|
|
122
|
-
public readonly statementAst: AST.ApplySchemaStmt
|
|
123
|
-
) {
|
|
124
|
-
super(scope, 1);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
getType(): VoidType {
|
|
128
|
-
return { typeClass: 'void' };
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
getChildren(): PlanNode[] {
|
|
132
|
-
return [];
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
withChildren(_newChildren: readonly PlanNode[]): PlanNode {
|
|
136
|
-
return new ApplySchemaNode(this.scope, this.statementAst);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
override toString(): string {
|
|
140
|
-
return `APPLY SCHEMA ${this.statementAst.schemaName || 'main'}${this.statementAst.withSeed ? ' WITH SEED' : ''}`;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
override getLogicalAttributes(): Record<string, unknown> {
|
|
144
|
-
return {
|
|
145
|
-
type: 'applySchema',
|
|
146
|
-
schemaName: this.statementAst.schemaName || 'main',
|
|
147
|
-
withSeed: this.statementAst.withSeed || false
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* EXPLAIN SCHEMA statement plan node - returns result rows with hash info
|
|
154
|
-
*/
|
|
155
|
-
export class ExplainSchemaNode extends PlanNode implements RelationalPlanNode {
|
|
156
|
-
override readonly nodeType = PlanNodeType.ExplainSchema;
|
|
157
|
-
|
|
158
|
-
constructor(
|
|
159
|
-
scope: Scope,
|
|
160
|
-
public readonly statementAst: AST.ExplainSchemaStmt
|
|
161
|
-
) {
|
|
162
|
-
super(scope, 1);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
getType(): RelationType {
|
|
166
|
-
return {
|
|
167
|
-
typeClass: 'relation',
|
|
168
|
-
isReadOnly: true,
|
|
169
|
-
isSet: true,
|
|
170
|
-
columns: [
|
|
171
|
-
{
|
|
172
|
-
name: 'info',
|
|
173
|
-
type: {
|
|
174
|
-
typeClass: 'scalar',
|
|
175
|
-
logicalType: TEXT_TYPE,
|
|
176
|
-
nullable: false,
|
|
177
|
-
isReadOnly: true,
|
|
178
|
-
},
|
|
179
|
-
generated: true,
|
|
180
|
-
}
|
|
181
|
-
],
|
|
182
|
-
keys: [[]],
|
|
183
|
-
rowConstraints: [],
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
get estimatedRows(): number | undefined {
|
|
188
|
-
return 1;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
getAttributes(): Attribute[] {
|
|
192
|
-
return this.getType().columns.map((column) => ({
|
|
193
|
-
id: PlanNode.nextAttrId(),
|
|
194
|
-
name: column.name,
|
|
195
|
-
type: column.type,
|
|
196
|
-
sourceRelation: `${this.nodeType}:${this.id}`
|
|
197
|
-
}));
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
getChildren(): PlanNode[] {
|
|
201
|
-
return [];
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
withChildren(_newChildren: readonly PlanNode[]): PlanNode {
|
|
205
|
-
return new ExplainSchemaNode(this.scope, this.statementAst);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
override toString(): string {
|
|
209
|
-
return `EXPLAIN SCHEMA ${this.statementAst.schemaName || 'main'}`;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
override getLogicalAttributes(): Record<string, unknown> {
|
|
213
|
-
return {
|
|
214
|
-
type: 'explainSchema',
|
|
215
|
-
schemaName: this.statementAst.schemaName || 'main',
|
|
216
|
-
version: this.statementAst.version
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
|