You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/01/23 18:20:44 UTC

[08/33] git commit: Fixes NPE issue in the union iterator

Fixes NPE issue in the union iterator


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/5d75a299
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/5d75a299
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/5d75a299

Branch: refs/pull/30/head
Commit: 5d75a2992475ab907b15e4a2f86ab50ae89a1e40
Parents: 9dd14f1
Author: Todd Nine <tn...@apigee.com>
Authored: Mon Jan 20 18:18:15 2014 -0800
Committer: Todd Nine <tn...@apigee.com>
Committed: Mon Jan 20 18:18:15 2014 -0800

----------------------------------------------------------------------
 .../query/ir/result/UnionIterator.java          |  9 ++-
 .../query/ir/result/UnionIteratorTest.java      | 70 ++++++++++++++++++++
 2 files changed, 78 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d75a299/stack/core/src/main/java/org/usergrid/persistence/query/ir/result/UnionIterator.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/query/ir/result/UnionIterator.java b/stack/core/src/main/java/org/usergrid/persistence/query/ir/result/UnionIterator.java
index efd4e3d..00e90b8 100644
--- a/stack/core/src/main/java/org/usergrid/persistence/query/ir/result/UnionIterator.java
+++ b/stack/core/src/main/java/org/usergrid/persistence/query/ir/result/UnionIterator.java
@@ -58,7 +58,14 @@ public class UnionIterator extends MultiIterator {
         super( pageSize );
 
         this.id = id;
-        list = new SortedColumnList( pageSize, UUID_SERIALIZER.fromByteBuffer( minUuid ) );
+
+        UUID parseMinUuid = null;
+
+        if(minUuid != null)      {
+            parseMinUuid = UUID_SERIALIZER.fromByteBuffer( minUuid );
+        }
+
+        list = new SortedColumnList( pageSize, parseMinUuid );
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d75a299/stack/core/src/test/java/org/usergrid/persistence/query/ir/result/UnionIteratorTest.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/usergrid/persistence/query/ir/result/UnionIteratorTest.java b/stack/core/src/test/java/org/usergrid/persistence/query/ir/result/UnionIteratorTest.java
index 683f00d..8fd9ea8 100644
--- a/stack/core/src/test/java/org/usergrid/persistence/query/ir/result/UnionIteratorTest.java
+++ b/stack/core/src/test/java/org/usergrid/persistence/query/ir/result/UnionIteratorTest.java
@@ -16,6 +16,7 @@
 package org.usergrid.persistence.query.ir.result;
 
 
+import java.nio.ByteBuffer;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.UUID;
@@ -23,6 +24,8 @@ import java.util.UUID;
 import org.junit.Test;
 import org.usergrid.utils.UUIDUtils;
 
+import me.prettyprint.cassandra.serializers.UUIDSerializer;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
@@ -295,6 +298,73 @@ public class UnionIteratorTest {
     }
 
 
+    @Test
+    public void nullCursorBytes() {
+
+        UUID id1 = UUIDUtils.minTimeUUID( 1 );
+        UUID id2 = UUIDUtils.minTimeUUID( 2 );
+        UUID id3 = UUIDUtils.minTimeUUID( 3 );
+        UUID id4 = UUIDUtils.minTimeUUID( 4 );
+        UUID id5 = UUIDUtils.minTimeUUID( 5 );
+
+
+        InOrderIterator second = new InOrderIterator( 100 );
+        second.add( id1 );
+        second.add( id2 );
+        second.add( id3 );
+        second.add( id4 );
+        second.add( id5 );
+
+        UnionIterator union = new UnionIterator( 100, 1, null );
+
+        union.addIterator( second );
+
+        Set<ScanColumn> ids = union.next();
+
+        // now make sure it's right, only 1, 3 and 8 intersect
+        assertTrue( ids.contains( uuidColumn( id1 ) ) );
+        assertTrue( ids.contains( uuidColumn( id2 ) ) );
+        assertTrue( ids.contains( uuidColumn( id3 ) ) );
+        assertTrue( ids.contains( uuidColumn( id4 ) ) );
+        assertTrue( ids.contains( uuidColumn( id5 ) ) );
+    }
+
+
+    @Test
+    public void validCursorBytes() {
+
+
+        ByteBuffer cursor = UUIDSerializer.get().toByteBuffer( UUIDUtils.minTimeUUID( 4 ) );
+
+        UUID id1 = UUIDUtils.minTimeUUID( 1 );
+        UUID id2 = UUIDUtils.minTimeUUID( 2 );
+        UUID id3 = UUIDUtils.minTimeUUID( 3 );
+        UUID id4 = UUIDUtils.minTimeUUID( 4 );
+        UUID id5 = UUIDUtils.minTimeUUID( 5 );
+
+
+        InOrderIterator second = new InOrderIterator( 100 );
+        second.add( id1 );
+        second.add( id2 );
+        second.add( id3 );
+        second.add( id4 );
+        second.add( id5 );
+
+        UnionIterator union = new UnionIterator( 100, 1, cursor );
+
+        union.addIterator( second );
+
+        Set<ScanColumn> ids = union.next();
+
+        // now make sure it's right, only 1, 3 and 8 intersect
+        assertFalse( ids.contains( uuidColumn( id1 ) ) );
+        assertFalse( ids.contains( uuidColumn( id2 ) ) );
+        assertFalse( ids.contains( uuidColumn( id3 ) ) );
+        assertFalse( ids.contains( uuidColumn( id4 ) ) );
+        assertTrue( ids.contains( uuidColumn( id5 ) ) );
+    }
+
+
     private void reverse( UUID[] array ) {
 
         UUID temp = null;