JingsongLi opened a new pull request, #10455: URL: https://github.com/apache/paimon/pull/10455
## Motivation PyPaimon already supports row Blob streams and Blob collection values. NativeTableWrite currently selects the Python writer for every Blob row, and mixing those rows after native Arrow writes fails. Row upserts with Blob objects also fall back to Python matching and writing. ## Changes - Keep existing scalar/ARRAY/MAP Blob row writes and row upserts on Rust, including batch/stream writes, mixed Arrow/row input and selected write columns. - Transport live Blob objects as temporary stream references without opening or materializing payloads in Python. Core performs key matching, deduplication, payload copy and staging. - Preserve native FileIO/HTTP handling for ordinary descriptors and preserve real references for inline descriptor/view fields. - Transport nullable Blob map keys through row lists. Decimal keys retain their source scale until core applies Java HALF_UP rounding and declared precision checks. - Reject malformed map entries, preserve original source exceptions and retain prepared files after errors. - Add regressions for stream lifetime, shadowed upsert sources, external paths, NULL/empty values, mixed row/Arrow writes, inline references and failure ownership. ## Dependency Depends on https://github.com/apache/paimon-rust/pull/1082. This PR remains draft until that core/binding support reaches Rust main. Native CI continues to build Rust main, with no fork pin or CI skip. ## Verification - New Blob row regression suite: 64 passed against the local Rust dependency build. - Existing six Blob native suites: 349 passed. - Full CI-scope tests with all five Native switches enabled: running locally. - Changed-file flake8 with dev/cfg.ini and Python 3.6 syntax parsing passed. - Two independent reviews; Decimal rounding, malformed MAP entry validation and callback error transport findings were repaired with regression tests. Semantics follow Java Blob serialization and Decimal.fromBigDecimal. This only enables existing PyPaimon row inputs through native execution. -- 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]
