# 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. |