JingsongLi opened a new pull request, #1142: URL: https://github.com/apache/paimon-rust/pull/1142
## Purpose PyPaimon already supports REST tag management, paginated tag listing, latest-snapshot metadata and rollback with optional table UUID and expected-head guards. Rust does not expose the complete catalog contract needed to execute these operations natively. ## Changes - Add a core `Instant` type and typed rollback request matching Java's snapshot/tag wire protocol, omitting absent `fromSnapshot` and `tableId` guards. - Expose snapshot loading, rollback and tag pagination through `Catalog` and implement them in `RESTCatalog` without resolving targets or publishing changes through local storage. - Preserve Java's query and pagination semantics, including empty page tokens, opaque prefixes, missing tags versus empty pages, and distinct table/tag/snapshot errors. - Preserve REST errors, including HTTP 501 and the missing latest snapshot of an empty table. Match resource types with Java's case sensitivity. - Accept successful mutation responses without requiring a JSON body. Never replay failed mutations. - Preserve base/delta manifest-list sizes in snapshot metadata so the Native bridge does not discard fields Python already uses. - Add thin Python catalog bindings and typed metadata wrappers; update DataFusion REST rollback callers to forward the loaded table UUID. The scope is existing PyPaimon functionality. No new dependencies are introduced. ## Verification - `cargo +1.98.0 test --quiet --locked -p paimon --test rest_branch_test --test rest_catalog_test` — 153 tests. - Native binding HTTP tests in `bindings/python/tests/test_catalog_versions.py` — 36 tests. - `TZ=UTC cargo +1.98.0 test --quiet --locked -p paimon-datafusion --test procedures test_rollback` — 4 tests. The timestamp procedure test interprets a local TIMESTAMP value as an epoch; UTC matches the CI environment. - `cargo +1.98.0 clippy --locked -p paimon -p paimon-datafusion -p pypaimon_rust --all-targets --features fulltext,vortex -- -D warnings`. - Rustfmt and Python binding test Flake8 checks. - Exercised the new bindings from PyPaimon's real HTTP tests with Native planning, reading, writing and committing enabled, including V4 signatures, table replacement/head rejection, error classification, and no replay or cleanup after publication failures. -- 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]
