Build a Typed Database Expression Engine in Rust
A hand-written loop for i32 + i32 is easy:
for row in 0..left.len() {
output.push(match (left.get(row), right.get(row)) {
(Some(left), Some(right)) => Some(left.wrapping_add(right)),
_ => None,
});
}
The design problem appears when the engine must also borrow strings without copying, read constants and dictionaries, promote mixed numeric types, reject bad arity and lengths, and choose a function from runtime names. Repeating those decisions in every loop makes each new function a new place for type drift, null bugs, and inconsistent errors.
This course builds the connections that move those decisions out of the row loop. You will first write the small cases by hand. Only after their duplication is visible will you introduce the catalogs and generic adapters that remove it.
The map has three reading directions:
DataTypetells the planner what a value means;PhysicalTypeselects storage.Scalar,ScalarRef,Array, andArrayBuilderform one compile-time family, while erased enums cross runtime boundaries through checked conversions.ColumnViewImplnormalizes array, constant, dictionary, and typed-null encodings before one selected typed expression enters its row loop.
Nullability is value state—Option or validity—not a DataType::Nullable variant. A one-level
List adds offsets and independent outer/child validity; it does not add an aggregate engine.
What you need to know
You should be comfortable with Rust enums, traits, references, Option, and ordinary Cargo use.
The course introduces generic associated types, checked runtime erasure, and return-position
impl Trait in the concrete places that need them.
Every chapter names prerequisites, exact starter targets, required work, extensions, and a copied test. Passing the test is necessary; you should also be able to explain why the new boundary exists and which failure it prevents.
Continue to Environment Setup.
Your feedback is greatly appreciated. Join our Discord Community. Found an issue? Create an issue or pull request.
© 2022-2026 Alex Chi Z. Licensed under CC BY-NC-SA 4.0.