//! Physical operators for a small query-plan executor. //! //! 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;