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

   ### Purpose
   
   PyPaimon already accepts numeric, decimal, Boolean and integer-text REST 
authorization CASTs, but Native planning rejects many of them. Enable this 
existing subset in Rust core using Java CAST semantics, so those filters and 
column masks can stay on the Native path.
   
   ### Changes
   
   - Share numeric conversions and declared character widths between 
authorization expressions and schema-evolution readers.
   - Match Java integer truncation, saturation and narrowing; strict 
integer/Boolean text parsing; DECIMAL HALF_UP rounding and NULL on precision 
overflow; compact/wide decimal floating conversion; and decimal plain strings.
   - Reuse the existing integer default parser and BMP decimal-digit table 
without changing Format Table behavior.
   - Normalize LargeUtf8/Utf8View before typed access, including sliced 
old-file columns.
   - Validate original CAST source metadata for masks as well as filters. 
Refuse potentially nullable decimal masks on NOT NULL targets while preserving 
identity DECIMAL masks.
   - Add permanent vectors from actual Java CastExecutors / PredicateRemapper: 
68 groups and 628 input rows, including ordered predicate evaluation and source 
rebinding.
   
   No new Python binding API. Boolean-to-DECIMAL and additional CAST categories 
outside the existing Python subset remain outside this change. Rebound source 
types continue to require the Python executor.
   
   ### Verification
   
   - `cargo test --locked -p paimon table::query_auth --lib`: 53 passed.
   - `cargo test --locked -p paimon arrow::evolution --lib`: 26 passed.
   - Nested evolution: 29 passed; string transforms: 5 passed; integer 
defaults: 2 passed.
   - `cargo test --locked -p paimon --test rest_catalog_test query_auth`: 38 
passed.
   - `cargo +1.98.0 fmt --all -- --check` and full workspace Clippy with 
`--features fulltext,vortex -- -D warnings` passed.
   - Built the Python binding and verified a real LargeUtf8 old Parquet read 
with Python fallback blocked.
   - PyPaimon paired Native integration regressions are being finalized in the 
companion PR; its CI continues to build Rust main.
   


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