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

   ### Purpose
   
   Move existing PyPaimon numeric REST authorization filters and column masks 
onto the Native path, and correct the Python execution path to Java semantics.
   
   Depends on apache/paimon-rust#1125. Kept as draft until that Rust change is 
available on main: CI still builds Rust main and is not pinned to a fork or PR 
branch.
   
   ### Changes
   
   - Share Java numeric conversions between schema-evolution reads and 
authorization CASTs: integer narrowing, strict integer/Boolean text parsing, 
DECIMAL HALF_UP rounding and NULL precision overflow, compact/wide decimal 
floating conversion, and decimal plain strings.
   - Preserve Java's original CAST executor when field references are rebound. 
Keep Number and Decimal runtime classes separate, including original 
longValue/doubleValue selection and integer-to-Boolean longValue conversion.
   - Preserve the existing schema-evolution integer-to-DECIMAL capability 
boundary. Boolean-to-DECIMAL and new CAST categories outside the existing 
Python subset are excluded.
   - Add actual Java golden vectors: 68 groups and 628 rows, with boundary 
results, errors, source rebinding and predicate evaluation order.
   - Add 162 strict Native integration cases across Append, primary-key and 
Data Evolution tables, covering masks, hidden dependencies, filtering before 
LIMIT and per-row short circuiting. Python fallback is blocked.
   - Add a real old Parquet LargeUtf8 regression, including fractional integer 
text and NULL values.
   
   ### Verification
   
   - After rebasing on current Paimon master, authorization, shared casting and 
nested / primary-key / append schema-evolution reader tests: 684 passed, 2134 
subtests passed.
   - Native numeric, schema-evolution, decimal and authorization coverage: 477 
distinct cases covered. After correcting the new disposable Parquet fixture's 
URL handling and rebuilding its split from updated metadata, its focused rerun 
plus the three-mode short-circuit suite passed (10 tests). The other 476 cases 
passed in the full run.
   - Native checks exercise real Rust planning, reading, writing and committing.
   - Flake8 passed; all 981 Python source license headers passed; changed files 
parse as Python 3.6 syntax.
   
   The golden results were generated with Paimon Java CastExecutors / 
PredicateRemapper and independently compared. Double-to-Decimal text was also 
verified on Java 8.
   


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