diff --git a/kernel/kernel-api/src/main/java/io/delta/kernel/types/StructField.java b/kernel/kernel-api/src/main/java/io/delta/kernel/types/StructField.java index 64a2a6f3fd..82f05eb0cf 100644 --- a/kernel/kernel-api/src/main/java/io/delta/kernel/types/StructField.java +++ b/kernel/kernel-api/src/main/java/io/delta/kernel/types/StructField.java @@ -108,31 +108,6 @@ public String toString() { "StructField(name=%s,type=%s,nullable=%s,metadata=%s)", name, dataType, nullable, metadata); } - private List> getNestedCollatedFields(DataType parent, String path) { - List> nestedCollatedFields = new ArrayList<>(); - if (parent instanceof StringType) { - StringType stringType = (StringType) parent; - if (!stringType - .getCollationIdentifier() - .equals(CollationIdentifier.fromString("SPARK.UTF8_BINARY"))) { - nestedCollatedFields.add( - new Tuple2<>( - path, ((StringType) parent).getCollationIdentifier().toStringWithoutVersion())); - } - } else if (parent instanceof MapType) { - nestedCollatedFields.addAll( - getNestedCollatedFields(((MapType) parent).getKeyType(), path + ".key")); - nestedCollatedFields.addAll( - getNestedCollatedFields(((MapType) parent).getValueType(), path + ".value")); - } else if (parent instanceof ArrayType) { - nestedCollatedFields.addAll( - getNestedCollatedFields(((ArrayType) parent).getElementType(), path + ".element")); - } - // We didn't check for StructType because we store the StringType's - // collation information in the nearest ancestor StructField's metadata when serializing. - return nestedCollatedFields; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -157,6 +132,31 @@ public StructField withNewMetadata(FieldMetadata metadata) { return new StructField(name, dataType, nullable, metadata); } + private List> getNestedCollatedFields(DataType parent, String path) { + List> nestedCollatedFields = new ArrayList<>(); + if (parent instanceof StringType) { + StringType stringType = (StringType) parent; + if (!stringType + .getCollationIdentifier() + .equals(CollationIdentifier.fromString("SPARK.UTF8_BINARY"))) { + nestedCollatedFields.add( + new Tuple2<>( + path, ((StringType) parent).getCollationIdentifier().toStringWithoutVersion())); + } + } else if (parent instanceof MapType) { + nestedCollatedFields.addAll( + getNestedCollatedFields(((MapType) parent).getKeyType(), path + ".key")); + nestedCollatedFields.addAll( + getNestedCollatedFields(((MapType) parent).getValueType(), path + ".value")); + } else if (parent instanceof ArrayType) { + nestedCollatedFields.addAll( + getNestedCollatedFields(((ArrayType) parent).getElementType(), path + ".element")); + } + // We didn't check for StructType because we store the StringType's + // collation information in the nearest ancestor StructField's metadata when serializing. + return nestedCollatedFields; + } + /** Fetches collation metadata from nested collated fields. */ private FieldMetadata fetchCollationMetadata() { List> nestedCollatedFields = getNestedCollatedFields(dataType, name);