You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by al...@apache.org on 2013/09/10 23:46:28 UTC
git commit: Pass the updated cf to the PRSI index() method
Updated Branches:
refs/heads/cassandra-1.2 70297f9ad -> fd129664c
Pass the updated cf to the PRSI index() method
patch by Ben Coverston; reviewed by Aleksey Yeschenko for
CASSANDRA-5999
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/fd129664
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/fd129664
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/fd129664
Branch: refs/heads/cassandra-1.2
Commit: fd129664ca482181d2c794a68bbd5a5bcc2b01be
Parents: 70297f9
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Wed Sep 11 00:43:28 2013 +0300
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Wed Sep 11 00:43:28 2013 +0300
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/db/Table.java | 2 +-
.../db/index/PerRowSecondaryIndex.java | 13 +++------
.../db/index/SecondaryIndexManager.java | 28 ++++++++++++++------
.../db/SecondaryIndexColumnSizeTest.java | 4 +--
.../db/index/PerRowSecondaryIndexTest.java | 21 ++++++---------
6 files changed, 36 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fd129664/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 4d5b446..12e2017 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -10,6 +10,7 @@
* Fix loading index summary containing empty key (CASSANDRA-5965)
* Correctly handle limits in CompositesSearcher (CASSANDRA-5975)
* Pig: handle CQL collections (CASSANDRA-5867)
+ * Pass the updated cf to the PRSI index() method (CASSANDRA-5999)
1.2.9
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fd129664/src/java/org/apache/cassandra/db/Table.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Table.java b/src/java/org/apache/cassandra/db/Table.java
index 99a3446..a851eee 100644
--- a/src/java/org/apache/cassandra/db/Table.java
+++ b/src/java/org/apache/cassandra/db/Table.java
@@ -385,7 +385,7 @@ public class Table
}
Tracing.trace("Adding to {} memtable", cf.metadata().cfName);
- cfs.apply(key, cf, updateIndexes ? cfs.indexManager.updaterFor(key) : SecondaryIndexManager.nullUpdater);
+ cfs.apply(key, cf, updateIndexes ? cfs.indexManager.updaterFor(key, cf) : SecondaryIndexManager.nullUpdater);
}
}
finally
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fd129664/src/java/org/apache/cassandra/db/index/PerRowSecondaryIndex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/PerRowSecondaryIndex.java b/src/java/org/apache/cassandra/db/index/PerRowSecondaryIndex.java
index 0200667..1818473 100644
--- a/src/java/org/apache/cassandra/db/index/PerRowSecondaryIndex.java
+++ b/src/java/org/apache/cassandra/db/index/PerRowSecondaryIndex.java
@@ -19,9 +19,11 @@ package org.apache.cassandra.db.index;
import java.nio.ByteBuffer;
import java.nio.charset.CharacterCodingException;
+import java.util.SortedSet;
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.DecoratedKey;
+import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.thrift.Column;
import org.apache.cassandra.utils.ByteBufferUtil;
@@ -31,21 +33,14 @@ import org.apache.cassandra.utils.ByteBufferUtil;
public abstract class PerRowSecondaryIndex extends SecondaryIndex
{
/**
- * Index the given row for new index creation. @param cf will represent the entire row.
+ * Index the given row.
*
* @param rowKey the row key
- * @param cf the current rows data
+ * @param cf the cf data to be indexed
*/
public abstract void index(ByteBuffer rowKey, ColumnFamily cf);
/**
- * Index the given row
- *
- * @param rowKey the row key
- */
- public abstract void index(ByteBuffer rowKey);
-
- /**
* cleans up deleted columns from cassandra cleanup compaction
*
* @param key
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fd129664/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
index 2f03515..52d2152 100644
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
@@ -29,6 +29,7 @@ import org.apache.cassandra.config.ColumnDefinition;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.filter.IDiskAtomFilter;
+import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.dht.AbstractBounds;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.io.sstable.ReducingKeyIterator;
@@ -476,15 +477,24 @@ public class SecondaryIndexManager
/**
* This helper acts as a closure around the indexManager
- * and row key to ensure that down in Memtable's ColumnFamily implementation, the index
- * can get updated. Note: only a CF backed by AtomicSortedColumns implements this behaviour
- * fully, other types simply ignore the index updater.
+ * and updated cf data to ensure that down in
+ * Memtable's ColumnFamily implementation, the index
+ * can get updated. Note: only a CF backed by AtomicSortedColumns implements
+ * this behaviour fully, other types simply ignore the index updater.
*/
- public Updater updaterFor(final DecoratedKey key)
+ public Updater updaterFor(DecoratedKey key, ColumnFamily cf)
{
return (indexesByColumn.isEmpty() && rowLevelIndexMap.isEmpty())
? nullUpdater
- : new StandardUpdater(key);
+ : new StandardUpdater(key, cf);
+ }
+
+ /**
+ * Updated closure with only the modified row key.
+ */
+ public Updater updaterFor(DecoratedKey key)
+ {
+ return updaterFor(key, null);
}
/**
@@ -574,7 +584,7 @@ public class SecondaryIndexManager
public boolean validate(Column column)
{
SecondaryIndex index = getIndexForColumn(column.name);
- return index != null ? index.validate(column) : true;
+ return index == null || index.validate(column);
}
public static interface Updater
@@ -595,10 +605,12 @@ public class SecondaryIndexManager
private class StandardUpdater implements Updater
{
private final DecoratedKey key;
+ private final ColumnFamily cf;
- public StandardUpdater(DecoratedKey key)
+ public StandardUpdater(DecoratedKey key, ColumnFamily cf)
{
this.key = key;
+ this.cf = cf;
}
public void insert(IColumn column)
@@ -649,7 +661,7 @@ public class SecondaryIndexManager
public void updateRowLevelIndexes()
{
for (SecondaryIndex index : rowLevelIndexMap.values())
- ((PerRowSecondaryIndex) index).index(key.key);
+ ((PerRowSecondaryIndex) index).index(key.key, cf);
}
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fd129664/test/unit/org/apache/cassandra/db/SecondaryIndexColumnSizeTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/SecondaryIndexColumnSizeTest.java b/test/unit/org/apache/cassandra/db/SecondaryIndexColumnSizeTest.java
index 6cca2ab..3281a5a 100644
--- a/test/unit/org/apache/cassandra/db/SecondaryIndexColumnSizeTest.java
+++ b/test/unit/org/apache/cassandra/db/SecondaryIndexColumnSizeTest.java
@@ -53,8 +53,8 @@ public class SecondaryIndexColumnSizeTest
buffer.flip();
column.value = buffer;
- MockRowIndex mockRowIndex = new MockRowIndex();
- MockColumnIndex mockColumnIndex = new MockColumnIndex();
+ SecondaryIndexColumnSizeTest.MockRowIndex mockRowIndex = new SecondaryIndexColumnSizeTest.MockRowIndex();
+ SecondaryIndexColumnSizeTest.MockColumnIndex mockColumnIndex = new SecondaryIndexColumnSizeTest.MockColumnIndex();
assertTrue(mockRowIndex.validate(column));
assertFalse(mockColumnIndex.validate(column));
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fd129664/test/unit/org/apache/cassandra/db/index/PerRowSecondaryIndexTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/index/PerRowSecondaryIndexTest.java b/test/unit/org/apache/cassandra/db/index/PerRowSecondaryIndexTest.java
index 3080912..c720d21 100644
--- a/test/unit/org/apache/cassandra/db/index/PerRowSecondaryIndexTest.java
+++ b/test/unit/org/apache/cassandra/db/index/PerRowSecondaryIndexTest.java
@@ -50,7 +50,7 @@ public class PerRowSecondaryIndexTest extends SchemaLoader
@Before
public void clearTestStub()
{
- TestIndex.reset();
+ PerRowSecondaryIndexTest.TestIndex.reset();
}
@Test
@@ -62,7 +62,7 @@ public class PerRowSecondaryIndexTest extends SchemaLoader
rm.add(new QueryPath("Indexed1", null, ByteBufferUtil.bytes("indexed")), ByteBufferUtil.bytes("foo"), 1);
rm.apply();
- ColumnFamily indexedRow = TestIndex.LAST_INDEXED_ROW;
+ ColumnFamily indexedRow = PerRowSecondaryIndexTest.TestIndex.LAST_INDEXED_ROW;
assertNotNull(indexedRow);
assertEquals(ByteBufferUtil.bytes("foo"), indexedRow.getColumn(ByteBufferUtil.bytes("indexed")).value());
@@ -71,10 +71,10 @@ public class PerRowSecondaryIndexTest extends SchemaLoader
rm.add(new QueryPath("Indexed1", null, ByteBufferUtil.bytes("indexed")), ByteBufferUtil.bytes("bar"), 2);
rm.apply();
- indexedRow = TestIndex.LAST_INDEXED_ROW;
+ indexedRow = PerRowSecondaryIndexTest.TestIndex.LAST_INDEXED_ROW;
assertNotNull(indexedRow);
assertEquals(ByteBufferUtil.bytes("bar"), indexedRow.getColumn(ByteBufferUtil.bytes("indexed")).value());
- assertTrue(Arrays.equals("k1".getBytes(), TestIndex.LAST_INDEXED_KEY.array()));
+ assertTrue(Arrays.equals("k1".getBytes(), PerRowSecondaryIndexTest.TestIndex.LAST_INDEXED_KEY.array()));
}
@Test
@@ -86,14 +86,14 @@ public class PerRowSecondaryIndexTest extends SchemaLoader
rm.delete(new QueryPath("Indexed1", null, ByteBufferUtil.bytes("indexed")), 1);
rm.apply();
- ColumnFamily indexedRow = TestIndex.LAST_INDEXED_ROW;
+ ColumnFamily indexedRow = PerRowSecondaryIndexTest.TestIndex.LAST_INDEXED_ROW;
assertNotNull(indexedRow);
for (IColumn column : indexedRow.getSortedColumns())
{
assertTrue(column.isMarkedForDelete());
}
- assertTrue(Arrays.equals("k2".getBytes(), TestIndex.LAST_INDEXED_KEY.array()));
+ assertTrue(Arrays.equals("k2".getBytes(), PerRowSecondaryIndexTest.TestIndex.LAST_INDEXED_KEY.array()));
}
@Test
@@ -105,13 +105,13 @@ public class PerRowSecondaryIndexTest extends SchemaLoader
rm.delete(new QueryPath("Indexed1"), 1);
rm.apply();
- ColumnFamily indexedRow = TestIndex.LAST_INDEXED_ROW;
+ ColumnFamily indexedRow = PerRowSecondaryIndexTest.TestIndex.LAST_INDEXED_ROW;
assertNotNull(indexedRow);
for (IColumn column : indexedRow.getSortedColumns())
{
assertTrue(column.isMarkedForDelete());
}
- assertTrue(Arrays.equals("k3".getBytes(), TestIndex.LAST_INDEXED_KEY.array()));
+ assertTrue(Arrays.equals("k3".getBytes(), PerRowSecondaryIndexTest.TestIndex.LAST_INDEXED_KEY.array()));
}
public static class TestIndex extends PerRowSecondaryIndex
@@ -128,11 +128,6 @@ public class PerRowSecondaryIndexTest extends SchemaLoader
@Override
public void index(ByteBuffer rowKey, ColumnFamily cf)
{
- }
-
- @Override
- public void index(ByteBuffer rowKey)
- {
QueryFilter filter = QueryFilter.getIdentityFilter(DatabaseDescriptor.getPartitioner().decorateKey(rowKey),
new QueryPath(baseCfs.getColumnFamilyName()));
LAST_INDEXED_ROW = baseCfs.getColumnFamily(filter);