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]
