2026-05-29 15:53:13 +02:00
|
|
|
//! Physical operators for a small query-plan executor.
|
|
|
|
|
//!
|
2026-06-01 13:22:32 +02:00
|
|
|
//! Three operators are in scope:
|
|
|
|
|
//!
|
|
|
|
|
//! - [`atom::scan_atom`] scans a [`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))`.
|
|
|
|
|
//!
|
|
|
|
|
//! Integration with an external query-plan IR is out of scope.
|
|
|
|
|
|
|
|
|
|
pub mod atom;
|
|
|
|
|
pub mod join;
|
|
|
|
|
pub mod relation;
|
|
|
|
|
pub mod table;
|
|
|
|
|
pub mod value;
|