use isSuper instead of DatabaseDescriptor.getColumnType.

patch by jbellis; reviewed by Sandeep Tata for #85

git-svn-id: https://svn.apache.org/repos/asf/incubator/cassandra/trunk@765830 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jonathan Ellis 2009-04-17 01:48:50 +00:00
parent 1e15ccf5c9
commit 20dfd0682b
12 changed files with 41 additions and 42 deletions

View File

@ -49,6 +49,7 @@ public final class ColumnFamily
private static Logger logger_ = Logger.getLogger( ColumnFamily.class );
private static Map<String, String> columnTypes_ = new HashMap<String, String>();
private static Map<String, String> indexTypes_ = new HashMap<String, String>();
private String type_;
static
{
@ -122,15 +123,10 @@ public final class ColumnFamily
return columnComparator_;
}
public ColumnFamily(String cfName)
{
name_ = cfName;
createColumnFactoryAndColumnSerializer();
}
public ColumnFamily(String cfName, String columnType)
{
this(cfName);
name_ = cfName;
type_ = columnType;
createColumnFactoryAndColumnSerializer(columnType);
}
@ -162,7 +158,7 @@ public final class ColumnFamily
ColumnFamily cloneMe()
{
ColumnFamily cf = new ColumnFamily(name_);
ColumnFamily cf = new ColumnFamily(name_, type_);
cf.markedForDeleteAt = markedForDeleteAt;
cf.columns_ = columns_.cloneMe();
return cf;
@ -220,7 +216,7 @@ public final class ColumnFamily
public boolean isSuper()
{
return DatabaseDescriptor.getColumnType(name_).equals("Super");
return type_.equals("Super");
}
public void addColumn(String name, byte[] value)
@ -329,7 +325,7 @@ public final class ColumnFamily
*/
ColumnFamily diff(ColumnFamily columnFamily)
{
ColumnFamily cfDiff = new ColumnFamily(columnFamily.name());
ColumnFamily cfDiff = new ColumnFamily(columnFamily.name(), columnFamily.type_);
Map<String, IColumn> columns = columnFamily.getColumns();
Set<String> cNames = columns.keySet();
@ -421,6 +417,11 @@ public final class ColumnFamily
return markedForDeleteAt;
}
public String type()
{
return type_;
}
public static class ColumnFamilySerializer implements ICompactSerializer2<ColumnFamily>
{
/*
@ -473,7 +474,7 @@ public final class ColumnFamily
private ColumnFamily defreezeColumnFamily(DataInputStream dis) throws IOException
{
String name = dis.readUTF();
ColumnFamily cf = new ColumnFamily(name);
ColumnFamily cf = new ColumnFamily(name, DatabaseDescriptor.getColumnFamilyType(name));
cf.delete(dis.readLong());
return cf;
}

View File

@ -70,8 +70,9 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
private static int compactionMemoryThreshold_ = 1 << 30;
private static Logger logger_ = Logger.getLogger(ColumnFamilyStore.class);
private String table_;
public String columnFamily_;
private final String table_;
public final String columnFamily_;
private final boolean isSuper_;
private volatile Integer memtableSwitchCount = 0;
@ -91,10 +92,11 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
/* Flag indicates if a compaction is in process */
private AtomicBoolean isCompacting_ = new AtomicBoolean(false);
ColumnFamilyStore(String table, String columnFamily, int indexValue) throws IOException
ColumnFamilyStore(String table, String columnFamily, boolean isSuper, int indexValue) throws IOException
{
table_ = table;
columnFamily_ = columnFamily;
isSuper_ = isSuper;
fileIndexGenerator_.set(indexValue);
memtable_ = new AtomicReference<Memtable>(new Memtable(table_, columnFamily_));
binaryMemtable_ = new AtomicReference<BinaryMemtable>(new BinaryMemtable(table_, columnFamily_));
@ -130,7 +132,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
Collections.sort(indices);
int value = (indices.size() > 0) ? (indices.get(indices.size() - 1)) : 0;
ColumnFamilyStore cfs = new ColumnFamilyStore(table, columnFamily, value);
ColumnFamilyStore cfs = new ColumnFamilyStore(table, columnFamily, "Super".equals(DatabaseDescriptor.getColumnType(columnFamily)), value);
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
try
@ -579,8 +581,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
return null;
// start from nothing so that we don't include potential deleted columns from the first instance
String cfname = columnFamilies.get(0).name();
ColumnFamily cf = new ColumnFamily(cfname);
ColumnFamily cf0 = columnFamilies.get(0);
ColumnFamily cf = new ColumnFamily(cf0.name(), cf0.type());
// merge
for (ColumnFamily cf2 : columnFamilies)
@ -1383,7 +1385,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
public boolean isSuper()
{
return DatabaseDescriptor.getColumnType(getColumnFamilyName()).equals("Super");
return isSuper_;
}
public void flushMemtableOnRecovery() throws IOException

View File

@ -49,8 +49,7 @@ public class CountFilter implements IFilter
if ( columnFamily == null )
return columnFamily;
String cfName = columnFamily.name();
ColumnFamily filteredCf = new ColumnFamily(cfName);
ColumnFamily filteredCf = new ColumnFamily(columnFamily.name(), columnFamily.type());
if( countLimit_ <= 0 )
{
isDone_ = true;

View File

@ -130,7 +130,7 @@ public class DBManager
String key = FBUtilities.getHostName();
row = new Row(key);
ColumnFamily cf = new ColumnFamily(SystemTable.cfName_);
ColumnFamily cf = new ColumnFamily(SystemTable.cfName_, "Standard");
cf.addColumn(new Column(SystemTable.token_, token.toByteArray()));
cf.addColumn(new Column(SystemTable.generation_, BasicUtilities.intToByteArray(generation)));
row.addColumnFamily(cf);

View File

@ -25,13 +25,13 @@ public class IdentityFilter implements IFilter
if( columnFamily == null )
return columnFamily;
String cfName = columnFamily.name();
if ( values.length == 2 && !DatabaseDescriptor.getColumnType(cfName).equals("Super") )
if (values.length == 2 && !columnFamily.isSuper())
{
Collection<IColumn> columns = columnFamily.getAllColumns();
if(columns.size() >= 1)
isDone_ = true;
}
if ( values.length == 3 && DatabaseDescriptor.getColumnType(cfName).equals("Super"))
if (values.length == 3 && columnFamily.isSuper())
{
Collection<IColumn> columns = columnFamily.getAllColumns();
for(IColumn column : columns)

View File

@ -314,7 +314,7 @@ public class Memtable implements Comparable<Memtable>
IColumn column = cFamily.getColumn(values[1]); // super or normal column
if (column != null )
{
columnFamily = new ColumnFamily(cfName_);
columnFamily = new ColumnFamily(cfName_, cFamily.type());
columnFamily.addColumn(column);
}
}
@ -327,7 +327,7 @@ public class Memtable implements Comparable<Memtable>
IColumn subColumn = superColumn.getSubColumn(values[2]);
if (subColumn != null)
{
columnFamily = new ColumnFamily(cfName_);
columnFamily = new ColumnFamily(cfName_, cFamily.type());
columnFamily.addColumn(values[1] + ":" + values[2], subColumn.value(), subColumn.timestamp(), subColumn.isMarkedForDelete());
}
}

View File

@ -46,8 +46,7 @@ public class NamesFilter implements IFilter
return columnFamily;
}
String[] values = RowMutation.getColumnAndColumnFamily(cf);
String cfName = columnFamily.name();
ColumnFamily filteredCf = new ColumnFamily(cfName);
ColumnFamily filteredCf = new ColumnFamily(columnFamily.name(), columnFamily.type());
if( values.length == 1 )
{
Collection<IColumn> columns = columnFamily.getAllColumns();
@ -64,7 +63,7 @@ public class NamesFilter implements IFilter
}
}
}
else if ( values.length == 2 && DatabaseDescriptor.getColumnType(cfName).equals("Super"))
else if (values.length == 2 && columnFamily.isSuper())
{
Collection<IColumn> columns = columnFamily.getAllColumns();
for(IColumn column : columns)

View File

@ -63,7 +63,7 @@ public class RangeFilter implements IFilter
return null;
}
ColumnFamily filteredColumnFamily = new ColumnFamily(cfName);
ColumnFamily filteredColumnFamily = new ColumnFamily(cfName, cf.type());
Collection<IColumn> columns = cf.getAllColumns();
for (IColumn c : columns)

View File

@ -120,7 +120,7 @@ public class Row
ColumnFamily cf = columnFamilies_.get(cfName);
if (cf == null)
{
cf = new ColumnFamily(cfName);
cf = new ColumnFamily(cfName, cf.type());
columnFamilies_.put(cfName, cf);
}
cf.repair(columnFamilies.get(cfName));

View File

@ -185,19 +185,19 @@ public class RowMutation implements Serializable
ColumnFamily columnFamily = modifications_.get(cfName);
if (columnFamily == null)
columnFamily = new ColumnFamily(cfName);
columnFamily = new ColumnFamily(cfName, DatabaseDescriptor.getColumnType(cfName));
if (values.length == 2)
{
if (DatabaseDescriptor.getColumnFamilyType(cfName).equals("Standard"))
{
columnFamily.addColumn(values[1], ArrayUtils.EMPTY_BYTE_ARRAY, timestamp, true);
}
else
if (columnFamily.isSuper())
{
SuperColumn sc = new SuperColumn(values[1]);
sc.markForDeleteAt(timestamp);
columnFamily.addColumn(sc);
}
else
{
columnFamily.addColumn(values[1], ArrayUtils.EMPTY_BYTE_ARRAY, timestamp, true);
}
}
else if (values.length == 3)
{

View File

@ -51,9 +51,8 @@ class TimeFilter implements IFilter
return columnFamily;
String[] values = RowMutation.getColumnAndColumnFamily(cf);
String cfName = columnFamily.name();
ColumnFamily filteredCf = new ColumnFamily(cfName);
if( values.length == 1 && !DatabaseDescriptor.getColumnType(cfName).equals("Super"))
ColumnFamily filteredCf = new ColumnFamily(columnFamily.name(), columnFamily.type());
if (values.length == 1 && !columnFamily.isSuper())
{
Collection<IColumn> columns = columnFamily.getAllColumns();
int i =0;
@ -74,7 +73,7 @@ class TimeFilter implements IFilter
isDone_ = true;
}
}
else if ( values.length == 2 && DatabaseDescriptor.getColumnType(cfName).equals("Super") )
else if (values.length == 2 && columnFamily.isSuper())
{
/*
* TODO : For super columns we need to re-visit this issue.

View File

@ -35,9 +35,8 @@ public class ColumnFamilyFormatter extends HTMLFormatter
// first print the column family specific data
sb.append("ColumnFamily = " + cf.name() + "<br>");
String columnFamilyType = DatabaseDescriptor.getColumnType(cf.name());
Collection<IColumn> cols = cf.getAllColumns();
if("Super".equals(columnFamilyType))
if (cf.isSuper())
{
printSuperColumns(sb, cols);
}