@@ -11,12 +11,13 @@ The goal of this project is to make DuckLake a first-class, Arrow-native lakehou
1111## Currently Supported
1212
1313- Read-only queries against DuckLake catalogs
14- - DuckDB and PostgreSQL catalog backends
14+ - DuckDB, PostgreSQL, and MySQL catalog backends
1515- Local filesystem and S3-compatible object stores (MinIO, S3)
1616- Snapshot-based consistency
1717- Basic and decimal types
1818- Hierarchical path resolution (` data_path ` , ` schema ` , ` table ` , ` file ` )
1919- Delete files for row-level deletion (MOR – Merge-On-Read)
20+ - Parquet Modular Encryption (PME) for reading encrypted Parquet files
2021- Parquet footer size hints for optimized I/O
2122- Filter pushdown to Parquet for row group pruning and page-level filtering
2223- Dynamic metadata lookup (no upfront catalog caching)
@@ -31,6 +32,7 @@ The goal of this project is to make DuckLake a first-class, Arrow-native lakehou
3132- No write operations
3233- No partition-based file pruning
3334- No time travel support
35+ - DuckDB-encrypted Parquet files (non-PME) are not supported
3436
3537---
3638
@@ -41,10 +43,7 @@ This project is under active development. The roadmap below reflects major areas
4143### Metadata & Catalog Improvements
4244
4345- Metadata caching to reduce repeated catalog lookups
44- - Pluggable metadata providers beyond DuckDB:
45- - PostgreSQL
46- - SQLite
47- - MySQL
46+ - SQLite metadata provider
4847- Clear abstraction boundaries between catalog, metadata provider, and execution
4948
5049### Query Planning & Performance
@@ -86,6 +85,7 @@ This project is under active development. The roadmap below reflects major areas
8685| ---------| -------------| ---------|
8786| ` metadata-duckdb ` | DuckDB catalog backend | ✅ |
8887| ` metadata-postgres ` | PostgreSQL catalog backend | |
88+ | ` metadata-mysql ` | MySQL catalog backend | |
8989
9090``` bash
9191# DuckDB only (default)
@@ -94,15 +94,26 @@ cargo build
9494# PostgreSQL only
9595cargo build --no-default-features --features metadata-postgres
9696
97- # Both backends
98- cargo build --features metadata-postgres
97+ # MySQL only
98+ cargo build --no-default-features --features metadata-mysql
99+
100+ # All backends
101+ cargo build --features metadata-postgres,metadata-mysql
99102```
100103
101104### Example
102105
103106``` bash
104- cargo run --example basic_query -- < catalog.db> < sql>
107+ # DuckDB catalog
108+ cargo run --example basic_query -- catalog.db " SELECT * FROM main.users"
109+
110+ # PostgreSQL catalog
111+ cargo run --example basic_query --features metadata-postgres -- \
112+ " postgresql://user:password@localhost:5432/database" " SELECT * FROM main.users"
105113
114+ # MySQL catalog
115+ cargo run --example basic_query --features metadata-mysql -- \
116+ " mysql://user:password@localhost:3306/database" " SELECT * FROM main.users"
106117```
107118
108119### Integration
0 commit comments