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]
