25 lines
996 B
Rust
Raw Normal View History

2026-05-29 15:53:13 +02:00
//! Physical operators for a small query-plan executor.
//!
//! Three operators are in scope:
//!
//! - [`atom::scan_atom`] scans a [`Table`](storage::table::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))`.
//!
//! Foundational types [`Value`](storage::value::Value) and
//! [`Table`](storage::table::Table) live in `storage`, the
//! storage-layer crate this crate is built on; storage backends produce
//! `Table`s that operators here consume.
pub mod atom;
pub mod join;
pub mod relation;