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

   ## Purpose
   
   PyPaimon already supports transformed REST query-auth row filters, but those 
filters prevented Native execution. Add strict Native coverage using the Rust 
core implementation in https://github.com/apache/paimon-rust/pull/1124 and 
align the existing Python fallback with Java semantics.
   
   ## Changes
   
   - Evaluate AND/OR and ordered response.filter entries only on undecided 
rows, using Arrow filtering/scattering and a fast path when every row remains 
active.
   - Validate all children and typed literals before row evaluation, including 
ignored literals and unreachable branches. Accept Java's omitted/null lists on 
constant and null-test leaves; reject malformed empty compounds.
   - Enforce CAST character/byte widths, padding and default lengths; preserve 
the original executor's runtime class when field references are rebound.
   - For rebound NumericToString, print Java's DATE/TIME internal integers and 
decimal plain text. Explicitly reject unsupported rebound object formatting 
rather than authorize rows with Arrow-specific text.
   - Match Java's empty CONCAT and rejection of non-NULL binary predicate 
literals.
   - Add Native regression coverage for all existing string transforms, leaf 
functions, the validated CAST subset and all 13 calendar extractors across DATE 
and millisecond/microsecond/nanosecond TIMESTAMP.
   - Cover append, primary-key and data-evolution tables, hidden operands, 
authorization before masking/user predicates/LIMIT, and captured-policy Python 
fallback after wire serialization or reader setup failure.
   
   No new binding API is needed. Transform/filter execution stays in Rust core; 
Python continues to transport the existing REST grant. This does not claim all 
Java CAST executors.
   
   ## Dependency
   
   Depends on apache/paimon-rust#1124. This is a draft until that PR is merged. 
Native CI continues building Rust main; no fork or PR SHA is pinned. Strict new 
Native tests will need the merged Rust implementation.
   
   ## Verification
   
   - Reproduced the previous eager compound evaluation failure on a row that 
Java short-circuits.
   - 351 authorization/parser/validation/masking regression tests passed (2113 
subtests).
   - 247 strict Native/Python authorization tests passed using the locally 
built Rust binding (481 Native reads, 517 Native plans, 246 Native writes and 
commits).
   - Final transformed-filter suite: 141 passed, exercising 276 Native reads, 
285 Native plans, 141 Native writes and commits.
   - Actual Java oracle comparison: 103 existing 
transformed-filter/literal/width cases had zero differences; additional rebound 
DATE/TIME/decimal cases were checked against Java.
   - Flake8, changed-file whitespace checks and Python 3.6 syntax checks passed.
   - Independent reviews checked authorization enforcement, fallback policy 
capture, Java executor semantics and short-circuit regression coverage.
   


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