SpjNormalForm

Struct SpjNormalForm 

Source
pub struct SpjNormalForm { /* private fields */ }
Expand description

A normalized representation of a plan containing only Select/Project/Join in the relational algebra sense. In DataFusion terminology this also includes Filter nodes. Joins are not currently supported, but are planned.

Implementations§

Source§

impl SpjNormalForm

Source

pub fn output_schema(&self) -> &Arc<DFSchema>

Schema of data output by this plan.

Source

pub fn output_exprs(&self) -> &[Expr]

Expressions output by this plan. These expressions can be used to rewrite this plan as a cross join followed by a projection; however, this does not include any filters in the original plan, so the result will be a superset.

Source

pub fn referenced_tables(&self) -> &[TableReference]

All tables referenced in this plan.

Source

pub fn new(original_plan: &LogicalPlan) -> Result<Self>

Analyze an existing LogicalPlan and rewrite it in select-project-join normal form.

Source

pub fn rewrite_from( &self, other: &Self, qualifier: TableReference, source: Arc<dyn TableSource>, ) -> Result<Option<LogicalPlan>>

Rewrite this plan as as selection/projection on top of another plan, which we use qualifier to refer to. This is useful for rewriting queries to use materialized views.

Trait Implementations§

Source§

impl Clone for SpjNormalForm

Source§

fn clone(&self) -> SpjNormalForm

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SpjNormalForm

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl TreeNodeRewriter for &SpjNormalForm

Rewrite an expression to re-use output columns from this plan, where possible.

Source§

type Node = Expr

The node type which is rewritable.
Source§

fn f_down(&mut self, node: Self::Node) -> Result<Transformed<Self::Node>>

Invoked while traversing down the tree before any children are rewritten. Default implementation returns the node as is and continues recursion.
Source§

fn f_up( &mut self, node: Self::Node, ) -> Result<Transformed<Self::Node>, DataFusionError>

Invoked while traversing up the tree after all children have been rewritten. Default implementation returns the node as is and continues recursion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> ErasedDestructor for T
where T: 'static,