Dear all,
while implementing v3 support in Rust, I noticed an unhandled case in Java,
which, Java beeing Java, leads to a NullPointerException.

In V1 tables, existing_rows_count and added_rows_count is optional. When
parsed into a GenericManifestFile, it is thus parsed as optional.

When this (data) manifest is now added to a new Snapshot in a V3 table, we
get a NullPointerException.

I talked with Russel and we believe the proper way forward is to fail via a
validation. Please note this only affects very old V1 tables, as newer V1
clients produce these fields.

More details, the proposed fix, and a test are in this PR:
https://github.com/apache/iceberg/pull/14064

Do we need a Vote for this? Also, we should probably put more work into the
RepairMetadata PR, as this would be the way to fix it.

Best,
Christian

Reply via email to