This is an automated email from the ASF dual-hosted git repository.
sivabalan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git
The following commit(s) were added to refs/heads/master by this push:
new ffa3a3b2f9d [HUDI-9269] Handle tight bound field in columns stats
metadata (#13117)
ffa3a3b2f9d is described below
commit ffa3a3b2f9d914d6444bb6168db489b3556de225
Author: Sagar Sumit <[email protected]>
AuthorDate: Thu Apr 10 07:34:24 2025 +0530
[HUDI-9269] Handle tight bound field in columns stats metadata (#13117)
---
.../org/apache/hudi/metadata/HoodieTableMetadataUtil.java | 11 +++++++----
.../java/org/apache/hudi/metadata/MetadataPartitionType.java | 10 ++++++----
2 files changed, 13 insertions(+), 8 deletions(-)
diff --git
a/hudi-common/src/main/java/org/apache/hudi/metadata/HoodieTableMetadataUtil.java
b/hudi-common/src/main/java/org/apache/hudi/metadata/HoodieTableMetadataUtil.java
index 887fe687306..e574b8bc11c 100644
---
a/hudi-common/src/main/java/org/apache/hudi/metadata/HoodieTableMetadataUtil.java
+++
b/hudi-common/src/main/java/org/apache/hudi/metadata/HoodieTableMetadataUtil.java
@@ -171,6 +171,7 @@ import static
org.apache.hudi.common.util.ValidationUtils.checkArgument;
import static org.apache.hudi.common.util.ValidationUtils.checkState;
import static
org.apache.hudi.index.expression.HoodieExpressionIndex.EXPRESSION_OPTION;
import static
org.apache.hudi.index.expression.HoodieExpressionIndex.IDENTITY_TRANSFORM;
+import static
org.apache.hudi.metadata.HoodieMetadataPayload.COLUMN_STATS_FIELD_IS_TIGHT_BOUND;
import static
org.apache.hudi.metadata.HoodieMetadataPayload.RECORD_INDEX_MISSING_FILEINDEX_FALLBACK;
import static
org.apache.hudi.metadata.HoodieTableMetadata.EMPTY_PARTITION_NAME;
import static
org.apache.hudi.metadata.HoodieTableMetadata.NON_PARTITIONED_NAME;
@@ -2793,7 +2794,7 @@ public class HoodieTableMetadataUtil {
.max(Comparator.naturalOrder())
.orElse(null);
- return
HoodieMetadataColumnStats.newBuilder(HoodieMetadataPayload.METADATA_COLUMN_STATS_BUILDER_STUB.get())
+ HoodieMetadataColumnStats.Builder columnStatsBuilder =
HoodieMetadataColumnStats.newBuilder(HoodieMetadataPayload.METADATA_COLUMN_STATS_BUILDER_STUB.get())
.setFileName(newColumnStats.getFileName())
.setColumnName(newColumnStats.getColumnName())
.setMinValue(wrapValueIntoAvro(minValue))
@@ -2802,9 +2803,11 @@ public class HoodieTableMetadataUtil {
.setNullCount(prevColumnStats.getNullCount() +
newColumnStats.getNullCount())
.setTotalSize(prevColumnStats.getTotalSize() +
newColumnStats.getTotalSize())
.setTotalUncompressedSize(prevColumnStats.getTotalUncompressedSize() +
newColumnStats.getTotalUncompressedSize())
- .setIsDeleted(newColumnStats.getIsDeleted())
- .setIsTightBound(newColumnStats.getIsTightBound())
- .build();
+ .setIsDeleted(newColumnStats.getIsDeleted());
+ if (newColumnStats.hasField(COLUMN_STATS_FIELD_IS_TIGHT_BOUND)) {
+ columnStatsBuilder.setIsTightBound(newColumnStats.getIsTightBound());
+ }
+ return columnStatsBuilder.build();
}
public static Map<String, HoodieMetadataFileInfo>
combineFileSystemMetadata(HoodieMetadataPayload older, HoodieMetadataPayload
newer) {
diff --git
a/hudi-common/src/main/java/org/apache/hudi/metadata/MetadataPartitionType.java
b/hudi-common/src/main/java/org/apache/hudi/metadata/MetadataPartitionType.java
index f5e15ce5ac9..895623b21dd 100644
---
a/hudi-common/src/main/java/org/apache/hudi/metadata/MetadataPartitionType.java
+++
b/hudi-common/src/main/java/org/apache/hudi/metadata/MetadataPartitionType.java
@@ -305,7 +305,7 @@ public enum MetadataPartitionType {
checkArgument(record.getSchema().getField(SCHEMA_FIELD_ID_COLUMN_STATS)
== null,
String.format("Valid %s record expected for type: %s",
SCHEMA_FIELD_ID_COLUMN_STATS,
MetadataPartitionType.COLUMN_STATS.getRecordType()));
} else {
- payload.columnStatMetadata =
HoodieMetadataColumnStats.newBuilder(METADATA_COLUMN_STATS_BUILDER_STUB.get())
+ HoodieMetadataColumnStats.Builder columnStatsBuilder =
HoodieMetadataColumnStats.newBuilder(METADATA_COLUMN_STATS_BUILDER_STUB.get())
.setFileName(columnStatsRecord.get(COLUMN_STATS_FIELD_FILE_NAME).toString())
.setColumnName(columnStatsRecord.get(COLUMN_STATS_FIELD_COLUMN_NAME).toString())
// AVRO-2377 1.9.2 Modified the type of
org.apache.avro.Schema#FIELD_RESERVED to Collections.unmodifiableSet.
@@ -317,9 +317,11 @@ public enum MetadataPartitionType {
.setNullCount((Long)
columnStatsRecord.get(COLUMN_STATS_FIELD_NULL_COUNT))
.setTotalSize((Long)
columnStatsRecord.get(COLUMN_STATS_FIELD_TOTAL_SIZE))
.setTotalUncompressedSize((Long)
columnStatsRecord.get(COLUMN_STATS_FIELD_TOTAL_UNCOMPRESSED_SIZE))
- .setIsDeleted((Boolean)
columnStatsRecord.get(COLUMN_STATS_FIELD_IS_DELETED))
- .setIsTightBound((Boolean)
columnStatsRecord.get(COLUMN_STATS_FIELD_IS_TIGHT_BOUND))
- .build();
+ .setIsDeleted((Boolean)
columnStatsRecord.get(COLUMN_STATS_FIELD_IS_DELETED));
+ if (columnStatsRecord.hasField(COLUMN_STATS_FIELD_IS_TIGHT_BOUND)) {
+ columnStatsBuilder.setIsTightBound((Boolean)
columnStatsRecord.get(COLUMN_STATS_FIELD_IS_TIGHT_BOUND));
+ }
+ payload.columnStatMetadata = columnStatsBuilder.build();
}
}