2026-06-05 13:40:16 +02:00

23 lines
853 B
Rust

//! Physical operators for a small query-plan executor.
//!
//! Three operators are in scope:
//!
//! - [`atom::scan_atom`] scans a [`Table`] under an [`atom::AtomPattern`],
//! filtering for repeated-variable equality and literal equality, and
//! outputs a binding [`relation::Relation`].
//! - [`join::semijoin`] keeps rows of one relation whose shared-column values
//! appear in another.
//! - [`join::natural_join`] combines rows that agree on shared columns,
//! emitting the union of their columns.
//!
//! Operators compose by function application; a "query plan written by hand"
//! is just an expression like
//! `natural_join(&semijoin(&a, &b), &scan_atom(&t, &p))`.
//!
//! `Value` and `Table` live in the `storage` crate; consumers that build
//! inputs depend on `storage` directly.
pub mod atom;
pub mod join;
pub mod relation;