Skip to main content

dbx_core/sql/executor/
mod.rs

1//! SQL Query Executor Module
2
3use crate::error::DbxResult;
4use arrow::array::RecordBatch;
5use arrow::compute;
6use arrow::datatypes::Schema;
7use std::sync::Arc;
8
9pub mod distributed_executor;
10pub mod expr;
11pub mod fragment_splitter;
12pub mod hash_utils;
13pub mod local_executor;
14pub mod operators;
15pub mod parallel_query;
16pub mod spill;
17
18pub use distributed_executor::DistributedExecutor;
19pub use expr::evaluate_expr;
20pub use fragment_splitter::{FragmentDAG, FragmentSplitter, FragmentStage};
21pub use local_executor::LocalExecutor;
22pub use operators::{
23    FilterOperator, GridExchangeOperator, HashAggregateOperator, HashJoinOperator, LimitOperator,
24    PhysicalOperator, ProjectionOperator, SortOperator, TableScanOperator,
25};
26pub use parallel_query::{AggregateResult, AggregateType, ParallelQueryExecutor};
27pub use spill::SpillContext;
28
29// Helper function for concatenating RecordBatches
30pub fn concat_batches(schema: &Arc<Schema>, batches: &[RecordBatch]) -> DbxResult<RecordBatch> {
31    if batches.len() == 1 {
32        return Ok(batches[0].clone());
33    }
34    Ok(compute::concat_batches(schema, batches)?)
35}