polyglot_sql/optimizer/mod.rs
1//! SQL Optimizer Module
2//!
3//! This module contains optimization passes for SQL AST transformation,
4//! including type annotation, column qualification, and other semantic analysis.
5
6/// Type annotation and coercion for SQL expressions
7pub mod annotate_types;
8/// Canonicalization of SQL expressions into standard form
9pub mod canonicalize;
10/// Elimination of unused Common Table Expressions
11pub mod eliminate_ctes;
12/// Elimination of unused JOIN operations
13pub mod eliminate_joins;
14/// Isolation of table references into subqueries
15pub mod isolate_table_selects;
16/// Boolean expression normalization (CNF/DNF)
17pub mod normalize;
18/// Identifier case and quoting normalization
19pub mod normalize_identifiers;
20/// JOIN reordering and cross-join optimization
21pub mod optimize_joins;
22/// Main optimizer entry point and rule orchestration
23pub mod optimizer;
24/// Predicate pushdown into subqueries and JOINs
25pub mod pushdown_predicates;
26/// Projection pushdown to eliminate unused columns
27pub mod pushdown_projections;
28/// Column qualification and star expansion
29pub mod qualify_columns;
30/// Subquery merging and unnesting
31pub mod subquery;
32/// Table reference qualification with catalog and schema
33pub mod qualify_tables;
34/// Boolean and algebraic expression simplification
35pub mod simplify;
36
37/// Type annotation, type coercion classes, and the type annotator engine
38pub use annotate_types::{annotate_types, TypeAnnotator, TypeCoercionClass};
39/// Canonicalization of SQL expressions
40pub use canonicalize::canonicalize;
41/// Boolean normalization, distance computation, and related utilities
42pub use normalize::{normalize, normalized, normalization_distance, NormalizeError, DEFAULT_MAX_DISTANCE};
43/// Identifier normalization, case sensitivity detection, and strategy types
44pub use normalize_identifiers::{
45 normalize_identifiers, normalize_identifier, get_normalization_strategy,
46 is_case_sensitive, NormalizationStrategy
47};
48/// JOIN optimization, reordering, normalization, and reorderability checks
49pub use optimize_joins::{optimize_joins, reorder_joins, normalize_joins, is_reorderable};
50/// Predicate pushdown and alias replacement
51pub use pushdown_predicates::{pushdown_predicates, replace_aliases};
52/// Projection pushdown and default column selection
53pub use pushdown_projections::{pushdown_projections, default_selection};
54/// Column qualification, validation, output handling, and identifier quoting
55pub use qualify_columns::{
56 qualify_columns, validate_qualify_columns, qualify_outputs, quote_identifiers,
57 QualifyColumnsOptions, QualifyColumnsError
58};
59/// Table qualification with catalog and schema defaults
60pub use qualify_tables::{qualify_tables, QualifyTablesOptions};
61/// Expression simplification, constant evaluation, and truthiness checks
62pub use simplify::{simplify, always_true, always_false, is_false, is_null, is_zero, Simplifier};
63/// Subquery merging, unnesting, and correlation analysis
64pub use subquery::{merge_subqueries, unnest_subqueries, is_mergeable, is_correlated};
65/// CTE elimination and reference checking
66pub use eliminate_ctes::{eliminate_ctes, is_cte_referenced};
67/// JOIN elimination for unused joins
68pub use eliminate_joins::eliminate_joins;
69/// Table select isolation into subqueries
70pub use isolate_table_selects::isolate_table_selects;
71/// Full optimizer pipeline, rule configuration, and quick optimization
72pub use optimizer::{optimize, optimize_with_rules, quick_optimize, OptimizerConfig, OptimizationRule, DEFAULT_RULES};