Struct mz_compute_client::plan::interpret::SingleTimeMonotonic
source · pub struct SingleTimeMonotonic<'a, T = Timestamp> {
monotonic_ids: &'a BTreeSet<GlobalId>,
_phantom: PhantomData<T>,
}
Expand description
Provides a concrete implementation of an interpreter that determines if
the output of Plan
expressions is physically monotonic in a single-time
dataflow, potentially taking into account judgments about its inputs. We
note that in a single-time dataflow, expressions in non-recursive contexts
(i.e., outside of LetRec
values) process streams that are at a minimum
logically monotonic, i.e., may contain retractions but would cease to do
so if consolidated. Detecting physical monotonicity, i.e., the absence
of retractions in a stream, enables us to disable forced consolidation
whenever possible.
Fields§
§monotonic_ids: &'a BTreeSet<GlobalId>
§_phantom: PhantomData<T>
Implementations§
Trait Implementations§
source§impl<'a, T: Debug> Debug for SingleTimeMonotonic<'a, T>
impl<'a, T: Debug> Debug for SingleTimeMonotonic<'a, T>
source§impl<T> Interpreter<T> for SingleTimeMonotonic<'_, T>
impl<T> Interpreter<T> for SingleTimeMonotonic<'_, T>
type Domain = PhysicallyMonotonic
fn constant( &self, _ctx: &Context<Self::Domain>, rows: &Result<Vec<(Row, T, Diff)>, EvalError> ) -> Self::Domain
fn get( &self, ctx: &Context<Self::Domain>, id: &Id, _keys: &AvailableCollections, _plan: &GetPlan ) -> Self::Domain
fn mfp( &self, _ctx: &Context<Self::Domain>, input: Self::Domain, _mfp: &MapFilterProject, _input_key_val: &Option<(Vec<MirScalarExpr>, Option<Row>)> ) -> Self::Domain
fn flat_map( &self, _ctx: &Context<Self::Domain>, input: Self::Domain, _func: &TableFunc, _exprs: &Vec<MirScalarExpr>, _mfp: &MapFilterProject, _input_key: &Option<Vec<MirScalarExpr>> ) -> Self::Domain
fn join( &self, _ctx: &Context<Self::Domain>, inputs: Vec<Self::Domain>, _plan: &JoinPlan ) -> Self::Domain
fn reduce( &self, ctx: &Context<Self::Domain>, _input: Self::Domain, _key_val_plan: &KeyValPlan, _plan: &ReducePlan, _input_key: &Option<Vec<MirScalarExpr>> ) -> Self::Domain
fn top_k( &self, ctx: &Context<Self::Domain>, _input: Self::Domain, _top_k_plan: &TopKPlan ) -> Self::Domain
fn negate( &self, _ctx: &Context<Self::Domain>, _input: Self::Domain ) -> Self::Domain
fn threshold( &self, ctx: &Context<Self::Domain>, _input: Self::Domain, _threshold_plan: &ThresholdPlan ) -> Self::Domain
fn union( &self, _ctx: &Context<Self::Domain>, inputs: Vec<Self::Domain>, _consolidate_output: bool ) -> Self::Domain
fn arrange_by( &self, _ctx: &Context<Self::Domain>, input: Self::Domain, _forms: &AvailableCollections, _input_key: &Option<Vec<MirScalarExpr>>, _input_mfp: &MapFilterProject ) -> Self::Domain
Auto Trait Implementations§
impl<'a, T> RefUnwindSafe for SingleTimeMonotonic<'a, T>where T: RefUnwindSafe,
impl<'a, T> Send for SingleTimeMonotonic<'a, T>where T: Send,
impl<'a, T> Sync for SingleTimeMonotonic<'a, T>where T: Sync,
impl<'a, T> Unpin for SingleTimeMonotonic<'a, T>where T: Unpin,
impl<'a, T> UnwindSafe for SingleTimeMonotonic<'a, T>where T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
See
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
See
RustType::into_proto
.