Enum polars_plan::plans::IR

source ·
pub enum IR {
Show 20 variants PythonScan { options: PythonOptions, predicate: Option<ExprIR>, }, Slice { input: Node, offset: i64, len: IdxSize, }, Filter { input: Node, predicate: ExprIR, }, Scan { paths: Arc<[PathBuf]>, file_info: FileInfo, hive_parts: Option<Arc<[HivePartitions]>>, predicate: Option<ExprIR>, output_schema: Option<SchemaRef>, scan_type: FileScan, file_options: FileScanOptions, }, DataFrameScan { df: Arc<DataFrame>, schema: SchemaRef, output_schema: Option<SchemaRef>, filter: Option<ExprIR>, }, SimpleProjection { input: Node, columns: SchemaRef, }, Reduce { input: Node, exprs: Vec<ExprIR>, schema: SchemaRef, }, Select { input: Node, expr: Vec<ExprIR>, schema: SchemaRef, options: ProjectionOptions, }, Sort { input: Node, by_column: Vec<ExprIR>, slice: Option<(i64, usize)>, sort_options: SortMultipleOptions, }, Cache { input: Node, id: usize, cache_hits: u32, }, GroupBy { input: Node, keys: Vec<ExprIR>, aggs: Vec<ExprIR>, schema: SchemaRef, apply: Option<Arc<dyn DataFrameUdf>>, maintain_order: bool, options: Arc<GroupbyOptions>, }, Join { input_left: Node, input_right: Node, schema: SchemaRef, left_on: Vec<ExprIR>, right_on: Vec<ExprIR>, options: Arc<JoinOptions>, }, HStack { input: Node, exprs: Vec<ExprIR>, schema: SchemaRef, options: ProjectionOptions, }, Distinct { input: Node, options: DistinctOptions, }, MapFunction { input: Node, function: FunctionNode, }, Union { inputs: Vec<Node>, options: UnionOptions, }, HConcat { inputs: Vec<Node>, schema: SchemaRef, options: HConcatOptions, }, ExtContext { input: Node, contexts: Vec<Node>, schema: SchemaRef, }, Sink { input: Node, payload: SinkType, }, Invalid,
}
Expand description

IR is a representation of DslPlan with Nodes which are allocated in an Arena In this IR the logical plan has access to the full dataset.

Variants§

§

PythonScan

Available on crate feature python only.

Fields

§predicate: Option<ExprIR>
§

Slice

Fields

§input: Node
§offset: i64
§

Filter

Fields

§input: Node
§predicate: ExprIR
§

Scan

Fields

§paths: Arc<[PathBuf]>
§file_info: FileInfo
§hive_parts: Option<Arc<[HivePartitions]>>
§predicate: Option<ExprIR>
§output_schema: Option<SchemaRef>

schema of the projected file

§scan_type: FileScan
§file_options: FileScanOptions

generic options that can be used for all file types.

§

DataFrameScan

Fields

§schema: SchemaRef
§output_schema: Option<SchemaRef>
§filter: Option<ExprIR>
§

SimpleProjection

Fields

§input: Node
§columns: SchemaRef
§

Reduce

Fields

§input: Node
§exprs: Vec<ExprIR>
§schema: SchemaRef
§

Select

Fields

§input: Node
§expr: Vec<ExprIR>
§schema: SchemaRef
§

Sort

Fields

§input: Node
§by_column: Vec<ExprIR>
§slice: Option<(i64, usize)>
§sort_options: SortMultipleOptions
§

Cache

Fields

§input: Node
§cache_hits: u32

How many hits the cache must be saved in memory.

§

GroupBy

Fields

§input: Node
§keys: Vec<ExprIR>
§aggs: Vec<ExprIR>
§schema: SchemaRef
§maintain_order: bool
§

Join

Fields

§input_left: Node
§input_right: Node
§schema: SchemaRef
§left_on: Vec<ExprIR>
§right_on: Vec<ExprIR>
§options: Arc<JoinOptions>
§

HStack

Fields

§input: Node
§exprs: Vec<ExprIR>
§schema: SchemaRef
§

Distinct

Fields

§input: Node
§

MapFunction

Fields

§input: Node
§function: FunctionNode
§

Union

Fields

§inputs: Vec<Node>
§

HConcat

Fields

§inputs: Vec<Node>
§schema: SchemaRef
§

ExtContext

Fields

§input: Node
§contexts: Vec<Node>
§schema: SchemaRef
§

Sink

Fields

§input: Node
§payload: SinkType
§

Invalid

Implementations§

source§

impl IR

source

pub fn with_exprs_and_input(&self, exprs: Vec<ExprIR>, inputs: Vec<Node>) -> IR

Takes the expressions of an LP node and the inputs of that node and reconstruct

source

pub fn copy_exprs(&self, container: &mut Vec<ExprIR>)

Copy the exprs in this LP node to an existing container.

source

pub fn get_exprs(&self) -> Vec<ExprIR>

Get expressions in this node.

source

pub fn copy_inputs<T>(&self, container: &mut T)
where T: PushNode,

Push inputs of the LP in of this node to an existing container. Most plans have typically one input. A join has two and a scan (CsvScan) or an in-memory DataFrame has none. A Union has multiple.

source

pub fn get_inputs(&self) -> UnitVec<Node>

source

pub fn get_inputs_vec(&self) -> Vec<Node>

source§

impl IR

source

pub fn name(&self) -> &'static str

source

pub fn input_schema<'a>( &'a self, arena: &'a Arena<IR>, ) -> Option<Cow<'a, SchemaRef>>

source

pub fn schema<'a>(&'a self, arena: &'a Arena<IR>) -> Cow<'a, SchemaRef>

Get the schema of the logical plan node.

Trait Implementations§

source§

impl Clone for IR

source§

fn clone(&self) -> IR

Returns a copy 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 IR

source§

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

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

impl Default for IR

source§

fn default() -> IR

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl !Freeze for IR

§

impl !RefUnwindSafe for IR

§

impl Send for IR

§

impl Sync for IR

§

impl Unpin for IR

§

impl !UnwindSafe for IR

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§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

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

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

source§

fn __clone_box(&self, _: Private) -> *mut ()

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> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

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

§

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>,

§

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>,

§

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> Ungil for T
where T: Send,