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 2015/07/30 19:19:41 UTC
[03/25] incubator-usergrid git commit: Added comparator chain so that
we can merge correctly
Added comparator chain so that we can merge correctly
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/1fe69065
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/1fe69065
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/1fe69065
Branch: refs/heads/master
Commit: 1fe69065b299797e1c2b40b59fa2fc567ed1f5e6
Parents: aa31768
Author: Todd Nine <tn...@apigee.com>
Authored: Wed Jun 17 17:07:34 2015 -0600
Committer: Todd Nine <tn...@apigee.com>
Committed: Wed Jun 17 17:07:34 2015 -0600
----------------------------------------------------------------------
.../persistence/cassandra/QueryProcessor.java | 7 +-
.../cassandra/RelationManagerImpl.java | 30 +++++---
.../index/DynamicCompositeComparator.java | 43 +++++++++++
.../DynamicCompositeForwardComparator.java | 40 +++++++++++
.../DynamicCompositeReverseComparator.java | 39 ++++++++++
.../index/IndexMultiBucketSetLoader.java | 55 --------------
.../cassandra/index/NoOpIndexScanner.java | 7 +-
.../persistence/geo/EntityLocationRef.java | 21 ++++--
.../persistence/query/ir/SearchVisitor.java | 2 +-
.../query/ir/result/AbstractScanColumn.java | 42 ++++++++++-
.../ir/result/ConnectionIndexSliceParser.java | 10 +--
.../result/ConnectionSearchVisitorFactory.java | 2 +-
.../query/ir/result/GatherIterator.java | 76 +++++++++++++++++++-
.../query/ir/result/GeoIterator.java | 24 +++++++
.../persistence/query/ir/result/ScanColumn.java | 23 +++++-
.../ir/result/SearchCollectionVisitor.java | 2 +-
.../ir/result/SearchConnectionVisitor.java | 2 +-
.../ir/result/SecondaryIndexSliceParser.java | 16 +++--
.../query/ir/result/SliceParser.java | 4 +-
.../query/ir/result/StaticIdIterator.java | 2 +-
.../persistence/query/ir/result/UUIDColumn.java | 50 +++++++++++++
.../query/ir/result/UUIDIndexSliceParser.java | 13 ++--
.../query/ir/result/UnionIterator.java | 42 ++---------
.../query/ir/result/AbstractScanColumnTest.java | 2 +-
24 files changed, 411 insertions(+), 143 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/QueryProcessor.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/QueryProcessor.java b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/QueryProcessor.java
index 78392a4..f55aa67 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/QueryProcessor.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/QueryProcessor.java
@@ -267,11 +267,12 @@ public class QueryProcessor {
return null;
}
- //use the gather iterator to collect all the
+ //use the gather iterator to collect all the '
+ final int resultSetSize = Math.min( size, Query.MAX_LIMIT );
- ResultIterator itr = new GatherIterator(rootNode, searchVisitorFactory.createVisitors() );
+ ResultIterator itr = new GatherIterator(resultSetSize, rootNode, searchVisitorFactory.createVisitors() );
- List<ScanColumn> entityIds = new ArrayList<ScanColumn>( Math.min( size, Query.MAX_LIMIT ) );
+ List<ScanColumn> entityIds = new ArrayList<ScanColumn>( );
CursorCache resultsCursor = new CursorCache();
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/RelationManagerImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/RelationManagerImpl.java b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/RelationManagerImpl.java
index 0e5011f..977dad0 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/RelationManagerImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/RelationManagerImpl.java
@@ -58,7 +58,9 @@ import org.apache.usergrid.persistence.geo.EntityLocationRef;
import org.apache.usergrid.persistence.hector.CountingMutator;
import org.apache.usergrid.persistence.query.ir.QuerySlice;
import org.apache.usergrid.persistence.query.ir.result.CollectionResultsLoaderFactory;
+import org.apache.usergrid.persistence.query.ir.result.CollectionSearchVisitorFactory;
import org.apache.usergrid.persistence.query.ir.result.ConnectionResultsLoaderFactory;
+import org.apache.usergrid.persistence.query.ir.result.ConnectionSearchVisitorFactory;
import org.apache.usergrid.persistence.query.ir.result.ConnectionTypesIterator;
import org.apache.usergrid.persistence.query.ir.result.SearchCollectionVisitor;
import org.apache.usergrid.persistence.query.ir.result.SearchConnectionVisitor;
@@ -1720,9 +1722,11 @@ public class RelationManagerImpl implements RelationManager {
// we have something to search with, visit our tree and evaluate the
// results
QueryProcessor qp = new QueryProcessor( query, collection, em, factory );
- SearchCollectionVisitor visitor = new SearchCollectionVisitor( this, qp );
- return qp.getResults( visitor );
+ CollectionSearchVisitorFactory collectionSearchVisitorFactory = new CollectionSearchVisitorFactory( cass, indexBucketLocator, qp, applicationId, headEntity, collectionName );
+// SearchCollectionVisitor visitor = new SearchCollectionVisitor( this, qp );
+
+ return qp.getResults( collectionSearchVisitorFactory );
}
@@ -1914,9 +1918,12 @@ public class RelationManagerImpl implements RelationManager {
final ConnectionResultsLoaderFactory factory = new ConnectionResultsLoaderFactory( connectionRef );
QueryProcessor qp = new QueryProcessor( query, null, em, factory );
- SearchConnectionVisitor visitor = new SearchConnectionVisitor( this, qp, connectionRef, true );
- return qp.getResults( visitor );
+ ConnectionSearchVisitorFactory collectionSearchVisitorFactory = new ConnectionSearchVisitorFactory( cass, indexBucketLocator, qp, applicationId, headEntity, connectionRef, true, "" );
+
+// SearchConnectionVisitor visitor = new SearchConnectionVisitor( this, qp, connectionRef, true );
+
+ return qp.getResults( collectionSearchVisitorFactory );
}
@@ -1956,9 +1963,13 @@ public class RelationManagerImpl implements RelationManager {
final ConnectionResultsLoaderFactory factory = new ConnectionResultsLoaderFactory( connectionRef );
QueryProcessor qp = new QueryProcessor( query, null, em, factory );
- SearchConnectionVisitor visitor = new SearchConnectionVisitor( this, qp, connectionRef, false );
- return qp.getResults( visitor );
+
+ ConnectionSearchVisitorFactory collectionSearchVisitorFactory = new ConnectionSearchVisitorFactory( cass, indexBucketLocator, qp, applicationId, headEntity, connectionRef, false, "" );
+
+// SearchConnectionVisitor visitor = new SearchConnectionVisitor( this, qp, connectionRef, false );
+
+ return qp.getResults( collectionSearchVisitorFactory );
}
@@ -1995,9 +2006,12 @@ public class RelationManagerImpl implements RelationManager {
final ConnectionResultsLoaderFactory factory = new ConnectionResultsLoaderFactory( connectionRef );
QueryProcessor qp = new QueryProcessor( query, null, em, factory );
- SearchConnectionVisitor visitor = new SearchConnectionVisitor( this, qp, connectionRef, true );
- return qp.getResults( visitor );
+ ConnectionSearchVisitorFactory collectionSearchVisitorFactory = new ConnectionSearchVisitorFactory( cass, indexBucketLocator, qp, applicationId, headEntity, connectionRef, false, "" );
+
+// SearchConnectionVisitor visitor = new SearchConnectionVisitor( this, qp, connectionRef, true );
+
+ return qp.getResults( collectionSearchVisitorFactory );
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/DynamicCompositeComparator.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/DynamicCompositeComparator.java b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/DynamicCompositeComparator.java
new file mode 100644
index 0000000..436c3fd
--- /dev/null
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/DynamicCompositeComparator.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.persistence.cassandra.index;
+
+
+import java.nio.ByteBuffer;
+import java.util.Comparator;
+
+import org.apache.cassandra.db.marshal.AbstractType;
+import org.apache.cassandra.db.marshal.TypeParser;
+
+import org.apache.usergrid.persistence.cassandra.ApplicationCF;
+
+
+public abstract class DynamicCompositeComparator implements Comparator<ByteBuffer> {
+ @SuppressWarnings("rawtypes")
+ protected final AbstractType dynamicComposite;
+
+
+ protected DynamicCompositeComparator( ApplicationCF cf ) {
+ // should never happen, this will blow up during development if this fails
+ try {
+ dynamicComposite = TypeParser.parse( cf.getComparator() );
+ }
+ catch ( Exception e ) {
+ throw new RuntimeException( e );
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/DynamicCompositeForwardComparator.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/DynamicCompositeForwardComparator.java b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/DynamicCompositeForwardComparator.java
new file mode 100644
index 0000000..a61d422
--- /dev/null
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/DynamicCompositeForwardComparator.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.persistence.cassandra.index;
+
+
+import java.nio.ByteBuffer;
+
+import org.apache.usergrid.persistence.cassandra.ApplicationCF;
+
+
+class DynamicCompositeForwardComparator extends DynamicCompositeComparator {
+
+ /**
+ * @param cf
+ */
+ protected DynamicCompositeForwardComparator( ApplicationCF cf ) {
+ super( cf );
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare( ByteBuffer o1, ByteBuffer o2 ) {
+ return dynamicComposite.compare( o1, o2 );
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/DynamicCompositeReverseComparator.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/DynamicCompositeReverseComparator.java b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/DynamicCompositeReverseComparator.java
new file mode 100644
index 0000000..4ff333a
--- /dev/null
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/DynamicCompositeReverseComparator.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.persistence.cassandra.index;
+
+
+import java.nio.ByteBuffer;
+
+import org.apache.usergrid.persistence.cassandra.ApplicationCF;
+
+
+class DynamicCompositeReverseComparator extends DynamicCompositeComparator {
+ /**
+ * @param cf
+ */
+ protected DynamicCompositeReverseComparator( ApplicationCF cf ) {
+ super( cf );
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare( ByteBuffer o1, ByteBuffer o2 ) {
+ return dynamicComposite.compare( o2, o1 );
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/IndexMultiBucketSetLoader.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/IndexMultiBucketSetLoader.java b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/IndexMultiBucketSetLoader.java
index 30b54ba..a90f890 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/IndexMultiBucketSetLoader.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/IndexMultiBucketSetLoader.java
@@ -27,9 +27,6 @@ import java.util.UUID;
import org.apache.usergrid.persistence.cassandra.ApplicationCF;
import org.apache.usergrid.persistence.cassandra.CassandraService;
-import org.apache.cassandra.db.marshal.AbstractType;
-import org.apache.cassandra.db.marshal.TypeParser;
-
import me.prettyprint.hector.api.beans.HColumn;
@@ -84,56 +81,4 @@ public class IndexMultiBucketSetLoader {
return resultsTree;
}
-
-
- private static abstract class DynamicCompositeComparator implements Comparator<ByteBuffer> {
- @SuppressWarnings("rawtypes")
- protected final AbstractType dynamicComposite;
-
-
- protected DynamicCompositeComparator( ApplicationCF cf ) {
- // should never happen, this will blow up during development if this fails
- try {
- dynamicComposite = TypeParser.parse( cf.getComparator() );
- }
- catch ( Exception e ) {
- throw new RuntimeException( e );
- }
- }
- }
-
-
- private static class DynamicCompositeForwardComparator extends DynamicCompositeComparator {
-
- /**
- * @param cf
- */
- protected DynamicCompositeForwardComparator( ApplicationCF cf ) {
- super( cf );
- }
-
-
- @SuppressWarnings("unchecked")
- @Override
- public int compare( ByteBuffer o1, ByteBuffer o2 ) {
- return dynamicComposite.compare( o1, o2 );
- }
- }
-
-
- private static class DynamicCompositeReverseComparator extends DynamicCompositeComparator {
- /**
- * @param cf
- */
- protected DynamicCompositeReverseComparator( ApplicationCF cf ) {
- super( cf );
- }
-
-
- @SuppressWarnings("unchecked")
- @Override
- public int compare( ByteBuffer o1, ByteBuffer o2 ) {
- return dynamicComposite.compare( o2, o1 );
- }
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/NoOpIndexScanner.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/NoOpIndexScanner.java b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/NoOpIndexScanner.java
index 3d1b9d7..01002d6 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/NoOpIndexScanner.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/cassandra/index/NoOpIndexScanner.java
@@ -19,8 +19,7 @@ package org.apache.usergrid.persistence.cassandra.index;
import java.nio.ByteBuffer;
import java.util.Iterator;
-import java.util.NavigableSet;
-import java.util.Set;
+import java.util.List;
import me.prettyprint.hector.api.beans.HColumn;
@@ -44,7 +43,7 @@ public class NoOpIndexScanner implements IndexScanner {
* @see java.lang.Iterable#iterator()
*/
@Override
- public Iterator<Set<HColumn<ByteBuffer, ByteBuffer>>> iterator() {
+ public Iterator<List<HColumn<ByteBuffer, ByteBuffer>>> iterator() {
return this;
}
@@ -71,7 +70,7 @@ public class NoOpIndexScanner implements IndexScanner {
* @see java.util.Iterator#next()
*/
@Override
- public NavigableSet<HColumn<ByteBuffer, ByteBuffer>> next() {
+ public List<HColumn<ByteBuffer, ByteBuffer>> next() {
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/geo/EntityLocationRef.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/geo/EntityLocationRef.java b/stack/core/src/main/java/org/apache/usergrid/persistence/geo/EntityLocationRef.java
index 59db1d9..05db619 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/geo/EntityLocationRef.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/geo/EntityLocationRef.java
@@ -30,7 +30,7 @@ import static org.apache.usergrid.utils.StringUtils.stringOrSubstringAfterLast;
import static org.apache.usergrid.utils.StringUtils.stringOrSubstringBeforeFirst;
-public class EntityLocationRef implements EntityRef {
+public class EntityLocationRef implements EntityRef, Comparable<EntityLocationRef> {
private UUID uuid;
@@ -45,10 +45,6 @@ public class EntityLocationRef implements EntityRef {
private double distance;
- public EntityLocationRef() {
- }
-
-
public EntityLocationRef( EntityRef entity, double latitude, double longitude ) {
this( entity.getType(), entity.getUuid(), latitude, longitude );
}
@@ -224,4 +220,19 @@ public class EntityLocationRef implements EntityRef {
}
return true;
}
+
+
+ /**
+ * Compares 2 locations by comparing their distance
+ * @param other
+ * @return
+ */
+ @Override
+ public int compareTo( final EntityLocationRef other ) {
+ if(other == null){
+ return 1;
+ }
+
+ return Double.compare( distance, other.distance );
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/SearchVisitor.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/SearchVisitor.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/SearchVisitor.java
index 0512cb2..410b99f 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/SearchVisitor.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/SearchVisitor.java
@@ -162,7 +162,7 @@ public abstract class SearchVisitor implements NodeVisitor {
final int nodeId = node.getId();
- UnionIterator union = new UnionIterator( queryProcessor.getPageSizeHint( node ), nodeId, queryProcessor.getCursorCache(nodeId ) );
+ UnionIterator union = new UnionIterator( queryProcessor.getPageSizeHint( node ), nodeId, queryProcessor.getCursorCache( nodeId ) );
if ( left != null ) {
union.addIterator( left );
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/AbstractScanColumn.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/AbstractScanColumn.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/AbstractScanColumn.java
index fc4a1d6..e4515fb 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/AbstractScanColumn.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/AbstractScanColumn.java
@@ -21,6 +21,8 @@ import java.nio.ByteBuffer;
import java.util.UUID;
import org.apache.cassandra.utils.ByteBufferUtil;
+import org.apache.usergrid.persistence.cassandra.index.DynamicCompositeComparator;
+
/**
*
@@ -31,11 +33,14 @@ public abstract class AbstractScanColumn implements ScanColumn {
private final UUID uuid;
private final ByteBuffer buffer;
+ private final DynamicCompositeComparator cfComparator;
+ private ScanColumn child;
- protected AbstractScanColumn( UUID uuid, ByteBuffer buffer ) {
+ protected AbstractScanColumn( final UUID uuid, final ByteBuffer columnNameBuffer, final DynamicCompositeComparator cfComparator ) {
this.uuid = uuid;
- this.buffer = buffer;
+ this.buffer = columnNameBuffer;
+ this.cfComparator = cfComparator;
}
@@ -80,4 +85,37 @@ public abstract class AbstractScanColumn implements ScanColumn {
", buffer=" + ByteBufferUtil.bytesToHex( buffer ) +
'}';
}
+
+
+ @Override
+ public void setChild( final ScanColumn childColumn ) {
+ this.child = childColumn;
+ }
+
+
+ @Override
+ public ScanColumn getChild() {
+ return child;
+ }
+
+
+ @Override
+ public int compareTo( final ScanColumn otherScanColumn ) {
+
+ if(otherScanColumn == null){
+ return 1;
+ }
+
+
+ final int compare = cfComparator.compare( buffer, otherScanColumn.getCursorValue() );
+
+ //equal, recurse. otherScanColumn is implicitly not null from above check
+ if(compare == 0 && child != null){
+ return child.compareTo( otherScanColumn.getChild() );
+ }
+
+
+ return 0;
+
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ConnectionIndexSliceParser.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ConnectionIndexSliceParser.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ConnectionIndexSliceParser.java
index 33822f5..ae3b0b5 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ConnectionIndexSliceParser.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ConnectionIndexSliceParser.java
@@ -21,6 +21,7 @@ import java.nio.ByteBuffer;
import java.util.UUID;
import org.apache.usergrid.persistence.Schema;
+import org.apache.usergrid.persistence.cassandra.index.DynamicCompositeComparator;
import me.prettyprint.hector.api.beans.DynamicComposite;
@@ -45,7 +46,7 @@ public class ConnectionIndexSliceParser implements SliceParser {
* @see org.apache.usergrid.persistence.query.ir.result.SliceParser#parse(java.nio.ByteBuffer)
*/
@Override
- public ScanColumn parse( ByteBuffer buff ) {
+ public ScanColumn parse( ByteBuffer buff, final DynamicCompositeComparator cfComparator ) {
DynamicComposite composite = DynamicComposite.fromByteBuffer( buff.duplicate() );
String connectedType = ( String ) composite.get( 1 );
@@ -62,19 +63,20 @@ public class ConnectionIndexSliceParser implements SliceParser {
return null;
}
- return new ConnectionColumn( ( UUID ) composite.get( 0 ), connectedType, buff );
+ return new ConnectionColumn( ( UUID ) composite.get( 0 ), connectedType, buff , cfComparator);
// return composite;
// return null;
}
+
public static class ConnectionColumn extends AbstractScanColumn {
private final String connectedType;
- public ConnectionColumn( UUID uuid, String connectedType, ByteBuffer column ) {
- super( uuid, column );
+ public ConnectionColumn( UUID uuid, String connectedType, ByteBuffer column, final DynamicCompositeComparator cfComparator ) {
+ super( uuid, column, cfComparator );
this.connectedType = connectedType;
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ConnectionSearchVisitorFactory.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ConnectionSearchVisitorFactory.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ConnectionSearchVisitorFactory.java
index c1ec724..54eeb01 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ConnectionSearchVisitorFactory.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ConnectionSearchVisitorFactory.java
@@ -42,7 +42,7 @@ public class ConnectionSearchVisitorFactory implements SearchVisitorFactory {
private final String[] prefix;
- private ConnectionSearchVisitorFactory( final CassandraService cassandraService,
+ public ConnectionSearchVisitorFactory( final CassandraService cassandraService,
final IndexBucketLocator indexBucketLocator,
final QueryProcessor queryProcessor, final UUID applicationId,
final EntityRef headEntity, ConnectionRefImpl connectionRef,
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/GatherIterator.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/GatherIterator.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/GatherIterator.java
index 48e2301..29912cc 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/GatherIterator.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/GatherIterator.java
@@ -3,9 +3,13 @@ package org.apache.usergrid.persistence.query.ir.result;
import java.util.Collection;
import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.NoSuchElementException;
import java.util.Set;
+import java.util.TreeSet;
import java.util.UUID;
+import org.apache.usergrid.persistence.ResultsIterator;
import org.apache.usergrid.persistence.cassandra.CursorCache;
import org.apache.usergrid.persistence.query.ir.QueryNode;
import org.apache.usergrid.persistence.query.ir.SearchVisitor;
@@ -19,9 +23,14 @@ public class GatherIterator implements ResultIterator {
private final Collection<SearchVisitor> searchVisitors;
private final QueryNode rootNode;
+ private final int pageSize;
- public GatherIterator( final QueryNode rootNode, final Collection<SearchVisitor> searchVisitors) {
+ private Set<ScanColumn> next;
+
+
+ public GatherIterator(final int pageSize, final QueryNode rootNode, final Collection<SearchVisitor> searchVisitors) {
+ this.pageSize = pageSize;
this.rootNode = rootNode;
this.searchVisitors = searchVisitors;
}
@@ -47,12 +56,73 @@ public class GatherIterator implements ResultIterator {
@Override
public boolean hasNext() {
- return false;
+
+ if(next() == null){
+ advance();
+ }
+
+ return next != null;
}
@Override
public Set<ScanColumn> next() {
- return null;
+ if(!hasNext()){
+ throw new NoSuchElementException( "No more elements" );
+ }
+
+ final Set<ScanColumn> results = next;
+ next = null;
+ return results;
+ }
+
+
+ /**
+ * Advance the iterator
+ */
+ private void advance(){
+ //TODO make this concurrent
+
+
+ final TreeSet<ScanColumn> results = new TreeSet<ScanColumn>( );
+
+
+ for(SearchVisitor visitor: searchVisitors){
+ merge(results, visitor);
+ }
+
+ this.next = results;
+ }
+
+
+ /**
+ * Merge this interator into our final column results
+ * @param results
+ * @param visitor
+ */
+ private void merge(final TreeSet<ScanColumn> results, final SearchVisitor visitor){
+
+ final ResultIterator iterator = visitor.getResults();
+
+
+ //nothing to do, return
+ if( !iterator.hasNext()){
+ return;
+ }
+
+
+ final Iterator<ScanColumn> nextPage = iterator.next().iterator();
+
+
+ //only take from the iterator what we need to create a full page.
+ for(int i = 0 ; i < pageSize && nextPage.hasNext(); i ++){
+ results.add( nextPage.next() );
+
+ //results are too large, trim them
+ if(results.size() > pageSize){
+ results.pollLast();
+ }
+ }
+
}
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/GeoIterator.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/GeoIterator.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/GeoIterator.java
index 92f6f03..4ecbb5a 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/GeoIterator.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/GeoIterator.java
@@ -308,6 +308,7 @@ public class GeoIterator implements ResultIterator {
private class LocationScanColumn implements ScanColumn {
private final EntityLocationRef location;
+ private ScanColumn child;
public LocationScanColumn( EntityLocationRef location ) {
@@ -329,6 +330,18 @@ public class GeoIterator implements ResultIterator {
@Override
+ public void setChild( final ScanColumn childColumn ) {
+ this.child = childColumn;
+ }
+
+
+ @Override
+ public ScanColumn getChild() {
+ return this.child;
+ }
+
+
+ @Override
public boolean equals( Object o ) {
if ( this == o ) {
return true;
@@ -347,5 +360,16 @@ public class GeoIterator implements ResultIterator {
public int hashCode() {
return location.getUuid().hashCode();
}
+
+
+ @Override
+ public int compareTo( final ScanColumn o ) {
+
+ if(!(o instanceof LocationScanColumn)){
+ throw new UnsupportedOperationException( "Cannot compare another ScanColumn that is not an instance of LocationScanColumn" );
+ }
+
+ return this.location.compareTo( ((LocationScanColumn)o).location );
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ScanColumn.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ScanColumn.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ScanColumn.java
index 289fe86..18277e4 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ScanColumn.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/ScanColumn.java
@@ -20,13 +20,30 @@ package org.apache.usergrid.persistence.query.ir.result;
import java.nio.ByteBuffer;
import java.util.UUID;
+import org.apache.usergrid.persistence.cassandra.index.DynamicCompositeComparator;
+
/** An interface that represents a column */
-public interface ScanColumn {
+public interface ScanColumn extends Comparable<ScanColumn> {
/** Get the uuid from the column */
- public UUID getUUID();
+ UUID getUUID();
/** Get the cursor value of this column */
- public ByteBuffer getCursorValue();
+ ByteBuffer getCursorValue();
+
+ /**
+ * Append the child column used in tree iterator to this column, along with the comparator used to compare them
+ *
+ * for instance, a term search of A = 1 AND B = 2 would generate a ScanColumn of A-- child -> B
+ * @param childColumn
+ */
+ void setChild( final ScanColumn childColumn );
+
+ /**
+ * Returns the childl column if present, can return null
+ * @return
+ */
+ ScanColumn getChild();
+
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SearchCollectionVisitor.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SearchCollectionVisitor.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SearchCollectionVisitor.java
index 61315e4..20d303c 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SearchCollectionVisitor.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SearchCollectionVisitor.java
@@ -95,7 +95,7 @@ public class SearchCollectionVisitor extends SearchVisitor {
UUID startId = null;
if ( slice.hasCursor() ) {
- startId = UUID_PARSER.parse( slice.getCursor() ).getUUID();
+ startId = UUID_PARSER.parse( slice.getCursor(), null ).getUUID();
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SearchConnectionVisitor.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SearchConnectionVisitor.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SearchConnectionVisitor.java
index da99cdf..74ff19f 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SearchConnectionVisitor.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SearchConnectionVisitor.java
@@ -82,7 +82,7 @@ public class SearchConnectionVisitor extends SearchVisitor {
// operation
queryProcessor.applyCursorAndSort( slice );
- IndexScanner columns = null;
+ final IndexScanner columns;
if ( slice.isComplete() ) {
columns = new NoOpIndexScanner();
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SecondaryIndexSliceParser.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SecondaryIndexSliceParser.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SecondaryIndexSliceParser.java
index ea093e6..c13ac0d 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SecondaryIndexSliceParser.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SecondaryIndexSliceParser.java
@@ -20,6 +20,8 @@ package org.apache.usergrid.persistence.query.ir.result;
import java.nio.ByteBuffer;
import java.util.UUID;
+import org.apache.usergrid.persistence.cassandra.index.DynamicCompositeComparator;
+
import me.prettyprint.hector.api.beans.DynamicComposite;
@@ -35,20 +37,22 @@ public class SecondaryIndexSliceParser implements SliceParser {
* @see org.apache.usergrid.persistence.query.ir.result.SliceParser#parse(java.nio.ByteBuffer)
*/
@Override
- public ScanColumn parse( ByteBuffer buff ) {
+ public ScanColumn parse( ByteBuffer buff, final DynamicCompositeComparator cfComparator ) {
DynamicComposite composite = DynamicComposite.fromByteBuffer( buff.duplicate() );
- return new SecondaryIndexColumn( ( UUID ) composite.get( 2 ), composite.get( 1 ), buff );
+ return new SecondaryIndexColumn( ( UUID ) composite.get( 2 ), composite.get( 1 ), buff, cfComparator );
}
+
+
public static class SecondaryIndexColumn extends AbstractScanColumn {
private final Object value;
- public SecondaryIndexColumn( UUID uuid, Object value, ByteBuffer buff ) {
- super( uuid, buff );
+ public SecondaryIndexColumn( final UUID uuid, final Object value, final ByteBuffer columnNameBuffer, final DynamicCompositeComparator cfComparator ) {
+ super( uuid, columnNameBuffer, cfComparator );
this.value = value;
}
@@ -57,5 +61,9 @@ public class SecondaryIndexSliceParser implements SliceParser {
public Object getValue() {
return this.value;
}
+
+
+
+
}
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SliceParser.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SliceParser.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SliceParser.java
index d1ce6a1..8e5bc53 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SliceParser.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/SliceParser.java
@@ -19,6 +19,8 @@ package org.apache.usergrid.persistence.query.ir.result;
import java.nio.ByteBuffer;
+import org.apache.usergrid.persistence.cassandra.index.DynamicCompositeComparator;
+
/**
* Interface to parse and compare range slices
@@ -28,5 +30,5 @@ import java.nio.ByteBuffer;
public interface SliceParser {
/** Parse the slice and return it's parse type. If null is returned, the column should be considered discarded */
- public ScanColumn parse( ByteBuffer buff );
+ public ScanColumn parse(final ByteBuffer columnNameBytes, final DynamicCompositeComparator cfComparator );
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/StaticIdIterator.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/StaticIdIterator.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/StaticIdIterator.java
index e04ac6c..055839e 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/StaticIdIterator.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/StaticIdIterator.java
@@ -38,7 +38,7 @@ public class StaticIdIterator implements ResultIterator {
*
*/
public StaticIdIterator( UUID id ) {
- final ScanColumn col = new UUIDIndexSliceParser.UUIDColumn( id, ByteBuffer.allocate( 0 ) );
+ final ScanColumn col = new UUIDColumn( id );
ids = Collections.singleton( col );
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UUIDColumn.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UUIDColumn.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UUIDColumn.java
new file mode 100644
index 0000000..ff05fe5
--- /dev/null
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UUIDColumn.java
@@ -0,0 +1,50 @@
+package org.apache.usergrid.persistence.query.ir.result;
+
+
+import java.nio.ByteBuffer;
+import java.util.UUID;
+
+import org.apache.usergrid.utils.UUIDUtils;
+
+
+/**
+ * Used as a comparator for columns
+ */
+class UUIDColumn implements ScanColumn{
+
+ private final UUID uuid;
+ private ScanColumn child;
+
+
+ UUIDColumn( final UUID uuid ) {this.uuid = uuid;}
+
+
+ @Override
+ public UUID getUUID() {
+ return uuid;
+ }
+
+
+ @Override
+ public ByteBuffer getCursorValue() {
+ return null;
+ }
+
+
+ @Override
+ public void setChild( final ScanColumn childColumn ) {
+ this.child = childColumn;
+ }
+
+
+ @Override
+ public ScanColumn getChild() {
+ return child;
+ }
+
+
+ @Override
+ public int compareTo( final ScanColumn other ) {
+ return UUIDUtils.compare( uuid, other.getUUID() );
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UUIDIndexSliceParser.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UUIDIndexSliceParser.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UUIDIndexSliceParser.java
index 4b98cc7..d966cc8 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UUIDIndexSliceParser.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UUIDIndexSliceParser.java
@@ -20,6 +20,8 @@ package org.apache.usergrid.persistence.query.ir.result;
import java.nio.ByteBuffer;
import java.util.UUID;
+import org.apache.usergrid.persistence.cassandra.index.DynamicCompositeComparator;
+
import static org.apache.usergrid.persistence.cassandra.Serializers.*;
/**
@@ -33,15 +35,8 @@ public class UUIDIndexSliceParser implements SliceParser {
* @see org.apache.usergrid.persistence.query.ir.result.SliceParser#parse(java.nio.ByteBuffer)
*/
@Override
- public ScanColumn parse( ByteBuffer buff ) {
- return new UUIDColumn( ue.fromByteBuffer( buff.duplicate() ), buff );
+ public ScanColumn parse( ByteBuffer buff, final DynamicCompositeComparator cfComparator ) {
+ return new UUIDColumn( ue.fromByteBuffer( buff.duplicate() ) );
}
-
- public static class UUIDColumn extends AbstractScanColumn {
-
- public UUIDColumn( UUID uuid, ByteBuffer buffer ) {
- super( uuid, buffer );
- }
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UnionIterator.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UnionIterator.java b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UnionIterator.java
index ea7b3f6..916091c 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UnionIterator.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/query/ir/result/UnionIterator.java
@@ -21,14 +21,12 @@ import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.Comparator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import org.apache.usergrid.persistence.cassandra.CursorCache;
-import org.apache.usergrid.utils.UUIDUtils;
import static org.apache.usergrid.persistence.cassandra.Serializers.*;
@@ -39,8 +37,6 @@ import static org.apache.usergrid.persistence.cassandra.Serializers.*;
*/
public class UnionIterator extends MultiIterator {
- private static final ScanColumnComparator COMP = new ScanColumnComparator();
-
private SortedColumnList list;
private final int id;
@@ -133,14 +129,11 @@ public class UnionIterator extends MultiIterator {
*/
public static final class SortedColumnList {
- private static final ScanColumnComparator COMP = new ScanColumnComparator();
-
private final int maxSize;
private final List<ScanColumn> list;
-
- private ScanColumn min;
+ private UUIDColumn min;
public SortedColumnList( final int maxSize, final UUID minUuid ) {
@@ -149,7 +142,7 @@ public class UnionIterator extends MultiIterator {
this.maxSize = maxSize;
if ( minUuid != null ) {
- min = new AbstractScanColumn( minUuid, null ) {};
+ min = new UUIDColumn( minUuid) ;
}
}
@@ -159,11 +152,11 @@ public class UnionIterator extends MultiIterator {
*/
public void add( ScanColumn col ) {
//less than our min, don't add
- if ( COMP.compare( min, col ) >= 0 ) {
+ if ( min != null && min.compareTo( col ) >= 0 ) {
return;
}
- int index = Collections.binarySearch( this.list, col, COMP );
+ int index = Collections.binarySearch( this.list, col );
//already present
if ( index > -1 ) {
@@ -221,7 +214,8 @@ public class UnionIterator extends MultiIterator {
return;
}
- min = this.list.get( size - 1 );
+ final UUID oldMin = this.list.get( size - 1 ).getUUID();
+ min = new UUIDColumn( oldMin );
}
@@ -237,28 +231,4 @@ public class UnionIterator extends MultiIterator {
this.min = null;
}
}
-
-
- /**
- * Simple comparator for comparing scan columns. Orders them by time uuid
- */
- private static class ScanColumnComparator implements Comparator<ScanColumn> {
-
- @Override
- public int compare( final ScanColumn o1, final ScanColumn o2 ) {
- if ( o1 == null ) {
- if ( o2 == null ) {
- return 0;
- }
-
- return -1;
- }
-
- else if ( o2 == null ) {
- return 1;
- }
-
- return UUIDUtils.compare( o1.getUUID(), o2.getUUID() );
- }
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fe69065/stack/core/src/test/java/org/apache/usergrid/persistence/query/ir/result/AbstractScanColumnTest.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/ir/result/AbstractScanColumnTest.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/ir/result/AbstractScanColumnTest.java
index d478942..45e7f50 100644
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/ir/result/AbstractScanColumnTest.java
+++ b/stack/core/src/test/java/org/apache/usergrid/persistence/query/ir/result/AbstractScanColumnTest.java
@@ -94,7 +94,7 @@ public class AbstractScanColumnTest {
private class TestScanColumn extends AbstractScanColumn {
protected TestScanColumn( final UUID uuid, final ByteBuffer buffer ) {
- super( uuid, buffer );
+ super( uuid, buffer, cfComparator );
}
}
}