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 2014/02/06 17:20:32 UTC
[4/7] git commit: merge from 1.2
merge from 1.2
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0b6913ee
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0b6913ee
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0b6913ee
Branch: refs/heads/cassandra-2.0
Commit: 0b6913ee0607e1392c5d743d2f896dcdd138fe40
Parents: 43e6e18 8b6d87b
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Feb 6 10:17:57 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Feb 6 10:17:57 2014 -0600
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../cassandra/db/index/SecondaryIndexSearcher.java | 2 +-
.../db/index/composites/CompositesSearcher.java | 1 +
.../apache/cassandra/db/index/keys/KeysSearcher.java | 1 +
.../org/apache/cassandra/service/StorageService.java | 12 ++++++++----
5 files changed, 12 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index dfbe5c6,4be97f1..94c89cb
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,8 -1,5 +1,9 @@@
-1.2.16
+2.0.6
+ * Improve nodetool cfhistograms formatting (CASSANDRA-6360)
+ * Expose bulk loading progress over JMX (CASSANDRA-4757)
+ * Correctly handle null with IF conditions and TTL (CASSANDRA-6623)
+Merged from 1.2:
+ * Fix upgradesstables NPE for non-CF-based indexes (CASSANDRA-6645)
* Fix partition and range deletes not triggering flush (CASSANDRA-6655)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
index f3e993d,a8c1dde..e93efd1
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
@@@ -45,41 -43,15 +45,41 @@@ public abstract class SecondaryIndexSea
/**
* @return true this index is able to handle given clauses.
*/
- public abstract boolean isIndexing(List<IndexExpression> clause);
-
- protected boolean isIndexValueStale(ColumnFamily liveData, ByteBuffer indexedColumnName, ByteBuffer indexedValue)
+ public boolean isIndexing(List<IndexExpression> clause)
{
- IColumn liveColumn = liveData.getColumn(indexedColumnName);
- if (liveColumn == null || liveColumn.isMarkedForDelete())
- return true;
-
- ByteBuffer liveValue = liveColumn.value();
- return 0 != liveData.metadata().getValueValidator(indexedColumnName).compare(indexedValue, liveValue);
+ return highestSelectivityPredicate(clause) != null;
+ }
+
+ protected IndexExpression highestSelectivityPredicate(List<IndexExpression> clause)
+ {
+ IndexExpression best = null;
+ int bestMeanCount = Integer.MAX_VALUE;
+ Map<SecondaryIndex, Integer> candidates = new HashMap<>();
+
+ for (IndexExpression expression : clause)
+ {
+ // skip columns belonging to a different index type
+ if (!columns.contains(expression.column_name))
+ continue;
+
+ SecondaryIndex index = indexManager.getIndexForColumn(expression.column_name);
- if (index == null || (expression.op != IndexOperator.EQ))
++ if (index == null || index.getIndexCfs() == null || expression.op != IndexOperator.EQ)
+ continue;
+ int columns = index.getIndexCfs().getMeanColumns();
+ candidates.put(index, columns);
+ if (columns < bestMeanCount)
+ {
+ best = expression;
+ bestMeanCount = columns;
+ }
+ }
+
+ if (best == null)
+ Tracing.trace("No applicable indexes found");
+ else
+ Tracing.trace("Candidate index mean cardinalities are {}. Scanning with {}.",
+ FBUtilities.toString(candidates), indexManager.getIndexForColumn(best.column_name).getIndexName());
+
+ return best;
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
index aa35605,3974466..90e7089
--- a/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
@@@ -78,8 -104,9 +78,9 @@@ public class CompositesSearcher extend
// to each row matching that clause.
// TODO: allow merge join instead of just one index + loop
final IndexExpression primary = highestSelectivityPredicate(filter.getClause());
- final SecondaryIndex index = indexManager.getIndexForColumn(primary.column_name);
+ final CompositesIndex index = (CompositesIndex)indexManager.getIndexForColumn(primary.column_name);
assert index != null;
+ assert index.getIndexCfs() != null;
final DecoratedKey indexKey = index.getIndexKeyFor(primary.value);
if (logger.isDebugEnabled())
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index 9a6b50f,94dd73d..26846e7
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -2297,8 -2314,11 +2297,10 @@@ public class StorageService extends Not
{
for (SecondaryIndex si : cfStore.indexManager.getIndexes())
{
- logger.info("adding secondary index {} to operation", si.getIndexName());
- valid.add(si.getIndexCfs());
- if (si.getIndexCfs() != null)
- {
++ if (si.getIndexCfs() != null) {
+ logger.info("adding secondary index {} to operation", si.getIndexName());
+ valid.add(si.getIndexCfs());
+ }
}
}
@@@ -2346,8 -2367,11 +2348,10 @@@
{
for(SecondaryIndex si : cfStore.indexManager.getIndexes())
{
- logger.info("adding secondary index {} to operation", si.getIndexName());
- valid.add(si.getIndexCfs());
- if (si.getIndexCfs() != null)
- {
++ if (si.getIndexCfs() != null) {
+ logger.info("adding secondary index {} to operation", si.getIndexName());
+ valid.add(si.getIndexCfs());
+ }
}
}
}