You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by pt...@apache.org on 2022/05/30 17:37:45 UTC
[ignite-3] branch ignite-14972 updated: wip ClientAsyncResultSet
This is an automated email from the ASF dual-hosted git repository.
ptupitsyn pushed a commit to branch ignite-14972
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/ignite-14972 by this push:
new 9dac75c0d wip ClientAsyncResultSet
9dac75c0d is described below
commit 9dac75c0da5b19c4d280e250b4a8b04f9ca5f2c8
Author: Pavel Tupitsyn <pt...@apache.org>
AuthorDate: Mon May 30 20:37:38 2022 +0300
wip ClientAsyncResultSet
---
.../requests/sql/ClientSqlExecuteRequest.java | 1 +
.../internal/client/sql/ClientAsyncResultSet.java | 81 ++++++++++++++++++++--
.../ignite/internal/client/sql/ClientSession.java | 7 +-
3 files changed, 82 insertions(+), 7 deletions(-)
diff --git a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteRequest.java b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteRequest.java
index 58ec320be..b574777f5 100644
--- a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteRequest.java
+++ b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteRequest.java
@@ -72,6 +72,7 @@ public class ClientSqlExecuteRequest {
out.packBoolean(asyncResultSet.hasRowSet());
out.packBoolean(asyncResultSet.hasMorePages());
out.packBoolean(asyncResultSet.wasApplied());
+ out.packLong(asyncResultSet.affectedRows());
// Pack metadata.
// TODO: IGNITE-17052
diff --git a/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientAsyncResultSet.java b/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientAsyncResultSet.java
index 1c706637c..8a1f63e75 100644
--- a/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientAsyncResultSet.java
+++ b/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientAsyncResultSet.java
@@ -17,7 +17,9 @@
package org.apache.ignite.internal.client.sql;
+import java.util.List;
import java.util.concurrent.CompletionStage;
+import org.apache.ignite.sql.NoRowSetExpectedException;
import org.apache.ignite.sql.ResultSetMetadata;
import org.apache.ignite.sql.SqlRow;
import org.apache.ignite.sql.async.AsyncResultSet;
@@ -27,49 +29,116 @@ import org.jetbrains.annotations.Nullable;
* Client async result set.
*/
class ClientAsyncResultSet implements AsyncResultSet {
+ /** */
+ private final Long resourceId;
+
+ /** */
+ private final boolean hasRowSet;
+
+ /** */
+ private final boolean hasMorePages;
+
+ /** */
+ private final boolean wasApplied;
+
+ /** */
+ private final long affectedRows;
+
+ /** */
+ private final List<SqlRow> rows;
+
+ /**
+ * Constructor.
+ *
+ * @param resourceId Resource id.
+ * @param hasRowSet Row set flag.
+ * @param hasMorePages More pages flag.
+ * @param wasApplied Applied flag.
+ * @param rows Rows.
+ */
+ @SuppressWarnings("AssignmentOrReturnOfFieldWithMutableType")
+ public ClientAsyncResultSet(
+ Long resourceId,
+ boolean hasRowSet,
+ boolean hasMorePages,
+ boolean wasApplied,
+ long affectedRows,
+ @Nullable List<SqlRow> rows) {
+ this.resourceId = resourceId;
+ this.hasRowSet = hasRowSet;
+ this.hasMorePages = hasMorePages;
+ this.wasApplied = wasApplied;
+ this.affectedRows = affectedRows;
+ this.rows = rows;
+ }
+
+ /** {@inheritDoc} */
@Override
public @Nullable ResultSetMetadata metadata() {
// TODO: IGNITE-17052
throw new UnsupportedOperationException("Not implemented yet.");
}
+ /** {@inheritDoc} */
@Override
public boolean hasRowSet() {
- return false;
+ return hasRowSet;
}
+ /** {@inheritDoc} */
@Override
public long affectedRows() {
- return 0;
+ return affectedRows;
}
+ /** {@inheritDoc} */
@Override
public boolean wasApplied() {
- return false;
+ return wasApplied;
}
+ /** {@inheritDoc} */
+ @SuppressWarnings("AssignmentOrReturnOfFieldWithMutableType")
@Override
public Iterable<SqlRow> currentPage() {
- return null;
+ requireResultSet();
+
+ return rows;
}
+ /** {@inheritDoc} */
@Override
public int currentPageSize() {
- return 0;
+ requireResultSet();
+
+ return rows.size();
}
+ /** {@inheritDoc} */
@Override
public CompletionStage<? extends AsyncResultSet> fetchNextPage() {
+ requireResultSet();
+
+ // TODO
return null;
}
+ /** {@inheritDoc} */
@Override
public boolean hasMorePages() {
- return false;
+ return hasMorePages;
}
+ /** {@inheritDoc} */
@Override
public CompletionStage<Void> closeAsync() {
+ // TODO
return null;
}
+
+ private void requireResultSet() {
+ if (!hasRowSet()) {
+ throw new NoRowSetExpectedException("Query has no result set");
+ }
+ }
}
diff --git a/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientSession.java b/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientSession.java
index d505fd000..f2f67b93d 100644
--- a/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientSession.java
+++ b/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientSession.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.client.sql;
import static org.apache.ignite.internal.client.ClientUtils.sync;
import static org.apache.ignite.internal.client.table.ClientTable.writeTx;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
@@ -31,6 +32,7 @@ import org.apache.ignite.internal.client.proto.ClientOp;
import org.apache.ignite.sql.BatchedArguments;
import org.apache.ignite.sql.ResultSet;
import org.apache.ignite.sql.Session;
+import org.apache.ignite.sql.SqlRow;
import org.apache.ignite.sql.Statement;
import org.apache.ignite.sql.async.AsyncResultSet;
import org.apache.ignite.sql.reactive.ReactiveResultSet;
@@ -148,14 +150,17 @@ public class ClientSession implements Session {
boolean hasRowSet = r.in().unpackBoolean();
boolean hasMorePages = r.in().unpackBoolean();
boolean wasApplied = r.in().unpackBoolean();
+ long affectedRows = r.in().unpackLong();
r.in().unpackArrayHeader(); // TODO: Metadata IGNITE-17052.
+ List<SqlRow> rows = null;
+
if (hasRowSet) {
// TODO: Unpack rows.
}
- return new ClientAsyncResultSet(resourceId, hasRowSet, hasMorePages, wasApplied);
+ return new ClientAsyncResultSet(resourceId, hasRowSet, hasMorePages, wasApplied, affectedRows, rows);
});
}