You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@paimon.apache.org by lz...@apache.org on 2024/01/08 09:31:41 UTC

(incubator-paimon) 04/05: [core] Add projection test for TableQueryImpl

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/incubator-paimon.git

commit f5170455a255dadd688a83e4869abf4a6ca6e6e4
Author: Jingsong <ji...@gmail.com>
AuthorDate: Mon Jan 8 16:31:03 2024 +0800

    [core] Add projection test for TableQueryImpl
---
 .../org/apache/paimon/table/query/TableQuery.java  |  5 +++++
 .../apache/paimon/table/query/TableQueryImpl.java  |  1 +
 .../paimon/table/PrimaryKeyFileStoreTableTest.java | 24 ++++++++++++++++------
 3 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/paimon-core/src/main/java/org/apache/paimon/table/query/TableQuery.java b/paimon-core/src/main/java/org/apache/paimon/table/query/TableQuery.java
index 7d956b72f..8418ca6af 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/query/TableQuery.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/query/TableQuery.java
@@ -24,6 +24,7 @@ import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.data.InternalRow;
 import org.apache.paimon.disk.IOManager;
 import org.apache.paimon.io.DataFileMeta;
+import org.apache.paimon.utils.Projection;
 
 import javax.annotation.Nullable;
 
@@ -34,6 +35,10 @@ import java.util.List;
 /** A query of Table to perform lookup. */
 public interface TableQuery extends Closeable {
 
+    default TableQuery withValueProjection(int[] projection) {
+        return withValueProjection(Projection.of(projection).toNestedIndexes());
+    }
+
     TableQuery withValueProjection(int[][] projection);
 
     TableQuery withIOManager(IOManager ioManager);
diff --git a/paimon-core/src/main/java/org/apache/paimon/table/query/TableQueryImpl.java b/paimon-core/src/main/java/org/apache/paimon/table/query/TableQueryImpl.java
index ed3f2c5b1..053cc44a5 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/query/TableQueryImpl.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/query/TableQueryImpl.java
@@ -185,5 +185,6 @@ public class TableQueryImpl implements TableQuery {
                 bucket.getValue().close();
             }
         }
+        tableView.clear();
     }
 }
diff --git a/paimon-core/src/test/java/org/apache/paimon/table/PrimaryKeyFileStoreTableTest.java b/paimon-core/src/test/java/org/apache/paimon/table/PrimaryKeyFileStoreTableTest.java
index 288d6136e..517e6a6b7 100644
--- a/paimon-core/src/test/java/org/apache/paimon/table/PrimaryKeyFileStoreTableTest.java
+++ b/paimon-core/src/test/java/org/apache/paimon/table/PrimaryKeyFileStoreTableTest.java
@@ -1173,13 +1173,13 @@ public class PrimaryKeyFileStoreTableTest extends FileStoreTableTestBase {
         // first write
 
         write.write(rowData(1, 10, 100L));
-        List<CommitMessage> commitMessages = write.prepareCommit(true, 0);
-        commit.commit(0, commitMessages);
+        List<CommitMessage> commitMessages1 = write.prepareCommit(true, 0);
+        commit.commit(0, commitMessages1);
 
         TableQuery query = table.newTableQuery();
         query.withIOManager(ioManager);
 
-        refreshTableService(query, commitMessages);
+        refreshTableService(query, commitMessages1);
         InternalRow value = query.lookup(row(1), 0, row(10));
         assertThat(value).isNotNull();
         assertThat(BATCH_ROW_TO_STRING.apply(value))
@@ -1189,10 +1189,10 @@ public class PrimaryKeyFileStoreTableTest extends FileStoreTableTestBase {
 
         write.write(rowData(1, 10, 200L));
         write.write(rowData(3, 10, 300L));
-        commitMessages = write.prepareCommit(true, 0);
-        commit.commit(0, commitMessages);
+        List<CommitMessage> commitMessages2 = write.prepareCommit(true, 0);
+        commit.commit(0, commitMessages2);
 
-        refreshTableService(query, commitMessages);
+        refreshTableService(query, commitMessages2);
 
         value = query.lookup(row(1), 0, row(10));
         assertThat(value).isNotNull();
@@ -1209,6 +1209,18 @@ public class PrimaryKeyFileStoreTableTest extends FileStoreTableTestBase {
         value = query.lookup(row(1), 0, row(20));
         assertThat(value).isNull();
 
+        // projection
+
+        query.close();
+        query.withValueProjection(new int[] {2, 1, 0});
+        refreshTableService(query, commitMessages1);
+        refreshTableService(query, commitMessages2);
+        value = query.lookup(row(1), 0, row(10));
+        assertThat(value).isNotNull();
+        Function<InternalRow, String> projectToString =
+                rowData -> rowData.getLong(0) + "|" + rowData.getInt(1) + "|" + rowData.getInt(2);
+        assertThat(projectToString.apply(value)).isEqualTo("200|10|1");
+
         query.close();
         write.close();
         commit.close();