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

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


The following commit(s) were added to refs/heads/main by this push:
     new 11842e3  [Improvement] Enhance alignment of metadata fields (#186)
11842e3 is described below

commit 11842e3efca3981b18a0df97ddc09cd77fbff007
Author: s7monk <[email protected]>
AuthorDate: Tue Feb 6 14:14:51 2024 +0800

    [Improvement] Enhance alignment of metadata fields (#186)
---
 .../paimon/web/server/data/vo/DataFileVO.java      | 26 ++++++++++++++
 .../paimon/web/server/data/vo/ManifestsVO.java     |  4 +++
 .../paimon/web/server/data/vo/SnapshotVO.java      | 25 +++++++++++++
 .../server/service/impl/MetadataServiceImpl.java   | 42 ++++++++++++++++++----
 .../server/controller/MetadataControllerTest.java  | 39 ++++++++++++++++++++
 5 files changed, 130 insertions(+), 6 deletions(-)

diff --git 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/vo/DataFileVO.java
 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/vo/DataFileVO.java
index 5017325..a1ca63d 100644
--- 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/vo/DataFileVO.java
+++ 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/vo/DataFileVO.java
@@ -23,6 +23,8 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.time.LocalDateTime;
+
 /** VO of metadata data file. */
 @Data
 @Builder
@@ -37,4 +39,28 @@ public class DataFileVO {
     private String filePath;
 
     private String fileFormat;
+
+    private Long schemaId;
+
+    private Integer level;
+
+    private Long recordCount;
+
+    private Long fileSizeInBytes;
+
+    private String minKey;
+
+    private String maxKey;
+
+    private String nullValueCounts;
+
+    private String minValueStats;
+
+    private String maxValueStats;
+
+    private Long minSequenceNumber;
+
+    private Long maxSequenceNumber;
+
+    private LocalDateTime creationTime;
 }
diff --git 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/vo/ManifestsVO.java
 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/vo/ManifestsVO.java
index bfab103..2bd4d72 100644
--- 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/vo/ManifestsVO.java
+++ 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/vo/ManifestsVO.java
@@ -35,4 +35,8 @@ public class ManifestsVO {
     private Long fileSize;
 
     private Long numAddedFiles;
+
+    private Long numDeletedFiles;
+
+    private Long schemaId;
 }
diff --git 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/vo/SnapshotVO.java
 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/vo/SnapshotVO.java
index 6040426..38d2ff1 100644
--- 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/vo/SnapshotVO.java
+++ 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/data/vo/SnapshotVO.java
@@ -31,9 +31,34 @@ import java.time.LocalDateTime;
 @NoArgsConstructor
 @AllArgsConstructor
 public class SnapshotVO {
+
     private Long snapshotId;
+
     private Long schemaId;
+
+    private String commitUser;
+
     private Long commitIdentifier;
+
     private String commitKind;
+
     private LocalDateTime commitTime;
+
+    private String baseManifestList;
+
+    private String deltaManifestList;
+
+    private String changelogManifestList;
+
+    private Long totalRecordCount;
+
+    private Long deltaRecordCount;
+
+    private Long changelogRecordCount;
+
+    private Integer addedFileCount;
+
+    private Integer deletedFileCount;
+
+    private Long watermark;
 }
diff --git 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/MetadataServiceImpl.java
 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/MetadataServiceImpl.java
index 68faba0..9677338 100644
--- 
a/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/MetadataServiceImpl.java
+++ 
b/paimon-web-server/src/main/java/org/apache/paimon/web/server/service/impl/MetadataServiceImpl.java
@@ -110,9 +110,19 @@ public class MetadataServiceImpl implements 
MetadataService {
                                 SnapshotVO.builder()
                                         .snapshotId(internalRow.getLong(0))
                                         .schemaId(internalRow.getLong(1))
+                                        .commitUser(getSafeString(internalRow, 
2))
                                         
.commitIdentifier(internalRow.getLong(3))
                                         .commitKind(getSafeString(internalRow, 
4))
                                         
.commitTime(getSafeLocalDateTime(internalRow, 5))
+                                        
.baseManifestList(getSafeString(internalRow, 6))
+                                        
.deltaManifestList(getSafeString(internalRow, 7))
+                                        
.changelogManifestList(getSafeString(internalRow, 8))
+                                        
.totalRecordCount(internalRow.getLong(9))
+                                        
.deltaRecordCount(internalRow.getLong(10))
+                                        
.changelogRecordCount(internalRow.getLong(11))
+                                        .addedFileCount(internalRow.getInt(12))
+                                        
.deletedFileCount(internalRow.getInt(13))
+                                        .watermark(getSafeLong(internalRow, 
14))
                                         .build();
                         result.add(build);
                     });
@@ -137,6 +147,8 @@ public class MetadataServiceImpl implements MetadataService 
{
                                         .fileName(getSafeString(internalRow, 
0))
                                         .fileSize(internalRow.getLong(1))
                                         .numAddedFiles(internalRow.getLong(2))
+                                        
.numDeletedFiles(internalRow.getLong(3))
+                                        .schemaId(internalRow.getLong(4))
                                         .build();
                         result.add(manifestsVo);
                     });
@@ -157,12 +169,26 @@ public class MetadataServiceImpl implements 
MetadataService {
         try {
             reader.forEachRemaining(
                     internalRow -> {
-                        DataFileVO dataFileVo = new DataFileVO();
-                        dataFileVo.setPartition(getSafeString(internalRow, 0));
-                        dataFileVo.setBucket(internalRow.getInt(1));
-                        dataFileVo.setFilePath(getSafeString(internalRow, 2));
-                        dataFileVo.setFileFormat(getSafeString(internalRow, 
3));
-                        result.add(dataFileVo);
+                        DataFileVO dataFileVO =
+                                DataFileVO.builder()
+                                        .partition(getSafeString(internalRow, 
0))
+                                        .bucket(internalRow.getInt(1))
+                                        .filePath(getSafeString(internalRow, 
2))
+                                        .fileFormat(getSafeString(internalRow, 
3))
+                                        .schemaId(internalRow.getLong(4))
+                                        .level(internalRow.getInt(5))
+                                        .recordCount(internalRow.getLong(6))
+                                        
.fileSizeInBytes(internalRow.getLong(7))
+                                        .minKey(getSafeString(internalRow, 8))
+                                        .maxKey(getSafeString(internalRow, 9))
+                                        
.nullValueCounts(getSafeString(internalRow, 10))
+                                        
.minValueStats(getSafeString(internalRow, 11))
+                                        
.maxValueStats(getSafeString(internalRow, 12))
+                                        
.minSequenceNumber(internalRow.getLong(13))
+                                        
.maxSequenceNumber(internalRow.getLong(14))
+                                        
.creationTime(getSafeLocalDateTime(internalRow, 15))
+                                        .build();
+                        result.add(dataFileVO);
                     });
         } catch (IOException e) {
             throw new RuntimeException(e);
@@ -231,6 +257,10 @@ public class MetadataServiceImpl implements 
MetadataService {
         return internalRow.isNullAt(index) ? "" : 
internalRow.getString(index).toString();
     }
 
+    private Long getSafeLong(InternalRow internalRow, int index) {
+        return internalRow.isNullAt(index) ? null : internalRow.getLong(14);
+    }
+
     private LocalDateTime getSafeLocalDateTime(InternalRow internalRow, int 
index) {
         return internalRow.isNullAt(index)
                 ? null
diff --git 
a/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/MetadataControllerTest.java
 
b/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/MetadataControllerTest.java
index e07132e..dc0a813 100644
--- 
a/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/MetadataControllerTest.java
+++ 
b/paimon-web-server/src/test/java/org/apache/paimon/web/server/controller/MetadataControllerTest.java
@@ -59,6 +59,7 @@ import 
org.springframework.test.web.servlet.result.MockMvcResultHandlers;
 import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
 
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -67,6 +68,7 @@ import java.util.Map;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /** Tests for {@link MetadataController}. */
@@ -354,6 +356,8 @@ public class MetadataControllerTest extends 
ControllerTestBase {
         assertNotNull(manifestsVO.getFileName());
         assertTrue(manifestsVO.getFileSize() > 0);
         assertEquals(3, manifestsVO.getNumAddedFiles());
+        assertEquals(0, manifestsVO.getNumDeletedFiles());
+        assertEquals(0, manifestsVO.getSchemaId());
     }
 
     @Test
@@ -385,10 +389,34 @@ public class MetadataControllerTest extends 
ControllerTestBase {
 
         // Make assertions on each field of the DataFileVO class.
         DataFileVO dataFileVO = dataFileVOS.get(0);
+        CommitMessageImpl commitMessage = (CommitMessageImpl) messages.get(0);
         assertEquals("[2023-12-04 00:00:00]", dataFileVO.getPartition());
         assertEquals(0, dataFileVO.getBucket());
         assertNotNull(dataFileVO.getFilePath());
         assertEquals("orc", dataFileVO.getFileFormat());
+        assertEquals(0, dataFileVO.getLevel());
+        assertEquals(1, dataFileVO.getRecordCount());
+        assertEquals(
+                commitMessage.newFilesIncrement().newFiles().get(0).fileSize(),
+                dataFileVO.getFileSizeInBytes());
+        assertEquals("[1]", dataFileVO.getMinKey());
+        assertEquals("[1]", dataFileVO.getMaxKey());
+        assertEquals("{age=0, create_time=0, id=0, name=0}", 
dataFileVO.getNullValueCounts());
+        assertEquals(
+                "{age=24, create_time=2023-12-04 00:00, id=1, name=Alice}",
+                dataFileVO.getMinValueStats());
+        assertEquals(
+                "{age=24, create_time=2023-12-04 00:01, id=1, name=Alice}",
+                dataFileVO.getMaxValueStats());
+        assertEquals(0, dataFileVO.getMinSequenceNumber());
+        assertEquals(0, dataFileVO.getMaxSequenceNumber());
+        assertEquals(
+                
commitMessage.newFilesIncrement().newFiles().get(0).creationTimeEpochMillis(),
+                dataFileVO
+                        .getCreationTime()
+                        .atZone(ZoneId.systemDefault())
+                        .toInstant()
+                        .toEpochMilli());
 
         List<String> actualPartitions = new ArrayList<>();
         List<String> expectedPartitions =
@@ -439,9 +467,20 @@ public class MetadataControllerTest extends 
ControllerTestBase {
         SnapshotVO snapshotVO = snapshotVOS.get(0);
         assertEquals(1, snapshotVO.getSnapshotId());
         assertEquals(0, snapshotVO.getSchemaId());
+        assertFalse(snapshotVO.getCommitUser().isEmpty());
         assertEquals("OVERWRITE", snapshotVO.getCommitKind());
         assertTrue(snapshotVO.getCommitIdentifier() > 0);
         assertTrue(snapshotVO.getCommitTime().isBefore(LocalDateTime.now()));
+        assertEquals(0, snapshotVO.getSchemaId());
+        assertFalse(snapshotVO.getDeltaManifestList().isEmpty());
+        assertFalse(snapshotVO.getBaseManifestList().isEmpty());
+        assertEquals("", snapshotVO.getChangelogManifestList());
+        assertEquals(3, snapshotVO.getTotalRecordCount());
+        assertEquals(3, snapshotVO.getDeltaRecordCount());
+        assertEquals(0, snapshotVO.getChangelogRecordCount());
+        assertEquals(3, snapshotVO.getAddedFileCount());
+        assertEquals(0, snapshotVO.getDeletedFileCount());
+        assertNull(snapshotVO.getWatermark());
     }
 
     @Test

Reply via email to