pub fn optimize_dataflow_monotonic(dataflow: &mut DataflowDesc) -> Result<(), TransformError> {
    let mut monotonic = std::collections::HashSet::new();
    for (source_id, (source_desc, _)) in dataflow.source_imports.iter_mut() {
        if let SourceConnector::External {
            envelope: SourceEnvelope::None(_),
            ..
        } = source_desc.connector
        {
            monotonic.insert(source_id.clone());
        }
    }

    let monotonic_flag = MonotonicFlag::default();

    // Propagate predicate information from outputs to inputs.
    for build_desc in dataflow.objects_to_build.iter_mut() {
        monotonic_flag.apply(
            build_desc.view.as_inner_mut(),
            &monotonic,
            &mut HashSet::new(),
        )?;
    }

    Ok(())
}
/// Propagates information about monotonic inputs through views.
Propagates information about monotonic inputs through views.
Propagates information about monotonic inputs through views .
pub fn optimize_dataflow_monotonic(dataflow: &mut DataflowDesc) -> Result<(), TransformError> {
    let mut monotonic = std::collections::HashSet::new();
    for (source_id, (source_desc, _)) in dataflow.source_imports.iter_mut() {
        if let SourceConnector::External {
            envelope: SourceEnvelope::None(_),
            ..
        } = source_desc.connector
        {
            monotonic.insert(source_id.clone());
        }
    }
    let monotonic_flag = MonotonicFlag::default();
    // Propagate predicate information from outputs to inputs.
    for build_desc in dataflow.objects_to_build.iter_mut() {
        monotonic_flag.apply(
            build_desc.view.as_inner_mut(),
            &monotonic,
            &mut HashSet::new(),
        )?;
    }
    Ok(())
}
pub fn optimize_dataflow_monotonic ( dataflow : & mut DataflowDesc ) -> Result < ( ) , TransformError > { let mut monotonic = std :: collections :: HashSet :: new ( ) ; for ( source_id , ( source_desc , _ ) ) in dataflow . source_imports . iter_mut ( ) { if let SourceConnector :: External { envelope : SourceEnvelope :: None ( _ ) , .. } = source_desc . connector { monotonic . insert ( source_id . clone ( ) ) ; } } let monotonic_flag = MonotonicFlag :: default ( ) ; // Propagate predicate information from outputs to inputs. for build_desc in dataflow . objects_to_build . iter_mut ( ) { monotonic_flag . apply ( build_desc . view . as_inner_mut ( ) , & monotonic , & mut HashSet :: new ( ) , ) ? ; } Ok ( ( ) ) }
Propagates information about monotonic inputs through views.
Propagates information about monotonic inputs through views .
dataflow
&mut DataflowDesc
dataflow
&mut DataflowDesc