@quereus/quereus 0.1.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 +228 -0
- package/dist/src/common/constants.d.ts +49 -0
- package/dist/src/common/constants.d.ts.map +1 -0
- package/dist/src/common/constants.js +62 -0
- package/dist/src/common/constants.js.map +1 -0
- package/dist/src/common/datatype.d.ts +72 -0
- package/dist/src/common/datatype.d.ts.map +1 -0
- package/dist/src/common/datatype.js +10 -0
- package/dist/src/common/datatype.js.map +1 -0
- package/dist/src/common/errors.d.ts +90 -0
- package/dist/src/common/errors.d.ts.map +1 -0
- package/dist/src/common/errors.js +142 -0
- package/dist/src/common/errors.js.map +1 -0
- package/dist/src/common/logger.d.ts +18 -0
- package/dist/src/common/logger.d.ts.map +1 -0
- package/dist/src/common/logger.js +22 -0
- package/dist/src/common/logger.js.map +1 -0
- package/dist/src/common/type-inference.d.ts +11 -0
- package/dist/src/common/type-inference.d.ts.map +1 -0
- package/dist/src/common/type-inference.js +44 -0
- package/dist/src/common/type-inference.js.map +1 -0
- package/dist/src/common/types.d.ts +131 -0
- package/dist/src/common/types.d.ts.map +1 -0
- package/dist/src/common/types.js +53 -0
- package/dist/src/common/types.js.map +1 -0
- package/dist/src/core/database-options.d.ts +67 -0
- package/dist/src/core/database-options.d.ts.map +1 -0
- package/dist/src/core/database-options.js +211 -0
- package/dist/src/core/database-options.js.map +1 -0
- package/dist/src/core/database.d.ts +214 -0
- package/dist/src/core/database.d.ts.map +1 -0
- package/dist/src/core/database.js +750 -0
- package/dist/src/core/database.js.map +1 -0
- package/dist/src/core/param.d.ts +4 -0
- package/dist/src/core/param.d.ts.map +1 -0
- package/dist/src/core/param.js +46 -0
- package/dist/src/core/param.js.map +1 -0
- package/dist/src/core/statement.d.ts +94 -0
- package/dist/src/core/statement.d.ts.map +1 -0
- package/dist/src/core/statement.js +482 -0
- package/dist/src/core/statement.js.map +1 -0
- package/dist/src/func/builtins/aggregate.d.ts +13 -0
- package/dist/src/func/builtins/aggregate.d.ts.map +1 -0
- package/dist/src/func/builtins/aggregate.js +190 -0
- package/dist/src/func/builtins/aggregate.js.map +1 -0
- package/dist/src/func/builtins/builtin-window-functions.d.ts +2 -0
- package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -0
- package/dist/src/func/builtins/builtin-window-functions.js +161 -0
- package/dist/src/func/builtins/builtin-window-functions.js.map +1 -0
- package/dist/src/func/builtins/datetime.d.ts +6 -0
- package/dist/src/func/builtins/datetime.d.ts.map +1 -0
- package/dist/src/func/builtins/datetime.js +417 -0
- package/dist/src/func/builtins/datetime.js.map +1 -0
- package/dist/src/func/builtins/explain.d.ts +7 -0
- package/dist/src/func/builtins/explain.d.ts.map +1 -0
- package/dist/src/func/builtins/explain.js +570 -0
- package/dist/src/func/builtins/explain.js.map +1 -0
- package/dist/src/func/builtins/generation.d.ts +2 -0
- package/dist/src/func/builtins/generation.d.ts.map +1 -0
- package/dist/src/func/builtins/generation.js +36 -0
- package/dist/src/func/builtins/generation.js.map +1 -0
- package/dist/src/func/builtins/index.d.ts +4 -0
- package/dist/src/func/builtins/index.d.ts.map +1 -0
- package/dist/src/func/builtins/index.js +106 -0
- package/dist/src/func/builtins/index.js.map +1 -0
- package/dist/src/func/builtins/json-helpers.d.ts +64 -0
- package/dist/src/func/builtins/json-helpers.d.ts.map +1 -0
- package/dist/src/func/builtins/json-helpers.js +237 -0
- package/dist/src/func/builtins/json-helpers.js.map +1 -0
- package/dist/src/func/builtins/json-tvf.d.ts +3 -0
- package/dist/src/func/builtins/json-tvf.d.ts.map +1 -0
- package/dist/src/func/builtins/json-tvf.js +199 -0
- package/dist/src/func/builtins/json-tvf.js.map +1 -0
- package/dist/src/func/builtins/json.d.ts +15 -0
- package/dist/src/func/builtins/json.d.ts.map +1 -0
- package/dist/src/func/builtins/json.js +417 -0
- package/dist/src/func/builtins/json.js.map +1 -0
- package/dist/src/func/builtins/scalar.d.ts +19 -0
- package/dist/src/func/builtins/scalar.d.ts.map +1 -0
- package/dist/src/func/builtins/scalar.js +176 -0
- package/dist/src/func/builtins/scalar.js.map +1 -0
- package/dist/src/func/builtins/schema.d.ts +4 -0
- package/dist/src/func/builtins/schema.d.ts.map +1 -0
- package/dist/src/func/builtins/schema.js +167 -0
- package/dist/src/func/builtins/schema.js.map +1 -0
- package/dist/src/func/builtins/string.d.ts +18 -0
- package/dist/src/func/builtins/string.d.ts.map +1 -0
- package/dist/src/func/builtins/string.js +233 -0
- package/dist/src/func/builtins/string.js.map +1 -0
- package/dist/src/func/context.d.ts +102 -0
- package/dist/src/func/context.d.ts.map +1 -0
- package/dist/src/func/context.js +130 -0
- package/dist/src/func/context.js.map +1 -0
- package/dist/src/func/registration.d.ts +89 -0
- package/dist/src/func/registration.d.ts.map +1 -0
- package/dist/src/func/registration.js +103 -0
- package/dist/src/func/registration.js.map +1 -0
- package/dist/src/index.d.ts +34 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +35 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/parser/ast.d.ts +376 -0
- package/dist/src/parser/ast.d.ts.map +1 -0
- package/dist/src/parser/ast.js +2 -0
- package/dist/src/parser/ast.js.map +1 -0
- package/dist/src/parser/index.d.ts +29 -0
- package/dist/src/parser/index.d.ts.map +1 -0
- package/dist/src/parser/index.js +50 -0
- package/dist/src/parser/index.js.map +1 -0
- package/dist/src/parser/lexer.d.ts +197 -0
- package/dist/src/parser/lexer.d.ts.map +1 -0
- package/dist/src/parser/lexer.js +762 -0
- package/dist/src/parser/lexer.js.map +1 -0
- package/dist/src/parser/parser.d.ts +216 -0
- package/dist/src/parser/parser.d.ts.map +1 -0
- package/dist/src/parser/parser.js +2619 -0
- package/dist/src/parser/parser.js.map +1 -0
- package/dist/src/parser/utils.d.ts +4 -0
- package/dist/src/parser/utils.d.ts.map +1 -0
- package/dist/src/parser/utils.js +8 -0
- package/dist/src/parser/utils.js.map +1 -0
- package/dist/src/parser/visitor.d.ts +38 -0
- package/dist/src/parser/visitor.d.ts.map +1 -0
- package/dist/src/parser/visitor.js +153 -0
- package/dist/src/parser/visitor.js.map +1 -0
- package/dist/src/planner/analysis/const-evaluator.d.ts +14 -0
- package/dist/src/planner/analysis/const-evaluator.d.ts.map +1 -0
- package/dist/src/planner/analysis/const-evaluator.js +50 -0
- package/dist/src/planner/analysis/const-evaluator.js.map +1 -0
- package/dist/src/planner/analysis/const-pass.d.ts +51 -0
- package/dist/src/planner/analysis/const-pass.d.ts.map +1 -0
- package/dist/src/planner/analysis/const-pass.js +200 -0
- package/dist/src/planner/analysis/const-pass.js.map +1 -0
- package/dist/src/planner/analysis/constraint-extractor.d.ts +57 -0
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -0
- package/dist/src/planner/analysis/constraint-extractor.js +193 -0
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -0
- package/dist/src/planner/building/alter-table.d.ts +5 -0
- package/dist/src/planner/building/alter-table.d.ts.map +1 -0
- package/dist/src/planner/building/alter-table.js +26 -0
- package/dist/src/planner/building/alter-table.js.map +1 -0
- package/dist/src/planner/building/block.d.ts +5 -0
- package/dist/src/planner/building/block.d.ts.map +1 -0
- package/dist/src/planner/building/block.js +68 -0
- package/dist/src/planner/building/block.js.map +1 -0
- package/dist/src/planner/building/create-view.d.ts +8 -0
- package/dist/src/planner/building/create-view.d.ts.map +1 -0
- package/dist/src/planner/building/create-view.js +37 -0
- package/dist/src/planner/building/create-view.js.map +1 -0
- package/dist/src/planner/building/ddl.d.ts +7 -0
- package/dist/src/planner/building/ddl.d.ts.map +1 -0
- package/dist/src/planner/building/ddl.js +9 -0
- package/dist/src/planner/building/ddl.js.map +1 -0
- package/dist/src/planner/building/delete.d.ts +5 -0
- package/dist/src/planner/building/delete.d.ts.map +1 -0
- package/dist/src/planner/building/delete.js +105 -0
- package/dist/src/planner/building/delete.js.map +1 -0
- package/dist/src/planner/building/drop-table.d.ts +5 -0
- package/dist/src/planner/building/drop-table.d.ts.map +1 -0
- package/dist/src/planner/building/drop-table.js +5 -0
- package/dist/src/planner/building/drop-table.js.map +1 -0
- package/dist/src/planner/building/drop-view.d.ts +8 -0
- package/dist/src/planner/building/drop-view.d.ts.map +1 -0
- package/dist/src/planner/building/drop-view.js +11 -0
- package/dist/src/planner/building/drop-view.js.map +1 -0
- package/dist/src/planner/building/expression.d.ts +5 -0
- package/dist/src/planner/building/expression.d.ts.map +1 -0
- package/dist/src/planner/building/expression.js +147 -0
- package/dist/src/planner/building/expression.js.map +1 -0
- package/dist/src/planner/building/function-call.d.ts +5 -0
- package/dist/src/planner/building/function-call.d.ts.map +1 -0
- package/dist/src/planner/building/function-call.js +70 -0
- package/dist/src/planner/building/function-call.js.map +1 -0
- package/dist/src/planner/building/insert.d.ts +5 -0
- package/dist/src/planner/building/insert.d.ts.map +1 -0
- package/dist/src/planner/building/insert.js +261 -0
- package/dist/src/planner/building/insert.js.map +1 -0
- package/dist/src/planner/building/pragma.d.ts +5 -0
- package/dist/src/planner/building/pragma.d.ts.map +1 -0
- package/dist/src/planner/building/pragma.js +28 -0
- package/dist/src/planner/building/pragma.js.map +1 -0
- package/dist/src/planner/building/schema-resolution.d.ts +25 -0
- package/dist/src/planner/building/schema-resolution.d.ts.map +1 -0
- package/dist/src/planner/building/schema-resolution.js +119 -0
- package/dist/src/planner/building/schema-resolution.js.map +1 -0
- package/dist/src/planner/building/select-aggregates.d.ts +22 -0
- package/dist/src/planner/building/select-aggregates.d.ts.map +1 -0
- package/dist/src/planner/building/select-aggregates.js +164 -0
- package/dist/src/planner/building/select-aggregates.js.map +1 -0
- package/dist/src/planner/building/select-compound.d.ts +9 -0
- package/dist/src/planner/building/select-compound.d.ts.map +1 -0
- package/dist/src/planner/building/select-compound.js +78 -0
- package/dist/src/planner/building/select-compound.js.map +1 -0
- package/dist/src/planner/building/select-context.d.ts +18 -0
- package/dist/src/planner/building/select-context.d.ts.map +1 -0
- package/dist/src/planner/building/select-context.js +54 -0
- package/dist/src/planner/building/select-context.js.map +1 -0
- package/dist/src/planner/building/select-modifiers.d.ts +25 -0
- package/dist/src/planner/building/select-modifiers.d.ts.map +1 -0
- package/dist/src/planner/building/select-modifiers.js +120 -0
- package/dist/src/planner/building/select-modifiers.js.map +1 -0
- package/dist/src/planner/building/select-projections.d.ts +37 -0
- package/dist/src/planner/building/select-projections.d.ts.map +1 -0
- package/dist/src/planner/building/select-projections.js +132 -0
- package/dist/src/planner/building/select-projections.js.map +1 -0
- package/dist/src/planner/building/select-window.d.ts +12 -0
- package/dist/src/planner/building/select-window.d.ts.map +1 -0
- package/dist/src/planner/building/select-window.js +159 -0
- package/dist/src/planner/building/select-window.js.map +1 -0
- package/dist/src/planner/building/select.d.ts +28 -0
- package/dist/src/planner/building/select.d.ts.map +1 -0
- package/dist/src/planner/building/select.js +307 -0
- package/dist/src/planner/building/select.js.map +1 -0
- package/dist/src/planner/building/table-function.d.ts +5 -0
- package/dist/src/planner/building/table-function.d.ts.map +1 -0
- package/dist/src/planner/building/table-function.js +21 -0
- package/dist/src/planner/building/table-function.js.map +1 -0
- package/dist/src/planner/building/table.d.ts +23 -0
- package/dist/src/planner/building/table.d.ts.map +1 -0
- package/dist/src/planner/building/table.js +57 -0
- package/dist/src/planner/building/table.js.map +1 -0
- package/dist/src/planner/building/transaction.d.ts +9 -0
- package/dist/src/planner/building/transaction.d.ts.map +1 -0
- package/dist/src/planner/building/transaction.js +17 -0
- package/dist/src/planner/building/transaction.js.map +1 -0
- package/dist/src/planner/building/update.d.ts +5 -0
- package/dist/src/planner/building/update.d.ts.map +1 -0
- package/dist/src/planner/building/update.js +152 -0
- package/dist/src/planner/building/update.js.map +1 -0
- package/dist/src/planner/building/with.d.ts +13 -0
- package/dist/src/planner/building/with.d.ts.map +1 -0
- package/dist/src/planner/building/with.js +112 -0
- package/dist/src/planner/building/with.js.map +1 -0
- package/dist/src/planner/cache/materialization-advisory.d.ts +66 -0
- package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -0
- package/dist/src/planner/cache/materialization-advisory.js +187 -0
- package/dist/src/planner/cache/materialization-advisory.js.map +1 -0
- package/dist/src/planner/cache/reference-graph.d.ts +53 -0
- package/dist/src/planner/cache/reference-graph.d.ts.map +1 -0
- package/dist/src/planner/cache/reference-graph.js +139 -0
- package/dist/src/planner/cache/reference-graph.js.map +1 -0
- package/dist/src/planner/cost/index.d.ts +106 -0
- package/dist/src/planner/cost/index.d.ts.map +1 -0
- package/dist/src/planner/cost/index.js +143 -0
- package/dist/src/planner/cost/index.js.map +1 -0
- package/dist/src/planner/debug/logger-utils.d.ts +44 -0
- package/dist/src/planner/debug/logger-utils.d.ts.map +1 -0
- package/dist/src/planner/debug/logger-utils.js +58 -0
- package/dist/src/planner/debug/logger-utils.js.map +1 -0
- package/dist/src/planner/debug.d.ts +53 -0
- package/dist/src/planner/debug.d.ts.map +1 -0
- package/dist/src/planner/debug.js +228 -0
- package/dist/src/planner/debug.js.map +1 -0
- package/dist/src/planner/framework/context.d.ts +86 -0
- package/dist/src/planner/framework/context.d.ts.map +1 -0
- package/dist/src/planner/framework/context.js +117 -0
- package/dist/src/planner/framework/context.js.map +1 -0
- package/dist/src/planner/framework/physical-utils.d.ts +62 -0
- package/dist/src/planner/framework/physical-utils.d.ts.map +1 -0
- package/dist/src/planner/framework/physical-utils.js +149 -0
- package/dist/src/planner/framework/physical-utils.js.map +1 -0
- package/dist/src/planner/framework/registry.d.ts +75 -0
- package/dist/src/planner/framework/registry.d.ts.map +1 -0
- package/dist/src/planner/framework/registry.js +203 -0
- package/dist/src/planner/framework/registry.js.map +1 -0
- package/dist/src/planner/framework/trace.d.ts +84 -0
- package/dist/src/planner/framework/trace.d.ts.map +1 -0
- package/dist/src/planner/framework/trace.js +198 -0
- package/dist/src/planner/framework/trace.js.map +1 -0
- package/dist/src/planner/nodes/add-constraint-node.d.ts +23 -0
- package/dist/src/planner/nodes/add-constraint-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/add-constraint-node.js +47 -0
- package/dist/src/planner/nodes/add-constraint-node.js.map +1 -0
- package/dist/src/planner/nodes/aggregate-function.d.ts +34 -0
- package/dist/src/planner/nodes/aggregate-function.d.ts.map +1 -0
- package/dist/src/planner/nodes/aggregate-function.js +119 -0
- package/dist/src/planner/nodes/aggregate-function.js.map +1 -0
- package/dist/src/planner/nodes/aggregate-node.d.ts +35 -0
- package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/aggregate-node.js +176 -0
- package/dist/src/planner/nodes/aggregate-node.js.map +1 -0
- package/dist/src/planner/nodes/array-index-node.d.ts +22 -0
- package/dist/src/planner/nodes/array-index-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/array-index-node.js +41 -0
- package/dist/src/planner/nodes/array-index-node.js.map +1 -0
- package/dist/src/planner/nodes/block.d.ts +26 -0
- package/dist/src/planner/nodes/block.d.ts.map +1 -0
- package/dist/src/planner/nodes/block.js +58 -0
- package/dist/src/planner/nodes/block.js.map +1 -0
- package/dist/src/planner/nodes/cache-node.d.ts +29 -0
- package/dist/src/planner/nodes/cache-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/cache-node.js +73 -0
- package/dist/src/planner/nodes/cache-node.js.map +1 -0
- package/dist/src/planner/nodes/constraint-check-node.d.ts +28 -0
- package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/constraint-check-node.js +73 -0
- package/dist/src/planner/nodes/constraint-check-node.js.map +1 -0
- package/dist/src/planner/nodes/create-index-node.d.ts +15 -0
- package/dist/src/planner/nodes/create-index-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/create-index-node.js +31 -0
- package/dist/src/planner/nodes/create-index-node.js.map +1 -0
- package/dist/src/planner/nodes/create-table-node.d.ts +15 -0
- package/dist/src/planner/nodes/create-table-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/create-table-node.js +25 -0
- package/dist/src/planner/nodes/create-table-node.js.map +1 -0
- package/dist/src/planner/nodes/create-view-node.d.ts +21 -0
- package/dist/src/planner/nodes/create-view-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/create-view-node.js +39 -0
- package/dist/src/planner/nodes/create-view-node.js.map +1 -0
- package/dist/src/planner/nodes/cte-node.d.ts +40 -0
- package/dist/src/planner/nodes/cte-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/cte-node.js +88 -0
- package/dist/src/planner/nodes/cte-node.js.map +1 -0
- package/dist/src/planner/nodes/cte-reference-node.d.ts +27 -0
- package/dist/src/planner/nodes/cte-reference-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/cte-reference-node.js +75 -0
- package/dist/src/planner/nodes/cte-reference-node.js.map +1 -0
- package/dist/src/planner/nodes/delete-node.d.ts +27 -0
- package/dist/src/planner/nodes/delete-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/delete-node.js +62 -0
- package/dist/src/planner/nodes/delete-node.js.map +1 -0
- package/dist/src/planner/nodes/distinct-node.d.ts +22 -0
- package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/distinct-node.js +74 -0
- package/dist/src/planner/nodes/distinct-node.js.map +1 -0
- package/dist/src/planner/nodes/dml-executor-node.d.ts +30 -0
- package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/dml-executor-node.js +73 -0
- package/dist/src/planner/nodes/dml-executor-node.js.map +1 -0
- package/dist/src/planner/nodes/drop-table-node.d.ts +15 -0
- package/dist/src/planner/nodes/drop-table-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/drop-table-node.js +25 -0
- package/dist/src/planner/nodes/drop-table-node.js.map +1 -0
- package/dist/src/planner/nodes/drop-view-node.d.ts +17 -0
- package/dist/src/planner/nodes/drop-view-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/drop-view-node.js +30 -0
- package/dist/src/planner/nodes/drop-view-node.js.map +1 -0
- package/dist/src/planner/nodes/filter.d.ts +24 -0
- package/dist/src/planner/nodes/filter.d.ts.map +1 -0
- package/dist/src/planner/nodes/filter.js +72 -0
- package/dist/src/planner/nodes/filter.js.map +1 -0
- package/dist/src/planner/nodes/function.d.ts +21 -0
- package/dist/src/planner/nodes/function.d.ts.map +1 -0
- package/dist/src/planner/nodes/function.js +70 -0
- package/dist/src/planner/nodes/function.js.map +1 -0
- package/dist/src/planner/nodes/insert-node.d.ts +26 -0
- package/dist/src/planner/nodes/insert-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/insert-node.js +82 -0
- package/dist/src/planner/nodes/insert-node.js.map +1 -0
- package/dist/src/planner/nodes/join-node.d.ts +30 -0
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/join-node.js +177 -0
- package/dist/src/planner/nodes/join-node.js.map +1 -0
- package/dist/src/planner/nodes/limit-offset.d.ts +24 -0
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -0
- package/dist/src/planner/nodes/limit-offset.js +103 -0
- package/dist/src/planner/nodes/limit-offset.js.map +1 -0
- package/dist/src/planner/nodes/physical-access-nodes.d.ts +83 -0
- package/dist/src/planner/nodes/physical-access-nodes.d.ts.map +1 -0
- package/dist/src/planner/nodes/physical-access-nodes.js +226 -0
- package/dist/src/planner/nodes/physical-access-nodes.js.map +1 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts +71 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -0
- package/dist/src/planner/nodes/plan-node-type.js +81 -0
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -0
- package/dist/src/planner/nodes/plan-node.d.ts +297 -0
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/plan-node.js +198 -0
- package/dist/src/planner/nodes/plan-node.js.map +1 -0
- package/dist/src/planner/nodes/pragma.d.ts +21 -0
- package/dist/src/planner/nodes/pragma.d.ts.map +1 -0
- package/dist/src/planner/nodes/pragma.js +80 -0
- package/dist/src/planner/nodes/pragma.js.map +1 -0
- package/dist/src/planner/nodes/project-node.d.ts +34 -0
- package/dist/src/planner/nodes/project-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/project-node.js +181 -0
- package/dist/src/planner/nodes/project-node.js.map +1 -0
- package/dist/src/planner/nodes/recursive-cte-node.d.ts +41 -0
- package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/recursive-cte-node.js +114 -0
- package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -0
- package/dist/src/planner/nodes/reference.d.ts +92 -0
- package/dist/src/planner/nodes/reference.d.ts.map +1 -0
- package/dist/src/planner/nodes/reference.js +258 -0
- package/dist/src/planner/nodes/reference.js.map +1 -0
- package/dist/src/planner/nodes/returning-node.d.ts +37 -0
- package/dist/src/planner/nodes/returning-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/returning-node.js +183 -0
- package/dist/src/planner/nodes/returning-node.js.map +1 -0
- package/dist/src/planner/nodes/scalar.d.ts +106 -0
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -0
- package/dist/src/planner/nodes/scalar.js +618 -0
- package/dist/src/planner/nodes/scalar.js.map +1 -0
- package/dist/src/planner/nodes/scan.d.ts +27 -0
- package/dist/src/planner/nodes/scan.d.ts.map +1 -0
- package/dist/src/planner/nodes/scan.js +78 -0
- package/dist/src/planner/nodes/scan.js.map +1 -0
- package/dist/src/planner/nodes/sequencing-node.d.ts +25 -0
- package/dist/src/planner/nodes/sequencing-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/sequencing-node.js +88 -0
- package/dist/src/planner/nodes/sequencing-node.js.map +1 -0
- package/dist/src/planner/nodes/set-operation-node.d.ts +21 -0
- package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/set-operation-node.js +68 -0
- package/dist/src/planner/nodes/set-operation-node.js.map +1 -0
- package/dist/src/planner/nodes/single-row.d.ts +24 -0
- package/dist/src/planner/nodes/single-row.d.ts.map +1 -0
- package/dist/src/planner/nodes/single-row.js +65 -0
- package/dist/src/planner/nodes/single-row.js.map +1 -0
- package/dist/src/planner/nodes/sink-node.d.ts +25 -0
- package/dist/src/planner/nodes/sink-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/sink-node.js +52 -0
- package/dist/src/planner/nodes/sink-node.js.map +1 -0
- package/dist/src/planner/nodes/sort.d.ts +37 -0
- package/dist/src/planner/nodes/sort.d.ts.map +1 -0
- package/dist/src/planner/nodes/sort.js +97 -0
- package/dist/src/planner/nodes/sort.js.map +1 -0
- package/dist/src/planner/nodes/stream-aggregate.d.ts +35 -0
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -0
- package/dist/src/planner/nodes/stream-aggregate.js +186 -0
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -0
- package/dist/src/planner/nodes/subquery.d.ts +54 -0
- package/dist/src/planner/nodes/subquery.d.ts.map +1 -0
- package/dist/src/planner/nodes/subquery.js +181 -0
- package/dist/src/planner/nodes/subquery.js.map +1 -0
- package/dist/src/planner/nodes/table-function-call.d.ts +27 -0
- package/dist/src/planner/nodes/table-function-call.d.ts.map +1 -0
- package/dist/src/planner/nodes/table-function-call.js +101 -0
- package/dist/src/planner/nodes/table-function-call.js.map +1 -0
- package/dist/src/planner/nodes/transaction-node.d.ts +22 -0
- package/dist/src/planner/nodes/transaction-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/transaction-node.js +47 -0
- package/dist/src/planner/nodes/transaction-node.js.map +1 -0
- package/dist/src/planner/nodes/update-executor-node.d.ts +24 -0
- package/dist/src/planner/nodes/update-executor-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/update-executor-node.js +57 -0
- package/dist/src/planner/nodes/update-executor-node.js.map +1 -0
- package/dist/src/planner/nodes/update-node.d.ts +38 -0
- package/dist/src/planner/nodes/update-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/update-node.js +88 -0
- package/dist/src/planner/nodes/update-node.js.map +1 -0
- package/dist/src/planner/nodes/values-node.d.ts +49 -0
- package/dist/src/planner/nodes/values-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/values-node.js +204 -0
- package/dist/src/planner/nodes/values-node.js.map +1 -0
- package/dist/src/planner/nodes/view-reference-node.d.ts +27 -0
- package/dist/src/planner/nodes/view-reference-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/view-reference-node.js +83 -0
- package/dist/src/planner/nodes/view-reference-node.js.map +1 -0
- package/dist/src/planner/nodes/window-function.d.ts +25 -0
- package/dist/src/planner/nodes/window-function.d.ts.map +1 -0
- package/dist/src/planner/nodes/window-function.js +62 -0
- package/dist/src/planner/nodes/window-function.js.map +1 -0
- package/dist/src/planner/nodes/window-node.d.ts +40 -0
- package/dist/src/planner/nodes/window-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/window-node.js +156 -0
- package/dist/src/planner/nodes/window-node.js.map +1 -0
- package/dist/src/planner/optimizer-tuning.d.ts +55 -0
- package/dist/src/planner/optimizer-tuning.d.ts.map +1 -0
- package/dist/src/planner/optimizer-tuning.js +31 -0
- package/dist/src/planner/optimizer-tuning.js.map +1 -0
- package/dist/src/planner/optimizer.d.ts +34 -0
- package/dist/src/planner/optimizer.d.ts.map +1 -0
- package/dist/src/planner/optimizer.js +194 -0
- package/dist/src/planner/optimizer.js.map +1 -0
- package/dist/src/planner/physical-utils.d.ts +36 -0
- package/dist/src/planner/physical-utils.d.ts.map +1 -0
- package/dist/src/planner/physical-utils.js +122 -0
- package/dist/src/planner/physical-utils.js.map +1 -0
- package/dist/src/planner/planning-context.d.ts +111 -0
- package/dist/src/planner/planning-context.d.ts.map +1 -0
- package/dist/src/planner/planning-context.js +75 -0
- package/dist/src/planner/planning-context.js.map +1 -0
- package/dist/src/planner/resolve.d.ts +8 -0
- package/dist/src/planner/resolve.d.ts.map +1 -0
- package/dist/src/planner/resolve.js +91 -0
- package/dist/src/planner/resolve.js.map +1 -0
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts +11 -0
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -0
- package/dist/src/planner/rules/access/rule-select-access-path.js +133 -0
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -0
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts +11 -0
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts.map +1 -0
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +53 -0
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -0
- package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts +11 -0
- package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -0
- package/dist/src/planner/rules/cache/rule-cte-optimization.js +38 -0
- package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -0
- package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts +11 -0
- package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts.map +1 -0
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js +51 -0
- package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +1 -0
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts +11 -0
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts.map +1 -0
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js +79 -0
- package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -0
- package/dist/src/planner/rules/physical/rule-filter-optimization.d.ts +11 -0
- package/dist/src/planner/rules/physical/rule-filter-optimization.d.ts.map +1 -0
- package/dist/src/planner/rules/physical/rule-filter-optimization.js +49 -0
- package/dist/src/planner/rules/physical/rule-filter-optimization.js.map +1 -0
- package/dist/src/planner/rules/physical/rule-mark-physical.d.ts +11 -0
- package/dist/src/planner/rules/physical/rule-mark-physical.d.ts.map +1 -0
- package/dist/src/planner/rules/physical/rule-mark-physical.js +29 -0
- package/dist/src/planner/rules/physical/rule-mark-physical.js.map +1 -0
- package/dist/src/planner/rules/physical/rule-project-optimization.d.ts +11 -0
- package/dist/src/planner/rules/physical/rule-project-optimization.d.ts.map +1 -0
- package/dist/src/planner/rules/physical/rule-project-optimization.js +44 -0
- package/dist/src/planner/rules/physical/rule-project-optimization.js.map +1 -0
- package/dist/src/planner/rules/physical/rule-sort-optimization.d.ts +11 -0
- package/dist/src/planner/rules/physical/rule-sort-optimization.d.ts.map +1 -0
- package/dist/src/planner/rules/physical/rule-sort-optimization.js +53 -0
- package/dist/src/planner/rules/physical/rule-sort-optimization.js.map +1 -0
- package/dist/src/planner/rules/rewrite/rule-constant-folding.d.ts +11 -0
- package/dist/src/planner/rules/rewrite/rule-constant-folding.d.ts.map +1 -0
- package/dist/src/planner/rules/rewrite/rule-constant-folding.js +59 -0
- package/dist/src/planner/rules/rewrite/rule-constant-folding.js.map +1 -0
- package/dist/src/planner/scopes/aliased.d.ts +18 -0
- package/dist/src/planner/scopes/aliased.d.ts.map +1 -0
- package/dist/src/planner/scopes/aliased.js +41 -0
- package/dist/src/planner/scopes/aliased.js.map +1 -0
- package/dist/src/planner/scopes/base.d.ts +20 -0
- package/dist/src/planner/scopes/base.d.ts.map +1 -0
- package/dist/src/planner/scopes/base.js +20 -0
- package/dist/src/planner/scopes/base.js.map +1 -0
- package/dist/src/planner/scopes/empty.d.ts +11 -0
- package/dist/src/planner/scopes/empty.d.ts.map +1 -0
- package/dist/src/planner/scopes/empty.js +16 -0
- package/dist/src/planner/scopes/empty.js.map +1 -0
- package/dist/src/planner/scopes/global.d.ts +12 -0
- package/dist/src/planner/scopes/global.d.ts.map +1 -0
- package/dist/src/planner/scopes/global.js +65 -0
- package/dist/src/planner/scopes/global.js.map +1 -0
- package/dist/src/planner/scopes/multi.d.ts +17 -0
- package/dist/src/planner/scopes/multi.d.ts.map +1 -0
- package/dist/src/planner/scopes/multi.js +35 -0
- package/dist/src/planner/scopes/multi.js.map +1 -0
- package/dist/src/planner/scopes/param.d.ts +23 -0
- package/dist/src/planner/scopes/param.d.ts.map +1 -0
- package/dist/src/planner/scopes/param.js +78 -0
- package/dist/src/planner/scopes/param.js.map +1 -0
- package/dist/src/planner/scopes/registered.d.ts +47 -0
- package/dist/src/planner/scopes/registered.d.ts.map +1 -0
- package/dist/src/planner/scopes/registered.js +70 -0
- package/dist/src/planner/scopes/registered.js.map +1 -0
- package/dist/src/planner/scopes/scope.d.ts +21 -0
- package/dist/src/planner/scopes/scope.d.ts.map +1 -0
- package/dist/src/planner/scopes/scope.js +3 -0
- package/dist/src/planner/scopes/scope.js.map +1 -0
- package/dist/src/planner/stats/basic-estimates.d.ts +47 -0
- package/dist/src/planner/stats/basic-estimates.d.ts.map +1 -0
- package/dist/src/planner/stats/basic-estimates.js +99 -0
- package/dist/src/planner/stats/basic-estimates.js.map +1 -0
- package/dist/src/planner/stats/index.d.ts +88 -0
- package/dist/src/planner/stats/index.d.ts.map +1 -0
- package/dist/src/planner/stats/index.js +152 -0
- package/dist/src/planner/stats/index.js.map +1 -0
- package/dist/src/planner/type-utils.d.ts +30 -0
- package/dist/src/planner/type-utils.d.ts.map +1 -0
- package/dist/src/planner/type-utils.js +91 -0
- package/dist/src/planner/type-utils.js.map +1 -0
- package/dist/src/planner/validation/plan-validator.d.ts +29 -0
- package/dist/src/planner/validation/plan-validator.d.ts.map +1 -0
- package/dist/src/planner/validation/plan-validator.js +238 -0
- package/dist/src/planner/validation/plan-validator.js.map +1 -0
- package/dist/src/runtime/async-util.d.ts +53 -0
- package/dist/src/runtime/async-util.d.ts.map +1 -0
- package/dist/src/runtime/async-util.js +238 -0
- package/dist/src/runtime/async-util.js.map +1 -0
- package/dist/src/runtime/cache/shared-cache.d.ts +68 -0
- package/dist/src/runtime/cache/shared-cache.d.ts.map +1 -0
- package/dist/src/runtime/cache/shared-cache.js +107 -0
- package/dist/src/runtime/cache/shared-cache.js.map +1 -0
- package/dist/src/runtime/emission-context.d.ts +121 -0
- package/dist/src/runtime/emission-context.d.ts.map +1 -0
- package/dist/src/runtime/emission-context.js +258 -0
- package/dist/src/runtime/emission-context.js.map +1 -0
- package/dist/src/runtime/emit/add-constraint.d.ts +5 -0
- package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -0
- package/dist/src/runtime/emit/add-constraint.js +35 -0
- package/dist/src/runtime/emit/add-constraint.js.map +1 -0
- package/dist/src/runtime/emit/aggregate.d.ts +6 -0
- package/dist/src/runtime/emit/aggregate.d.ts.map +1 -0
- package/dist/src/runtime/emit/aggregate.js +465 -0
- package/dist/src/runtime/emit/aggregate.js.map +1 -0
- package/dist/src/runtime/emit/array-index.d.ts +5 -0
- package/dist/src/runtime/emit/array-index.d.ts.map +1 -0
- package/dist/src/runtime/emit/array-index.js +20 -0
- package/dist/src/runtime/emit/array-index.js.map +1 -0
- package/dist/src/runtime/emit/binary.d.ts +11 -0
- package/dist/src/runtime/emit/binary.d.ts.map +1 -0
- package/dist/src/runtime/emit/binary.js +310 -0
- package/dist/src/runtime/emit/binary.js.map +1 -0
- package/dist/src/runtime/emit/block.d.ts +5 -0
- package/dist/src/runtime/emit/block.d.ts.map +1 -0
- package/dist/src/runtime/emit/block.js +16 -0
- package/dist/src/runtime/emit/block.js.map +1 -0
- package/dist/src/runtime/emit/cache.d.ts +25 -0
- package/dist/src/runtime/emit/cache.d.ts.map +1 -0
- package/dist/src/runtime/emit/cache.js +52 -0
- package/dist/src/runtime/emit/cache.js.map +1 -0
- package/dist/src/runtime/emit/case.d.ts +5 -0
- package/dist/src/runtime/emit/case.d.ts.map +1 -0
- package/dist/src/runtime/emit/case.js +65 -0
- package/dist/src/runtime/emit/case.js.map +1 -0
- package/dist/src/runtime/emit/cast.d.ts +5 -0
- package/dist/src/runtime/emit/cast.d.ts.map +1 -0
- package/dist/src/runtime/emit/cast.js +132 -0
- package/dist/src/runtime/emit/cast.js.map +1 -0
- package/dist/src/runtime/emit/collate.d.ts +5 -0
- package/dist/src/runtime/emit/collate.d.ts.map +1 -0
- package/dist/src/runtime/emit/collate.js +6 -0
- package/dist/src/runtime/emit/collate.js.map +1 -0
- package/dist/src/runtime/emit/column-reference.d.ts +5 -0
- package/dist/src/runtime/emit/column-reference.d.ts.map +1 -0
- package/dist/src/runtime/emit/column-reference.js +36 -0
- package/dist/src/runtime/emit/column-reference.js.map +1 -0
- package/dist/src/runtime/emit/constraint-check.d.ts +5 -0
- package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -0
- package/dist/src/runtime/emit/constraint-check.js +211 -0
- package/dist/src/runtime/emit/constraint-check.js.map +1 -0
- package/dist/src/runtime/emit/create-index.d.ts +5 -0
- package/dist/src/runtime/emit/create-index.d.ts.map +1 -0
- package/dist/src/runtime/emit/create-index.js +9 -0
- package/dist/src/runtime/emit/create-index.js.map +1 -0
- package/dist/src/runtime/emit/create-table.d.ts +5 -0
- package/dist/src/runtime/emit/create-table.d.ts.map +1 -0
- package/dist/src/runtime/emit/create-table.js +9 -0
- package/dist/src/runtime/emit/create-table.js.map +1 -0
- package/dist/src/runtime/emit/create-view.d.ts +5 -0
- package/dist/src/runtime/emit/create-view.d.ts.map +1 -0
- package/dist/src/runtime/emit/create-view.js +36 -0
- package/dist/src/runtime/emit/create-view.js.map +1 -0
- package/dist/src/runtime/emit/cte-reference.d.ts +5 -0
- package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -0
- package/dist/src/runtime/emit/cte-reference.js +56 -0
- package/dist/src/runtime/emit/cte-reference.js.map +1 -0
- package/dist/src/runtime/emit/cte.d.ts +5 -0
- package/dist/src/runtime/emit/cte.d.ts.map +1 -0
- package/dist/src/runtime/emit/cte.js +34 -0
- package/dist/src/runtime/emit/cte.js.map +1 -0
- package/dist/src/runtime/emit/delete.d.ts +5 -0
- package/dist/src/runtime/emit/delete.d.ts.map +1 -0
- package/dist/src/runtime/emit/delete.js +18 -0
- package/dist/src/runtime/emit/delete.js.map +1 -0
- package/dist/src/runtime/emit/distinct.d.ts +5 -0
- package/dist/src/runtime/emit/distinct.d.ts.map +1 -0
- package/dist/src/runtime/emit/distinct.js +35 -0
- package/dist/src/runtime/emit/distinct.js.map +1 -0
- package/dist/src/runtime/emit/dml-executor.d.ts +5 -0
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -0
- package/dist/src/runtime/emit/dml-executor.js +90 -0
- package/dist/src/runtime/emit/dml-executor.js.map +1 -0
- package/dist/src/runtime/emit/drop-table.d.ts +5 -0
- package/dist/src/runtime/emit/drop-table.d.ts.map +1 -0
- package/dist/src/runtime/emit/drop-table.js +19 -0
- package/dist/src/runtime/emit/drop-table.js.map +1 -0
- package/dist/src/runtime/emit/drop-view.d.ts +5 -0
- package/dist/src/runtime/emit/drop-view.d.ts.map +1 -0
- package/dist/src/runtime/emit/drop-view.js +31 -0
- package/dist/src/runtime/emit/drop-view.js.map +1 -0
- package/dist/src/runtime/emit/filter.d.ts +5 -0
- package/dist/src/runtime/emit/filter.d.ts.map +1 -0
- package/dist/src/runtime/emit/filter.js +30 -0
- package/dist/src/runtime/emit/filter.js.map +1 -0
- package/dist/src/runtime/emit/insert.d.ts +5 -0
- package/dist/src/runtime/emit/insert.d.ts.map +1 -0
- package/dist/src/runtime/emit/insert.js +52 -0
- package/dist/src/runtime/emit/insert.js.map +1 -0
- package/dist/src/runtime/emit/join.d.ts +9 -0
- package/dist/src/runtime/emit/join.d.ts.map +1 -0
- package/dist/src/runtime/emit/join.js +116 -0
- package/dist/src/runtime/emit/join.js.map +1 -0
- package/dist/src/runtime/emit/limit-offset.d.ts +5 -0
- package/dist/src/runtime/emit/limit-offset.d.ts.map +1 -0
- package/dist/src/runtime/emit/limit-offset.js +56 -0
- package/dist/src/runtime/emit/limit-offset.js.map +1 -0
- package/dist/src/runtime/emit/literal.d.ts +5 -0
- package/dist/src/runtime/emit/literal.d.ts.map +1 -0
- package/dist/src/runtime/emit/literal.js +12 -0
- package/dist/src/runtime/emit/literal.js.map +1 -0
- package/dist/src/runtime/emit/parameter.d.ts +5 -0
- package/dist/src/runtime/emit/parameter.d.ts.map +1 -0
- package/dist/src/runtime/emit/parameter.js +57 -0
- package/dist/src/runtime/emit/parameter.js.map +1 -0
- package/dist/src/runtime/emit/pragma.d.ts +5 -0
- package/dist/src/runtime/emit/pragma.d.ts.map +1 -0
- package/dist/src/runtime/emit/pragma.js +44 -0
- package/dist/src/runtime/emit/pragma.js.map +1 -0
- package/dist/src/runtime/emit/project.d.ts +5 -0
- package/dist/src/runtime/emit/project.d.ts.map +1 -0
- package/dist/src/runtime/emit/project.js +32 -0
- package/dist/src/runtime/emit/project.js.map +1 -0
- package/dist/src/runtime/emit/recursive-cte.d.ts +5 -0
- package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -0
- package/dist/src/runtime/emit/recursive-cte.js +92 -0
- package/dist/src/runtime/emit/recursive-cte.js.map +1 -0
- package/dist/src/runtime/emit/returning.d.ts +5 -0
- package/dist/src/runtime/emit/returning.d.ts.map +1 -0
- package/dist/src/runtime/emit/returning.js +34 -0
- package/dist/src/runtime/emit/returning.js.map +1 -0
- package/dist/src/runtime/emit/scalar-function.d.ts +5 -0
- package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -0
- package/dist/src/runtime/emit/scalar-function.js +29 -0
- package/dist/src/runtime/emit/scalar-function.js.map +1 -0
- package/dist/src/runtime/emit/scan.d.ts +5 -0
- package/dist/src/runtime/emit/scan.d.ts.map +1 -0
- package/dist/src/runtime/emit/scan.js +63 -0
- package/dist/src/runtime/emit/scan.js.map +1 -0
- package/dist/src/runtime/emit/sequencing.d.ts +5 -0
- package/dist/src/runtime/emit/sequencing.d.ts.map +1 -0
- package/dist/src/runtime/emit/sequencing.js +17 -0
- package/dist/src/runtime/emit/sequencing.js.map +1 -0
- package/dist/src/runtime/emit/set-operation.d.ts +5 -0
- package/dist/src/runtime/emit/set-operation.d.ts.map +1 -0
- package/dist/src/runtime/emit/set-operation.js +99 -0
- package/dist/src/runtime/emit/set-operation.js.map +1 -0
- package/dist/src/runtime/emit/sink.d.ts +5 -0
- package/dist/src/runtime/emit/sink.d.ts.map +1 -0
- package/dist/src/runtime/emit/sink.js +19 -0
- package/dist/src/runtime/emit/sink.js.map +1 -0
- package/dist/src/runtime/emit/sort.d.ts +5 -0
- package/dist/src/runtime/emit/sort.d.ts.map +1 -0
- package/dist/src/runtime/emit/sort.js +59 -0
- package/dist/src/runtime/emit/sort.js.map +1 -0
- package/dist/src/runtime/emit/subquery.d.ts +7 -0
- package/dist/src/runtime/emit/subquery.d.ts.map +1 -0
- package/dist/src/runtime/emit/subquery.js +114 -0
- package/dist/src/runtime/emit/subquery.js.map +1 -0
- package/dist/src/runtime/emit/table-reference.d.ts +5 -0
- package/dist/src/runtime/emit/table-reference.d.ts.map +1 -0
- package/dist/src/runtime/emit/table-reference.js +67 -0
- package/dist/src/runtime/emit/table-reference.js.map +1 -0
- package/dist/src/runtime/emit/table-valued-function.d.ts +5 -0
- package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -0
- package/dist/src/runtime/emit/table-valued-function.js +98 -0
- package/dist/src/runtime/emit/table-valued-function.js.map +1 -0
- package/dist/src/runtime/emit/transaction.d.ts +5 -0
- package/dist/src/runtime/emit/transaction.d.ts.map +1 -0
- package/dist/src/runtime/emit/transaction.js +153 -0
- package/dist/src/runtime/emit/transaction.js.map +1 -0
- package/dist/src/runtime/emit/unary.d.ts +5 -0
- package/dist/src/runtime/emit/unary.d.ts.map +1 -0
- package/dist/src/runtime/emit/unary.js +81 -0
- package/dist/src/runtime/emit/unary.js.map +1 -0
- package/dist/src/runtime/emit/update-executor.d.ts +5 -0
- package/dist/src/runtime/emit/update-executor.d.ts.map +1 -0
- package/dist/src/runtime/emit/update-executor.js +54 -0
- package/dist/src/runtime/emit/update-executor.js.map +1 -0
- package/dist/src/runtime/emit/update.d.ts +5 -0
- package/dist/src/runtime/emit/update.d.ts.map +1 -0
- package/dist/src/runtime/emit/update.js +58 -0
- package/dist/src/runtime/emit/update.js.map +1 -0
- package/dist/src/runtime/emit/values.d.ts +9 -0
- package/dist/src/runtime/emit/values.d.ts.map +1 -0
- package/dist/src/runtime/emit/values.js +51 -0
- package/dist/src/runtime/emit/values.js.map +1 -0
- package/dist/src/runtime/emit/window-function.d.ts +5 -0
- package/dist/src/runtime/emit/window-function.d.ts.map +1 -0
- package/dist/src/runtime/emit/window-function.js +31 -0
- package/dist/src/runtime/emit/window-function.js.map +1 -0
- package/dist/src/runtime/emit/window.d.ts +5 -0
- package/dist/src/runtime/emit/window.d.ts.map +1 -0
- package/dist/src/runtime/emit/window.js +328 -0
- package/dist/src/runtime/emit/window.js.map +1 -0
- package/dist/src/runtime/emitters.d.ts +48 -0
- package/dist/src/runtime/emitters.d.ts.map +1 -0
- package/dist/src/runtime/emitters.js +73 -0
- package/dist/src/runtime/emitters.js.map +1 -0
- package/dist/src/runtime/register.d.ts +2 -0
- package/dist/src/runtime/register.d.ts.map +1 -0
- package/dist/src/runtime/register.js +122 -0
- package/dist/src/runtime/register.js.map +1 -0
- package/dist/src/runtime/scheduler.d.ts +27 -0
- package/dist/src/runtime/scheduler.d.ts.map +1 -0
- package/dist/src/runtime/scheduler.js +385 -0
- package/dist/src/runtime/scheduler.js.map +1 -0
- package/dist/src/runtime/types.d.ts +109 -0
- package/dist/src/runtime/types.d.ts.map +1 -0
- package/dist/src/runtime/types.js +90 -0
- package/dist/src/runtime/types.js.map +1 -0
- package/dist/src/runtime/utils.d.ts +32 -0
- package/dist/src/runtime/utils.d.ts.map +1 -0
- package/dist/src/runtime/utils.js +117 -0
- package/dist/src/runtime/utils.js.map +1 -0
- package/dist/src/schema/change-events.d.ts +42 -0
- package/dist/src/schema/change-events.d.ts.map +1 -0
- package/dist/src/schema/change-events.js +55 -0
- package/dist/src/schema/change-events.js.map +1 -0
- package/dist/src/schema/column.d.ts +33 -0
- package/dist/src/schema/column.d.ts.map +1 -0
- package/dist/src/schema/column.js +22 -0
- package/dist/src/schema/column.js.map +1 -0
- package/dist/src/schema/function.d.ts +109 -0
- package/dist/src/schema/function.d.ts.map +1 -0
- package/dist/src/schema/function.js +26 -0
- package/dist/src/schema/function.js.map +1 -0
- package/dist/src/schema/manager.d.ts +222 -0
- package/dist/src/schema/manager.d.ts.map +1 -0
- package/dist/src/schema/manager.js +608 -0
- package/dist/src/schema/manager.js.map +1 -0
- package/dist/src/schema/schema.d.ts +110 -0
- package/dist/src/schema/schema.d.ts.map +1 -0
- package/dist/src/schema/schema.js +179 -0
- package/dist/src/schema/schema.js.map +1 -0
- package/dist/src/schema/table.d.ts +143 -0
- package/dist/src/schema/table.d.ts.map +1 -0
- package/dist/src/schema/table.js +245 -0
- package/dist/src/schema/table.js.map +1 -0
- package/dist/src/schema/view.d.ts +18 -0
- package/dist/src/schema/view.d.ts.map +1 -0
- package/dist/src/schema/view.js +2 -0
- package/dist/src/schema/view.js.map +1 -0
- package/dist/src/schema/window-function.d.ts +26 -0
- package/dist/src/schema/window-function.d.ts.map +1 -0
- package/dist/src/schema/window-function.js +34 -0
- package/dist/src/schema/window-function.js.map +1 -0
- package/dist/src/util/affinity.d.ts +34 -0
- package/dist/src/util/affinity.d.ts.map +1 -0
- package/dist/src/util/affinity.js +153 -0
- package/dist/src/util/affinity.js.map +1 -0
- package/dist/src/util/ast-stringify.d.ts +23 -0
- package/dist/src/util/ast-stringify.d.ts.map +1 -0
- package/dist/src/util/ast-stringify.js +683 -0
- package/dist/src/util/ast-stringify.js.map +1 -0
- package/dist/src/util/cached.d.ts +11 -0
- package/dist/src/util/cached.d.ts.map +1 -0
- package/dist/src/util/cached.js +24 -0
- package/dist/src/util/cached.js.map +1 -0
- package/dist/src/util/coercion.d.ts +34 -0
- package/dist/src/util/coercion.d.ts.map +1 -0
- package/dist/src/util/coercion.js +106 -0
- package/dist/src/util/coercion.js.map +1 -0
- package/dist/src/util/comparison.d.ts +153 -0
- package/dist/src/util/comparison.d.ts.map +1 -0
- package/dist/src/util/comparison.js +397 -0
- package/dist/src/util/comparison.js.map +1 -0
- package/dist/src/util/environment.d.ts +28 -0
- package/dist/src/util/environment.d.ts.map +1 -0
- package/dist/src/util/environment.js +47 -0
- package/dist/src/util/environment.js.map +1 -0
- package/dist/src/util/latches.d.ts +16 -0
- package/dist/src/util/latches.d.ts.map +1 -0
- package/dist/src/util/latches.js +41 -0
- package/dist/src/util/latches.js.map +1 -0
- package/dist/src/util/patterns.d.ts +23 -0
- package/dist/src/util/patterns.d.ts.map +1 -0
- package/dist/src/util/patterns.js +54 -0
- package/dist/src/util/patterns.js.map +1 -0
- package/dist/src/util/plan-formatter.d.ts +23 -0
- package/dist/src/util/plan-formatter.d.ts.map +1 -0
- package/dist/src/util/plan-formatter.js +41 -0
- package/dist/src/util/plan-formatter.js.map +1 -0
- package/dist/src/util/plugin-loader.d.ts +20 -0
- package/dist/src/util/plugin-loader.d.ts.map +1 -0
- package/dist/src/util/plugin-loader.js +57 -0
- package/dist/src/util/plugin-loader.js.map +1 -0
- package/dist/src/util/row-descriptor.d.ts +35 -0
- package/dist/src/util/row-descriptor.d.ts.map +1 -0
- package/dist/src/util/row-descriptor.js +85 -0
- package/dist/src/util/row-descriptor.js.map +1 -0
- package/dist/src/util/serialization.d.ts +11 -0
- package/dist/src/util/serialization.d.ts.map +1 -0
- package/dist/src/util/serialization.js +41 -0
- package/dist/src/util/serialization.js.map +1 -0
- package/dist/src/util/working-table-iterable.d.ts +17 -0
- package/dist/src/util/working-table-iterable.d.ts.map +1 -0
- package/dist/src/util/working-table-iterable.js +30 -0
- package/dist/src/util/working-table-iterable.js.map +1 -0
- package/dist/src/vtab/best-access-plan.d.ts +144 -0
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -0
- package/dist/src/vtab/best-access-plan.js +156 -0
- package/dist/src/vtab/best-access-plan.js.map +1 -0
- package/dist/src/vtab/connection.d.ts +27 -0
- package/dist/src/vtab/connection.d.ts.map +1 -0
- package/dist/src/vtab/connection.js +2 -0
- package/dist/src/vtab/connection.js.map +1 -0
- package/dist/src/vtab/filter-info.d.ts +26 -0
- package/dist/src/vtab/filter-info.d.ts.map +1 -0
- package/dist/src/vtab/filter-info.js +2 -0
- package/dist/src/vtab/filter-info.js.map +1 -0
- package/dist/src/vtab/index-info.d.ts +69 -0
- package/dist/src/vtab/index-info.d.ts.map +1 -0
- package/dist/src/vtab/index-info.js +7 -0
- package/dist/src/vtab/index-info.js.map +1 -0
- package/dist/src/vtab/manifest.d.ts +35 -0
- package/dist/src/vtab/manifest.d.ts.map +1 -0
- package/dist/src/vtab/manifest.js +2 -0
- package/dist/src/vtab/manifest.js.map +1 -0
- package/dist/src/vtab/memory/connection.d.ts +29 -0
- package/dist/src/vtab/memory/connection.d.ts.map +1 -0
- package/dist/src/vtab/memory/connection.js +61 -0
- package/dist/src/vtab/memory/connection.js.map +1 -0
- package/dist/src/vtab/memory/index.d.ts +38 -0
- package/dist/src/vtab/memory/index.d.ts.map +1 -0
- package/dist/src/vtab/memory/index.js +132 -0
- package/dist/src/vtab/memory/index.js.map +1 -0
- package/dist/src/vtab/memory/layer/base-cursor.d.ts +5 -0
- package/dist/src/vtab/memory/layer/base-cursor.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/base-cursor.js +111 -0
- package/dist/src/vtab/memory/layer/base-cursor.js.map +1 -0
- package/dist/src/vtab/memory/layer/base.d.ts +51 -0
- package/dist/src/vtab/memory/layer/base.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/base.js +199 -0
- package/dist/src/vtab/memory/layer/base.js.map +1 -0
- package/dist/src/vtab/memory/layer/connection.d.ts +38 -0
- package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/connection.js +170 -0
- package/dist/src/vtab/memory/layer/connection.js.map +1 -0
- package/dist/src/vtab/memory/layer/interface.d.ts +41 -0
- package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/interface.js +2 -0
- package/dist/src/vtab/memory/layer/interface.js.map +1 -0
- package/dist/src/vtab/memory/layer/manager.d.ts +68 -0
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/manager.js +752 -0
- package/dist/src/vtab/memory/layer/manager.js.map +1 -0
- package/dist/src/vtab/memory/layer/safe-iterate.d.ts +9 -0
- package/dist/src/vtab/memory/layer/safe-iterate.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/safe-iterate.js +47 -0
- package/dist/src/vtab/memory/layer/safe-iterate.js.map +1 -0
- package/dist/src/vtab/memory/layer/scan-plan.d.ts +37 -0
- package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/scan-plan.js +87 -0
- package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -0
- package/dist/src/vtab/memory/layer/transaction-cursor.d.ts +5 -0
- package/dist/src/vtab/memory/layer/transaction-cursor.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/transaction-cursor.js +149 -0
- package/dist/src/vtab/memory/layer/transaction-cursor.js.map +1 -0
- package/dist/src/vtab/memory/layer/transaction.d.ts +44 -0
- package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -0
- package/dist/src/vtab/memory/layer/transaction.js +183 -0
- package/dist/src/vtab/memory/layer/transaction.js.map +1 -0
- package/dist/src/vtab/memory/module.d.ts +89 -0
- package/dist/src/vtab/memory/module.d.ts.map +1 -0
- package/dist/src/vtab/memory/module.js +533 -0
- package/dist/src/vtab/memory/module.js.map +1 -0
- package/dist/src/vtab/memory/table.d.ts +49 -0
- package/dist/src/vtab/memory/table.d.ts.map +1 -0
- package/dist/src/vtab/memory/table.js +209 -0
- package/dist/src/vtab/memory/table.js.map +1 -0
- package/dist/src/vtab/memory/types.d.ts +19 -0
- package/dist/src/vtab/memory/types.d.ts.map +1 -0
- package/dist/src/vtab/memory/types.js +2 -0
- package/dist/src/vtab/memory/types.js.map +1 -0
- package/dist/src/vtab/memory/utils/logging.d.ts +13 -0
- package/dist/src/vtab/memory/utils/logging.d.ts.map +1 -0
- package/dist/src/vtab/memory/utils/logging.js +28 -0
- package/dist/src/vtab/memory/utils/logging.js.map +1 -0
- package/dist/src/vtab/memory/utils/primary-key.d.ts +21 -0
- package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -0
- package/dist/src/vtab/memory/utils/primary-key.js +107 -0
- package/dist/src/vtab/memory/utils/primary-key.js.map +1 -0
- package/dist/src/vtab/module.d.ts +111 -0
- package/dist/src/vtab/module.d.ts.map +1 -0
- package/dist/src/vtab/module.js +2 -0
- package/dist/src/vtab/module.js.map +1 -0
- package/dist/src/vtab/table.d.ts +114 -0
- package/dist/src/vtab/table.d.ts.map +1 -0
- package/dist/src/vtab/table.js +26 -0
- package/dist/src/vtab/table.js.map +1 -0
- package/package.json +61 -0
- package/src/common/constants.ts +60 -0
- package/src/common/datatype.ts +86 -0
- package/src/common/errors.ts +189 -0
- package/src/common/logger.ts +23 -0
- package/src/common/type-inference.ts +40 -0
- package/src/common/types.ts +148 -0
- package/src/core/database-options.ts +258 -0
- package/src/core/database.ts +875 -0
- package/src/core/param.ts +41 -0
- package/src/core/statement.ts +490 -0
- package/src/func/builtins/aggregate.ts +247 -0
- package/src/func/builtins/builtin-window-functions.ts +165 -0
- package/src/func/builtins/datetime.ts +453 -0
- package/src/func/builtins/explain.ts +648 -0
- package/src/func/builtins/generation.ts +43 -0
- package/src/func/builtins/index.ts +126 -0
- package/src/func/builtins/json-helpers.ts +237 -0
- package/src/func/builtins/json-tvf.ts +225 -0
- package/src/func/builtins/json.ts +466 -0
- package/src/func/builtins/scalar.ts +232 -0
- package/src/func/builtins/schema.ts +193 -0
- package/src/func/builtins/string.ts +293 -0
- package/src/func/context.ts +251 -0
- package/src/func/registration.ts +167 -0
- package/src/index.ts +67 -0
- package/src/parser/ast.ts +475 -0
- package/src/parser/index.ts +65 -0
- package/src/parser/lexer.ts +767 -0
- package/src/parser/parser.ts +2783 -0
- package/src/parser/utils.ts +10 -0
- package/src/parser/visitor.ts +187 -0
- package/src/planner/analysis/README.md +93 -0
- package/src/planner/analysis/const-evaluator.ts +63 -0
- package/src/planner/analysis/const-pass.ts +270 -0
- package/src/planner/analysis/constraint-extractor.ts +277 -0
- package/src/planner/building/alter-table.ts +47 -0
- package/src/planner/building/block.ts +78 -0
- package/src/planner/building/create-view.ts +56 -0
- package/src/planner/building/ddl.ts +24 -0
- package/src/planner/building/delete.ts +158 -0
- package/src/planner/building/drop-table.ts +13 -0
- package/src/planner/building/drop-view.ts +19 -0
- package/src/planner/building/expression.ts +176 -0
- package/src/planner/building/function-call.ts +87 -0
- package/src/planner/building/insert.ts +336 -0
- package/src/planner/building/pragma.ts +33 -0
- package/src/planner/building/schema-resolution.ts +176 -0
- package/src/planner/building/select-aggregates.ts +245 -0
- package/src/planner/building/select-compound.ts +110 -0
- package/src/planner/building/select-context.ts +75 -0
- package/src/planner/building/select-modifiers.ts +170 -0
- package/src/planner/building/select-projections.ts +177 -0
- package/src/planner/building/select-window.ts +248 -0
- package/src/planner/building/select.ts +388 -0
- package/src/planner/building/table-function.ts +48 -0
- package/src/planner/building/table.ts +73 -0
- package/src/planner/building/transaction.ts +23 -0
- package/src/planner/building/update.ts +255 -0
- package/src/planner/building/with.ts +181 -0
- package/src/planner/cache/materialization-advisory.ts +244 -0
- package/src/planner/cache/reference-graph.ts +172 -0
- package/src/planner/cost/index.ts +169 -0
- package/src/planner/debug/logger-utils.ts +68 -0
- package/src/planner/debug.ts +316 -0
- package/src/planner/framework/README.md +132 -0
- package/src/planner/framework/context.ts +188 -0
- package/src/planner/framework/physical-utils.ts +210 -0
- package/src/planner/framework/registry.ts +274 -0
- package/src/planner/framework/trace.ts +259 -0
- package/src/planner/nodes/add-constraint-node.ts +58 -0
- package/src/planner/nodes/aggregate-function.ts +145 -0
- package/src/planner/nodes/aggregate-node.ts +220 -0
- package/src/planner/nodes/array-index-node.ts +50 -0
- package/src/planner/nodes/block.ts +80 -0
- package/src/planner/nodes/cache-node.ts +94 -0
- package/src/planner/nodes/constraint-check-node.ts +95 -0
- package/src/planner/nodes/create-index-node.ts +37 -0
- package/src/planner/nodes/create-table-node.ts +31 -0
- package/src/planner/nodes/create-view-node.ts +40 -0
- package/src/planner/nodes/cte-node.ts +111 -0
- package/src/planner/nodes/cte-reference-node.ts +89 -0
- package/src/planner/nodes/delete-node.ts +72 -0
- package/src/planner/nodes/distinct-node.ts +93 -0
- package/src/planner/nodes/dml-executor-node.ts +98 -0
- package/src/planner/nodes/drop-table-node.ts +31 -0
- package/src/planner/nodes/drop-view-node.ts +33 -0
- package/src/planner/nodes/filter.ts +91 -0
- package/src/planner/nodes/function.ts +93 -0
- package/src/planner/nodes/insert-node.ts +97 -0
- package/src/planner/nodes/join-node.ts +213 -0
- package/src/planner/nodes/limit-offset.ts +125 -0
- package/src/planner/nodes/physical-access-nodes.ts +298 -0
- package/src/planner/nodes/plan-node-type.ts +87 -0
- package/src/planner/nodes/plan-node.ts +466 -0
- package/src/planner/nodes/pragma.ts +94 -0
- package/src/planner/nodes/project-node.ts +223 -0
- package/src/planner/nodes/recursive-cte-node.ts +130 -0
- package/src/planner/nodes/reference.ts +310 -0
- package/src/planner/nodes/returning-node.ts +215 -0
- package/src/planner/nodes/scalar.ts +736 -0
- package/src/planner/nodes/scan.ts +103 -0
- package/src/planner/nodes/sequencing-node.ts +113 -0
- package/src/planner/nodes/set-operation-node.ts +87 -0
- package/src/planner/nodes/single-row.ts +80 -0
- package/src/planner/nodes/sink-node.ts +61 -0
- package/src/planner/nodes/sort.ts +137 -0
- package/src/planner/nodes/stream-aggregate.ts +225 -0
- package/src/planner/nodes/subquery.ts +207 -0
- package/src/planner/nodes/table-function-call.ts +127 -0
- package/src/planner/nodes/transaction-node.ts +61 -0
- package/src/planner/nodes/update-node.ts +114 -0
- package/src/planner/nodes/values-node.ts +244 -0
- package/src/planner/nodes/view-reference-node.ts +97 -0
- package/src/planner/nodes/window-function.ts +73 -0
- package/src/planner/nodes/window-node.ts +193 -0
- package/src/planner/optimizer-tuning.ts +87 -0
- package/src/planner/optimizer.ts +263 -0
- package/src/planner/planning-context.ts +168 -0
- package/src/planner/resolve.ts +100 -0
- package/src/planner/rules/README.md +96 -0
- package/src/planner/rules/access/rule-select-access-path.ts +180 -0
- package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +76 -0
- package/src/planner/rules/cache/rule-cte-optimization.ts +66 -0
- package/src/planner/rules/cache/rule-materialization-advisory.ts +66 -0
- package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +110 -0
- package/src/planner/rules/physical/rule-mark-physical.ts +37 -0
- package/src/planner/scopes/aliased.ts +50 -0
- package/src/planner/scopes/base.ts +27 -0
- package/src/planner/scopes/empty.ts +22 -0
- package/src/planner/scopes/global.ts +73 -0
- package/src/planner/scopes/multi.ts +41 -0
- package/src/planner/scopes/param.ts +96 -0
- package/src/planner/scopes/registered.ts +78 -0
- package/src/planner/scopes/scope.ts +28 -0
- package/src/planner/stats/basic-estimates.ts +107 -0
- package/src/planner/stats/index.ts +223 -0
- package/src/planner/type-utils.ts +95 -0
- package/src/planner/validation/plan-validator.ts +340 -0
- package/src/runtime/async-util.ts +282 -0
- package/src/runtime/cache/shared-cache.ts +169 -0
- package/src/runtime/emission-context.ts +310 -0
- package/src/runtime/emit/add-constraint.ts +54 -0
- package/src/runtime/emit/aggregate.ts +533 -0
- package/src/runtime/emit/array-index.ts +25 -0
- package/src/runtime/emit/binary.ts +335 -0
- package/src/runtime/emit/block.ts +23 -0
- package/src/runtime/emit/cache.ts +64 -0
- package/src/runtime/emit/case.ts +87 -0
- package/src/runtime/emit/cast.ts +151 -0
- package/src/runtime/emit/collate.ts +9 -0
- package/src/runtime/emit/column-reference.ts +50 -0
- package/src/runtime/emit/constraint-check.ts +285 -0
- package/src/runtime/emit/create-index.ts +15 -0
- package/src/runtime/emit/create-table.ts +15 -0
- package/src/runtime/emit/create-view.ts +52 -0
- package/src/runtime/emit/cte-reference.ts +75 -0
- package/src/runtime/emit/cte.ts +39 -0
- package/src/runtime/emit/delete.ts +24 -0
- package/src/runtime/emit/distinct.ts +45 -0
- package/src/runtime/emit/dml-executor.ts +94 -0
- package/src/runtime/emit/drop-table.ts +27 -0
- package/src/runtime/emit/drop-view.ts +49 -0
- package/src/runtime/emit/filter.ts +37 -0
- package/src/runtime/emit/insert.ts +54 -0
- package/src/runtime/emit/join.ts +145 -0
- package/src/runtime/emit/limit-offset.ts +73 -0
- package/src/runtime/emit/literal.ts +17 -0
- package/src/runtime/emit/parameter.ts +59 -0
- package/src/runtime/emit/pragma.ts +56 -0
- package/src/runtime/emit/project.ts +40 -0
- package/src/runtime/emit/recursive-cte.ts +120 -0
- package/src/runtime/emit/returning.ts +48 -0
- package/src/runtime/emit/scalar-function.ts +43 -0
- package/src/runtime/emit/scan.ts +88 -0
- package/src/runtime/emit/sequencing.ts +24 -0
- package/src/runtime/emit/set-operation.ts +111 -0
- package/src/runtime/emit/sink.ts +27 -0
- package/src/runtime/emit/sort.ts +78 -0
- package/src/runtime/emit/subquery.ts +143 -0
- package/src/runtime/emit/table-reference.ts +92 -0
- package/src/runtime/emit/table-valued-function.ts +119 -0
- package/src/runtime/emit/transaction.ts +167 -0
- package/src/runtime/emit/unary.ts +85 -0
- package/src/runtime/emit/update.ts +73 -0
- package/src/runtime/emit/values.ts +66 -0
- package/src/runtime/emit/window-function.ts +42 -0
- package/src/runtime/emit/window.ts +472 -0
- package/src/runtime/emitters.ts +130 -0
- package/src/runtime/register.ts +134 -0
- package/src/runtime/scheduler.ts +488 -0
- package/src/runtime/types.ts +191 -0
- package/src/runtime/utils.ts +136 -0
- package/src/schema/change-events.ts +80 -0
- package/src/schema/column.ts +45 -0
- package/src/schema/function.ts +139 -0
- package/src/schema/manager.ts +694 -0
- package/src/schema/schema.ts +199 -0
- package/src/schema/table.ts +364 -0
- package/src/schema/view.ts +19 -0
- package/src/schema/window-function.ts +54 -0
- package/src/util/affinity.ts +151 -0
- package/src/util/ast-stringify.ts +764 -0
- package/src/util/cached.ts +25 -0
- package/src/util/coercion.ts +113 -0
- package/src/util/comparison.ts +437 -0
- package/src/util/environment.ts +52 -0
- package/src/util/latches.ts +47 -0
- package/src/util/patterns.ts +56 -0
- package/src/util/plan-formatter.ts +51 -0
- package/src/util/plugin-loader.ts +69 -0
- package/src/util/row-descriptor.ts +105 -0
- package/src/util/serialization.ts +45 -0
- package/src/util/working-table-iterable.ts +30 -0
- package/src/vtab/best-access-plan.ts +270 -0
- package/src/vtab/connection.ts +36 -0
- package/src/vtab/filter-info.ts +23 -0
- package/src/vtab/index-info.ts +84 -0
- package/src/vtab/manifest.ts +37 -0
- package/src/vtab/memory/connection.ts +73 -0
- package/src/vtab/memory/index.ts +178 -0
- package/src/vtab/memory/layer/base-cursor.ts +124 -0
- package/src/vtab/memory/layer/base.ts +273 -0
- package/src/vtab/memory/layer/connection.ts +203 -0
- package/src/vtab/memory/layer/interface.ts +47 -0
- package/src/vtab/memory/layer/manager.ts +861 -0
- package/src/vtab/memory/layer/safe-iterate.ts +49 -0
- package/src/vtab/memory/layer/scan-plan.ts +84 -0
- package/src/vtab/memory/layer/transaction-cursor.ts +162 -0
- package/src/vtab/memory/layer/transaction.ts +229 -0
- package/src/vtab/memory/module.ts +673 -0
- package/src/vtab/memory/table.ts +253 -0
- package/src/vtab/memory/types.ts +23 -0
- package/src/vtab/memory/utils/logging.ts +33 -0
- package/src/vtab/memory/utils/primary-key.ts +158 -0
- package/src/vtab/module.ts +140 -0
- package/src/vtab/table.ts +143 -0
|
@@ -0,0 +1,750 @@
|
|
|
1
|
+
import { createLogger } from '../common/logger.js';
|
|
2
|
+
import { MisuseError, quereusError, QuereusError } from '../common/errors.js';
|
|
3
|
+
import { StatusCode } from '../common/types.js';
|
|
4
|
+
import { Statement } from './statement.js';
|
|
5
|
+
import { SchemaManager } from '../schema/manager.js';
|
|
6
|
+
import { BUILTIN_FUNCTIONS } from '../func/builtins/index.js';
|
|
7
|
+
import { createScalarFunction, createAggregateFunction } from '../func/registration.js';
|
|
8
|
+
import { FunctionFlags } from '../common/constants.js';
|
|
9
|
+
import { MemoryTableModule } from '../vtab/memory/module.js';
|
|
10
|
+
import { BINARY_COLLATION, getCollation, NOCASE_COLLATION, registerCollation, RTRIM_COLLATION } from '../util/comparison.js';
|
|
11
|
+
import { Parser, ParseError } from '../parser/parser.js';
|
|
12
|
+
import { buildBlock } from '../planner/building/block.js';
|
|
13
|
+
import { emitPlanNode } from '../runtime/emitters.js';
|
|
14
|
+
import { Scheduler } from '../runtime/scheduler.js';
|
|
15
|
+
import { BuildTimeDependencyTracker } from '../planner/planning-context.js';
|
|
16
|
+
import { ParameterScope } from '../planner/scopes/param.js';
|
|
17
|
+
import { GlobalScope } from '../planner/scopes/global.js';
|
|
18
|
+
import { registerEmitters } from '../runtime/register.js';
|
|
19
|
+
import { serializePlanTree } from '../planner/debug.js';
|
|
20
|
+
import { EmissionContext } from '../runtime/emission-context.js';
|
|
21
|
+
import { Optimizer, DEFAULT_TUNING } from '../planner/optimizer.js';
|
|
22
|
+
import { registerBuiltinWindowFunctions } from '../func/builtins/builtin-window-functions.js';
|
|
23
|
+
import { DatabaseOptionsManager } from './database-options.js';
|
|
24
|
+
const log = createLogger('core:database');
|
|
25
|
+
const warnLog = log.extend('warn');
|
|
26
|
+
const errorLog = log.extend('error');
|
|
27
|
+
const debugLog = log.extend('debug');
|
|
28
|
+
/**
|
|
29
|
+
* Represents a connection to an Quereus database (in-memory in this port).
|
|
30
|
+
* Manages schema, prepared statements, virtual tables, and functions.
|
|
31
|
+
*/
|
|
32
|
+
export class Database {
|
|
33
|
+
schemaManager;
|
|
34
|
+
isOpen = true;
|
|
35
|
+
statements = new Set();
|
|
36
|
+
isAutocommit = true; // Manages transaction state
|
|
37
|
+
inTransaction = false;
|
|
38
|
+
activeConnections = new Map();
|
|
39
|
+
inImplicitTransaction = false; // Track if we're in an implicit transaction
|
|
40
|
+
optimizer;
|
|
41
|
+
options;
|
|
42
|
+
constructor() {
|
|
43
|
+
this.schemaManager = new SchemaManager(this);
|
|
44
|
+
this.options = new DatabaseOptionsManager();
|
|
45
|
+
log("Database instance created.");
|
|
46
|
+
// Register built-in functions
|
|
47
|
+
this.registerBuiltinFunctions();
|
|
48
|
+
// Register default virtual table modules via SchemaManager
|
|
49
|
+
// The SchemaManager.defaultVTabModuleName is already initialized (e.g. to 'memory')
|
|
50
|
+
// No need to set defaultVtabModuleName explicitly here unless it's different from SchemaManager's init value.
|
|
51
|
+
// this.schemaManager.setDefaultVTabModuleName('memory'); // Already 'memory' by default in SchemaManager
|
|
52
|
+
// this.schemaManager.setDefaultVTabArgs([]); // Already [] by default in SchemaManager
|
|
53
|
+
this.schemaManager.registerModule('memory', new MemoryTableModule());
|
|
54
|
+
// Register built-in collations
|
|
55
|
+
this.registerDefaultCollations();
|
|
56
|
+
// Register built-in window functions
|
|
57
|
+
registerBuiltinWindowFunctions();
|
|
58
|
+
registerEmitters();
|
|
59
|
+
// Initialize optimizer with default tuning
|
|
60
|
+
this.optimizer = new Optimizer(DEFAULT_TUNING);
|
|
61
|
+
// Set up option change listeners
|
|
62
|
+
this.setupOptionListeners();
|
|
63
|
+
}
|
|
64
|
+
/** @internal Set up listeners for option changes */
|
|
65
|
+
setupOptionListeners() {
|
|
66
|
+
// Register core database options with their change handlers
|
|
67
|
+
this.options.registerOption('runtime_stats', {
|
|
68
|
+
type: 'boolean',
|
|
69
|
+
defaultValue: false,
|
|
70
|
+
aliases: ['runtime_metrics'],
|
|
71
|
+
description: 'Enable runtime execution statistics collection'
|
|
72
|
+
// No onChange needed - consumed directly when creating RuntimeContext
|
|
73
|
+
});
|
|
74
|
+
this.options.registerOption('validate_plan', {
|
|
75
|
+
type: 'boolean',
|
|
76
|
+
defaultValue: false,
|
|
77
|
+
aliases: ['plan_validation'],
|
|
78
|
+
description: 'Enable plan validation before execution',
|
|
79
|
+
onChange: (event) => {
|
|
80
|
+
const newTuning = {
|
|
81
|
+
...this.optimizer.tuning,
|
|
82
|
+
debug: {
|
|
83
|
+
...this.optimizer.tuning.debug,
|
|
84
|
+
validatePlan: event.newValue
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
// Recreate optimizer with new tuning
|
|
88
|
+
this.optimizer = new Optimizer(newTuning);
|
|
89
|
+
log('Optimizer recreated with validate_plan = %s', event.newValue);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
this.options.registerOption('default_vtab_module', {
|
|
93
|
+
type: 'string',
|
|
94
|
+
defaultValue: 'memory',
|
|
95
|
+
description: 'Default virtual table module name',
|
|
96
|
+
onChange: (event) => {
|
|
97
|
+
this.schemaManager.setDefaultVTabModuleName(event.newValue);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
this.options.registerOption('default_vtab_args', {
|
|
101
|
+
type: 'object',
|
|
102
|
+
defaultValue: {},
|
|
103
|
+
description: 'Default virtual table module arguments',
|
|
104
|
+
onChange: (event) => {
|
|
105
|
+
this.schemaManager.setDefaultVTabArgs(event.newValue);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
this.options.registerOption('default_column_nullability', {
|
|
109
|
+
type: 'string',
|
|
110
|
+
defaultValue: 'not_null',
|
|
111
|
+
aliases: ['column_nullability_default', 'nullable_default'],
|
|
112
|
+
description: 'Default nullability for columns: "nullable" (SQL standard) or "not_null" (Third Manifesto)',
|
|
113
|
+
onChange: (event) => {
|
|
114
|
+
const value = event.newValue;
|
|
115
|
+
if (value !== 'nullable' && value !== 'not_null') {
|
|
116
|
+
throw new QuereusError(`Invalid default_column_nullability value: ${value}. Must be "nullable" or "not_null"`, StatusCode.ERROR);
|
|
117
|
+
}
|
|
118
|
+
log('Default column nullability changed to: %s', value);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/** @internal Registers default built-in SQL functions */
|
|
123
|
+
registerBuiltinFunctions() {
|
|
124
|
+
const mainSchema = this.schemaManager.getMainSchema();
|
|
125
|
+
BUILTIN_FUNCTIONS.forEach(funcDef => {
|
|
126
|
+
try {
|
|
127
|
+
mainSchema.addFunction(funcDef);
|
|
128
|
+
}
|
|
129
|
+
catch (e) {
|
|
130
|
+
errorLog(`Failed to register built-in function ${funcDef.name}/${funcDef.numArgs}: %O`, e);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
log(`Registered ${BUILTIN_FUNCTIONS.length} built-in functions.`);
|
|
134
|
+
}
|
|
135
|
+
/** @internal Registers default collation sequences */
|
|
136
|
+
registerDefaultCollations() {
|
|
137
|
+
// Register the built-in collations
|
|
138
|
+
registerCollation('BINARY', BINARY_COLLATION);
|
|
139
|
+
registerCollation('NOCASE', NOCASE_COLLATION);
|
|
140
|
+
registerCollation('RTRIM', RTRIM_COLLATION);
|
|
141
|
+
log("Default collations registered (BINARY, NOCASE, RTRIM)");
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Prepares an SQL statement for execution.
|
|
145
|
+
* @param sql The SQL string to prepare.
|
|
146
|
+
* @returns A Statement object.
|
|
147
|
+
* @throws QuereusError on failure (e.g., syntax error).
|
|
148
|
+
*/
|
|
149
|
+
prepare(sql) {
|
|
150
|
+
this.checkOpen();
|
|
151
|
+
log('Preparing SQL (new runtime): %s', sql);
|
|
152
|
+
// Statement constructor defers planning/compilation until first step or explicit compile()
|
|
153
|
+
const stmt = new Statement(this, sql);
|
|
154
|
+
this.statements.add(stmt);
|
|
155
|
+
return stmt;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Executes one or more SQL statements directly.
|
|
159
|
+
* @param sql The SQL string(s) to execute.
|
|
160
|
+
* @param params Optional parameters to bind.
|
|
161
|
+
* @returns A Promise resolving when execution completes.
|
|
162
|
+
* @throws QuereusError on failure.
|
|
163
|
+
*/
|
|
164
|
+
async exec(sql, params) {
|
|
165
|
+
this.checkOpen();
|
|
166
|
+
log('Executing SQL block (new runtime): %s', sql);
|
|
167
|
+
const parser = new Parser();
|
|
168
|
+
let batch;
|
|
169
|
+
try {
|
|
170
|
+
batch = parser.parseAll(sql);
|
|
171
|
+
}
|
|
172
|
+
catch (e) {
|
|
173
|
+
if (e instanceof ParseError)
|
|
174
|
+
throw new QuereusError(`Parse error: ${e.message}`, StatusCode.ERROR, e);
|
|
175
|
+
throw e;
|
|
176
|
+
}
|
|
177
|
+
if (batch.length === 0)
|
|
178
|
+
return;
|
|
179
|
+
const needsImplicitTransaction = batch.length > 1
|
|
180
|
+
&& this.isAutocommit
|
|
181
|
+
// has explicit transaction
|
|
182
|
+
&& !batch.some(ast => ast.type === 'begin' || ast.type === 'commit' || ast.type === 'rollback' || ast.type === 'savepoint' || ast.type === 'release');
|
|
183
|
+
let executionError = null;
|
|
184
|
+
try {
|
|
185
|
+
if (needsImplicitTransaction) {
|
|
186
|
+
await this.beginImplicitTransaction();
|
|
187
|
+
}
|
|
188
|
+
for (let i = 0; i < batch.length; i++) {
|
|
189
|
+
const statementAst = batch[i];
|
|
190
|
+
let plan;
|
|
191
|
+
try {
|
|
192
|
+
plan = this._buildPlan([statementAst], params);
|
|
193
|
+
if (plan.statements.length === 0)
|
|
194
|
+
continue; // No-op for this AST
|
|
195
|
+
const optimizedPlan = this.optimizer.optimize(plan, this);
|
|
196
|
+
const emissionContext = new EmissionContext(this);
|
|
197
|
+
const rootInstruction = emitPlanNode(optimizedPlan, emissionContext);
|
|
198
|
+
const scheduler = new Scheduler(rootInstruction);
|
|
199
|
+
const runtimeCtx = {
|
|
200
|
+
db: this,
|
|
201
|
+
stmt: null, // No persistent Statement object for transient exec statements
|
|
202
|
+
params: params ?? {},
|
|
203
|
+
context: new Map(),
|
|
204
|
+
tableContexts: new Map(),
|
|
205
|
+
enableMetrics: this.options.getBooleanOption('runtime_stats'),
|
|
206
|
+
};
|
|
207
|
+
void await scheduler.run(runtimeCtx);
|
|
208
|
+
// Nothing to do with the result, this is executed for side effects only
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
executionError = err instanceof QuereusError ? err : new QuereusError(err.message, StatusCode.ERROR, err);
|
|
212
|
+
break; // Stop processing further statements on error
|
|
213
|
+
}
|
|
214
|
+
// No explicit finalize for transient plan/scheduler used in exec loop
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
finally {
|
|
218
|
+
if (needsImplicitTransaction) {
|
|
219
|
+
try {
|
|
220
|
+
if (executionError) {
|
|
221
|
+
await this.rollbackImplicitTransaction();
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
await this.commitImplicitTransaction();
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch (txError) {
|
|
228
|
+
errorLog(`Error during implicit transaction ${executionError ? 'rollback' : 'commit'}: %O`, txError);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (executionError) {
|
|
233
|
+
throw executionError;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Registers a virtual table module.
|
|
238
|
+
* @param name The name of the module.
|
|
239
|
+
* @param module The module implementation.
|
|
240
|
+
* @param auxData Optional client data passed to xCreate/xConnect.
|
|
241
|
+
*/
|
|
242
|
+
registerVtabModule(name, module, auxData) {
|
|
243
|
+
this.checkOpen();
|
|
244
|
+
this.schemaManager.registerModule(name, module, auxData);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Begins a transaction.
|
|
248
|
+
* @param mode Transaction mode ('deferred', 'immediate', or 'exclusive').
|
|
249
|
+
*/
|
|
250
|
+
async beginTransaction(mode = 'deferred') {
|
|
251
|
+
this.checkOpen();
|
|
252
|
+
if (this.inTransaction) {
|
|
253
|
+
throw new QuereusError("Transaction already active", StatusCode.ERROR);
|
|
254
|
+
}
|
|
255
|
+
await this.exec(`BEGIN ${mode.toUpperCase()} TRANSACTION`);
|
|
256
|
+
this.inTransaction = true;
|
|
257
|
+
this.isAutocommit = false;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Commits the current transaction.
|
|
261
|
+
*/
|
|
262
|
+
async commit() {
|
|
263
|
+
this.checkOpen();
|
|
264
|
+
if (!this.inTransaction) {
|
|
265
|
+
throw new QuereusError("No transaction active", StatusCode.ERROR);
|
|
266
|
+
}
|
|
267
|
+
await this.exec("COMMIT");
|
|
268
|
+
this.inTransaction = false;
|
|
269
|
+
this.isAutocommit = true;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Rolls back the current transaction.
|
|
273
|
+
*/
|
|
274
|
+
async rollback() {
|
|
275
|
+
this.checkOpen();
|
|
276
|
+
if (!this.inTransaction) {
|
|
277
|
+
throw new QuereusError("No transaction active", StatusCode.ERROR);
|
|
278
|
+
}
|
|
279
|
+
await this.exec("ROLLBACK");
|
|
280
|
+
this.inTransaction = false;
|
|
281
|
+
this.isAutocommit = true;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Closes the database connection and releases resources.
|
|
285
|
+
* @returns A promise resolving on completion.
|
|
286
|
+
*/
|
|
287
|
+
async close() {
|
|
288
|
+
if (!this.isOpen) {
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
log("Closing database...");
|
|
292
|
+
this.isOpen = false;
|
|
293
|
+
// Disconnect all active connections first
|
|
294
|
+
await this.disconnectAllConnections();
|
|
295
|
+
// Finalize all prepared statements
|
|
296
|
+
const finalizePromises = Array.from(this.statements).map(stmt => stmt.finalize());
|
|
297
|
+
await Promise.allSettled(finalizePromises); // Wait even if some fail
|
|
298
|
+
this.statements.clear();
|
|
299
|
+
// Clear schemas, ensuring VTabs are potentially disconnected
|
|
300
|
+
// This will also call xDestroy on VTabs via SchemaManager.clearAll -> schema.clearTables -> schemaManager.dropTable
|
|
301
|
+
this.schemaManager.clearAll();
|
|
302
|
+
// this.registeredVTabs.clear(); // Removed, SchemaManager handles module lifecycle
|
|
303
|
+
log("Database closed.");
|
|
304
|
+
}
|
|
305
|
+
/** @internal Called by Statement when it's finalized */
|
|
306
|
+
_statementFinalized(stmt) {
|
|
307
|
+
this.statements.delete(stmt);
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Checks if the database connection is in autocommit mode.
|
|
311
|
+
*/
|
|
312
|
+
getAutocommit() {
|
|
313
|
+
this.checkOpen();
|
|
314
|
+
return this.isAutocommit;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Programmatically defines or replaces a table in the 'main' schema.
|
|
318
|
+
* This is an alternative/supplement to using `CREATE TABLE`.
|
|
319
|
+
* @param definition The schema definition for the table.
|
|
320
|
+
*/
|
|
321
|
+
defineTable(definition) {
|
|
322
|
+
this.checkOpen();
|
|
323
|
+
if (definition.schemaName !== 'main') {
|
|
324
|
+
throw new MisuseError("Programmatic definition only supported for 'main' schema currently");
|
|
325
|
+
}
|
|
326
|
+
this.schemaManager.getMainSchema().addTable(definition);
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Registers a user-defined scalar function.
|
|
330
|
+
*
|
|
331
|
+
* @param name The name of the SQL function.
|
|
332
|
+
* @param options Configuration: { numArgs: number, deterministic?: boolean, flags?: number }.
|
|
333
|
+
* @param func The JavaScript function implementation.
|
|
334
|
+
*/
|
|
335
|
+
createScalarFunction(name, options, func) {
|
|
336
|
+
this.checkOpen();
|
|
337
|
+
const baseFlags = (options.deterministic ? FunctionFlags.DETERMINISTIC : 0) | FunctionFlags.UTF8;
|
|
338
|
+
const flags = options.flags ?? baseFlags;
|
|
339
|
+
const schema = createScalarFunction({ name, numArgs: options.numArgs, flags }, func);
|
|
340
|
+
try {
|
|
341
|
+
this.schemaManager.getMainSchema().addFunction(schema);
|
|
342
|
+
}
|
|
343
|
+
catch (e) {
|
|
344
|
+
errorLog(`Failed to register scalar function ${name}/${options.numArgs}: %O`, e);
|
|
345
|
+
if (e instanceof Error)
|
|
346
|
+
throw e;
|
|
347
|
+
else
|
|
348
|
+
quereusError(String(e));
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Registers a user-defined aggregate function.
|
|
353
|
+
*
|
|
354
|
+
* @param name The name of the SQL function.
|
|
355
|
+
* @param options Configuration: { numArgs: number, flags?: number, initialState?: any }.
|
|
356
|
+
* @param stepFunc The function called for each row (accumulator, ...args) => newAccumulator.
|
|
357
|
+
* @param finalFunc The function called at the end (accumulator) => finalResult.
|
|
358
|
+
*/
|
|
359
|
+
createAggregateFunction(name, options, stepFunc, finalFunc) {
|
|
360
|
+
this.checkOpen();
|
|
361
|
+
const flags = options.flags ?? FunctionFlags.UTF8;
|
|
362
|
+
const schema = createAggregateFunction({ name, numArgs: options.numArgs, flags, initialValue: options.initialState }, stepFunc, finalFunc);
|
|
363
|
+
try {
|
|
364
|
+
this.schemaManager.getMainSchema().addFunction(schema);
|
|
365
|
+
}
|
|
366
|
+
catch (e) {
|
|
367
|
+
errorLog(`Failed to register aggregate function ${name}/${options.numArgs}: %O`, e);
|
|
368
|
+
if (e instanceof Error)
|
|
369
|
+
throw e;
|
|
370
|
+
else
|
|
371
|
+
quereusError(String(e));
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Registers a function using a pre-defined FunctionSchema.
|
|
376
|
+
* This is the lower-level registration method.
|
|
377
|
+
*
|
|
378
|
+
* @param schema The FunctionSchema object describing the function.
|
|
379
|
+
*/
|
|
380
|
+
registerFunction(schema) {
|
|
381
|
+
this.checkOpen();
|
|
382
|
+
try {
|
|
383
|
+
this.schemaManager.getMainSchema().addFunction(schema);
|
|
384
|
+
}
|
|
385
|
+
catch (e) {
|
|
386
|
+
errorLog(`Failed to register function ${schema.name}/${schema.numArgs}: %O`, e);
|
|
387
|
+
if (e instanceof Error)
|
|
388
|
+
throw e;
|
|
389
|
+
else
|
|
390
|
+
quereusError(String(e));
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
/** Sets only the name of the default module. */
|
|
394
|
+
setDefaultVtabName(name) {
|
|
395
|
+
this.checkOpen();
|
|
396
|
+
this.schemaManager.setDefaultVTabModuleName(name);
|
|
397
|
+
}
|
|
398
|
+
/** Sets the default args directly. */
|
|
399
|
+
setDefaultVtabArgs(args) {
|
|
400
|
+
this.checkOpen();
|
|
401
|
+
this.schemaManager.setDefaultVTabArgs(args);
|
|
402
|
+
}
|
|
403
|
+
/** @internal Sets the default args by parsing a JSON string. Should be managed by SchemaManager now. */
|
|
404
|
+
setDefaultVtabArgsFromJson(argsJsonString) {
|
|
405
|
+
this.checkOpen();
|
|
406
|
+
this.schemaManager.setDefaultVTabArgsFromJson(argsJsonString);
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Gets the default virtual table module name and arguments.
|
|
410
|
+
* @returns An object containing the module name and arguments.
|
|
411
|
+
*/
|
|
412
|
+
getDefaultVtabModule() {
|
|
413
|
+
this.checkOpen();
|
|
414
|
+
return this.schemaManager.getDefaultVTabModule();
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Set database configuration options
|
|
418
|
+
* @param option The option name
|
|
419
|
+
* @param value The option value
|
|
420
|
+
*/
|
|
421
|
+
setOption(option, value) {
|
|
422
|
+
this.checkOpen();
|
|
423
|
+
this.options.setOption(option, value);
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Get database configuration option value
|
|
427
|
+
* @param option The option name
|
|
428
|
+
* @returns The option value
|
|
429
|
+
*/
|
|
430
|
+
getOption(option) {
|
|
431
|
+
this.checkOpen();
|
|
432
|
+
return this.options.getOption(option);
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Registers a user-defined collation sequence.
|
|
436
|
+
* @param name The name of the collation sequence (case-insensitive).
|
|
437
|
+
* @param func The comparison function (a, b) => number (-1, 0, 1).
|
|
438
|
+
* @example
|
|
439
|
+
* // Example: Create a custom collation for phone numbers
|
|
440
|
+
* db.registerCollation('PHONENUMBER', (a, b) => {
|
|
441
|
+
* // Normalize phone numbers by removing non-digit characters
|
|
442
|
+
* const normalize = (phone) => phone.replace(/\D/g, '');
|
|
443
|
+
* const numA = normalize(a);
|
|
444
|
+
* const numB = normalize(b);
|
|
445
|
+
* return numA < numB ? -1 : numA > numB ? 1 : 0;
|
|
446
|
+
* });
|
|
447
|
+
*
|
|
448
|
+
* // Then use it in SQL:
|
|
449
|
+
* // SELECT * FROM contacts ORDER BY phone COLLATE PHONENUMBER;
|
|
450
|
+
*/
|
|
451
|
+
registerCollation(name, func) {
|
|
452
|
+
this.checkOpen();
|
|
453
|
+
registerCollation(name, func);
|
|
454
|
+
log('Registered collation: %s', name);
|
|
455
|
+
}
|
|
456
|
+
/** @internal Gets a registered collation function */
|
|
457
|
+
_getCollation(name) {
|
|
458
|
+
return getCollation(name);
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Prepares, binds parameters, executes, and yields result rows for a query.
|
|
462
|
+
* This is a high-level convenience method for iterating over query results.
|
|
463
|
+
* The underlying statement is automatically finalized when iteration completes
|
|
464
|
+
* or if an error occurs.
|
|
465
|
+
*
|
|
466
|
+
* @param sql The SQL query string to execute.
|
|
467
|
+
* @param params Optional parameters to bind (array for positional, object for named).
|
|
468
|
+
* @yields Each result row as an object (`Record<string, SqlValue>`).
|
|
469
|
+
* @returns An `AsyncIterableIterator` yielding result rows.
|
|
470
|
+
* @throws MisuseError if the database is closed.
|
|
471
|
+
* @throws QuereusError on prepare/bind/execution errors.
|
|
472
|
+
*
|
|
473
|
+
* @example
|
|
474
|
+
* ```typescript
|
|
475
|
+
* try {
|
|
476
|
+
* for await (const user of db.eval("SELECT * FROM users WHERE status = ?", ["active"])) {
|
|
477
|
+
* console.log(`Active user: ${user.name}`);
|
|
478
|
+
* }
|
|
479
|
+
* } catch (e) {
|
|
480
|
+
* console.error("Query failed:", e);
|
|
481
|
+
* }
|
|
482
|
+
* ```
|
|
483
|
+
*/
|
|
484
|
+
async *eval(sql, params) {
|
|
485
|
+
this.checkOpen();
|
|
486
|
+
let stmt = null;
|
|
487
|
+
try {
|
|
488
|
+
stmt = this.prepare(sql);
|
|
489
|
+
if (stmt.astBatch.length > 1) {
|
|
490
|
+
warnLog(`Database.eval called with multi-statement SQL. Only results from the first statement will be yielded.`);
|
|
491
|
+
}
|
|
492
|
+
if (stmt.astBatch.length > 0) { // Check if there are any statements to execute
|
|
493
|
+
// If currentAstIndex defaults to 0 and astBatch is not empty, this will run the first statement.
|
|
494
|
+
yield* stmt.all(params);
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
// No statements, yield nothing.
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
finally {
|
|
502
|
+
if (stmt) {
|
|
503
|
+
await stmt.finalize();
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
getPlan(sqlOrAst) {
|
|
508
|
+
this.checkOpen();
|
|
509
|
+
let ast;
|
|
510
|
+
let originalSqlString = undefined;
|
|
511
|
+
if (typeof sqlOrAst === 'string') {
|
|
512
|
+
originalSqlString = sqlOrAst;
|
|
513
|
+
const parser = new Parser();
|
|
514
|
+
try {
|
|
515
|
+
ast = parser.parse(originalSqlString);
|
|
516
|
+
}
|
|
517
|
+
catch (e) {
|
|
518
|
+
errorLog("Failed to parse SQL for query plan: %O", e);
|
|
519
|
+
throw new QuereusError(`Parse error: ${e.message}`, StatusCode.ERROR, e);
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
else {
|
|
523
|
+
ast = sqlOrAst;
|
|
524
|
+
}
|
|
525
|
+
const plan = this._buildPlan([ast]);
|
|
526
|
+
if (plan.statements.length === 0)
|
|
527
|
+
return plan; // No-op for this AST
|
|
528
|
+
return this.optimizer.optimize(plan, this);
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Gets a detailed JSON representation of the query plan for debugging.
|
|
532
|
+
* @param sql The SQL statement to plan.
|
|
533
|
+
* @returns JSON string containing the detailed plan tree.
|
|
534
|
+
*/
|
|
535
|
+
getDebugPlan(sql) {
|
|
536
|
+
this.checkOpen();
|
|
537
|
+
const plan = this.getPlan(sql);
|
|
538
|
+
return serializePlanTree(plan);
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Prepares a statement with debug options enabled.
|
|
542
|
+
* @param sql The SQL statement to prepare.
|
|
543
|
+
* @param debug Debug options to enable.
|
|
544
|
+
* @returns A Statement with debug capabilities.
|
|
545
|
+
*/
|
|
546
|
+
prepareDebug(sql, debug) {
|
|
547
|
+
this.checkOpen();
|
|
548
|
+
log('Preparing SQL with debug options: %s', sql);
|
|
549
|
+
const stmt = new Statement(this, sql);
|
|
550
|
+
// Set debug options on the statement
|
|
551
|
+
stmt._debugOptions = debug;
|
|
552
|
+
this.statements.add(stmt);
|
|
553
|
+
return stmt;
|
|
554
|
+
}
|
|
555
|
+
/** @internal */
|
|
556
|
+
_getVtabModule(name) {
|
|
557
|
+
// Delegate to SchemaManager
|
|
558
|
+
return this.schemaManager.getModule(name);
|
|
559
|
+
// return this.registeredVTabs.get(name.toLowerCase()); // Old implementation
|
|
560
|
+
}
|
|
561
|
+
/** @internal */
|
|
562
|
+
_findTable(tableName, dbName) {
|
|
563
|
+
return this.schemaManager.findTable(tableName, dbName);
|
|
564
|
+
}
|
|
565
|
+
/** @internal */
|
|
566
|
+
_findFunction(funcName, nArg) {
|
|
567
|
+
return this.schemaManager.findFunction(funcName, nArg);
|
|
568
|
+
}
|
|
569
|
+
/** @internal */
|
|
570
|
+
_buildPlan(statements, params) {
|
|
571
|
+
const globalScope = new GlobalScope(this.schemaManager);
|
|
572
|
+
// TODO: way to generate type hints from parameters? Maybe we should extract that from the expression context?
|
|
573
|
+
// This ParameterScope is for the entire batch. It has globalScope as its parent.
|
|
574
|
+
const parameterScope = new ParameterScope(globalScope);
|
|
575
|
+
const ctx = {
|
|
576
|
+
db: this,
|
|
577
|
+
schemaManager: this.schemaManager,
|
|
578
|
+
parameters: params ?? {},
|
|
579
|
+
scope: parameterScope,
|
|
580
|
+
schemaDependencies: new BuildTimeDependencyTracker(),
|
|
581
|
+
schemaCache: new Map()
|
|
582
|
+
};
|
|
583
|
+
return buildBlock(ctx, statements);
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* @internal Registers an active VirtualTable connection for transaction management.
|
|
587
|
+
* @param connection The connection to register
|
|
588
|
+
*/
|
|
589
|
+
async registerConnection(connection) {
|
|
590
|
+
this.activeConnections.set(connection.connectionId, connection);
|
|
591
|
+
debugLog(`Registered connection ${connection.connectionId} for table ${connection.tableName}`);
|
|
592
|
+
// If we're already in a transaction (implicit or explicit),
|
|
593
|
+
// start a transaction on this new connection
|
|
594
|
+
if (this.inTransaction) {
|
|
595
|
+
try {
|
|
596
|
+
await connection.begin();
|
|
597
|
+
debugLog(`Started transaction on newly registered connection ${connection.connectionId}`);
|
|
598
|
+
}
|
|
599
|
+
catch (error) {
|
|
600
|
+
errorLog(`Error starting transaction on newly registered connection ${connection.connectionId}: %O`, error);
|
|
601
|
+
// Don't throw here - just log the error to avoid breaking connection registration
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* @internal Unregisters an active VirtualTable connection.
|
|
607
|
+
* @param connectionId The ID of the connection to unregister
|
|
608
|
+
*/
|
|
609
|
+
unregisterConnection(connectionId) {
|
|
610
|
+
const connection = this.activeConnections.get(connectionId);
|
|
611
|
+
if (connection) {
|
|
612
|
+
// Don't disconnect during implicit transactions - let the transaction coordinate
|
|
613
|
+
if (this.inImplicitTransaction) {
|
|
614
|
+
debugLog(`Deferring disconnect of connection ${connectionId} until implicit transaction completes`);
|
|
615
|
+
return;
|
|
616
|
+
}
|
|
617
|
+
this.activeConnections.delete(connectionId);
|
|
618
|
+
debugLog(`Unregistered connection ${connectionId} for table ${connection.tableName}`);
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
/**
|
|
622
|
+
* @internal Gets an active connection by ID.
|
|
623
|
+
* @param connectionId The connection ID to look up
|
|
624
|
+
* @returns The connection if found, undefined otherwise
|
|
625
|
+
*/
|
|
626
|
+
getConnection(connectionId) {
|
|
627
|
+
return this.activeConnections.get(connectionId);
|
|
628
|
+
}
|
|
629
|
+
/**
|
|
630
|
+
* @internal Gets all active connections for a specific table.
|
|
631
|
+
* @param tableName The name of the table
|
|
632
|
+
* @returns Array of connections for the table
|
|
633
|
+
*/
|
|
634
|
+
getConnectionsForTable(tableName) {
|
|
635
|
+
return Array.from(this.activeConnections.values())
|
|
636
|
+
.filter(conn => conn.tableName === tableName);
|
|
637
|
+
}
|
|
638
|
+
/**
|
|
639
|
+
* @internal Gets all active connections.
|
|
640
|
+
* @returns Array of all active connections
|
|
641
|
+
*/
|
|
642
|
+
getAllConnections() {
|
|
643
|
+
return Array.from(this.activeConnections.values());
|
|
644
|
+
}
|
|
645
|
+
/**
|
|
646
|
+
* Disconnects and removes all active connections.
|
|
647
|
+
* Called during database close.
|
|
648
|
+
*/
|
|
649
|
+
async disconnectAllConnections() {
|
|
650
|
+
const connections = Array.from(this.activeConnections.values());
|
|
651
|
+
debugLog(`Disconnecting ${connections.length} active connections`);
|
|
652
|
+
const disconnectPromises = connections.map(async (conn) => {
|
|
653
|
+
try {
|
|
654
|
+
await conn.disconnect();
|
|
655
|
+
}
|
|
656
|
+
catch (error) {
|
|
657
|
+
errorLog(`Error disconnecting connection ${conn.connectionId}: %O`, error);
|
|
658
|
+
}
|
|
659
|
+
});
|
|
660
|
+
await Promise.allSettled(disconnectPromises);
|
|
661
|
+
this.activeConnections.clear();
|
|
662
|
+
}
|
|
663
|
+
checkOpen() {
|
|
664
|
+
if (!this.isOpen)
|
|
665
|
+
throw new MisuseError("Database is closed");
|
|
666
|
+
}
|
|
667
|
+
/** Helper to execute simple commands (BEGIN, COMMIT, ROLLBACK) internally
|
|
668
|
+
* This method is for commands that don't produce rows and don't need complex parameter handling.
|
|
669
|
+
*/
|
|
670
|
+
async execSimple(sqlCommand) {
|
|
671
|
+
let stmt = null;
|
|
672
|
+
try {
|
|
673
|
+
stmt = this.prepare(sqlCommand);
|
|
674
|
+
await stmt.run();
|
|
675
|
+
}
|
|
676
|
+
finally {
|
|
677
|
+
if (stmt) {
|
|
678
|
+
await stmt.finalize();
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
/**
|
|
683
|
+
* Begin an implicit transaction and coordinate with virtual table connections
|
|
684
|
+
*/
|
|
685
|
+
async beginImplicitTransaction() {
|
|
686
|
+
debugLog("Database: Starting implicit transaction for multi-statement block.");
|
|
687
|
+
this.inImplicitTransaction = true;
|
|
688
|
+
// Begin transaction on all active connections first
|
|
689
|
+
const connections = this.getAllConnections();
|
|
690
|
+
for (const connection of connections) {
|
|
691
|
+
try {
|
|
692
|
+
await connection.begin();
|
|
693
|
+
}
|
|
694
|
+
catch (error) {
|
|
695
|
+
errorLog(`Error beginning transaction on connection ${connection.connectionId}: %O`, error);
|
|
696
|
+
throw error;
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
// Then set database state
|
|
700
|
+
this.inTransaction = true;
|
|
701
|
+
this.isAutocommit = false;
|
|
702
|
+
}
|
|
703
|
+
/**
|
|
704
|
+
* Commit an implicit transaction and coordinate with virtual table connections
|
|
705
|
+
*/
|
|
706
|
+
async commitImplicitTransaction() {
|
|
707
|
+
debugLog("Database: Committing implicit transaction.");
|
|
708
|
+
// Commit all active connections first
|
|
709
|
+
const connections = this.getAllConnections();
|
|
710
|
+
const commitPromises = connections.map(async (connection) => {
|
|
711
|
+
try {
|
|
712
|
+
await connection.commit();
|
|
713
|
+
}
|
|
714
|
+
catch (error) {
|
|
715
|
+
errorLog(`Error committing transaction on connection ${connection.connectionId}: %O`, error);
|
|
716
|
+
throw error;
|
|
717
|
+
}
|
|
718
|
+
});
|
|
719
|
+
await Promise.all(commitPromises);
|
|
720
|
+
// Reset database state
|
|
721
|
+
this.inTransaction = false;
|
|
722
|
+
this.isAutocommit = true;
|
|
723
|
+
this.inImplicitTransaction = false;
|
|
724
|
+
// DON'T disconnect connections after successful commit - leave them for subsequent queries
|
|
725
|
+
// The data in committed connections should be visible to future operations
|
|
726
|
+
}
|
|
727
|
+
/**
|
|
728
|
+
* Rollback an implicit transaction and coordinate with virtual table connections
|
|
729
|
+
*/
|
|
730
|
+
async rollbackImplicitTransaction() {
|
|
731
|
+
debugLog("Database: Rolling back implicit transaction.");
|
|
732
|
+
// Rollback all active connections
|
|
733
|
+
const connections = this.getAllConnections();
|
|
734
|
+
const rollbackPromises = connections.map(async (connection) => {
|
|
735
|
+
try {
|
|
736
|
+
await connection.rollback();
|
|
737
|
+
}
|
|
738
|
+
catch (error) {
|
|
739
|
+
errorLog(`Error rolling back transaction on connection ${connection.connectionId}: %O`, error);
|
|
740
|
+
// Don't throw here - we want to rollback as many as possible
|
|
741
|
+
}
|
|
742
|
+
});
|
|
743
|
+
await Promise.allSettled(rollbackPromises);
|
|
744
|
+
// Reset database state
|
|
745
|
+
this.inTransaction = false;
|
|
746
|
+
this.isAutocommit = true;
|
|
747
|
+
this.inImplicitTransaction = false;
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
//# sourceMappingURL=database.js.map
|