codope commented on code in PR #10352: URL: https://github.com/apache/hudi/pull/10352#discussion_r1585777410
########## hudi-common/src/main/java/org/apache/hudi/common/util/BaseFileUtils.java: ########## @@ -67,6 +70,61 @@ public static BaseFileUtils getInstance(HoodieFileFormat fileFormat) { throw new UnsupportedOperationException(fileFormat.name() + " format not supported yet."); } + /** + * Aggregate column range statistics across files in a partition. + * + * @param fileColumnRanges List of column range statistics for each file in a partition + */ + public static <T extends Comparable<T>> HoodieColumnRangeMetadata<T> getColumnRangeInPartition(@Nonnull List<HoodieColumnRangeMetadata<T>> fileColumnRanges) { + if (fileColumnRanges.size() == 1) { + // Only one parquet file, we can just return that range. + return fileColumnRanges.get(0); + } + // There are multiple files. Compute min(file_mins) and max(file_maxs) + return fileColumnRanges.stream() + .sequential() + .reduce(BaseFileUtils::mergeRanges).get(); + } + + private static <T extends Comparable<T>> HoodieColumnRangeMetadata<T> mergeRanges(HoodieColumnRangeMetadata<T> one, Review Comment: We follow the same approach as for colstats - https://github.com/apache/hudi/blob/f99b181a04e2ee549009d38deca7597219c4ce46/hudi-common/src/main/java/org/apache/hudi/metadata/HoodieMetadataPayload.java#L372 If the new record is for delete, then we ignore the previous one. If previous record is for delete, then we take the newer one, otherwise just merge the stats. I don't think we do event-time based merging for MDT. -- 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: commits-unsubscr...@hudi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org