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 2012/01/21 00:16:09 UTC
[3/3] git commit: allow using sstable2json on secondary index data
allow using sstable2json on secondary index data
patch by yukim and jbellis for CASSANDRA-3738
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/492d44e1
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/492d44e1
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/492d44e1
Branch: refs/heads/cassandra-1.0
Commit: 492d44e1586eb6f73090ec29e7e997940cde314a
Parents: 5850178
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Jan 20 16:45:24 2012 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Jan 20 17:15:17 2012 -0600
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/io/sstable/SSTableReader.java | 25 +++++++++++++--
.../org/apache/cassandra/tools/SSTableExport.java | 25 ++-------------
3 files changed, 26 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/492d44e1/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 35fef0f..a47ae40 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.0.8
+ * allow using sstable2json on secondary index data (CASSANDRA-3738)
* (cqlsh) add DESCRIBE COLUMNFAMILIES (CASSANDRA-3586)
* (cqlsh) format blobs correctly and use colors to improve output
readability (CASSANDRA-3726)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/492d44e1/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
index 8b4fc9e..10f868b 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
@@ -30,7 +30,10 @@ import com.google.common.base.Function;
import com.google.common.collect.Collections2;
import org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor;
+import org.apache.cassandra.config.ColumnDefinition;
import org.apache.cassandra.config.Schema;
+import org.apache.cassandra.db.index.keys.KeysIndex;
+import org.apache.cassandra.dht.LocalPartitioner;
import org.apache.cassandra.io.compress.CompressedRandomAccessReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -108,14 +111,30 @@ public class SSTableReader extends SSTable
return count;
}
- public static SSTableReader open(Descriptor desc) throws IOException
+ public static SSTableReader open(Descriptor descriptor) throws IOException
{
- return open(desc, Schema.instance.getCFMetaData(desc.ksname, desc.cfname));
+ CFMetaData metadata;
+ if (descriptor.cfname.contains("."))
+ {
+ int i = descriptor.cfname.indexOf(".");
+ String parentName = descriptor.cfname.substring(0, i);
+ CFMetaData parent = Schema.instance.getCFMetaData(descriptor.ksname, parentName);
+ ColumnDefinition def = parent.getColumnDefinitionForIndex(descriptor.cfname.substring(i + 1));
+ metadata = CFMetaData.newIndexMetadata(parent, def, KeysIndex.indexComparator());
+ }
+ else
+ {
+ metadata = Schema.instance.getCFMetaData(descriptor.ksname, descriptor.cfname);
+ }
+ return open(descriptor, metadata);
}
public static SSTableReader open(Descriptor desc, CFMetaData metadata) throws IOException
{
- return open(desc, componentsFor(desc), metadata, StorageService.getPartitioner());
+ IPartitioner p = desc.cfname.contains(".")
+ ? new LocalPartitioner(metadata.getKeyValidator())
+ : StorageService.getPartitioner();
+ return open(desc, componentsFor(desc), metadata, p);
}
public static SSTableReader open(Descriptor descriptor, Set<Component> components, CFMetaData metadata, IPartitioner partitioner) throws IOException
http://git-wip-us.apache.org/repos/asf/cassandra/blob/492d44e1/src/java/org/apache/cassandra/tools/SSTableExport.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/SSTableExport.java b/src/java/org/apache/cassandra/tools/SSTableExport.java
index 8c9ee5f..24a0d1c 100644
--- a/src/java/org/apache/cassandra/tools/SSTableExport.java
+++ b/src/java/org/apache/cassandra/tools/SSTableExport.java
@@ -25,13 +25,10 @@ import java.nio.ByteBuffer;
import java.util.*;
import org.apache.cassandra.config.CFMetaData;
-import org.apache.cassandra.config.ColumnDefinition;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.Schema;
import org.apache.cassandra.db.*;
-import org.apache.cassandra.db.index.keys.KeysIndex;
import org.apache.cassandra.db.marshal.AbstractType;
-import org.apache.cassandra.service.StorageService;
import org.apache.commons.cli.*;
@@ -246,7 +243,7 @@ public class SSTableExport
SSTableReader reader = SSTableReader.open(Descriptor.fromFilename(ssTableFile));
SSTableScanner scanner = reader.getDirectScanner();
- IPartitioner<?> partitioner = StorageService.getPartitioner();
+ IPartitioner<?> partitioner = reader.partitioner;
if (excludes != null)
toExport.removeAll(Arrays.asList(excludes));
@@ -329,7 +326,7 @@ public class SSTableExport
scanner.close();
}
-
+
/**
* Export an SSTable and write the resulting JSON to a PrintStream.
*
@@ -341,23 +338,7 @@ public class SSTableExport
*/
public static void export(String ssTableFile, PrintStream outs, String[] excludes) throws IOException
{
- Descriptor descriptor = Descriptor.fromFilename(ssTableFile);
- CFMetaData metadata;
- if (descriptor.cfname.contains("."))
- {
- // look up index metadata from parent
- int i = descriptor.cfname.indexOf(".");
- String parentName = descriptor.cfname.substring(0, i);
- CFMetaData parent = Schema.instance.getCFMetaData(descriptor.ksname, parentName);
- ColumnDefinition def = parent.getColumnDefinitionForIndex(descriptor.cfname.substring(i + 1));
- metadata = CFMetaData.newIndexMetadata(parent, def, KeysIndex.indexComparator());
- }
- else
- {
- metadata = Schema.instance.getCFMetaData(descriptor.ksname, descriptor.cfname);
- }
-
- export(SSTableReader.open(descriptor, metadata), outs, excludes);
+ export(SSTableReader.open(Descriptor.fromFilename(ssTableFile)), outs, excludes);
}
/**