# Module mz_expr::relation::canonicalize

source ยท ## Expand description

Utility functions to transform parts of a single `MirRelationExpr`

into canonical form.

## Functionsยง

- Canonicalize only the equivalence classes of a join.
- Canonicalize equivalence classes of a join and expressions contained in them.
- Canonicalize predicates of a filter.
- compare_
predicates ๐Comparison method for sorting predicates by their complexity, measured by the total number of non-literal expression nodes within the expression. - flat_
map_ ๐modify Applies a flat_map on a Vec, and overwrites the vec with the result. - For each equivalence class, it finds the simplest expression, which will be the canonical one. Returns a Map that maps from each expression in each equivalence class to the canonical expression in the same equivalence class.
- is_
not_ ๐null Returns the inner operand if the given predicate is an IS NOT NULL expression. - Whether the given predicate evaluates to NULL when the given operand expression is NULL.
- rank_
complexity ๐Gives a relative complexity ranking for an expression. Higher numbers mean greater complexity. - Replace any matching subexpressions in
`predicate`

, and if`predicate`

has changed, reduce it. Return whether`predicate`

has changed.