diff --git a/core/src/main/java/org/apache/iceberg/TableMetadataParser.java b/core/src/main/java/org/apache/iceberg/TableMetadataParser.java index a2c5bcdf243c..34729dca2f1f 100644 --- a/core/src/main/java/org/apache/iceberg/TableMetadataParser.java +++ b/core/src/main/java/org/apache/iceberg/TableMetadataParser.java @@ -154,6 +154,7 @@ public static String toJson(TableMetadata metadata) { } } + @SuppressWarnings("checkstyle:CyclomaticComplexity") public static void toJson(TableMetadata metadata, JsonGenerator generator) throws IOException { generator.writeStartObject(); @@ -225,6 +226,12 @@ public static void toJson(TableMetadata metadata, JsonGenerator generator) throw } generator.writeEndArray(); + generator.writeArrayFieldStart(STATISTICS); + for (StatisticsFile statisticsFile : metadata.statisticsFiles()) { + StatisticsFileParser.toJson(statisticsFile, generator); + } + generator.writeEndArray(); + generator.writeArrayFieldStart(SNAPSHOT_LOG); for (HistoryEntry logEntry : metadata.snapshotLog()) { generator.writeStartObject(); diff --git a/core/src/test/java/org/apache/iceberg/TestTableMetadata.java b/core/src/test/java/org/apache/iceberg/TestTableMetadata.java index ab42ebea4f90..af5229f9c7f9 100644 --- a/core/src/test/java/org/apache/iceberg/TestTableMetadata.java +++ b/core/src/test/java/org/apache/iceberg/TestTableMetadata.java @@ -133,6 +133,17 @@ public void testJsonConversion() throws Exception { "previous", SnapshotRef.tagBuilder(previousSnapshotId).build(), "test", SnapshotRef.branchBuilder(previousSnapshotId).build()); + List statisticsFiles = + ImmutableList.of( + new GenericStatisticsFile( + 11L, + "/some/stats/file.puffin", + 100, + 42, + ImmutableList.of( + new GenericBlobMetadata( + "some-stats", 11L, 2, ImmutableList.of(4), ImmutableMap.of())))); + TableMetadata expected = new TableMetadata( null, @@ -155,7 +166,7 @@ public void testJsonConversion() throws Exception { snapshotLog, ImmutableList.of(), refs, - ImmutableList.of(), + statisticsFiles, ImmutableList.of()); String asJson = TableMetadataParser.toJson(expected); @@ -220,6 +231,8 @@ public void testJsonConversion() throws Exception { Assert.assertNull( "Previous snapshot's schema ID should be null", metadata.snapshot(previousSnapshotId).schemaId()); + Assert.assertEquals( + "Statistics files should match", statisticsFiles, metadata.statisticsFiles()); Assert.assertEquals("Refs map should match", refs, metadata.refs()); }