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

   ## Summary
   
   Align PyPaimon's existing DECIMAL schema-evolution reads with Java and 
Native, and add REST parity regressions.
   
   - FLOAT/DOUBLE convert through Java decimal text and HALF_UP rounding. FLOAT 
first widens to DOUBLE, so FLOAT `1.005` yields `1.00` while DOUBLE `1.005` 
yields `1.01` at scale 2.
   - Decimal text supports scientific notation with Java rounding and precision 
checks. Valid overflow returns NULL after rounding; invalid text and 
unsupported Java scale ranges fail the read.
   - DECIMAL-to-DECIMAL changes enforce target precision for scale decreases, 
increases and equal scales. The previous path could retain out-of-range values 
or produce `0.00` from floating overflow.
   - Isolate conversion from caller `decimal` contexts, including mutable 
DefaultContext, rounding traps and exponent limits.
   - Share the existing Java floating-point text utility between partition 
paths and decimal conversion.
   - Test old/new Parquet files across append, PK and data evolution; 
projected-out filter columns, single-value stats, NULLs, ROW/ARRAY/MAP values, 
and nested leaf projection. Native tests fail if planning or reading falls back 
to Python.
   
   Depends on https://github.com/apache/paimon-rust/pull/1118. This PR is draft 
because Native CI builds Rust main; the locally rebuilt binding already passes 
these tests.
   
   ## Verification
   
   - Original Python regressions: 14 failed before the decimal repair; 3 
context regressions failed before context isolation.
   - Focused cast/schema-evolution/schema-manager suites: 228 passed, 32 
subtests passed.
   - Native REST decimal parity suite: 38 passed; 89 Native plans/reads and 62 
Native writes/commits exercised.
   - Changed-file Flake8 passed.
   - All changed files parse with Python 3.6 grammar.
   - Independent review verified Java rounding, overflow, context independence 
and exponent validation. Reference outputs were obtained from actual Java 
CastExecutors; the Rust parser also passed 2,025 Java differential cases.
   


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