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

   ## What changes
   
   Fill an existing PyPaimon Native gap: REST query authorization column masks 
using SUBSTRING, TRIM, LENGTH, BIT_LENGTH, PAD, TRANSLATE and OVERLAY. Parsing, 
dependency collection, validation and Arrow execution live in Rust core; no 
additional Python binding API is needed.
   
   Match Java character/position semantics, including Unicode characters, UTF-8 
bit length, mixed field/literal arguments, stored FieldRef type validation, 
checked integer conversion, SUBSTRING's lazy position parsing, NULL evaluation 
order, negative positions and wrapping OVERLAY arithmetic.
   
   Carry the original REST response in Java-compatible QueryAuthSplit 
(SplitSerializer type 5). Metadata serialization preserves rules; 
deserialization retains the authorization-required marker without 
reconstructing a catalog-issued grant. Bare DataSplit serialization still 
refuses to strip authorization.
   
   Keep a REST authorization session when an externally resolved schema has the 
same definition and branch. Ignore client-synthesized creation timestamps, 
preserve immutable options, support mutable option removals, and discard cached 
snapshot resolution. Changed schema definitions or branches still lose the 
session.
   
   ## Verification
   
   - Actual Java 11 Paimon transforms: 9,000 execution cases and 1,165 
SUBSTRING parsing boundary cases compared with Rust, without mismatches.
   - Java-generated QueryAuthSplit golden; UTF-16 key ordering, UTF-8/NUL 
strings, large policies, malformed lengths and bounded nesting.
   - Rust: 5 transform, 38 authorization, 107 predicate, 87 split/source and 36 
REST query-authorization tests passed.
   - CI command: cargo +1.98.0 clippy --locked --all-targets --workspace 
--features fulltext,vortex -- -D warnings; cargo fmt --all -- --check.
   - Locally rebuilt Python binding: authorization scenarios exercised Append, 
PK and Data Evolution tables, Native planning/reading, hidden dependencies, 
masked filters, LIMIT and safe Python fallback.
   
   ## Scope
   
   This adds column-mask transforms. Transformed REST row-filter predicates 
remain outside this change. The corresponding PyPaimon PR will use the captured 
policy when planning or reading falls back.
   


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