@Override
  public Type struct(Types.StructType struct, Iterable<Type> futures) {
    List<Types.NestedField> fields = struct.fields();
    int length = struct.fields().size();

    List<Types.NestedField> newFields = Lists.newArrayListWithExpectedSize(length);
    Iterator<Type> types = futures.iterator();
    for (int i = 0; i < length; i += 1) {
      Types.NestedField field = fields.get(i);
      Type type = types.next();
      if (field.isOptional()) {
        newFields.add(
            Types.NestedField.optional(
                field.fieldId(), changeName(field.name()), type, field.doc()));
      } else {
        newFields.add(
            Types.NestedField.required(
                field.fieldId(), changeName(field.name()), type, field.doc()));
      }
      if (fieldNameSet.contains(newFields.get(i).name())) {
        throw new IllegalArgumentException(
            "Multiple fields' name will be changed to " + newFields.get(i).name());
      }
      fieldNameSet.add(newFields.get(i).name());
    }

    return Types.StructType.of(newFields);
  }
Change the field name of a schema, change to uppercase or lowercase.

@param changeType TO_UPPERCASE or TO_LOWERCASE
amoro-format-mixed/amoro-mixed-hive/src/main/java/org/apache/amoro/hive/utils/ChangeFieldName.java