You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ma...@apache.org on 2015/04/24 04:23:17 UTC
phoenix git commit: PHOENIX-1773 Backward compatibility for joins
fail after PHOENIX-1489
Repository: phoenix
Updated Branches:
refs/heads/master 80898c06b -> 124ab6db0
PHOENIX-1773 Backward compatibility for joins fail after PHOENIX-1489
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/124ab6db
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/124ab6db
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/124ab6db
Branch: refs/heads/master
Commit: 124ab6db0b95fb30b287e1dfb2a626bd95546219
Parents: 80898c0
Author: maryannxue <we...@intel.com>
Authored: Thu Apr 23 22:23:05 2015 -0400
Committer: maryannxue <we...@intel.com>
Committed: Thu Apr 23 22:23:05 2015 -0400
----------------------------------------------------------------------
.../java/org/apache/phoenix/join/HashJoinInfo.java | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/124ab6db/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 ea78671..31718e5 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
@@ -50,9 +50,10 @@ public class HashJoinInfo {
private int[] fieldPositions;
private Expression postJoinFilterExpression;
private Integer limit;
-
+ private boolean forceProjection; // always true now, but for backward compatibility.
+
public HashJoinInfo(PTable joinedTable, ImmutableBytesPtr[] joinIds, List<Expression>[] joinExpressions, JoinType[] joinTypes, boolean[] earlyEvaluation, PTable[] tables, int[] fieldPositions, Expression postJoinFilterExpression, Integer limit) {
- this(buildSchema(joinedTable), joinIds, joinExpressions, joinTypes, earlyEvaluation, buildSchemas(tables), fieldPositions, postJoinFilterExpression, limit);
+ this(buildSchema(joinedTable), joinIds, joinExpressions, joinTypes, earlyEvaluation, buildSchemas(tables), fieldPositions, postJoinFilterExpression, limit, true);
}
private static KeyValueSchema[] buildSchemas(PTable[] tables) {
@@ -75,7 +76,7 @@ public class HashJoinInfo {
return builder.build();
}
- private HashJoinInfo(KeyValueSchema joinedSchema, ImmutableBytesPtr[] joinIds, List<Expression>[] joinExpressions, JoinType[] joinTypes, boolean[] earlyEvaluation, KeyValueSchema[] schemas, int[] fieldPositions, Expression postJoinFilterExpression, Integer limit) {
+ private HashJoinInfo(KeyValueSchema joinedSchema, ImmutableBytesPtr[] joinIds, List<Expression>[] joinExpressions, JoinType[] joinTypes, boolean[] earlyEvaluation, KeyValueSchema[] schemas, int[] fieldPositions, Expression postJoinFilterExpression, Integer limit, boolean forceProjection) {
this.joinedSchema = joinedSchema;
this.joinIds = joinIds;
this.joinExpressions = joinExpressions;
@@ -85,6 +86,7 @@ public class HashJoinInfo {
this.fieldPositions = fieldPositions;
this.postJoinFilterExpression = postJoinFilterExpression;
this.limit = limit;
+ this.forceProjection = forceProjection;
}
public KeyValueSchema getJoinedSchema() {
@@ -124,7 +126,7 @@ public class HashJoinInfo {
}
public boolean forceProjection() {
- return true;
+ return forceProjection;
}
public static void serializeHashJoinIntoScan(Scan scan, HashJoinInfo joinInfo) {
@@ -153,7 +155,7 @@ public class HashJoinInfo {
WritableUtils.writeVInt(output, -1);
}
WritableUtils.writeVInt(output, joinInfo.limit == null ? -1 : joinInfo.limit);
- output.writeBoolean(true);
+ output.writeBoolean(joinInfo.forceProjection);
scan.setAttribute(HASH_JOIN, stream.toByteArray());
} catch (IOException e) {
throw new RuntimeException(e);
@@ -210,16 +212,17 @@ public class HashJoinInfo {
postJoinFilterExpression.readFields(input);
}
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);
- input.readBoolean(); // discarded info in new versions
+ forceProjection = input.readBoolean();
} catch (EOFException ignore) {
}
- return new HashJoinInfo(joinedSchema, joinIds, joinExpressions, joinTypes, earlyEvaluation, schemas, fieldPositions, postJoinFilterExpression, limit >= 0 ? limit : null);
+ return new HashJoinInfo(joinedSchema, joinIds, joinExpressions, joinTypes, earlyEvaluation, schemas, fieldPositions, postJoinFilterExpression, limit >= 0 ? limit : null, forceProjection);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {