This is an automated email from the ASF dual-hosted git repository.

timbrown pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-xtable.git


The following commit(s) were added to refs/heads/main by this push:
     new 737f25c3 Handle null stats case
737f25c3 is described below

commit 737f25c33c14366eed0c044618364af1d3a33101
Author: Timothy Brown <t...@onehouse.ai>
AuthorDate: Sun Jul 7 21:52:22 2024 -0500

    Handle null stats case
---
 .../main/java/org/apache/xtable/delta/DeltaStatsExtractor.java |  6 ++++++
 .../java/org/apache/xtable/delta/TestDeltaStatsExtractor.java  | 10 ++++++++++
 2 files changed, 16 insertions(+)

diff --git 
a/xtable-core/src/main/java/org/apache/xtable/delta/DeltaStatsExtractor.java 
b/xtable-core/src/main/java/org/apache/xtable/delta/DeltaStatsExtractor.java
index 572cc104..a6f74cee 100644
--- a/xtable-core/src/main/java/org/apache/xtable/delta/DeltaStatsExtractor.java
+++ b/xtable-core/src/main/java/org/apache/xtable/delta/DeltaStatsExtractor.java
@@ -21,6 +21,7 @@ package org.apache.xtable.delta;
 import java.io.IOException;
 import java.util.ArrayDeque;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -36,6 +37,8 @@ import lombok.Builder;
 import lombok.NoArgsConstructor;
 import lombok.Value;
 
+import org.apache.commons.lang3.StringUtils;
+
 import org.apache.spark.sql.delta.actions.AddFile;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -173,6 +176,9 @@ public class DeltaStatsExtractor {
   }
 
   public List<ColumnStat> getColumnStatsForFile(AddFile addFile, 
List<InternalField> fields) {
+    if (StringUtils.isEmpty(addFile.stats())) {
+      return Collections.emptyList();
+    }
     // TODO: Additional work needed to track maps & arrays.
     try {
       DeltaStats deltaStats = MAPPER.readValue(addFile.stats(), 
DeltaStats.class);
diff --git 
a/xtable-core/src/test/java/org/apache/xtable/delta/TestDeltaStatsExtractor.java
 
b/xtable-core/src/test/java/org/apache/xtable/delta/TestDeltaStatsExtractor.java
index ddc6defc..dc313b67 100644
--- 
a/xtable-core/src/test/java/org/apache/xtable/delta/TestDeltaStatsExtractor.java
+++ 
b/xtable-core/src/test/java/org/apache/xtable/delta/TestDeltaStatsExtractor.java
@@ -23,6 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.IOException;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -183,6 +184,15 @@ public class TestDeltaStatsExtractor {
     assertEquals(expected, actual);
   }
 
+  @Test
+  void convertNullStatsToInternalRepresentation() {
+    List<InternalField> fields = getSchemaFields();
+    AddFile addFile = new AddFile("file://path/to/file", null, 0, 0, true, 
null, null, null);
+    DeltaStatsExtractor extractor = DeltaStatsExtractor.getInstance();
+    List<ColumnStat> actual = extractor.getColumnStatsForFile(addFile, fields);
+    assertEquals(Collections.emptyList(), actual);
+  }
+
   private List<InternalField> getSchemaFields() {
     return Arrays.asList(
         InternalField.builder()

Reply via email to