You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by er...@apache.org on 2022/07/28 02:38:23 UTC

[iotdb] 01/01: Method reference example

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

ericpai pushed a commit to branch improve/it-method-ref
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 70687e9586d059b06648cef3ebe24ea2efc4f43d
Author: ericpai <er...@hotmail.com>
AuthorDate: Thu Jul 28 10:38:07 2022 +0800

    Method reference example
---
 .../iotdb/itbase/runtime/ClusterTestResultSet.java | 34 +++++++++++++++-------
 1 file changed, 24 insertions(+), 10 deletions(-)

diff --git a/integration-test/src/main/java/org/apache/iotdb/itbase/runtime/ClusterTestResultSet.java b/integration-test/src/main/java/org/apache/iotdb/itbase/runtime/ClusterTestResultSet.java
index e98ff7e7c1..b6b9b40861 100644
--- a/integration-test/src/main/java/org/apache/iotdb/itbase/runtime/ClusterTestResultSet.java
+++ b/integration-test/src/main/java/org/apache/iotdb/itbase/runtime/ClusterTestResultSet.java
@@ -93,11 +93,7 @@ public class ClusterTestResultSet implements ResultSet {
 
   @Override
   public String getString(int columnIndex) throws SQLException {
-    RequestDelegate<String> delegate = createLocalRequestDelegate();
-    for (ResultSet rs : resultSets) {
-      delegate.addRequest(() -> rs.getString(columnIndex));
-    }
-    return delegate.requestAllAndCompare();
+    return getColumnValue(rs -> rs.getString(columnIndex));
   }
 
   @Override
@@ -225,11 +221,7 @@ public class ClusterTestResultSet implements ResultSet {
 
   @Override
   public String getString(String columnLabel) throws SQLException {
-    RequestDelegate<String> delegate = createLocalRequestDelegate();
-    for (ResultSet rs : resultSets) {
-      delegate.addRequest(() -> rs.getString(columnLabel));
-    }
-    return delegate.requestAllAndCompare();
+    return getColumnValue(rs -> rs.getString(columnLabel));
   }
 
   @Override
@@ -1175,4 +1167,26 @@ public class ClusterTestResultSet implements ResultSet {
   private <T> RequestDelegate<T> createLocalRequestDelegate() {
     return new SerialRequestDelegate<>(endpoints);
   }
+
+  private <T> T getColumnValue(SQLValueGetter<ResultSet, T> valueGetter) throws SQLException {
+    RequestDelegate<T> delegate = createLocalRequestDelegate();
+    for (ResultSet rs : resultSets) {
+      delegate.addRequest(() -> valueGetter.apply(rs));
+    }
+    List<T> data = delegate.requestAll();
+
+    // TODO: according to whether this is a disoreded dataset, we cache the results or comparing
+    // them
+    // immediately.
+    //    for (int i = 0; i < data.size(); i++) {
+    //      List<StringBuilder> list = cachedResult.get(i);
+    //      list.get(list.size() - 1).append(data.get(i).toString()).append(",");
+    //    }
+    return data.get(0);
+  }
+
+  @FunctionalInterface
+  private interface SQLValueGetter<T, R> {
+    R apply(T t) throws SQLException;
+  }
 }