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()),