Uh oh!
There was an error while loading. Please reload this page.
feat: support batch incremental diff reads - #510
Conversation
There are multiple correctness issues:
|
85c0a2b to
7b47806ComparePandas886
commented
Jul 23, 2026
Thanks, I addressed these in 7b47806 and rebased onto latest main. Diff now compares the full schema before projection (including NULLs), rejects unsupported types, and no longer uses BinaryRow bytes for range pruning. NaN follows Java Float.compare. I also added the NULL/projection regressions. Could you take another look? |
JingsongLi
left a comment
There was a problem hiding this comment.
Can you add API doc in docs?
7b47806 to
4837703ComparePandas886
commented
Jul 26, 2026
Added the API guide in |
JingsongLi
commented
Jul 26, 2026
|
Pandas886
commented
Jul 28, 2026
Good catch — fixed in 56cf37b. Diff now compares the bucket count from both snapshot schemas before reading manifests, following Java's TimeTravelUtil. I also added an empty-snapshot regression test. Thanks! |
Uh oh!
There was an error while loading. Please reload this page.
…fest * upstream/main: fix(table): skip unrelated BLOB and vector files in row-range reads (apache#629) feat(datafusion): support database SQL statements (apache#627) fix(datafusion): apply dynamic options to vector search (apache#623) feat(io): let FileIO wrap a caller-provided filesystem operator (apache#618) feat(c): build a catalog-free Table from a resolved schema JSON (apache#595) feat: support batch incremental diff reads (apache#510) fix(spec): accept Java's long memory-size units and reject overflow (apache#621) fix(table): stop answering COUNT(*) from a placeholder row count (apache#624) feat(datafusion): support alter column (apache#625) fix(spec): validate bucket-key against table schema (apache#620) # Conflicts: # crates/paimon/src/table/data_evolution_reader.rs # crates/paimon/src/table/table_scan.rs
Purpose
Linked issue: close#505
Depends on:#508 and #509 (stacked). Against
mainyou'll see the whole stack; the new work is Diff planning + before/after comparison.For tables with
changelog-producer=none, Diff is how you still get an audit-style change stream without materializing changelog during write.Brief change log
DiffPairper(partition, bucket)Unsupported, no silent wrong results)+I/-U/+U/-D, skip equal rowsdiff.parallelismoption (default 4) for pair executionI used input-delete rows for delete cases in tests so we don't need compact/lookup generation in this PR.
Tests
API and Format
Documentation
Still holding docs for the DataFusion PR so users see one end-to-end story.
Known gaps (intentionally)