mxm commented on code in PR #12049:
URL: https://github.com/apache/iceberg/pull/12049#discussion_r1937936596
##########
flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetWriters.java:
##########
@@ -498,6 +498,12 @@ private static class RowDataWriter extends
ParquetValueWriters.StructWriter<RowD
@Override
protected Object get(RowData struct, int index) {
+ // Be sure to check for null values, even if the field is required.
Without an explicit null
+ // check, BinaryRowData will ignore the null flag and parse random bytes
as actual values.
+ // This will produce incorrect writes instead of failing with a
NullPointerException.
+ if (struct.isNullAt(index)) {
+ return null;
+ }
Review Comment:
You are right. I revised the approach because it was too easy to miss
instances. I'm instead wrapping RowData#createFieldGetter to make sure to
null-check also for required / NonNull types. I'll raise an issue on the Flink
side as well.
--
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]