Struct mz_transform::redundant_join::ProvInfo
source · [−]pub struct ProvInfo {
id: Id,
dereferenced_projection: Vec<Option<MirScalarExpr>>,
exact: bool,
}
Expand description
A relationship between a collections columns and some source columns.
An instance of this type indicates that some of the bearer’s columns
derive from id
. In particular, the non-None
elements in
dereferenced_projection
correspond to columns that can be derived
from id
’s projection.
The guarantee is that projected on to these columns, the distinct values
of the bearer are contained in the set of distinct values of projected
columns of id
. In the case that exact
is set, the two sets are equal.
Fields
id: Id
The Id (local or global) of the source.
dereferenced_projection: Vec<Option<MirScalarExpr>>
The projection of the bearer written in terms of the columns projected
by the underlying Get operator. Set to None
for columns that cannot
be expressed as scalar expression referencing only columns of the
underlying Get operator.
exact: bool
If true, all distinct projected source rows are present in the rows of the projection of the current collection. This constraint is lost as soon as a transformation may drop records.
Implementations
sourceimpl ProvInfo
impl ProvInfo
fn make_leaf(id: Id, arity: usize) -> Self
sourcefn dereference(&self, expr: &MirScalarExpr) -> Option<MirScalarExpr>
fn dereference(&self, expr: &MirScalarExpr) -> Option<MirScalarExpr>
Rewrite expr
so it refers to the columns of the original source instead
of the columns of the projected source.
sourcefn strict_dereference(&self, expr: &MirScalarExpr) -> Option<MirScalarExpr>
fn strict_dereference(&self, expr: &MirScalarExpr) -> Option<MirScalarExpr>
Like dereference
but only returns expressions that actually depend on
the original source.
sourcefn meet(&self, other: &Self) -> Option<Self>
fn meet(&self, other: &Self) -> Option<Self>
Merge two constraints to find a constraint that satisfies both inputs.
This method returns nothing if no columns are in common (either because
difference sources are identified, or just no columns in common) and it
intersects bindings and the exact
bit.
Trait Implementations
sourceimpl Ord for ProvInfo
impl Ord for ProvInfo
sourceimpl PartialOrd<ProvInfo> for ProvInfo
impl PartialOrd<ProvInfo> for ProvInfo
sourcefn partial_cmp(&self, other: &ProvInfo) -> Option<Ordering>
fn partial_cmp(&self, other: &ProvInfo) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
impl Eq for ProvInfo
impl StructuralEq for ProvInfo
impl StructuralPartialEq for ProvInfo
Auto Trait Implementations
impl RefUnwindSafe for ProvInfo
impl Send for ProvInfo
impl Sync for ProvInfo
impl Unpin for ProvInfo
impl UnwindSafe for ProvInfo
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.
sourceimpl<T> FutureExt for T
impl<T> FutureExt for T
sourcefn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
sourcefn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
sourcefn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message T
in a tonic::Request
sourceimpl<T> Pointable for T
impl<T> Pointable for T
sourceimpl<T> ProgressEventTimestamp for T where
T: Data + Debug + Any,
impl<T> ProgressEventTimestamp for T where
T: Data + Debug + Any,
sourceimpl<P, R> ProtoType<R> for P where
R: RustType<P>,
impl<P, R> ProtoType<R> for P where
R: RustType<P>,
sourcefn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
See RustType::from_proto
.
sourcefn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
See RustType::into_proto
.
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more