Expand description
User-facing API for defining virtual tables.
This module provides simplified traits for users to implement custom virtual tables. Users can choose between two levels of abstraction:
TableVirtualUser: Simple API for tables that can return all rows at onceTableVirtualUserIterator: Advanced API for streaming large datasets with optional pushdown
§Example
ⓘ
use reifydb_engine::table_virtual::{TableVirtualUser, TableVirtualUserColumnDef};
use reifydb_type::Type;
use reifydb_core::value::Value;
struct MyApiTable {
api_client: ApiClient,
}
impl TableVirtualUser for MyApiTable {
fn columns(&self) -> Vec<TableVirtualUserColumnDef> {
vec![
TableVirtualUserColumnDef::new("id", Type::Uint8),
TableVirtualUserColumnDef::new("name", Type::Utf8),
]
}
fn rows(&self) -> Vec<Vec<Value>> {
self.api_client.fetch_data()
.map(|r| vec![Value::Uint8(r.id), Value::Utf8(r.name.into())])
.collect()
}
}Structs§
- Table
Virtual User Column Def - Column definition for user virtual tables.
- Table
Virtual User Pushdown Context - Pushdown context for advanced virtual table implementations.
Traits§
- Table
Virtual User - Simple trait for user-defined virtual tables.
- Table
Virtual User Iterator - Advanced trait for streaming virtual table implementations.