Expand description
Query optimizer: cost estimation, cardinality, join enumeration.
The planner is organized into these modules:
cost_model– per-operator cost model. Estimates a unitless cost for scans, filters, projections, sorts, hash aggregates, window operators, and join algorithms. Used by the join enumerator to pick a winning plan.cardinality– per-relationRelationStats+CardinalityEstimatorthat turn predicate selectivities into row-count estimates. Equality, range, andLIKEselectivities are all on the same scale (0..=1).join_graph–JoinEdge/JoinGraph– the dataflow graph the enumerator walks.join_enumerator– DPccp (Moerkotte/Neumann 2006). Bitmasku64for relation subsets,HashMapfor the DP cache.optimizer– algebraic rewrites: filter pushdown, vector threshold merging, facet additivity, Boolean simplification.parallel– rayon-backed parallel-aware split + recombine.executor– the planner-to-physical-operator bridge.
Re-exports§
pub use cardinality::column_entropy;pub use cardinality::entropy_cardinality_lower_bound;pub use cardinality::mutual_information_estimate;pub use cardinality::AccessParadigm;pub use cardinality::CardinalityEstimator;pub use cardinality::ColumnStats;pub use cardinality::EdgeSample;pub use cardinality::GraphStats;pub use cardinality::GraphStoreSampler;pub use cardinality::LocalAccessEstimate;pub use cardinality::RelationStats;pub use cardinality::Selectivity;pub use cardinality::GRAPH_AVG_DEGREE_DEFAULT;pub use cardinality::JACCARD_JOIN_SELECTIVITY;pub use cost_model::CostEstimator;pub use cost_model::OperatorCost;pub use cost_model::OperatorKind;pub use executor::ExecutionStats;pub use executor::OperatorOutput;pub use executor::OperatorTreeDriver;pub use executor::PlanExecutor;pub use join_enumerator::enumerate_dpccp;pub use join_enumerator::enumerate_dpccp_with_cost_estimator;pub use join_enumerator::JoinPlan;pub use join_graph::JoinEdge;pub use join_graph::JoinGraph;pub use join_graph::JoinGraphError;pub use join_graph::JoinGraphResult;pub use join_order::JoinAlgorithm;pub use join_order::JoinCondition;pub use join_order::JoinOrderOptimizer;pub use join_order::JoinOrderResult;pub use join_order::JoinOrderTree;pub use join_order::JoinPredicate;pub use join_order::JoinRelation;pub use optimizer::optimize;pub use optimizer::optimize_with_aggregates;pub use optimizer::optimize_with_aggregates_and_statistics;pub use optimizer::optimize_with_statistics;pub use optimizer::OptimizerConfig;pub use optimizer::SourceStatistics;pub use parallel::run_parallel;pub use parallel::ParallelExecutor;pub use parallel::DEFAULT_PARALLEL_WORKERS;pub use parallel::MIN_PARALLEL_BRANCHES;pub use query_optimizer::IndexScanCandidate;pub use query_optimizer::OptimizerConfig as TreeOptimizerConfig;pub use query_optimizer::QueryOptimizer;pub use text_top_k::plan_text_top_k;pub use text_top_k::TextTopKCapabilities;pub use unified_plan::rewrite_scalar_expression;pub use unified_plan::AccessPathPlan;pub use unified_plan::AggregateClassifier;pub use unified_plan::AssignmentPlan;pub use unified_plan::CommandPlan;pub use unified_plan::ComputePlan;pub use unified_plan::ConflictActionPlan;pub use unified_plan::ConflictPlan;pub use unified_plan::CteCyclePlan;pub use unified_plan::CtePlan;pub use unified_plan::CteSearchPlan;pub use unified_plan::DeletePlan;pub use unified_plan::ExpressionPlan;pub use unified_plan::InsertPlan;pub use unified_plan::JoinExecutionStrategy;pub use unified_plan::MergePlan;pub use unified_plan::MergeWhenPlan;pub use unified_plan::OrderPlan;pub use unified_plan::ProjectionPlan;pub use unified_plan::QueryBlockPlan;pub use unified_plan::QueryPlan;pub use unified_plan::RelationalPlan;pub use unified_plan::SourcePlan;pub use unified_plan::TableFunctionPlan;pub use unified_plan::UnifiedPlan;pub use unified_plan::UpdatePlan;
Modules§
- cardinality
- Cardinality estimation for SQL predicates and cross-paradigm operator trees.
- cost_
model - Per-operator cost model.
- executor
- Planner-to-physical bridge + plan executor.
- join_
enumerator - DPccp join enumeration following Moerkotte and Neumann (2006).
- join_
graph - Join graph: nodes are individual relations (a single table or a materialised CTE / subquery output), edges are equijoin predicates. The DPccp enumerator walks this graph to pick a join order.
- join_
order - Join-order optimization.
- optimizer
- Plan-native algebraic and cross-paradigm rewrites.
- parallel
- Rayon-backed parallel split + recombine, plus a branch-level
ParallelExecutorfor independent plan fragments. - query_
optimizer - Rule-based and cost-aware operator-tree optimizer.
- text_
top_ k - Physical planning for score-ordered text limits.
- unified_
plan - Complete SQL-to-execution-plan lowering.
Structs§
Enums§
Type Aliases§
- Subquery
Id - Index into the query children owned by the enclosing expression plan.