Updated Branches: refs/heads/trunk 2966852a0 -> 63c490af9
encapsulate SecondaryIndex.estimateResultRows patch by Miguel Angel Fernandez Diaz; reviewed by Sam Tunnicliffe for CASSANDRA-6498 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/63c490af Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/63c490af Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/63c490af Branch: refs/heads/trunk Commit: 63c490af9cbe392ba025f15854173eb4f7fbbfad Parents: 2966852 Author: Jonathan Ellis <[email protected]> Authored: Wed Jan 15 12:08:47 2014 -0600 Committer: Jonathan Ellis <[email protected]> Committed: Wed Jan 15 12:31:08 2014 -0600 ---------------------------------------------------------------------- .../db/index/AbstractSimplePerColumnSecondaryIndex.java | 5 +++++ src/java/org/apache/cassandra/db/index/SecondaryIndex.java | 2 ++ src/java/org/apache/cassandra/service/StorageProxy.java | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/63c490af/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 b062941..5aaf07c 100644 --- a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java +++ b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java @@ -161,4 +161,9 @@ public abstract class AbstractSimplePerColumnSecondaryIndex extends PerColumnSec indexCfs.metadata.reloadSecondaryIndexMetadata(baseCfs.metadata); indexCfs.reload(); } + + public long estimateResultRows() + { + return getIndexCfs().getMeanColumns(); + } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/63c490af/src/java/org/apache/cassandra/db/index/SecondaryIndex.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndex.java b/src/java/org/apache/cassandra/db/index/SecondaryIndex.java index 84b3bfc..81359af 100644 --- a/src/java/org/apache/cassandra/db/index/SecondaryIndex.java +++ b/src/java/org/apache/cassandra/db/index/SecondaryIndex.java @@ -326,6 +326,8 @@ public abstract class SecondaryIndex public abstract boolean validate(Cell cell); + public abstract long estimateResultRows(); + /** * Returns the index comparator for index backed by CFS, or null. * http://git-wip-us.apache.org/repos/asf/cassandra/blob/63c490af/src/java/org/apache/cassandra/service/StorageProxy.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java index 7085a3e..a3e9dd4 100644 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@ -1463,7 +1463,7 @@ public class StorageProxy implements StorageProxyMBean SecondaryIndexSearcher searcher = Iterables.getOnlyElement(cfs.indexManager.getIndexSearchersForQuery(command.rowFilter)); SecondaryIndex highestSelectivityIndex = searcher.highestSelectivityIndex(command.rowFilter); // use our own mean column count as our estimate for how many matching rows each node will have - resultRowsPerRange = highestSelectivityIndex.getIndexCfs().getMeanColumns(); + resultRowsPerRange = highestSelectivityIndex.estimateResultRows(); } else if (!command.countCQL3Rows()) {
