@quereus/quereus 0.2.0 → 0.4.0
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/README.md +12 -1
- package/dist/src/common/errors.js.map +1 -1
- package/dist/src/common/json-types.d.ts +11 -0
- package/dist/src/common/json-types.d.ts.map +1 -0
- package/dist/src/common/json-types.js +3 -0
- package/dist/src/common/json-types.js.map +1 -0
- package/dist/src/common/types.d.ts +2 -0
- package/dist/src/common/types.d.ts.map +1 -1
- package/dist/src/core/database-options.d.ts +2 -2
- package/dist/src/core/database-options.d.ts.map +1 -1
- package/dist/src/core/database-options.js.map +1 -1
- package/dist/src/core/database.d.ts +61 -14
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +481 -54
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +3 -1
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
- package/dist/src/func/builtins/datetime.d.ts +2 -0
- package/dist/src/func/builtins/datetime.d.ts.map +1 -1
- package/dist/src/func/builtins/datetime.js +39 -0
- package/dist/src/func/builtins/datetime.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts +1 -0
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +159 -36
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/index.d.ts.map +1 -1
- package/dist/src/func/builtins/index.js +5 -2
- package/dist/src/func/builtins/index.js.map +1 -1
- package/dist/src/func/builtins/json-helpers.d.ts +8 -8
- package/dist/src/func/builtins/json-helpers.d.ts.map +1 -1
- package/dist/src/func/builtins/json-helpers.js +3 -3
- package/dist/src/func/builtins/json-helpers.js.map +1 -1
- package/dist/src/func/builtins/json-tvf.d.ts.map +1 -1
- package/dist/src/func/builtins/json-tvf.js +1 -1
- package/dist/src/func/builtins/json-tvf.js.map +1 -1
- package/dist/src/func/builtins/json.d.ts.map +1 -1
- package/dist/src/func/builtins/json.js +3 -2
- package/dist/src/func/builtins/json.js.map +1 -1
- package/dist/src/func/builtins/schema.d.ts.map +1 -1
- package/dist/src/func/builtins/schema.js +22 -1
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/func/context.d.ts.map +1 -1
- package/dist/src/func/context.js +5 -0
- package/dist/src/func/context.js.map +1 -1
- package/dist/src/func/registration.d.ts +2 -1
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/ast.d.ts +84 -6
- package/dist/src/parser/ast.d.ts.map +1 -1
- package/dist/src/parser/lexer.d.ts +11 -0
- package/dist/src/parser/lexer.d.ts.map +1 -1
- package/dist/src/parser/lexer.js +29 -21
- package/dist/src/parser/lexer.js.map +1 -1
- package/dist/src/parser/parser.d.ts +16 -0
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +542 -26
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/parser/visitor.d.ts.map +1 -1
- package/dist/src/parser/visitor.js +1 -0
- package/dist/src/parser/visitor.js.map +1 -1
- package/dist/src/planner/analysis/binding-collector.d.ts +5 -0
- package/dist/src/planner/analysis/binding-collector.d.ts.map +1 -0
- package/dist/src/planner/analysis/binding-collector.js +73 -0
- package/dist/src/planner/analysis/binding-collector.js.map +1 -0
- package/dist/src/planner/analysis/const-evaluator.js +1 -1
- package/dist/src/planner/analysis/const-evaluator.js.map +1 -1
- package/dist/src/planner/analysis/const-pass.d.ts.map +1 -1
- package/dist/src/planner/analysis/const-pass.js +1 -1
- package/dist/src/planner/analysis/const-pass.js.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts +67 -31
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +513 -84
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/analysis/predicate-normalizer.d.ts +17 -0
- package/dist/src/planner/analysis/predicate-normalizer.d.ts.map +1 -0
- package/dist/src/planner/analysis/predicate-normalizer.js +222 -0
- package/dist/src/planner/analysis/predicate-normalizer.js.map +1 -0
- package/dist/src/planner/building/alter-table.d.ts.map +1 -1
- package/dist/src/planner/building/alter-table.js +5 -2
- package/dist/src/planner/building/alter-table.js.map +1 -1
- package/dist/src/planner/building/block.d.ts.map +1 -1
- package/dist/src/planner/building/block.js +16 -0
- package/dist/src/planner/building/block.js.map +1 -1
- package/dist/src/planner/building/constraint-builder.d.ts +2 -2
- package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
- package/dist/src/planner/building/constraint-builder.js +52 -3
- package/dist/src/planner/building/constraint-builder.js.map +1 -1
- package/dist/src/planner/building/create-assertion.d.ts +5 -0
- package/dist/src/planner/building/create-assertion.d.ts.map +1 -0
- package/dist/src/planner/building/create-assertion.js +5 -0
- package/dist/src/planner/building/create-assertion.js.map +1 -0
- package/dist/src/planner/building/declare-schema.d.ts +8 -0
- package/dist/src/planner/building/declare-schema.d.ts.map +1 -0
- package/dist/src/planner/building/declare-schema.js +14 -0
- package/dist/src/planner/building/declare-schema.js.map +1 -0
- package/dist/src/planner/building/delete.d.ts.map +1 -1
- package/dist/src/planner/building/delete.js +38 -6
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/drop-assertion.d.ts +5 -0
- package/dist/src/planner/building/drop-assertion.d.ts.map +1 -0
- package/dist/src/planner/building/drop-assertion.js +8 -0
- package/dist/src/planner/building/drop-assertion.js.map +1 -0
- package/dist/src/planner/building/expression.d.ts.map +1 -1
- package/dist/src/planner/building/expression.js +1 -0
- package/dist/src/planner/building/expression.js.map +1 -1
- package/dist/src/planner/building/function-call.d.ts.map +1 -1
- package/dist/src/planner/building/function-call.js +2 -1
- package/dist/src/planner/building/function-call.js.map +1 -1
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +68 -11
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/pragma.d.ts.map +1 -1
- package/dist/src/planner/building/pragma.js +1 -0
- package/dist/src/planner/building/pragma.js.map +1 -1
- package/dist/src/planner/building/schema-resolution.d.ts +2 -2
- package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.js +3 -2
- package/dist/src/planner/building/select-aggregates.js.map +1 -1
- package/dist/src/planner/building/select-compound.d.ts +2 -2
- package/dist/src/planner/building/select-compound.d.ts.map +1 -1
- package/dist/src/planner/building/select-compound.js +10 -1
- package/dist/src/planner/building/select-compound.js.map +1 -1
- package/dist/src/planner/building/select-context.d.ts +3 -3
- package/dist/src/planner/building/select-context.d.ts.map +1 -1
- package/dist/src/planner/building/select-context.js.map +1 -1
- package/dist/src/planner/building/select-modifiers.d.ts +6 -5
- package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
- package/dist/src/planner/building/select-modifiers.js +5 -4
- package/dist/src/planner/building/select-modifiers.js.map +1 -1
- package/dist/src/planner/building/select-projections.d.ts.map +1 -1
- package/dist/src/planner/building/select-projections.js +4 -5
- package/dist/src/planner/building/select-projections.js.map +1 -1
- package/dist/src/planner/building/select-window.d.ts.map +1 -1
- package/dist/src/planner/building/select-window.js +6 -3
- package/dist/src/planner/building/select-window.js.map +1 -1
- package/dist/src/planner/building/select.d.ts +3 -3
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +18 -8
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/building/table-function.d.ts.map +1 -1
- package/dist/src/planner/building/table-function.js +1 -1
- package/dist/src/planner/building/table-function.js.map +1 -1
- package/dist/src/planner/building/table.d.ts +5 -3
- package/dist/src/planner/building/table.d.ts.map +1 -1
- package/dist/src/planner/building/table.js +7 -2
- package/dist/src/planner/building/table.js.map +1 -1
- package/dist/src/planner/building/update.d.ts.map +1 -1
- package/dist/src/planner/building/update.js +39 -7
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/building/with.d.ts +3 -3
- package/dist/src/planner/building/with.d.ts.map +1 -1
- package/dist/src/planner/building/with.js.map +1 -1
- package/dist/src/planner/debug.d.ts.map +1 -1
- package/dist/src/planner/debug.js.map +1 -1
- package/dist/src/planner/framework/characteristics.d.ts +235 -0
- package/dist/src/planner/framework/characteristics.d.ts.map +1 -0
- package/dist/src/planner/framework/characteristics.js +299 -0
- package/dist/src/planner/framework/characteristics.js.map +1 -0
- package/dist/src/planner/framework/context.d.ts +16 -5
- package/dist/src/planner/framework/context.d.ts.map +1 -1
- package/dist/src/planner/framework/context.js +2 -0
- package/dist/src/planner/framework/context.js.map +1 -1
- package/dist/src/planner/framework/pass.d.ts +116 -0
- package/dist/src/planner/framework/pass.d.ts.map +1 -0
- package/dist/src/planner/framework/pass.js +236 -0
- package/dist/src/planner/framework/pass.js.map +1 -0
- package/dist/src/planner/nodes/aggregate-node.d.ts +16 -6
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-node.js +40 -4
- package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
- package/dist/src/planner/nodes/array-index-node.js.map +1 -1
- package/dist/src/planner/nodes/cache-node.d.ts +5 -2
- package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cache-node.js +6 -0
- package/dist/src/planner/nodes/cache-node.js.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.d.ts +12 -4
- package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.js +12 -4
- package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
- package/dist/src/planner/nodes/create-assertion-node.d.ts +22 -0
- package/dist/src/planner/nodes/create-assertion-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/create-assertion-node.js +41 -0
- package/dist/src/planner/nodes/create-assertion-node.js.map +1 -0
- package/dist/src/planner/nodes/create-index-node.js +2 -2
- package/dist/src/planner/nodes/create-index-node.js.map +1 -1
- package/dist/src/planner/nodes/create-table-node.js +2 -2
- package/dist/src/planner/nodes/create-table-node.js.map +1 -1
- package/dist/src/planner/nodes/cte-node.d.ts +17 -2
- package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cte-node.js +9 -1
- package/dist/src/planner/nodes/cte-node.js.map +1 -1
- package/dist/src/planner/nodes/cte-reference-node.js +1 -1
- package/dist/src/planner/nodes/cte-reference-node.js.map +1 -1
- package/dist/src/planner/nodes/declarative-schema.d.ts +62 -0
- package/dist/src/planner/nodes/declarative-schema.d.ts.map +1 -0
- package/dist/src/planner/nodes/declarative-schema.js +181 -0
- package/dist/src/planner/nodes/declarative-schema.js.map +1 -0
- package/dist/src/planner/nodes/delete-node.d.ts +8 -3
- package/dist/src/planner/nodes/delete-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/delete-node.js +10 -2
- package/dist/src/planner/nodes/delete-node.js.map +1 -1
- package/dist/src/planner/nodes/distinct-node.d.ts +3 -2
- package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/distinct-node.js +17 -4
- package/dist/src/planner/nodes/distinct-node.js.map +1 -1
- package/dist/src/planner/nodes/dml-executor-node.d.ts +2 -2
- package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/drop-assertion-node.d.ts +21 -0
- package/dist/src/planner/nodes/drop-assertion-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/drop-assertion-node.js +41 -0
- package/dist/src/planner/nodes/drop-assertion-node.js.map +1 -0
- package/dist/src/planner/nodes/drop-table-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/drop-table-node.js +1 -0
- package/dist/src/planner/nodes/drop-table-node.js.map +1 -1
- package/dist/src/planner/nodes/filter.d.ts +8 -3
- package/dist/src/planner/nodes/filter.d.ts.map +1 -1
- package/dist/src/planner/nodes/filter.js +44 -0
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/insert-node.d.ts +9 -3
- package/dist/src/planner/nodes/insert-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/insert-node.js +11 -2
- package/dist/src/planner/nodes/insert-node.js.map +1 -1
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts +3 -4
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js +1 -16
- package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +1 -1
- package/dist/src/planner/nodes/join-node.d.ts +12 -3
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +111 -2
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/limit-offset.d.ts +7 -3
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
- package/dist/src/planner/nodes/limit-offset.js +15 -0
- package/dist/src/planner/nodes/limit-offset.js.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.d.ts +8 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.js +8 -0
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +9 -9
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node.js +3 -3
- package/dist/src/planner/nodes/plan-node.js.map +1 -1
- package/dist/src/planner/nodes/pragma.d.ts +2 -1
- package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
- package/dist/src/planner/nodes/pragma.js +3 -1
- package/dist/src/planner/nodes/pragma.js.map +1 -1
- package/dist/src/planner/nodes/project-node.d.ts +16 -3
- package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/project-node.js +82 -2
- package/dist/src/planner/nodes/project-node.js.map +1 -1
- package/dist/src/planner/nodes/recursive-cte-node.d.ts +2 -2
- package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/recursive-cte-node.js +1 -1
- package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts +13 -4
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +16 -0
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/remote-query-node.d.ts +37 -0
- package/dist/src/planner/nodes/remote-query-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/remote-query-node.js +63 -0
- package/dist/src/planner/nodes/remote-query-node.js.map +1 -0
- package/dist/src/planner/nodes/retrieve-node.d.ts +46 -0
- package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/retrieve-node.js +77 -0
- package/dist/src/planner/nodes/retrieve-node.js.map +1 -0
- package/dist/src/planner/nodes/returning-node.d.ts +4 -3
- package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/returning-node.js +44 -3
- package/dist/src/planner/nodes/returning-node.js.map +1 -1
- package/dist/src/planner/nodes/sequencing-node.d.ts +1 -1
- package/dist/src/planner/nodes/sequencing-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/sequencing-node.js.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.d.ts +1 -1
- package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
- package/dist/src/planner/nodes/sort.d.ts +11 -2
- package/dist/src/planner/nodes/sort.d.ts.map +1 -1
- package/dist/src/planner/nodes/sort.js +23 -2
- package/dist/src/planner/nodes/sort.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +4 -1
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +7 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +22 -4
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/table-function-call.d.ts +2 -1
- package/dist/src/planner/nodes/table-function-call.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-function-call.js +12 -5
- package/dist/src/planner/nodes/table-function-call.js.map +1 -1
- package/dist/src/planner/nodes/transaction-node.js +2 -2
- package/dist/src/planner/nodes/transaction-node.js.map +1 -1
- package/dist/src/planner/nodes/update-node.d.ts +7 -1
- package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/update-node.js +11 -2
- package/dist/src/planner/nodes/update-node.js.map +1 -1
- package/dist/src/planner/nodes/view-reference-node.js.map +1 -1
- package/dist/src/planner/nodes/window-function.js.map +1 -1
- package/dist/src/planner/nodes/window-node.js.map +1 -1
- package/dist/src/planner/optimizer-tuning.d.ts +11 -0
- package/dist/src/planner/optimizer-tuning.d.ts.map +1 -1
- package/dist/src/planner/optimizer-tuning.js +6 -0
- package/dist/src/planner/optimizer-tuning.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts +17 -3
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +159 -67
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/planning-context.d.ts +5 -3
- package/dist/src/planner/planning-context.d.ts.map +1 -1
- package/dist/src/planner/planning-context.js +2 -0
- package/dist/src/planner/planning-context.js.map +1 -1
- package/dist/src/planner/resolve.d.ts +3 -2
- package/dist/src/planner/resolve.d.ts.map +1 -1
- package/dist/src/planner/resolve.js +6 -5
- package/dist/src/planner/resolve.js.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts +8 -3
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.js +206 -47
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts +10 -3
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +95 -87
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts +8 -2
- package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-cte-optimization.js +24 -13
- package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts +9 -2
- package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js +14 -7
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts +9 -3
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts.map +1 -1
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js +34 -37
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -1
- package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts +14 -0
- package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-join-greedy-commute.js +33 -0
- package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +1 -0
- package/dist/src/planner/rules/join/rule-join-key-inference.d.ts +11 -0
- package/dist/src/planner/rules/join/rule-join-key-inference.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-join-key-inference.js +32 -0
- package/dist/src/planner/rules/join/rule-join-key-inference.js.map +1 -0
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts +4 -0
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.js +233 -0
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts +21 -0
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +125 -0
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -0
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts +21 -0
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -0
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +261 -0
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -0
- package/dist/src/planner/scopes/registered.d.ts +1 -0
- package/dist/src/planner/scopes/registered.d.ts.map +1 -1
- package/dist/src/planner/scopes/registered.js +7 -0
- package/dist/src/planner/scopes/registered.js.map +1 -1
- package/dist/src/planner/stats/index.d.ts +0 -17
- package/dist/src/planner/stats/index.d.ts.map +1 -1
- package/dist/src/planner/stats/index.js +0 -58
- package/dist/src/planner/stats/index.js.map +1 -1
- package/dist/src/planner/util/deferred-constraint.d.ts +14 -0
- package/dist/src/planner/util/deferred-constraint.d.ts.map +1 -0
- package/dist/src/planner/util/deferred-constraint.js +85 -0
- package/dist/src/planner/util/deferred-constraint.js.map +1 -0
- package/dist/src/planner/util/key-utils.d.ts +15 -0
- package/dist/src/planner/util/key-utils.d.ts.map +1 -0
- package/dist/src/planner/util/key-utils.js +43 -0
- package/dist/src/planner/util/key-utils.js.map +1 -0
- package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
- package/dist/src/planner/validation/plan-validator.js +1 -0
- package/dist/src/planner/validation/plan-validator.js.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.d.ts +33 -0
- package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -0
- package/dist/src/runtime/deferred-constraint-queue.js +172 -0
- package/dist/src/runtime/deferred-constraint-queue.js.map +1 -0
- package/dist/src/runtime/emission-context.d.ts +9 -3
- package/dist/src/runtime/emission-context.d.ts.map +1 -1
- package/dist/src/runtime/emission-context.js +5 -1
- package/dist/src/runtime/emission-context.js.map +1 -1
- package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
- package/dist/src/runtime/emit/add-constraint.js +22 -4
- package/dist/src/runtime/emit/add-constraint.js.map +1 -1
- package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate.js +3 -2
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/array-index.js.map +1 -1
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +9 -2
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/cache.d.ts.map +1 -1
- package/dist/src/runtime/emit/cache.js +1 -1
- package/dist/src/runtime/emit/cache.js.map +1 -1
- package/dist/src/runtime/emit/cast.d.ts.map +1 -1
- package/dist/src/runtime/emit/cast.js.map +1 -1
- package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
- package/dist/src/runtime/emit/constraint-check.js +112 -25
- package/dist/src/runtime/emit/constraint-check.js.map +1 -1
- package/dist/src/runtime/emit/create-assertion.d.ts +5 -0
- package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -0
- package/dist/src/runtime/emit/create-assertion.js +70 -0
- package/dist/src/runtime/emit/create-assertion.js.map +1 -0
- package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -1
- package/dist/src/runtime/emit/cte-reference.js.map +1 -1
- package/dist/src/runtime/emit/cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/cte.js.map +1 -1
- package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
- package/dist/src/runtime/emit/distinct.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +17 -9
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-assertion.d.ts +5 -0
- package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -0
- package/dist/src/runtime/emit/drop-assertion.js +30 -0
- package/dist/src/runtime/emit/drop-assertion.js.map +1 -0
- package/dist/src/runtime/emit/filter.d.ts.map +1 -1
- package/dist/src/runtime/emit/filter.js.map +1 -1
- package/dist/src/runtime/emit/join.d.ts.map +1 -1
- package/dist/src/runtime/emit/join.js.map +1 -1
- package/dist/src/runtime/emit/limit-offset.d.ts.map +1 -1
- package/dist/src/runtime/emit/limit-offset.js.map +1 -1
- package/dist/src/runtime/emit/pragma.js.map +1 -1
- package/dist/src/runtime/emit/project.d.ts.map +1 -1
- package/dist/src/runtime/emit/project.js.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
- package/dist/src/runtime/emit/recursive-cte.js +1 -1
- package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
- package/dist/src/runtime/emit/remote-query.d.ts +9 -0
- package/dist/src/runtime/emit/remote-query.d.ts.map +1 -0
- package/dist/src/runtime/emit/remote-query.js +30 -0
- package/dist/src/runtime/emit/remote-query.js.map +1 -0
- package/dist/src/runtime/emit/retrieve.d.ts +5 -0
- package/dist/src/runtime/emit/retrieve.d.ts.map +1 -0
- package/dist/src/runtime/emit/retrieve.js +9 -0
- package/dist/src/runtime/emit/retrieve.js.map +1 -0
- package/dist/src/runtime/emit/returning.d.ts.map +1 -1
- package/dist/src/runtime/emit/returning.js +1 -1
- package/dist/src/runtime/emit/returning.js.map +1 -1
- package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
- package/dist/src/runtime/emit/scalar-function.js.map +1 -1
- package/dist/src/runtime/emit/scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/scan.js +20 -5
- package/dist/src/runtime/emit/scan.js.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.d.ts +8 -0
- package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -0
- package/dist/src/runtime/emit/schema-declarative.js +163 -0
- package/dist/src/runtime/emit/schema-declarative.js.map +1 -0
- package/dist/src/runtime/emit/sequencing.d.ts.map +1 -1
- package/dist/src/runtime/emit/sequencing.js.map +1 -1
- package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
- package/dist/src/runtime/emit/set-operation.js +6 -6
- package/dist/src/runtime/emit/set-operation.js.map +1 -1
- package/dist/src/runtime/emit/sort.d.ts.map +1 -1
- package/dist/src/runtime/emit/sort.js.map +1 -1
- package/dist/src/runtime/emit/subquery.d.ts +1 -1
- package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
- package/dist/src/runtime/emit/subquery.js +6 -6
- package/dist/src/runtime/emit/subquery.js.map +1 -1
- package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
- package/dist/src/runtime/emit/transaction.js +48 -8
- package/dist/src/runtime/emit/transaction.js.map +1 -1
- package/dist/src/runtime/emit/values.d.ts.map +1 -1
- package/dist/src/runtime/emit/values.js.map +1 -1
- package/dist/src/runtime/emit/window.d.ts.map +1 -1
- package/dist/src/runtime/emit/window.js.map +1 -1
- package/dist/src/runtime/emitters.d.ts.map +1 -1
- package/dist/src/runtime/emitters.js +1 -0
- package/dist/src/runtime/emitters.js.map +1 -1
- package/dist/src/runtime/register.d.ts.map +1 -1
- package/dist/src/runtime/register.js +16 -2
- package/dist/src/runtime/register.js.map +1 -1
- package/dist/src/runtime/scheduler.js.map +1 -1
- package/dist/src/runtime/types.d.ts +2 -2
- package/dist/src/runtime/types.d.ts.map +1 -1
- package/dist/src/runtime/types.js +4 -1
- package/dist/src/runtime/types.js.map +1 -1
- package/dist/src/runtime/utils.d.ts +2 -2
- package/dist/src/runtime/utils.d.ts.map +1 -1
- package/dist/src/runtime/utils.js +1 -0
- package/dist/src/runtime/utils.js.map +1 -1
- package/dist/src/schema/assertion.d.ts +19 -0
- package/dist/src/schema/assertion.d.ts.map +1 -0
- package/dist/src/schema/assertion.js +2 -0
- package/dist/src/schema/assertion.js.map +1 -0
- package/dist/src/schema/catalog.d.ts +44 -0
- package/dist/src/schema/catalog.d.ts.map +1 -0
- package/dist/src/schema/catalog.js +148 -0
- package/dist/src/schema/catalog.js.map +1 -0
- package/dist/src/schema/change-events.d.ts +2 -2
- package/dist/src/schema/change-events.d.ts.map +1 -1
- package/dist/src/schema/column.d.ts +2 -0
- package/dist/src/schema/column.d.ts.map +1 -1
- package/dist/src/schema/column.js.map +1 -1
- package/dist/src/schema/declared-schema-manager.d.ts +42 -0
- package/dist/src/schema/declared-schema-manager.d.ts.map +1 -0
- package/dist/src/schema/declared-schema-manager.js +71 -0
- package/dist/src/schema/declared-schema-manager.js.map +1 -0
- package/dist/src/schema/function.d.ts +3 -2
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/manager.d.ts +8 -3
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +32 -3
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/schema-differ.d.ts +34 -0
- package/dist/src/schema/schema-differ.d.ts.map +1 -0
- package/dist/src/schema/schema-differ.js +157 -0
- package/dist/src/schema/schema-differ.js.map +1 -0
- package/dist/src/schema/schema-hasher.d.ts +10 -0
- package/dist/src/schema/schema-hasher.d.ts.map +1 -0
- package/dist/src/schema/schema-hasher.js +39 -0
- package/dist/src/schema/schema-hasher.js.map +1 -0
- package/dist/src/schema/schema.d.ts +7 -0
- package/dist/src/schema/schema.d.ts.map +1 -1
- package/dist/src/schema/schema.js +19 -0
- package/dist/src/schema/schema.js.map +1 -1
- package/dist/src/schema/table.d.ts +31 -6
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +27 -12
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/schema/window-function.d.ts.map +1 -1
- package/dist/src/schema/window-function.js.map +1 -1
- package/dist/src/util/ast-stringify.d.ts.map +1 -1
- package/dist/src/util/ast-stringify.js +116 -3
- package/dist/src/util/ast-stringify.js.map +1 -1
- package/dist/src/util/environment.js.map +1 -1
- package/dist/src/util/plugin-loader.d.ts +25 -0
- package/dist/src/util/plugin-loader.d.ts.map +1 -1
- package/dist/src/util/plugin-loader.js +137 -0
- package/dist/src/util/plugin-loader.js.map +1 -1
- package/dist/src/util/row-descriptor.d.ts +1 -1
- package/dist/src/util/row-descriptor.d.ts.map +1 -1
- package/dist/src/util/row-descriptor.js.map +1 -1
- package/dist/src/util/serialization.d.ts +3 -0
- package/dist/src/util/serialization.d.ts.map +1 -1
- package/dist/src/util/serialization.js +1 -0
- package/dist/src/util/serialization.js.map +1 -1
- package/dist/src/vtab/best-access-plan.d.ts +1 -1
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
- package/dist/src/vtab/best-access-plan.js +1 -0
- package/dist/src/vtab/best-access-plan.js.map +1 -1
- package/dist/src/vtab/manifest.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base.js +2 -0
- package/dist/src/vtab/memory/layer/base.js.map +1 -1
- package/dist/src/vtab/memory/layer/manager.d.ts +2 -1
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +24 -6
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/memory/layer/safe-iterate.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/safe-iterate.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +5 -0
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/dist/src/vtab/memory/table.d.ts +2 -1
- package/dist/src/vtab/memory/table.d.ts.map +1 -1
- package/dist/src/vtab/memory/table.js +3 -2
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/memory/utils/logging.d.ts +2 -2
- package/dist/src/vtab/memory/utils/logging.d.ts.map +1 -1
- package/dist/src/vtab/memory/utils/logging.js +6 -3
- package/dist/src/vtab/memory/utils/logging.js.map +1 -1
- package/dist/src/vtab/module.d.ts +25 -0
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/dist/src/vtab/table.d.ts +18 -5
- package/dist/src/vtab/table.d.ts.map +1 -1
- package/dist/src/vtab/table.js.map +1 -1
- package/package.json +5 -3
- package/src/common/errors.ts +1 -1
- package/src/common/json-types.ts +16 -0
- package/src/common/types.ts +3 -0
- package/src/core/database-options.ts +8 -8
- package/src/core/database.ts +537 -71
- package/src/core/statement.ts +3 -1
- package/src/func/builtins/builtin-window-functions.ts +11 -10
- package/src/func/builtins/datetime.ts +42 -0
- package/src/func/builtins/explain.ts +186 -44
- package/src/func/builtins/index.ts +5 -2
- package/src/func/builtins/json-helpers.ts +21 -21
- package/src/func/builtins/json-tvf.ts +8 -9
- package/src/func/builtins/json.ts +10 -9
- package/src/func/builtins/schema.ts +24 -4
- package/src/func/context.ts +7 -0
- package/src/func/registration.ts +5 -1
- package/src/index.ts +3 -3
- package/src/parser/ast.ts +582 -484
- package/src/parser/lexer.ts +27 -21
- package/src/parser/parser.ts +3336 -2776
- package/src/parser/visitor.ts +1 -0
- package/src/planner/analysis/binding-collector.ts +83 -0
- package/src/planner/analysis/const-evaluator.ts +1 -1
- package/src/planner/analysis/const-pass.ts +3 -2
- package/src/planner/analysis/constraint-extractor.ts +610 -123
- package/src/planner/analysis/predicate-normalizer.ts +237 -0
- package/src/planner/building/alter-table.ts +3 -1
- package/src/planner/building/block.ts +93 -78
- package/src/planner/building/constraint-builder.ts +173 -114
- package/src/planner/building/create-assertion.ts +7 -0
- package/src/planner/building/declare-schema.ts +22 -0
- package/src/planner/building/delete.ts +214 -171
- package/src/planner/building/drop-assertion.ts +11 -0
- package/src/planner/building/expression.ts +1 -0
- package/src/planner/building/function-call.ts +6 -5
- package/src/planner/building/insert.ts +428 -349
- package/src/planner/building/pragma.ts +1 -0
- package/src/planner/building/schema-resolution.ts +176 -176
- package/src/planner/building/select-aggregates.ts +5 -3
- package/src/planner/building/select-compound.ts +22 -13
- package/src/planner/building/select-context.ts +6 -6
- package/src/planner/building/select-modifiers.ts +8 -7
- package/src/planner/building/select-projections.ts +177 -176
- package/src/planner/building/select-window.ts +259 -253
- package/src/planner/building/select.ts +531 -520
- package/src/planner/building/table-function.ts +49 -48
- package/src/planner/building/table.ts +9 -3
- package/src/planner/building/update.ts +319 -270
- package/src/planner/building/with.ts +7 -7
- package/src/planner/debug.ts +1 -0
- package/src/planner/framework/characteristics.ts +503 -0
- package/src/planner/framework/context.ts +23 -6
- package/src/planner/framework/pass.ts +354 -0
- package/src/planner/nodes/aggregate-node.ts +52 -7
- package/src/planner/nodes/array-index-node.ts +1 -1
- package/src/planner/nodes/cache-node.ts +11 -2
- package/src/planner/nodes/constraint-check-node.ts +16 -7
- package/src/planner/nodes/create-assertion-node.ts +51 -0
- package/src/planner/nodes/create-index-node.ts +2 -2
- package/src/planner/nodes/create-table-node.ts +2 -2
- package/src/planner/nodes/cte-node.ts +30 -4
- package/src/planner/nodes/cte-reference-node.ts +2 -2
- package/src/planner/nodes/declarative-schema.ts +221 -0
- package/src/planner/nodes/delete-node.ts +102 -96
- package/src/planner/nodes/distinct-node.ts +20 -6
- package/src/planner/nodes/dml-executor-node.ts +2 -2
- package/src/planner/nodes/drop-assertion-node.ts +50 -0
- package/src/planner/nodes/drop-table-node.ts +1 -0
- package/src/planner/nodes/filter.ts +56 -3
- package/src/planner/nodes/insert-node.ts +126 -120
- package/src/planner/nodes/internal-recursive-cte-ref-node.ts +5 -20
- package/src/planner/nodes/join-node.ts +122 -4
- package/src/planner/nodes/limit-offset.ts +132 -113
- package/src/planner/nodes/plan-node-type.ts +95 -87
- package/src/planner/nodes/plan-node.ts +8 -8
- package/src/planner/nodes/pragma.ts +6 -3
- package/src/planner/nodes/project-node.ts +101 -7
- package/src/planner/nodes/recursive-cte-node.ts +6 -6
- package/src/planner/nodes/reference.ts +334 -312
- package/src/planner/nodes/remote-query-node.ts +73 -0
- package/src/planner/nodes/retrieve-node.ts +86 -0
- package/src/planner/nodes/returning-node.ts +52 -10
- package/src/planner/nodes/sequencing-node.ts +2 -2
- package/src/planner/nodes/set-operation-node.ts +3 -3
- package/src/planner/nodes/sort.ts +33 -4
- package/src/planner/nodes/stream-aggregate.ts +5 -1
- package/src/planner/nodes/table-access-nodes.ts +31 -6
- package/src/planner/nodes/table-function-call.ts +134 -127
- package/src/planner/nodes/transaction-node.ts +2 -2
- package/src/planner/nodes/update-node.ts +138 -132
- package/src/planner/nodes/view-reference-node.ts +1 -1
- package/src/planner/nodes/window-function.ts +2 -2
- package/src/planner/nodes/window-node.ts +1 -1
- package/src/planner/optimizer-tuning.ts +18 -0
- package/src/planner/optimizer.ts +171 -96
- package/src/planner/planning-context.ts +10 -3
- package/src/planner/resolve.ts +10 -9
- package/src/planner/rules/README.md +96 -96
- package/src/planner/rules/access/rule-select-access-path.ts +384 -184
- package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +118 -104
- package/src/planner/rules/cache/rule-cte-optimization.ts +29 -16
- package/src/planner/rules/cache/rule-materialization-advisory.ts +14 -7
- package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +38 -44
- package/src/planner/rules/join/rule-join-greedy-commute.ts +48 -0
- package/src/planner/rules/join/rule-join-key-inference.ts +35 -0
- package/src/planner/rules/join/rule-quickpick-enumeration.ts +267 -0
- package/src/planner/rules/predicate/rule-predicate-pushdown.ts +144 -0
- package/src/planner/rules/retrieve/rule-grow-retrieve.ts +337 -0
- package/src/planner/scopes/registered.ts +8 -0
- package/src/planner/stats/index.ts +0 -65
- package/src/planner/util/key-utils.ts +46 -0
- package/src/planner/validation/plan-validator.ts +5 -3
- package/src/runtime/deferred-constraint-queue.ts +196 -0
- package/src/runtime/emission-context.ts +11 -5
- package/src/runtime/emit/add-constraint.ts +26 -5
- package/src/runtime/emit/aggregate.ts +9 -7
- package/src/runtime/emit/array-index.ts +2 -2
- package/src/runtime/emit/binary.ts +26 -8
- package/src/runtime/emit/cache.ts +2 -2
- package/src/runtime/emit/cast.ts +2 -2
- package/src/runtime/emit/constraint-check.ts +150 -28
- package/src/runtime/emit/create-assertion.ts +82 -0
- package/src/runtime/emit/cte-reference.ts +2 -2
- package/src/runtime/emit/cte.ts +2 -2
- package/src/runtime/emit/distinct.ts +2 -2
- package/src/runtime/emit/dml-executor.ts +20 -12
- package/src/runtime/emit/drop-assertion.ts +45 -0
- package/src/runtime/emit/filter.ts +4 -4
- package/src/runtime/emit/join.ts +8 -7
- package/src/runtime/emit/limit-offset.ts +2 -2
- package/src/runtime/emit/pragma.ts +2 -2
- package/src/runtime/emit/project.ts +2 -2
- package/src/runtime/emit/recursive-cte.ts +2 -2
- package/src/runtime/emit/remote-query.ts +47 -0
- package/src/runtime/emit/retrieve.ts +15 -0
- package/src/runtime/emit/returning.ts +4 -4
- package/src/runtime/emit/scalar-function.ts +2 -2
- package/src/runtime/emit/scan.ts +29 -13
- package/src/runtime/emit/schema-declarative.ts +205 -0
- package/src/runtime/emit/sequencing.ts +3 -3
- package/src/runtime/emit/set-operation.ts +7 -7
- package/src/runtime/emit/sort.ts +2 -2
- package/src/runtime/emit/subquery.ts +10 -10
- package/src/runtime/emit/transaction.ts +46 -8
- package/src/runtime/emit/values.ts +2 -2
- package/src/runtime/emit/window.ts +3 -3
- package/src/runtime/emitters.ts +1 -0
- package/src/runtime/register.ts +150 -135
- package/src/runtime/scheduler.ts +2 -2
- package/src/runtime/types.ts +10 -7
- package/src/runtime/utils.ts +3 -2
- package/src/schema/assertion.ts +21 -0
- package/src/schema/catalog.ts +208 -0
- package/src/schema/change-events.ts +2 -2
- package/src/schema/column.ts +2 -0
- package/src/schema/declared-schema-manager.ts +82 -0
- package/src/schema/function.ts +5 -2
- package/src/schema/manager.ts +742 -709
- package/src/schema/schema-differ.ts +214 -0
- package/src/schema/schema-hasher.ts +44 -0
- package/src/schema/schema.ts +23 -0
- package/src/schema/table.ts +398 -364
- package/src/schema/window-function.ts +2 -0
- package/src/util/ast-stringify.ts +869 -764
- package/src/util/environment.ts +2 -2
- package/src/util/plugin-loader.ts +184 -0
- package/src/util/row-descriptor.ts +1 -1
- package/src/util/serialization.ts +2 -0
- package/src/vtab/best-access-plan.ts +2 -1
- package/src/vtab/manifest.ts +1 -0
- package/src/vtab/memory/index.ts +178 -178
- package/src/vtab/memory/layer/base.ts +275 -273
- package/src/vtab/memory/layer/interface.ts +47 -47
- package/src/vtab/memory/layer/manager.ts +33 -11
- package/src/vtab/memory/layer/safe-iterate.ts +3 -3
- package/src/vtab/memory/layer/transaction.ts +229 -229
- package/src/vtab/memory/module.ts +24 -18
- package/src/vtab/memory/table.ts +256 -253
- package/src/vtab/memory/utils/logging.ts +6 -3
- package/src/vtab/module.ts +170 -140
- package/src/vtab/table.ts +162 -143
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from '../../common/logger.js';
|
|
2
|
-
import type { SqlValue } from '../../common/types.js';
|
|
2
|
+
import type { SqlValue, JSONValue } from '../../common/types.js';
|
|
3
3
|
|
|
4
4
|
const log = createLogger('func:builtins:json-helpers');
|
|
5
5
|
|
|
@@ -9,12 +9,12 @@ const log = createLogger('func:builtins:json-helpers');
|
|
|
9
9
|
* @param jsonString The string to parse as JSON
|
|
10
10
|
* @returns The parsed value or null if parsing failed
|
|
11
11
|
*/
|
|
12
|
-
export function safeJsonParse(jsonString: SqlValue):
|
|
12
|
+
export function safeJsonParse(jsonString: SqlValue): JSONValue | null {
|
|
13
13
|
if (typeof jsonString !== 'string') {
|
|
14
14
|
return null;
|
|
15
15
|
}
|
|
16
16
|
try {
|
|
17
|
-
return JSON.parse(jsonString);
|
|
17
|
+
return JSON.parse(jsonString) as JSONValue;
|
|
18
18
|
} catch {
|
|
19
19
|
return null;
|
|
20
20
|
}
|
|
@@ -32,14 +32,14 @@ export function safeJsonParse(jsonString: SqlValue): any | null {
|
|
|
32
32
|
* @returns Path resolution information or null if the path is invalid
|
|
33
33
|
*/
|
|
34
34
|
export function resolveJsonPathForModify(
|
|
35
|
-
data:
|
|
35
|
+
data: JSONValue,
|
|
36
36
|
path: string,
|
|
37
37
|
createParents: boolean = false
|
|
38
|
-
): { parent:
|
|
38
|
+
): { parent: JSONValue | null; key: string | number; value: JSONValue | undefined; exists: boolean } | null {
|
|
39
39
|
if (!path || typeof path !== 'string') return null;
|
|
40
40
|
|
|
41
|
-
let current = data;
|
|
42
|
-
let parent:
|
|
41
|
+
let current: JSONValue | undefined = data;
|
|
42
|
+
let parent: JSONValue | null = null;
|
|
43
43
|
let finalKey: string | number | null = null;
|
|
44
44
|
let remainingPath = path.startsWith('$') ? path.substring(1) : path;
|
|
45
45
|
|
|
@@ -48,7 +48,7 @@ export function resolveJsonPathForModify(
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
while (remainingPath.length > 0) {
|
|
51
|
-
parent = current;
|
|
51
|
+
parent = current as JSONValue;
|
|
52
52
|
finalKey = null;
|
|
53
53
|
|
|
54
54
|
if (current === undefined || current === null) return null;
|
|
@@ -67,19 +67,19 @@ export function resolveJsonPathForModify(
|
|
|
67
67
|
keyStr = match[1];
|
|
68
68
|
remainingPath = remainingPath.substring(keyStr.length);
|
|
69
69
|
}
|
|
70
|
-
if (typeof current !== 'object' || Array.isArray(current)) {
|
|
70
|
+
if (typeof current !== 'object' || current === null || Array.isArray(current)) {
|
|
71
71
|
if (!createParents || typeof parent !== 'object' || parent === null || Array.isArray(parent) || typeof finalKey !== 'string') {
|
|
72
72
|
return { parent, key: keyStr, value: undefined, exists: false };
|
|
73
73
|
}
|
|
74
74
|
log(`JSON Path: Creating intermediate object for key "%s"`, finalKey);
|
|
75
|
-
parent[finalKey] = {};
|
|
76
|
-
current = parent[finalKey];
|
|
75
|
+
(parent as Record<string, JSONValue>)[finalKey] = {};
|
|
76
|
+
current = (parent as Record<string, JSONValue>)[finalKey];
|
|
77
77
|
parent = current;
|
|
78
78
|
finalKey = keyStr;
|
|
79
|
-
current = current[keyStr];
|
|
79
|
+
current = (current as Record<string, JSONValue>)[keyStr];
|
|
80
80
|
} else {
|
|
81
81
|
finalKey = keyStr;
|
|
82
|
-
current = current[keyStr];
|
|
82
|
+
current = (current as Record<string, JSONValue>)[keyStr];
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
} else if (remainingPath.startsWith('[')) {
|
|
@@ -95,13 +95,13 @@ export function resolveJsonPathForModify(
|
|
|
95
95
|
if (!createParents || parent === null || finalKey === null) {
|
|
96
96
|
return { parent, key: index, value: undefined, exists: false };
|
|
97
97
|
}
|
|
98
|
-
const newParentArray:
|
|
98
|
+
const newParentArray: JSONValue[] = [];
|
|
99
99
|
if (Array.isArray(parent) && typeof finalKey === 'number') {
|
|
100
100
|
log(`JSON Path: Creating intermediate array for index %d`, finalKey);
|
|
101
101
|
parent[finalKey] = newParentArray;
|
|
102
|
-
} else if (typeof parent === 'object' && !Array.isArray(parent) && typeof finalKey === 'string') {
|
|
102
|
+
} else if (typeof parent === 'object' && parent !== null && !Array.isArray(parent) && typeof finalKey === 'string') {
|
|
103
103
|
log(`JSON Path: Creating intermediate array for key "%s"`, finalKey);
|
|
104
|
-
parent[finalKey] = newParentArray;
|
|
104
|
+
(parent as Record<string, JSONValue>)[finalKey] = newParentArray;
|
|
105
105
|
} else {
|
|
106
106
|
return { parent, key: index, value: undefined, exists: false };
|
|
107
107
|
}
|
|
@@ -134,7 +134,7 @@ export function resolveJsonPathForModify(
|
|
|
134
134
|
* @param value The SQL value to convert
|
|
135
135
|
* @returns A JSON-compatible value
|
|
136
136
|
*/
|
|
137
|
-
export function prepareJsonValue(value: SqlValue):
|
|
137
|
+
export function prepareJsonValue(value: SqlValue): JSONValue {
|
|
138
138
|
if (typeof value === 'bigint') {
|
|
139
139
|
if (value >= Number.MIN_SAFE_INTEGER && value <= Number.MAX_SAFE_INTEGER) {
|
|
140
140
|
return Number(value);
|
|
@@ -185,7 +185,7 @@ export function deepCopyJson(data: any): any {
|
|
|
185
185
|
* @param value The value to check
|
|
186
186
|
* @returns The SQLite JSON type name ('null', 'true', 'false', 'integer', 'real', 'text', 'array', 'object')
|
|
187
187
|
*/
|
|
188
|
-
export function getJsonType(value:
|
|
188
|
+
export function getJsonType(value: JSONValue): string {
|
|
189
189
|
if (value === null) return 'null';
|
|
190
190
|
switch (typeof value) {
|
|
191
191
|
case 'boolean': return value ? 'true' : 'false';
|
|
@@ -208,7 +208,7 @@ export function getJsonType(value: any): string {
|
|
|
208
208
|
* @param path The path to evaluate
|
|
209
209
|
* @returns The value at the path or undefined if not found
|
|
210
210
|
*/
|
|
211
|
-
export function evaluateJsonPathBasic(data:
|
|
211
|
+
export function evaluateJsonPathBasic(data: JSONValue, path: string): JSONValue | undefined {
|
|
212
212
|
if (!path || path === '$') return data;
|
|
213
213
|
|
|
214
214
|
const parts = path.startsWith('$.') ? path.substring(2).split('.') :
|
|
@@ -227,8 +227,8 @@ export function evaluateJsonPathBasic(data: any, path: string): any | undefined
|
|
|
227
227
|
} else {
|
|
228
228
|
return undefined;
|
|
229
229
|
}
|
|
230
|
-
} else if (typeof current === 'object' && current !== null && Object.prototype.hasOwnProperty.call(current, part)) {
|
|
231
|
-
current = current[part];
|
|
230
|
+
} else if (typeof current === 'object' && current !== null && !Array.isArray(current) && Object.prototype.hasOwnProperty.call(current, part)) {
|
|
231
|
+
current = (current as Record<string, JSONValue>)[part];
|
|
232
232
|
} else {
|
|
233
233
|
return undefined;
|
|
234
234
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { Row } from "../../common/types.js";
|
|
2
|
-
import type { SqlValue } from "../../common/types.js";
|
|
1
|
+
import type { Row, SqlValue, JSONValue } from "../../common/types.js";
|
|
3
2
|
import { SqlDataType } from "../../common/types.js";
|
|
4
3
|
import { createTableValuedFunction } from "../registration.js";
|
|
5
4
|
import { QuereusError } from "../../common/errors.js";
|
|
@@ -42,13 +41,13 @@ export const jsonEachFunc = createTableValuedFunction(
|
|
|
42
41
|
}
|
|
43
42
|
|
|
44
43
|
const rootPathStr = (typeof rootPath === 'string' && rootPath) ? rootPath : null;
|
|
45
|
-
let startNode = parsedJson;
|
|
44
|
+
let startNode: JSONValue | undefined = parsedJson;
|
|
46
45
|
|
|
47
46
|
if (rootPathStr) {
|
|
48
47
|
startNode = evaluateJsonPathBasic(startNode, rootPathStr);
|
|
49
48
|
}
|
|
50
49
|
|
|
51
|
-
const localStack: { value:
|
|
50
|
+
const localStack: { value: JSONValue; parentPath: string; parentKey: string | number | null; parentId: number; }[] = [];
|
|
52
51
|
let localElementIdCounter = 0;
|
|
53
52
|
|
|
54
53
|
if (startNode !== undefined) {
|
|
@@ -70,8 +69,8 @@ export const jsonEachFunc = createTableValuedFunction(
|
|
|
70
69
|
const path = currentState.parentPath;
|
|
71
70
|
const fullkey = key !== null ? `${path}${typeof key === 'number' ? `[${key}]` : `.${key}`}` : path;
|
|
72
71
|
const type = getJsonType(currentValue);
|
|
73
|
-
const atom = (type === 'object' || type === 'array') ? null : currentValue;
|
|
74
|
-
const valueForColumn = (type === 'object' || type === 'array') ? jsonStringify(currentValue) : currentValue;
|
|
72
|
+
const atom: SqlValue = (type === 'object' || type === 'array') ? null : currentValue as SqlValue;
|
|
73
|
+
const valueForColumn: SqlValue = (type === 'object' || type === 'array') ? jsonStringify(currentValue) : currentValue as SqlValue;
|
|
75
74
|
|
|
76
75
|
const row: Row = [
|
|
77
76
|
key,
|
|
@@ -93,11 +92,11 @@ export const jsonEachFunc = createTableValuedFunction(
|
|
|
93
92
|
parentId: id,
|
|
94
93
|
});
|
|
95
94
|
}
|
|
96
|
-
} else if (typeof currentValue === 'object' && currentValue !== null) {
|
|
95
|
+
} else if (typeof currentValue === 'object' && currentValue !== null && !Array.isArray(currentValue)) {
|
|
97
96
|
const keys = Object.keys(currentValue).sort().reverse();
|
|
98
97
|
for (const objKey of keys) {
|
|
99
98
|
localStack.push({
|
|
100
|
-
value: currentValue[objKey],
|
|
99
|
+
value: (currentValue as Record<string, JSONValue>)[objKey],
|
|
101
100
|
parentPath: fullkey,
|
|
102
101
|
parentKey: objKey,
|
|
103
102
|
parentId: id,
|
|
@@ -144,7 +143,7 @@ export const jsonTreeFunc = createTableValuedFunction(
|
|
|
144
143
|
}
|
|
145
144
|
|
|
146
145
|
const rootPathStr = (typeof rootPath === 'string' && rootPath) ? rootPath : null;
|
|
147
|
-
let startNode = parsedJson;
|
|
146
|
+
let startNode: JSONValue | undefined = parsedJson;
|
|
148
147
|
|
|
149
148
|
if (rootPathStr) {
|
|
150
149
|
startNode = evaluateJsonPathBasic(startNode, rootPathStr);
|
|
@@ -3,7 +3,7 @@ import type { Operation } from 'fast-json-patch';
|
|
|
3
3
|
const { applyPatch } = fastJsonPatch;
|
|
4
4
|
|
|
5
5
|
import { createLogger } from '../../common/logger.js';
|
|
6
|
-
import type { SqlValue } from '../../common/types.js';
|
|
6
|
+
import type { SqlValue, JSONValue } from '../../common/types.js';
|
|
7
7
|
import { createScalarFunction, createAggregateFunction } from '../registration.js';
|
|
8
8
|
import { safeJsonParse, resolveJsonPathForModify, prepareJsonValue, deepCopyJson, getJsonType } from './json-helpers.js';
|
|
9
9
|
|
|
@@ -27,7 +27,7 @@ export const jsonTypeFunc = createScalarFunction(
|
|
|
27
27
|
const data = safeJsonParse(json);
|
|
28
28
|
if (data === null && typeof json === 'string') return null; // Invalid JSON input
|
|
29
29
|
|
|
30
|
-
let targetValue = data;
|
|
30
|
+
let targetValue: JSONValue | undefined = data;
|
|
31
31
|
if (path !== undefined && path !== null) {
|
|
32
32
|
if (typeof path !== 'string') return 'null'; // Invalid path
|
|
33
33
|
const resolved = resolveJsonPathForModify(data, path);
|
|
@@ -35,7 +35,7 @@ export const jsonTypeFunc = createScalarFunction(
|
|
|
35
35
|
// If path evaluation leads nowhere, SQLite returns NULL type
|
|
36
36
|
if (targetValue === undefined) return null;
|
|
37
37
|
}
|
|
38
|
-
return getJsonType(targetValue);
|
|
38
|
+
return getJsonType(targetValue as JSONValue);
|
|
39
39
|
}
|
|
40
40
|
);
|
|
41
41
|
|
|
@@ -174,7 +174,7 @@ export const jsonArrayLengthFunc = createScalarFunction(
|
|
|
174
174
|
const data = safeJsonParse(json);
|
|
175
175
|
if (data === null && typeof json === 'string') return null;
|
|
176
176
|
|
|
177
|
-
let targetValue = data;
|
|
177
|
+
let targetValue: JSONValue | undefined = data;
|
|
178
178
|
if (path !== undefined && path !== null) {
|
|
179
179
|
if (typeof path !== 'string') return 0; // Invalid path -> 0 length
|
|
180
180
|
const resolved = resolveJsonPathForModify(data, path);
|
|
@@ -204,7 +204,7 @@ export const jsonPatchFunc = createScalarFunction(
|
|
|
204
204
|
if (!Array.isArray(patchData)) return null; // Invalid patch JSON (must be array)
|
|
205
205
|
|
|
206
206
|
// Ensure patch operations have the correct structure (basic check)
|
|
207
|
-
const patch = patchData as Operation[];
|
|
207
|
+
const patch = patchData as unknown as Operation[];
|
|
208
208
|
if (!patch.every(op => typeof op === 'object' && op !== null && 'op' in op && 'path' in op)) {
|
|
209
209
|
return null; // Invalid operation structure
|
|
210
210
|
}
|
|
@@ -215,6 +215,7 @@ export const jsonPatchFunc = createScalarFunction(
|
|
|
215
215
|
// If data came from elsewhere, we might need deepCopyJson first.
|
|
216
216
|
const result = applyPatch(data, patch, true /* validate operations */).newDocument;
|
|
217
217
|
return JSON.stringify(result);
|
|
218
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
218
219
|
} catch (e: any) {
|
|
219
220
|
errorLog('json_patch failed: %s, %O', e?.message, e);
|
|
220
221
|
return null; // Return NULL on patch failure
|
|
@@ -258,8 +259,8 @@ export const jsonInsertFunc = createScalarFunction(
|
|
|
258
259
|
parent.splice(key, 0, preparedValue); // Insert *before* existing element
|
|
259
260
|
}
|
|
260
261
|
// Ignore if key > parent.length?
|
|
261
|
-
} else if (typeof parent === 'object' && typeof key === 'string') {
|
|
262
|
-
parent[key] = preparedValue;
|
|
262
|
+
} else if (typeof parent === 'object' && parent !== null && !Array.isArray(parent) && typeof key === 'string') {
|
|
263
|
+
(parent as Record<string, JSONValue>)[key] = preparedValue;
|
|
263
264
|
}
|
|
264
265
|
// else: Cannot insert into non-container or invalid key type - ignore
|
|
265
266
|
}
|
|
@@ -404,9 +405,9 @@ export const jsonRemoveFunc = createScalarFunction(
|
|
|
404
405
|
if (key >= 0 && key < parent.length) {
|
|
405
406
|
parent.splice(key, 1); // Remove array element
|
|
406
407
|
}
|
|
407
|
-
} else if (typeof parent === 'object' && typeof key === 'string') {
|
|
408
|
+
} else if (typeof parent === 'object' && parent !== null && !Array.isArray(parent) && typeof key === 'string') {
|
|
408
409
|
if (Object.prototype.hasOwnProperty.call(parent, key)) {
|
|
409
|
-
delete parent[key]; // Remove object property
|
|
410
|
+
delete (parent as Record<string, JSONValue>)[key]; // Remove object property
|
|
410
411
|
}
|
|
411
412
|
}
|
|
412
413
|
// else: Cannot remove from non-container or invalid key type - ignore
|
|
@@ -6,6 +6,9 @@ import { QuereusError } from "../../common/errors.js";
|
|
|
6
6
|
import { StatusCode } from "../../common/types.js";
|
|
7
7
|
import type { Database } from "../../core/database.js";
|
|
8
8
|
import type { FunctionSchema } from "../../schema/function.js";
|
|
9
|
+
import { isScalarFunctionSchema, isTableValuedFunctionSchema, isAggregateFunctionSchema, isWindowFunctionSchema } from "../../schema/function.js";
|
|
10
|
+
import { Schema } from "../../schema/schema.js";
|
|
11
|
+
import { ColumnSchema } from "../../schema/column.js";
|
|
9
12
|
|
|
10
13
|
/**
|
|
11
14
|
* Generates a function signature string for display
|
|
@@ -41,12 +44,12 @@ export const schemaFunc = createIntegratedTableValuedFunction(
|
|
|
41
44
|
try {
|
|
42
45
|
const schemaManager = db.schemaManager;
|
|
43
46
|
|
|
44
|
-
const processSchemaInstance = function* (schemaInstance:
|
|
47
|
+
const processSchemaInstance = function* (schemaInstance: Schema) {
|
|
45
48
|
// Process Tables
|
|
46
49
|
for (const tableSchema of schemaInstance.getAllTables()) {
|
|
47
50
|
let createSql: string | null = null;
|
|
48
51
|
try {
|
|
49
|
-
const columnsStr = tableSchema.columns.map((c:
|
|
52
|
+
const columnsStr = tableSchema.columns.map((c: ColumnSchema) => `"${c.name}" ${c.affinity ?? SqlDataType.TEXT}`).join(', ');
|
|
50
53
|
const argsStr = Object.entries(tableSchema.vtabArgs ?? {}).map(([key, value]) => `${key}=${value}`).join(', ');
|
|
51
54
|
createSql = `create table "${tableSchema.name}" (${columnsStr}) using ${tableSchema.vtabModuleName}(${argsStr})`;
|
|
52
55
|
} catch {
|
|
@@ -78,6 +81,7 @@ export const schemaFunc = createIntegratedTableValuedFunction(
|
|
|
78
81
|
// Process temp schema
|
|
79
82
|
yield* processSchemaInstance(schemaManager.getTempSchema());
|
|
80
83
|
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
81
85
|
} catch (error: any) {
|
|
82
86
|
// If schema introspection fails, yield an error row
|
|
83
87
|
yield ['error', 'schema_error', 'schema_error', `Failed to introspect schema: ${error.message}`];
|
|
@@ -131,6 +135,7 @@ export const tableInfoFunc = createIntegratedTableValuedFunction(
|
|
|
131
135
|
isPrimaryKey ? 1 : 0 // pk
|
|
132
136
|
];
|
|
133
137
|
}
|
|
138
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
134
139
|
} catch (error: any) {
|
|
135
140
|
// If table info fails, yield an error row
|
|
136
141
|
yield [0, 'error', 'error', 1, `Failed to get table info: ${error.message}`, 0];
|
|
@@ -164,14 +169,28 @@ export const functionInfoFunc = createIntegratedTableValuedFunction(
|
|
|
164
169
|
try {
|
|
165
170
|
const schemaManager = db.schemaManager;
|
|
166
171
|
|
|
167
|
-
const processFunctions = function* (schemaInstance:
|
|
172
|
+
const processFunctions = function* (schemaInstance: Schema) {
|
|
168
173
|
for (const funcSchema of schemaInstance._getAllFunctions()) {
|
|
169
174
|
const isDeterministic = (funcSchema.flags & 0x800) !== 0; // FunctionFlags.DETERMINISTIC
|
|
170
175
|
|
|
176
|
+
// Determine function type based on schema type guards
|
|
177
|
+
let functionType: string;
|
|
178
|
+
if (isScalarFunctionSchema(funcSchema)) {
|
|
179
|
+
functionType = 'scalar';
|
|
180
|
+
} else if (isTableValuedFunctionSchema(funcSchema)) {
|
|
181
|
+
functionType = 'table';
|
|
182
|
+
} else if (isAggregateFunctionSchema(funcSchema)) {
|
|
183
|
+
functionType = 'aggregate';
|
|
184
|
+
} else if (isWindowFunctionSchema(funcSchema)) {
|
|
185
|
+
functionType = 'window';
|
|
186
|
+
} else {
|
|
187
|
+
functionType = 'unknown';
|
|
188
|
+
}
|
|
189
|
+
|
|
171
190
|
yield [
|
|
172
191
|
funcSchema.name, // name
|
|
173
192
|
funcSchema.numArgs, // num_args
|
|
174
|
-
|
|
193
|
+
functionType, // type
|
|
175
194
|
isDeterministic ? 1 : 0, // deterministic
|
|
176
195
|
funcSchema.flags, // flags
|
|
177
196
|
stringifyCreateFunction(funcSchema) // signature
|
|
@@ -185,6 +204,7 @@ export const functionInfoFunc = createIntegratedTableValuedFunction(
|
|
|
185
204
|
// Process temp schema functions
|
|
186
205
|
yield* processFunctions(schemaManager.getTempSchema());
|
|
187
206
|
|
|
207
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
188
208
|
} catch (error: any) {
|
|
189
209
|
// If function info fails, yield an error row
|
|
190
210
|
yield ['error', -1, 'error', 0, 0, `Failed to get function info: ${error.message}`];
|
package/src/func/context.ts
CHANGED
|
@@ -109,12 +109,14 @@ export interface QuereusContext {
|
|
|
109
109
|
* @param createIfNotFound If true and no context exists, creates a new empty object
|
|
110
110
|
* @returns The aggregate context for the current group, or undefined
|
|
111
111
|
*/
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
112
113
|
getAggregateContext<T = any>(createIfNotFound?: boolean): T | undefined;
|
|
113
114
|
|
|
114
115
|
/**
|
|
115
116
|
* Sets the context (accumulator) for an aggregate function.
|
|
116
117
|
* @param context The new state for the aggregate context
|
|
117
118
|
*/
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
118
120
|
setAggregateContext<T = any>(context: T): void;
|
|
119
121
|
}
|
|
120
122
|
|
|
@@ -133,6 +135,7 @@ export class FunctionContext implements QuereusContext {
|
|
|
133
135
|
private userData: unknown;
|
|
134
136
|
private db: Database;
|
|
135
137
|
private auxData: Map<number, { data: unknown, destructor?: (data: unknown) => void }> = new Map();
|
|
138
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
136
139
|
private _aggregateContext: any | undefined = undefined;
|
|
137
140
|
|
|
138
141
|
constructor(db: Database, userData?: unknown) {
|
|
@@ -171,6 +174,7 @@ export class FunctionContext implements QuereusContext {
|
|
|
171
174
|
/**
|
|
172
175
|
* @internal Sets the aggregate context reference from VDBE
|
|
173
176
|
*/
|
|
177
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
174
178
|
_setAggregateContextRef(contextRef: any | undefined): void {
|
|
175
179
|
this._aggregateContext = contextRef;
|
|
176
180
|
}
|
|
@@ -178,6 +182,7 @@ export class FunctionContext implements QuereusContext {
|
|
|
178
182
|
/**
|
|
179
183
|
* @internal Gets the potentially modified aggregate context
|
|
180
184
|
*/
|
|
185
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
181
186
|
_getAggregateContextRef(): any | undefined {
|
|
182
187
|
return this._aggregateContext;
|
|
183
188
|
}
|
|
@@ -224,6 +229,7 @@ export class FunctionContext implements QuereusContext {
|
|
|
224
229
|
}
|
|
225
230
|
}
|
|
226
231
|
|
|
232
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
227
233
|
getAggregateContext<T = any>(createIfNotFound: boolean = false): T | undefined {
|
|
228
234
|
if (this._aggregateContext === undefined && createIfNotFound) {
|
|
229
235
|
return {} as T;
|
|
@@ -231,6 +237,7 @@ export class FunctionContext implements QuereusContext {
|
|
|
231
237
|
return this._aggregateContext as T | undefined;
|
|
232
238
|
}
|
|
233
239
|
|
|
240
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
234
241
|
setAggregateContext<T = any>(context: T): void {
|
|
235
242
|
this._aggregateContext = context;
|
|
236
243
|
}
|
package/src/func/registration.ts
CHANGED
|
@@ -36,6 +36,10 @@ interface TableValuedFuncOptions {
|
|
|
36
36
|
returnType?: RelationType;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
/* Interim values for aggregate functions don't have to be SqlValue; they can be anything */
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
+
export type AggValue = any;
|
|
42
|
+
|
|
39
43
|
/**
|
|
40
44
|
* Configuration options for aggregate functions
|
|
41
45
|
*/
|
|
@@ -49,7 +53,7 @@ interface AggregateFuncOptions {
|
|
|
49
53
|
/** Whether the function is deterministic (affects caching) */
|
|
50
54
|
deterministic?: boolean;
|
|
51
55
|
/** Initial accumulator value */
|
|
52
|
-
initialValue?:
|
|
56
|
+
initialValue?: AggValue;
|
|
53
57
|
/** Return type information */
|
|
54
58
|
returnType?: ScalarType;
|
|
55
59
|
}
|
package/src/index.ts
CHANGED
|
@@ -11,7 +11,7 @@ export { Statement } from './core/statement.js';
|
|
|
11
11
|
|
|
12
12
|
// Common data types and constants
|
|
13
13
|
export { StatusCode, SqlDataType } from './common/types.js';
|
|
14
|
-
export type { SqlValue, SqlParameters, Row, MaybePromise } from './common/types.js';
|
|
14
|
+
export type { SqlValue, SqlParameters, Row, MaybePromise, RowOp } from './common/types.js';
|
|
15
15
|
export { ConflictResolution, IndexConstraintOp, VTabConfig, FunctionFlags } from './common/constants.js';
|
|
16
16
|
export { QuereusError, MisuseError, ConstraintError, unwrapError, formatErrorChain, getPrimaryError } from './common/errors.js';
|
|
17
17
|
export type { ErrorInfo } from './common/errors.js';
|
|
@@ -49,7 +49,7 @@ export {
|
|
|
49
49
|
|
|
50
50
|
// SQL Parser and Compiler
|
|
51
51
|
export { Parser } from './parser/parser.js';
|
|
52
|
-
export { Lexer, TokenType } from './parser/lexer.js';
|
|
52
|
+
export { Lexer, TokenType, KEYWORDS } from './parser/lexer.js';
|
|
53
53
|
export { ParseError } from './parser/parser.js';
|
|
54
54
|
|
|
55
55
|
// Schema management
|
|
@@ -82,7 +82,7 @@ export { Latches } from './util/latches.js';
|
|
|
82
82
|
import './runtime/register.js';
|
|
83
83
|
|
|
84
84
|
// Re-export plugin system
|
|
85
|
-
export { dynamicLoadModule, validatePluginUrl } from './util/plugin-loader.js';
|
|
85
|
+
export { dynamicLoadModule, validatePluginUrl, loadPlugin } from './util/plugin-loader.js';
|
|
86
86
|
export type {
|
|
87
87
|
PluginManifest,
|
|
88
88
|
PluginRecord,
|