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

   ## Purpose
   
   Use Rust core for PyPaimon's existing REST branch operations, following 
Java's RESTCatalog and CatalogBranchManager semantics.
   
   Depends on https://github.com/apache/paimon-rust/pull/1141. Native CI 
continues to build Rust main; merge that PR first.
   
   ## Changes
   
   - Delegate REST create/drop/fast-forward to PaimonCatalog with 
write.native.enabled, and list to PaimonCatalog with read.native.enabled. 
Existing CatalogBranchManager calls take the same route.
   - Reuse resolved REST configuration without another /config request, 
preserving the live endpoint, original authentication inputs, request headers 
and User-Agent. Custom clients/auth providers/error handlers stay on Python 
before a request begins.
   - Translate structured Native catalog errors through PyPaimon's existing 
REST error handler, preserving table/tag/branch/permission errors and generic 
transport failures. Never replay a Native operation through Python after 
execution begins.
   - Align strict branch creation with Java: list branches only for 
ignore_if_exists, so ordinary creation does not require list permission. 
Preserve unknown 404 resource errors.
   - Align REST branch rename with Java's unsupported operation; remove the 
invented REST rename endpoint/DTO and its mock implementation. Filesystem 
branch rename remains supported.
   - Reject empty/dot URL path components before dispatch. Document that 
creation without a tag creates an empty branch.
   - Add real HTTP and Native integration regressions, including Parquet/Blob 
shared-file preservation, permission errors without a JSON code, unknown HTTP 
statuses, malformed responses, connection failures, custom error handlers, 
resolved authentication, and a published branch followed by a 500 response that 
must neither replay nor remove the branch.
   
   ## Verification
   
   - Native REST branch and existing branch write/lifecycle suites: **87 
passed**, with 161 Native plans, 162 reads, 140 writes and 84 commits exercised.
   - CatalogBranchManager, REST branch, branch DTO and DLF signer suites: **82 
passed**.
   - Flake8 using dev/cfg.ini on all changed Python files: passed.
   - git diff --check: passed.
   
   Tests used a locally built binding from Rust #1141. The mock REST service 
acknowledges fast-forward; request semantics are covered by Rust protocol tests 
and Java comparison, without claiming a production server's snapshot-switching 
implementation was tested here.
   


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