private static Domain domainForStatistics(
      io.trino.spi.type.Type type,
      @Nullable Object lowerBound,
      @Nullable Object upperBound,
      boolean mayContainNulls) {
    Type icebergType = toIcebergType(type);
    if (lowerBound == null && upperBound == null) {
      return Domain.create(ValueSet.all(type), mayContainNulls);
    }

    Range statisticsRange;
    if (lowerBound != null && upperBound != null) {
      statisticsRange =
          Range.range(
              type,
              convertIcebergValueToTrino(icebergType, lowerBound),
              true,
              convertIcebergValueToTrino(icebergType, upperBound),
              true);
    } else if (upperBound != null) {
      statisticsRange =
          Range.lessThanOrEqual(type, convertIcebergValueToTrino(icebergType, upperBound));
    } else {
      statisticsRange =
          Range.greaterThanOrEqual(type, convertIcebergValueToTrino(icebergType, lowerBound));
    }
    return Domain.create(ValueSet.ofRanges(statisticsRange), mayContainNulls);
  }
Iceberg original IcebergSplitSource has some problems for mixed-format table, such as iceberg
version, table type.
amoro-format-mixed/amoro-mixed-trino/src/main/java/org/apache/amoro/trino/unkeyed/IcebergSplitSource.java