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

Reply via email to