Skip to content

Commit bcfecf2

Browse files
Merge remote-tracking branch 'origin/main' into feat/multicatalog-postgres
2 parents f7cf1c9 + 9378de8 commit bcfecf2

19 files changed

Lines changed: 2261 additions & 56 deletions

.github/workflows/ci.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,14 @@ jobs:
8383
run: cargo clippy --all-targets --all-features --no-deps -- -D warnings
8484

8585
- name: Run tests
86+
# `write-sqlite` pulls in the writer and sqlite-provider tests,
87+
# which are `#![cfg]`-gated; without it cargo compiles them to
88+
# zero-test binaries.
8689
run: |
8790
if [[ "$RUNNER_OS" == "macOS" ]]; then
88-
cargo test --features skip-tests-with-docker
91+
cargo test --features "skip-tests-with-docker write-sqlite"
8992
else
90-
cargo test
93+
cargo test --features "write-sqlite"
9194
fi
9295
9396
- name: Check documentation

Cargo.lock

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ skip-tests-with-docker = []
5757

5858
# Metadata provider backends
5959
metadata-duckdb = ["dep:duckdb"]
60-
metadata-postgres = ["dep:sqlx", "sqlx/postgres", "sqlx/chrono"]
60+
metadata-postgres = ["dep:sqlx", "sqlx/postgres", "sqlx/chrono", "sqlx/tls-rustls-ring"]
6161
metadata-mysql = ["dep:sqlx", "sqlx/mysql", "sqlx/chrono"]
6262
metadata-sqlite = ["dep:sqlx", "sqlx/sqlite", "sqlx/chrono"]
6363

@@ -74,4 +74,14 @@ write = ["dep:uuid"]
7474
write-sqlite = ["write", "metadata-sqlite"]
7575
write-postgres = ["write", "metadata-postgres", "multicatalog-postgres"]
7676
# Multicatalog read provider (independent of write support)
77-
multicatalog-postgres = ["metadata-postgres"]
77+
multicatalog-postgres = ["metadata-postgres"]
78+
79+
# Rowid verification examples need both the DuckDB extension (writes the
80+
# catalog + writes data) and the postgres provider (DataFusion-side reads).
81+
[[example]]
82+
name = "compare_rowid_against_duckdb"
83+
required-features = ["metadata-duckdb", "metadata-postgres"]
84+
85+
[[example]]
86+
name = "rowid_lifecycle"
87+
required-features = ["metadata-duckdb", "metadata-postgres"]

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ To meet the [Hotdata](https://www.hotdata.dev) team, [Join the Hotdata Discord](
2525
- Dynamic metadata lookup (no upfront catalog caching)
2626
- SQL-queryable `information_schema` for catalog metadata (snapshots, schemas, tables, columns, files)
2727
- DuckDB-style table functions: `ducklake_snapshots()`, `ducklake_table_info()`, `ducklake_list_files()`, `ducklake_table_changes()`
28+
- DuckLake row lineage (`rowid` virtual column), opt-in via `DuckLakeCatalog::with_row_lineage(true)`. Writers always populate the lineage counter, matching DuckDB's default; the flag is read-only. Compatible with files produced by DuckDB's `UPDATE` / compaction (embedded `_ducklake_internal_row_id`).
2829

2930
---
3031

@@ -34,6 +35,7 @@ To meet the [Hotdata](https://www.hotdata.dev) team, [Join the Hotdata Discord](
3435
- No partition-based file pruning
3536
- No time travel support
3637
- DuckDB-encrypted Parquet files (non-PME) are not supported
38+
- **Data inlining is not read.** DuckDB's ducklake extension inlines small INSERTs (≤ `ducklake_default_data_inlining_row_limit`, default 10 rows) into the catalog itself rather than parquet files. This crate only reads `ducklake_data_file` rows, so inlined data is invisible — `SELECT COUNT(*)` will silently undercount. If you write through DuckDB and read through this crate, either disable inlining at write time (`SET ducklake_default_data_inlining_row_limit = 0` on every writer connection) or run `COMPACT` before reading. Catalogs written entirely through this crate's `SqliteMetadataWriter` are unaffected — we never inline.
3739

3840
---
3941

0 commit comments

Comments
 (0)