@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,56 @@
|
|
|
1
|
+
import { createLogger } from '../common/logger.js';
|
|
2
|
+
|
|
3
|
+
const log = createLogger('util:patterns');
|
|
4
|
+
const errorLog = log.extend('error');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Simple LIKE pattern matching implementation.
|
|
8
|
+
* Supports SQL LIKE patterns:
|
|
9
|
+
* - % matches any sequence of characters (including empty sequence)
|
|
10
|
+
* - _ matches any single character
|
|
11
|
+
*
|
|
12
|
+
* @param pattern The LIKE pattern
|
|
13
|
+
* @param text The text to match against
|
|
14
|
+
* @returns true if the text matches the pattern, false otherwise
|
|
15
|
+
*/
|
|
16
|
+
export function simpleLike(pattern: string, text: string): boolean {
|
|
17
|
+
// Escape regex special characters except % and _
|
|
18
|
+
const escapedPattern = pattern.replace(/[.*+^${}()|[\]\\]/g, '\\$&');
|
|
19
|
+
// Convert SQL LIKE wildcards to regex equivalents
|
|
20
|
+
const regexPattern = escapedPattern.replace(/%/g, '.*').replace(/_/g, '.');
|
|
21
|
+
|
|
22
|
+
try {
|
|
23
|
+
const regex = new RegExp(`^${regexPattern}$`);
|
|
24
|
+
return regex.test(text);
|
|
25
|
+
} catch (e) {
|
|
26
|
+
errorLog('Invalid LIKE pattern converted to regex: ^%s$, %O', regexPattern, e);
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Simple GLOB pattern matching implementation.
|
|
33
|
+
* Supports SQL GLOB patterns:
|
|
34
|
+
* - * matches any sequence of characters (including empty sequence)
|
|
35
|
+
* - ? matches any single character
|
|
36
|
+
*
|
|
37
|
+
* @param pattern The GLOB pattern
|
|
38
|
+
* @param text The text to match against
|
|
39
|
+
* @returns true if the text matches the pattern, false otherwise
|
|
40
|
+
*/
|
|
41
|
+
export function simpleGlob(pattern: string, text: string): boolean {
|
|
42
|
+
// Escape regex special characters except * and ?
|
|
43
|
+
const escapedPattern = pattern.replace(/[.*+^${}()|[\]\\]/g, '\\$&');
|
|
44
|
+
// Convert SQL GLOB wildcards to regex equivalents
|
|
45
|
+
const regexPattern = escapedPattern
|
|
46
|
+
.replace(/\\\*/g, '.*')
|
|
47
|
+
.replace(/\\\?/g, '.');
|
|
48
|
+
|
|
49
|
+
try {
|
|
50
|
+
const regex = new RegExp(`^${regexPattern}$`);
|
|
51
|
+
return regex.test(text);
|
|
52
|
+
} catch (e) {
|
|
53
|
+
errorLog('Invalid GLOB pattern converted to regex: ^%s$, %O', regexPattern, e);
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ScalarPlanNode } from '../planner/nodes/plan-node.js';
|
|
2
|
+
import { expressionToString } from './ast-stringify.js';
|
|
3
|
+
import type { ScalarType } from '../common/datatype.js';
|
|
4
|
+
import { SqlDataType } from '../common/types.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Convert a ScalarPlanNode to its string representation for use in plan descriptions.
|
|
8
|
+
*/
|
|
9
|
+
export function formatExpression(node: ScalarPlanNode): string {
|
|
10
|
+
return expressionToString(node.expression);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Convert multiple ScalarPlanNodes to a comma-separated string.
|
|
15
|
+
*/
|
|
16
|
+
export function formatExpressionList(nodes: readonly ScalarPlanNode[]): string {
|
|
17
|
+
return nodes.map(formatExpression).join(', ');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Format a scalar type to a simple string representation.
|
|
22
|
+
*/
|
|
23
|
+
export function formatScalarType(type: ScalarType): string {
|
|
24
|
+
if (type.datatype !== undefined) {
|
|
25
|
+
return SqlDataType[type.datatype];
|
|
26
|
+
}
|
|
27
|
+
return SqlDataType[type.affinity];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Format projection for display (expression with optional alias).
|
|
32
|
+
*/
|
|
33
|
+
export function formatProjection(expr: ScalarPlanNode, alias?: string): string {
|
|
34
|
+
const exprStr = formatExpression(expr);
|
|
35
|
+
return alias && alias !== exprStr ? `${exprStr} AS ${alias}` : exprStr;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Format sort key for display.
|
|
40
|
+
*/
|
|
41
|
+
export function formatSortKey(
|
|
42
|
+
expr: ScalarPlanNode,
|
|
43
|
+
direction: 'asc' | 'desc',
|
|
44
|
+
nulls?: 'first' | 'last'
|
|
45
|
+
): string {
|
|
46
|
+
const parts = [formatExpression(expr), direction.toUpperCase()];
|
|
47
|
+
if (nulls) {
|
|
48
|
+
parts.push(`NULLS ${nulls.toUpperCase()}`);
|
|
49
|
+
}
|
|
50
|
+
return parts.join(' ');
|
|
51
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { Database } from '../core/database.js';
|
|
2
|
+
import type { PluginManifest } from '../vtab/manifest.js';
|
|
3
|
+
import { StatusCode, type SqlValue } from '../common/types.js';
|
|
4
|
+
import { quereusError } from '../common/errors.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Dynamically loads and registers a plugin module
|
|
8
|
+
*
|
|
9
|
+
* @param url The URL to the ES module (can be https:// or file:// URL)
|
|
10
|
+
* @param db The Database instance to register the module with
|
|
11
|
+
* @param config Configuration values to pass to the module
|
|
12
|
+
* @returns The plugin's manifest if available
|
|
13
|
+
*/
|
|
14
|
+
export async function dynamicLoadModule(
|
|
15
|
+
url: string,
|
|
16
|
+
db: Database,
|
|
17
|
+
config: Record<string, SqlValue> = {}
|
|
18
|
+
): Promise<PluginManifest | undefined> {
|
|
19
|
+
try {
|
|
20
|
+
// Add cache-busting timestamp for development
|
|
21
|
+
const moduleUrl = new URL(url);
|
|
22
|
+
if (moduleUrl.protocol === 'file:' || moduleUrl.hostname === 'localhost') {
|
|
23
|
+
moduleUrl.searchParams.set('t', Date.now().toString());
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Dynamic import with Vite ignore comment for bundler compatibility
|
|
27
|
+
const mod = await import(/* @vite-ignore */ moduleUrl.toString());
|
|
28
|
+
|
|
29
|
+
// Validate module structure
|
|
30
|
+
if (typeof mod.default !== 'function') {
|
|
31
|
+
quereusError(`Module at ${url} has no default export function`, StatusCode.FORMAT);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Call the module's register function with the database and config
|
|
35
|
+
await mod.default(db, config);
|
|
36
|
+
|
|
37
|
+
// Return the manifest if available
|
|
38
|
+
return mod.manifest as PluginManifest | undefined;
|
|
39
|
+
} catch (error) {
|
|
40
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
41
|
+
quereusError(`Failed to load plugin from ${url}: ${message}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Validates that a URL is likely to be a valid plugin module
|
|
47
|
+
*
|
|
48
|
+
* @param url The URL to validate
|
|
49
|
+
* @returns true if the URL appears valid
|
|
50
|
+
*/
|
|
51
|
+
export function validatePluginUrl(url: string): boolean {
|
|
52
|
+
try {
|
|
53
|
+
const parsed = new URL(url);
|
|
54
|
+
|
|
55
|
+
// Allow https:// and file:// protocols
|
|
56
|
+
if (!['https:', 'file:'].includes(parsed.protocol)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Must end with .js or .mjs
|
|
61
|
+
if (!/\.(m?js)$/i.test(parsed.pathname)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return true;
|
|
66
|
+
} catch {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { RowDescriptor, Attribute } from '../planner/nodes/plan-node.js';
|
|
2
|
+
import type { Row } from '../common/types.js';
|
|
3
|
+
import { SqlDataType } from '../common/types.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Utility to build a RowDescriptor (attributeId → columnIndex mapping)
|
|
7
|
+
* for any relational plan node.
|
|
8
|
+
*/
|
|
9
|
+
export function buildRowDescriptor(attributes: Attribute[]): RowDescriptor {
|
|
10
|
+
const descriptor: RowDescriptor = [];
|
|
11
|
+
attributes.forEach((attr, index) => {
|
|
12
|
+
descriptor[attr.id] = index;
|
|
13
|
+
});
|
|
14
|
+
return descriptor;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Creates OLD and NEW row descriptors for mutation operations.
|
|
19
|
+
* Returns descriptors where OLD columns are at indices 0..n-1 and NEW columns at n..2n-1
|
|
20
|
+
*/
|
|
21
|
+
export function buildOldNewRowDescriptors(
|
|
22
|
+
oldAttributes: Attribute[],
|
|
23
|
+
newAttributes: Attribute[]
|
|
24
|
+
): {
|
|
25
|
+
oldRowDescriptor: RowDescriptor;
|
|
26
|
+
newRowDescriptor: RowDescriptor;
|
|
27
|
+
flatRowDescriptor: RowDescriptor;
|
|
28
|
+
} {
|
|
29
|
+
const oldRowDescriptor: RowDescriptor = [];
|
|
30
|
+
const newRowDescriptor: RowDescriptor = [];
|
|
31
|
+
const flatRowDescriptor: RowDescriptor = [];
|
|
32
|
+
|
|
33
|
+
// OLD attributes occupy indices 0..n-1
|
|
34
|
+
oldAttributes.forEach((attr, index) => {
|
|
35
|
+
oldRowDescriptor[attr.id] = index;
|
|
36
|
+
flatRowDescriptor[attr.id] = index;
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// NEW attributes occupy indices n..2n-1
|
|
40
|
+
newAttributes.forEach((attr, index) => {
|
|
41
|
+
const flatIndex = oldAttributes.length + index;
|
|
42
|
+
newRowDescriptor[attr.id] = index;
|
|
43
|
+
flatRowDescriptor[attr.id] = flatIndex;
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return { oldRowDescriptor, newRowDescriptor, flatRowDescriptor };
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Composes a flat row from OLD and NEW row values.
|
|
51
|
+
* Result format: [oldCol0, oldCol1, ..., oldColN, newCol0, newCol1, ..., newColN]
|
|
52
|
+
*/
|
|
53
|
+
export function composeOldNewRow(oldRow: Row | null, newRow: Row | null, columnCount: number): Row {
|
|
54
|
+
const flatRow: Row = new Array(columnCount * 2);
|
|
55
|
+
|
|
56
|
+
// Fill OLD section (indices 0..n-1)
|
|
57
|
+
for (let i = 0; i < columnCount; i++) {
|
|
58
|
+
flatRow[i] = oldRow ? oldRow[i] : null;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Fill NEW section (indices n..2n-1)
|
|
62
|
+
for (let i = 0; i < columnCount; i++) {
|
|
63
|
+
flatRow[columnCount + i] = newRow ? newRow[i] : null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return flatRow;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Extracts NEW values from a flat OLD/NEW row
|
|
71
|
+
*/
|
|
72
|
+
export function extractNewRowFromFlat(flatRow: Row, columnCount: number): Row {
|
|
73
|
+
return flatRow.slice(columnCount, columnCount * 2);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Extracts OLD values from a flat OLD/NEW row
|
|
78
|
+
*/
|
|
79
|
+
export function extractOldRowFromFlat(flatRow: Row, columnCount: number): Row {
|
|
80
|
+
return flatRow.slice(0, columnCount);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Helper to build Attribute array from flatRowDescriptor for DML nodes.
|
|
85
|
+
* This is used by UpdateNode and DeleteNode to expose their flat row layout.
|
|
86
|
+
*/
|
|
87
|
+
export function buildAttributesFromFlatDescriptor(flatRowDescriptor: RowDescriptor): Attribute[] {
|
|
88
|
+
const attributes: Attribute[] = [];
|
|
89
|
+
for (const attrIdStr in flatRowDescriptor) {
|
|
90
|
+
const attrId = parseInt(attrIdStr);
|
|
91
|
+
const index = flatRowDescriptor[attrId];
|
|
92
|
+
attributes[index] = {
|
|
93
|
+
id: attrId,
|
|
94
|
+
name: `attr_${attrId}`,
|
|
95
|
+
type: {
|
|
96
|
+
typeClass: 'scalar' as const,
|
|
97
|
+
affinity: SqlDataType.TEXT,
|
|
98
|
+
nullable: true,
|
|
99
|
+
isReadOnly: false
|
|
100
|
+
},
|
|
101
|
+
sourceRelation: 'unknown'
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
return attributes;
|
|
105
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for safe serialization, particularly handling BigInt and Uint8Arrays.
|
|
3
|
+
*/
|
|
4
|
+
import { createLogger } from '../common/logger.js';
|
|
5
|
+
|
|
6
|
+
const log = createLogger('util:serialization');
|
|
7
|
+
const errorLog = log.extend('error');
|
|
8
|
+
|
|
9
|
+
export function jsonStringify(obj: any, space?: string | number): string {
|
|
10
|
+
return JSON.stringify(
|
|
11
|
+
obj,
|
|
12
|
+
(_, value) => {
|
|
13
|
+
if (typeof value === 'bigint') {
|
|
14
|
+
// Convert to number if it's within safe integer limits for JSON
|
|
15
|
+
if (value >= BigInt(Number.MIN_SAFE_INTEGER) && value <= BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
16
|
+
return Number(value);
|
|
17
|
+
}
|
|
18
|
+
// Otherwise, convert to string (without 'n' suffix for standard JSON)
|
|
19
|
+
return value.toString();
|
|
20
|
+
} else if (value instanceof Uint8Array) {
|
|
21
|
+
return `0x${Buffer.from(value).toString('hex')}`; // Keep existing Uint8Array handling
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
},
|
|
25
|
+
space
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Safely stringifies an object to JSON, converting BigInts to strings
|
|
31
|
+
* ending with 'n' to avoid serialization errors.
|
|
32
|
+
*
|
|
33
|
+
* @param obj The object to stringify.
|
|
34
|
+
* @param space Optional spacing argument for JSON.stringify.
|
|
35
|
+
* @returns JSON string representation.
|
|
36
|
+
*/
|
|
37
|
+
export function safeJsonStringify(obj: any, space?: string | number): string {
|
|
38
|
+
try {
|
|
39
|
+
return jsonStringify(obj, space);
|
|
40
|
+
} catch (e) {
|
|
41
|
+
// Fallback in case of unexpected stringify errors
|
|
42
|
+
errorLog("safeJsonStringify failed:", e);
|
|
43
|
+
return `[Unserializable Object: ${e instanceof Error ? e.message : String(e)}]`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Row } from '../common/types.js';
|
|
2
|
+
import type { RuntimeContext } from '../runtime/types.js';
|
|
3
|
+
import type { RowDescriptor } from '../planner/nodes/plan-node.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A reusable async iterable for working table data that can be iterated multiple times.
|
|
7
|
+
* Similar to CachedIterable but for runtime-generated working table data.
|
|
8
|
+
* Used primarily in recursive CTE execution where the working table needs to be
|
|
9
|
+
* accessed multiple times during recursive iterations.
|
|
10
|
+
*/
|
|
11
|
+
export class WorkingTableIterable implements AsyncIterable<Row> {
|
|
12
|
+
constructor(
|
|
13
|
+
private rows: Row[],
|
|
14
|
+
private rctx: RuntimeContext,
|
|
15
|
+
private rowDescriptor: RowDescriptor
|
|
16
|
+
) {}
|
|
17
|
+
|
|
18
|
+
async *[Symbol.asyncIterator](): AsyncIterator<Row> {
|
|
19
|
+
for (const row of this.rows) {
|
|
20
|
+
// Set up context for this row using the CTE row descriptor
|
|
21
|
+
this.rctx.context.set(this.rowDescriptor, () => row);
|
|
22
|
+
try {
|
|
23
|
+
yield row;
|
|
24
|
+
} finally {
|
|
25
|
+
// Clean up context
|
|
26
|
+
this.rctx.context.delete(this.rowDescriptor);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modern, type-safe replacement for xBestIndex API
|
|
3
|
+
* Provides better type safety, clearer intent, and extensibility for future optimizations
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { quereusError } from '../common/errors.js';
|
|
7
|
+
import { StatusCode, type SqlDataType, type SqlValue } from '../common/types.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Constraint operators that can be pushed down to virtual tables
|
|
11
|
+
*/
|
|
12
|
+
export type ConstraintOp = '=' | '>' | '>=' | '<' | '<=' | 'MATCH' | 'LIKE' | 'GLOB' | 'IS NULL' | 'IS NOT NULL';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Column metadata provided to virtual tables for planning
|
|
16
|
+
*/
|
|
17
|
+
export interface ColumnMeta {
|
|
18
|
+
/** Column index in the table */
|
|
19
|
+
index: number;
|
|
20
|
+
/** Column name */
|
|
21
|
+
name: string;
|
|
22
|
+
/** SQL type information */
|
|
23
|
+
type: SqlDataType;
|
|
24
|
+
/** Whether this column is part of the primary key */
|
|
25
|
+
isPrimaryKey: boolean;
|
|
26
|
+
/** Whether this column has a unique constraint */
|
|
27
|
+
isUnique: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* A predicate constraint extracted from WHERE clause
|
|
32
|
+
*/
|
|
33
|
+
export interface PredicateConstraint {
|
|
34
|
+
/** Column index this constraint applies to */
|
|
35
|
+
columnIndex: number;
|
|
36
|
+
/** Constraint operator */
|
|
37
|
+
op: ConstraintOp;
|
|
38
|
+
/** Constant value if this is a column-constant comparison */
|
|
39
|
+
value?: SqlValue;
|
|
40
|
+
/** Whether this constraint can be used by the virtual table */
|
|
41
|
+
usable: boolean;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Ordering specification for ORDER BY clauses
|
|
46
|
+
*/
|
|
47
|
+
export interface OrderingSpec {
|
|
48
|
+
/** Column index to order by */
|
|
49
|
+
columnIndex: number;
|
|
50
|
+
/** True for descending order, false for ascending */
|
|
51
|
+
desc: boolean;
|
|
52
|
+
/** Whether NULL values should come first or last */
|
|
53
|
+
nullsFirst?: boolean;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Request object passed to getBestAccessPlan containing query planning information
|
|
58
|
+
*/
|
|
59
|
+
export interface BestAccessPlanRequest {
|
|
60
|
+
/** Column metadata for the table */
|
|
61
|
+
columns: readonly ColumnMeta[];
|
|
62
|
+
/** Extracted predicate constraints from WHERE clause */
|
|
63
|
+
filters: readonly PredicateConstraint[];
|
|
64
|
+
/** Required ordering that ancestor nodes need (ORDER BY) */
|
|
65
|
+
requiredOrdering?: readonly OrderingSpec[];
|
|
66
|
+
/** LIMIT value known at plan time */
|
|
67
|
+
limit?: number | null;
|
|
68
|
+
/** Estimated rows hint from planner (may be unknown) */
|
|
69
|
+
estimatedRows?: number;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Result object returned by getBestAccessPlan describing the chosen query plan
|
|
74
|
+
*/
|
|
75
|
+
export interface BestAccessPlanResult {
|
|
76
|
+
/** Which filters were handled by the virtual table (parallel to filters array) */
|
|
77
|
+
handledFilters: readonly boolean[];
|
|
78
|
+
/** Optional JavaScript filter function for residual predicates */
|
|
79
|
+
residualFilter?: (row: any) => boolean;
|
|
80
|
+
/** Estimated cost in arbitrary virtual CPU units */
|
|
81
|
+
cost: number;
|
|
82
|
+
/** Estimated number of rows this plan will return */
|
|
83
|
+
rows: number | undefined;
|
|
84
|
+
/** Ordering guaranteed by this access plan */
|
|
85
|
+
providesOrdering?: readonly OrderingSpec[];
|
|
86
|
+
/** Whether this plan guarantees unique rows (helps DISTINCT optimization) */
|
|
87
|
+
isSet?: boolean;
|
|
88
|
+
/** Free-text explanation for debugging */
|
|
89
|
+
explains?: string;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Builder class for constructing access plan results
|
|
94
|
+
*/
|
|
95
|
+
export class AccessPlanBuilder {
|
|
96
|
+
private result: Partial<BestAccessPlanResult> = {};
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Create a full table scan access plan
|
|
100
|
+
*/
|
|
101
|
+
static fullScan(estimatedRows: number): AccessPlanBuilder {
|
|
102
|
+
return new AccessPlanBuilder()
|
|
103
|
+
.setCost(estimatedRows * 1.0) // Sequential scan cost
|
|
104
|
+
.setRows(estimatedRows)
|
|
105
|
+
.setExplanation('Full table scan');
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Create an equality match access plan (index seek)
|
|
110
|
+
*/
|
|
111
|
+
static eqMatch(matchedRows: number, indexCost: number = 0.5): AccessPlanBuilder {
|
|
112
|
+
return new AccessPlanBuilder()
|
|
113
|
+
.setCost(indexCost + matchedRows * 0.3)
|
|
114
|
+
.setRows(matchedRows)
|
|
115
|
+
.setIsSet(matchedRows <= 1)
|
|
116
|
+
.setExplanation('Index equality seek');
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Create a range scan access plan
|
|
121
|
+
*/
|
|
122
|
+
static rangeScan(estimatedRows: number, indexCost: number = 0.3): AccessPlanBuilder {
|
|
123
|
+
return new AccessPlanBuilder()
|
|
124
|
+
.setCost(indexCost + estimatedRows * 0.5)
|
|
125
|
+
.setRows(estimatedRows)
|
|
126
|
+
.setExplanation('Index range scan');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Set the estimated cost of this access plan
|
|
131
|
+
*/
|
|
132
|
+
setCost(cost: number): this {
|
|
133
|
+
this.result.cost = cost;
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Set the estimated number of rows
|
|
139
|
+
*/
|
|
140
|
+
setRows(rows: number | undefined): this {
|
|
141
|
+
this.result.rows = rows;
|
|
142
|
+
return this;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Set which filters are handled by this plan
|
|
147
|
+
*/
|
|
148
|
+
setHandledFilters(handledFilters: readonly boolean[]): this {
|
|
149
|
+
this.result.handledFilters = handledFilters;
|
|
150
|
+
return this;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Set the ordering provided by this plan
|
|
155
|
+
*/
|
|
156
|
+
setOrdering(ordering: readonly OrderingSpec[]): this {
|
|
157
|
+
this.result.providesOrdering = ordering;
|
|
158
|
+
return this;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Set whether this plan produces unique rows
|
|
163
|
+
*/
|
|
164
|
+
setIsSet(isSet: boolean): this {
|
|
165
|
+
this.result.isSet = isSet;
|
|
166
|
+
return this;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Set an explanation for debugging
|
|
171
|
+
*/
|
|
172
|
+
setExplanation(explanation: string): this {
|
|
173
|
+
this.result.explains = explanation;
|
|
174
|
+
return this;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Set a residual filter function
|
|
179
|
+
*/
|
|
180
|
+
setResidualFilter(filter: (row: any) => boolean): this {
|
|
181
|
+
this.result.residualFilter = filter;
|
|
182
|
+
return this;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Build the final access plan result
|
|
187
|
+
*/
|
|
188
|
+
build(): BestAccessPlanResult {
|
|
189
|
+
// Ensure required fields are set
|
|
190
|
+
if (this.result.cost === undefined) {
|
|
191
|
+
quereusError('Access plan cost must be set', StatusCode.INTERNAL);
|
|
192
|
+
}
|
|
193
|
+
if (this.result.handledFilters === undefined) {
|
|
194
|
+
this.result.handledFilters = [];
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
return this.result as BestAccessPlanResult;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Validation function for access plan results
|
|
203
|
+
* Throws if the plan violates basic contracts
|
|
204
|
+
*/
|
|
205
|
+
export function validateAccessPlan(
|
|
206
|
+
request: BestAccessPlanRequest,
|
|
207
|
+
result: BestAccessPlanResult
|
|
208
|
+
): void {
|
|
209
|
+
// Validate handledFilters array length
|
|
210
|
+
if (result.handledFilters.length !== request.filters.length) {
|
|
211
|
+
quereusError(
|
|
212
|
+
`handledFilters length (${result.handledFilters.length}) must match filters length (${request.filters.length})`,
|
|
213
|
+
StatusCode.FORMAT
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Validate cost is non-negative
|
|
218
|
+
if (result.cost < 0) {
|
|
219
|
+
quereusError(`Access plan cost cannot be negative: ${result.cost}`, StatusCode.INTERNAL);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Validate rows is non-negative if specified
|
|
223
|
+
if (result.rows !== undefined && result.rows < 0) {
|
|
224
|
+
quereusError(`Access plan rows cannot be negative: ${result.rows}`, StatusCode.INTERNAL);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Validate ordering column indexes
|
|
228
|
+
if (result.providesOrdering) {
|
|
229
|
+
for (const order of result.providesOrdering) {
|
|
230
|
+
if (order.columnIndex < 0 || order.columnIndex >= request.columns.length) {
|
|
231
|
+
quereusError(
|
|
232
|
+
`Invalid ordering column index ${order.columnIndex}, must be 0-${request.columns.length - 1}`,
|
|
233
|
+
StatusCode.FORMAT
|
|
234
|
+
);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Helper to convert old IndexConstraint to new PredicateConstraint
|
|
242
|
+
* @deprecated Use direct PredicateConstraint construction instead
|
|
243
|
+
*/
|
|
244
|
+
export function convertIndexConstraint(
|
|
245
|
+
constraint: any, // Old IndexConstraint type
|
|
246
|
+
value?: SqlValue
|
|
247
|
+
): PredicateConstraint {
|
|
248
|
+
// Map old constraint operators to new ones
|
|
249
|
+
const opMap: Record<string, ConstraintOp> = {
|
|
250
|
+
'EQ': '=',
|
|
251
|
+
'GT': '>',
|
|
252
|
+
'GE': '>=',
|
|
253
|
+
'LT': '<',
|
|
254
|
+
'LE': '<=',
|
|
255
|
+
'MATCH': 'MATCH',
|
|
256
|
+
'LIKE': 'LIKE',
|
|
257
|
+
'GLOB': 'GLOB',
|
|
258
|
+
'ISNULL': 'IS NULL',
|
|
259
|
+
'ISNOTNULL': 'IS NOT NULL'
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
const op = opMap[constraint.op] || '=';
|
|
263
|
+
|
|
264
|
+
return {
|
|
265
|
+
columnIndex: constraint.iColumn,
|
|
266
|
+
op,
|
|
267
|
+
value,
|
|
268
|
+
usable: constraint.usable
|
|
269
|
+
};
|
|
270
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { MaybePromise } from "../common/types.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Generic interface for VirtualTable connections that support transactions.
|
|
5
|
+
* This allows different vtab modules to implement their own connection strategies
|
|
6
|
+
* while providing a consistent interface for transaction operations.
|
|
7
|
+
*/
|
|
8
|
+
export interface VirtualTableConnection {
|
|
9
|
+
/** Unique identifier for this connection */
|
|
10
|
+
readonly connectionId: string;
|
|
11
|
+
|
|
12
|
+
/** Name of the table this connection is associated with */
|
|
13
|
+
readonly tableName: string;
|
|
14
|
+
|
|
15
|
+
// Transaction methods
|
|
16
|
+
/** Begins a transaction on this connection */
|
|
17
|
+
begin(): MaybePromise<void>;
|
|
18
|
+
|
|
19
|
+
/** Commits the current transaction */
|
|
20
|
+
commit(): MaybePromise<void>;
|
|
21
|
+
|
|
22
|
+
/** Rolls back the current transaction */
|
|
23
|
+
rollback(): MaybePromise<void>;
|
|
24
|
+
|
|
25
|
+
/** Creates a savepoint with the given index */
|
|
26
|
+
createSavepoint(index: number): MaybePromise<void>;
|
|
27
|
+
|
|
28
|
+
/** Releases a savepoint with the given index */
|
|
29
|
+
releaseSavepoint(index: number): MaybePromise<void>;
|
|
30
|
+
|
|
31
|
+
/** Rolls back to a savepoint with the given index */
|
|
32
|
+
rollbackToSavepoint(index: number): MaybePromise<void>;
|
|
33
|
+
|
|
34
|
+
/** Disconnects and cleans up this connection */
|
|
35
|
+
disconnect(): MaybePromise<void>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { SqlValue } from '../common/types.js';
|
|
2
|
+
import type { IndexConstraint, IndexInfo } from './index-info.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Structure to pass all necessary filter and planning information
|
|
6
|
+
* to a virtual table's xOpen method when cursors are not used.
|
|
7
|
+
*/
|
|
8
|
+
export interface FilterInfo {
|
|
9
|
+
/** The index number chosen by xBestIndex (output of xBestIndex) */
|
|
10
|
+
idxNum: number;
|
|
11
|
+
/** The index string chosen by xBestIndex (output of xBestIndex) */
|
|
12
|
+
idxStr: string | null;
|
|
13
|
+
/** Array of WHERE clause constraints (input to xBestIndex/xOpen) */
|
|
14
|
+
constraints: ReadonlyArray<{ constraint: IndexConstraint, argvIndex: number }>;
|
|
15
|
+
/** Values for ?. argvIndex in constraints (input to xOpen) */
|
|
16
|
+
args: ReadonlyArray<SqlValue>;
|
|
17
|
+
/**
|
|
18
|
+
* The IndexInfo object AFTER xBestIndex has populated its output fields
|
|
19
|
+
* (aConstraintUsage, orderByConsumed, estimatedCost, estimatedRows, idxFlags).
|
|
20
|
+
* This is needed by xOpen to understand how constraints were used by the planner.
|
|
21
|
+
*/
|
|
22
|
+
indexInfoOutput: IndexInfo;
|
|
23
|
+
}
|