Repository: phoenix Updated Branches: refs/heads/3.0 87fe59e5b -> 2d250fbff
PHOENIX-1281 Each MultiKeyValueTuple.setKeyValues creates a new immutable list object. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/2d250fbf Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/2d250fbf Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/2d250fbf Branch: refs/heads/3.0 Commit: 2d250fbff324baad75af7bd1fe1879e602fede1d Parents: 87fe59e Author: Lars Hofhansl <[email protected]> Authored: Thu Sep 25 08:50:22 2014 -0700 Committer: Lars Hofhansl <[email protected]> Committed: Thu Sep 25 08:50:22 2014 -0700 ---------------------------------------------------------------------- .../java/org/apache/phoenix/coprocessor/ScanRegionObserver.java | 5 ++++- .../org/apache/phoenix/schema/tuple/MultiKeyValueTuple.java | 5 ++--- 2 files changed, 6 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d250fbf/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/ScanRegionObserver.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/ScanRegionObserver.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/ScanRegionObserver.java index b5682af..4389426 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/ScanRegionObserver.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/ScanRegionObserver.java @@ -25,7 +25,9 @@ import java.io.IOException; import java.util.List; import java.util.Set; +import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; + import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.KeyValue; @@ -375,7 +377,8 @@ public class ScanRegionObserver extends BaseScannerRegionObserver { private void replaceArrayIndexElement(final Set<KeyValueColumnExpression> arrayKVRefs, final Expression[] arrayFuncRefs, List<KeyValue> result) { - MultiKeyValueTuple tuple = new MultiKeyValueTuple(result); + // make a copy of the results array here, as we're modifying it below + MultiKeyValueTuple tuple = new MultiKeyValueTuple(ImmutableList.copyOf(result)); // The size of both the arrays would be same? // Using KeyValueSchema to set and retrieve the value // collect the first kv to get the row http://git-wip-us.apache.org/repos/asf/phoenix/blob/2d250fbf/phoenix-core/src/main/java/org/apache/phoenix/schema/tuple/MultiKeyValueTuple.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/tuple/MultiKeyValueTuple.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/tuple/MultiKeyValueTuple.java index 7380d1d..dd35aef 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/tuple/MultiKeyValueTuple.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/tuple/MultiKeyValueTuple.java @@ -24,8 +24,6 @@ import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.phoenix.hbase.index.util.GenericKeyValueBuilder; import org.apache.phoenix.util.KeyValueUtil; -import com.google.common.collect.ImmutableList; - public class MultiKeyValueTuple extends BaseTuple { private List<KeyValue> values; @@ -37,8 +35,9 @@ public class MultiKeyValueTuple extends BaseTuple { public MultiKeyValueTuple() { } + /** Caller must not modify the list that is passed here */ public void setKeyValues(List<KeyValue> values) { - this.values = ImmutableList.copyOf(values); + this.values = values; } @Override
