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; + } }
