laskoviymishka opened a new pull request, #3232:
URL: https://github.com/apache/iceberg-rust/pull/3232

   ## Which issue does this PR close?
   
   Add DeleteVector::serialize, which produces a deletion-vector-v1 blob that 
DeleteVector::deserialize reads back (#2580). It frames the roaring treemap as 
[length][magic][vector][crc], matching what deserialize reads: the roaring 
portable 64-bit directory (a little-endian bitmap count followed by ascending 
u32-keyed bitmaps), a big-endian length prefix covering the magic and vector, 
and a big-endian CRC-32 over the same bytes. The vector is written as-is with 
sparse-key encoding rather than run-length-encoded, so for the same positions 
the bytes need not match Iceberg-Java's BitmapPositionDeleteIndex, which 
run-optimizes and writes dense keys; both encodings are spec-conformant and 
mutually decodable. This emits the raw blob only; wrapping it in a Puffin Blob 
with the snapshot and sequence-number properties is left to a later change.
   
   Fold the framing into a single implementation shared by serialize and the 
tests, so the encode paths no longer duplicate the layout: the test-only 
frame_dv_blob and the encode_dv_blob helpers now delegate to serialize, and the 
length prefix uses a checked u32 conversion instead of a truncating cast. 
Round-trip tests cover an empty vector, a single position, a dense 
single-container run, positions spanning multiple 2^32 containers, and a 
run-optimized dense range, plus golden assertions on the magic offset, the 
length prefix, and CRC validation, and a byte-stability test that re-serializes 
a decoded blob to guard against container-type normalization on the round trip.
   


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