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

   ### Purpose
   
   Preserve Java string predicate operators when their pattern is empty. Search 
refinement uses the predicate operator, so replacing an empty `contains` or 
`endsWith` with `IsNotNull` incorrectly accepts indexed candidates when 
`global-index.filter.refine-from-data=false`.
   
   - Retain `StartsWith`, `EndsWith` and `Contains` leaves for empty string 
literals.
   - Match Java `LikeOptimization`: empty and all-percent LIKE patterns remain 
`Like`; nonempty literal/prefix/suffix/substring optimizations remain unchanged.
   - Keep normalization in Rust core. The Python binding continues forwarding 
predicates through `PredicateBuilder`.
   - Add core and binding regressions, and real BTree/bitmap full-text queries 
with refinement on/off, NULL/empty labels and complete/partial index coverage. 
An empty `StartsWith` control remains exact.
   
   Paired Python REST regressions are in 
https://github.com/apache/paimon/pull/10494. Its CI continues installing Rust 
main.
   
   ### Verification
   
   - Before the fix, the 40-case Python comparison matrix reproduced 20 
failures with refinement disabled and 20 passing controls with refinement 
enabled.
   - Rust predicate unit tests: 107 passed.
   - Rust full-text search tests: 25 passed, including the new 48-scenario 
search matrix.
   - Python binding predicate tests: 76 passed.
   - Clippy 1.98.0 for core/bindings with `fulltext,vortex` and `-D warnings`: 
passed.
   - Rustfmt and diff whitespace checks: passed. Independent source review 
found no actionable regressions.
   - Java parity checked against `PredicateBuilder`, `LikeOptimization` and 
`FilteredRowIdReader` source; no Java engine interoperability run.
   


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