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 2010/03/30 17:14:05 UTC
svn commit: r929163 - in /cassandra/trunk: src/java/org/apache/cassandra/db/
src/java/org/apache/cassandra/db/filter/ test/system/
test/unit/org/apache/cassandra/db/ test/unit/org/apache/cassandra/tools/
Author: jbellis
Date: Tue Mar 30 15:14:03 2010
New Revision: 929163
URL: http://svn.apache.org/viewvc?rev=929163&view=rev
Log:
separate QueryFilter from IFilter, make QueryFilter handle both the top-level and subcolumn filtering transparently to caller.
patch by jbellis; reviewed by johano for CASSANDRA-917
Added:
cassandra/trunk/src/java/org/apache/cassandra/db/filter/IFilter.java (with props)
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java
cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java
cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
cassandra/trunk/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
cassandra/trunk/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java
cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
cassandra/trunk/src/java/org/apache/cassandra/db/filter/ColumnIterator.java
cassandra/trunk/src/java/org/apache/cassandra/db/filter/IdentityQueryFilter.java
cassandra/trunk/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java
cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryFilter.java
cassandra/trunk/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
cassandra/trunk/test/system/test_thrift_server.py
cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsPurgeTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyWithFlush1Test.java
cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyWithFlush2Test.java
cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSubColumnTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSuperColumnTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/TableTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/TimeSortTest.java
cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Tue Mar 30 15:14:03 2010
@@ -705,12 +705,12 @@ public class ColumnFamilyStore implement
public ColumnFamily getColumnFamily(String key, QueryPath path, byte[] start, byte[] finish, List<byte[]> bitmasks, boolean reversed, int limit)
{
- return getColumnFamily(new SliceQueryFilter(key, path, start, finish, bitmasks, reversed, limit));
+ return getColumnFamily(QueryFilter.getSliceFilter(key, path, start, finish, bitmasks, reversed, limit));
}
public ColumnFamily getColumnFamily(String key, QueryPath path, byte[] start, byte[] finish, boolean reversed, int limit)
{
- return getColumnFamily(new SliceQueryFilter(key, path, start, finish, reversed, limit));
+ return getColumnFamily(QueryFilter.getSliceFilter(key, path, start, finish, null, reversed, limit));
}
public ColumnFamily getColumnFamily(QueryFilter filter)
@@ -723,7 +723,7 @@ public class ColumnFamilyStore implement
ColumnFamily cached;
if ((cached = ssTables_.getRowCache().get(key)) == null)
{
- cached = getTopLevelColumns(new IdentityQueryFilter(key, new QueryPath(columnFamily_)), Integer.MIN_VALUE);
+ cached = getTopLevelColumns(QueryFilter.getIdentityFilter(key, new QueryPath(columnFamily_)), Integer.MIN_VALUE);
if (cached == null)
return null;
ssTables_.getRowCache().put(key, cached);
@@ -743,46 +743,18 @@ public class ColumnFamilyStore implement
long start = System.nanoTime();
try
{
- if (filter.path.superColumnName == null)
- {
- if (ssTables_.getRowCache().getCapacity() == 0)
- return removeDeleted(getTopLevelColumns(filter, gcBefore), gcBefore);
-
- ColumnFamily cached = cacheRow(filter.key);
- ColumnIterator ci = filter.getMemColumnIterator(memtable_, cached, getComparator()); // TODO passing memtable here is confusing since it's almost entirely unused
- ColumnFamily returnCF = ci.getColumnFamily();
- filter.collectCollatedColumns(returnCF, ci, gcBefore);
- return removeDeleted(returnCF, gcBefore);
- }
-
- // we are querying subcolumns of a supercolumn: fetch the supercolumn with NQF, then filter in-memory.
- ColumnFamily cf;
- SuperColumn sc;
if (ssTables_.getRowCache().getCapacity() == 0)
- {
- QueryFilter nameFilter = new NamesQueryFilter(filter.key, new QueryPath(columnFamily_), filter.path.superColumnName);
- cf = getTopLevelColumns(nameFilter, gcBefore);
- if (cf == null || cf.getColumnCount() == 0)
- return cf;
-
- assert cf.getSortedColumns().size() == 1;
- sc = (SuperColumn)cf.getSortedColumns().iterator().next();
- }
- else
- {
- cf = cacheRow(filter.key);
- if (cf == null)
- return null;
- sc = (SuperColumn)cf.getColumn(filter.path.superColumnName);
- if (sc == null)
- return null;
- sc = (SuperColumn)sc.cloneMe();
- }
-
- SuperColumn scFiltered = filter.filterSuperColumn(sc, gcBefore);
- ColumnFamily cfFiltered = cf.cloneMeShallow();
- cfFiltered.addColumn(scFiltered);
- return removeDeleted(cfFiltered, gcBefore);
+ return removeDeleted(getTopLevelColumns(filter, gcBefore), gcBefore);
+
+ ColumnFamily cached = cacheRow(filter.key);
+ if (cached == null)
+ return null;
+ ColumnIterator ci = filter.getMemtableColumnIterator(cached, getComparator(), gcBefore);
+ ColumnFamily returnCF = ci.getColumnFamily().cloneMeShallow();
+ filter.collectCollatedColumns(returnCF, ci, gcBefore);
+ // TODO this is necessary because when we collate supercolumns together, we don't check
+ // their subcolumns for relevance, so we need to do a second prune post facto here.
+ return removeDeleted(returnCF, gcBefore);
}
finally
{
@@ -794,39 +766,42 @@ public class ColumnFamilyStore implement
{
// we are querying top-level columns, do a merging fetch with indexes.
List<ColumnIterator> iterators = new ArrayList<ColumnIterator>();
+ final ColumnFamily returnCF = ColumnFamily.create(table_, columnFamily_);
try
{
- final ColumnFamily returnCF;
ColumnIterator iter;
/* add the current memtable */
Table.flusherLock.readLock().lock();
try
{
- iter = filter.getMemColumnIterator(memtable_, getComparator());
- // TODO this is a little subtle: the Memtable ColumnIterator has to be a shallow clone of the source CF,
- // with deletion times set correctly, so we can use it as the "base" CF to add query results to.
- // (for sstable ColumnIterators we do not care if it is a shallow clone or not.)
- returnCF = iter.getColumnFamily();
+ iter = filter.getMemtableColumnIterator(memtable_, getComparator(), gcBefore);
}
finally
{
Table.flusherLock.readLock().unlock();
}
- iterators.add(iter);
+ if (iter != null)
+ {
+ returnCF.delete(iter.getColumnFamily());
+ iterators.add(iter);
+ }
/* add the memtables being flushed */
for (Memtable memtable : getMemtablesPendingFlush())
{
- iter = filter.getMemColumnIterator(memtable, getComparator());
- returnCF.delete(iter.getColumnFamily());
- iterators.add(iter);
+ iter = filter.getMemtableColumnIterator(memtable, getComparator(), gcBefore);
+ if (iter != null)
+ {
+ returnCF.delete(iter.getColumnFamily());
+ iterators.add(iter);
+ }
}
/* add the SSTables on disk */
for (SSTableReader sstable : ssTables_)
{
- iter = filter.getSSTableColumnIterator(sstable);
+ iter = filter.getSSTableColumnIterator(sstable, gcBefore);
if (iter.hasNext()) // initializes iter.CF
{
returnCF.delete(iter.getColumnFamily());
@@ -840,7 +815,7 @@ public class ColumnFamilyStore implement
return null;
filter.collectCollatedColumns(returnCF, collated, gcBefore);
- return returnCF;
+ return returnCF; // caller is responsible for final removeDeleted
}
finally
{
@@ -1020,7 +995,9 @@ public class ColumnFamilyStore implement
columnNameSet.addAll(columnNames);
for (String key : keys)
{
- QueryFilter filter = sliceRange == null ? new NamesQueryFilter(key, queryPath, columnNameSet) : new SliceQueryFilter(key, queryPath, sliceRange.start, sliceRange.finish, sliceRange.bitmasks, sliceRange.reversed, sliceRange.count);
+ QueryFilter filter = sliceRange == null
+ ? QueryFilter.getNamesFilter(key, queryPath, columnNameSet)
+ : QueryFilter.getSliceFilter(key, queryPath, sliceRange.start, sliceRange.finish, sliceRange.bitmasks, sliceRange.reversed, sliceRange.count);
rows.add(new Row(key, getColumnFamily(filter)));
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java Tue Mar 30 15:14:03 2010
@@ -29,7 +29,6 @@ import java.util.concurrent.Future;
import javax.management.*;
import org.apache.cassandra.db.filter.QueryPath;
-import org.apache.cassandra.db.filter.SliceQueryFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java Tue Mar 30 15:14:03 2010
@@ -23,6 +23,7 @@ import org.apache.cassandra.config.CFMet
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.KSMetaData;
import org.apache.cassandra.db.commitlog.CommitLog;
+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.utils.FBUtilities;
@@ -283,7 +284,7 @@ public class DefsTable
{
Table defs = Table.open(Table.DEFINITIONS);
ColumnFamilyStore cfStore = defs.getColumnFamilyStore(SCHEMA_CF);
- SliceQueryFilter filter = new SliceQueryFilter(version.toString(), new QueryPath(SCHEMA_CF), "".getBytes(), "".getBytes(), false, 1024);
+ QueryFilter filter = QueryFilter.getSliceFilter(version.toString(), new QueryPath(SCHEMA_CF), "".getBytes(), "".getBytes(), null, false, 1024);
ColumnFamily cf = cfStore.getColumnFamily(filter);
Collection<KSMetaData> tables = new ArrayList<KSMetaData>();
for (IColumn col : cf.getSortedColumns())
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java Tue Mar 30 15:14:03 2010
@@ -30,7 +30,6 @@ import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.JMXEnabledThreadPoolExecutor;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.filter.QueryFilter;
-import org.apache.cassandra.db.filter.SliceQueryFilter;
import org.apache.cassandra.gms.FailureDetector;
import org.apache.cassandra.gms.Gossiper;
@@ -42,7 +41,6 @@ import org.apache.cassandra.net.Message;
import org.apache.cassandra.net.MessagingService;
import org.apache.cassandra.service.*;
import org.apache.cassandra.thrift.InvalidRequestException;
-import org.apache.cassandra.db.filter.IdentityQueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.utils.WrappedRunnable;
@@ -120,7 +118,7 @@ public class HintedHandOffManager
RowMutation rm = new RowMutation(tableName, key);
for (ColumnFamilyStore cfstore : table.getColumnFamilyStores())
{
- ColumnFamily cf = cfstore.getColumnFamily(new IdentityQueryFilter(key, new QueryPath(cfstore.getColumnFamilyName())));
+ ColumnFamily cf = cfstore.getColumnFamily(QueryFilter.getIdentityFilter(key, new QueryPath(cfstore.getColumnFamilyName())));
if (cf != null)
rm.add(cf);
}
@@ -172,7 +170,7 @@ public class HintedHandOffManager
byte[] startColumn = ArrayUtils.EMPTY_BYTE_ARRAY;
while (true)
{
- QueryFilter filter = new SliceQueryFilter(tableName, new QueryPath(HINTS_CF), startColumn, ArrayUtils.EMPTY_BYTE_ARRAY, false, PAGE_SIZE);
+ QueryFilter filter = QueryFilter.getSliceFilter(tableName, new QueryPath(HINTS_CF), startColumn, ArrayUtils.EMPTY_BYTE_ARRAY, null, false, PAGE_SIZE);
ColumnFamily hintColumnFamily = ColumnFamilyStore.removeDeleted(hintStore.getColumnFamily(filter), Integer.MAX_VALUE);
if (pagingFinished(hintColumnFamily, startColumn))
break;
@@ -236,7 +234,7 @@ public class HintedHandOffManager
byte[] startColumn = ArrayUtils.EMPTY_BYTE_ARRAY;
while (true)
{
- QueryFilter filter = new SliceQueryFilter(tableName, new QueryPath(HINTS_CF), startColumn, ArrayUtils.EMPTY_BYTE_ARRAY, false, PAGE_SIZE);
+ QueryFilter filter = QueryFilter.getSliceFilter(tableName, new QueryPath(HINTS_CF), startColumn, ArrayUtils.EMPTY_BYTE_ARRAY, null, false, PAGE_SIZE);
ColumnFamily hintColumnFamily = ColumnFamilyStore.removeDeleted(hintStore.getColumnFamily(filter), Integer.MAX_VALUE);
if (pagingFinished(hintColumnFamily, startColumn))
break;
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java Tue Mar 30 15:14:03 2010
@@ -193,7 +193,7 @@ public class Memtable implements Compara
return columnFamilies.isEmpty();
}
- private String getTableName()
+ public String getTableName()
{
return cfs.getTable().name;
}
@@ -201,11 +201,10 @@ public class Memtable implements Compara
/**
* obtain an iterator of columns in this memtable in the specified order starting from a given column.
*/
- public ColumnIterator getSliceIterator(ColumnFamily cf, SliceQueryFilter filter, AbstractType typeComparator)
+ public static ColumnIterator getSliceIterator(final ColumnFamily cf, SliceQueryFilter filter, AbstractType typeComparator)
{
- final ColumnFamily columnFamily = cf == null ? ColumnFamily.create(getTableName(), filter.getColumnFamilyName()) : cf.cloneMeShallow();
-
- Collection<IColumn> rawColumns = (cf == null ? columnFamily : cf).getSortedColumns();
+ assert cf != null;
+ Collection<IColumn> rawColumns = cf.getSortedColumns();
Collection<IColumn> filteredColumns = filter.applyPredicate(rawColumns);
final IColumn columns[] = filteredColumns.toArray(new IColumn[0]);
@@ -213,7 +212,7 @@ public class Memtable implements Compara
if (filter.reversed)
ArrayUtils.reverse(columns);
IColumn startIColumn;
- final boolean isStandard = DatabaseDescriptor.getColumnFamilyType(getTableName(), filter.getColumnFamilyName()).equals("Standard");
+ final boolean isStandard = !cf.isSuper();
if (isStandard)
startIColumn = new Column(filter.start);
else
@@ -240,7 +239,7 @@ public class Memtable implements Compara
public ColumnFamily getColumnFamily()
{
- return columnFamily;
+ return cf;
}
public boolean hasNext()
@@ -256,10 +255,10 @@ public class Memtable implements Compara
};
}
- public ColumnIterator getNamesIterator(final ColumnFamily cf, final NamesQueryFilter filter)
+ public static ColumnIterator getNamesIterator(final ColumnFamily cf, final NamesQueryFilter filter)
{
- final ColumnFamily columnFamily = cf == null ? ColumnFamily.create(getTableName(), filter.getColumnFamilyName()) : cf.cloneMeShallow();
- final boolean isStandard = DatabaseDescriptor.getColumnFamilyType(getTableName(), filter.getColumnFamilyName()).equals("Standard");
+ assert cf != null;
+ final boolean isStandard = !cf.isSuper();
return new SimpleAbstractColumnIterator()
{
@@ -268,15 +267,11 @@ public class Memtable implements Compara
public ColumnFamily getColumnFamily()
{
- return columnFamily;
+ return cf;
}
protected IColumn computeNext()
{
- if (cf == null)
- {
- return endOfData();
- }
while (iter.hasNext())
{
current = iter.next();
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java Tue Mar 30 15:14:03 2010
@@ -22,9 +22,9 @@ import java.io.DataOutputStream;
import java.io.IOException;
import java.util.*;
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.thrift.ColumnParent;
import org.apache.cassandra.db.filter.QueryPath;
-import org.apache.cassandra.db.filter.NamesQueryFilter;
public class SliceByNamesReadCommand extends ReadCommand
{
@@ -53,7 +53,7 @@ public class SliceByNamesReadCommand ext
@Override
public Row getRow(Table table) throws IOException
{
- return table.getRow(new NamesQueryFilter(key, queryPath, columnNames));
+ return table.getRow(QueryFilter.getNamesFilter(key, queryPath, columnNames));
}
@Override
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/SliceFromReadCommand.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/SliceFromReadCommand.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/SliceFromReadCommand.java Tue Mar 30 15:14:03 2010
@@ -20,11 +20,10 @@ package org.apache.cassandra.db;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
-import java.util.Collections;
import java.util.List;
+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.thrift.ColumnParent;
import org.apache.cassandra.utils.ByteArrayListSerializer;
@@ -66,7 +65,7 @@ public class SliceFromReadCommand extend
@Override
public Row getRow(Table table) throws IOException
{
- return table.getRow(new SliceQueryFilter(key, queryPath, start, finish, bitmasks, reversed, count));
+ return table.getRow(QueryFilter.getSliceFilter(key, queryPath, start, finish, bitmasks, reversed, count));
}
@Override
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java Tue Mar 30 15:14:03 2010
@@ -23,7 +23,6 @@ import java.io.UnsupportedEncodingExcept
import java.io.IOError;
import org.apache.cassandra.config.CFMetaData;
-import org.apache.cassandra.db.filter.SliceQueryFilter;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.commons.lang.ArrayUtils;
@@ -35,7 +34,6 @@ import org.apache.cassandra.dht.Token;
import org.apache.cassandra.dht.IPartitioner;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.db.filter.QueryFilter;
-import org.apache.cassandra.db.filter.NamesQueryFilter;
import org.apache.cassandra.db.marshal.BytesType;
import org.apache.cassandra.config.DatabaseDescriptor;
@@ -130,7 +128,7 @@ public class SystemTable
columns.add(TOKEN);
columns.add(GENERATION);
columns.add(CLUSTERNAME);
- QueryFilter filter = new NamesQueryFilter(LOCATION_KEY, new QueryPath(STATUS_CF), columns);
+ QueryFilter filter = QueryFilter.getNamesFilter(LOCATION_KEY, new QueryPath(STATUS_CF), columns);
ColumnFamily cf = table.getColumnFamilyStore(STATUS_CF).getColumnFamily(filter);
IPartitioner p = StorageService.getPartitioner();
@@ -203,7 +201,7 @@ public class SystemTable
{
Table table = null;
table = Table.open(Table.SYSTEM_TABLE);
- QueryFilter filter = new NamesQueryFilter(BOOTSTRAP_KEY, new QueryPath(STATUS_CF), BOOTSTRAP);
+ QueryFilter filter = QueryFilter.getNamesFilter(BOOTSTRAP_KEY, new QueryPath(STATUS_CF), BOOTSTRAP);
ColumnFamily cf = table.getColumnFamilyStore(STATUS_CF).getColumnFamily(filter);
return cf != null && cf.getColumn(BOOTSTRAP).value()[0] == 1;
}
@@ -227,7 +225,7 @@ public class SystemTable
public static ColumnFamily getDroppedCFs() throws IOException
{
ColumnFamilyStore cfs = Table.open(Table.SYSTEM_TABLE).getColumnFamilyStore(SystemTable.STATUS_CF);
- return cfs.getColumnFamily(new SliceQueryFilter(SystemTable.GRAVEYARD_KEY, new QueryPath(STATUS_CF), "".getBytes(), "".getBytes(), false, 100));
+ return cfs.getColumnFamily(QueryFilter.getSliceFilter(SystemTable.GRAVEYARD_KEY, new QueryPath(STATUS_CF), "".getBytes(), "".getBytes(), null, false, 100));
}
public static void deleteDroppedCfMarkers(Collection<IColumn> cols) throws IOException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/Table.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/Table.java Tue Mar 30 15:14:03 2010
@@ -329,7 +329,7 @@ public class Table
{
ColumnFamilyStore cfStore = columnFamilyStores.get(cfName);
assert cfStore != null : "Column family " + cfName + " has not been defined";
- return cfStore.getColumnFamily(new IdentityQueryFilter(key, new QueryPath(cfName)));
+ return cfStore.getColumnFamily(QueryFilter.getIdentityFilter(key, new QueryPath(cfName)));
}
public Row getRow(QueryFilter filter) throws IOException
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/filter/ColumnIterator.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/filter/ColumnIterator.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/filter/ColumnIterator.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/filter/ColumnIterator.java Tue Mar 30 15:14:03 2010
@@ -30,7 +30,7 @@ import org.apache.cassandra.db.ColumnFam
public interface ColumnIterator extends Iterator<IColumn>
{
/**
- * returns the CF of the column being iterated.
+ * returns the CF of the column being iterated. Do not modify the returned CF; clone first.
* The CF is only guaranteed to be available after a call to next() or hasNext().
*/
public abstract ColumnFamily getColumnFamily();
Added: cassandra/trunk/src/java/org/apache/cassandra/db/filter/IFilter.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/filter/IFilter.java?rev=929163&view=auto
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/filter/IFilter.java (added)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/filter/IFilter.java Tue Mar 30 15:14:03 2010
@@ -0,0 +1,65 @@
+package org.apache.cassandra.db.filter;
+/*
+ *
+ * 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.
+ *
+ */
+
+import java.util.Comparator;
+import java.util.Iterator;
+
+import org.apache.cassandra.db.*;
+import org.apache.cassandra.db.marshal.AbstractType;
+import org.apache.cassandra.io.sstable.SSTableReader;
+
+/**
+ * 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).
+ */
+interface IFilter
+{
+ /**
+ * returns an iterator that returns columns from the given memtable
+ * matching the Filter criteria in sorted order.
+ */
+ public abstract ColumnIterator getMemtableColumnIterator(ColumnFamily cf, AbstractType comparator);
+
+ /**
+ * returns an iterator that returns columns from the given SSTable
+ * matching the Filter criteria in sorted order.
+ */
+ public abstract ColumnIterator getSSTableColumnIterator(SSTableReader sstable);
+
+ /**
+ * 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);
+}
Propchange: cassandra/trunk/src/java/org/apache/cassandra/db/filter/IFilter.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/filter/IdentityQueryFilter.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/filter/IdentityQueryFilter.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/filter/IdentityQueryFilter.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/filter/IdentityQueryFilter.java Tue Mar 30 15:14:03 2010
@@ -25,14 +25,14 @@ import org.apache.commons.lang.ArrayUtil
import org.apache.cassandra.db.SuperColumn;
-public class IdentityQueryFilter extends SliceQueryFilter
+class IdentityQueryFilter extends SliceQueryFilter
{
/**
* Only for use in testing; will read entire CF into memory.
*/
- public IdentityQueryFilter(String key, QueryPath path)
+ public IdentityQueryFilter(String key)
{
- super(key, path, ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.EMPTY_BYTE_ARRAY, false, Integer.MAX_VALUE);
+ super(key, ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.EMPTY_BYTE_ARRAY, null, false, Integer.MAX_VALUE);
}
public SuperColumn filterSuperColumn(SuperColumn superColumn, int gcBefore)
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java Tue Mar 30 15:14:03 2010
@@ -21,28 +21,26 @@ package org.apache.cassandra.db.filter;
*/
-import java.io.IOException;
import java.util.*;
import org.apache.cassandra.io.sstable.SSTableReader;
-import org.apache.cassandra.utils.ReducingIterator;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.marshal.AbstractType;
-import org.apache.cassandra.config.DatabaseDescriptor;
-public class NamesQueryFilter extends QueryFilter
+public class NamesQueryFilter implements IFilter
{
+ private final String key;
public final SortedSet<byte[]> columns;
- public NamesQueryFilter(String key, QueryPath columnParent, SortedSet<byte[]> columns)
+ public NamesQueryFilter(String key, SortedSet<byte[]> columns)
{
- super(key, columnParent);
+ this.key = key;
this.columns = columns;
}
- public NamesQueryFilter(String key, QueryPath columnParent, byte[] column)
+ public NamesQueryFilter(String key, byte[] column)
{
- this(key, columnParent, getSingleColumnSet(column));
+ this(key, getSingleColumnSet(column));
}
private static TreeSet<byte[]> getSingleColumnSet(byte[] column)
@@ -59,9 +57,9 @@ public class NamesQueryFilter extends Qu
return set;
}
- public ColumnIterator getMemColumnIterator(Memtable memtable, ColumnFamily cf, AbstractType comparator)
+ public ColumnIterator getMemtableColumnIterator(ColumnFamily cf, AbstractType comparator)
{
- return memtable.getNamesIterator(cf, this);
+ return Memtable.getNamesIterator(cf, this);
}
public ColumnIterator getSSTableColumnIterator(SSTableReader sstable)
@@ -73,7 +71,7 @@ public class NamesQueryFilter extends Qu
{
for (IColumn column : superColumn.getSubColumns())
{
- if (!columns.contains(column.name()))
+ if (!columns.contains(column.name()) || !QueryFilter.isRelevant(column, superColumn, gcBefore))
{
superColumn.remove(column.name());
}
@@ -90,4 +88,9 @@ public class NamesQueryFilter extends Qu
container.addColumn(column);
}
}
+
+ public Comparator<IColumn> getColumnComparator(AbstractType comparator)
+ {
+ return QueryFilter.getColumnComparator(comparator);
+ }
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryFilter.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryFilter.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryFilter.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryFilter.java Tue Mar 30 15:14:03 2010
@@ -22,57 +22,54 @@ package org.apache.cassandra.db.filter;
import java.io.IOException;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.Arrays;
+import java.util.*;
import org.apache.cassandra.io.sstable.SSTableReader;
import org.apache.cassandra.utils.ReducingIterator;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.marshal.AbstractType;
-public abstract class QueryFilter
+public class QueryFilter
{
public final String key;
public final QueryPath path;
+ private final IFilter filter;
+ private final IFilter superFilter;
- protected QueryFilter(String key, QueryPath path)
+ protected QueryFilter(String key, QueryPath path, IFilter filter)
{
this.key = key;
this.path = path;
+ this.filter = filter;
+ superFilter = path.superColumnName == null ? null : new NamesQueryFilter(key, path.superColumnName);
}
- /**
- * returns an iterator that returns columns from the given memtable
- * matching the Filter criteria in sorted order.
- */
- public abstract ColumnIterator getMemColumnIterator(Memtable memtable, ColumnFamily cf, AbstractType comparator);
-
- public ColumnIterator getMemColumnIterator(Memtable memtable, AbstractType comparator)
+ public ColumnIterator getMemtableColumnIterator(Memtable memtable, AbstractType comparator, int gcBefore)
{
- return getMemColumnIterator(memtable, memtable.getColumnFamily(key), comparator);
+ ColumnFamily cf = memtable.getColumnFamily(key);
+ if (cf == null)
+ return null;
+ return getMemtableColumnIterator(cf, comparator, gcBefore);
}
- /**
- * returns an iterator that returns columns from the given SSTable
- * matching the Filter criteria in sorted order.
- */
- public abstract ColumnIterator getSSTableColumnIterator(SSTableReader sstable);
-
- /**
- * 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);
+ // TODO move gcBefore into a field
+ public ColumnIterator getMemtableColumnIterator(ColumnFamily cf, AbstractType comparator, int gcBefore)
+ {
+ assert cf != null;
+ if (path.superColumnName == null)
+ return filter.getMemtableColumnIterator(cf, comparator);
+ return superFilter.getMemtableColumnIterator(cf, comparator);
+ }
- /**
- * 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);
+ // TODO move gcBefore into a field
+ public ColumnIterator getSSTableColumnIterator(SSTableReader sstable, int gcBefore)
+ {
+ if (path.superColumnName == null)
+ return filter.getSSTableColumnIterator(sstable);
+ return superFilter.getSSTableColumnIterator(sstable);
+ }
- public Comparator<IColumn> getColumnComparator(final AbstractType comparator)
+ public static Comparator<IColumn> getColumnComparator(final AbstractType comparator)
{
return new Comparator<IColumn>()
{
@@ -83,7 +80,7 @@ public abstract class QueryFilter
};
}
- public void collectCollatedColumns(final ColumnFamily returnCF, Iterator<IColumn> collatedColumns, int gcBefore)
+ public void collectCollatedColumns(final ColumnFamily returnCF, Iterator<IColumn> collatedColumns, final int gcBefore)
{
// define a 'reduced' iterator that merges columns w/ the same name, which
// greatly simplifies computing liveColumns in the presence of tombstones.
@@ -104,12 +101,14 @@ public abstract class QueryFilter
protected IColumn getReduced()
{
IColumn c = curCF.getSortedColumns().iterator().next();
+ if (superFilter != null)
+ c = filter.filterSuperColumn((SuperColumn)c, gcBefore);
curCF.clear();
return c;
}
};
- collectReducedColumns(returnCF, reduced, gcBefore);
+ (superFilter == null ? filter : superFilter).collectReducedColumns(returnCF, reduced, gcBefore);
}
public String getColumnFamilyName()
@@ -126,4 +125,47 @@ public abstract class QueryFilter
return (!column.isMarkedForDelete() || column.getLocalDeletionTime() > gcBefore || maxChange > column.getMarkedForDeleteAt()) // (1)
&& (!container.isMarkedForDelete() || maxChange > container.getMarkedForDeleteAt()); // (2)
}
+
+ /**
+ * @return a QueryFilter object to satisfy the given slice criteria:
+ * @param key the row to slice
+ * @param path path to the level to slice at (CF or SuperColumn)
+ * @param start column to start slice at, inclusive; empty for "the first column"
+ * @param finish column to stop slice at, inclusive; empty for "the last column"
+ * @param bitmasks we should probably remove this
+ * @param reversed true to start with the largest column (as determined by configured sort order) instead of smallest
+ * @param limit maximum number of non-deleted columns to return
+ */
+ public static QueryFilter getSliceFilter(String key, QueryPath path, byte[] start, byte[] finish, List<byte[]> bitmasks, boolean reversed, int limit)
+ {
+ return new QueryFilter(key, path, new SliceQueryFilter(key, start, finish, bitmasks, reversed, limit));
+ }
+
+ /**
+ * return a QueryFilter object that includes every column in the row.
+ * This is dangerous on large rows; avoid except for test code.
+ */
+ public static QueryFilter getIdentityFilter(String key, QueryPath path)
+ {
+ return new QueryFilter(key, path, new IdentityQueryFilter(key));
+ }
+
+ /**
+ * @return a QueryFilter object that will return columns matching the given names
+ * @param key the row to slice
+ * @param path path to the level to slice at (CF or SuperColumn)
+ * @param columns the column names to restrict the results to
+ */
+ public static QueryFilter getNamesFilter(String key, QueryPath path, SortedSet<byte[]> columns)
+ {
+ return new QueryFilter(key, path, new NamesQueryFilter(key, columns));
+ }
+
+ /**
+ * convenience method for creating a name filter matching a single column
+ */
+ public static QueryFilter getNamesFilter(String key, QueryPath path, byte[] column)
+ {
+ return new QueryFilter(key, path, new NamesQueryFilter(key, column));
+ }
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java Tue Mar 30 15:14:03 2010
@@ -21,7 +21,6 @@ package org.apache.cassandra.db.filter;
*/
-import java.io.IOException;
import java.util.*;
import org.slf4j.Logger;
@@ -39,23 +38,20 @@ import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterators;
-public class SliceQueryFilter extends QueryFilter
+public class SliceQueryFilter implements IFilter
{
private static Logger logger = LoggerFactory.getLogger(SliceQueryFilter.class);
- public final byte[] start, finish;
+ private final String key;
+ public final byte[] start;
+ public final byte[] finish;
public final List<byte[]> bitmasks;
public final boolean reversed;
public final int count;
- public SliceQueryFilter(String key, QueryPath columnParent, byte[] start, byte[] finish, boolean reversed, int count)
+ public SliceQueryFilter(String key, byte[] start, byte[] finish, List<byte[]> bitmasks, boolean reversed, int count)
{
- this(key, columnParent, start, finish, null, reversed, count);
- }
-
- public SliceQueryFilter(String key, QueryPath columnParent, byte[] start, byte[] finish, List<byte[]> bitmasks, boolean reversed, int count)
- {
- super(key, columnParent);
+ this.key = key;
this.start = start;
this.finish = finish;
this.reversed = reversed;
@@ -63,9 +59,9 @@ public class SliceQueryFilter extends Qu
this.bitmasks = bitmasks;
}
- public ColumnIterator getMemColumnIterator(Memtable memtable, ColumnFamily cf, AbstractType comparator)
+ public ColumnIterator getMemtableColumnIterator(ColumnFamily cf, AbstractType comparator)
{
- return memtable.getSliceIterator(cf, this, comparator);
+ return Memtable.getSliceIterator(cf, this, comparator);
}
public ColumnIterator getSSTableColumnIterator(SSTableReader sstable)
@@ -114,10 +110,9 @@ public class SliceQueryFilter extends Qu
return scFiltered;
}
- @Override
public Comparator<IColumn> getColumnComparator(AbstractType comparator)
{
- return reversed ? new ReverseComparator(super.getColumnComparator(comparator)) : super.getColumnComparator(comparator);
+ return reversed ? new ReverseComparator(QueryFilter.getColumnComparator(comparator)) : QueryFilter.getColumnComparator(comparator);
}
public void collectReducedColumns(IColumnContainer container, Iterator<IColumn> reducedColumns, int gcBefore)
@@ -132,7 +127,8 @@ public class SliceQueryFilter extends Qu
IColumn column = reducedColumns.next();
if (logger.isDebugEnabled())
- logger.debug("collecting " + column.getString(comparator));
+ logger.debug(String.format("collecting %s of %s: %s",
+ liveColumns, count, column.getString(comparator)));
if (finish.length > 0
&& ((!reversed && comparator.compare(column.name(), finish) > 0))
Modified: cassandra/trunk/test/system/test_thrift_server.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/system/test_thrift_server.py?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/system/test_thrift_server.py (original)
+++ cassandra/trunk/test/system/test_thrift_server.py Tue Mar 30 15:14:03 2010
@@ -15,7 +15,7 @@
# limitations under the License.
# to run a single test, run from trunk/:
-# PYTHONPATH=test nosetests --tests=system.test_server:TestMutations.test_empty_range
+# PYTHONPATH=test nosetests --tests=system.test_thrift_server:TestMutations.test_empty_range
import os, sys, time, struct
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java Tue Mar 30 15:14:03 2010
@@ -29,6 +29,7 @@ import org.junit.Test;
import static junit.framework.Assert.assertEquals;
import org.apache.cassandra.CleanupHelper;
import org.apache.cassandra.Util;
+import org.apache.cassandra.db.filter.*;
import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.WrappedRunnable;
@@ -36,10 +37,6 @@ import java.net.InetAddress;
import org.apache.cassandra.dht.Range;
import org.apache.cassandra.dht.IPartitioner;
import org.apache.cassandra.dht.CollatingOrderPreservingPartitioner;
-import org.apache.cassandra.db.filter.IdentityQueryFilter;
-import org.apache.cassandra.db.filter.QueryPath;
-import org.apache.cassandra.db.filter.SliceQueryFilter;
-import org.apache.cassandra.db.filter.NamesQueryFilter;
import org.apache.cassandra.io.sstable.SSTableReader;
public class ColumnFamilyStoreTest extends CleanupHelper
@@ -70,7 +67,7 @@ public class ColumnFamilyStoreTest exten
List<SSTableReader> ssTables = table.getAllSSTablesOnDisk();
assertEquals(1, ssTables.size());
ssTables.get(0).forceFilterFailures();
- ColumnFamily cf = store.getColumnFamily(new IdentityQueryFilter("key2", new QueryPath("Standard1", null, "Column1".getBytes())));
+ ColumnFamily cf = store.getColumnFamily(QueryFilter.getIdentityFilter("key2", new QueryPath("Standard1", null, "Column1".getBytes())));
assertNull(cf);
}
@@ -89,9 +86,9 @@ public class ColumnFamilyStoreTest exten
{
public void runMayThrow() throws IOException
{
- SliceQueryFilter sliceFilter = new SliceQueryFilter("key1", new QueryPath("Standard2", null, null), ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.EMPTY_BYTE_ARRAY, false, 1);
+ QueryFilter sliceFilter = QueryFilter.getSliceFilter("key1", new QueryPath("Standard2", null, null), ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.EMPTY_BYTE_ARRAY, null, false, 1);
assertNull(store.getColumnFamily(sliceFilter));
- NamesQueryFilter namesFilter = new NamesQueryFilter("key1", new QueryPath("Standard2", null, null), "a".getBytes());
+ QueryFilter namesFilter = QueryFilter.getNamesFilter("key1", new QueryPath("Standard2", null, null), "a".getBytes());
assertNull(store.getColumnFamily(namesFilter));
}
};
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsPurgeTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsPurgeTest.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsPurgeTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsPurgeTest.java Tue Mar 30 15:14:03 2010
@@ -30,7 +30,7 @@ import java.util.concurrent.Future;
import org.junit.Test;
import org.apache.cassandra.CleanupHelper;
-import org.apache.cassandra.db.filter.IdentityQueryFilter;
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.io.sstable.SSTableReader;
import org.apache.cassandra.utils.FBUtilities;
@@ -85,13 +85,13 @@ public class CompactionsPurgeTest extend
rm.apply();
cfs.forceBlockingFlush();
CompactionManager.instance.doCompaction(cfs, sstablesIncomplete, CompactionManager.getDefaultGCBefore());
- ColumnFamily cf = cfs.getColumnFamily(new IdentityQueryFilter(key, new QueryPath(cfName)));
+ ColumnFamily cf = cfs.getColumnFamily(QueryFilter.getIdentityFilter(key, new QueryPath(cfName)));
assert cf.getColumnCount() == 10;
// major compact and test that all columns but the resurrected one is completely gone
CompactionManager.instance.submitMajor(cfs, 0, Integer.MAX_VALUE).get();
cfs.invalidateCachedRow(key);
- cf = cfs.getColumnFamily(new IdentityQueryFilter(key, new QueryPath(cfName)));
+ cf = cfs.getColumnFamily(QueryFilter.getIdentityFilter(key, new QueryPath(cfName)));
assertColumns(cf, "5");
assert cf.getColumn(String.valueOf(5).getBytes()) != null;
}
@@ -130,7 +130,7 @@ public class CompactionsPurgeTest extend
// compact and test that the row is completely gone
CompactionManager.instance.submitMajor(store, 0, Integer.MAX_VALUE).get();
assert store.getSSTables().isEmpty();
- ColumnFamily cf = table.getColumnFamilyStore(cfName).getColumnFamily(new IdentityQueryFilter(key, new QueryPath(cfName)));
+ ColumnFamily cf = table.getColumnFamilyStore(cfName).getColumnFamily(QueryFilter.getIdentityFilter(key, new QueryPath(cfName)));
assert cf == null : cf;
}
}
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java Tue Mar 30 15:14:03 2010
@@ -25,6 +25,7 @@ import org.apache.cassandra.config.Datab
import org.apache.cassandra.config.KSMetaData;
import org.apache.cassandra.db.commitlog.CommitLog;
import org.apache.cassandra.db.filter.NamesQueryFilter;
+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.db.marshal.BytesType;
@@ -109,7 +110,7 @@ public class DefsTest extends CleanupHel
assert store != null;
store.forceBlockingFlush();
- ColumnFamily cfam = store.getColumnFamily(new NamesQueryFilter("key0", new QueryPath(cf), "col0".getBytes()));
+ ColumnFamily cfam = store.getColumnFamily(QueryFilter.getNamesFilter("key0", new QueryPath(cf), "col0".getBytes()));
assert cfam.getColumn("col0".getBytes()) != null;
IColumn col = cfam.getColumn("col0".getBytes());
assert Arrays.equals("value0".getBytes(), col.value());
@@ -187,7 +188,7 @@ public class DefsTest extends CleanupHel
// do some reads.
store = Table.open(oldCfm.tableName).getColumnFamilyStore(newCfmName);
assert store != null;
- ColumnFamily cfam = store.getColumnFamily(new SliceQueryFilter("key0", new QueryPath(newCfmName), "".getBytes(), "".getBytes(), false, 1000));
+ ColumnFamily cfam = store.getColumnFamily(QueryFilter.getSliceFilter("key0", new QueryPath(newCfmName), "".getBytes(), "".getBytes(), null, false, 1000));
assert cfam.getSortedColumns().size() == 100; // should be good enough?
// do some writes
@@ -196,7 +197,7 @@ public class DefsTest extends CleanupHel
rm.apply();
store.forceBlockingFlush();
- cfam = store.getColumnFamily(new NamesQueryFilter("key0", new QueryPath(newCfmName), "col5".getBytes()));
+ cfam = store.getColumnFamily(QueryFilter.getNamesFilter("key0", new QueryPath(newCfmName), "col5".getBytes()));
assert cfam.getColumnCount() == 1;
assert Arrays.equals(cfam.getColumn("col5".getBytes()).value(), "updated".getBytes());
}
@@ -222,7 +223,7 @@ public class DefsTest extends CleanupHel
assert store != null;
store.forceBlockingFlush();
- ColumnFamily cfam = store.getColumnFamily(new NamesQueryFilter("key0", new QueryPath(newCf.cfName), "col0".getBytes()));
+ ColumnFamily cfam = store.getColumnFamily(QueryFilter.getNamesFilter("key0", new QueryPath(newCf.cfName), "col0".getBytes()));
assert cfam.getColumn("col0".getBytes()) != null;
IColumn col = cfam.getColumn("col0".getBytes());
assert Arrays.equals("value0".getBytes(), col.value());
@@ -342,7 +343,7 @@ public class DefsTest extends CleanupHel
SortedSet<byte[]> cols = new TreeSet<byte[]>(new BytesType());
cols.add("col0".getBytes());
cols.add("col1".getBytes());
- ColumnFamily cfam = store.getColumnFamily(new NamesQueryFilter("renameKs", new QueryPath(cfName), cols));
+ ColumnFamily cfam = store.getColumnFamily(QueryFilter.getNamesFilter("renameKs", new QueryPath(cfName), cols));
assert cfam.getColumnCount() == cols.size();
// tests new write.
assert Arrays.equals(cfam.getColumn("col0".getBytes()).value(), "newvalue".getBytes());
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyTest.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyTest.java Tue Mar 30 15:14:03 2010
@@ -24,7 +24,7 @@ import java.util.concurrent.ExecutionExc
import org.junit.Test;
import static junit.framework.Assert.assertNull;
-import org.apache.cassandra.db.filter.IdentityQueryFilter;
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.CleanupHelper;
@@ -47,7 +47,7 @@ public class RemoveColumnFamilyTest exte
rm.delete(new QueryPath("Standard1"), 1);
rm.apply();
- ColumnFamily retrieved = store.getColumnFamily(new IdentityQueryFilter("key1", new QueryPath("Standard1", null, "Column1".getBytes())));
+ ColumnFamily retrieved = store.getColumnFamily(QueryFilter.getIdentityFilter("key1", new QueryPath("Standard1", null, "Column1".getBytes())));
assert retrieved.isMarkedForDelete();
assertNull(retrieved.getColumn("Column1".getBytes()));
assertNull(ColumnFamilyStore.removeDeleted(retrieved, Integer.MAX_VALUE));
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyWithFlush1Test.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyWithFlush1Test.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyWithFlush1Test.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyWithFlush1Test.java Tue Mar 30 15:14:03 2010
@@ -24,7 +24,7 @@ import java.util.concurrent.ExecutionExc
import org.junit.Test;
import static junit.framework.Assert.assertNull;
-import org.apache.cassandra.db.filter.IdentityQueryFilter;
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.CleanupHelper;
@@ -49,7 +49,7 @@ public class RemoveColumnFamilyWithFlush
rm.delete(new QueryPath("Standard1"), 1);
rm.apply();
- ColumnFamily retrieved = store.getColumnFamily(new IdentityQueryFilter("key1", new QueryPath("Standard1")));
+ ColumnFamily retrieved = store.getColumnFamily(QueryFilter.getIdentityFilter("key1", new QueryPath("Standard1")));
assert retrieved.isMarkedForDelete();
assertNull(retrieved.getColumn("Column1".getBytes()));
assertNull(ColumnFamilyStore.removeDeleted(retrieved, Integer.MAX_VALUE));
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyWithFlush2Test.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyWithFlush2Test.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyWithFlush2Test.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyWithFlush2Test.java Tue Mar 30 15:14:03 2010
@@ -24,7 +24,7 @@ import java.util.concurrent.ExecutionExc
import org.junit.Test;
import static junit.framework.Assert.assertNull;
-import org.apache.cassandra.db.filter.IdentityQueryFilter;
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.CleanupHelper;
@@ -47,7 +47,7 @@ public class RemoveColumnFamilyWithFlush
rm.apply();
store.forceBlockingFlush();
- ColumnFamily retrieved = store.getColumnFamily(new IdentityQueryFilter("key1", new QueryPath("Standard1", null, "Column1".getBytes())));
+ ColumnFamily retrieved = store.getColumnFamily(QueryFilter.getIdentityFilter("key1", new QueryPath("Standard1", null, "Column1".getBytes())));
assert retrieved.isMarkedForDelete();
assertNull(retrieved.getColumn("Column1".getBytes()));
assertNull(ColumnFamilyStore.removeDeleted(retrieved, Integer.MAX_VALUE));
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnTest.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnTest.java Tue Mar 30 15:14:03 2010
@@ -24,8 +24,8 @@ import java.util.concurrent.ExecutionExc
import org.junit.Test;
import static junit.framework.Assert.assertNull;
-import org.apache.cassandra.db.filter.IdentityQueryFilter;
import org.apache.cassandra.db.filter.NamesQueryFilter;
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.CleanupHelper;
@@ -49,9 +49,9 @@ public class RemoveColumnTest extends Cl
rm.delete(new QueryPath("Standard1", null, "Column1".getBytes()), 1);
rm.apply();
- ColumnFamily retrieved = store.getColumnFamily(new NamesQueryFilter("key1", new QueryPath("Standard1"), "Column1".getBytes()));
+ ColumnFamily retrieved = store.getColumnFamily(QueryFilter.getNamesFilter("key1", new QueryPath("Standard1"), "Column1".getBytes()));
assert retrieved.getColumn("Column1".getBytes()).isMarkedForDelete();
assertNull(ColumnFamilyStore.removeDeleted(retrieved, Integer.MAX_VALUE));
- assertNull(ColumnFamilyStore.removeDeleted(store.getColumnFamily(new IdentityQueryFilter("key1", new QueryPath("Standard1"))), Integer.MAX_VALUE));
+ assertNull(ColumnFamilyStore.removeDeleted(store.getColumnFamily(QueryFilter.getIdentityFilter("key1", new QueryPath("Standard1"))), Integer.MAX_VALUE));
}
}
\ No newline at end of file
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSubColumnTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSubColumnTest.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSubColumnTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSubColumnTest.java Tue Mar 30 15:14:03 2010
@@ -24,7 +24,7 @@ import java.util.concurrent.ExecutionExc
import org.junit.Test;
import static junit.framework.Assert.assertNull;
-import org.apache.cassandra.db.filter.IdentityQueryFilter;
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import static org.apache.cassandra.Util.addMutation;
import static org.apache.cassandra.Util.getBytes;
@@ -50,7 +50,7 @@ public class RemoveSubColumnTest extends
rm.delete(new QueryPath("Super1", "SC1".getBytes(), getBytes(1)), 1);
rm.apply();
- ColumnFamily retrieved = store.getColumnFamily(new IdentityQueryFilter("key1", new QueryPath("Super1", "SC1".getBytes())));
+ ColumnFamily retrieved = store.getColumnFamily(QueryFilter.getIdentityFilter("key1", new QueryPath("Super1", "SC1".getBytes())));
assert retrieved.getColumn("SC1".getBytes()).getSubColumn(getBytes(1)).isMarkedForDelete();
assertNull(ColumnFamilyStore.removeDeleted(retrieved, Integer.MAX_VALUE));
}
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSuperColumnTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSuperColumnTest.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSuperColumnTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveSuperColumnTest.java Tue Mar 30 15:14:03 2010
@@ -27,8 +27,7 @@ import static org.junit.Assert.assertNul
import static org.junit.Assert.assertEquals;
import org.apache.cassandra.Util;
-import org.apache.cassandra.db.filter.IdentityQueryFilter;
-import org.apache.cassandra.db.filter.NamesQueryFilter;
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import static org.apache.cassandra.Util.addMutation;
import static org.apache.cassandra.Util.getBytes;
@@ -92,26 +91,26 @@ public class RemoveSuperColumnTest exten
private void validateRemoveSubColumn() throws IOException
{
ColumnFamilyStore store = Table.open("Keyspace1").getColumnFamilyStore("Super3");
- assertNull(store.getColumnFamily(new NamesQueryFilter("key1", new QueryPath("Super3", "SC1".getBytes()), Util.getBytes(1)), Integer.MAX_VALUE));
- assertNotNull(store.getColumnFamily(new NamesQueryFilter("key1", new QueryPath("Super3", "SC1".getBytes()), Util.getBytes(2)), Integer.MAX_VALUE));
+ assertNull(store.getColumnFamily(QueryFilter.getNamesFilter("key1", new QueryPath("Super3", "SC1".getBytes()), Util.getBytes(1)), Integer.MAX_VALUE));
+ assertNotNull(store.getColumnFamily(QueryFilter.getNamesFilter("key1", new QueryPath("Super3", "SC1".getBytes()), Util.getBytes(2)), Integer.MAX_VALUE));
}
private void validateRemoveTwoSources() throws IOException
{
ColumnFamilyStore store = Table.open("Keyspace1").getColumnFamilyStore("Super1");
- ColumnFamily resolved = store.getColumnFamily(new NamesQueryFilter("key1", new QueryPath("Super1"), "SC1".getBytes()));
+ ColumnFamily resolved = store.getColumnFamily(QueryFilter.getNamesFilter("key1", new QueryPath("Super1"), "SC1".getBytes()));
assert resolved.getSortedColumns().iterator().next().getMarkedForDeleteAt() == 1 : resolved;
assert resolved.getSortedColumns().iterator().next().getSubColumns().size() == 0 : resolved;
assertNull(ColumnFamilyStore.removeDeleted(resolved, Integer.MAX_VALUE));
- assertNull(store.getColumnFamily(new NamesQueryFilter("key1", new QueryPath("Super1"), "SC1".getBytes()), Integer.MAX_VALUE));
- assertNull(store.getColumnFamily(new IdentityQueryFilter("key1", new QueryPath("Super1")), Integer.MAX_VALUE));
- assertNull(ColumnFamilyStore.removeDeleted(store.getColumnFamily(new IdentityQueryFilter("key1", new QueryPath("Super1"))), Integer.MAX_VALUE));
+ assertNull(store.getColumnFamily(QueryFilter.getNamesFilter("key1", new QueryPath("Super1"), "SC1".getBytes()), Integer.MAX_VALUE));
+ assertNull(store.getColumnFamily(QueryFilter.getIdentityFilter("key1", new QueryPath("Super1")), Integer.MAX_VALUE));
+ assertNull(ColumnFamilyStore.removeDeleted(store.getColumnFamily(QueryFilter.getIdentityFilter("key1", new QueryPath("Super1"))), Integer.MAX_VALUE));
}
private void validateRemoveCompacted() throws IOException
{
ColumnFamilyStore store = Table.open("Keyspace1").getColumnFamilyStore("Super1");
- ColumnFamily resolved = store.getColumnFamily(new NamesQueryFilter("key1", new QueryPath("Super1"), "SC1".getBytes()));
+ ColumnFamily resolved = store.getColumnFamily(QueryFilter.getNamesFilter("key1", new QueryPath("Super1"), "SC1".getBytes()));
assert resolved.getSortedColumns().iterator().next().getMarkedForDeleteAt() == 1;
Collection<IColumn> subColumns = resolved.getSortedColumns().iterator().next().getSubColumns();
assert subColumns.size() == 0;
@@ -152,7 +151,7 @@ public class RemoveSuperColumnTest exten
private void validateRemoveWithNewData() throws IOException
{
ColumnFamilyStore store = Table.open("Keyspace1").getColumnFamilyStore("Super2");
- ColumnFamily resolved = store.getColumnFamily(new NamesQueryFilter("key1", new QueryPath("Super2", "SC1".getBytes()), getBytes(2)), Integer.MAX_VALUE);
+ ColumnFamily resolved = store.getColumnFamily(QueryFilter.getNamesFilter("key1", new QueryPath("Super2", "SC1".getBytes()), getBytes(2)), Integer.MAX_VALUE);
Collection<IColumn> subColumns = resolved.getSortedColumns().iterator().next().getSubColumns();
assert subColumns.size() == 1;
assert subColumns.iterator().next().timestamp() == 2;
@@ -174,7 +173,7 @@ public class RemoveSuperColumnTest exten
rm = new RowMutation("Keyspace1", key);
rm.delete(new QueryPath("Super2", "SC1".getBytes()), 1);
rm.apply();
- assertNull(store.getColumnFamily(new NamesQueryFilter(key, new QueryPath("Super2"), "SC1".getBytes()), Integer.MAX_VALUE));
+ assertNull(store.getColumnFamily(QueryFilter.getNamesFilter(key, new QueryPath("Super2"), "SC1".getBytes()), Integer.MAX_VALUE));
// resurrect
rm = new RowMutation("Keyspace1", key);
@@ -182,7 +181,7 @@ public class RemoveSuperColumnTest exten
rm.apply();
// validate
- ColumnFamily resolved = store.getColumnFamily(new NamesQueryFilter(key, new QueryPath("Super2"), "SC1".getBytes()), Integer.MAX_VALUE);
+ ColumnFamily resolved = store.getColumnFamily(QueryFilter.getNamesFilter(key, new QueryPath("Super2"), "SC1".getBytes()), Integer.MAX_VALUE);
Collection<IColumn> subColumns = resolved.getSortedColumns().iterator().next().getSubColumns();
assert subColumns.size() == 1;
assert subColumns.iterator().next().timestamp() == 2;
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/TableTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/TableTest.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/TableTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/TableTest.java Tue Mar 30 15:14:03 2010
@@ -34,6 +34,7 @@ import org.junit.Test;
import static junit.framework.Assert.*;
import org.apache.cassandra.CleanupHelper;
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.utils.WrappedRunnable;
import static org.apache.cassandra.Util.column;
import static org.apache.cassandra.Util.getBytes;
@@ -76,13 +77,13 @@ public class TableTest extends CleanupHe
{
ColumnFamily cf;
- cf = cfStore.getColumnFamily(new NamesQueryFilter(TEST_KEY, new QueryPath("Standard3"), new TreeSet<byte[]>()));
+ cf = cfStore.getColumnFamily(QueryFilter.getNamesFilter(TEST_KEY, new QueryPath("Standard3"), new TreeSet<byte[]>()));
assertColumns(cf);
- cf = cfStore.getColumnFamily(new SliceQueryFilter(TEST_KEY, new QueryPath("Standard3"), ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.EMPTY_BYTE_ARRAY, false, 0));
+ cf = cfStore.getColumnFamily(QueryFilter.getSliceFilter(TEST_KEY, new QueryPath("Standard3"), ArrayUtils.EMPTY_BYTE_ARRAY, ArrayUtils.EMPTY_BYTE_ARRAY, null, false, 0));
assertColumns(cf);
- cf = cfStore.getColumnFamily(new NamesQueryFilter(TEST_KEY, new QueryPath("Standard3"), "col99".getBytes()));
+ cf = cfStore.getColumnFamily(QueryFilter.getNamesFilter(TEST_KEY, new QueryPath("Standard3"), "col99".getBytes()));
assertColumns(cf);
}
};
@@ -109,10 +110,10 @@ public class TableTest extends CleanupHe
{
ColumnFamily cf;
- cf = cfStore.getColumnFamily(new NamesQueryFilter(TEST_KEY, new QueryPath("Standard1"), "col1".getBytes()));
+ cf = cfStore.getColumnFamily(QueryFilter.getNamesFilter(TEST_KEY, new QueryPath("Standard1"), "col1".getBytes()));
assertColumns(cf, "col1");
- cf = cfStore.getColumnFamily(new NamesQueryFilter(TEST_KEY, new QueryPath("Standard1"), "col3".getBytes()));
+ cf = cfStore.getColumnFamily(QueryFilter.getNamesFilter(TEST_KEY, new QueryPath("Standard1"), "col3".getBytes()));
assertColumns(cf, "col3");
}
};
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/TimeSortTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/TimeSortTest.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/TimeSortTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/TimeSortTest.java Tue Mar 30 15:14:03 2010
@@ -28,6 +28,8 @@ import static org.junit.Assert.assertEqu
import org.apache.cassandra.CleanupHelper;
import static org.apache.cassandra.Util.getBytes;
+
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.db.filter.NamesQueryFilter;
import org.apache.cassandra.db.marshal.LongType;
@@ -104,7 +106,7 @@ public class TimeSortTest extends Cleanu
TreeSet<byte[]> columnNames = new TreeSet<byte[]>(new LongType());
columnNames.add(getBytes(10));
columnNames.add(getBytes(0));
- cf = cfStore.getColumnFamily(new NamesQueryFilter("900", new QueryPath("StandardLong1"), columnNames));
+ cf = cfStore.getColumnFamily(QueryFilter.getNamesFilter("900", new QueryPath("StandardLong1"), columnNames));
assert "c".equals(new String(cf.getColumn(getBytes(0)).value()));
assert "c".equals(new String(cf.getColumn(getBytes(10)).value()));
}
Modified: cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java Tue Mar 30 15:14:03 2010
@@ -26,6 +26,7 @@ import java.util.Arrays;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.filter.NamesQueryFilter;
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.dht.IPartitioner;
import org.apache.cassandra.io.sstable.SSTableReader;
@@ -213,13 +214,13 @@ public class SSTableExportTest
SSTableImport.importJson(tempJson.getPath(), "Keyspace1", "Standard1", tempSS2.getPath());
reader = SSTableReader.open(tempSS2.getPath(), DatabaseDescriptor.getPartitioner());
- NamesQueryFilter qf = new NamesQueryFilter("rowA", new QueryPath("Standard1", null, null), "name".getBytes());
- ColumnFamily cf = qf.getSSTableColumnIterator(reader).getColumnFamily();
+ QueryFilter qf = QueryFilter.getNamesFilter("rowA", new QueryPath("Standard1", null, null), "name".getBytes());
+ ColumnFamily cf = qf.getSSTableColumnIterator(reader, Integer.MAX_VALUE).getColumnFamily();
assertTrue(cf != null);
assertTrue(Arrays.equals(cf.getColumn("name".getBytes()).value(), hexToBytes("76616c")));
- qf = new NamesQueryFilter("rowExclude", new QueryPath("Standard1", null, null), "name".getBytes());
- cf = qf.getSSTableColumnIterator(reader).getColumnFamily();
+ qf = QueryFilter.getNamesFilter("rowExclude", new QueryPath("Standard1", null, null), "name".getBytes());
+ cf = qf.getSSTableColumnIterator(reader, Integer.MAX_VALUE).getColumnFamily();
assert cf == null;
}
Modified: cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java?rev=929163&r1=929162&r2=929163&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java Tue Mar 30 15:14:03 2010
@@ -25,6 +25,7 @@ import org.apache.cassandra.config.Datab
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.IColumn;
import org.apache.cassandra.db.filter.NamesQueryFilter;
+import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.io.sstable.SSTableReader;
import static org.apache.cassandra.utils.FBUtilities.hexToBytes;
@@ -44,8 +45,8 @@ public class SSTableImportTest
// Verify results
SSTableReader reader = SSTableReader.open(tempSS.getPath(), DatabaseDescriptor.getPartitioner());
- NamesQueryFilter qf = new NamesQueryFilter("rowA", new QueryPath("Standard1", null, null), "colAA".getBytes());
- ColumnFamily cf = qf.getSSTableColumnIterator(reader).getColumnFamily();
+ QueryFilter qf = QueryFilter.getNamesFilter("rowA", new QueryPath("Standard1", null, null), "colAA".getBytes());
+ ColumnFamily cf = qf.getSSTableColumnIterator(reader, Integer.MAX_VALUE).getColumnFamily();
assert Arrays.equals(cf.getColumn("colAA".getBytes()).value(), hexToBytes("76616c4141"));
}
@@ -58,8 +59,8 @@ public class SSTableImportTest
// Verify results
SSTableReader reader = SSTableReader.open(tempSS.getPath(), DatabaseDescriptor.getPartitioner());
- NamesQueryFilter qf = new NamesQueryFilter("rowA", new QueryPath("Super4", null, null), "superA".getBytes());
- ColumnFamily cf = qf.getSSTableColumnIterator(reader).getColumnFamily();
+ QueryFilter qf = QueryFilter.getNamesFilter("rowA", new QueryPath("Super4", null, null), "superA".getBytes());
+ ColumnFamily cf = qf.getSSTableColumnIterator(reader, Integer.MAX_VALUE).getColumnFamily();
IColumn superCol = cf.getColumn("superA".getBytes());
assert Arrays.equals(superCol.getSubColumn("colAA".getBytes()).value(), hexToBytes("76616c75654141"));
}