mirror of https://github.com/apache/cassandra
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:
parent
1e15ccf5c9
commit
20dfd0682b
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue