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]
