Skip to content

Commit 737f25c

Browse files
Handle null stats case
1 parent bd627b5 commit 737f25c

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

xtable-core/src/main/java/org/apache/xtable/delta/DeltaStatsExtractor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.io.IOException;
2222
import java.util.ArrayDeque;
2323
import java.util.Arrays;
24+
import java.util.Collections;
2425
import java.util.HashMap;
2526
import java.util.HashSet;
2627
import java.util.List;
@@ -36,6 +37,8 @@
3637
import lombok.NoArgsConstructor;
3738
import lombok.Value;
3839

40+
import org.apache.commons.lang3.StringUtils;
41+
3942
import org.apache.spark.sql.delta.actions.AddFile;
4043

4144
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -173,6 +176,9 @@ private void insertValueAtPath(Map<String, Object> jsonObject, String[] pathPart
173176
}
174177

175178
public List<ColumnStat> getColumnStatsForFile(AddFile addFile, List<InternalField> fields) {
179+
if (StringUtils.isEmpty(addFile.stats())) {
180+
return Collections.emptyList();
181+
}
176182
// TODO: Additional work needed to track maps & arrays.
177183
try {
178184
DeltaStats deltaStats = MAPPER.readValue(addFile.stats(), DeltaStats.class);

xtable-core/src/test/java/org/apache/xtable/delta/TestDeltaStatsExtractor.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import java.io.IOException;
2525
import java.util.Arrays;
26+
import java.util.Collections;
2627
import java.util.HashMap;
2728
import java.util.HashSet;
2829
import java.util.List;
@@ -183,6 +184,15 @@ void convertStatsToInternalRepresentation() throws IOException {
183184
assertEquals(expected, actual);
184185
}
185186

187+
@Test
188+
void convertNullStatsToInternalRepresentation() {
189+
List<InternalField> fields = getSchemaFields();
190+
AddFile addFile = new AddFile("file://path/to/file", null, 0, 0, true, null, null, null);
191+
DeltaStatsExtractor extractor = DeltaStatsExtractor.getInstance();
192+
List<ColumnStat> actual = extractor.getColumnStatsForFile(addFile, fields);
193+
assertEquals(Collections.emptyList(), actual);
194+
}
195+
186196
private List<InternalField> getSchemaFields() {
187197
return Arrays.asList(
188198
InternalField.builder()

0 commit comments

Comments
 (0)