1use std::collections::{BTreeMap, BTreeSet};
10
11use uqa_core::Value;
12use uqa_sql::ast::BinaryOp;
13use uqa_sql::{ScalarExpr, ScalarFrameBound};
14
15use crate::unified_plan::{
16 AccessPathPlan, AggregateClassifier, AssignmentPlan, CommandPlan, ComputePlan,
17 ConflictActionPlan, ExpressionPlan, JoinExecutionStrategy, MergeWhenPlan, ProjectionPlan,
18 QueryBlockPlan, QueryPlan, RelationalPlan, SourcePlan, UnifiedPlan,
19};
20use crate::{
21 JoinAlgorithm, JoinGraphError, JoinGraphResult, JoinOrderOptimizer, JoinOrderTree,
22 JoinPredicate, JoinRelation, RelationStats,
23};
24
25mod access_path;
26mod api;
27mod command;
28mod implicit_fusion;
29mod join_reorder;
30mod scalar;
31mod source_constants;
32mod subqueries;
33mod traversal;
34
35pub use access_path::contains_retrieval;
36pub use api::{
37 optimize, optimize_with_aggregates, optimize_with_aggregates_and_statistics,
38 optimize_with_statistics, ConstantEvaluator, OptimizerConfig, OptimizerError, OptimizerResult,
39 SourceStatistics,
40};
41pub use implicit_fusion::query_contains_implicit_hybrid_fusion;
42
43use access_path::{choose_access_path, prioritize_access_predicates};
44use command::optimize_command;
45use implicit_fusion::{rewrite_implicit_hybrid_fusion, source_allows_unqualified_signals};
46use join_reorder::reorder_unified_plan_joins;
47use scalar::{optimize_assignments, optimize_projections, optimize_scalar_slot};
48use traversal::{optimize_query, optimize_source, optimize_unified_plan};
49
50#[cfg(test)]
51mod tests;