jackylee-ch opened a new pull request, #10119:
URL: https://github.com/apache/paimon/pull/10119

   ### Purpose
   
   The WHERE parser (`table read --where`, 
`MultimodalTable.query().where(...)`) cast DECIMAL literals to `float` and left 
DATE/TIME literals as strings:
   
   - `DECIMAL` reads back as `decimal.Decimal`, so `price = 99.99` compared 
`Decimal` to `float` and **silently returned zero rows**.
   - `DATE`/`TIME` raised in the Arrow `equal` kernel instead of filtering.
   
   `_cast_literal` now casts DECIMAL to `decimal.Decimal` and DATE/TIME to 
`datetime.date`/`time`, matching the sibling `predicate_json_parser`. Since the 
pushed-down filter binds the literal's own scale, a decimal is rescaled to the 
column scale when exact, else kept (`50` matches `50.00`; a finer `99.999` 
matches nothing, not rounded); malformed decimals re-raise `ValueError`. 
`TIMESTAMP` stays out of scope (LOCAL TIME ZONE reads back tz-aware).
   
   ### Tests
   
   `WhereParserScanTest` writes a `DECIMAL(10,2)`/`DATE`/`TIME` table and 
asserts each WHERE returns the right rows, including integer and over-precise 
decimals; on master the decimal case returns `[]` and date/time raise 
`ArrowNotImplementedError`.
   
   Written with Claude Code; verification is mine.
   


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