RussellSpitzer commented on code in PR #18252:
URL: https://github.com/apache/iceberg/pull/18252#discussion_r4339005139
##########
api/src/main/java/org/apache/iceberg/types/Types.java:
##########
@@ -1155,6 +1155,127 @@ private Map<Integer, NestedField> lazyFieldsById() {
}
}
+ public static final class FileType extends NestedType {
+ public static final String NAME = "file";
+ public static final int NUM_NESTED_FIELDS = 6;
+
+ private static final String URI = "uri";
+ private static final String OFFSET = "offset";
+ private static final String SIZE = "size";
+ private static final String CONTENT_TYPE = "content_type";
+ private static final String CHECKSUM = "checksum";
+ private static final String INLINE = "inline";
+
+ public static FileType of(int baseId) {
+ return new FileType(baseId);
+ }
+
+ private final int baseId;
+ private final List<NestedField> fields;
+
+ private FileType(int baseId) {
+ this.baseId = baseId;
+ this.fields =
+ ImmutableList.of(
+ NestedField.optional(baseId + 1, URI, StringType.get()),
+ NestedField.optional(baseId + 2, OFFSET, LongType.get()),
+ NestedField.optional(baseId + 3, SIZE, LongType.get()),
+ NestedField.optional(baseId + 4, CONTENT_TYPE, StringType.get()),
+ NestedField.optional(baseId + 5, CHECKSUM, StringType.get()),
+ NestedField.optional(baseId + 6, INLINE, BinaryType.get()));
Review Comment:
I decided to do this a little differently and make @danielcweeks 's comment
a bit more clear as well. We now only have a "transient" fields just like in
struct type which is only set lazily and completely deterministically based on
"baseId". There is no state serialized with the FileType object "except" baseId
which fixes the kryo issue 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]