JingsongLi opened a new pull request, #1054: URL: https://github.com/apache/paimon-rust/pull/1054
## Purpose PyPaimon supports column-subset append writes and upserts, but the Rust writer currently requires all table columns. Partial input falls back to Python, and FLOAT/DOUBLE upsert keys are also excluded from Native. ## Changes - Add core `TableWrite.with_write_type` for top-level append-table columns, preserving field IDs, input order, routing columns and physical `write_cols` metadata. - Follow Java `BaseAppendFileStoreWrite.withWriteType`: omit unselected fields from files, project file indexes, and use only the selected dedicated BLOB writers. Like Java, a dedicated-only write has no normal writer and retains its group row-count limit. - Allow column-subset Arrow upserts. Keys and partition columns remain required; matched rows require the configured update columns, while new rows append all supplied columns. Keep source duplicate last-wins and target duplicate fanout behavior. - Support ordinary FLOAT/DOUBLE upsert keys through the existing Arrow key encoding. - Expose write-type selection through thin batch/stream Python bindings and update stubs. Regression coverage includes reordered and chunked subsets, partition/bucket routing, omitted columns, duplicate keys, NULL/fractional keys, insert-only inputs missing update columns, malformed schemas, BLOB-only partial files with explicit existing row IDs, and failed dedicated-writer cleanup. ## Verification - `cargo test -p paimon --lib`: 3737 passed, 6 ignored. - `cargo test -p paimon --test table_partial_write_test --test table_update_test`: 37 passed. - Python binding suite: 312 tests passed; the corrected stream-commit test and all 31 write tests passed on rerun. - `cargo +1.98.0 clippy --locked -p paimon -p pypaimon_rust --all-targets -- -D warnings`. - `cargo +1.98.0 fmt --all -- --check`. - Paired PyPaimon Native write/update capability tests: 578 passed against the local binding. The paired Python PR will continue using Rust `main` in CI and depends on this PR merging first. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
