fn implement_arrangements<'a>(
    inputs: &mut [MirRelationExpr],
    available_arrangements: &[Vec<Vec<MirScalarExpr>>],
    needed_arrangements: impl Iterator<Item = &'a (usize, Vec<MirScalarExpr>, Option<JoinInputCharacteristics>)>
) -> (MapFilterProject, Vec<Option<Vec<usize>>>)
Expand description

Modify inputs to ensure specified arrangements are available.

Lift filter predicates when all needed arrangements are otherwise available.

Returns

  • The lifted mfps combined into one mfp.
  • Permutations for each input, which were lifted as part of the mfp lifting. These should be applied to the join order.