Skip to main content

Module execution

Module execution 

Source
Expand description

Vectorized query execution engine.

Grafeo uses vectorized processing - instead of one row at a time, we process batches of ~1024 rows. This unlocks SIMD and keeps the CPU busy.

ModulePurpose
chunkBatched rows (DataChunk = multiple columns)
vectorSingle column of values
selectionBitmap for filtering without copying
operatorsPhysical operators (scan, filter, join, etc.)
pipelinePush-based execution (data flows through operators)
parallelMorsel-driven parallelism
spillDisk spilling when memory is tight
adaptiveAdaptive execution with runtime cardinality feedback

The execution model is push-based: sources push data through a pipeline of operators until it reaches a sink.

Re-exports§

pub use adaptive::AdaptiveCheckpoint;
pub use adaptive::AdaptiveContext;
pub use adaptive::AdaptiveEvent;
pub use adaptive::AdaptiveExecutionConfig;
pub use adaptive::AdaptiveExecutionResult;
pub use adaptive::AdaptivePipelineBuilder;
pub use adaptive::AdaptivePipelineConfig;
pub use adaptive::AdaptivePipelineExecutor;
pub use adaptive::AdaptiveSummary;
pub use adaptive::CardinalityCheckpoint;
pub use adaptive::CardinalityFeedback;
pub use adaptive::CardinalityTrackingOperator;
pub use adaptive::CardinalityTrackingSink;
pub use adaptive::CardinalityTrackingWrapper;
pub use adaptive::ReoptimizationDecision;
pub use adaptive::SharedAdaptiveContext;
pub use adaptive::evaluate_reoptimization;
pub use adaptive::execute_adaptive;
pub use chunk::DataChunk;
pub use memory::ExecutionMemoryContext;
pub use memory::ExecutionMemoryContextBuilder;
pub use parallel::CloneableOperatorFactory;
pub use parallel::MorselScheduler;
pub use parallel::ParallelPipeline;
pub use parallel::ParallelPipelineConfig;
pub use parallel::ParallelSource;
pub use parallel::RangeSource;
pub use pipeline::ChunkCollector;
pub use pipeline::ChunkSizeHint;
pub use pipeline::Pipeline;
pub use pipeline::PushOperator;
pub use pipeline::Sink;
pub use pipeline::Source;
pub use selection::SelectionVector;
pub use sink::CollectorSink;
pub use sink::CountingSink;
pub use sink::LimitingSink;
pub use sink::MaterializingSink;
pub use sink::NullSink;
pub use source::ChunkSource;
pub use source::EmptySource;
pub use source::GeneratorSource;
pub use source::OperatorSource;
pub use source::VectorSource;
pub use spill::SpillFile;
pub use spill::SpillFileReader;
pub use spill::SpillManager;
pub use vector::ValueVector;

Modules§

adaptive
Adaptive query execution with runtime cardinality feedback.
chunk
DataChunk - the fundamental unit of vectorized execution.
memory
Execution memory context for memory-aware query execution.
operators
Physical operators that actually execute queries.
parallel
Morsel-driven parallel execution engine.
pipeline
Push-based execution pipeline.
selection
SelectionVector for filtering.
sink
Common sink implementations for push-based execution.
source
Source implementations for push-based execution.
spill
Disk spilling for queries that exceed available memory.
vector
ValueVector for columnar data storage.