Skip to main content

grafeo_core/execution/operators/push/
mod.rs

1//! Push-based operator implementations.
2//!
3//! These operators implement the PushOperator trait for push-based execution,
4//! where data flows forward through the pipeline via `push()` calls.
5//!
6//! ## Non-blocking operators
7//! - `FilterPushOperator` - Filters rows based on predicates
8//! - `ProjectPushOperator` - Evaluates expressions to produce columns
9//! - `LimitPushOperator` - Limits output rows (enables early termination)
10//!
11//! ## Pipeline breakers
12//! - `SortPushOperator` - Buffers all input, produces sorted output
13//! - `AggregatePushOperator` - Groups and aggregates, produces in finalize
14//! - `DistinctPushOperator` - Filters duplicates (incremental)
15//! - `DistinctMaterializingOperator` - Filters duplicates (materializing)
16
17mod aggregate;
18mod distinct;
19mod filter;
20mod limit;
21mod project;
22mod sort;
23#[cfg(feature = "spill")]
24pub(crate) mod spill_state;
25
26pub use aggregate::AggregatePushOperator;
27#[cfg(feature = "spill")]
28pub use aggregate::{DEFAULT_AGGREGATE_SPILL_THRESHOLD, SpillableAggregatePushOperator};
29pub use distinct::{DistinctMaterializingOperator, DistinctPushOperator};
30pub use filter::{
31    AndPredicate, ColumnPredicate, CompareOp, FilterPredicate, FilterPushOperator,
32    NotNullPredicate, OrPredicate,
33};
34pub use limit::{LimitPushOperator, SkipLimitPushOperator, SkipPushOperator};
35pub use project::{
36    ArithOp, BinaryExpr, ColumnExpr, ConstantExpr, ProjectExpression, ProjectPushOperator,
37};
38#[cfg(feature = "spill")]
39pub use sort::{DEFAULT_SPILL_THRESHOLD, SpillableSortPushOperator};
40pub use sort::{NullOrder, SortDirection, SortKey, SortPushOperator};