fn complete(self) -> JoinClosure {
        let Self {
            column_map,
            mut equivalences,
            mut mfp,
        } = self;

        for equivalence in equivalences.iter_mut() {
            for expr in equivalence.iter_mut() {
                expr.permute_map(&column_map);
            }
        }
        let column_map_len = column_map.len();
        mfp.permute(column_map, column_map_len);
        mfp.optimize();

        JoinClosure {
            ready_equivalences: equivalences,
            before: mfp.into_plan().unwrap().into_nontemporal().unwrap(),
        }
    }
/// Extract a final `MapFilterProject` once all columns are available.
///
/// If not all columns are available this method will likely panic.
/// This method differs from `extract_closure` in that it forcibly
/// completes the join, extracting projections and expressions that
/// may not be extracted with `extract_closure` (for example, literals,
/// permutations, and repetition of output columns).
///
/// The resulting closure may be the identity operator, which can be
/// checked with the `is_identity()` method.
Extract a final `MapFilterProject` once all columns are available.
If not all columns are available this method will likely panic.
This method differs from `extract_closure` in that it forcibly
completes the join, extracting projections and expressions that
may not be extracted with `extract_closure` (for example, literals,
permutations, and repetition of output columns).

The resulting closure may be the identity operator, which can be
checked with the `is_identity()` method.
Extract a final ` MapFilterProject ` once all columns are available . If not all columns are available this method will likely panic . This method differs from ` extract_closure ` in that it forcibly completes the join extracting projections and expressions that may not be extracted with ` extract_closure ` ( for example literals permutations and repetition of output columns ) . The resulting closure may be the identity operator which can be checked with the ` is_identity () ` method .
fn complete(self) -> JoinClosure {
        let Self {
            column_map,
            mut equivalences,
            mut mfp,
        } = self;
        for equivalence in equivalences.iter_mut() {
            for expr in equivalence.iter_mut() {
                expr.permute_map(&column_map);
            }
        }
        let column_map_len = column_map.len();
        mfp.permute(column_map, column_map_len);
        mfp.optimize();
        JoinClosure {
            ready_equivalences: equivalences,
            before: mfp.into_plan().unwrap().into_nontemporal().unwrap(),
        }
    }
fn complete ( self ) -> JoinClosure { let Self { column_map , mut equivalences , mut mfp , } = self ; for equivalence in equivalences . iter_mut ( ) { for expr in equivalence . iter_mut ( ) { expr . permute_map ( & column_map ) ; } } let column_map_len = column_map . len ( ) ; mfp . permute ( column_map , column_map_len ) ; mfp . optimize ( ) ; JoinClosure { ready_equivalences : equivalences , before : mfp . into_plan ( ) . unwrap ( ) . into_nontemporal ( ) . unwrap ( ) , } }
Extract a final `MapFilterProject` once all columns are available.
Extract a final ` MapFilterProject ` once all columns are available .
self
self