[][src]Crate transform

Transformations for relation expressions.

This crate contains traits, types, and methods suitable for transforming RelationExpr 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 Map operators.

fusion

Transformations that fuse together others of their kind.

inline_let

Install replace certain Get operators with their Let value.

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 Map into a Project.

projection_lifting

Hoist projections through operators.

reduce_elision

Removes Reduce when the input has as unique keys the keys of the reduce.

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 Get to ensure uniqueness of identifiers.

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.