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
24pub use aggregate::AggregatePushOperator;
25#[cfg(feature = "spill")]
26pub use aggregate::{DEFAULT_AGGREGATE_SPILL_THRESHOLD, SpillableAggregatePushOperator};
27pub use distinct::{DistinctMaterializingOperator, DistinctPushOperator};
28pub use filter::{
29    AndPredicate, ColumnPredicate, CompareOp, FilterPredicate, FilterPushOperator,
30    NotNullPredicate, OrPredicate,
31};
32pub use limit::{LimitPushOperator, SkipLimitPushOperator, SkipPushOperator};
33pub use project::{
34    ArithOp, BinaryExpr, ColumnExpr, ConstantExpr, ProjectExpression, ProjectPushOperator,
35};
36#[cfg(feature = "spill")]
37pub use sort::{DEFAULT_SPILL_THRESHOLD, SpillableSortPushOperator};
38pub use sort::{NullOrder, SortDirection, SortKey, SortPushOperator};