JingsongLi opened a new pull request, #1200: URL: https://github.com/apache/paimon-rust/pull/1200
### Purpose Use the writer's metadata boundary for PyPaimon postpone bucket planning. The previous Native adapter derived existing bucket counts from a query plan, which requires unrestricted SELECT authorization and can combine entries carrying different total bucket counts. Java's PostponeUtils.getKnownNumBuckets reads writer/store metadata directly. ### Brief change log - Add PostponeFixedBucketWriteBuilder.bucket_plan() to resolve known partition layouts from the latest writer baseline, independently of historical read selectors. - Reuse the existing per-entry bucket validation and conflict checks. Pending buckets do not define an existing layout. Explicit plans take precedence; overwrite otherwise starts with an empty layout. Configured default counts do not create fictional partition entries. - Require a catalog-loaded write identity for guarded tables without issuing SELECT requests. Reuse the REST snapshot response directly, including when its snapshot JSON file is unavailable in storage. - Add PostponeBucketPlan.to_arrow() using the same positional partition-columns + total_buckets schema accepted by from_arrow(). Bind the getter as a PyArrow RecordBatch and update the Python type stub. - Move a test-only BinaryRow import into the tests module to fix an existing main Clippy warning; no suppression or behavior change. ### Tests - Rust 1.98.0: 9 relevant Core tests and 1 PyArrow binding test passed on the final source. - Regressions cover explicit/overwrite/default precedence, nullable partition round trips, pending buckets, latest writer baseline, conflicting layouts within one bucket, REST write identity, denied SELECT, and missing filesystem snapshot JSON. - cargo +1.98.0 clippy --locked --all-targets --workspace --features fulltext,vortex -- -D warnings: passed. - cargo +1.98.0 fmt --all -- --check and git diff --check: passed. Python type stub parses with Python 3.6 grammar. - No Native Python extension was installed or rebuilt; the Rust binding test harness was compiled and run normally. ### API and Format Adds the Core builder getter, the symmetric Arrow plan export, and the matching binding. No new dependency, table option, or storage-format change. ### Documentation Rust API comments and the Python type stub document the writer authorization boundary and plan precedence. A paired PyPaimon PR integrates the getter and cleans the write execution boundary. -- 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]
