JingsongLi opened a new pull request, #10656:
URL: https://github.com/apache/paimon/pull/10656

   ## Purpose
   
   Keep existing Parquet/BLOB writes and mutations on the Native path when 
dedicated format options are inactive. Both cases already work in Pure Python 
and the current Rust core; eager Python qualification was selecting the Pure 
path unnecessarily.
   
   ## Changes
   
   - Check `changelog-file.format` only when an INPUT changelog can actually be 
emitted. Ordinary writes with `changelog-producer=none` and batch overwrite 
remain eligible for Native even with a different configured changelog format. 
Active non-Parquet INPUT changelogs retain their existing fallback, including 
stream writers.
   - Check `vector.file.format` only when the table has a top-level VECTOR 
field, matching current Java dedicated-field selection. Parquet/BLOB tables 
without VECTOR fields can use Native row-ID and predicate updates, callables, 
Arrow/row upsert, Arrow/table-source MERGE and deletion.
   - Keep runtime, FileIO, authorization, schema and mutation ownership 
requirements unchanged. No additional data format or Python API is introduced.
   
   Java resolves the changelog format for changelog output and discards 
overwrite changelogs at publication. Dedicated Vector writers are selected from 
actual top-level Vector fields. Existing Pure/Rust overwrite writers already 
suppress changelog generation; this change retains that behavior.
   
   ## Tests
   
   - New qualification regressions fail before the fix for both inactive 
options. Active unsupported formats still select the Python path.
   - Real REST tests cover batch/stream writes, stream writer reuse, 
full/partition overwrite, row-ID and predicate updates/deletes, callables, 
upserts and both MERGE source forms. Native cases forbid Python writer/mutation 
and commit fallback, inspect Parquet/BLOB-only outputs and compare final rows.
   - Related write/update/commit suites: **279 passed, 405 skipped** in the 
local Python runtime. Native-dependent cases are skipped because the extension 
is unavailable; no extension was rebuilt or installed.
   - Changed Python files pass project Flake8, Python 3.6 grammar checks and 
`git diff --check`.
   - Existing Rust main was independently exercised through public core APIs 
for the relevant write, commit, read and mutation scenarios; no Rust change or 
companion PR is required. Native CI continues to build Rust main.
   
   ## Documentation
   
   Document that only active dedicated formats affect Native selection.
   


-- 
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]

Reply via email to