Skip to main content

rudb_catalog/
lib.rs

1//! Schemas, tables, views, constraints, dependency tracking, dictionaries and symbol tables.
2//!
3//! Rank 8 in the layer rule. See `xtask/layers.toml` and `spec/18-package-layout.md`.
4//!
5//! What is here today is the part the binder cannot be written without: a name, the rule for
6//! comparing two of them, a table with columns and rows, a view with the query it stands for, and
7//! the registry that turns `catalog.schema.table` into one object. Transactional catalog versions,
8//! constraints and the dependency graph are M4 work and they hang off [`Catalog`] rather than
9//! replacing it.
10//!
11//! The rows live in [`rudb_storage::MemoryTable`] for now. That is the one piece here that is
12//! openly temporary, and it is behind [`Table::rows`] precisely so that swapping it for the real
13//! storage format at M2 is a change to one field.
14
15#![forbid(unsafe_code)]
16
17pub mod catalog;
18pub mod name;
19pub mod table;
20pub mod view;
21
22pub use catalog::{Catalog, DEFAULT_CATALOG, DEFAULT_SCHEMA, Database, Entry, Schema};
23pub use name::{QualifiedName, same_name};
24pub use table::{Table, duplicate_check};
25pub use view::View;