Expand description
DataFusion SQL + Arrow frontend for MongrelDB.
MongrelProvider implements DataFusion’s TableProvider: each scan()
takes an MVCC snapshot of the table, materializes the visible columns, and
hands DataFusion a streaming MongrelScanExec (see scan.rs) that emits one
RecordBatch per 65 536-row chunk. DataFusion then runs the SQL —
projection, filter, aggregation, limit — with its own vectorized kernels,
pipelined across those small batches so a LIMIT short-circuits and peak
memory stays bounded. MongrelDB owns storage/writes/indexes; DataFusion owns
the vectorized execution.
Example (skipped from doctests; see tests/sql.rs for runnable ones):
ⓘ
let db = Table::create("travel.mongreldb", /* schema */ unimplemented!(), 1)?;
let session = MongrelSession::new(db);
session.register("travel_trips").await?;
let batches = session.run("select * from travel_trips where cost < 300").await?;Modules§
- arrow_
conv - MongrelDB ↔ Arrow conversions: schema mapping and
Vec<Row>→RecordBatch. - extended_
sql_ functions - Extended SQL Functions: application-oriented scalar functions layered on DataFusion for date/time, JSON, string, and math compatibility.
Structs§
- External
Module Descriptor - External
Module Index - External
Module Registry - External
Plan - External
Plan Request - External
Scan - External
Txn - External
Write Result - Module
Connect Ctx - Mongrel
Provider - A MongrelDB table exposed to DataFusion. Holds the live
Tablebehind a mutex; each scan takes a fresh MVCC snapshot. - Mongrel
Session - Convenience wrapper: a DataFusion
SessionContextbound to a live MongrelDB, with a result cache keyed by(sql, snapshot_epoch)that auto-invalidates when a commit advances the epoch.