Guosmilesmile commented on code in PR #11662: URL: https://github.com/apache/iceberg/pull/11662#discussion_r1876059320
########## flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/sink/shuffle/SortKeySerializer.java: ########## @@ -52,8 +52,32 @@ class SortKeySerializer extends TypeSerializer<SortKey> { private final int size; private final Types.NestedField[] transformedFields; + private int version = SortKeySerializerSnapshot.CURRENT_VERSION; + private transient SortKey sortKey; + SortKeySerializer(Schema schema, SortOrder sortOrder, int version) { + this.version = version; + this.schema = schema; + this.sortOrder = sortOrder; + this.size = sortOrder.fields().size(); + + this.transformedFields = new Types.NestedField[size]; + for (int i = 0; i < size; ++i) { + SortField sortField = sortOrder.fields().get(i); + Types.NestedField sourceField = schema.findField(sortField.sourceId()); + Type resultType = sortField.transform().getResultType(sourceField.type()); + Types.NestedField transformedField = + Types.NestedField.of( + sourceField.fieldId(), + sourceField.isOptional(), + sourceField.name(), + resultType, + sourceField.doc()); + transformedFields[i] = transformedField; + } Review Comment: @pvary Thank you very much for your suggestion. Since all member variables are final, they can only be initialized through the constructor. Most of the initialization for SortKeySerializer uses the latest version, and only when restoring the serializer do we need to pass in the version number during initialization. Since the variables are final, I cannot extract a common method. Therefore, I added a new constructor. Another option is to remove the newly added constructor and use a setVersion method for injection. Because the version number is only needed for initialization in one place. Which approach do you think is more appropriate? -- 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: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org