Repository: phoenix
Updated Branches:
  refs/heads/3.0 ab785b401 -> 2fb39574a


PHOENIX-981 Joins using Phoenix client on v.3.0.0 and server 3.0 head of branch 
fails on backward compatibility


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/2fb39574
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/2fb39574
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/2fb39574

Branch: refs/heads/3.0
Commit: 2fb39574ab80d83028612935c7c86b8906fb7472
Parents: ab785b4
Author: James Taylor <jtay...@salesforce.com>
Authored: Wed Jul 30 01:20:26 2014 -0700
Committer: James Taylor <jtay...@salesforce.com>
Committed: Wed Jul 30 01:20:26 2014 -0700

----------------------------------------------------------------------
 .../org/apache/phoenix/join/HashJoinInfo.java   | 23 +++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/2fb39574/phoenix-core/src/main/java/org/apache/phoenix/join/HashJoinInfo.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/join/HashJoinInfo.java 
b/phoenix-core/src/main/java/org/apache/phoenix/join/HashJoinInfo.java
index d00e802..ad96061 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/join/HashJoinInfo.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/join/HashJoinInfo.java
@@ -17,21 +17,25 @@
  */
 package org.apache.phoenix.join;
 
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.EOFException;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.io.WritableUtils;
-
 import org.apache.phoenix.expression.Expression;
 import org.apache.phoenix.expression.ExpressionType;
 import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr;
 import org.apache.phoenix.parse.JoinTableNode.JoinType;
 import org.apache.phoenix.schema.KeyValueSchema;
+import org.apache.phoenix.schema.KeyValueSchema.KeyValueSchemaBuilder;
 import org.apache.phoenix.schema.PColumn;
 import org.apache.phoenix.schema.PTable;
-import org.apache.phoenix.schema.KeyValueSchema.KeyValueSchemaBuilder;
 import org.apache.phoenix.util.SchemaUtil;
 
 public class HashJoinInfo {
@@ -211,8 +215,17 @@ public class HashJoinInfo {
                 postJoinFilterExpression = 
ExpressionType.values()[expressionOrdinal].newInstance();
                 postJoinFilterExpression.readFields(input);
             }
-            int limit = WritableUtils.readVInt(input);
-            boolean forceProjection = input.readBoolean();
+            int limit = -1;
+            boolean forceProjection = false;
+            // Read these and ignore if we don't find them as they were not
+            // present in Apache Phoenix 3.0.0 release. This allows a newer
+            // 3.1 server to work with an older 3.0 client without force
+            // both to be upgraded in lock step.
+            try {
+                limit = WritableUtils.readVInt(input);
+                forceProjection = input.readBoolean();
+            } catch (EOFException ignore) {
+            }
             return new HashJoinInfo(joinedSchema, joinIds, joinExpressions, 
joinTypes, earlyEvaluation, schemas, fieldPositions, postJoinFilterExpression, 
limit >= 0 ? limit : null, forceProjection);
         } catch (IOException e) {
             throw new RuntimeException(e);

Reply via email to