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

   ### Purpose
   
   Allow PyPaimon's existing REST read/write/update operations to use native 
execution with resolved custom storage providers and catalog query authorizers. 
Keep mutation algorithms and authorization enforcement in Rust core.
   
   ### Brief change log
   
   - Add `Table::from_rest_response_with_file_io` to preserve REST 
snapshots/publication while reusing an already resolved FileIO, including 
unsupported-by-default URI schemes. Preserve this provider across branches of 
the same table UUID, and reject stale identities before storage access.
   - Add the core `TableQueryAuth` contract and `Table::with_query_auth`. 
Validate current identity/schema before and after each callback, retain 
per-operation policy refresh and grant binding, and reject silently losing a 
scoped hook when changing branches.
   - Adapt PyPaimon FileIO streams through the existing FileIOProvider 
abstraction. Preserve literal paths, bounded reads, partial writes and original 
Python exceptions; close/abort never delete output. Run synchronous callbacks 
in a blocking region so callbacks may call native APIs without nested-runtime 
panics.
   - Support stable UTF-8 BINARY/VARBINARY partition names in legacy mode as 
well as nonlegacy mode, coordinated with the Java/Python fix in the companion 
PR.
   - Add optional `file_io` constructor keywords and a thin query-authorizer 
adapter to Python bindings.
   
   ### Tests
   
   - Full Rust core library suite before rebasing: 4311 passed, 6 ignored.
   - After rebasing onto current main: custom query authorization (8), resolved 
REST FileIO publication/branch routing (1), binary partition regressions (3).
   - Python-binding unit tests cover storage streams, error identity, 
callbacks, policy transport and nested native calls. A core Parquet write -> 
xz-manifest commit -> plan -> Arrow read roundtrip executes through a Python 
FileIO without installing an extension.
   - Rust 1.98.0 core and Python-binding all-target Clippy with `-D warnings`; 
rustfmt.
   - Focused companion Python/Java regression suites.
   
   ### API and Format
   
   The new authorization trait mirrors Java's `TableQueryAuth.auth(select)` 
contract. REST construction can accept a caller-owned FileIO; storage 
credential refresh then stays with that provider. The Python bridge adds no 
public FileIO wrapper class. The direct OpenDAL dependency is an existing 
locked package/version.
   
   Binary legacy partition names now use the same UTF-8 conversion as nonlegacy 
mode instead of rejecting the input. Other legacy partition types keep their 
existing semantics.
   
   ### Documentation
   
   Constructor and trait documentation plus companion PyPaimon documentation.
   


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