Skip to main content

Crate uqa_planner

Crate uqa_planner 

Source
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-relation RelationStats + CardinalityEstimator that turn predicate selectivities into row-count estimates. Equality, range, and LIKE selectivities are all on the same scale (0..=1).
  • join_graphJoinEdge / JoinGraph – the dataflow graph the enumerator walks.
  • join_enumerator – DPccp (Moerkotte/Neumann 2006). Bitmask u64 for relation subsets, HashMap for 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 ParallelExecutor for 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§

ScalarOrder
ScalarWindowFrame
ScalarWindowSpec

Enums§

ScalarExpr
ScalarFrameBound

Type Aliases§

SubqueryId
Index into the query children owned by the enclosing expression plan.