Crate transform[−][src]
Transformations for relation expressions.
This crate contains traits, types, and methods suitable for transforming
MirRelationExpr
types in ways that preserve semantics and improve performance.
The core trait is Transform
, and many implementors of this trait can be
boxed and iterated over. Some common transformation patterns are wrapped
as Transform
implementors themselves.
The crate also contains the beginnings of whole-dataflow optimization, which uses the same analyses but spanning multiple dataflow elements.
Re-exports
pub use dataflow::optimize_dataflow; |
Modules
column_knowledge | Transformations based on pulling information about individual columns from sources. |
cse | Common subexpression elimination. |
dataflow | Whole-dataflow optimization |
demand | Transformation based on pushing demand information about columns toward sources. |
empty_map | Remove empty |
fusion | Transformations that fuse together others of their kind. |
inline_let | Install replace certain |
join_elision | Removes unit collections from joins, and joins with fewer than two inputs. |
join_implementation | Determines the join implementation for join operators. |
map_lifting | Hoist literal values from maps wherever possible. |
nonnull_requirements | Push non-null requirements toward sources. |
nonnullable | Harvests information about non-nullability of columns from sources. |
predicate_pushdown | Pushes predicates down through other operators. |
projection_extraction | Transform column references in a |
projection_lifting | Hoist projections through operators. |
reduce_elision | Removes |
reduction | Replace operators on constants collections with constant collections. |
reduction_pushdown | Preliminary work on reduction push-down. |
redundant_join | Remove redundant collections of distinct elements from joins. |
split_predicates | Transforms predicates of the form "A and B" into two: "A" and "B". |
topk_elision | Remove TopK operators with both an offset of zero and no limit. |
update_let | Re-assign type information and identifiers to each |
Structs
Fixpoint | A sequence of transformations iterated some number of times. |
Optimizer | A naive optimizer for relation expressions. |
TransformArgs | Arguments that get threaded through all transforms. |
Enums
TransformError | Errors that can occur during a transformation. |
Traits
Transform | Types capable of transforming relation expressions. |