pub trait FragmentExecutor: Send + Sync {
// Required method
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
fragment: &'life1 PlanFragment,
inputs: Vec<FragmentStream>,
control: FragmentControl,
) -> Pin<Box<dyn Future<Output = DistributedResult<FragmentStream>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
// Provided method
fn refill_top_k(
&self,
fragment: &PlanFragment,
offset: usize,
limit: usize,
) -> DistributedResult<TopKRefill> { ... }
}Expand description
Executes one fragment on its worker. The real binding runs tablet
fragments against a ClusterReplica core in a later wave; this wave ships
InMemoryFragmentExecutor as the reference implementation.
Required Methods§
Sourcefn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
fragment: &'life1 PlanFragment,
inputs: Vec<FragmentStream>,
control: FragmentControl,
) -> Pin<Box<dyn Future<Output = DistributedResult<FragmentStream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
fragment: &'life1 PlanFragment,
inputs: Vec<FragmentStream>,
control: FragmentControl,
) -> Pin<Box<dyn Future<Output = DistributedResult<FragmentStream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Runs the fragment. inputs carries one resolved stream per
FragmentOperator::RemoteExchangeSource operator, in operator order.
Provided Methods§
Sourcefn refill_top_k(
&self,
fragment: &PlanFragment,
offset: usize,
limit: usize,
) -> DistributedResult<TopKRefill>
fn refill_top_k( &self, fragment: &PlanFragment, offset: usize, limit: usize, ) -> DistributedResult<TopKRefill>
Returns the next limit local top-k candidates after offset (the
number already returned), with a tightened unseen bound. Executors
without scored streams leave the default, which rejects.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".