Skip to main content

grafeo_core/execution/
mod.rs

1//! Vectorized query execution engine.
2//!
3//! Grafeo uses vectorized processing - instead of one row at a time, we process
4//! batches of ~1024 rows. This unlocks SIMD and keeps the CPU busy.
5//!
6//! | Module | Purpose |
7//! | ------ | ------- |
8//! | [`chunk`] | Batched rows (DataChunk = multiple columns) |
9//! | [`vector`] | Single column of values |
10//! | [`selection`] | Bitmap for filtering without copying |
11//! | [`operators`] | Physical operators (scan, filter, join, etc.) |
12//! | [`pipeline`] | Push-based execution (data flows through operators) |
13//! | [`parallel`] | Morsel-driven parallelism |
14//! | [`spill`] | Disk spilling when memory is tight |
15//! | [`adaptive`] | Adaptive execution with runtime cardinality feedback |
16//!
17//! The execution model is push-based: sources push data through a pipeline of
18//! operators until it reaches a sink.
19
20pub mod adaptive;
21pub mod chunk;
22pub mod memory;
23pub mod operators;
24pub mod parallel;
25pub mod pipeline;
26pub mod selection;
27pub mod sink;
28pub mod source;
29pub mod spill;
30pub mod vector;
31
32pub use adaptive::{
33    AdaptiveCheckpoint, AdaptiveContext, AdaptiveEvent, AdaptiveExecutionConfig,
34    AdaptiveExecutionResult, AdaptivePipelineBuilder, AdaptivePipelineConfig,
35    AdaptivePipelineExecutor, AdaptiveSummary, CardinalityCheckpoint, CardinalityFeedback,
36    CardinalityTrackingOperator, CardinalityTrackingSink, CardinalityTrackingWrapper,
37    ReoptimizationDecision, SharedAdaptiveContext, evaluate_reoptimization, execute_adaptive,
38};
39pub use chunk::DataChunk;
40pub use memory::{ExecutionMemoryContext, ExecutionMemoryContextBuilder};
41pub use parallel::{
42    CloneableOperatorFactory, MorselScheduler, ParallelPipeline, ParallelPipelineConfig,
43    ParallelSource, RangeSource,
44};
45pub use pipeline::{ChunkCollector, ChunkSizeHint, Pipeline, PushOperator, Sink, Source};
46pub use selection::SelectionVector;
47pub use sink::{CollectorSink, CountingSink, LimitingSink, MaterializingSink, NullSink};
48pub use source::{ChunkSource, EmptySource, GeneratorSource, OperatorSource, VectorSource};
49pub use spill::{SpillFile, SpillFileReader, SpillManager};
50pub use vector::ValueVector;