Struct mz_transform::inline_let::InlineLet
source · [−]pub struct InlineLet {
pub inline_mfp: bool,
/* private fields */
}
Expand description
Install replace certain Get
operators with their Let
value.
Fields
inline_mfp: bool
If true
, inline MFPs around a Get.
We want this value to be true for the InlineLet call that comes right before crate::join_implementation::JoinImplementation runs because crate::join_implementation::JoinImplementation cannot lift MFPs through a Let.
Generally, though, we prefer to be more conservative in our inlining in order to be able to better detect CSEs.
Implementations
sourceimpl InlineLet
impl InlineLet
sourcepub fn transform_without_trace(
&self,
relation: &mut MirRelationExpr
) -> Result<(), TransformError>
pub fn transform_without_trace(
&self,
relation: &mut MirRelationExpr
) -> Result<(), TransformError>
Performs the InlineLet
transformation without tracing the result.
sourcepub fn action(
&self,
relation: &mut MirRelationExpr,
lets: &mut Vec<(LocalId, MirRelationExpr)>
) -> Result<(), TransformError>
pub fn action(
&self,
relation: &mut MirRelationExpr,
lets: &mut Vec<(LocalId, MirRelationExpr)>
) -> Result<(), TransformError>
Install replace certain Get
operators with their Let
value.
IMPORTANT: This transform is used for cleaning up after RelationCSE
, which
adds Let
operators pretty aggressively, leading to very deep dataflows. Nothing
in this transform should lead to expensive recursive traversal of the subgraph,
such as the one in MirRelationExpr::typ
, since that may result in a stack
overflow.
Trait Implementations
sourceimpl CheckedRecursion for InlineLet
impl CheckedRecursion for InlineLet
sourcefn recursion_guard(&self) -> &RecursionGuard
fn recursion_guard(&self) -> &RecursionGuard
sourcefn checked_recur<F, T, E>(&self, f: F) -> Result<T, E>where
F: FnOnce(&Self) -> Result<T, E>,
E: From<RecursionLimitError>,
fn checked_recur<F, T, E>(&self, f: F) -> Result<T, E>where
F: FnOnce(&Self) -> Result<T, E>,
E: From<RecursionLimitError>,
f
if so. Read moresourcefn checked_recur_mut<F, T, E>(&mut self, f: F) -> Result<T, E>where
F: FnOnce(&mut Self) -> Result<T, E>,
E: From<RecursionLimitError>,
fn checked_recur_mut<F, T, E>(&mut self, f: F) -> Result<T, E>where
F: FnOnce(&mut Self) -> Result<T, E>,
E: From<RecursionLimitError>,
sourceimpl Transform for InlineLet
impl Transform for InlineLet
sourcefn transform(
&self,
relation: &mut MirRelationExpr,
_: TransformArgs<'_>
) -> Result<(), TransformError>
fn transform(
&self,
relation: &mut MirRelationExpr,
_: TransformArgs<'_>
) -> Result<(), TransformError>
Auto Trait Implementations
impl !RefUnwindSafe for InlineLet
impl Send for InlineLet
impl !Sync for InlineLet
impl Unpin for InlineLet
impl UnwindSafe for InlineLet
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
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>
T
in a tonic::Request
sourceimpl<T> Pointable for T
impl<T> Pointable for T
sourceimpl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
sourcefn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
RustType::from_proto
.sourcefn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
RustType::into_proto
.