Updated Branches: refs/heads/trunk 52f3912d4 -> f04bebfa7
log index scan subject in CompositesSearcher patch by slebresne; reviewed by jbellis for CASSANDRA-4904 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f04bebfa Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f04bebfa Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f04bebfa Branch: refs/heads/trunk Commit: f04bebfa7e5fb0efd003685b10c0e31250de441d Parents: fdf2959 Author: Sylvain Lebresne <[email protected]> Authored: Mon Nov 5 18:41:48 2012 +0100 Committer: Sylvain Lebresne <[email protected]> Committed: Mon Nov 5 18:41:48 2012 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../AbstractSimplePerColumnSecondaryIndex.java | 13 +++++++++++++ .../db/index/composites/CompositesIndex.java | 6 ++++++ .../db/index/composites/CompositesSearcher.java | 8 ++++---- .../apache/cassandra/db/index/keys/KeysIndex.java | 6 ++++++ .../cassandra/db/index/keys/KeysSearcher.java | 14 +++----------- 6 files changed, 33 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f04bebfa/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 02385df..b64237e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -52,6 +52,7 @@ * Don't allow prepared marker inside collections (CASSANDRA-4890) * Re-allow order by on non-selected columns (CASSANDRA-4645) * Bug when composite index is created in a table having collections (CASSANDRA-4909) + * log index scan subject in CompositesSearcher (CASSANDRA-4904) Merged from 1.1: * add get[Row|Key]CacheEntries to CacheServiceMBean (CASSANDRA-4859) * fix get_paged_slice to wrap to next row correctly (CASSANDRA-4816) http://git-wip-us.apache.org/repos/asf/cassandra/blob/f04bebfa/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java index ecabf23..63af51b 100644 --- a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java +++ b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java @@ -25,6 +25,7 @@ import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.db.*; import org.apache.cassandra.db.marshal.*; import org.apache.cassandra.dht.*; +import org.apache.cassandra.thrift.IndexExpression; import org.apache.cassandra.utils.ByteBufferUtil; /** @@ -73,6 +74,18 @@ public abstract class AbstractSimplePerColumnSecondaryIndex extends PerColumnSec protected abstract ByteBuffer makeIndexColumnName(ByteBuffer rowKey, IColumn column); + protected abstract AbstractType getExpressionComparator(); + + public String expressionString(IndexExpression expr) + { + return String.format("'%s.%s %s %s'", + baseCfs.columnFamily, + getExpressionComparator().getString(expr.column_name), + expr.op, + baseCfs.metadata.getColumn_metadata().get(expr.column_name).getValidator().getString(expr.value)); + } + + public void delete(ByteBuffer rowKey, IColumn column) { if (column.isMarkedForDelete()) http://git-wip-us.apache.org/repos/asf/cassandra/blob/f04bebfa/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java b/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java index 552d75f..f1aa4aa 100644 --- a/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java +++ b/src/java/org/apache/cassandra/db/index/composites/CompositesIndex.java @@ -67,6 +67,12 @@ public class CompositesIndex extends AbstractSimplePerColumnSecondaryIndex return builder.build(); } + protected AbstractType getExpressionComparator() + { + CompositeType baseComparator = (CompositeType)baseCfs.getComparator(); + return baseComparator.types.get(prefixSize); + } + @Override public boolean indexes(ByteBuffer name) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/f04bebfa/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 5a08f49..caf375b 100644 --- a/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java +++ b/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java @@ -23,6 +23,7 @@ import java.util.*; import org.apache.cassandra.db.*; import org.apache.cassandra.db.filter.*; +import org.apache.cassandra.db.index.AbstractSimplePerColumnSecondaryIndex; import org.apache.cassandra.db.index.PerColumnSecondaryIndex; import org.apache.cassandra.db.index.SecondaryIndex; import org.apache.cassandra.db.index.SecondaryIndexManager; @@ -208,10 +209,9 @@ public class CompositesSearcher extends SecondaryIndexSearcher return makeReturn(currentKey, data); } - // TODO: broken because we need to extract the component comparator rather than the whole name comparator - // if (logger.isDebugEnabled()) - // logger.debug("Scanning index {} starting with {}", - // expressionString(primary), indexComparator.getString(startPrefix)); + if (logger.isTraceEnabled() && (index instanceof AbstractSimplePerColumnSecondaryIndex)) + logger.trace("Scanning index {} starting with {}", + ((AbstractSimplePerColumnSecondaryIndex)index).expressionString(primary), indexComparator.getString(startPrefix)); QueryFilter indexFilter = QueryFilter.getSliceFilter(indexKey, new QueryPath(index.getIndexCfs().getColumnFamilyName()), http://git-wip-us.apache.org/repos/asf/cassandra/blob/f04bebfa/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java b/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java index 7174ffc..04c9946 100644 --- a/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java +++ b/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java @@ -24,6 +24,7 @@ import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.db.IColumn; import org.apache.cassandra.db.index.AbstractSimplePerColumnSecondaryIndex; import org.apache.cassandra.db.index.SecondaryIndexSearcher; +import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.exceptions.ConfigurationException; /** @@ -51,4 +52,9 @@ public class KeysIndex extends AbstractSimplePerColumnSecondaryIndex { // no options used } + + protected AbstractType getExpressionComparator() + { + return baseCfs.getComparator(); + } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/f04bebfa/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 590f629..bb03672 100644 --- a/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java +++ b/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java @@ -23,6 +23,7 @@ import java.util.*; import org.apache.cassandra.db.*; import org.apache.cassandra.db.filter.*; +import org.apache.cassandra.db.index.AbstractSimplePerColumnSecondaryIndex; import org.apache.cassandra.db.index.PerColumnSecondaryIndex; import org.apache.cassandra.db.index.SecondaryIndex; import org.apache.cassandra.db.index.SecondaryIndexManager; @@ -68,15 +69,6 @@ public class KeysSearcher extends SecondaryIndexSearcher return best; } - private String expressionString(IndexExpression expr) - { - return String.format("'%s.%s %s %s'", - baseCfs.columnFamily, - baseCfs.getComparator().getString(expr.column_name), - expr.op, - baseCfs.metadata.getColumn_metadata().get(expr.column_name).getValidator().getString(expr.value)); - } - public boolean isIndexing(List<IndexExpression> clause) { return highestSelectivityPredicate(clause) != null; @@ -133,9 +125,9 @@ public class KeysSearcher extends SecondaryIndexSearcher return endOfData(); } - if (logger.isTraceEnabled()) + if (logger.isTraceEnabled() && (index instanceof AbstractSimplePerColumnSecondaryIndex)) logger.trace("Scanning index {} starting with {}", - expressionString(primary), index.getBaseCfs().metadata.getKeyValidator().getString(startKey)); + ((AbstractSimplePerColumnSecondaryIndex)index).expressionString(primary), index.getBaseCfs().metadata.getKeyValidator().getString(startKey)); QueryFilter indexFilter = QueryFilter.getSliceFilter(indexKey, new QueryPath(index.getIndexCfs().getColumnFamilyName()),
