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 2011/02/28 09:05:52 UTC
svn commit: r1075231 - in
/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra: avro/
db/filter/ db/marshal/ thrift/
Author: jbellis
Date: Mon Feb 28 08:05:51 2011
New Revision: 1075231
URL: http://svn.apache.org/viewvc?rev=1075231&view=rev
Log:
cache IColumn and reverse comparators in AbstractType
patch by jbellis; reviewed by slebresne for CASSANDRA-2075
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/avro/AvroValidation.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryFilter.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/marshal/AbstractType.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/thrift/ThriftValidation.java
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/avro/AvroValidation.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/avro/AvroValidation.java?rev=1075231&r1=1075230&r2=1075231&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/avro/AvroValidation.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/avro/AvroValidation.java Mon Feb 28 08:05:51 2011
@@ -203,7 +203,7 @@ public class AvroValidation
if (range.count < 0)
throw newInvalidRequestException("Ranges require a non-negative count.");
- Comparator<ByteBuffer> orderedComparator = range.reversed ? comparator.getReverseComparator() : comparator;
+ Comparator<ByteBuffer> orderedComparator = range.reversed ? comparator.reverseComparator : comparator;
if (range.start.remaining() > 0 && range.finish.remaining() > 0 && orderedComparator.compare(range.start, range.finish) > 0)
throw newInvalidRequestException("range finish must come after start in the order of traversal");
}
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java?rev=1075231&r1=1075230&r2=1075231&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java Mon Feb 28 08:05:51 2011
@@ -26,7 +26,6 @@ import java.util.Comparator;
import java.util.Iterator;
import java.util.SortedSet;
-import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.columniterator.IColumnIterator;
import org.apache.cassandra.db.columniterator.SSTableNamesIterator;
@@ -88,6 +87,6 @@ public class NamesQueryFilter implements
public Comparator<IColumn> getColumnComparator(AbstractType comparator)
{
- return QueryFilter.getColumnComparator(comparator);
+ return comparator.columnComparator;
}
}
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryFilter.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryFilter.java?rev=1075231&r1=1075230&r2=1075231&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryFilter.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/QueryFilter.java Mon Feb 28 08:05:51 2011
@@ -88,18 +88,6 @@ public class QueryFilter
return superFilter.getSSTableColumnIterator(sstable, file, key);
}
- // here so it can be used by SQF and NQF. non-package callers should call IFilter.getColumnComparator
- static Comparator<IColumn> getColumnComparator(final Comparator<ByteBuffer> comparator)
- {
- return new Comparator<IColumn>()
- {
- public int compare(IColumn c1, IColumn c2)
- {
- return comparator.compare(c1.name(), c2.name());
- }
- };
- }
-
public void collectCollatedColumns(final ColumnFamily returnCF, Iterator<IColumn> collatedColumns, final int gcBefore)
{
// define a 'reduced' iterator that merges columns w/ the same name, which
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java?rev=1075231&r1=1075230&r2=1075231&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java Mon Feb 28 08:05:51 2011
@@ -28,12 +28,10 @@ import java.util.Iterator;
import java.util.List;
import org.apache.commons.collections.IteratorUtils;
-import org.apache.commons.collections.comparators.ReverseComparator;
import org.apache.commons.collections.iterators.ReverseListIterator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.columniterator.IColumnIterator;
import org.apache.cassandra.db.columniterator.SSTableSliceIterator;
@@ -90,7 +88,7 @@ public class SliceQueryFilter implements
}
// iterate until we get to the "real" start column
- Comparator<ByteBuffer> comparator = reversed ? superColumn.getComparator().getReverseComparator() : superColumn.getComparator();
+ Comparator<ByteBuffer> comparator = reversed ? superColumn.getComparator().reverseComparator : superColumn.getComparator();
while (subcolumns.hasNext())
{
IColumn column = subcolumns.next();
@@ -107,7 +105,7 @@ public class SliceQueryFilter implements
public Comparator<IColumn> getColumnComparator(AbstractType comparator)
{
- return reversed ? new ReverseComparator(QueryFilter.getColumnComparator(comparator)) : QueryFilter.getColumnComparator(comparator);
+ return reversed ? comparator.columnReverseComparator : comparator.columnComparator;
}
public void collectReducedColumns(IColumnContainer container, Iterator<IColumn> reducedColumns, int gcBefore)
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/marshal/AbstractType.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/marshal/AbstractType.java?rev=1075231&r1=1075230&r2=1075231&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/marshal/AbstractType.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/marshal/AbstractType.java Mon Feb 28 08:05:51 2011
@@ -40,42 +40,41 @@ public abstract class AbstractType imple
{
public final Comparator<IndexInfo> indexComparator;
public final Comparator<IndexInfo> indexReverseComparator;
+ public final Comparator<IColumn> columnComparator;
+ public final Comparator<IColumn> columnReverseComparator;
+ public final Comparator<ByteBuffer> reverseComparator;
protected AbstractType()
{
- final AbstractType that = this;
indexComparator = new Comparator<IndexInfo>()
{
public int compare(IndexInfo o1, IndexInfo o2)
{
- return that.compare(o1.lastName, o2.lastName);
+ return AbstractType.this.compare(o1.lastName, o2.lastName);
}
};
indexReverseComparator = new Comparator<IndexInfo>()
{
public int compare(IndexInfo o1, IndexInfo o2)
{
- return that.compare(o1.firstName, o2.firstName);
+ return AbstractType.this.compare(o1.firstName, o2.firstName);
}
};
- }
-
- /** get a string representation of the bytes suitable for log messages */
- public abstract String getString(ByteBuffer bytes);
-
- /** get a byte representation of the given string.
- * defaults to unsupportedoperation so people deploying custom Types can update at their leisure. */
- public ByteBuffer fromString(String source)
- {
- throw new UnsupportedOperationException();
- }
-
- /* validate that the byte array is a valid sequence for the type we are supposed to be comparing */
- public abstract void validate(ByteBuffer bytes) throws MarshalException;
-
- public Comparator<ByteBuffer> getReverseComparator()
- {
- return new Comparator<ByteBuffer>()
+ columnComparator = new Comparator<IColumn>()
+ {
+ public int compare(IColumn c1, IColumn c2)
+ {
+ return AbstractType.this.compare(c1.name(), c2.name());
+ }
+ };
+ columnReverseComparator = new Comparator<IColumn>()
+ {
+ public int compare(IColumn c1, IColumn c2)
+ {
+ return AbstractType.this.compare(c2.name(), c1.name());
+ }
+ };
+ reverseComparator = new Comparator<ByteBuffer>()
{
public int compare(ByteBuffer o1, ByteBuffer o2)
{
@@ -93,6 +92,25 @@ public abstract class AbstractType imple
};
}
+ /** @deprecated; use reverseComparator field instead */
+ public Comparator<ByteBuffer> getReverseComparator()
+ {
+ return reverseComparator;
+ }
+
+ /** get a string representation of the bytes suitable for log messages */
+ public abstract String getString(ByteBuffer bytes);
+
+ /** get a byte representation of the given string.
+ * defaults to unsupportedoperation so people deploying custom Types can update at their leisure. */
+ public ByteBuffer fromString(String source)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ /* validate that the byte array is a valid sequence for the type we are supposed to be comparing */
+ public abstract void validate(ByteBuffer bytes) throws MarshalException;
+
/* convenience method */
public String getString(Collection<ByteBuffer> names)
{
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/thrift/ThriftValidation.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/thrift/ThriftValidation.java?rev=1075231&r1=1075230&r2=1075231&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/thrift/ThriftValidation.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/thrift/ThriftValidation.java Mon Feb 28 08:05:51 2011
@@ -207,7 +207,7 @@ public class ThriftValidation
if (range.count < 0)
throw new InvalidRequestException("get_slice requires non-negative count");
- Comparator<ByteBuffer> orderedComparator = range.isReversed() ? comparator.getReverseComparator() : comparator;
+ Comparator<ByteBuffer> orderedComparator = range.isReversed() ? comparator.reverseComparator : comparator;
if (range.start.remaining() > 0
&& range.finish.remaining() > 0
&& orderedComparator.compare(range.start, range.finish) > 0)