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();
     }
   }
 

Reply via email to