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 <[email protected]>
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;
+  }
 }

Reply via email to