diff --git a/client/src/main/java/com/orientechnologies/orient/client/remote/OrientDBRemote.java b/client/src/main/java/com/orientechnologies/orient/client/remote/OrientDBRemote.java index 3b8909656df..cf828ee7b56 100755 --- a/client/src/main/java/com/orientechnologies/orient/client/remote/OrientDBRemote.java +++ b/client/src/main/java/com/orientechnologies/orient/client/remote/OrientDBRemote.java @@ -596,8 +596,7 @@ public OResultSet executeServerStatement( response.getExecutionPlan(), response.getQueryStats(), response.isHasNextPage()); - return new ORemoteQueryResult(rs, response.isTxChanges(), response.isReloadMetadata()) - .getResult(); + return rs; } @Override @@ -628,8 +627,7 @@ public OResultSet executeServerStatement( response.getQueryStats(), response.isHasNextPage()); - return new ORemoteQueryResult(rs, response.isTxChanges(), response.isReloadMetadata()) - .getResult(); + return rs; } public OContextConfiguration getContextConfiguration() { diff --git a/client/src/main/java/com/orientechnologies/orient/client/remote/message/OQueryResponse.java b/client/src/main/java/com/orientechnologies/orient/client/remote/message/OQueryResponse.java index 38256aef23d..a7e57dcb046 100644 --- a/client/src/main/java/com/orientechnologies/orient/client/remote/message/OQueryResponse.java +++ b/client/src/main/java/com/orientechnologies/orient/client/remote/message/OQueryResponse.java @@ -9,7 +9,6 @@ import com.orientechnologies.orient.core.sql.executor.OInfoExecutionPlan; import com.orientechnologies.orient.core.sql.executor.OInfoExecutionStep; import com.orientechnologies.orient.core.sql.executor.OResult; -import com.orientechnologies.orient.core.sql.executor.OResultInternal; import com.orientechnologies.orient.enterprise.channel.binary.OChannelDataInput; import com.orientechnologies.orient.enterprise.channel.binary.OChannelDataOutput; import java.io.IOException; @@ -30,7 +29,7 @@ public class OQueryResponse implements OBinaryResponse { private String queryId; private boolean txChanges; - private List result; + private List result; private Optional executionPlan; private boolean hasNextPage; private Map queryStats; @@ -39,7 +38,7 @@ public class OQueryResponse implements OBinaryResponse { public OQueryResponse( String queryId, boolean txChanges, - List result, + List result, Optional executionPlan, boolean hasNextPage, Map queryStats, @@ -150,7 +149,7 @@ public String getQueryId() { return queryId; } - public List getResult() { + public List getResult() { return result; } diff --git a/client/src/main/java/com/orientechnologies/orient/client/remote/message/ORemoteResultSet.java b/client/src/main/java/com/orientechnologies/orient/client/remote/message/ORemoteResultSet.java index 33e01671a91..11a0c15d4e3 100644 --- a/client/src/main/java/com/orientechnologies/orient/client/remote/message/ORemoteResultSet.java +++ b/client/src/main/java/com/orientechnologies/orient/client/remote/message/ORemoteResultSet.java @@ -16,7 +16,7 @@ public class ORemoteResultSet implements OResultSet { private final ODatabaseDocumentRemote db; private final String queryId; - private List currentPage; + private List currentPage; private Optional executionPlan; private Map queryStats; private boolean hasNextPage; @@ -24,7 +24,7 @@ public class ORemoteResultSet implements OResultSet { public ORemoteResultSet( ODatabaseDocumentRemote db, String queryId, - List currentPage, + List currentPage, Optional executionPlan, Map queryStats, boolean hasNextPage) { @@ -36,8 +36,10 @@ public ORemoteResultSet( this.hasNextPage = hasNextPage; if (db != null) { db.queryStarted(queryId, new OQueryDatabaseState(this)); - for (OResultInternal result : currentPage) { - result.bindToCache(db); + for (OResult result : currentPage) { + if (result instanceof OResultInternal) { + ((OResultInternal) result).bindToCache(db); + } } } } @@ -71,7 +73,7 @@ public OResult next() { if (currentPage.isEmpty()) { throw new IllegalStateException(); } - OResultInternal internal = currentPage.remove(0); + OResult internal = currentPage.remove(0); if (internal.isRecord() && db != null && db.getTransaction().isActive()) { ORecord record = db.getTransaction().getRecord(internal.getRecord().get().getIdentity()); @@ -114,7 +116,7 @@ public String getQueryId() { } public void fetched( - List result, + List result, boolean hasNextPage, Optional executionPlan, Map queryStats) { diff --git a/client/src/main/java/com/orientechnologies/orient/client/remote/message/OServerQueryResponse.java b/client/src/main/java/com/orientechnologies/orient/client/remote/message/OServerQueryResponse.java index 91f6c02468d..04506e95f33 100644 --- a/client/src/main/java/com/orientechnologies/orient/client/remote/message/OServerQueryResponse.java +++ b/client/src/main/java/com/orientechnologies/orient/client/remote/message/OServerQueryResponse.java @@ -21,7 +21,7 @@ public class OServerQueryResponse implements OBinaryResponse { private String queryId; private boolean txChanges; - private List result; + private List result; private Optional executionPlan; private boolean hasNextPage; private Map queryStats; @@ -30,7 +30,7 @@ public class OServerQueryResponse implements OBinaryResponse { public OServerQueryResponse( String queryId, boolean txChanges, - List result, + List result, Optional executionPlan, boolean hasNextPage, Map queryStats, @@ -141,7 +141,7 @@ public String getQueryId() { return queryId; } - public List getResult() { + public List getResult() { return result; } diff --git a/client/src/test/java/com/orientechnologies/orient/client/remote/message/OQueryResponseTest.java b/client/src/test/java/com/orientechnologies/orient/client/remote/message/OQueryResponseTest.java index 176f9ae4ef2..9fef04e4da3 100644 --- a/client/src/test/java/com/orientechnologies/orient/client/remote/message/OQueryResponseTest.java +++ b/client/src/test/java/com/orientechnologies/orient/client/remote/message/OQueryResponseTest.java @@ -19,7 +19,7 @@ public class OQueryResponseTest { @Test public void test() throws IOException { - List resuls = new ArrayList<>(); + List resuls = new ArrayList<>(); for (int i = 0; i < 10; i++) { OResultInternal item = new OResultInternal(); item.setProperty("name", "foo"); @@ -40,7 +40,7 @@ public void test() throws IOException { OQueryResponse newResponse = new OQueryResponse(); newResponse.read(channel, null); - Iterator responseRs = newResponse.getResult().iterator(); + Iterator responseRs = newResponse.getResult().iterator(); for (int i = 0; i < 10; i++) { Assert.assertTrue(responseRs.hasNext()); diff --git a/client/src/test/java/com/orientechnologies/orient/client/remote/message/OServerQueryResponseTest.java b/client/src/test/java/com/orientechnologies/orient/client/remote/message/OServerQueryResponseTest.java index 9916c8da36c..a99c316d425 100644 --- a/client/src/test/java/com/orientechnologies/orient/client/remote/message/OServerQueryResponseTest.java +++ b/client/src/test/java/com/orientechnologies/orient/client/remote/message/OServerQueryResponseTest.java @@ -15,7 +15,7 @@ public class OServerQueryResponseTest { @Test public void test() throws IOException { - List resuls = new ArrayList<>(); + List resuls = new ArrayList<>(); for (int i = 0; i < 10; i++) { OResultInternal item = new OResultInternal(); item.setProperty("name", "foo"); @@ -37,7 +37,7 @@ public void test() throws IOException { OServerQueryResponse newResponse = new OServerQueryResponse(); newResponse.read(channel, null); - Iterator responseRs = newResponse.getResult().iterator(); + Iterator responseRs = newResponse.getResult().iterator(); for (int i = 0; i < 10; i++) { Assert.assertTrue(responseRs.hasNext()); diff --git a/server/src/main/java/com/orientechnologies/orient/server/OConnectionBinaryExecutor.java b/server/src/main/java/com/orientechnologies/orient/server/OConnectionBinaryExecutor.java index 32bf0b1e9f3..eee9a1b8985 100755 --- a/server/src/main/java/com/orientechnologies/orient/server/OConnectionBinaryExecutor.java +++ b/server/src/main/java/com/orientechnologies/orient/server/OConnectionBinaryExecutor.java @@ -46,7 +46,6 @@ import com.orientechnologies.orient.core.serialization.serializer.record.ORecordSerializerFactory; import com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerNetworkV37; import com.orientechnologies.orient.core.sql.executor.OResult; -import com.orientechnologies.orient.core.sql.executor.OResultInternal; import com.orientechnologies.orient.core.sql.executor.OResultSet; import com.orientechnologies.orient.core.sql.parser.OLocalResultSetLifecycleDecorator; import com.orientechnologies.orient.core.sql.query.OSQLAsynchQuery; @@ -1300,16 +1299,11 @@ public OBinaryResponse executeServerQuery(OServerQueryRequest request) { } // copy the result-set to make sure that the execution is successful - Stream stream = rs.stream(); - List rsCopy = - stream.map((r) -> (OResultInternal) r).collect(Collectors.toList()); - - boolean hasNext = rs.hasNext(); - boolean txChanges = false; + List rsCopy = rs.stream().collect(Collectors.toList()); return new OServerQueryResponse( ((OLocalResultSetLifecycleDecorator) rs).getQueryId(), - txChanges, + false, rsCopy, rs.getExecutionPlan(), false, @@ -1358,8 +1352,7 @@ public OBinaryResponse executeQuery(OQueryRequest request) { .containsKey(((OLocalResultSetLifecycleDecorator) rs).getQueryId())) { stream = stream.limit(request.getRecordsPerPage()); } - List rsCopy = - stream.map((r) -> (OResultInternal) r).collect(Collectors.toList()); + List rsCopy = stream.collect(Collectors.toList()); boolean hasNext = rs.hasNext(); boolean txChanges = false; @@ -1405,13 +1398,13 @@ public OBinaryResponse executeQueryNextPage(OQueryNextPageRequest request) { try { orientDB.startCommand(Optional.empty()); // copy the result-set to make sure that the execution is successful - List rsCopy = new ArrayList<>(request.getRecordsPerPage()); + List rsCopy = new ArrayList<>(request.getRecordsPerPage()); int i = 0; // if it's OInternalResultSet it means that it's a Command, not a Query, so the result has to // be // sent as it is, not streamed while (rs.hasNext() && (rs.isDetached() || i < request.getRecordsPerPage())) { - rsCopy.add((OResultInternal) rs.next()); + rsCopy.add((OResult) rs.next()); i++; } boolean hasNext = rs.hasNext();