pub struct ProjectionPushdown;Expand description
Pushes projections down through other operators.
Implementations§
source§impl ProjectionPushdown
impl ProjectionPushdown
sourcepub fn action(
&self,
relation: &mut MirRelationExpr,
desired_projection: &Vec<usize>,
gets: &mut BTreeMap<Id, BTreeSet<usize>>
) -> Result<(), TransformError>
pub fn action(
&self,
relation: &mut MirRelationExpr,
desired_projection: &Vec<usize>,
gets: &mut BTreeMap<Id, BTreeSet<usize>>
) -> Result<(), TransformError>
Pushes the desired_projection down through relation.
This action transforms relation to a MirRelationExpr equivalent to
relation.project(desired_projection).
desired_projection is expected to consist of unique columns.
sourcepub fn update_projection_around_get(
&self,
relation: &mut MirRelationExpr,
applied_projections: &BTreeMap<Id, (Vec<usize>, RelationType)>
) -> Result<(), TransformError>
pub fn update_projection_around_get(
&self,
relation: &mut MirRelationExpr,
applied_projections: &BTreeMap<Id, (Vec<usize>, RelationType)>
) -> Result<(), TransformError>
When we push the desired_value_projection at value,
the columns returned by Get(get_id) will change, so we need
to permute Projects around Get(get_id).
Trait Implementations§
source§impl Debug for ProjectionPushdown
impl Debug for ProjectionPushdown
source§impl Transform for ProjectionPushdown
impl Transform for ProjectionPushdown
source§fn transform(
&self,
relation: &mut MirRelationExpr,
_: TransformArgs<'_>
) -> Result<(), TransformError>
fn transform(
&self,
relation: &mut MirRelationExpr,
_: TransformArgs<'_>
) -> Result<(), TransformError>
Transform a relation into a functionally equivalent relation.
source§fn recursion_safe(&self) -> bool
fn recursion_safe(&self) -> bool
Indicates if the transform can be safely applied to expressions containing
LetRec AST nodes.Auto Trait Implementations§
impl RefUnwindSafe for ProjectionPushdown
impl Send for ProjectionPushdown
impl Sync for ProjectionPushdown
impl Unpin for ProjectionPushdown
impl UnwindSafe for ProjectionPushdown
Blanket Implementations§
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::Requestsource§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.