You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2012/11/01 17:29:25 UTC
[1/4] git commit: convert abstract class Filter to IFilter
Updated Branches:
refs/heads/trunk 82087b83c -> dd4fd2c70
convert abstract class Filter to IFilter
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a15500e7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a15500e7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a15500e7
Branch: refs/heads/trunk
Commit: a15500e742b7c18804ead7ef338d6fa39b9ba984
Parents: 82087b8
Author: Jonathan Ellis <jb...@apache.org>
Authored: Sat Oct 27 10:16:25 2012 -0700
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Nov 1 11:29:19 2012 -0500
----------------------------------------------------------------------
.../org/apache/cassandra/cql/QueryProcessor.java | 8 +-
.../org/apache/cassandra/cql3/QueryProcessor.java | 2 +-
.../cassandra/cql3/statements/SelectStatement.java | 6 +-
.../org/apache/cassandra/db/BatchlogManager.java | 4 +-
.../org/apache/cassandra/db/ColumnFamilyStore.java | 14 +-
src/java/org/apache/cassandra/db/ColumnIndex.java | 6 +-
.../apache/cassandra/db/HintedHandOffManager.java | 2 +-
.../org/apache/cassandra/db/RangeSliceCommand.java | 22 ++--
src/java/org/apache/cassandra/db/ReadCommand.java | 5 +-
.../org/apache/cassandra/db/RowIndexEntry.java | 12 +-
.../cassandra/db/SliceByNamesReadCommand.java | 2 +-
.../apache/cassandra/db/SliceFromReadCommand.java | 14 +-
.../db/columniterator/SSTableNamesIterator.java | 4 +-
.../apache/cassandra/db/filter/ExtendedFilter.java | 32 ++--
.../cassandra/db/filter/IDiskAtomFilter.java | 129 +++++++++++++++
.../org/apache/cassandra/db/filter/IFilter.java | 129 ---------------
.../cassandra/db/filter/NamesQueryFilter.java | 2 +-
.../apache/cassandra/db/filter/QueryFilter.java | 8 +-
.../cassandra/db/filter/SliceQueryFilter.java | 2 +-
.../cassandra/db/index/SecondaryIndexManager.java | 4 +-
.../cassandra/db/index/SecondaryIndexSearcher.java | 4 +-
.../db/index/composites/CompositesSearcher.java | 2 +-
.../cassandra/db/index/keys/KeysSearcher.java | 4 +-
.../apache/cassandra/io/sstable/IndexHelper.java | 4 +-
.../apache/cassandra/io/sstable/SSTableReader.java | 8 +-
.../apache/cassandra/io/sstable/SSTableWriter.java | 2 +-
.../cassandra/service/RowRepairResolver.java | 5 +-
.../apache/cassandra/thrift/CassandraServer.java | 9 +-
.../apache/cassandra/thrift/ThriftValidation.java | 4 +-
.../org/apache/cassandra/utils/BloomFilter.java | 4 +-
.../cassandra/utils/BloomFilterSerializer.java | 4 +-
src/java/org/apache/cassandra/utils/Filter.java | 37 ----
.../org/apache/cassandra/utils/FilterFactory.java | 20 +-
src/java/org/apache/cassandra/utils/IFilter.java | 30 ++++
.../apache/cassandra/utils/LegacyBloomFilter.java | 3 +-
.../cassandra/utils/LongBloomFilterTest.java | 6 +-
test/unit/org/apache/cassandra/db/CleanupTest.java | 4 +-
.../apache/cassandra/db/ColumnFamilyStoreTest.java | 18 +-
.../cassandra/streaming/StreamingTransferTest.java | 4 +-
.../apache/cassandra/utils/BloomFilterTest.java | 17 +-
.../apache/cassandra/utils/FilterTestHelper.java | 2 +-
.../cassandra/utils/LegacyBloomFilterTest.java | 2 +-
.../apache/cassandra/utils/SerializationsTest.java | 2 +-
43 files changed, 299 insertions(+), 303 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/cql/QueryProcessor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql/QueryProcessor.java b/src/java/org/apache/cassandra/cql/QueryProcessor.java
index cdfe033..628b94d 100644
--- a/src/java/org/apache/cassandra/cql/QueryProcessor.java
+++ b/src/java/org/apache/cassandra/cql/QueryProcessor.java
@@ -50,8 +50,6 @@ import org.apache.cassandra.thrift.CqlPreparedResult;
import org.apache.cassandra.thrift.IndexExpression;
import org.apache.cassandra.thrift.IndexOperator;
import org.apache.cassandra.thrift.IndexType;
-import org.apache.cassandra.thrift.RequestType;
-import org.apache.cassandra.thrift.SchemaDisagreementException;
import org.apache.cassandra.thrift.ThriftValidation;
import org.apache.cassandra.thrift.ThriftClientState;
import org.apache.cassandra.utils.ByteBufferUtil;
@@ -170,7 +168,7 @@ public class QueryProcessor
}
AbstractBounds<RowPosition> bounds = new Bounds<RowPosition>(startKey, finishKey);
- IFilter columnFilter = filterFromSelect(select, metadata, variables);
+ IDiskAtomFilter columnFilter = filterFromSelect(select, metadata, variables);
validateFilter(metadata, columnFilter);
List<Relation> columnRelations = select.getColumnRelations();
@@ -253,7 +251,7 @@ public class QueryProcessor
StorageProxy.mutate(rowMutations, consistency);
}
- private static IFilter filterFromSelect(SelectStatement select, CFMetaData metadata, List<ByteBuffer> variables)
+ private static IDiskAtomFilter filterFromSelect(SelectStatement select, CFMetaData metadata, List<ByteBuffer> variables)
throws InvalidRequestException
{
if (select.isColumnRange() || select.getColumnNames().size() == 0)
@@ -366,7 +364,7 @@ public class QueryProcessor
}
}
- private static void validateFilter(CFMetaData metadata, IFilter filter)
+ private static void validateFilter(CFMetaData metadata, IDiskAtomFilter filter)
throws InvalidRequestException
{
if (filter instanceof SliceQueryFilter)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/cql3/QueryProcessor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
index c1737e8..3342a2c 100644
--- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java
+++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
@@ -99,7 +99,7 @@ public class QueryProcessor
validateColumnNames(Collections.singletonList(column));
}
- public static void validateFilter(CFMetaData metadata, IFilter filter)
+ public static void validateFilter(CFMetaData metadata, IDiskAtomFilter filter)
throws InvalidRequestException
{
if (filter instanceof SliceQueryFilter)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index e70f90a..365d7cb 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -202,7 +202,7 @@ public class SelectStatement implements CQLStatement
Collection<ByteBuffer> keys = getKeys(variables);
List<ReadCommand> commands = new ArrayList<ReadCommand>(keys.size());
- IFilter filter = makeFilter(variables);
+ IDiskAtomFilter filter = makeFilter(variables);
// ...a range (slice) of column names
if (isColumnRange())
{
@@ -229,7 +229,7 @@ public class SelectStatement implements CQLStatement
private RangeSliceCommand getRangeCommand(List<ByteBuffer> variables) throws RequestValidationException
{
- IFilter filter = makeFilter(variables);
+ IDiskAtomFilter filter = makeFilter(variables);
List<IndexExpression> expressions = getIndexExpressions(variables);
// The LIMIT provided by the user is the number of CQL row he wants returned.
// For NamesQueryFilter, this is the number of internal rows returned, since a NamesQueryFilter can only select one CQL row in a given internal row.
@@ -291,7 +291,7 @@ public class SelectStatement implements CQLStatement
return bounds;
}
- private IFilter makeFilter(List<ByteBuffer> variables)
+ private IDiskAtomFilter makeFilter(List<ByteBuffer> variables)
throws InvalidRequestException
{
if (isColumnRange())
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/BatchlogManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/BatchlogManager.java b/src/java/org/apache/cassandra/db/BatchlogManager.java
index e2a9c0d..843cf44 100644
--- a/src/java/org/apache/cassandra/db/BatchlogManager.java
+++ b/src/java/org/apache/cassandra/db/BatchlogManager.java
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.compaction.CompactionManager;
-import org.apache.cassandra.db.filter.IFilter;
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
import org.apache.cassandra.db.filter.NamesQueryFilter;
import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
@@ -256,7 +256,7 @@ public class BatchlogManager implements BatchlogManagerMBean
return CFMetaData.BatchlogCF.getCfDef().getColumnNameBuilder().add(raw).build();
}
- private static List<Row> getRangeSlice(IFilter columnFilter)
+ private static List<Row> getRangeSlice(IDiskAtomFilter columnFilter)
{
ColumnFamilyStore store = Table.open(Table.SYSTEM_KS).getColumnFamilyStore(SystemTable.BATCHLOG_CF);
IPartitioner partitioner = StorageService.getPartitioner();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index e981a9c..8740c8d 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -34,6 +34,7 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.google.common.util.concurrent.Futures;
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
import org.cliffc.high_scale_lib.NonBlockingHashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,7 +54,6 @@ import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.compaction.LeveledCompactionStrategy;
import org.apache.cassandra.db.compaction.OperationType;
import org.apache.cassandra.db.filter.ExtendedFilter;
-import org.apache.cassandra.db.filter.IFilter;
import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.db.index.SecondaryIndex;
@@ -1374,7 +1374,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
* @param range Either a Bounds, which includes start key, or a Range, which does not.
* @param columnFilter description of the columns we're interested in for each row
*/
- public AbstractScanIterator getSequentialIterator(ByteBuffer superColumn, final AbstractBounds<RowPosition> range, IFilter columnFilter)
+ public AbstractScanIterator getSequentialIterator(ByteBuffer superColumn, final AbstractBounds<RowPosition> range, IDiskAtomFilter columnFilter)
{
assert !(range instanceof Range) || !((Range)range).isWrapAround() || range.right.isMinimum() : range;
@@ -1431,23 +1431,23 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
}
}
- public List<Row> getRangeSlice(ByteBuffer superColumn, final AbstractBounds<RowPosition> range, int maxResults, IFilter columnFilter, List<IndexExpression> rowFilter)
+ public List<Row> getRangeSlice(ByteBuffer superColumn, final AbstractBounds<RowPosition> range, int maxResults, IDiskAtomFilter columnFilter, List<IndexExpression> rowFilter)
{
return getRangeSlice(superColumn, range, maxResults, columnFilter, rowFilter, false, false);
}
- public List<Row> getRangeSlice(ByteBuffer superColumn, final AbstractBounds<RowPosition> range, int maxResults, IFilter columnFilter, List<IndexExpression> rowFilter, boolean maxIsColumns, boolean isPaging)
+ public List<Row> getRangeSlice(ByteBuffer superColumn, final AbstractBounds<RowPosition> range, int maxResults, IDiskAtomFilter columnFilter, List<IndexExpression> rowFilter, boolean maxIsColumns, boolean isPaging)
{
logger.debug("Executing seq scan for {}..{}", range.left, range.right);
return filter(getSequentialIterator(superColumn, range, columnFilter), ExtendedFilter.create(this, columnFilter, rowFilter, maxResults, maxIsColumns, isPaging));
}
- public List<Row> search(List<IndexExpression> clause, AbstractBounds<RowPosition> range, int maxResults, IFilter dataFilter)
+ public List<Row> search(List<IndexExpression> clause, AbstractBounds<RowPosition> range, int maxResults, IDiskAtomFilter dataFilter)
{
return search(clause, range, maxResults, dataFilter, false);
}
- public List<Row> search(List<IndexExpression> clause, AbstractBounds<RowPosition> range, int maxResults, IFilter dataFilter, boolean maxIsColumns)
+ public List<Row> search(List<IndexExpression> clause, AbstractBounds<RowPosition> range, int maxResults, IDiskAtomFilter dataFilter, boolean maxIsColumns)
{
logger.debug("Executing indexed scan for {}..{}", range.left, range.right);
return indexManager.search(clause, range, maxResults, dataFilter, maxIsColumns);
@@ -1469,7 +1469,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
if (rowIterator.needsFiltering())
{
// roughtly
- IFilter extraFilter = filter.getExtraFilter(data);
+ IDiskAtomFilter extraFilter = filter.getExtraFilter(data);
if (extraFilter != null)
{
QueryPath path = new QueryPath(columnFamily);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/ColumnIndex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnIndex.java b/src/java/org/apache/cassandra/db/ColumnIndex.java
index 946c4f4..55244f6 100644
--- a/src/java/org/apache/cassandra/db/ColumnIndex.java
+++ b/src/java/org/apache/cassandra/db/ColumnIndex.java
@@ -24,13 +24,13 @@ import java.util.*;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.io.sstable.IndexHelper;
-import org.apache.cassandra.utils.Filter;
+import org.apache.cassandra.utils.IFilter;
import org.apache.cassandra.utils.FilterFactory;
public class ColumnIndex
{
public final List<IndexHelper.IndexInfo> columnsIndex;
- public final Filter bloomFilter;
+ public final IFilter bloomFilter;
private static final ColumnIndex EMPTY = new ColumnIndex(Collections.<IndexHelper.IndexInfo>emptyList(), FilterFactory.emptyFilter());
@@ -39,7 +39,7 @@ public class ColumnIndex
this(new ArrayList<IndexHelper.IndexInfo>(), FilterFactory.getFilter(estimatedColumnCount, 4, false));
}
- private ColumnIndex(List<IndexHelper.IndexInfo> columnsIndex, Filter bloomFilter)
+ private ColumnIndex(List<IndexHelper.IndexInfo> columnsIndex, IFilter bloomFilter)
{
this.columnsIndex = columnsIndex;
this.bloomFilter = bloomFilter;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/HintedHandOffManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/HintedHandOffManager.java b/src/java/org/apache/cassandra/db/HintedHandOffManager.java
index 2d88ecc..2b8b59a 100644
--- a/src/java/org/apache/cassandra/db/HintedHandOffManager.java
+++ b/src/java/org/apache/cassandra/db/HintedHandOffManager.java
@@ -399,7 +399,7 @@ public class HintedHandOffManager implements HintedHandOffManagerMBean
IPartitioner p = StorageService.getPartitioner();
RowPosition minPos = p.getMinimumToken().minKeyBound();
Range<RowPosition> range = new Range<RowPosition>(minPos, minPos, p);
- IFilter filter = new NamesQueryFilter(ImmutableSortedSet.<ByteBuffer>of());
+ IDiskAtomFilter filter = new NamesQueryFilter(ImmutableSortedSet.<ByteBuffer>of());
List<Row> rows = hintStore.getRangeSlice(null, range, Integer.MAX_VALUE, filter, null);
for (Row row : rows)
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/RangeSliceCommand.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/RangeSliceCommand.java b/src/java/org/apache/cassandra/db/RangeSliceCommand.java
index 5e73f3f..b8fdfd6 100644
--- a/src/java/org/apache/cassandra/db/RangeSliceCommand.java
+++ b/src/java/org/apache/cassandra/db/RangeSliceCommand.java
@@ -45,7 +45,7 @@ import java.util.List;
import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.Schema;
-import org.apache.cassandra.db.filter.IFilter;
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
import org.apache.cassandra.db.filter.NamesQueryFilter;
import org.apache.cassandra.db.filter.SliceQueryFilter;
import org.apache.cassandra.db.marshal.AbstractType;
@@ -78,7 +78,7 @@ public class RangeSliceCommand implements IReadCommand
public final String column_family;
public final ByteBuffer super_column;
- public final IFilter predicate;
+ public final IDiskAtomFilter predicate;
public final List<IndexExpression> row_filter;
public final AbstractBounds<RowPosition> range;
@@ -86,22 +86,22 @@ public class RangeSliceCommand implements IReadCommand
public final boolean maxIsColumns;
public final boolean isPaging;
- public RangeSliceCommand(String keyspace, String column_family, ByteBuffer super_column, IFilter predicate, AbstractBounds<RowPosition> range, int maxResults)
+ public RangeSliceCommand(String keyspace, String column_family, ByteBuffer super_column, IDiskAtomFilter predicate, AbstractBounds<RowPosition> range, int maxResults)
{
this(keyspace, column_family, super_column, predicate, range, null, maxResults, false, false);
}
- public RangeSliceCommand(String keyspace, ColumnParent column_parent, IFilter predicate, AbstractBounds<RowPosition> range, List<IndexExpression> row_filter, int maxResults)
+ public RangeSliceCommand(String keyspace, ColumnParent column_parent, IDiskAtomFilter predicate, AbstractBounds<RowPosition> range, List<IndexExpression> row_filter, int maxResults)
{
this(keyspace, column_parent.getColumn_family(), column_parent.super_column, predicate, range, row_filter, maxResults, false, false);
}
- public RangeSliceCommand(String keyspace, String column_family, ByteBuffer super_column, IFilter predicate, AbstractBounds<RowPosition> range, List<IndexExpression> row_filter, int maxResults)
+ public RangeSliceCommand(String keyspace, String column_family, ByteBuffer super_column, IDiskAtomFilter predicate, AbstractBounds<RowPosition> range, List<IndexExpression> row_filter, int maxResults)
{
this(keyspace, column_family, super_column, predicate, range, row_filter, maxResults, false, false);
}
- public RangeSliceCommand(String keyspace, String column_family, ByteBuffer super_column, IFilter predicate, AbstractBounds<RowPosition> range, List<IndexExpression> row_filter, int maxResults, boolean maxIsColumns, boolean isPaging)
+ public RangeSliceCommand(String keyspace, String column_family, ByteBuffer super_column, IDiskAtomFilter predicate, AbstractBounds<RowPosition> range, List<IndexExpression> row_filter, int maxResults, boolean maxIsColumns, boolean isPaging)
{
this.keyspace = keyspace;
this.column_family = column_family;
@@ -179,7 +179,7 @@ public class RangeSliceCommand implements IReadCommand
class RangeSliceCommandSerializer implements IVersionedSerializer<RangeSliceCommand>
{
// For compatibility with pre-1.2 sake. We should remove at some point.
- public static SlicePredicate asSlicePredicate(IFilter predicate)
+ public static SlicePredicate asSlicePredicate(IDiskAtomFilter predicate)
{
SlicePredicate sp = new SlicePredicate();
if (predicate instanceof NamesQueryFilter)
@@ -209,7 +209,7 @@ class RangeSliceCommandSerializer implements IVersionedSerializer<RangeSliceComm
}
else
{
- IFilter.Serializer.instance.serialize(sliceCommand.predicate, dos, version);
+ IDiskAtomFilter.Serializer.instance.serialize(sliceCommand.predicate, dos, version);
}
if (version >= MessagingService.VERSION_11)
@@ -259,7 +259,7 @@ class RangeSliceCommandSerializer implements IVersionedSerializer<RangeSliceComm
superColumn = ByteBuffer.wrap(buf);
}
- IFilter predicate;
+ IDiskAtomFilter predicate;
AbstractType<?> comparator = ColumnFamily.getComparatorFor(keyspace, columnFamily, superColumn);
if (version < MessagingService.VERSION_12)
{
@@ -269,7 +269,7 @@ class RangeSliceCommandSerializer implements IVersionedSerializer<RangeSliceComm
}
else
{
- predicate = IFilter.Serializer.instance.deserialize(dis, version, comparator);
+ predicate = IDiskAtomFilter.Serializer.instance.deserialize(dis, version, comparator);
}
List<IndexExpression> rowFilter = null;
@@ -340,7 +340,7 @@ class RangeSliceCommandSerializer implements IVersionedSerializer<RangeSliceComm
}
else
{
- size += IFilter.Serializer.instance.serializedSize(rsc.predicate, version);
+ size += IDiskAtomFilter.Serializer.instance.serializedSize(rsc.predicate, version);
}
if (version >= MessagingService.VERSION_11)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/ReadCommand.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ReadCommand.java b/src/java/org/apache/cassandra/db/ReadCommand.java
index 0a73909..f3494e5 100644
--- a/src/java/org/apache/cassandra/db/ReadCommand.java
+++ b/src/java/org/apache/cassandra/db/ReadCommand.java
@@ -25,7 +25,7 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.cassandra.config.DatabaseDescriptor;
-import org.apache.cassandra.db.filter.IFilter;
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.io.IVersionedSerializer;
@@ -33,6 +33,7 @@ import org.apache.cassandra.net.MessageOut;
import org.apache.cassandra.net.MessagingService;
import org.apache.cassandra.service.IReadCommand;
import org.apache.cassandra.service.RepairCallback;
+import org.apache.cassandra.utils.IFilter;
public abstract class ReadCommand implements IReadCommand
@@ -80,7 +81,7 @@ public abstract class ReadCommand implements IReadCommand
public abstract Row getRow(Table table) throws IOException;
- public abstract IFilter filter();
+ public abstract IDiskAtomFilter filter();
protected AbstractType<?> getComparator()
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/RowIndexEntry.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/RowIndexEntry.java b/src/java/org/apache/cassandra/db/RowIndexEntry.java
index a3701f8..e9f08b2 100644
--- a/src/java/org/apache/cassandra/db/RowIndexEntry.java
+++ b/src/java/org/apache/cassandra/db/RowIndexEntry.java
@@ -27,7 +27,7 @@ import java.util.List;
import org.apache.cassandra.io.sstable.Descriptor;
import org.apache.cassandra.io.sstable.IndexHelper;
import org.apache.cassandra.io.util.FileUtils;
-import org.apache.cassandra.utils.Filter;
+import org.apache.cassandra.utils.IFilter;
import org.apache.cassandra.utils.FilterFactory;
public class RowIndexEntry
@@ -69,7 +69,7 @@ public class RowIndexEntry
return Collections.<IndexHelper.IndexInfo>emptyList();
}
- public Filter bloomFilter()
+ public IFilter bloomFilter()
{
throw new UnsupportedOperationException();
}
@@ -119,7 +119,7 @@ public class RowIndexEntry
List<IndexHelper.IndexInfo> columnsIndex = new ArrayList<IndexHelper.IndexInfo>(entries);
for (int i = 0; i < entries; i++)
columnsIndex.add(IndexHelper.IndexInfo.deserialize(dis));
- Filter bf = FilterFactory.deserialize(dis, version.filterType, false);
+ IFilter bf = FilterFactory.deserialize(dis, version.filterType, false);
return new IndexedEntry(position, delInfo, columnsIndex, bf);
}
else
@@ -157,9 +157,9 @@ public class RowIndexEntry
{
private final DeletionInfo deletionInfo;
private final List<IndexHelper.IndexInfo> columnsIndex;
- private final Filter bloomFilter;
+ private final IFilter bloomFilter;
- private IndexedEntry(long position, DeletionInfo deletionInfo, List<IndexHelper.IndexInfo> columnsIndex, Filter bloomFilter)
+ private IndexedEntry(long position, DeletionInfo deletionInfo, List<IndexHelper.IndexInfo> columnsIndex, IFilter bloomFilter)
{
super(position);
assert deletionInfo != null;
@@ -182,7 +182,7 @@ public class RowIndexEntry
}
@Override
- public Filter bloomFilter()
+ public IFilter bloomFilter()
{
return bloomFilter;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java b/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
index ba149b7..2b3b0b1 100644
--- a/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
+++ b/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
@@ -75,7 +75,7 @@ public class SliceByNamesReadCommand extends ReadCommand
')';
}
- public IFilter filter()
+ public IDiskAtomFilter filter()
{
return filter;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/SliceFromReadCommand.java b/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
index 3fa0b51..d52826b 100644
--- a/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
+++ b/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
@@ -17,16 +17,18 @@
*/
package org.apache.cassandra.db;
-import java.io.*;
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.cassandra.db.filter.*;
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
+import org.apache.cassandra.db.filter.QueryFilter;
+import org.apache.cassandra.db.filter.QueryPath;
+import org.apache.cassandra.db.filter.SliceQueryFilter;
import org.apache.cassandra.io.IVersionedSerializer;
import org.apache.cassandra.service.RepairCallback;
import org.apache.cassandra.service.StorageService;
@@ -104,7 +106,7 @@ public class SliceFromReadCommand extends ReadCommand
filter.trim(row.cf, getOriginalRequestedCount());
}
- public IFilter filter()
+ public IDiskAtomFilter filter()
{
return filter;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
index 3ba5143..766c282 100644
--- a/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
+++ b/src/java/org/apache/cassandra/db/columniterator/SSTableNamesIterator.java
@@ -37,7 +37,7 @@ import org.apache.cassandra.io.util.FileDataInput;
import org.apache.cassandra.io.util.FileMark;
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.utils.ByteBufferUtil;
-import org.apache.cassandra.utils.Filter;
+import org.apache.cassandra.utils.IFilter;
public class SSTableNamesIterator extends SimpleAbstractColumnIterator implements ISSTableColumnIterator
{
@@ -107,7 +107,7 @@ public class SSTableNamesIterator extends SimpleAbstractColumnIterator implement
private void read(SSTableReader sstable, FileDataInput file, RowIndexEntry indexEntry)
throws IOException
{
- Filter bf;
+ IFilter bf;
List<IndexHelper.IndexInfo> indexList;
// If the entry is not indexed or the index is not promoted, read from the row start
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/filter/ExtendedFilter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/filter/ExtendedFilter.java b/src/java/org/apache/cassandra/db/filter/ExtendedFilter.java
index 9e49237..89479c9 100644
--- a/src/java/org/apache/cassandra/db/filter/ExtendedFilter.java
+++ b/src/java/org/apache/cassandra/db/filter/ExtendedFilter.java
@@ -42,12 +42,12 @@ public abstract class ExtendedFilter
private static final Logger logger = LoggerFactory.getLogger(ExtendedFilter.class);
public final ColumnFamilyStore cfs;
- protected final IFilter originalFilter;
+ protected final IDiskAtomFilter originalFilter;
private final int maxResults;
private final boolean maxIsColumns;
private final boolean isPaging;
- public static ExtendedFilter create(ColumnFamilyStore cfs, IFilter filter, List<IndexExpression> clause, int maxResults, boolean maxIsColumns, boolean isPaging)
+ public static ExtendedFilter create(ColumnFamilyStore cfs, IDiskAtomFilter filter, List<IndexExpression> clause, int maxResults, boolean maxIsColumns, boolean isPaging)
{
if (clause == null || clause.isEmpty())
{
@@ -63,7 +63,7 @@ public abstract class ExtendedFilter
}
}
- protected ExtendedFilter(ColumnFamilyStore cfs, IFilter filter, int maxResults, boolean maxIsColumns, boolean isPaging)
+ protected ExtendedFilter(ColumnFamilyStore cfs, IDiskAtomFilter filter, int maxResults, boolean maxIsColumns, boolean isPaging)
{
assert cfs != null;
assert filter != null;
@@ -114,9 +114,9 @@ public abstract class ExtendedFilter
}
/** The initial filter we'll do our first slice with (either the original or a superset of it) */
- public abstract IFilter initialFilter();
+ public abstract IDiskAtomFilter initialFilter();
- public IFilter originalFilter()
+ public IDiskAtomFilter originalFilter()
{
return originalFilter;
}
@@ -128,7 +128,7 @@ public abstract class ExtendedFilter
* @param data the data retrieve by the initial filter
* @return a filter or null if there can't be any columns we missed with our initial filter (typically if it was a names query, or a slice of the entire row)
*/
- public abstract IFilter getExtraFilter(ColumnFamily data);
+ public abstract IDiskAtomFilter getExtraFilter(ColumnFamily data);
/**
* @return data pruned down to the columns originally asked for
@@ -163,9 +163,9 @@ public abstract class ExtendedFilter
private static class FilterWithClauses extends ExtendedFilter
{
protected final List<IndexExpression> clause;
- protected final IFilter initialFilter;
+ protected final IDiskAtomFilter initialFilter;
- public FilterWithClauses(ColumnFamilyStore cfs, IFilter filter, List<IndexExpression> clause, int maxResults, boolean maxIsColumns)
+ public FilterWithClauses(ColumnFamilyStore cfs, IDiskAtomFilter filter, List<IndexExpression> clause, int maxResults, boolean maxIsColumns)
{
super(cfs, filter, maxResults, maxIsColumns, false);
assert clause != null;
@@ -174,7 +174,7 @@ public abstract class ExtendedFilter
}
/** Sets up the initial filter. */
- protected IFilter computeInitialFilter()
+ protected IDiskAtomFilter computeInitialFilter()
{
if (originalFilter instanceof SliceQueryFilter)
{
@@ -207,7 +207,7 @@ public abstract class ExtendedFilter
return originalFilter;
}
- public IFilter initialFilter()
+ public IDiskAtomFilter initialFilter()
{
return initialFilter;
}
@@ -246,7 +246,7 @@ public abstract class ExtendedFilter
return false;
}
- public IFilter getExtraFilter(ColumnFamily data)
+ public IDiskAtomFilter getExtraFilter(ColumnFamily data)
{
if (!needsExtraQuery(data))
return null;
@@ -294,7 +294,7 @@ public abstract class ExtendedFilter
private static class FilterWithCompositeClauses extends FilterWithClauses
{
- public FilterWithCompositeClauses(ColumnFamilyStore cfs, IFilter filter, List<IndexExpression> clause, int maxResults, boolean maxIsColumns)
+ public FilterWithCompositeClauses(ColumnFamilyStore cfs, IDiskAtomFilter filter, List<IndexExpression> clause, int maxResults, boolean maxIsColumns)
{
super(cfs, filter, clause, maxResults, maxIsColumns);
}
@@ -307,7 +307,7 @@ public abstract class ExtendedFilter
* expect to know the limit set by the user, so create a fake filter
* with only the count information.
*/
- protected IFilter computeInitialFilter()
+ protected IDiskAtomFilter computeInitialFilter()
{
int limit = originalFilter instanceof SliceQueryFilter
? ((SliceQueryFilter)originalFilter).count
@@ -318,12 +318,12 @@ public abstract class ExtendedFilter
private static class EmptyClauseFilter extends ExtendedFilter
{
- public EmptyClauseFilter(ColumnFamilyStore cfs, IFilter filter, int maxResults, boolean maxIsColumns, boolean isPaging)
+ public EmptyClauseFilter(ColumnFamilyStore cfs, IDiskAtomFilter filter, int maxResults, boolean maxIsColumns, boolean isPaging)
{
super(cfs, filter, maxResults, maxIsColumns, isPaging);
}
- public IFilter initialFilter()
+ public IDiskAtomFilter initialFilter()
{
return originalFilter;
}
@@ -333,7 +333,7 @@ public abstract class ExtendedFilter
throw new UnsupportedOperationException();
}
- public IFilter getExtraFilter(ColumnFamily data)
+ public IDiskAtomFilter getExtraFilter(ColumnFamily data)
{
return null;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/filter/IDiskAtomFilter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/filter/IDiskAtomFilter.java b/src/java/org/apache/cassandra/db/filter/IDiskAtomFilter.java
new file mode 100644
index 0000000..9805659
--- /dev/null
+++ b/src/java/org/apache/cassandra/db/filter/IDiskAtomFilter.java
@@ -0,0 +1,129 @@
+/*
+ * 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.cassandra.db.filter;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.util.Comparator;
+import java.util.Iterator;
+
+import org.apache.cassandra.db.*;
+import org.apache.cassandra.db.columniterator.ISSTableColumnIterator;
+import org.apache.cassandra.db.columniterator.OnDiskAtomIterator;
+import org.apache.cassandra.db.marshal.AbstractType;
+import org.apache.cassandra.io.IVersionedSerializer;
+import org.apache.cassandra.io.sstable.SSTableReader;
+import org.apache.cassandra.io.util.FileDataInput;
+
+/**
+ * Given an implementation-specific description of what columns to look for, provides methods
+ * to extract the desired columns from a Memtable, SSTable, or SuperColumn. Either the get*ColumnIterator
+ * methods will be called, or filterSuperColumn, but not both on the same object. QueryFilter
+ * takes care of putting the two together if subcolumn filtering needs to be done, based on the
+ * querypath that it knows (but that IFilter implementations are oblivious to).
+ */
+public interface IDiskAtomFilter
+{
+ /**
+ * returns an iterator that returns columns from the given memtable
+ * matching the Filter criteria in sorted order.
+ */
+ public abstract OnDiskAtomIterator getMemtableColumnIterator(ColumnFamily cf, DecoratedKey key);
+
+ /**
+ * Get an iterator that returns columns from the given SSTable using the opened file
+ * matching the Filter criteria in sorted order.
+ * @param sstable
+ * @param file Already opened file data input, saves us opening another one
+ * @param key The key of the row we are about to iterate over
+ */
+ public abstract ISSTableColumnIterator getSSTableColumnIterator(SSTableReader sstable, FileDataInput file, DecoratedKey key, RowIndexEntry indexEntry);
+
+ /**
+ * returns an iterator that returns columns from the given SSTable
+ * matching the Filter criteria in sorted order.
+ */
+ public abstract ISSTableColumnIterator getSSTableColumnIterator(SSTableReader sstable, DecoratedKey key);
+
+ /**
+ * collects columns from reducedColumns into returnCF. Termination is determined
+ * by the filter code, which should have some limit on the number of columns
+ * to avoid running out of memory on large rows.
+ */
+ public abstract void collectReducedColumns(IColumnContainer container, Iterator<IColumn> reducedColumns, int gcBefore);
+
+ /**
+ * subcolumns of a supercolumn are unindexed, so to pick out parts of those we operate in-memory.
+ * @param superColumn may be modified by filtering op.
+ */
+ public abstract SuperColumn filterSuperColumn(SuperColumn superColumn, int gcBefore);
+
+ public Comparator<IColumn> getColumnComparator(AbstractType<?> comparator);
+
+ public boolean isReversed();
+ public void updateColumnsLimit(int newLimit);
+
+ public static class Serializer implements IVersionedSerializer<IDiskAtomFilter>
+ {
+ public static Serializer instance = new Serializer();
+
+ public void serialize(IDiskAtomFilter filter, DataOutput dos, int version) throws IOException
+ {
+ if (filter instanceof SliceQueryFilter)
+ {
+ dos.writeByte(0);
+ SliceQueryFilter.serializer.serialize((SliceQueryFilter)filter, dos, version);
+ }
+ else
+ {
+ dos.writeByte(1);
+ NamesQueryFilter.serializer.serialize((NamesQueryFilter)filter, dos, version);
+ }
+ }
+
+ public IDiskAtomFilter deserialize(DataInput dis, int version) throws IOException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public IDiskAtomFilter deserialize(DataInput dis, int version, AbstractType<?> comparator) throws IOException
+ {
+ int type = dis.readByte();
+ if (type == 0)
+ {
+ return SliceQueryFilter.serializer.deserialize(dis, version);
+ }
+ else
+ {
+ assert type == 1;
+ return NamesQueryFilter.serializer.deserialize(dis, version, comparator);
+ }
+ }
+
+ public long serializedSize(IDiskAtomFilter filter, int version)
+ {
+ int size = 1;
+ if (filter instanceof SliceQueryFilter)
+ size += SliceQueryFilter.serializer.serializedSize((SliceQueryFilter)filter, version);
+ else
+ size += NamesQueryFilter.serializer.serializedSize((NamesQueryFilter)filter, version);
+ return size;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/filter/IFilter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/filter/IFilter.java b/src/java/org/apache/cassandra/db/filter/IFilter.java
deleted file mode 100644
index 309461f..0000000
--- a/src/java/org/apache/cassandra/db/filter/IFilter.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * 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.cassandra.db.filter;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.Comparator;
-import java.util.Iterator;
-
-import org.apache.cassandra.db.*;
-import org.apache.cassandra.db.columniterator.ISSTableColumnIterator;
-import org.apache.cassandra.db.columniterator.OnDiskAtomIterator;
-import org.apache.cassandra.db.marshal.AbstractType;
-import org.apache.cassandra.io.IVersionedSerializer;
-import org.apache.cassandra.io.sstable.SSTableReader;
-import org.apache.cassandra.io.util.FileDataInput;
-
-/**
- * Given an implementation-specific description of what columns to look for, provides methods
- * to extract the desired columns from a Memtable, SSTable, or SuperColumn. Either the get*ColumnIterator
- * methods will be called, or filterSuperColumn, but not both on the same object. QueryFilter
- * takes care of putting the two together if subcolumn filtering needs to be done, based on the
- * querypath that it knows (but that IFilter implementations are oblivious to).
- */
-public interface IFilter
-{
- /**
- * returns an iterator that returns columns from the given memtable
- * matching the Filter criteria in sorted order.
- */
- public abstract OnDiskAtomIterator getMemtableColumnIterator(ColumnFamily cf, DecoratedKey key);
-
- /**
- * Get an iterator that returns columns from the given SSTable using the opened file
- * matching the Filter criteria in sorted order.
- * @param sstable
- * @param file Already opened file data input, saves us opening another one
- * @param key The key of the row we are about to iterate over
- */
- public abstract ISSTableColumnIterator getSSTableColumnIterator(SSTableReader sstable, FileDataInput file, DecoratedKey key, RowIndexEntry indexEntry);
-
- /**
- * returns an iterator that returns columns from the given SSTable
- * matching the Filter criteria in sorted order.
- */
- public abstract ISSTableColumnIterator getSSTableColumnIterator(SSTableReader sstable, DecoratedKey key);
-
- /**
- * collects columns from reducedColumns into returnCF. Termination is determined
- * by the filter code, which should have some limit on the number of columns
- * to avoid running out of memory on large rows.
- */
- public abstract void collectReducedColumns(IColumnContainer container, Iterator<IColumn> reducedColumns, int gcBefore);
-
- /**
- * subcolumns of a supercolumn are unindexed, so to pick out parts of those we operate in-memory.
- * @param superColumn may be modified by filtering op.
- */
- public abstract SuperColumn filterSuperColumn(SuperColumn superColumn, int gcBefore);
-
- public Comparator<IColumn> getColumnComparator(AbstractType<?> comparator);
-
- public boolean isReversed();
- public void updateColumnsLimit(int newLimit);
-
- public static class Serializer implements IVersionedSerializer<IFilter>
- {
- public static Serializer instance = new Serializer();
-
- public void serialize(IFilter filter, DataOutput dos, int version) throws IOException
- {
- if (filter instanceof SliceQueryFilter)
- {
- dos.writeByte(0);
- SliceQueryFilter.serializer.serialize((SliceQueryFilter)filter, dos, version);
- }
- else
- {
- dos.writeByte(1);
- NamesQueryFilter.serializer.serialize((NamesQueryFilter)filter, dos, version);
- }
- }
-
- public IFilter deserialize(DataInput dis, int version) throws IOException
- {
- throw new UnsupportedOperationException();
- }
-
- public IFilter deserialize(DataInput dis, int version, AbstractType<?> comparator) throws IOException
- {
- int type = dis.readByte();
- if (type == 0)
- {
- return SliceQueryFilter.serializer.deserialize(dis, version);
- }
- else
- {
- assert type == 1;
- return NamesQueryFilter.serializer.deserialize(dis, version, comparator);
- }
- }
-
- public long serializedSize(IFilter filter, int version)
- {
- int size = 1;
- if (filter instanceof SliceQueryFilter)
- size += SliceQueryFilter.serializer.serializedSize((SliceQueryFilter)filter, version);
- else
- size += NamesQueryFilter.serializer.serializedSize((NamesQueryFilter)filter, version);
- return size;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java b/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java
index fb8c3aa..a347926 100644
--- a/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java
+++ b/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java
@@ -39,7 +39,7 @@ import org.apache.cassandra.io.util.FileDataInput;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.FBUtilities;
-public class NamesQueryFilter implements IFilter
+public class NamesQueryFilter implements IDiskAtomFilter
{
public static final Serializer serializer = new Serializer();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/filter/QueryFilter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/filter/QueryFilter.java b/src/java/org/apache/cassandra/db/filter/QueryFilter.java
index 6d073c1..31b9db7 100644
--- a/src/java/org/apache/cassandra/db/filter/QueryFilter.java
+++ b/src/java/org/apache/cassandra/db/filter/QueryFilter.java
@@ -34,10 +34,10 @@ public class QueryFilter
{
public final DecoratedKey key;
public final QueryPath path;
- public final IFilter filter;
- private final IFilter superFilter;
+ public final IDiskAtomFilter filter;
+ private final IDiskAtomFilter superFilter;
- public QueryFilter(DecoratedKey key, QueryPath path, IFilter filter)
+ public QueryFilter(DecoratedKey key, QueryPath path, IDiskAtomFilter filter)
{
this.key = key;
this.path = path;
@@ -87,7 +87,7 @@ public class QueryFilter
// TODO move gcBefore into a field
public void collateColumns(final ColumnFamily returnCF, List<? extends CloseableIterator<IColumn>> toCollate, final int gcBefore)
{
- IFilter topLevelFilter = (superFilter == null ? filter : superFilter);
+ IDiskAtomFilter topLevelFilter = (superFilter == null ? filter : superFilter);
Comparator<IColumn> fcomp = topLevelFilter.getColumnComparator(returnCF.getComparator());
// define a 'reduced' iterator that merges columns w/ the same name, which
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java b/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
index acc7855..75b881b 100644
--- a/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
+++ b/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
@@ -37,7 +37,7 @@ import org.apache.cassandra.io.sstable.SSTableReader;
import org.apache.cassandra.io.util.FileDataInput;
import org.apache.cassandra.net.MessagingService;
-public class SliceQueryFilter implements IFilter
+public class SliceQueryFilter implements IDiskAtomFilter
{
private static final Logger logger = LoggerFactory.getLogger(SliceQueryFilter.class);
public static final Serializer serializer = new Serializer();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
index f7d1c92..5a3da59 100644
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
@@ -29,10 +29,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.config.ColumnDefinition;
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.compaction.CompactionManager;
-import org.apache.cassandra.db.filter.IFilter;
import org.apache.cassandra.dht.AbstractBounds;
import org.apache.cassandra.io.sstable.ReducingKeyIterator;
import org.apache.cassandra.io.sstable.SSTableReader;
@@ -534,7 +534,7 @@ public class SecondaryIndexManager
* @param dataFilter the column range to restrict to
* @return found indexed rows
*/
- public List<Row> search(List<IndexExpression> clause, AbstractBounds<RowPosition> range, int maxResults, IFilter dataFilter, boolean maxIsColumns)
+ public List<Row> search(List<IndexExpression> clause, AbstractBounds<RowPosition> range, int maxResults, IDiskAtomFilter dataFilter, boolean maxIsColumns)
{
List<SecondaryIndexSearcher> indexSearchers = getIndexSearchersForQuery(clause);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java b/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
index 6140a01..d49169c 100644
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
@@ -21,7 +21,7 @@ import java.nio.ByteBuffer;
import java.util.*;
import org.apache.cassandra.db.*;
-import org.apache.cassandra.db.filter.IFilter;
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
import org.apache.cassandra.dht.AbstractBounds;
import org.apache.cassandra.thrift.IndexExpression;
@@ -38,7 +38,7 @@ public abstract class SecondaryIndexSearcher
this.baseCfs = indexManager.baseCfs;
}
- public abstract List<Row> search(List<IndexExpression> clause, AbstractBounds<RowPosition> range, int maxResults, IFilter dataFilter, boolean maxIsColumns);
+ public abstract List<Row> search(List<IndexExpression> clause, AbstractBounds<RowPosition> range, int maxResults, IDiskAtomFilter dataFilter, boolean maxIsColumns);
/**
* @return true this index is able to handle given clauses.
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java b/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
index 9b37ae3..8327154 100644
--- a/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
@@ -77,7 +77,7 @@ public class CompositesSearcher extends SecondaryIndexSearcher
}
@Override
- public List<Row> search(List<IndexExpression> clause, AbstractBounds<RowPosition> range, int maxResults, IFilter dataFilter, boolean maxIsColumns)
+ public List<Row> search(List<IndexExpression> clause, AbstractBounds<RowPosition> range, int maxResults, IDiskAtomFilter dataFilter, boolean maxIsColumns)
{
assert clause != null && !clause.isEmpty();
ExtendedFilter filter = ExtendedFilter.create(baseCfs, dataFilter, clause, maxResults, maxIsColumns, false);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java b/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
index 4bd2b39..5d7adfe 100644
--- a/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
@@ -83,7 +83,7 @@ public class KeysSearcher extends SecondaryIndexSearcher
}
@Override
- public List<Row> search(List<IndexExpression> clause, AbstractBounds<RowPosition> range, int maxResults, IFilter dataFilter, boolean maxIsColumns)
+ public List<Row> search(List<IndexExpression> clause, AbstractBounds<RowPosition> range, int maxResults, IDiskAtomFilter dataFilter, boolean maxIsColumns)
{
assert clause != null && !clause.isEmpty();
ExtendedFilter filter = ExtendedFilter.create(baseCfs, dataFilter, clause, maxResults, maxIsColumns, false);
@@ -201,7 +201,7 @@ public class KeysSearcher extends SecondaryIndexSearcher
// as in CFS.filter - extend the filter to ensure we include the columns
// from the index expressions, just in case they weren't included in the initialFilter
- IFilter extraFilter = filter.getExtraFilter(data);
+ IDiskAtomFilter extraFilter = filter.getExtraFilter(data);
if (extraFilter != null)
{
ColumnFamily cf = baseCfs.getColumnFamily(new QueryFilter(dk, path, extraFilter));
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/io/sstable/IndexHelper.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/IndexHelper.java b/src/java/org/apache/cassandra/io/sstable/IndexHelper.java
index a87ecf7..d01c45d 100644
--- a/src/java/org/apache/cassandra/io/sstable/IndexHelper.java
+++ b/src/java/org/apache/cassandra/io/sstable/IndexHelper.java
@@ -105,7 +105,7 @@ public class IndexHelper
return indexList;
}
- public static Filter defreezeBloomFilter(FileDataInput file, FilterFactory.Type type) throws IOException
+ public static IFilter defreezeBloomFilter(FileDataInput file, FilterFactory.Type type) throws IOException
{
return defreezeBloomFilter(file, Integer.MAX_VALUE, type);
}
@@ -122,7 +122,7 @@ public class IndexHelper
* Guarantees that file's current position will be just after the bloom filter, even if
* the filter cannot be deserialized, UNLESS EOFException is thrown.
*/
- public static Filter defreezeBloomFilter(FileDataInput file, long maxSize, FilterFactory.Type type) throws IOException
+ public static IFilter defreezeBloomFilter(FileDataInput file, long maxSize, FilterFactory.Type type) throws IOException
{
int size = file.readInt();
if (size > maxSize || size <= 0)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
index 812a475..da0e457 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
@@ -82,7 +82,7 @@ public class SSTableReader extends SSTable
private SegmentedFile dfile;
private IndexSummary indexSummary;
- private Filter bf;
+ private IFilter bf;
private InstrumentingCache<KeyCacheKey, RowIndexEntry> keyCache;
@@ -271,7 +271,7 @@ public class SSTableReader extends SSTable
SegmentedFile ifile,
SegmentedFile dfile,
IndexSummary isummary,
- Filter bf,
+ IFilter bf,
long maxDataAge,
SSTableMetadata sstableMetadata)
{
@@ -294,7 +294,7 @@ public class SSTableReader extends SSTable
SegmentedFile ifile,
SegmentedFile dfile,
IndexSummary indexSummary,
- Filter bloomFilter,
+ IFilter bloomFilter,
long maxDataAge,
SSTableMetadata sstableMetadata)
{
@@ -514,7 +514,7 @@ public class SSTableReader extends SSTable
bf = LegacyBloomFilter.alwaysMatchingBloomFilter();
}
- public Filter getBloomFilter()
+ public IFilter getBloomFilter()
{
return bf;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
index 2627a77..ad0421a 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
@@ -428,7 +428,7 @@ public class SSTableWriter extends SSTable
private final SequentialWriter indexFile;
public final SegmentedFile.Builder builder;
public final IndexSummary summary;
- public final Filter bf;
+ public final IFilter bf;
private FileMark mark;
IndexWriter(long keyCount)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/service/RowRepairResolver.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/RowRepairResolver.java b/src/java/org/apache/cassandra/service/RowRepairResolver.java
index 2c6fe1e..975b204 100644
--- a/src/java/org/apache/cassandra/service/RowRepairResolver.java
+++ b/src/java/org/apache/cassandra/service/RowRepairResolver.java
@@ -28,7 +28,7 @@ import com.google.common.collect.Iterables;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.columniterator.IdentityQueryFilter;
-import org.apache.cassandra.db.filter.IFilter;
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.db.filter.SliceQueryFilter;
@@ -38,6 +38,7 @@ import org.apache.cassandra.net.MessageOut;
import org.apache.cassandra.net.MessagingService;
import org.apache.cassandra.utils.CloseableIterator;
import org.apache.cassandra.utils.FBUtilities;
+import org.apache.cassandra.utils.IFilter;
public class RowRepairResolver extends AbstractRowResolver
{
@@ -45,7 +46,7 @@ public class RowRepairResolver extends AbstractRowResolver
public List<IAsyncResult> repairResults = Collections.emptyList();
private final SliceQueryFilter filter; // can be null if names query
- public RowRepairResolver(String table, ByteBuffer key, IFilter qFilter)
+ public RowRepairResolver(String table, ByteBuffer key, IDiskAtomFilter qFilter)
{
super(key, table);
this.filter = qFilter instanceof SliceQueryFilter ? (SliceQueryFilter)qFilter : null;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/thrift/CassandraServer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/thrift/CassandraServer.java b/src/java/org/apache/cassandra/thrift/CassandraServer.java
index ea26d46..980b740 100644
--- a/src/java/org/apache/cassandra/thrift/CassandraServer.java
+++ b/src/java/org/apache/cassandra/thrift/CassandraServer.java
@@ -30,6 +30,8 @@ import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
import org.apache.cassandra.utils.Pair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,7 +45,6 @@ import org.apache.cassandra.cql.CQLStatement;
import org.apache.cassandra.cql.QueryProcessor;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.context.CounterContext;
-import org.apache.cassandra.db.filter.IFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.db.marshal.MarshalException;
import org.apache.cassandra.db.marshal.TimeUUIDType;
@@ -953,7 +954,7 @@ public class CassandraServer implements Cassandra.Iface
schedule(DatabaseDescriptor.getRangeRpcTimeout());
try
{
- IFilter filter = ThriftValidation.asIFilter(predicate,
+ IDiskAtomFilter filter = ThriftValidation.asIFilter(predicate,
metadata.getComparatorFor(column_parent.super_column));
rows = StorageProxy.getRangeSlice(new RangeSliceCommand(keyspace, column_parent, filter, bounds,
range.row_filter, range.count), consistencyLevel);
@@ -1044,7 +1045,7 @@ public class CassandraServer implements Cassandra.Iface
schedule(DatabaseDescriptor.getRangeRpcTimeout());
try
{
- IFilter filter = ThriftValidation.asIFilter(predicate, metadata.comparator);
+ IDiskAtomFilter filter = ThriftValidation.asIFilter(predicate, metadata.comparator);
rows = StorageProxy.getRangeSlice(new RangeSliceCommand(keyspace, column_family, null, filter,
bounds, range.row_filter, range.count, true, true), consistencyLevel);
}
@@ -1125,7 +1126,7 @@ public class CassandraServer implements Cassandra.Iface
AbstractBounds<RowPosition> bounds = new Bounds<RowPosition>(RowPosition.forKey(index_clause.start_key, p),
p.getMinimumToken().minKeyBound());
- IFilter filter = ThriftValidation.asIFilter(column_predicate,
+ IDiskAtomFilter filter = ThriftValidation.asIFilter(column_predicate,
metadata.getComparatorFor(column_parent.super_column));
RangeSliceCommand command = new RangeSliceCommand(keyspace,
column_parent.column_family,
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/thrift/ThriftValidation.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/thrift/ThriftValidation.java b/src/java/org/apache/cassandra/thrift/ThriftValidation.java
index f40dee1..3912e82 100644
--- a/src/java/org/apache/cassandra/thrift/ThriftValidation.java
+++ b/src/java/org/apache/cassandra/thrift/ThriftValidation.java
@@ -25,7 +25,7 @@ import org.slf4j.LoggerFactory;
import org.apache.cassandra.config.*;
import org.apache.cassandra.db.*;
-import org.apache.cassandra.db.filter.IFilter;
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
import org.apache.cassandra.db.filter.NamesQueryFilter;
import org.apache.cassandra.db.filter.SliceQueryFilter;
import org.apache.cassandra.db.index.SecondaryIndexManager;
@@ -577,7 +577,7 @@ public class ThriftValidation
throw new org.apache.cassandra.exceptions.InvalidRequestException("system keyspace is not user-modifiable");
}
- public static IFilter asIFilter(SlicePredicate sp, AbstractType<?> comparator)
+ public static IDiskAtomFilter asIFilter(SlicePredicate sp, AbstractType<?> comparator)
{
SliceRange sr = sp.slice_range;
if (sr == null)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/utils/BloomFilter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/BloomFilter.java b/src/java/org/apache/cassandra/utils/BloomFilter.java
index 469763a..b134b3c 100644
--- a/src/java/org/apache/cassandra/utils/BloomFilter.java
+++ b/src/java/org/apache/cassandra/utils/BloomFilter.java
@@ -22,9 +22,10 @@ import java.nio.ByteBuffer;
import org.apache.cassandra.utils.obs.IBitSet;
-public abstract class BloomFilter extends Filter
+public abstract class BloomFilter implements IFilter
{
public final IBitSet bitset;
+ public final int hashCount;
BloomFilter(int hashes, IBitSet bitset)
{
@@ -80,7 +81,6 @@ public abstract class BloomFilter extends Filter
bitset.clear();
}
- @Override
public void close() throws IOException
{
bitset.close();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/utils/BloomFilterSerializer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/BloomFilterSerializer.java b/src/java/org/apache/cassandra/utils/BloomFilterSerializer.java
index 6b8b355..b966c4d 100644
--- a/src/java/org/apache/cassandra/utils/BloomFilterSerializer.java
+++ b/src/java/org/apache/cassandra/utils/BloomFilterSerializer.java
@@ -31,7 +31,7 @@ abstract class BloomFilterSerializer implements ISerializer<BloomFilter>
{
public void serialize(BloomFilter bf, DataOutput dos) throws IOException
{
- dos.writeInt(bf.getHashCount());
+ dos.writeInt(bf.hashCount);
bf.bitset.serialize(dos);
}
@@ -59,7 +59,7 @@ abstract class BloomFilterSerializer implements ISerializer<BloomFilter>
*/
public long serializedSize(BloomFilter bf, TypeSizes typeSizes)
{
- int size = typeSizes.sizeof(bf.getHashCount()); // hash count
+ int size = typeSizes.sizeof(bf.hashCount); // hash count
size += bf.bitset.serializedSize(typeSizes);
return size;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/utils/Filter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/Filter.java b/src/java/org/apache/cassandra/utils/Filter.java
deleted file mode 100644
index ea98401..0000000
--- a/src/java/org/apache/cassandra/utils/Filter.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.cassandra.utils;
-
-import java.io.Closeable;
-import java.nio.ByteBuffer;
-
-public abstract class Filter implements Closeable
-{
- int hashCount;
-
- int getHashCount()
- {
- return hashCount;
- }
-
- public abstract void add(ByteBuffer key);
-
- public abstract boolean isPresent(ByteBuffer key);
-
- public abstract void clear();
-}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/utils/FilterFactory.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/FilterFactory.java b/src/java/org/apache/cassandra/utils/FilterFactory.java
index 3eae519..a947a2f 100644
--- a/src/java/org/apache/cassandra/utils/FilterFactory.java
+++ b/src/java/org/apache/cassandra/utils/FilterFactory.java
@@ -40,12 +40,12 @@ public class FilterFactory
SHA, MURMUR2, MURMUR3
}
- public static void serialize(Filter bf, DataOutput output) throws IOException
+ public static void serialize(IFilter bf, DataOutput output) throws IOException
{
serialize(bf, output, Type.MURMUR3);
}
- public static void serialize(Filter bf, DataOutput output, Type type) throws IOException
+ public static void serialize(IFilter bf, DataOutput output, Type type) throws IOException
{
switch (type)
{
@@ -61,7 +61,7 @@ public class FilterFactory
}
}
- public static Filter deserialize(DataInput input, Type type, boolean offheap) throws IOException
+ public static IFilter deserialize(DataInput input, Type type, boolean offheap) throws IOException
{
switch (type)
{
@@ -74,12 +74,12 @@ public class FilterFactory
}
}
- public static long serializedSize(Filter bf)
+ public static long serializedSize(IFilter bf)
{
return serializedSize(bf, Type.MURMUR3);
}
- public static long serializedSize(Filter bf, Type type)
+ public static long serializedSize(IFilter bf, Type type)
{
switch (type)
{
@@ -96,13 +96,13 @@ public class FilterFactory
* @return A BloomFilter with the lowest practical false positive
* probability for the given number of elements.
*/
- public static Filter getFilter(long numElements, int targetBucketsPerElem, boolean offheap)
+ public static IFilter getFilter(long numElements, int targetBucketsPerElem, boolean offheap)
{
return getFilter(numElements, targetBucketsPerElem, Type.MURMUR3, offheap);
}
// helper method for test.
- static Filter getFilter(long numElements, int targetBucketsPerElem, Type type, boolean offheap)
+ static IFilter getFilter(long numElements, int targetBucketsPerElem, Type type, boolean offheap)
{
int maxBucketsPerElement = Math.max(1, BloomCalculations.maxBucketsPerElement(numElements));
int bucketsPerElement = Math.min(targetBucketsPerElem, maxBucketsPerElement);
@@ -121,13 +121,13 @@ public class FilterFactory
* Asserts that the given probability can be satisfied using this
* filter.
*/
- public static Filter getFilter(long numElements, double maxFalsePosProbability, boolean offheap)
+ public static IFilter getFilter(long numElements, double maxFalsePosProbability, boolean offheap)
{
return getFilter(numElements, maxFalsePosProbability, Type.MURMUR3, offheap);
}
// helper method for test.
- static Filter getFilter(long numElements, double maxFalsePosProbability, Type type, boolean offheap)
+ static IFilter getFilter(long numElements, double maxFalsePosProbability, Type type, boolean offheap)
{
assert maxFalsePosProbability <= 1.0 : "Invalid probability";
int bucketsPerElement = BloomCalculations.maxBucketsPerElement(numElements);
@@ -135,7 +135,7 @@ public class FilterFactory
return createFilter(spec.K, numElements, spec.bucketsPerElement, type, offheap);
}
- private static Filter createFilter(int hash, long numElements, int bucketsPer, Type type, boolean offheap)
+ private static IFilter createFilter(int hash, long numElements, int bucketsPer, Type type, boolean offheap)
{
long numBits = (numElements * bucketsPer) + BITSET_EXCESS;
IBitSet bitset = offheap ? new OffHeapBitSet(numBits) : new OpenBitSet(numBits);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/utils/IFilter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/IFilter.java b/src/java/org/apache/cassandra/utils/IFilter.java
new file mode 100644
index 0000000..5e88155
--- /dev/null
+++ b/src/java/org/apache/cassandra/utils/IFilter.java
@@ -0,0 +1,30 @@
+/*
+ * 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.cassandra.utils;
+
+import java.io.Closeable;
+import java.nio.ByteBuffer;
+
+public interface IFilter extends Closeable
+{
+ public abstract void add(ByteBuffer key);
+
+ public abstract boolean isPresent(ByteBuffer key);
+
+ public abstract void clear();
+}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/src/java/org/apache/cassandra/utils/LegacyBloomFilter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/LegacyBloomFilter.java b/src/java/org/apache/cassandra/utils/LegacyBloomFilter.java
index a50e2c8..f664f66 100644
--- a/src/java/org/apache/cassandra/utils/LegacyBloomFilter.java
+++ b/src/java/org/apache/cassandra/utils/LegacyBloomFilter.java
@@ -24,13 +24,14 @@ import java.util.BitSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class LegacyBloomFilter extends Filter
+public class LegacyBloomFilter implements IFilter
{
private static final int EXCESS = 20;
private static final Logger logger = LoggerFactory.getLogger(LegacyBloomFilter.class);
public static final LegacyBloomFilterSerializer serializer = new LegacyBloomFilterSerializer();
private BitSet filter;
+ private final int hashCount;
LegacyBloomFilter(int hashes, BitSet filter)
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/test/long/org/apache/cassandra/utils/LongBloomFilterTest.java
----------------------------------------------------------------------
diff --git a/test/long/org/apache/cassandra/utils/LongBloomFilterTest.java b/test/long/org/apache/cassandra/utils/LongBloomFilterTest.java
index 06ad642..94caa97 100644
--- a/test/long/org/apache/cassandra/utils/LongBloomFilterTest.java
+++ b/test/long/org/apache/cassandra/utils/LongBloomFilterTest.java
@@ -34,7 +34,7 @@ public class LongBloomFilterTest
public void testBigInt(FilterFactory.Type type)
{
int size = 10 * 1000 * 1000;
- Filter bf = FilterFactory.getFilter(size, FilterTestHelper.spec.bucketsPerElement, type, false);
+ IFilter bf = FilterFactory.getFilter(size, FilterTestHelper.spec.bucketsPerElement, type, false);
double fp = FilterTestHelper.testFalsePositives(bf, new KeyGenerator.IntGenerator(size),
new KeyGenerator.IntGenerator(size, size * 2));
logger.info("Bloom filter false positive: {}", fp);
@@ -43,7 +43,7 @@ public class LongBloomFilterTest
public void testBigRandom(FilterFactory.Type type)
{
int size = 10 * 1000 * 1000;
- Filter bf = FilterFactory.getFilter(size, FilterTestHelper.spec.bucketsPerElement, type, false);
+ IFilter bf = FilterFactory.getFilter(size, FilterTestHelper.spec.bucketsPerElement, type, false);
double fp = FilterTestHelper.testFalsePositives(bf, new KeyGenerator.RandomStringGenerator(new Random().nextInt(), size),
new KeyGenerator.RandomStringGenerator(new Random().nextInt(), size));
logger.info("Bloom filter false positive: {}", fp);
@@ -52,7 +52,7 @@ public class LongBloomFilterTest
public void timeit(FilterFactory.Type type)
{
int size = 300 * FilterTestHelper.ELEMENTS;
- Filter bf = FilterFactory.getFilter(size, FilterTestHelper.spec.bucketsPerElement, type, false);
+ IFilter bf = FilterFactory.getFilter(size, FilterTestHelper.spec.bucketsPerElement, type, false);
double sumfp = 0;
for (int i = 0; i < 10; i++)
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/test/unit/org/apache/cassandra/db/CleanupTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/CleanupTest.java b/test/unit/org/apache/cassandra/db/CleanupTest.java
index ef598bb..5872407 100644
--- a/test/unit/org/apache/cassandra/db/CleanupTest.java
+++ b/test/unit/org/apache/cassandra/db/CleanupTest.java
@@ -29,10 +29,10 @@ import java.util.concurrent.ExecutionException;
import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.Util;
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.db.columniterator.IdentityQueryFilter;
import org.apache.cassandra.db.compaction.CompactionManager;
-import org.apache.cassandra.db.filter.IFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.db.index.SecondaryIndex;
import org.apache.cassandra.dht.BytesToken;
@@ -112,7 +112,7 @@ public class CleanupTest extends SchemaLoader
// verify we get it back w/ index query too
IndexExpression expr = new IndexExpression(COLUMN, IndexOperator.EQ, VALUE);
List<IndexExpression> clause = Arrays.asList(expr);
- IFilter filter = new IdentityQueryFilter();
+ IDiskAtomFilter filter = new IdentityQueryFilter();
IPartitioner p = StorageService.getPartitioner();
Range<RowPosition> range = Util.range("", "");
rows = table.getColumnFamilyStore(CF1).search(clause, range, Integer.MAX_VALUE, filter);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java b/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
index f8dafc4..625d25f 100644
--- a/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
+++ b/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
@@ -209,7 +209,7 @@ public class ColumnFamilyStoreTest extends SchemaLoader
// basic single-expression query
IndexExpression expr = new IndexExpression(ByteBufferUtil.bytes("birthdate"), IndexOperator.EQ, ByteBufferUtil.bytes(1L));
List<IndexExpression> clause = Arrays.asList(expr);
- IFilter filter = new IdentityQueryFilter();
+ IDiskAtomFilter filter = new IdentityQueryFilter();
IPartitioner p = StorageService.getPartitioner();
Range<RowPosition> range = Util.range("", "");
List<Row> rows = Table.open("Keyspace1").getColumnFamilyStore("Indexed1").search(clause, range, 100, filter);
@@ -278,7 +278,7 @@ public class ColumnFamilyStoreTest extends SchemaLoader
IndexExpression expr = new IndexExpression(ByteBufferUtil.bytes("birthdate"), IndexOperator.EQ, ByteBufferUtil.bytes(34L));
IndexExpression expr2 = new IndexExpression(ByteBufferUtil.bytes("notbirthdate"), IndexOperator.EQ, ByteBufferUtil.bytes(1L));
List<IndexExpression> clause = Arrays.asList(expr, expr2);
- IFilter filter = new IdentityQueryFilter();
+ IDiskAtomFilter filter = new IdentityQueryFilter();
IPartitioner p = StorageService.getPartitioner();
Range<RowPosition> range = Util.range("", "");
List<Row> rows = Table.open("Keyspace1").getColumnFamilyStore("Indexed1").search(clause, range, 100, filter);
@@ -304,7 +304,7 @@ public class ColumnFamilyStoreTest extends SchemaLoader
IndexExpression expr = new IndexExpression(ByteBufferUtil.bytes("birthdate"), IndexOperator.EQ, ByteBufferUtil.bytes(1L));
List<IndexExpression> clause = Arrays.asList(expr);
- IFilter filter = new IdentityQueryFilter();
+ IDiskAtomFilter filter = new IdentityQueryFilter();
IPartitioner p = StorageService.getPartitioner();
Range<RowPosition> range = Util.range("", "");
List<Row> rows = cfs.search(clause, range, 100, filter);
@@ -403,7 +403,7 @@ public class ColumnFamilyStoreTest extends SchemaLoader
IndexExpression expr = new IndexExpression(ByteBufferUtil.bytes("birthdate"), IndexOperator.EQ, ByteBufferUtil.bytes(1L));
List<IndexExpression> clause = Arrays.asList(expr);
- IFilter filter = new IdentityQueryFilter();
+ IDiskAtomFilter filter = new IdentityQueryFilter();
IPartitioner p = StorageService.getPartitioner();
Range<RowPosition> range = Util.range("", "");
List<Row> rows = table.getColumnFamilyStore("Indexed1").search(clause, range, 100, filter);
@@ -448,7 +448,7 @@ public class ColumnFamilyStoreTest extends SchemaLoader
rm.apply();
IndexExpression expr = new IndexExpression(colName, IndexOperator.EQ, val1);
List<IndexExpression> clause = Arrays.asList(expr);
- IFilter filter = new IdentityQueryFilter();
+ IDiskAtomFilter filter = new IdentityQueryFilter();
Range<RowPosition> range = Util.range("", "");
List<Row> rows = table.getColumnFamilyStore(cfName).search(clause, range, 100, filter);
assertEquals(1, rows.size());
@@ -520,7 +520,7 @@ public class ColumnFamilyStoreTest extends SchemaLoader
// test that the index query fetches this version
IndexExpression expr = new IndexExpression(colName, IndexOperator.EQ, val1);
List<IndexExpression> clause = Arrays.asList(expr);
- IFilter filter = new IdentityQueryFilter();
+ IDiskAtomFilter filter = new IdentityQueryFilter();
Range<RowPosition> range = Util.range("", "");
List<Row> rows = table.getColumnFamilyStore(cfName).search(clause, range, 100, filter);
assertEquals(1, rows.size());
@@ -593,7 +593,7 @@ public class ColumnFamilyStoreTest extends SchemaLoader
IndexExpression expr1 = new IndexExpression(ByteBufferUtil.bytes("birthdate"), IndexOperator.EQ, ByteBufferUtil.bytes(1L));
IndexExpression expr2 = new IndexExpression(ByteBufferUtil.bytes("notbirthdate"), IndexOperator.GT, ByteBufferUtil.bytes(1L));
List<IndexExpression> clause = Arrays.asList(new IndexExpression[]{ expr1, expr2 });
- IFilter filter = new IdentityQueryFilter();
+ IDiskAtomFilter filter = new IdentityQueryFilter();
IPartitioner p = StorageService.getPartitioner();
Range<RowPosition> range = Util.range("", "");
List<Row> rows = Table.open("Keyspace1").getColumnFamilyStore("Indexed1").search(clause, range, 1, filter);
@@ -638,7 +638,7 @@ public class ColumnFamilyStoreTest extends SchemaLoader
{
IndexExpression expr = new IndexExpression(ByteBufferUtil.bytes("birthdate"), IndexOperator.EQ, ByteBufferUtil.bytes(1L));
List<IndexExpression> clause = Arrays.asList(expr);
- IFilter filter = new IdentityQueryFilter();
+ IDiskAtomFilter filter = new IdentityQueryFilter();
IPartitioner p = StorageService.getPartitioner();
List<Row> rows = table.getColumnFamilyStore("Indexed2").search(clause, Util.range("", ""), 100, filter);
assert rows.size() == 1 : StringUtils.join(rows, ",");
@@ -1100,7 +1100,7 @@ public class ColumnFamilyStoreTest extends SchemaLoader
sp.getSlice_range().setCount(1);
sp.getSlice_range().setStart(ArrayUtils.EMPTY_BYTE_ARRAY);
sp.getSlice_range().setFinish(ArrayUtils.EMPTY_BYTE_ARRAY);
- IFilter qf = ThriftValidation.asIFilter(sp, cfs.getComparator());
+ IDiskAtomFilter qf = ThriftValidation.asIFilter(sp, cfs.getComparator());
List<Row> rows;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a15500e7/test/unit/org/apache/cassandra/streaming/StreamingTransferTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/streaming/StreamingTransferTest.java b/test/unit/org/apache/cassandra/streaming/StreamingTransferTest.java
index 00fc262..54d32569 100644
--- a/test/unit/org/apache/cassandra/streaming/StreamingTransferTest.java
+++ b/test/unit/org/apache/cassandra/streaming/StreamingTransferTest.java
@@ -31,7 +31,7 @@ import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.columniterator.IdentityQueryFilter;
import org.apache.cassandra.db.context.CounterContext;
-import org.apache.cassandra.db.filter.IFilter;
+import org.apache.cassandra.db.filter.IDiskAtomFilter;
import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.dht.IPartitioner;
@@ -153,7 +153,7 @@ public class StreamingTransferTest extends SchemaLoader
IndexOperator.EQ,
ByteBufferUtil.bytes(val));
List<IndexExpression> clause = Arrays.asList(expr);
- IFilter filter = new IdentityQueryFilter();
+ IDiskAtomFilter filter = new IdentityQueryFilter();
Range<RowPosition> range = Util.range("", "");
List<Row> rows = cfs.search(clause, range, 100, filter);
assertEquals(1, rows.size());