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::{
25 AggregateExpr, AggregateFunction, AggregatePushOperator, DEFAULT_AGGREGATE_SPILL_THRESHOLD,
26 SpillableAggregatePushOperator,
27};
28pub use distinct::{DistinctMaterializingOperator, DistinctPushOperator};
29pub use filter::{
30 AndPredicate, ColumnPredicate, CompareOp, FilterPredicate, FilterPushOperator,
31 NotNullPredicate, OrPredicate,
32};
33pub use limit::{LimitPushOperator, SkipLimitPushOperator, SkipPushOperator};
34pub use project::{
35 ArithOp, BinaryExpr, ColumnExpr, ConstantExpr, ProjectExpression, ProjectPushOperator,
36};
37pub use sort::{
38 DEFAULT_SPILL_THRESHOLD, NullOrder, SortDirection, SortKey, SortPushOperator,
39 SpillableSortPushOperator,
40};