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

lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new a04a08fb68 [rest] Add list partitions tests for non-metastore part 
table (#5644)
a04a08fb68 is described below

commit a04a08fb68d6466e3dc81f37efef4bfec6b65822
Author: Jingsong Lee <[email protected]>
AuthorDate: Wed May 21 13:00:28 2025 +0800

    [rest] Add list partitions tests for non-metastore part table (#5644)
---
 .../org/apache/paimon/rest/RESTCatalogServer.java  | 16 +++++--
 .../org/apache/paimon/rest/RESTCatalogTest.java    | 51 +++++++++++++---------
 2 files changed, 43 insertions(+), 24 deletions(-)

diff --git 
a/paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogServer.java 
b/paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogServer.java
index 01ce6c391a..441834dfd9 100644
--- a/paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogServer.java
+++ b/paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogServer.java
@@ -107,6 +107,7 @@ import java.io.UncheckedIOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -982,13 +983,22 @@ public class RESTCatalogServer {
     }
 
     private <T> PagedList<T> buildPagedEntities(List<T> names, int maxResults, 
String pageToken) {
-        List<T> sortedNames = 
names.stream().sorted(this::compareTo).collect(Collectors.toList());
+        return buildPagedEntities(names, maxResults, pageToken, false);
+    }
+
+    private <T> PagedList<T> buildPagedEntities(
+            List<T> names, int maxResults, String pageToken, boolean desc) {
+        Comparator<Object> comparator = this::compareTo;
+        if (desc) {
+            comparator = comparator.reversed();
+        }
+        List<T> sortedNames = 
names.stream().sorted(comparator).collect(Collectors.toList());
         List<T> pagedNames = new ArrayList<>();
         for (T sortedName : sortedNames) {
             if (pagedNames.size() < maxResults) {
                 if (pageToken == null) {
                     pagedNames.add(sortedName);
-                } else if (this.compareTo(sortedName, pageToken) > 0) {
+                } else if (comparator.compare(sortedName, pageToken) > 0) {
                     pagedNames.add(sortedName);
                 }
             } else {
@@ -1455,7 +1465,7 @@ public class RESTCatalogServer {
             String pageToken = parameters.getOrDefault(PAGE_TOKEN, null);
 
             PagedList<Partition> pagedPartitions =
-                    buildPagedEntities(partitions, maxResults, pageToken);
+                    buildPagedEntities(partitions, maxResults, pageToken, 
true);
             response =
                     new ListPartitionsResponse(
                             pagedPartitions.getElements(), 
pagedPartitions.getNextPageToken());
diff --git 
a/paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogTest.java 
b/paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogTest.java
index 8657e220e9..316af2e585 100644
--- a/paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogTest.java
@@ -75,7 +75,6 @@ import java.time.ZonedDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -1033,6 +1032,15 @@ public abstract class RESTCatalogTest extends 
CatalogTestBase {
 
     @Test
     void testListPartitions() throws Exception {
+        innerTestListPartitions(true);
+    }
+
+    @Test
+    void testListPartitionsNonMetastore() throws Exception {
+        innerTestListPartitions(false);
+    }
+
+    private void innerTestListPartitions(boolean metastore) throws Exception {
         if (!supportPartitions()) {
             return;
         }
@@ -1046,14 +1054,14 @@ public abstract class RESTCatalogTest extends 
CatalogTestBase {
                         singletonMap("dt", "20250103"));
         Map[] sortedSpecs =
                 partitionSpecs.stream()
-                        .sorted(Comparator.comparing(i -> i.get("dt")))
+                        .sorted((o1, o2) -> 
o2.get("dt").compareTo(o1.get("dt")))
                         .toArray(Map[]::new);
 
-        String databaseName = "partitions_db";
+        String databaseName = "partitions_db" + metastore;
         Identifier identifier = Identifier.create(databaseName, "table");
         Schema schema =
                 Schema.newBuilder()
-                        .option(METASTORE_PARTITIONED_TABLE.key(), "true")
+                        .option(METASTORE_PARTITIONED_TABLE.key(), 
Boolean.toString(metastore))
                         .option(METASTORE_TAG_TO_PARTITION.key(), "dt")
                         .column("col", DataTypes.INT())
                         .column("dt", DataTypes.STRING())
@@ -1073,7 +1081,12 @@ public abstract class RESTCatalogTest extends 
CatalogTestBase {
         }
 
         List<Partition> restPartitions = 
restCatalog.listPartitions(identifier);
-        
assertThat(restPartitions.stream().map(Partition::spec)).containsExactly(sortedSpecs);
+        if (metastore) {
+            
assertThat(restPartitions.stream().map(Partition::spec)).containsExactly(sortedSpecs);
+        } else {
+            assertThat(restPartitions.stream().map(Partition::spec))
+                    .containsExactlyInAnyOrder(sortedSpecs);
+        }
     }
 
     @Test
@@ -1123,34 +1136,31 @@ public abstract class RESTCatalogTest extends 
CatalogTestBase {
                 catalog.listPartitionsPaged(identifier, null, null, null);
         Map[] sortedSpecs =
                 partitionSpecs.stream()
-                        .sorted(Comparator.comparing(i -> i.get("dt")))
+                        .sorted((o1, o2) -> 
o2.get("dt").compareTo(o1.get("dt")))
                         .toArray(Map[]::new);
         assertPagedPartitions(pagedPartitions, partitionSpecs.size(), 
sortedSpecs);
 
         int maxResults = 2;
         pagedPartitions = catalog.listPartitionsPaged(identifier, maxResults, 
null, null);
-        assertPagedPartitions(
-                pagedPartitions, maxResults, partitionSpecs.get(2), 
partitionSpecs.get(0));
-        assertEquals("dt=20250101", pagedPartitions.getNextPageToken());
+        assertPagedPartitions(pagedPartitions, maxResults, sortedSpecs[0], 
sortedSpecs[1]);
+        assertEquals(sortedSpecs[1].toString(), "{" + 
pagedPartitions.getNextPageToken() + "}");
 
         pagedPartitions =
                 catalog.listPartitionsPaged(
                         identifier, maxResults, 
pagedPartitions.getNextPageToken(), null);
-        assertPagedPartitions(
-                pagedPartitions, maxResults, partitionSpecs.get(1), 
partitionSpecs.get(5));
-        assertEquals("dt=20250103", pagedPartitions.getNextPageToken());
+        assertPagedPartitions(pagedPartitions, maxResults, sortedSpecs[2], 
sortedSpecs[3]);
+        assertEquals(sortedSpecs[3].toString(), "{" + 
pagedPartitions.getNextPageToken() + "}");
 
         pagedPartitions =
                 catalog.listPartitionsPaged(
                         identifier, maxResults, 
pagedPartitions.getNextPageToken(), null);
-        assertPagedPartitions(
-                pagedPartitions, maxResults, partitionSpecs.get(4), 
partitionSpecs.get(6));
-        assertEquals("dt=2025010_test", pagedPartitions.getNextPageToken());
+        assertPagedPartitions(pagedPartitions, maxResults, sortedSpecs[4], 
sortedSpecs[5]);
+        assertEquals(sortedSpecs[5].toString(), "{" + 
pagedPartitions.getNextPageToken() + "}");
 
         pagedPartitions =
                 catalog.listPartitionsPaged(
                         identifier, maxResults, 
pagedPartitions.getNextPageToken(), null);
-        assertPagedPartitions(pagedPartitions, 1, partitionSpecs.get(3));
+        assertPagedPartitions(pagedPartitions, 1, sortedSpecs[6]);
         assertNull(pagedPartitions.getNextPageToken());
 
         maxResults = 8;
@@ -1168,11 +1178,11 @@ public abstract class RESTCatalogTest extends 
CatalogTestBase {
         assertPagedPartitions(
                 pagedPartitions,
                 5,
-                partitionSpecs.get(0),
-                partitionSpecs.get(1),
-                partitionSpecs.get(5),
+                partitionSpecs.get(6),
                 partitionSpecs.get(4),
-                partitionSpecs.get(6));
+                partitionSpecs.get(5),
+                partitionSpecs.get(1),
+                partitionSpecs.get(0));
         assertNull(pagedPartitions.getNextPageToken());
 
         pagedPartitions = catalog.listPartitionsPaged(identifier, maxResults, 
null, "dt=2025010_%");
@@ -1707,7 +1717,6 @@ public abstract class RESTCatalogTest extends 
CatalogTestBase {
 
     @Override
     protected boolean supportPartitions() {
-        // TODO support this
         return true;
     }
 

Reply via email to