pub enum NodeOp {
Show 23 variants
Scan {
table: String,
filters: Vec<String>,
},
Filter {
predicate: String,
},
Project {
columns: Vec<String>,
},
Aggregate {
group_keys: Vec<String>,
},
Join {
join_type: JoinType,
},
Exchange {
partitioning: Partitioning,
},
Sink {
format: String,
},
CoalescePartitions {
target_partitions: usize,
},
CreateLiveTable {
name: String,
query: String,
},
RefreshLiveTable {
name: String,
},
DropLiveTable {
name: String,
},
KeyBy {
key_column: String,
},
Watermark {
event_time_column: String,
lag_ms: u64,
},
Window {
spec: Box<WindowExecutionSpec>,
},
StreamSource {
source_id: String,
bounded: bool,
},
StateTtl {
ttl_ms: u64,
},
GlobalSort {
keys: Vec<(String, bool)>,
},
SortMergeJoin {
join_type: JoinType,
left_keys: Vec<String>,
right_keys: Vec<String>,
},
WindowJoin {
join_type: JoinType,
left_keys: Vec<String>,
right_keys: Vec<String>,
time_column: String,
window_ms: u64,
},
Unnest {
array_column: String,
output_column: String,
with_ordinality: bool,
},
Cep {
key_column: String,
event_time_column: String,
stage_column: String,
},
SkewJoin {
keys: Vec<String>,
factor: u32,
join_type: JoinType,
},
Other {
description: String,
},
}Expand description
Typed operator classification for a plan node.
Variants§
Scan
Table or file scan, with optional pushed-down filter predicates.
Filter
Row filter with a predicate expression string.
Project
Column projection.
Aggregate
Aggregation with optional group keys.
Join
Join of two inputs.
Exchange
Data exchange / shuffle between partitions.
Fields
partitioning: PartitioningSink
Output sink.
CoalescePartitions
AQE coalesce: merge many small partitions into fewer larger ones.
Inserted by the AQE CoalesceRule when runtime statistics show that
partition count can be reduced to improve downstream task efficiency.
CreateLiveTable
Create a live table backed by a streaming query.
RefreshLiveTable
Refresh materialized state for a live table.
DropLiveTable
Drop a live table.
KeyBy
Key stream by column before windowing.
Watermark
Event-time watermark on a keyed stream.
Window
Windowed streaming operator (tumbling, sliding, or session window).
Fields
spec: Box<WindowExecutionSpec>StreamSource
Bounded or unbounded stream source.
StateTtl
Operator state TTL for streaming nodes.
GlobalSort
E2.2: Globally-sorted output produced by a three-stage pipeline: local sort → range-partition shuffle → merge-sort. The executor treats this as a batch pipeline that produces a single sorted partition.
SortMergeJoin
E2.2 / E2.4: Sort-merge join using pre-sorted, range-partitioned inputs.
Fields
WindowJoin
E3.2: Time-windowed join: buffer both streams in the window interval, emit matched pairs when the window closes.
Fields
Unnest
E5.2: Expand an array-typed column into one row per element.
Equivalent to UNNEST(array_column) in SQL or a LATERAL join over an
array. The output_column name is used for the expanded element.
If with_ordinality is true an extra ordinality column (u64) is
appended with the 1-based position of each element.
Cep
CEP sequential pattern match on a keyed stream.
stage_column names the column whose string value identifies which
pattern stage each row belongs to. The executor groups rows by
key_column, routes each row to PartitionedCepMatcher::process_event
with the row’s stage name, and emits concatenated match batches.
SkewJoin
AQE skew mitigation: split a hot partition into N sub-partitions by
appending a salt column to the join key. The build side is
replicated factor times so that each salted sub-partition of the
probe side joins against the full build side in parallel. The
unsalt node strips the salt column from the post-join output.
Equivalent to Spark AQE’s OptimizeSkewedJoin rule.
Fields
Other
Operator not covered by the above variants.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for NodeOp
impl<'de> Deserialize<'de> for NodeOp
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for NodeOp
impl StructuralPartialEq for NodeOp
Auto Trait Implementations§
impl Freeze for NodeOp
impl RefUnwindSafe for NodeOp
impl Send for NodeOp
impl Sync for NodeOp
impl Unpin for NodeOp
impl UnsafeUnpin for NodeOp
impl UnwindSafe for NodeOp
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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> ⓘ
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> ⓘ
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request