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);