ignite-gg-10002 - removed unneeded marshalling-unmarshalling for local node


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/f8d5d445
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/f8d5d445
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/f8d5d445

Branch: refs/heads/gg-9998
Commit: f8d5d4457dae69966d94d5e43ba030d6ef97b435
Parents: e78ce56
Author: S.Vladykin <svlady...@gridgain.com>
Authored: Wed Apr 1 18:15:11 2015 +0300
Committer: S.Vladykin <svlady...@gridgain.com>
Committed: Wed Apr 1 18:15:11 2015 +0300

----------------------------------------------------------------------
 .../messages/GridQueryNextPageResponse.java     | 32 ++++++++------------
 .../query/h2/twostep/GridMapQueryExecutor.java  |  6 ++--
 .../query/h2/twostep/GridResultPage.java        |  9 +++++-
 3 files changed, 25 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8d5d445/modules/core/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/messages/GridQueryNextPageResponse.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/messages/GridQueryNextPageResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/messages/GridQueryNextPageResponse.java
index e798051..22f9cb4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/messages/GridQueryNextPageResponse.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/messages/GridQueryNextPageResponse.java
@@ -26,7 +26,7 @@ import java.nio.*;
 /**
  * Next page response.
  */
-public class GridQueryNextPageResponse implements Externalizable, Message {
+public class GridQueryNextPageResponse implements Message {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -45,6 +45,9 @@ public class GridQueryNextPageResponse implements 
Externalizable, Message {
     /** */
     private byte[] rows;
 
+    /** */
+    private transient Object plainRows;
+
     /**
      * For {@link Externalizable}.
      */
@@ -58,16 +61,18 @@ public class GridQueryNextPageResponse implements 
Externalizable, Message {
      * @param page Page.
      * @param allRows All rows count.
      * @param rows Rows.
+     * @param plainRows Not marshalled rows for local node.
      */
     public GridQueryNextPageResponse(long qryReqId, int qry, int page, int 
allRows,
-        byte[] rows) {
-        assert rows != null;
+        byte[] rows, Object plainRows) {
+        assert rows != null ^ plainRows != null;
 
         this.qryReqId = qryReqId;
         this.qry = qry;
         this.page = page;
         this.allRows = allRows;
         this.rows = rows;
+        this.plainRows = plainRows;
     }
 
     /**
@@ -105,22 +110,11 @@ public class GridQueryNextPageResponse implements 
Externalizable, Message {
         return rows;
     }
 
-    /** {@inheritDoc} */
-    @Override public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeLong(qryReqId);
-        out.writeInt(qry);
-        out.writeInt(page);
-        out.writeInt(allRows);
-        U.writeByteArray(out, rows);
-    }
-
-    /** {@inheritDoc} */
-    @Override public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
-        qryReqId = in.readLong();
-        qry = in.readInt();
-        page = in.readInt();
-        allRows = in.readInt();
-        rows = U.readByteArray(in);
+    /**
+     * @return Plain rows.
+     */
+    public Object plainRows() {
+        return plainRows;
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8d5d445/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
index 2f54943..a0718e5 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
@@ -309,10 +309,12 @@ public class GridMapQueryExecutor implements 
GridMessageListener {
         }
 
         try {
+            boolean loc = node.isLocal();
+
             GridQueryNextPageResponse msg = new 
GridQueryNextPageResponse(qr.qryReqId, qry, page,
-                page == 0 ? res.rowCount : -1, marshallRows(rows));
+                page == 0 ? res.rowCount : -1, loc ? null : 
marshallRows(rows), loc ? rows : null);
 
-            if (node.isLocal())
+            if (loc)
                 h2.reduceQueryExecutor().onMessage(ctx.localNodeId(), msg);
             else
                 ctx.io().send(node, GridTopic.TOPIC_QUERY, msg, 
GridIoPolicy.PUBLIC_POOL);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f8d5d445/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridResultPage.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridResultPage.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridResultPage.java
index e31829d..5f58b95 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridResultPage.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridResultPage.java
@@ -44,6 +44,7 @@ public class GridResultPage {
      * @param res Response.
      * @param last If this is the globally last page.
      */
+    @SuppressWarnings("unchecked")
     public GridResultPage(UUID src, GridQueryNextPageResponse res, boolean 
last) {
         assert src != null;
 
@@ -55,7 +56,13 @@ public class GridResultPage {
             assert res == null : "The last page must be dummy.";
 
         // res == null means that it is a terminating dummy page for the given 
source node ID.
-        rows = res == null ? Collections.<Value[]>emptySet() : 
GridMapQueryExecutor.unmarshallRows(res.rows());
+        if (res != null) {
+            Object plainRows = res.plainRows();
+
+            rows = plainRows != null ? (Collection<Value[]>)plainRows : 
GridMapQueryExecutor.unmarshallRows(res.rows());
+        }
+        else
+            rows = Collections.emptySet();
     }
 
     /**

Reply via email to