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]
