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

   `decode_nullable_dv_ranges` read the `_DELETIONS_VECTORS_RANGES` item record
   positionally and always consumed a `_CARDINALITY` union index. Java added 
that
   field in 1.0.0 (#4699); 0.8.0-0.9.x declared the item as `RowType.of(STRING,
   INT, INT)`, so on an older file the decoder steals the next item's bytes and
   `IndexManifest::read_from_bytes` fails with `avro cursor: negative bytes
   length: -49`. The serde reader reads the same bytes fine, and the read is 
also
   on the commit path (`read_prev_index_entries`), not just scans.
   
   **Fix**: walk the writer's own nested field list, as
   `decode_nullable_binary_table_stats` does, peeling `array<["null", record]>` 
to
   reach the item, since array items keep their union. An item without `f0` is
   rejected rather than defaulted, `f0` being the map key.
   
   An index manifest is rewritten only by a commit that changes an index file, 
so
   such files are still live.
   


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