Fix incorrect propagation of field's nullability into its inner list #3352
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The arrow pass of the codegen wrongly attributes the nullability of a field to its inner entity (whether it's a list or fixed-size list), which leads to corrupt datatypes being generated.
This generally doesn't cause any issues in practice because one cannot trust what the datatype says anyway, and nullability is instead checked by directly looking at the bitmap itself at runtime.
But, it turns out that the C++ backend completely ignore this piece of metadata at the moment, and therefore ends up generating datatypes that don't match what the Rust & Python backends generate, leading to broken roundtrips.
Fix the semantic pass so everyone agrees once again.
What
Checklist