Author: slebresne Date: Thu Oct 13 16:19:07 2011 New Revision: 1182950 URL: http://svn.apache.org/viewvc?rev=1182950&view=rev Log: Fix handling of tombstone by SSTableExport/Import when validation != BytesType patch by slebresne; reviewed by jbellis for CASSANDRA-3357
Modified: cassandra/branches/cassandra-0.8/CHANGES.txt cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/SSTableExport.java cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/SSTableImport.java Modified: cassandra/branches/cassandra-0.8/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1182950&r1=1182949&r2=1182950&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8/CHANGES.txt (original) +++ cassandra/branches/cassandra-0.8/CHANGES.txt Thu Oct 13 16:19:07 2011 @@ -5,6 +5,7 @@ (CASSANDRA-3349) * (CQL) allow numeric keyspace names in USE statement (CASSANDRA-3350) * (Hadoop) skip empty rows when slicing the entire row (CASSANDRA-2855) + * Fix handling of tombstone by SSTableExport/Import (CASSANDRA-3357) 0.8.7 Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/SSTableExport.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/SSTableExport.java?rev=1182950&r1=1182949&r2=1182950&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/SSTableExport.java (original) +++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/SSTableExport.java Thu Oct 13 16:19:07 2011 @@ -128,7 +128,10 @@ public class SSTableExport AbstractType validator = cfMetaData.getValueValidator(name); serializedColumn.add(comparator.getString(name)); - serializedColumn.add(validator.getString(value)); + if (column instanceof DeletedColumn) + serializedColumn.add(ByteBufferUtil.bytesToHex(value)); + else + serializedColumn.add(validator.getString(value)); serializedColumn.add(column.timestamp()); if (column instanceof DeletedColumn) Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/SSTableImport.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/SSTableImport.java?rev=1182950&r1=1182949&r2=1182950&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/SSTableImport.java (original) +++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/SSTableImport.java Thu Oct 13 16:19:07 2011 @@ -26,6 +26,7 @@ import java.util.*; import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.db.marshal.BytesType; import org.apache.cassandra.db.marshal.MarshalException; +import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.commons.cli.*; import org.apache.cassandra.config.CFMetaData; @@ -103,7 +104,6 @@ public class SSTableImport assert fields.size() >= 3 : "Column definition should have at least 3"; name = stringAsType((String) fields.get(0), comparator); - value = stringAsType((String) fields.get(1), meta.getValueValidator(name.duplicate())); timestamp = (Long) fields.get(2); kind = ""; @@ -137,6 +137,9 @@ public class SSTableImport } } } + + value = isDeleted() ? ByteBufferUtil.hexToBytes((String) fields.get(1)) + : stringAsType((String) fields.get(1), meta.getValueValidator(name.duplicate())); } }