hudi-agent commented on code in PR #19810:
URL: https://github.com/apache/hudi/pull/19810#discussion_r3927507710
##########
hudi-common/src/main/java/org/apache/hudi/common/schema/HoodieSchema.java:
##########
@@ -2953,23 +2954,34 @@ private static Schema createSchema(String name) {
return blobSchema;
}
- private static List<Schema.Field> createBlobFields() {
- Schema bytesField = Schema.create(Schema.Type.BYTES);
+ private static Schema createReferenceSchema() {
Schema referenceField = Schema.createRecord(EXTERNAL_REFERENCE, null,
null, false);
List<Schema.Field> referenceFields = Arrays.asList(
new Schema.Field(EXTERNAL_REFERENCE_PATH,
Schema.create(Schema.Type.STRING), null, null),
- new Schema.Field(EXTERNAL_REFERENCE_OFFSET,
AvroSchemaUtils.createNullableSchema(Schema.create(Schema.Type.LONG)), null,
null),
- new Schema.Field(EXTERNAL_REFERENCE_LENGTH,
AvroSchemaUtils.createNullableSchema(Schema.create(Schema.Type.LONG)), null,
null),
+ new Schema.Field(EXTERNAL_REFERENCE_OFFSET,
nullable(Schema.create(Schema.Type.LONG)), null, null),
+ new Schema.Field(EXTERNAL_REFERENCE_LENGTH,
nullable(Schema.create(Schema.Type.LONG)), null, null),
new Schema.Field(EXTERNAL_REFERENCE_IS_MANAGED,
Schema.create(Schema.Type.BOOLEAN), null, null)
);
referenceField.setFields(referenceFields);
+ return referenceField;
+ }
+ private static List<Schema.Field> createBlobFields() {
+ Schema bytesField = Schema.create(Schema.Type.BYTES);
return Arrays.asList(
new Schema.Field(TYPE, Schema.createEnum("blob_storage_type", null,
null, Arrays.asList(INLINE, OUT_OF_LINE)), null, null),
- new Schema.Field(INLINE_DATA_FIELD,
AvroSchemaUtils.createNullableSchema(bytesField), null,
Schema.Field.NULL_DEFAULT_VALUE),
- new Schema.Field(EXTERNAL_REFERENCE,
AvroSchemaUtils.createNullableSchema(referenceField), null,
Schema.Field.NULL_DEFAULT_VALUE)
+ new Schema.Field(INLINE_DATA_FIELD, nullable(bytesField), null,
Schema.Field.NULL_DEFAULT_VALUE),
+ new Schema.Field(EXTERNAL_REFERENCE, nullable(REFERENCE_SCHEMA),
null, Schema.Field.NULL_DEFAULT_VALUE)
);
}
+
+ /**
+ * Wraps the given schema into the canonical Avro nullable union {@code
[null, schema]}. None of the blob
+ * field types is NULL, so no further validation is needed here.
+ */
+ private static Schema nullable(Schema schema) {
Review Comment:
🤖 nit: `nullable` reads as an adjective (a property check) rather than a
factory — could you rename it to `wrapNullable` or `createNullableUnion` so
call sites like `nullable(bytesField)` are self-explanatory?
<sub><i>⚠️ AI-generated; verify before applying. React 👍/👎 to flag
quality.</i></sub>
--
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]