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

lzljs3620320 pushed a commit to branch release-0.6
in repository https://gitbox.apache.org/repos/asf/incubator-paimon-trino.git


The following commit(s) were added to refs/heads/release-0.6 by this push:
     new 944fc19  Fix bug when read empty paimon table (#46)
944fc19 is described below

commit 944fc194a463c22f1414fe0937f9c8d80d60e6ed
Author: Jingsong Lee <[email protected]>
AuthorDate: Wed Dec 13 11:24:05 2023 +0800

    Fix bug when read empty paimon table (#46)
---
 .../apache/paimon/trino/TrinoSplitManagerBase.java |  3 +--
 .../org/apache/paimon/trino/TestTrinoITCase.java   | 28 +++++++++++++++++++---
 2 files changed, 26 insertions(+), 5 deletions(-)

diff --git 
a/paimon-trino-common/src/main/java/org/apache/paimon/trino/TrinoSplitManagerBase.java
 
b/paimon-trino-common/src/main/java/org/apache/paimon/trino/TrinoSplitManagerBase.java
index 0bb5b91..61a26d2 100644
--- 
a/paimon-trino-common/src/main/java/org/apache/paimon/trino/TrinoSplitManagerBase.java
+++ 
b/paimon-trino-common/src/main/java/org/apache/paimon/trino/TrinoSplitManagerBase.java
@@ -47,8 +47,7 @@ public abstract class TrinoSplitManagerBase implements 
ConnectorSplitManager {
         tableHandle.getLimit().ifPresent(limit -> readBuilder.withLimit((int) 
limit));
         List<Split> splits = readBuilder.newScan().plan().splits();
 
-        @SuppressWarnings("OptionalGetWithoutIsPresent")
-        long maxRowCount = 
splits.stream().mapToLong(Split::rowCount).max().getAsLong();
+        long maxRowCount = 
splits.stream().mapToLong(Split::rowCount).max().orElse(0L);
         double minimumSplitWeight = 
TrinoSessionProperties.getMinimumSplitWeight(session);
         return new TrinoSplitSource(
                 splits.stream()
diff --git 
a/paimon-trino-common/src/test/java/org/apache/paimon/trino/TestTrinoITCase.java
 
b/paimon-trino-common/src/test/java/org/apache/paimon/trino/TestTrinoITCase.java
index 25b2d60..ee379de 100644
--- 
a/paimon-trino-common/src/test/java/org/apache/paimon/trino/TestTrinoITCase.java
+++ 
b/paimon-trino-common/src/test/java/org/apache/paimon/trino/TestTrinoITCase.java
@@ -130,6 +130,23 @@ public abstract class TestTrinoITCase extends 
AbstractTestQueryFramework {
             commit.commit(0, writer.prepareCommit(true, 0));
         }
 
+        {
+            Path tablePath = new Path(warehouse, "default.db/empty_t");
+            RowType rowType =
+                    new RowType(
+                            Arrays.asList(
+                                    new DataField(1, "a", new IntType()),
+                                    new DataField(2, "b", new BigIntType())));
+            new SchemaManager(LocalFileIO.create(), tablePath)
+                    .createTable(
+                            new Schema(
+                                    rowType.getFields(),
+                                    Collections.emptyList(),
+                                    Collections.emptyList(),
+                                    new HashMap<>(),
+                                    ""));
+        }
+
         {
             Path tablePath4 = new Path(warehouse, "default.db/t4");
             List<DataField> innerRowFields = new ArrayList<>();
@@ -243,6 +260,11 @@ public abstract class TestTrinoITCase extends 
AbstractTestQueryFramework {
                 .isEqualTo("[[1, {1=2}, [2, male], [1, 2, 3]]]");
     }
 
+    @Test
+    public void testEmptyTable() {
+        assertThat(sql("SELECT * FROM 
paimon.default.empty_t")).isEqualTo("[]");
+    }
+
     @Test
     public void testProjection() {
         assertThat(sql("SELECT * FROM paimon.default.t1"))
@@ -335,7 +357,7 @@ public abstract class TestTrinoITCase extends 
AbstractTestQueryFramework {
                         + "changelog_producer = 'input'"
                         + ")");
         assertThat(sql("SHOW TABLES FROM paimon.default"))
-                .isEqualTo("[[orders], [t1], [t2], [t3], [t4], [t99]]");
+                .isEqualTo("[[empty_t], [orders], [t1], [t2], [t3], [t4], 
[t99]]");
         sql("DROP TABLE IF EXISTS paimon.default.orders");
     }
 
@@ -358,7 +380,7 @@ public abstract class TestTrinoITCase extends 
AbstractTestQueryFramework {
                         + ")");
         sql("ALTER TABLE paimon.default.t5 RENAME TO t6");
         assertThat(sql("SHOW TABLES FROM paimon.default"))
-                .isEqualTo("[[t1], [t2], [t3], [t4], [t6], [t99]]");
+                .isEqualTo("[[empty_t], [t1], [t2], [t3], [t4], [t6], [t99]]");
         sql("DROP TABLE IF EXISTS paimon.default.t6");
     }
 
@@ -381,7 +403,7 @@ public abstract class TestTrinoITCase extends 
AbstractTestQueryFramework {
                         + ")");
         sql("DROP TABLE IF EXISTS paimon.default.t5");
         assertThat(sql("SHOW TABLES FROM paimon.default"))
-                .isEqualTo("[[t1], [t2], [t3], [t4], [t99]]");
+                .isEqualTo("[[empty_t], [t1], [t2], [t3], [t4], [t99]]");
     }
 
     @Test

Reply via email to