Struct expr::MfpPlan[][src]

pub struct MfpPlan {
    mfp: SafeMfpPlan,
    lower_bounds: Vec<MirScalarExpr>,
    upper_bounds: Vec<MirScalarExpr>,
}
Expand description

Predicates partitioned into temporal and non-temporal.

Temporal predicates require some recognition to determine their structure, and it is best to do that once and re-use the results.

There are restrictions on the temporal predicates we currently support. They must directly constrain MzLogicalTimestamp from below or above, by expressions that do not themselves contain MzLogicalTimestamp. Conjunctions of such constraints are also ok.

Fields

mfp: SafeMfpPlan

Normal predicates to evaluate on &[Datum] and expect Ok(Datum::True).

lower_bounds: Vec<MirScalarExpr>

Expressions that when evaluated lower-bound MzLogicalTimestamp.

upper_bounds: Vec<MirScalarExpr>

Expressions that when evaluated upper-bound MzLogicalTimestamp.

Implementations

Partitions predicates into non-temporal, and lower and upper temporal bounds.

The first returned list is of predicates that do not contain mz_logical_timestamp. The second and third returned lists contain expressions that, once evaluated, lower and upper bound the validity interval of a record, respectively. These second two lists are populared only by binary expressions of the form

mz_logical_timestamp cmp_op expr

where cmp_op is a comparison operator and expr does not contain mz_logical_timestamp.

If any unsupported expression is found, for example one that uses mz_logical_timestamp in an unsupported position, an error is returned.

Indicates if the planned MapFilterProject emits exactly its inputs as outputs.

Attempt to convert self into a non-temporal MapFilterProject plan.

If that is not possible, the original instance is returned as an error.

Evaluate the predicates, temporal and non-, and return times and differences for data.

If self contains only non-temporal predicates, the result will either be (time, diff), or an evaluation error. If self contains temporal predicates, the results can be times that are greater than the input time, and may contain negated diff` values.

The row_builder is not cleared first, but emptied if the function returns an iterator with any Ok(_) element.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Performs the conversion.

Should always be Self

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more