All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.0 - 2026-03-11
- Upgraded DataFusion to 52.2, Arrow/Parquet 57
- Validate catalog entity names to reject empty, control chars, and overlength
- Normalize type aliases and add promotion rules for schema evolution
- Validate record_count metadata to reject negative values
- Reject zero-column table creation
- Validate type strings in ColumnDef constructor to reject invalid types early
0.0.7 - 2026-02-24
- Validate numeric metadata casts (footer_size, file_size_bytes) to prevent silent truncation
- Error on missing delete files instead of silent data corruption
- Harden path resolver against path traversal, null bytes, encoded slash bypass, and unicode edge cases
- Validate decimal type string parsing and precision/scale bounds
- Handle empty catalogs where data directory does not yet exist
- Reject column_id values exceeding i32 range
0.0.6 - 2026-02-13
- S3/ObjectStore write support for DuckLake catalogs
- Upgraded DataFusion 50→51, Arrow/Parquet 56→57
0.0.5 - 2026-02-04
- Write support with streaming API for DuckLake catalogs (
writefeature flag) - SQL write support with
INSERT INTOstatements (writefeature flag) - Schema evolution support
- TPC-H and TPC-DS benchmarks comparing DuckDB-DuckLake vs DataFusion-DuckLake
- Benchmark test workflow for CI
- Reuse DuckDB connection for metadata queries instead of creating new connection per call (performance improvement)
0.0.4 - 2026-01-14
- SQLite metadata provider (
metadata-sqlitefeature flag) - Delete file CDC support in
ducklake_table_changes()function
0.0.3 - 2026-01-09
- PostgreSQL metadata provider (
metadata-postgresfeature flag) - MySQL metadata provider (
metadata-mysqlfeature flag) - Parquet Modular Encryption (PME) support for reading encrypted files (
encryptionfeature flag) ducklake_table_changes()table function returning actual row data from Parquet files- Feature flags for metadata providers
- SQLLogicTest runner for DuckDB test files
- Empty table queries now return empty results instead of errors
- Snapshot filtering for complete row deletion scenarios
- Column renaming via Parquet field_id → DuckLake column_id mapping
- Pinned rustc version to 1.92.0 for build stability
0.0.2 - 2025-12-17
- DuckDB-style table functions for catalog introspection:
ducklake_snapshots(),ducklake_schemas(),ducklake_tables()ducklake_columns(),ducklake_data_files(),ducklake_delete_files()
- Snapshot-pinned catalog ensuring consistent reads across a query session
0.0.1 - 2025-10-25
Initial release.
- Read-only SQL queries against DuckLake catalogs via DataFusion
- Support for local filesystem and S3/MinIO object stores
- Row-level delete support (merge-on-read)
- Filter pushdown to Parquet
- Query-scoped snapshot isolation