Use Case
sqlite-rs as SQE's internal catalog storage — metadata for tables/indexes when no remote catalog is configured.
Context
SQE uses SQLite via sqlx-sqlite for the Iceberg SQL catalog. Currently depends on the C amalgamation via libsqlite3-sys. sqlite-rs could eliminate:
Current State
SQE's SQLite usage:
- All access via
sqlx, inside vendored Iceberg catalog
- Four consumers: sql-sqlite catalog backend, embedded warehouse,
ATTACH ... TYPE sqlite, test-sqlite coordinator
- Low QPS (metadata path) — correctness critical, not perf critical
Gaps
- No consumable API — Need
Connection/Statement facade
- Bound parameters — sqlx uses
query(...).bind(...) throughout
- Send pager —
Pager is Rc/RefCell, blocks tokio pool
Path
- Probe:
sqlite-rs query/dump on SQE warehouse, diff against sqlite3
- Corpus: Add SQE catalog statements to oracle suite
- API facade:
Connection/Statement with prepare(), bind()
- Bounded integration: embedded warehouse only (single-process)
- Send pager: thread-safe for sqlx pool
- sqlx driver: full swap
Success
Use Case
sqlite-rs as SQE's internal catalog storage — metadata for tables/indexes when no remote catalog is configured.
Context
SQE uses SQLite via
sqlx-sqlitefor the Iceberg SQL catalog. Currently depends on the C amalgamation vialibsqlite3-sys. sqlite-rs could eliminate:cargo install sqe-clilinks = "sqlite3"collision (concurrency: multi-reader single-writer #389)Current State
SQE's SQLite usage:
sqlx, inside vendored Iceberg catalogATTACH ... TYPE sqlite, test-sqlite coordinatorGaps
Connection/Statementfacadequery(...).bind(...)throughoutPagerisRc/RefCell, blocks tokio poolPath
sqlite-rs query/dumpon SQE warehouse, diff against sqlite3Connection/Statementwithprepare(),bind()Success
Send + Syncpager