Function mz_transform::movement::projection_pushdown::reverse_permute
source · fn reverse_permute<'a, I, J>(exprs: I, permutation: J)
Expand description
Applies the reverse of [MirScalarExpr.permute] on each expression.
permutation
can be thought of as a mapping of column references from
stateA
to stateB
. [MirScalarExpr.permute] assumes that the column
references of the expression are in stateA
and need to be remapped to
their stateB
counterparts. This methods assumes that the column
references are in stateB
and need to be remapped to stateA
.
The outputs
field of MirRelationExpr::Project is a mapping from “after”
to “before”. Thus, when lifting projections, you would permute on outputs
,
but you need to reverse permute when pushing projections down.