Skip to main content

uqa_execution/
relational.rs

1//
2// Unified Query Algebra
3//
4// Copyright (c) 2023-2026 Cognica, Inc.
5//
6
7//! Relational Volcano operators.
8//!
9//! Each operator family owns its state and lifecycle in a focused module while
10//! this facade preserves the public construction API.
11
12use std::sync::Arc;
13
14use uqa_core::Value;
15use uqa_sql::ast::SetOpKind;
16use uqa_sql::expr::truthy;
17#[cfg(test)]
18use uqa_sql::ResultRow;
19use uqa_sql::SQLParam;
20
21use crate::batch::{Batch, RowSchema};
22use crate::physical::{
23    BackwardScanSupport, ExecError, ExecResult, PhysicalOperator, PhysicalScanDirection,
24};
25use crate::scalar::{eval_scalar, ScalarEvalContext, ScalarExpr};
26
27mod aggregate;
28mod evaluator;
29mod filter;
30mod limit;
31mod project;
32mod set_operation;
33mod sort;
34mod window;
35
36pub use aggregate::{AggregateExecutor, AggregateKind, AggregateSpec, HashAggregate};
37pub use evaluator::{
38    ExpressionEvaluator, RowPredicate, SharedExpressionEvaluator, SharedRowPredicate,
39};
40pub use filter::Filter;
41pub use limit::Limit;
42pub use project::{Project, ProjectionTarget};
43pub use set_operation::SetOperation;
44pub(crate) use sort::compare_sort_key_values_by;
45pub use sort::{compare_sort_key_values, Sort, SortKey};
46pub use window::{Window, WindowExecutor, WindowKind, WindowSpec};
47
48use aggregate::value_to_f64;
49use evaluator::DefaultExpressionEvaluator;
50use sort::compare_values;
51
52#[cfg(test)]
53use aggregate::{finalise_fold, AggFold};
54
55#[cfg(test)]
56mod tests;