anoopj opened a new issue, #3503:
URL: https://github.com/apache/iceberg-rust/issues/3503

   Follow-up to #3483. The spec lists date -> timestamp and date -> 
timestamp_ns as valid v3+ primitive promotions (timestamptz/timestamptz_ns are 
explicitly not allowed). As with int -> long, the Avro manifest format does not 
store the type of lower/upper bounds and promotion does not rewrite them, so a 
value written under date must be decoded and compared using its written type.
   
    iceberg-rust only handles int -> long and float -> double:
   
   Even though this is a latent bug, users don't hit this because iceberg-rust 
cannot produce this promotion itself today (no column-type update in core), so 
no user hits it via a round trip. But a date column promoted to timestamp by a 
v3-capable engine is a valid table that iceberg-rust reads, and such a read 
would compare date-days against timestamp-micros: wrong pruning and, for a 
promoted partition source, detached deletes, pretty much the same class of 
silent mismatch #3483 fixes for int/float.
   
   ## Possible fix
   
    Teach the value/bound promotion path about the date promotions, ideally as 
part of moving bound promotion into the reader (the sibling follow-up), so 
there is one promotion point
   
   ## Tests
   
   bound pruning where a promoted date column's bounds decide a file; 
equality-delete / deletion-vector matching across a date -> timestamp 
promotion; and an overflow case for timestamp_ns asserting a runtime error 
rather than a wrapped value.
   


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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to