You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2012/11/05 18:42:39 UTC
[1/2] git commit: log index scan subject in CompositesSearcher
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 <sy...@datastax.com>
Authored: Mon Nov 5 18:41:48 2012 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
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()),