public static boolean isEqual()

in common/src/main/java/org/apache/comet/parquet/TypeUtil.java [346:377]


  public static boolean isEqual(Type requested, Type actual) {
    if (requested == null && actual == null) {
      return true;
    }
    if (requested == null || actual == null) {
      return false;
    }
    if (requested.isPrimitive() && actual.isPrimitive()) {
      return requested.asPrimitiveType().equals(actual.asPrimitiveType());
    } else if (!requested.isPrimitive() && !actual.isPrimitive()) {
      if (equals(requested, actual)) {
        // GroupType.equals also checks if LogicalTypeAnnotation is the same.
        // But it really is not necessary here.
        List<Type> requestedFields = requested.asGroupType().getFields();
        List<Type> actualFields = requested.asGroupType().getFields();
        for (Type field : requestedFields) {
          Optional<Type> optActualField =
              actualFields.stream().filter(f -> f.getName().equals(field.getName())).findFirst();
          if (optActualField.isPresent()) {
            if (!isEqual(field, optActualField.get())) {
              return false;
            }
          }
        }
      } else {
        return false;
      }
    } else {
      return false; // one is a primitive type and the other is not.
    }
    return true;
  }