Struct datafusion::physical_plan::test::exec::BlockingExec
source · pub struct BlockingExec { /* private fields */ }
Expand description
Execution plan that emits streams that block forever.
This is useful to test shutdown / cancelation behavior of certain execution plans.
Implementations§
source§impl BlockingExec
impl BlockingExec
sourcepub fn new(schema: Arc<Schema>, n_partitions: usize) -> BlockingExec
pub fn new(schema: Arc<Schema>, n_partitions: usize) -> BlockingExec
Create new BlockingExec
with a give schema and number of partitions.
sourcepub fn refs(&self) -> Weak<()>
pub fn refs(&self) -> Weak<()>
Weak pointer that can be used for ref-counting this execution plan and its streams.
Use Weak::strong_count
to determine if the plan itself and its streams are dropped (should be 0 in that
case). Note that tokio might take some time to cancel spawned tasks, so you need to wrap this check into a retry
loop. Use assert_strong_count_converges_to_zero
to archive this.
Trait Implementations§
source§impl Debug for BlockingExec
impl Debug for BlockingExec
source§impl DisplayAs for BlockingExec
impl DisplayAs for BlockingExec
source§impl ExecutionPlan for BlockingExec
impl ExecutionPlan for BlockingExec
source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Returns the execution plan as
Any
so that it can be
downcast to a specific implementation.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
ExecutionPlan
s 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<BlockingExec>,
_: Vec<Arc<dyn ExecutionPlan>>,
) -> Result<Arc<dyn ExecutionPlan>, DataFusionError>
fn with_new_children( self: Arc<BlockingExec>, _: Vec<Arc<dyn ExecutionPlan>>, ) -> Result<Arc<dyn ExecutionPlan>, DataFusionError>
Returns a new
ExecutionPlan
where all existing children were replaced
by the children
, in ordersource§fn execute(
&self,
_partition: usize,
_context: Arc<TaskContext>,
) -> Result<Pin<Box<dyn RecordBatchStream<Item = Result<RecordBatch, DataFusionError>> + Send>>, DataFusionError>
fn execute( &self, _partition: usize, _context: Arc<TaskContext>, ) -> Result<Pin<Box<dyn RecordBatchStream<Item = Result<RecordBatch, DataFusionError>> + Send>>, DataFusionError>
source§fn name(&self) -> &'static strwhere
Self: Sized,
fn name(&self) -> &'static strwhere
Self: Sized,
Short name for the ExecutionPlan, such as ‘ParquetExec’.
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<Vec<PhysicalSortRequirement>>>
fn required_input_ordering(&self) -> Vec<Option<Vec<PhysicalSortRequirement>>>
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>>, DataFusionError>
fn repartitioned( &self, _target_partitions: usize, _config: &ConfigOptions, ) -> Result<Option<Arc<dyn ExecutionPlan>>, DataFusionError>
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
Metric
s for this
ExecutionPlan
. If no Metric
s are available, return None. Read moresource§fn statistics(&self) -> Result<Statistics, DataFusionError>
fn statistics(&self) -> Result<Statistics, DataFusionError>
Returns statistics for this
ExecutionPlan
node. If statistics are not
available, should return Statistics::new_unknown
(the default), not
an error.Auto Trait Implementations§
impl Freeze for BlockingExec
impl !RefUnwindSafe for BlockingExec
impl Send for BlockingExec
impl Sync for BlockingExec
impl Unpin for BlockingExec
impl !UnwindSafe for BlockingExec
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