Struct datafusion_physical_plan::memory::MemoryExec
source · pub struct MemoryExec { /* private fields */ }Expand description
Execution plan for reading in-memory batches of data
Implementations§
source§impl MemoryExec
impl MemoryExec
sourcepub fn try_new(
partitions: &[Vec<RecordBatch>],
schema: SchemaRef,
projection: Option<Vec<usize>>,
) -> Result<Self>
pub fn try_new( partitions: &[Vec<RecordBatch>], schema: SchemaRef, projection: Option<Vec<usize>>, ) -> Result<Self>
Create a new execution plan for reading in-memory record batches
The provided schema should not have the projection applied.
sourcepub fn with_show_sizes(self, show_sizes: bool) -> Self
pub fn with_show_sizes(self, show_sizes: bool) -> Self
set show_sizes to determine whether to display partition sizes
pub fn partitions(&self) -> &[Vec<RecordBatch>]
pub fn projection(&self) -> &Option<Vec<usize>>
sourcepub fn with_sort_information(self, sort_information: Vec<LexOrdering>) -> Self
pub fn with_sort_information(self, sort_information: Vec<LexOrdering>) -> Self
A memory table can be ordered by multiple expressions simultaneously.
EquivalenceProperties keeps track of expressions that describe the
global ordering of the schema. These columns are not necessarily same; e.g.
┌-------┐
| a | b |
|---|---|
| 1 | 9 |
| 2 | 8 |
| 3 | 7 |
| 5 | 5 |
└---┴---┘
where both a ASC and b DESC can describe the table ordering. With
EquivalenceProperties, we can keep track of these equivalences
and treat a ASC and b DESC as the same ordering requirement.
pub fn original_schema(&self) -> SchemaRef
Trait Implementations§
source§impl Debug for MemoryExec
impl Debug for MemoryExec
source§impl DisplayAs for MemoryExec
impl DisplayAs for MemoryExec
source§impl ExecutionPlan for MemoryExec
impl ExecutionPlan for MemoryExec
source§fn statistics(&self) -> Result<Statistics>
fn statistics(&self) -> Result<Statistics>
We recompute the statistics dynamically from the arrow metadata as it is pretty cheap to do so
source§fn name(&self) -> &'static str
fn name(&self) -> &'static str
Short name for the ExecutionPlan, such as ‘ParquetExec’. Read more
source§fn properties(&self) -> &PlanProperties
fn properties(&self) -> &PlanProperties
Return properties of the output of the
ExecutionPlan, such as output
ordering(s), partitioning information etc. Read moresource§fn children(&self) -> Vec<&Arc<dyn ExecutionPlan>>
fn children(&self) -> Vec<&Arc<dyn ExecutionPlan>>
Get a list of children
ExecutionPlans that act as inputs to this plan.
The returned list will be empty for leaf nodes such as scans, will contain
a single value for unary nodes, or two values for binary nodes (such as
joins).source§fn with_new_children(
self: Arc<Self>,
children: Vec<Arc<dyn ExecutionPlan>>,
) -> Result<Arc<dyn ExecutionPlan>>
fn with_new_children( self: Arc<Self>, children: Vec<Arc<dyn ExecutionPlan>>, ) -> Result<Arc<dyn ExecutionPlan>>
Returns a new
ExecutionPlan where all existing children were replaced
by the children, in ordersource§fn execute(
&self,
partition: usize,
_context: Arc<TaskContext>,
) -> Result<SendableRecordBatchStream>
fn execute( &self, partition: usize, _context: Arc<TaskContext>, ) -> Result<SendableRecordBatchStream>
source§fn static_name() -> &'static strwhere
Self: Sized,
fn static_name() -> &'static strwhere
Self: Sized,
Short name for the ExecutionPlan, such as ‘ParquetExec’.
Like
name but can be called without an instance.source§fn required_input_distribution(&self) -> Vec<Distribution>
fn required_input_distribution(&self) -> Vec<Distribution>
Specifies the data distribution requirements for all the
children for this
ExecutionPlan, By default it’s [Distribution::UnspecifiedDistribution] for each child,source§fn required_input_ordering(&self) -> Vec<Option<LexRequirement>>
fn required_input_ordering(&self) -> Vec<Option<LexRequirement>>
Specifies the ordering required for all of the children of this
ExecutionPlan. Read moresource§fn maintains_input_order(&self) -> Vec<bool>
fn maintains_input_order(&self) -> Vec<bool>
Returns
false if this ExecutionPlan’s implementation may reorder
rows within or between partitions. Read moresource§fn benefits_from_input_partitioning(&self) -> Vec<bool>
fn benefits_from_input_partitioning(&self) -> Vec<bool>
Specifies whether the
ExecutionPlan benefits from increased
parallelization at its input for each child. Read moresource§fn repartitioned(
&self,
_target_partitions: usize,
_config: &ConfigOptions,
) -> Result<Option<Arc<dyn ExecutionPlan>>>
fn repartitioned( &self, _target_partitions: usize, _config: &ConfigOptions, ) -> Result<Option<Arc<dyn ExecutionPlan>>>
If supported, attempt to increase the partitioning of this
ExecutionPlan to
produce target_partitions partitions. Read moresource§fn metrics(&self) -> Option<MetricsSet>
fn metrics(&self) -> Option<MetricsSet>
Return a snapshot of the set of
Metrics for this
ExecutionPlan. If no Metrics are available, return None. Read moresource§fn supports_limit_pushdown(&self) -> bool
fn supports_limit_pushdown(&self) -> bool
source§fn with_fetch(&self, _limit: Option<usize>) -> Option<Arc<dyn ExecutionPlan>>
fn with_fetch(&self, _limit: Option<usize>) -> Option<Arc<dyn ExecutionPlan>>
Returns a fetching variant of this
ExecutionPlan node, if it supports
fetch limits. Returns None otherwise.Auto Trait Implementations§
impl Freeze for MemoryExec
impl !RefUnwindSafe for MemoryExec
impl Send for MemoryExec
impl Sync for MemoryExec
impl Unpin for MemoryExec
impl !UnwindSafe for MemoryExec
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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