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 derived_projection;
29mod implicit_fusion;
30mod join_reorder;
31mod scalar;
32mod source_constants;
33mod subqueries;
34mod traversal;
35
36pub use access_path::contains_retrieval;
37pub use api::{
38 optimize, optimize_scalar_expression, optimize_with_aggregates,
39 optimize_with_aggregates_and_statistics, optimize_with_statistics, ConstantEvaluator,
40 OptimizerConfig, OptimizerError, OptimizerResult, SourceStatistics,
41};
42pub use implicit_fusion::query_contains_implicit_hybrid_fusion;
43
44use access_path::{choose_access_path, prioritize_access_predicates};
45use command::optimize_command;
46use implicit_fusion::{rewrite_implicit_hybrid_fusion, source_allows_unqualified_signals};
47use join_reorder::reorder_unified_plan_joins;
48pub(crate) use scalar::constants::retain_computed_integer;
49use scalar::{optimize_assignments, optimize_projections, optimize_scalar_slot};
50use traversal::{optimize_query, optimize_source, optimize_unified_plan};
51
52#[cfg(test)]
53mod tests;