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 2009/07/16 00:04:45 UTC
svn commit: r794429 [4/5] - in /incubator/cassandra/trunk: ./ interface/
interface/gen-java/org/apache/cassandra/service/
src/java/org/apache/cassandra/cli/ src/java/org/apache/cassandra/config/
src/java/org/apache/cassandra/cql/common/ src/java/org/ap...
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java Wed Jul 15 22:04:43 2009
@@ -38,6 +38,7 @@
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.io.ICompactSerializer;
+import org.apache.cassandra.db.filter.QueryPath;
/**
* Author : Avinash Lakshman ( alakshman@facebook.com) & Prashant Malik ( pmalik@facebook.com )
@@ -109,8 +110,6 @@
return new ColumnFamily(cfName, columnType, comparator);
}
- private transient AbstractColumnFactory columnFactory_;
-
private String name_;
private transient ICompactSerializer<IColumn> columnSerializer_;
@@ -123,8 +122,7 @@
{
name_ = cfName;
type_ = columnType;
- columnFactory_ = AbstractColumnFactory.getColumnFactory(columnType);
- columnSerializer_ = columnFactory_.createColumnSerializer();
+ columnSerializer_ = columnType.equals("Standard") ? Column.serializer() : SuperColumn.serializer();
if(columns_ == null)
columns_ = new EfficientBidiMap(comparator);
}
@@ -171,11 +169,6 @@
return columnSerializer_;
}
- public void addColumn(String name)
- {
- addColumn(columnFactory_.createColumn(name));
- }
-
int getColumnCount()
{
int count = 0;
@@ -203,19 +196,25 @@
return type_.equals("Super");
}
- public void addColumn(String name, byte[] value)
- {
- addColumn(name, value, 0);
- }
-
- public void addColumn(String name, byte[] value, long timestamp)
+ public void addColumn(QueryPath path, byte[] value, long timestamp)
{
- addColumn(name, value, timestamp, false);
+ addColumn(path, value, timestamp, false);
}
- public void addColumn(String name, byte[] value, long timestamp, boolean deleted)
+ /** In most places the CF must be part of a QueryPath but here it is ignored. */
+ public void addColumn(QueryPath path, byte[] value, long timestamp, boolean deleted)
{
- IColumn column = columnFactory_.createColumn(name, value, timestamp, deleted);
+ assert path.columnName != null : path;
+ IColumn column;
+ if (path.superColumnName == null)
+ {
+ column = new Column(path.columnName, value, timestamp, deleted);
+ }
+ else
+ {
+ column = new SuperColumn(path.superColumnName);
+ column.addColumn(new Column(path.columnName, value, timestamp, deleted));
+ }
addColumn(column);
}
@@ -296,10 +295,6 @@
return markedForDeleteAt > Long.MIN_VALUE;
}
- public String getTable() {
- return table_;
- }
-
/*
* This function will calculate the difference between 2 column families.
* The external input is assumed to be a superset of internal.
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Wed Jul 15 22:04:43 2009
@@ -39,9 +39,7 @@
import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.*;
import org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor;
-import org.apache.cassandra.db.filter.QueryFilter;
-import org.apache.cassandra.db.filter.ColumnIterator;
-import org.apache.cassandra.db.filter.NamesQueryFilter;
+import org.apache.cassandra.db.filter.*;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.collections.IteratorUtils;
@@ -1422,7 +1420,17 @@
public double getWriteLatency() {
return writeStats_.mean();
}
-
+
+ public ColumnFamily getColumnFamily(String key, QueryPath path, String start, String finish, boolean isAscending, int offset, int limit) throws IOException
+ {
+ return getColumnFamily(new SliceQueryFilter(key, path, start, finish, isAscending, offset, limit));
+ }
+
+ public ColumnFamily getColumnFamily(String key, QueryPath columnParent, long since) throws IOException
+ {
+ return getColumnFamily(new TimeQueryFilter(key, columnParent, since));
+ }
+
/**
* get a list of columns starting from a given column, in a specified order.
* only the latest version of a column is returned.
@@ -1430,12 +1438,10 @@
*/
public ColumnFamily getColumnFamily(QueryFilter filter) throws IOException
{
- String[] values = RowMutation.getColumnAndColumnFamily(filter.columnFamilyColumn);
-
// if we are querying subcolumns of a supercolumn, fetch the supercolumn with NQF, then filter in-memory.
- if (values.length > 1)
+ if (filter.path.superColumnName != null)
{
- QueryFilter nameFilter = new NamesQueryFilter(filter.key, values[0], values[1]);
+ QueryFilter nameFilter = new NamesQueryFilter(filter.key, new QueryPath(filter.path.columnFamilyName), filter.path.superColumnName);
ColumnFamily cf = getColumnFamily(nameFilter);
if (cf != null)
{
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnsSinceReadCommand.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnsSinceReadCommand.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnsSinceReadCommand.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnsSinceReadCommand.java Wed Jul 15 22:04:43 2009
@@ -21,28 +21,38 @@
import java.io.DataOutputStream;
import java.io.IOException;
+import org.apache.cassandra.service.ColumnParent;
+import org.apache.cassandra.db.filter.QueryPath;
+import org.apache.cassandra.db.filter.QueryFilter;
+import org.apache.cassandra.db.filter.TimeQueryFilter;
+
public class ColumnsSinceReadCommand extends ReadCommand
{
- public final String columnFamily;
+ public final QueryPath columnParent;
public final long sinceTimestamp;
- public ColumnsSinceReadCommand(String table, String key, String columnFamily, long sinceTimestamp)
+ public ColumnsSinceReadCommand(String table, String key, ColumnParent column_parent, long sinceTimestamp)
+ {
+ this(table, key, new QueryPath(column_parent), sinceTimestamp);
+ }
+
+ public ColumnsSinceReadCommand(String table, String key, QueryPath columnParent, long sinceTimestamp)
{
super(table, key, CMD_TYPE_GET_COLUMNS_SINCE);
- this.columnFamily = columnFamily;
+ this.columnParent = columnParent;
this.sinceTimestamp = sinceTimestamp;
}
@Override
public String getColumnFamilyName()
{
- return RowMutation.getColumnAndColumnFamily(columnFamily)[0];
+ return columnParent.columnFamilyName;
}
@Override
public ReadCommand copy()
{
- ReadCommand readCommand= new ColumnsSinceReadCommand(table, key, columnFamily, sinceTimestamp);
+ ReadCommand readCommand = new ColumnsSinceReadCommand(table, key, columnParent, sinceTimestamp);
readCommand.setDigestQuery(isDigestQuery());
return readCommand;
}
@@ -50,7 +60,7 @@
@Override
public Row getRow(Table table) throws IOException
{
- return table.getRow(key, columnFamily, sinceTimestamp);
+ return table.getRow(new TimeQueryFilter(key, columnParent, sinceTimestamp));
}
@Override
@@ -59,11 +69,10 @@
return "ColumnsSinceReadCommand(" +
"table='" + table + '\'' +
", key='" + key + '\'' +
- ", columnFamily='" + columnFamily + '\'' +
+ ", columnParent='" + columnParent + '\'' +
", sinceTimestamp='" + sinceTimestamp + '\'' +
')';
}
-
}
class ColumnsSinceReadCommandSerializer extends ReadCommandSerializer
@@ -75,7 +84,7 @@
dos.writeBoolean(realRM.isDigestQuery());
dos.writeUTF(realRM.table);
dos.writeUTF(realRM.key);
- dos.writeUTF(realRM.columnFamily);
+ realRM.columnParent.serialize(dos);
dos.writeLong(realRM.sinceTimestamp);
}
@@ -85,10 +94,10 @@
boolean isDigest = dis.readBoolean();
String table = dis.readUTF();
String key = dis.readUTF();
- String columnFamily = dis.readUTF();
+ QueryPath columnParent = QueryPath.deserialize(dis);
long sinceTimestamp = dis.readLong();
- ColumnsSinceReadCommand rm = new ColumnsSinceReadCommand(table, key, columnFamily, sinceTimestamp);
+ ColumnsSinceReadCommand rm = new ColumnsSinceReadCommand(table, key, columnParent, sinceTimestamp);
rm.setDigestQuery(isDigest);
return rm;
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java Wed Jul 15 22:04:43 2009
@@ -38,6 +38,7 @@
import org.apache.cassandra.net.MessagingService;
import org.apache.cassandra.service.*;
import org.apache.cassandra.db.filter.IdentityQueryFilter;
+import org.apache.cassandra.db.filter.QueryPath;
/**
@@ -103,7 +104,7 @@
private static void deleteEndPoint(String endpointAddress, String tableName, String key, long timestamp) throws IOException
{
RowMutation rm = new RowMutation(Table.SYSTEM_TABLE, tableName);
- rm.delete(HINTS_CF + ":" + key + ":" + endpointAddress, timestamp);
+ rm.delete(new QueryPath(HINTS_CF, key, endpointAddress), timestamp);
rm.apply();
}
@@ -140,7 +141,7 @@
maxTS = Math.max(maxTS, subCol.timestamp());
}
}
- rm.delete(cf.name(), maxTS);
+ rm.delete(new QueryPath(cf.name()), maxTS);
}
rm.apply();
}
@@ -160,7 +161,7 @@
// 7. I guess we are done
for (String tableName : DatabaseDescriptor.getTables())
{
- ColumnFamily hintColumnFamily = ColumnFamilyStore.removeDeleted(hintStore.getColumnFamily(new IdentityQueryFilter(tableName, HINTS_CF)), Integer.MAX_VALUE);
+ ColumnFamily hintColumnFamily = ColumnFamilyStore.removeDeleted(hintStore.getColumnFamily(new IdentityQueryFilter(tableName, new QueryPath(HINTS_CF))), Integer.MAX_VALUE);
if (hintColumnFamily == null)
{
continue;
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ReadCommand.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ReadCommand.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ReadCommand.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ReadCommand.java Wed Jul 15 22:04:43 2009
@@ -33,10 +33,9 @@
public abstract class ReadCommand
{
public static final String DO_REPAIR = "READ-REPAIR";
- public static final byte CMD_TYPE_GET_COLUMN=1;
- public static final byte CMD_TYPE_GET_SLICE_BY_NAMES=2;
- public static final byte CMD_TYPE_GET_COLUMNS_SINCE=3;
- public static final byte CMD_TYPE_GET_SLICE =4;
+ public static final byte CMD_TYPE_GET_SLICE_BY_NAMES = 1;
+ public static final byte CMD_TYPE_GET_COLUMNS_SINCE = 2;
+ public static final byte CMD_TYPE_GET_SLICE = 3;
public static final String EMPTY_CF = "";
@@ -89,7 +88,6 @@
private static final Map<Byte, ReadCommandSerializer> CMD_SERIALIZER_MAP = new HashMap<Byte, ReadCommandSerializer>();
static
{
- CMD_SERIALIZER_MAP.put(ReadCommand.CMD_TYPE_GET_COLUMN, new ColumnReadCommandSerializer());
CMD_SERIALIZER_MAP.put(ReadCommand.CMD_TYPE_GET_SLICE_BY_NAMES, new SliceByNamesReadCommandSerializer());
CMD_SERIALIZER_MAP.put(ReadCommand.CMD_TYPE_GET_COLUMNS_SINCE, new ColumnsSinceReadCommandSerializer());
CMD_SERIALIZER_MAP.put(ReadCommand.CMD_TYPE_GET_SLICE, new SliceFromReadCommandSerializer());
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/RowMutation.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/RowMutation.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/RowMutation.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/RowMutation.java Wed Jul 15 22:04:43 2009
@@ -38,11 +38,10 @@
import org.apache.cassandra.net.EndPoint;
import org.apache.cassandra.net.Message;
import org.apache.cassandra.service.StorageService;
-import org.apache.cassandra.service.batch_mutation_super_t;
-import org.apache.cassandra.service.batch_mutation_t;
-import org.apache.cassandra.service.column_t;
-import org.apache.cassandra.service.superColumn_t;
+import org.apache.cassandra.service.BatchMutationSuper;
+import org.apache.cassandra.service.BatchMutation;
import org.apache.cassandra.utils.FBUtilities;
+import org.apache.cassandra.db.filter.QueryPath;
/**
@@ -120,8 +119,8 @@
void addHints(String hint) throws IOException
{
- String cfName = HintedHandOffManager.HINTS_CF + ":" + hint;
- add(cfName, ArrayUtils.EMPTY_BYTE_ARRAY, System.currentTimeMillis());
+ QueryPath path = new QueryPath(HintedHandOffManager.HINTS_CF, null, hint);
+ add(path, ArrayUtils.EMPTY_BYTE_ARRAY, System.currentTimeMillis());
}
/*
@@ -151,76 +150,50 @@
* param @ value - value associated with the column
* param @ timestamp - timestamp associated with this data.
*/
- public void add(String cf, byte[] value, long timestamp)
+ public void add(QueryPath path, byte[] value, long timestamp)
{
- String[] values = RowMutation.getColumnAndColumnFamily(cf);
-
- if ( values.length == 0 || values.length == 1 || values.length > 3 )
- throw new IllegalArgumentException("Column Family " + cf + " in invalid format. Must be in <column family>:<column> format.");
-
- ColumnFamily columnFamily = modifications_.get(values[0]);
- if( values.length == 2 )
+ ColumnFamily columnFamily = modifications_.get(path.columnFamilyName);
+ if (columnFamily == null)
{
- if ( columnFamily == null )
- {
- columnFamily = ColumnFamily.create(table_, values[0]);
- }
- columnFamily.addColumn(values[1], value, timestamp);
+ columnFamily = ColumnFamily.create(table_, path.columnFamilyName);
}
- if( values.length == 3 )
- {
- if ( columnFamily == null )
- {
- columnFamily = ColumnFamily.create(table_, values[0]);
- }
- columnFamily.addColumn(values[1]+ ":" + values[2], value, timestamp);
- }
- modifications_.put(values[0], columnFamily);
+ columnFamily.addColumn(path, value, timestamp);
+ modifications_.put(path.columnFamilyName, columnFamily);
}
- public void delete(String columnFamilyColumn, long timestamp)
+ public void delete(QueryPath path, long timestamp)
{
- String[] values = RowMutation.getColumnAndColumnFamily(columnFamilyColumn);
- String cfName = values[0];
+ assert path.columnFamilyName != null;
+ String cfName = path.columnFamilyName;
if (modifications_.containsKey(cfName))
{
throw new IllegalArgumentException("ColumnFamily " + cfName + " is already being modified");
}
- if (values.length == 0 || values.length > 3)
- throw new IllegalArgumentException("Column Family " + columnFamilyColumn + " in invalid format. Must be in <column family>:<column> format.");
int localDeleteTime = (int) (System.currentTimeMillis() / 1000);
ColumnFamily columnFamily = modifications_.get(cfName);
if (columnFamily == null)
columnFamily = ColumnFamily.create(table_, cfName);
- if (values.length == 2)
+
+ if (path.superColumnName == null && path.columnName == null)
{
- if (columnFamily.isSuper())
- {
- SuperColumn sc = new SuperColumn(values[1]);
- sc.markForDeleteAt(localDeleteTime, timestamp);
- columnFamily.addColumn(sc);
- }
- else
- {
- ByteBuffer bytes = ByteBuffer.allocate(4);
- bytes.putInt(localDeleteTime);
- columnFamily.addColumn(values[1], bytes.array(), timestamp, true);
- }
+ columnFamily.delete(localDeleteTime, timestamp);
}
- else if (values.length == 3)
+ else if (path.columnName == null)
{
- ByteBuffer bytes = ByteBuffer.allocate(4);
- bytes.putInt(localDeleteTime);
- columnFamily.addColumn(values[1] + ":" + values[2], bytes.array(), timestamp, true);
+ SuperColumn sc = new SuperColumn(path.superColumnName);
+ sc.markForDeleteAt(localDeleteTime, timestamp);
+ columnFamily.addColumn(sc);
}
else
{
- assert values.length == 1;
- columnFamily.delete(localDeleteTime, timestamp);
+ ByteBuffer bytes = ByteBuffer.allocate(4);
+ bytes.putInt(localDeleteTime);
+ columnFamily.addColumn(path, bytes.array(), timestamp, true);
}
+
modifications_.put(cfName, columnFamily);
}
@@ -281,46 +254,30 @@
return new Message(from, StorageService.mutationStage_, verbHandlerName, bos.toByteArray());
}
- public static RowMutation getRowMutation(batch_mutation_t batchMutation)
+ public static RowMutation getRowMutation(String table, BatchMutation batchMutation)
{
- RowMutation rm = new RowMutation(batchMutation.table,
- batchMutation.key.trim());
+ RowMutation rm = new RowMutation(table, batchMutation.key.trim());
for (String cfname : batchMutation.cfmap.keySet())
{
- List<column_t> list = batchMutation.cfmap.get(cfname);
- for (column_t columnData : list)
+ List<org.apache.cassandra.service.Column> list = batchMutation.cfmap.get(cfname);
+ for (org.apache.cassandra.service.Column columnData : list)
{
- rm.add(cfname + ":" + columnData.columnName,
- columnData.value, columnData.timestamp);
-
+ rm.add(new QueryPath(cfname, null, columnData.column_name), columnData.value, columnData.timestamp);
}
}
return rm;
}
- public static RowMutation getRowMutation(batch_mutation_super_t batchMutationSuper)
+ public static RowMutation getRowMutation(String table, BatchMutationSuper batchMutationSuper)
{
- RowMutation rm = new RowMutation(batchMutationSuper.table,
- batchMutationSuper.key.trim());
- Set keys = batchMutationSuper.cfmap.keySet();
- Iterator keyIter = keys.iterator();
- while (keyIter.hasNext())
- {
- Object key = keyIter.next(); // Get the next key.
- List<superColumn_t> list = batchMutationSuper.cfmap.get(key);
- for (superColumn_t superColumnData : list)
+ RowMutation rm = new RowMutation(table, batchMutationSuper.key.trim());
+ for (String cfName : batchMutationSuper.cfmap.keySet())
+ {
+ for (org.apache.cassandra.service.SuperColumn super_column : batchMutationSuper.cfmap.get(cfName))
{
- if (superColumnData.columns.size() != 0)
- {
- for (column_t columnData : superColumnData.columns)
- {
- rm.add(key.toString() + ":" + superColumnData.name + ":" + columnData.columnName,
- columnData.value, columnData.timestamp);
- }
- }
- else
+ for (org.apache.cassandra.service.Column column : super_column.columns)
{
- rm.add(key.toString() + ":" + superColumnData.name, ArrayUtils.EMPTY_BYTE_ARRAY, 0);
+ rm.add(new QueryPath(cfName, super_column.name, column.column_name), column.value, column.timestamp);
}
}
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SliceByNamesReadCommand.java Wed Jul 15 22:04:43 2009
@@ -24,28 +24,37 @@
import org.apache.commons.lang.StringUtils;
+import org.apache.cassandra.service.ColumnParent;
+import org.apache.cassandra.db.filter.QueryPath;
+import org.apache.cassandra.db.filter.NamesQueryFilter;
+
public class SliceByNamesReadCommand extends ReadCommand
{
- public final String columnFamily;
+ public final QueryPath columnParent;
public final SortedSet<String> columnNames;
- public SliceByNamesReadCommand(String table, String key, String columnFamily, Collection<String> columnNames)
+ public SliceByNamesReadCommand(String table, String key, ColumnParent column_parent, Collection<String> columnNames)
+ {
+ this(table, key, new QueryPath(column_parent), columnNames);
+ }
+
+ public SliceByNamesReadCommand(String table, String key, QueryPath path, Collection<String> columnNames)
{
super(table, key, CMD_TYPE_GET_SLICE_BY_NAMES);
- this.columnFamily = columnFamily;
+ this.columnParent = path;
this.columnNames = new TreeSet<String>(columnNames);
}
@Override
public String getColumnFamilyName()
{
- return RowMutation.getColumnAndColumnFamily(columnFamily)[0];
+ return columnParent.columnFamilyName;
}
@Override
public ReadCommand copy()
{
- ReadCommand readCommand= new SliceByNamesReadCommand(table, key, columnFamily, columnNames);
+ ReadCommand readCommand= new SliceByNamesReadCommand(table, key, columnParent, columnNames);
readCommand.setDigestQuery(isDigestQuery());
return readCommand;
}
@@ -53,7 +62,7 @@
@Override
public Row getRow(Table table) throws IOException
{
- return table.getRow(key, columnFamily, columnNames);
+ return table.getRow(new NamesQueryFilter(key, columnParent, columnNames));
}
@Override
@@ -62,7 +71,7 @@
return "SliceByNamesReadCommand(" +
"table='" + table + '\'' +
", key='" + key + '\'' +
- ", columnFamily='" + columnFamily + '\'' +
+ ", columnParent='" + columnParent + '\'' +
", columns=[" + StringUtils.join(columnNames, ", ") + "]" +
')';
}
@@ -78,7 +87,7 @@
dos.writeBoolean(realRM.isDigestQuery());
dos.writeUTF(realRM.table);
dos.writeUTF(realRM.key);
- dos.writeUTF(realRM.columnFamily);
+ realRM.columnParent.serialize(dos);
dos.writeInt(realRM.columnNames.size());
if (realRM.columnNames.size() > 0)
{
@@ -96,7 +105,7 @@
boolean isDigest = dis.readBoolean();
String table = dis.readUTF();
String key = dis.readUTF();
- String columnFamily = dis.readUTF();
+ QueryPath columnParent = QueryPath.deserialize(dis);
int size = dis.readInt();
List<String> columns = new ArrayList<String>();
@@ -106,7 +115,7 @@
dis.readFully(bytes);
columns.add(new String(bytes));
}
- SliceByNamesReadCommand rm = new SliceByNamesReadCommand(table, key, columnFamily, columns);
+ SliceByNamesReadCommand rm = new SliceByNamesReadCommand(table, key, columnParent, columns);
rm.setDigestQuery(isDigest);
return rm;
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SliceFromReadCommand.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SliceFromReadCommand.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SliceFromReadCommand.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SliceFromReadCommand.java Wed Jul 15 22:04:43 2009
@@ -21,18 +21,27 @@
import java.io.DataOutputStream;
import java.io.IOException;
+import org.apache.cassandra.db.filter.QueryPath;
+import org.apache.cassandra.db.filter.SliceQueryFilter;
+import org.apache.cassandra.service.ColumnParent;
+
public class SliceFromReadCommand extends ReadCommand
{
- public final String columnFamilyColumn;
+ public final QueryPath column_parent;
public final String start, finish;
public final boolean isAscending;
public final int offset;
public final int count;
- public SliceFromReadCommand(String table, String key, String columnFamilyColumn, String start, String finish, boolean isAscending, int offset, int count)
+ public SliceFromReadCommand(String table, String key, ColumnParent column_parent, String start, String finish, boolean isAscending, int offset, int count)
+ {
+ this(table, key, new QueryPath(column_parent), start, finish, isAscending, offset, count);
+ }
+
+ public SliceFromReadCommand(String table, String key, QueryPath columnParent, String start, String finish, boolean isAscending, int offset, int count)
{
super(table, key, CMD_TYPE_GET_SLICE);
- this.columnFamilyColumn = columnFamilyColumn;
+ this.column_parent = columnParent;
this.start = start;
this.finish = finish;
this.isAscending = isAscending;
@@ -43,13 +52,13 @@
@Override
public String getColumnFamilyName()
{
- return RowMutation.getColumnAndColumnFamily(columnFamilyColumn)[0];
+ return column_parent.columnFamilyName;
}
@Override
public ReadCommand copy()
{
- ReadCommand readCommand = new SliceFromReadCommand(table, key, columnFamilyColumn, start, finish, isAscending, offset, count);
+ ReadCommand readCommand = new SliceFromReadCommand(table, key, column_parent, start, finish, isAscending, offset, count);
readCommand.setDigestQuery(isDigestQuery());
return readCommand;
}
@@ -57,7 +66,7 @@
@Override
public Row getRow(Table table) throws IOException
{
- return table.getRow(key, columnFamilyColumn, start, finish, isAscending, offset, count);
+ return table.getRow(new SliceQueryFilter(key, column_parent, start, finish, isAscending, offset, count));
}
@Override
@@ -66,7 +75,7 @@
return "SliceFromReadCommand(" +
"table='" + table + '\'' +
", key='" + key + '\'' +
- ", columnFamily='" + columnFamilyColumn + '\'' +
+ ", column_parent='" + column_parent + '\'' +
", start='" + start + '\'' +
", finish='" + finish + '\'' +
", isAscending=" + isAscending +
@@ -85,7 +94,7 @@
dos.writeBoolean(realRM.isDigestQuery());
dos.writeUTF(realRM.table);
dos.writeUTF(realRM.key);
- dos.writeUTF(realRM.columnFamilyColumn);
+ realRM.column_parent.serialize(dos);
dos.writeUTF(realRM.start);
dos.writeUTF(realRM.finish);
dos.writeBoolean(realRM.isAscending);
@@ -97,7 +106,7 @@
public ReadCommand deserialize(DataInputStream dis) throws IOException
{
boolean isDigest = dis.readBoolean();
- SliceFromReadCommand rm = new SliceFromReadCommand(dis.readUTF(), dis.readUTF(), dis.readUTF(), dis.readUTF(), dis.readUTF(), dis.readBoolean(), dis.readInt(), dis.readInt());
+ SliceFromReadCommand rm = new SliceFromReadCommand(dis.readUTF(), dis.readUTF(), QueryPath.deserialize(dis), dis.readUTF(), dis.readUTF(), dis.readBoolean(), dis.readInt(), dis.readInt());
rm.setDigestQuery(isDigest);
return rm;
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/SystemTable.java Wed Jul 15 22:04:43 2009
@@ -28,6 +28,7 @@
import org.apache.cassandra.utils.BasicUtilities;
import org.apache.cassandra.db.filter.IdentityQueryFilter;
import org.apache.cassandra.db.filter.NamesQueryFilter;
+import org.apache.cassandra.db.filter.QueryPath;
/**
* Author : Avinash Lakshman ( alakshman@facebook.com) & Prashant Malik ( pmalik@facebook.com )
@@ -49,7 +50,7 @@
IPartitioner p = StorageService.getPartitioner();
Table table = Table.open(Table.SYSTEM_TABLE);
/* Retrieve the "LocationInfo" column family */
- ColumnFamily cf = table.getColumnFamilyStore(LOCATION_CF).getColumnFamily(new NamesQueryFilter(LOCATION_KEY, LOCATION_KEY, TOKEN));
+ ColumnFamily cf = table.getColumnFamilyStore(LOCATION_CF).getColumnFamily(new NamesQueryFilter(LOCATION_KEY, new QueryPath(LOCATION_KEY), TOKEN));
long oldTokenColumnTimestamp = cf.getColumn(SystemTable.TOKEN).timestamp();
/* create the "Token" whose value is the new token. */
IColumn tokenColumn = new Column(SystemTable.TOKEN, p.getTokenFactory().toByteArray(token), oldTokenColumnTimestamp + 1);
@@ -73,7 +74,7 @@
{
/* Read the system table to retrieve the storage ID and the generation */
Table table = Table.open(Table.SYSTEM_TABLE);
- ColumnFamily cf = table.getColumnFamilyStore(LOCATION_CF).getColumnFamily(new NamesQueryFilter(LOCATION_KEY, LOCATION_KEY, GENERATION));
+ ColumnFamily cf = table.getColumnFamilyStore(LOCATION_CF).getColumnFamily(new NamesQueryFilter(LOCATION_KEY, new QueryPath(LOCATION_KEY), GENERATION));
IPartitioner p = StorageService.getPartitioner();
if (cf == null)
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java Wed Jul 15 22:04:43 2009
@@ -523,12 +523,13 @@
String[] values = RowMutation.getColumnAndColumnFamily(cfName);
ColumnFamilyStore cfStore = columnFamilyStores_.get(values[0]);
assert cfStore != null : "Column family " + cfName + " has not been defined";
- return cfStore.getColumnFamily(new IdentityQueryFilter(key, cfName));
+ return cfStore.getColumnFamily(new IdentityQueryFilter(key, new QueryPath(cfName)));
}
/**
* Selects only the specified column family for the specified key.
*/
+ @Deprecated
public Row getRow(String key, String cfName) throws IOException
{
Row row = new Row(table_, key);
@@ -538,40 +539,10 @@
return row;
}
- public Row getRow(String key, String columnFamilyColumn, long sinceTimeStamp) throws IOException
- {
- QueryFilter filter = new TimeQueryFilter(key, columnFamilyColumn, sinceTimeStamp);
- return getRow(key, filter);
- }
-
- /**
- * This method returns the specified columns for the specified
- * column family.
- *
- * param @ key - key for which data is requested.
- * param @ cf - column family we are interested in.
- * param @ columns - columns that are part of the above column family.
- */
- public Row getRow(String key, String columnFamilyColumn, SortedSet<String> columns) throws IOException
- {
- // TODO for large CFs we will want a specialized iterator
- QueryFilter filter = new NamesQueryFilter(key, columnFamilyColumn, columns);
- return getRow(key, filter);
- }
-
- /**
- * Selects a list of columns in a column family from a given column for the specified key.
- */
- public Row getRow(String key, String cfName, String start, String finish, boolean isAscending, int offset, int count) throws IOException
- {
- QueryFilter filter = new SliceQueryFilter(key, cfName, start, finish, isAscending, offset, count);
- return getRow(key, filter);
- }
-
- public Row getRow(String key, QueryFilter filter) throws IOException
+ public Row getRow(QueryFilter filter) throws IOException
{
ColumnFamilyStore cfStore = columnFamilyStores_.get(filter.getColumnFamilyName());
- Row row = new Row(table_, key);
+ Row row = new Row(table_, filter.key);
ColumnFamily columnFamily = cfStore.getColumnFamily(filter);
if (columnFamily != null)
row.addColumnFamily(columnFamily);
@@ -675,7 +646,7 @@
}
}
- private List<String> getKeyRangeUnsafe(final String columnFamily, final String startWith, final String stopAt, int maxResults) throws IOException, ExecutionException, InterruptedException
+ private List<String> getKeyRangeUnsafe(final String cfName, final String startWith, final String stopAt, int maxResults) throws IOException, ExecutionException, InterruptedException
{
// (OPP key decoration is a no-op so using the "decorated" comparator against raw keys is fine)
final Comparator<String> comparator = StorageService.getPartitioner().getDecoratedKeyComparator();
@@ -683,7 +654,7 @@
// create a CollatedIterator that will return unique keys from different sources
// (current memtable, historical memtables, and SSTables) in the correct order.
List<Iterator<String>> iterators = new ArrayList<Iterator<String>>();
- ColumnFamilyStore cfs = getColumnFamilyStore(columnFamily);
+ ColumnFamilyStore cfs = getColumnFamilyStore(cfName);
// we iterate through memtables with a priority queue to avoid more sorting than necessary.
// this predicate throws out the keys before the start of our range.
@@ -699,7 +670,7 @@
// current memtable keys. have to go through the CFS api for locking.
iterators.add(IteratorUtils.filteredIterator(cfs.memtableKeyIterator(), p));
// historical memtables
- for (Memtable memtable : ColumnFamilyStore.getUnflushedMemtables(columnFamily))
+ for (Memtable memtable : ColumnFamilyStore.getUnflushedMemtables(cfName))
{
iterators.add(IteratorUtils.filteredIterator(Memtable.getKeyIterator(memtable.getKeys()), p));
}
@@ -740,7 +711,7 @@
}
// make sure there is actually non-tombstone content associated w/ this key
// TODO record the key source(s) somehow and only check that source (e.g., memtable or sstable)
- if (cfs.getColumnFamily(new SliceQueryFilter(current, columnFamily, "", "", true, 0, 1)) != null)
+ if (cfs.getColumnFamily(new SliceQueryFilter(current, new QueryPath(cfName), "", "", true, 0, 1)) != null)
{
keys.add(current);
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/IdentityQueryFilter.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/IdentityQueryFilter.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/IdentityQueryFilter.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/IdentityQueryFilter.java Wed Jul 15 22:04:43 2009
@@ -7,9 +7,9 @@
/**
* Only for use in testing; will read entire CF into memory.
*/
- public IdentityQueryFilter(String key, String columnFamilyColumn)
+ public IdentityQueryFilter(String key, QueryPath path)
{
- super(key, columnFamilyColumn, "", "", true, 0, Integer.MAX_VALUE);
+ super(key, path, "", "", true, 0, Integer.MAX_VALUE);
}
@Override
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java Wed Jul 15 22:04:43 2009
@@ -17,15 +17,15 @@
{
public final SortedSet<String> columns;
- public NamesQueryFilter(String key, String columnFamilyColumn, SortedSet<String> columns)
+ public NamesQueryFilter(String key, QueryPath columnParent, SortedSet<String> columns)
{
- super(key, columnFamilyColumn);
+ super(key, columnParent);
this.columns = columns;
}
- public NamesQueryFilter(String key, String columnFamilyColumn, String column)
+ public NamesQueryFilter(String key, QueryPath columnParent, String column)
{
- this(key, columnFamilyColumn, new TreeSet<String>(Arrays.asList(column)));
+ this(key, columnParent, new TreeSet<String>(Arrays.asList(column)));
}
public ColumnIterator getMemColumnIterator(Memtable memtable)
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryFilter.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryFilter.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryFilter.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryFilter.java Wed Jul 15 22:04:43 2009
@@ -11,12 +11,12 @@
public abstract class QueryFilter
{
public final String key;
- public final String columnFamilyColumn;
+ public final QueryPath path;
- protected QueryFilter(String key, String columnFamilyColumn)
+ protected QueryFilter(String key, QueryPath path)
{
this.key = key;
- this.columnFamilyColumn = columnFamilyColumn;
+ this.path = path;
}
/**
@@ -86,6 +86,6 @@
public String getColumnFamilyName()
{
- return RowMutation.getColumnAndColumnFamily(columnFamilyColumn)[0];
+ return path.columnFamilyName;
}
}
Added: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryPath.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryPath.java?rev=794429&view=auto
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryPath.java (added)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryPath.java Wed Jul 15 22:04:43 2009
@@ -0,0 +1,86 @@
+package org.apache.cassandra.db.filter;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.DataInputStream;
+
+import org.apache.cassandra.service.ColumnParent;
+import org.apache.cassandra.service.ColumnPath;
+import org.apache.cassandra.service.ColumnPathOrParent;
+
+public class QueryPath
+{
+ public final String columnFamilyName;
+ public final String superColumnName;
+ public final String columnName;
+
+ public QueryPath(String columnFamilyName, String superColumnName, String columnName)
+ {
+ // TODO remove these when we're sure the last vestiges of the old api are gone
+ assert columnFamilyName == null || !columnFamilyName.contains(":");
+ assert superColumnName == null || !superColumnName.contains(":");
+ assert columnName == null || !columnName.contains(":");
+
+ this.columnFamilyName = columnFamilyName;
+ this.superColumnName = superColumnName;
+ this.columnName = columnName;
+ }
+
+ public QueryPath(ColumnParent columnParent)
+ {
+ this(columnParent.column_family, columnParent.super_column, null);
+ }
+
+ public QueryPath(String columnFamilyName, String superColumnName)
+ {
+ this(columnFamilyName, superColumnName, null);
+ }
+
+ public QueryPath(String columnFamilyName)
+ {
+ this(columnFamilyName, null);
+ }
+
+ public QueryPath(ColumnPath column_path)
+ {
+ this(column_path.column_family, column_path.super_column, column_path.column);
+ }
+
+ public QueryPath(ColumnPathOrParent column_path_or_parent)
+ {
+ this(column_path_or_parent.column_family, column_path_or_parent.super_column, column_path_or_parent.column);
+ }
+
+ public static QueryPath column(String columnName)
+ {
+ return new QueryPath(null, null, columnName);
+ }
+
+ @Override
+ public String toString()
+ {
+ return "QueryPath(" +
+ "columnFamilyName='" + columnFamilyName + '\'' +
+ ", superColumnName='" + superColumnName + '\'' +
+ ", columnName='" + columnName + '\'' +
+ ')';
+ }
+
+ public void serialize(DataOutputStream dos) throws IOException
+ {
+ assert !"".equals(columnFamilyName);
+ assert !"".equals(superColumnName);
+ assert !"".equals(columnName);
+ dos.writeUTF(columnFamilyName == null ? "" : columnFamilyName);
+ dos.writeUTF(superColumnName == null ? "" : superColumnName);
+ dos.writeUTF(columnName == null ? "" : columnName);
+ }
+
+ public static QueryPath deserialize(DataInputStream din) throws IOException
+ {
+ String cfName = din.readUTF();
+ String scName = din.readUTF();
+ String cName = din.readUTF();
+ return new QueryPath(cfName.isEmpty() ? null : cfName, scName.isEmpty() ? null : scName, cName.isEmpty() ? null : cName);
+ }
+}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java Wed Jul 15 22:04:43 2009
@@ -15,9 +15,9 @@
public final boolean isAscending;
public final int offset, count;
- public SliceQueryFilter(String key, String columnFamilyColumn, String start, String finish, boolean ascending, int offset, int count)
+ public SliceQueryFilter(String key, QueryPath columnParent, String start, String finish, boolean ascending, int offset, int count)
{
- super(key, columnFamilyColumn);
+ super(key, columnParent);
this.start = start;
this.finish = finish;
isAscending = ascending;
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/TimeQueryFilter.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/TimeQueryFilter.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/TimeQueryFilter.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/filter/TimeQueryFilter.java Wed Jul 15 22:04:43 2009
@@ -11,9 +11,9 @@
{
public final long since;
- public TimeQueryFilter(String key, String columnFamilyColumn, long since)
+ public TimeQueryFilter(String key, QueryPath columnParent, long since)
{
- super(key, columnFamilyColumn);
+ super(key, columnParent);
this.since = since;
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraServer.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraServer.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraServer.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraServer.java Wed Jul 15 22:04:43 2009
@@ -31,6 +31,7 @@
import org.apache.cassandra.cql.common.CqlResult;
import org.apache.cassandra.cql.driver.CqlDriver;
import org.apache.cassandra.db.*;
+import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.utils.LogUtil;
import org.apache.cassandra.dht.OrderPreservingPartitioner;
import org.apache.thrift.TException;
@@ -43,8 +44,8 @@
{
private static Logger logger = Logger.getLogger(CassandraServer.class);
- private final static List<column_t> EMPTY_COLUMNS = Collections.emptyList();
- private final static List<superColumn_t> EMPTY_SUPERCOLUMNS = Collections.emptyList();
+ private final static List<Column> EMPTY_COLUMNS = Collections.emptyList();
+ private final static List<SuperColumn> EMPTY_SUPERCOLUMNS = Collections.emptyList();
/*
* Handle to the storage service to interact with the other machines in the
@@ -95,115 +96,97 @@
return row.getColumnFamily(cfName);
}
- public List<column_t> thriftifyColumns(Collection<IColumn> columns)
+ public List<Column> thriftifyColumns(Collection<IColumn> columns)
{
if (columns == null || columns.isEmpty())
{
return EMPTY_COLUMNS;
}
- ArrayList<column_t> thriftColumns = new ArrayList<column_t>(columns.size());
+ ArrayList<Column> thriftColumns = new ArrayList<Column>(columns.size());
for (IColumn column : columns)
{
if (column.isMarkedForDelete())
{
continue;
}
- column_t thrift_column = new column_t(column.name(), column.value(), column.timestamp());
+ Column thrift_column = new Column(column.name(), column.value(), column.timestamp());
thriftColumns.add(thrift_column);
}
return thriftColumns;
}
- public List<column_t> get_columns_since(String tablename, String key, String columnParent, long timeStamp) throws InvalidRequestException
+ /** for resultsets of standard columns */
+ private List<Column> getSlice(ReadCommand command) throws InvalidRequestException
{
- logger.debug("get_columns_since");
- String[] values = ThriftValidation.validateColumnParent(tablename, columnParent);
-
- ColumnFamily cfamily = readColumnFamily(new ColumnsSinceReadCommand(tablename, key, columnParent, timeStamp));
- if (cfamily == null)
+ ColumnFamily cfamily = readColumnFamily(command);
+ if (cfamily == null || cfamily.getColumns().size() == 0)
{
return EMPTY_COLUMNS;
}
- Collection<IColumn> columns = null;
- if( values.length > 1 )
+ if (cfamily.isSuper())
{
- // this is the super column case
- IColumn column = cfamily.getColumn(values[1]);
- if(column != null)
- columns = column.getSubColumns();
+ IColumn column = cfamily.getColumns().values().iterator().next();
+ return thriftifyColumns(column.getSubColumns());
}
- else
- {
- columns = cfamily.getAllColumns();
- }
- return thriftifyColumns(columns);
- }
-
+ return thriftifyColumns(cfamily.getAllColumns());
+ }
- public List<column_t> get_slice_by_names(String tablename, String key, String columnParent, List<String> columnNames) throws InvalidRequestException
+ public List<Column> get_columns_since(String table, String key, ColumnParent column_parent, long timeStamp)
+ throws InvalidRequestException, NotFoundException
{
- logger.debug("get_slice_by_names");
- String[] values = ThriftValidation.validateColumnParent(tablename, columnParent);
+ logger.debug("get_columns_since");
+ ThriftValidation.validateColumnParent(table, column_parent);
+ return getSlice(new ColumnsSinceReadCommand(table, key, column_parent, timeStamp));
+ }
- ColumnFamily cfamily = readColumnFamily(new SliceByNamesReadCommand(tablename, key, columnParent, columnNames));
- if (cfamily == null)
- {
- return EMPTY_COLUMNS;
- }
- if (DatabaseDescriptor.getColumnFamilyType(tablename, values[0]).equals("Standard"))
- {
- return thriftifyColumns(cfamily.getAllColumns());
- }
- else
- {
- IColumn superColumn = cfamily.getColumn(values[1]);
- if (superColumn == null)
- {
- return EMPTY_COLUMNS;
- }
- return thriftifyColumns(superColumn.getSubColumns());
- }
+
+ public List<Column> get_slice_by_names(String table, String key, ColumnParent column_parent, List<String> column_names)
+ throws InvalidRequestException, NotFoundException
+ {
+ logger.debug("get_slice_by_names");
+ ThriftValidation.validateColumnParent(table, column_parent);
+ return getSlice(new SliceByNamesReadCommand(table, key, column_parent, column_names));
}
- public List<column_t> get_slice(String tablename, String key, String columnParent, String start, String finish, boolean isAscending, int offset, int count) throws InvalidRequestException, NotFoundException, TException
+ public List<Column> get_slice(String table, String key, ColumnParent column_parent, String start, String finish, boolean is_ascending, int offset, int count)
+ throws InvalidRequestException, NotFoundException
{
logger.debug("get_slice_from");
- String[] values = RowMutation.getColumnAndColumnFamily(columnParent);
- if (values.length != 1 || !DatabaseDescriptor.getColumnFamilyType(tablename, values[0]).equals("Standard"))
- throw new InvalidRequestException("get_slice_from requires a standard CF name and a starting column name");
+ ThriftValidation.validateColumnParent(table, column_parent);
+ // TODO support get_slice on super CFs
+ if (column_parent.super_column != null || !DatabaseDescriptor.getColumnFamilyType(table, column_parent.column_family).equals("Standard"))
+ throw new InvalidRequestException("get_slice does not yet support super columns (we need to fix this)");
if (count <= 0)
- throw new InvalidRequestException("get_slice_from requires positive count");
- if ("Name".compareTo(DatabaseDescriptor.getCFMetaData(tablename, values[0]).indexProperty_) != 0)
- throw new InvalidRequestException("get_slice_from requires CF indexed by name");
+ throw new InvalidRequestException("get_slice requires positive count");
+ if (!"Name".equals(DatabaseDescriptor.getCFMetaData(table, column_parent.column_family).indexProperty_))
+ throw new InvalidRequestException("get_slice requires CF indexed by name");
- ColumnFamily cfamily = readColumnFamily(new SliceFromReadCommand(tablename, key, columnParent, start, finish, isAscending, offset, count));
- if (cfamily == null)
- {
- return EMPTY_COLUMNS;
- }
- Collection<IColumn> columns = cfamily.getAllColumns();
- return thriftifyColumns(columns);
+ return getSlice(new SliceFromReadCommand(table, key, column_parent, start, finish, is_ascending, offset, count));
}
- public column_t get_column(String tablename, String key, String columnPath) throws NotFoundException, InvalidRequestException
+ public Column get_column(String table, String key, ColumnPath column_path)
+ throws InvalidRequestException, NotFoundException
{
logger.debug("get_column");
- String[] values = ThriftValidation.validateColumnPath(tablename, columnPath);
+ ThriftValidation.validateColumnPath(table, column_path);
- ColumnFamily cfamily = readColumnFamily(new ColumnReadCommand(tablename, key, columnPath));
+ QueryPath path = new QueryPath(column_path.column_family, column_path.super_column);
+ ColumnFamily cfamily = readColumnFamily(new SliceByNamesReadCommand(table, key, path, Arrays.asList(column_path.column)));
+ // TODO can we leverage getSlice here and just check that it returns one column?
if (cfamily == null)
{
throw new NotFoundException();
}
Collection<IColumn> columns = null;
- if( values.length > 2 )
+ if (column_path.super_column != null)
{
- // this is the super column case
- IColumn column = cfamily.getColumn(values[1]);
- if(column != null)
+ IColumn column = cfamily.getColumn(column_path.super_column);
+ if (column != null)
+ {
columns = column.getSubColumns();
+ }
}
else
{
@@ -221,34 +204,36 @@
throw new NotFoundException();
}
- return new column_t(column.name(), column.value(), column.timestamp());
+ return new Column(column.name(), column.value(), column.timestamp());
}
- public int get_column_count(String tablename, String key, String columnParent) throws InvalidRequestException
+ public int get_column_count(String table, String key, ColumnParent column_parent)
+ throws InvalidRequestException
{
logger.debug("get_column_count");
- String[] values = ThriftValidation.validateColumnParent(tablename, columnParent);
+ ThriftValidation.validateColumnParent(table, column_parent);
ColumnFamily cfamily;
- if (DatabaseDescriptor.isNameSortingEnabled(tablename, values[0]))
+ if (DatabaseDescriptor.isNameSortingEnabled(table, column_parent.column_family))
{
- cfamily = readColumnFamily(new SliceFromReadCommand(tablename, key, columnParent, "", "", true, 0, Integer.MAX_VALUE));
+ cfamily = readColumnFamily(new SliceFromReadCommand(table, key, column_parent, "", "", true, 0, Integer.MAX_VALUE));
}
else
{
- cfamily = readColumnFamily(new ColumnsSinceReadCommand(tablename, key, columnParent, Long.MIN_VALUE));
+ cfamily = readColumnFamily(new ColumnsSinceReadCommand(table, key, column_parent, Long.MIN_VALUE));
}
if (cfamily == null)
{
return 0;
}
Collection<IColumn> columns = null;
- if( values.length > 1 )
+ if (column_parent.super_column != null)
{
- // this is the super column case
- IColumn column = cfamily.getColumn(values[1]);
- if(column != null)
+ IColumn column = cfamily.getColumn(column_parent.super_column);
+ if (column != null)
+ {
columns = column.getSubColumns();
+ }
}
else
{
@@ -261,38 +246,39 @@
return columns.size();
}
- public void insert(String tablename, String key, String columnPath, byte[] cellData, long timestamp, int block)
+ public void insert(String table, String key, ColumnPath column_path, byte[] value, long timestamp, int block_for)
throws InvalidRequestException, UnavailableException
{
logger.debug("insert");
ThriftValidation.validateKey(key);
- ThriftValidation.validateColumnPath(tablename, columnPath);
+ ThriftValidation.validateColumnPath(table, column_path);
- RowMutation rm = new RowMutation(tablename, key.trim());
- rm.add(columnPath, cellData, timestamp);
- doInsert(block, rm);
+ RowMutation rm = new RowMutation(table, key.trim());
+ rm.add(new QueryPath(column_path), value, timestamp);
+ doInsert(block_for, rm);
}
- public void batch_insert(batch_mutation_t batchMutation, int block) throws InvalidRequestException, UnavailableException
+ public void batch_insert(String table, BatchMutation batch_mutation, int block_for)
+ throws InvalidRequestException, UnavailableException
{
logger.debug("batch_insert");
- RowMutation rm = RowMutation.getRowMutation(batchMutation);
+ RowMutation rm = RowMutation.getRowMutation(table, batch_mutation);
Set<String> cfNames = rm.columnFamilyNames();
ThriftValidation.validateKeyCommand(rm.key(), rm.table(), cfNames.toArray(new String[cfNames.size()]));
- doInsert(block, rm);
+ doInsert(block_for, rm);
}
- public void remove(String tablename, String key, String columnPathOrParent, long timestamp, int block)
+ public void remove(String table, String key, ColumnPathOrParent column_path_or_parent, long timestamp, int block_for)
throws InvalidRequestException, UnavailableException
{
logger.debug("remove");
- ThriftValidation.validateColumnPathOrParent(tablename, columnPathOrParent);
+ ThriftValidation.validateColumnPathOrParent(table, column_path_or_parent);
- RowMutation rm = new RowMutation(tablename, key.trim());
- rm.delete(columnPathOrParent, timestamp);
+ RowMutation rm = new RowMutation(table, key.trim());
+ rm.delete(new QueryPath(column_path_or_parent), timestamp);
- doInsert(block, rm);
+ doInsert(block_for, rm);
}
private void doInsert(int block, RowMutation rm) throws UnavailableException
@@ -307,12 +293,13 @@
}
}
- public List<superColumn_t> get_slice_super_by_names(String tablename, String key, String columnFamily, List<String> superColumnNames) throws InvalidRequestException
+ public List<SuperColumn> get_slice_super_by_names(String table, String key, String column_family, List<String> super_column_names)
+ throws InvalidRequestException
{
logger.debug("get_slice_super_by_names");
- ThriftValidation.validateColumnFamily(tablename, columnFamily);
+ ThriftValidation.validateColumnFamily(table, column_family);
- ColumnFamily cfamily = readColumnFamily(new SliceByNamesReadCommand(tablename, key, columnFamily, superColumnNames));
+ ColumnFamily cfamily = readColumnFamily(new SliceByNamesReadCommand(table, key, new QueryPath(column_family), super_column_names));
if (cfamily == null)
{
return EMPTY_SUPERCOLUMNS;
@@ -320,37 +307,37 @@
return thriftifySuperColumns(cfamily.getAllColumns());
}
- private List<superColumn_t> thriftifySuperColumns(Collection<IColumn> columns)
+ private List<SuperColumn> thriftifySuperColumns(Collection<IColumn> columns)
{
if (columns == null || columns.isEmpty())
{
return EMPTY_SUPERCOLUMNS;
}
- ArrayList<superColumn_t> thriftSuperColumns = new ArrayList<superColumn_t>(columns.size());
+ ArrayList<SuperColumn> thriftSuperColumns = new ArrayList<SuperColumn>(columns.size());
for (IColumn column : columns)
{
- List<column_t> subcolumns = thriftifyColumns(column.getSubColumns());
+ List<Column> subcolumns = thriftifyColumns(column.getSubColumns());
if (subcolumns.isEmpty())
{
continue;
}
- thriftSuperColumns.add(new superColumn_t(column.name(), subcolumns));
+ thriftSuperColumns.add(new SuperColumn(column.name(), subcolumns));
}
return thriftSuperColumns;
}
- public List<superColumn_t> get_slice_super(String tablename, String key, String columnFamily, String start, String finish, boolean isAscending, int offset, int count) throws InvalidRequestException, TException
+ public List<SuperColumn> get_slice_super(String table, String key, String column_family, String start, String finish, boolean is_ascending, int offset, int count)
+ throws InvalidRequestException
{
logger.debug("get_slice_super");
- String[] values = RowMutation.getColumnAndColumnFamily(columnFamily);
- if (values.length != 1 || !DatabaseDescriptor.getColumnFamilyType(tablename, values[0]).equals("Super"))
+ if (!DatabaseDescriptor.getColumnFamilyType(table, column_family).equals("Super"))
throw new InvalidRequestException("get_slice_super requires a super CF name");
if (count <= 0)
throw new InvalidRequestException("get_slice_super requires positive count");
- ColumnFamily cfamily = readColumnFamily(new SliceFromReadCommand(tablename, key, columnFamily, start, finish, isAscending, offset, count));
+ ColumnFamily cfamily = readColumnFamily(new SliceFromReadCommand(table, key, new QueryPath(column_family), start, finish, is_ascending, offset, count));
if (cfamily == null)
{
return EMPTY_SUPERCOLUMNS;
@@ -358,13 +345,15 @@
Collection<IColumn> columns = cfamily.getAllColumns();
return thriftifySuperColumns(columns);
}
-
- public superColumn_t get_superColumn(String tablename, String key, String superColumnPath) throws InvalidRequestException, NotFoundException
+
+
+ public SuperColumn get_super_column(String table, String key, SuperColumnPath super_column_path)
+ throws InvalidRequestException, NotFoundException
{
logger.debug("get_superColumn");
- ThriftValidation.validateSuperColumnPath(tablename, superColumnPath);
+ ThriftValidation.validateSuperColumnPath(table, super_column_path);
- ColumnFamily cfamily = readColumnFamily(new ColumnReadCommand(tablename, key, superColumnPath));
+ ColumnFamily cfamily = readColumnFamily(new SliceByNamesReadCommand(table, key, new QueryPath(super_column_path.column_family), Arrays.asList(super_column_path.super_column)));
if (cfamily == null)
{
throw new NotFoundException();
@@ -382,17 +371,18 @@
throw new NotFoundException();
}
- return new superColumn_t(column.name(), thriftifyColumns(column.getSubColumns()));
+ return new SuperColumn(column.name(), thriftifyColumns(column.getSubColumns()));
}
- public void batch_insert_superColumn(batch_mutation_super_t batchMutationSuper, int block) throws InvalidRequestException, UnavailableException
+ public void batch_insert_super_column(String table, BatchMutationSuper batch_mutation_super, int block_for)
+ throws InvalidRequestException, UnavailableException
{
logger.debug("batch_insert_SuperColumn");
- RowMutation rm = RowMutation.getRowMutation(batchMutationSuper);
+ RowMutation rm = RowMutation.getRowMutation(table, batch_mutation_super);
Set<String> cfNames = rm.columnFamilyNames();
ThriftValidation.validateKeyCommand(rm.key(), rm.table(), cfNames.toArray(new String[cfNames.size()]));
- doInsert(block, rm);
+ doInsert(block_for, rm);
}
public String getStringProperty(String propertyName)
@@ -484,18 +474,18 @@
return columnFamiliesMap;
}
- public CqlResult_t executeQuery(String query) throws TException
+ public org.apache.cassandra.service.CqlResult executeQuery(String query) throws TException
{
- CqlResult_t result = new CqlResult_t();
+ org.apache.cassandra.service.CqlResult result = new org.apache.cassandra.service.CqlResult();
CqlResult cqlResult = CqlDriver.executeQuery(query);
// convert CQL result type to Thrift specific return type
if (cqlResult != null)
{
- result.errorTxt = cqlResult.errorTxt;
- result.resultSet = cqlResult.resultSet;
- result.errorCode = cqlResult.errorCode;
+ result.error_txt = cqlResult.errorTxt;
+ result.result_set = cqlResult.resultSet;
+ result.error_code = cqlResult.errorCode;
}
return result;
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/service/ThriftValidation.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/ThriftValidation.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/service/ThriftValidation.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/service/ThriftValidation.java Wed Jul 15 22:04:43 2009
@@ -41,95 +41,70 @@
}
}
- private static String validateColumnFamily(String tablename, String[] values) throws InvalidRequestException
+ public static String validateColumnFamily(String tablename, String cfName) throws InvalidRequestException
{
- if (values.length < 1)
+ if (cfName.isEmpty())
{
throw new InvalidRequestException("non-empty columnfamily is required");
}
- String cfType = DatabaseDescriptor.getColumnType(tablename, values[0]);
+ String cfType = DatabaseDescriptor.getColumnType(tablename, cfName);
if (cfType == null)
{
- throw new InvalidRequestException("unconfigured columnfamily " + values[0]);
+ throw new InvalidRequestException("unconfigured columnfamily " + cfName);
}
return cfType;
}
- static String[] validateColumnPath(String tablename, String columnPath) throws InvalidRequestException
+ static void validateColumnPath(String tablename, ColumnPath column_path) throws InvalidRequestException
{
validateTable(tablename);
- String[] values = RowMutation.getColumnAndColumnFamily(columnPath);
- String cfType = validateColumnFamily(tablename, values);
+ String cfType = validateColumnFamily(tablename, column_path.column_family);
if (cfType.equals("Standard"))
{
- if (values.length != 2)
+ if (column_path.super_column != null)
{
- throw new InvalidRequestException("both parts of columnfamily:column are required for standard CF " + values[0]);
+ throw new InvalidRequestException("supercolumn parameter is invalid for standard CF " + column_path.column_family);
}
}
- else if (values.length != 3)
- {
- throw new InvalidRequestException("all parts of columnfamily:supercolumn:subcolumn are required for super CF " + values[0]);
- }
- return values;
}
- static String[] validateColumnParent(String tablename, String columnParent) throws InvalidRequestException
+ static void validateColumnParent(String tablename, ColumnParent column_parent) throws InvalidRequestException
{
validateTable(tablename);
- String[] values = RowMutation.getColumnAndColumnFamily(columnParent);
- String cfType = validateColumnFamily(tablename, values);
+ String cfType = validateColumnFamily(tablename, column_parent.column_family);
if (cfType.equals("Standard"))
{
- if (values.length != 1)
+ if (column_parent.super_column != null)
{
- throw new InvalidRequestException("columnfamily alone is required for standard CF " + values[0]);
+ throw new InvalidRequestException("columnfamily alone is required for standard CF " + column_parent.column_family);
}
}
- else if (values.length != 2)
+ else if (column_parent.super_column == null)
{
- throw new InvalidRequestException("columnfamily:supercolumn is required for super CF " + values[0]);
+ throw new InvalidRequestException("columnfamily and supercolumn are both required for super CF " + column_parent.column_family);
}
- return values;
}
- static String[] validateSuperColumnPath(String tablename, String columnPath) throws InvalidRequestException
+ static void validateSuperColumnPath(String tablename, SuperColumnPath super_column_path) throws InvalidRequestException
{
validateTable(tablename);
- String[] values = RowMutation.getColumnAndColumnFamily(columnPath);
- String cfType = validateColumnFamily(tablename, values);
+ String cfType = validateColumnFamily(tablename, super_column_path.column_family);
if (cfType.equals("Standard"))
{
- throw new InvalidRequestException(values[0] + " is a standard columnfamily; only super columnfamilies are valid here");
+ throw new InvalidRequestException(super_column_path.column_family + " is a standard columnfamily; only super columnfamilies are valid here");
}
- else if (values.length != 1)
- {
- throw new InvalidRequestException("columnfamily alone is required for super CF " + values[0]);
- }
- return values;
}
- static String[] validateColumnPathOrParent(String tablename, String columnPath) throws InvalidRequestException
+ static void validateColumnPathOrParent(String tablename, ColumnPathOrParent column_path_or_parent) throws InvalidRequestException
{
validateTable(tablename);
- String[] values = RowMutation.getColumnAndColumnFamily(columnPath);
- String cfType = validateColumnFamily(tablename, values);
+ String cfType = validateColumnFamily(tablename, column_path_or_parent.column_family);
if (cfType.equals("Standard"))
{
- if (values.length > 2)
+ if (column_path_or_parent.super_column != null)
{
- throw new InvalidRequestException("columnfamily:column is the most path components possible for standard CF " + values[0]);
+ throw new InvalidRequestException("supercolumn may not be specified for standard CF " + column_path_or_parent.column_family);
}
}
- else if (values.length > 3)
- {
- throw new InvalidRequestException("columnfamily:supercolumn:column is the most path components possible for super CF " + values[0]);
- }
- return values;
- }
-
- public static String validateColumnFamily(String tablename, String columnFamily) throws InvalidRequestException
- {
- return validateColumnFamily(tablename, RowMutation.getColumnAndColumnFamily(columnFamily));
}
}
\ No newline at end of file
Modified: incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java (original)
+++ incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java Wed Jul 15 22:04:43 2009
@@ -31,6 +31,7 @@
import static junit.framework.Assert.assertEquals;
import org.apache.cassandra.CleanupHelper;
import org.apache.cassandra.db.filter.IdentityQueryFilter;
+import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.io.SSTableReader;
public class ColumnFamilyStoreTest extends CleanupHelper
@@ -108,15 +109,15 @@
// add data
rm = new RowMutation("Table1", "key1");
- rm.add("Standard1:Column1", "asdf".getBytes(), 0);
- rm.add("Standard1:Column2", "asdf".getBytes(), 0);
+ rm.add(new QueryPath("Standard1", null, "Column1"), "asdf".getBytes(), 0);
+ rm.add(new QueryPath("Standard1", null, "Column2"), "asdf".getBytes(), 0);
rm.apply();
store.forceBlockingFlush();
List<SSTableReader> ssTables = table.getAllSSTablesOnDisk();
assertEquals(1, ssTables.size());
ssTables.get(0).forceBloomFilterFailures();
- ColumnFamily cf = store.getColumnFamily(new IdentityQueryFilter("key2", "Standard1:Column1"));
+ ColumnFamily cf = store.getColumnFamily(new IdentityQueryFilter("key2", new QueryPath("Standard1", null, "Column1")));
assertNull(cf);
}
}
Modified: incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java (original)
+++ incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java Wed Jul 15 22:04:43 2009
@@ -28,6 +28,7 @@
import org.apache.cassandra.io.DataInputBuffer;
import org.apache.cassandra.io.DataOutputBuffer;
+import org.apache.cassandra.db.filter.QueryPath;
public class ColumnFamilyTest
{
@@ -42,7 +43,7 @@
ColumnFamily cf;
cf = ColumnFamily.create("Table1", "Standard1");
- cf.addColumn("C", bytes, 1);
+ cf.addColumn(QueryPath.column("C"), bytes, 1);
DataOutputBuffer bufOut = new DataOutputBuffer();
ColumnFamily.serializer().serialize(cf, bufOut);
@@ -70,7 +71,7 @@
DataOutputBuffer bufOut = new DataOutputBuffer();
for (String cName : map.navigableKeySet())
{
- cf.addColumn(cName, map.get(cName), 314);
+ cf.addColumn(QueryPath.column(cName), map.get(cName), 314);
}
ColumnFamily.serializer().serialize(cf, bufOut);
@@ -81,7 +82,6 @@
for (String cName : map.navigableKeySet())
{
assert Arrays.equals(cf.getColumn(cName).value(), map.get(cName));
-
}
assert new HashSet<String>(cf.getColumns().keySet()).equals(map.keySet());
}
@@ -92,9 +92,9 @@
ColumnFamily cf = ColumnFamily.create("Table1", "Standard1");
byte val[] = "sample value".getBytes();
- cf.addColumn("col1", val, 1);
- cf.addColumn("col2", val, 2);
- cf.addColumn("col1", val, 3);
+ cf.addColumn(QueryPath.column("col1"), val, 1);
+ cf.addColumn(QueryPath.column("col2"), val, 2);
+ cf.addColumn(QueryPath.column("col1"), val, 3);
assert 2 == cf.getColumnCount();
assert 2 == cf.getAllColumns().size();
@@ -108,9 +108,9 @@
byte val2[] = "sample 2".getBytes();
byte val3[] = "sample 3".getBytes();
- cf.addColumn("col1", val1, 2);
- cf.addColumn("col1", val2, 2); // same timestamp, new value
- cf.addColumn("col1", val3, 1); // older timestamp -- should be ignored
+ cf.addColumn(QueryPath.column("col1"), val1, 2);
+ cf.addColumn(QueryPath.column("col1"), val2, 2); // same timestamp, new value
+ cf.addColumn(QueryPath.column("col1"), val3, 1); // older timestamp -- should be ignored
assert Arrays.equals(val2, cf.getColumn("col1").value());
}
@@ -124,11 +124,11 @@
byte val[] = "sample value".getBytes();
byte val2[] = "x value ".getBytes();
- cf_new.addColumn("col1", val, 3);
- cf_new.addColumn("col2", val, 4);
+ cf_new.addColumn(QueryPath.column("col1"), val, 3);
+ cf_new.addColumn(QueryPath.column("col2"), val, 4);
- cf_old.addColumn("col2", val2, 1);
- cf_old.addColumn("col3", val2, 2);
+ cf_old.addColumn(QueryPath.column("col2"), val2, 1);
+ cf_old.addColumn(QueryPath.column("col3"), val2, 2);
cf_result.addColumns(cf_new);
cf_result.addColumns(cf_old);
Modified: incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CommitLogTest.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CommitLogTest.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CommitLogTest.java (original)
+++ incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CommitLogTest.java Wed Jul 15 22:04:43 2009
@@ -24,6 +24,7 @@
import org.junit.Test;
import org.apache.cassandra.CleanupHelper;
+import org.apache.cassandra.db.filter.QueryPath;
public class CommitLogTest extends CleanupHelper
{
@@ -43,8 +44,8 @@
for (int i = 0; i < 10; i++)
{
rm = new RowMutation("Table1", "key1");
- rm.add("Standard1:Column1", value, 0);
- rm.add("Standard2:Column1", value, 0);
+ rm.add(new QueryPath("Standard1", null, "Column1"), value, 0);
+ rm.add(new QueryPath("Standard2", null, "Column1"), value, 0);
rm.apply();
}
assert CommitLog.getSegmentCount() > 1;
Modified: incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsTest.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsTest.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsTest.java (original)
+++ incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsTest.java Wed Jul 15 22:04:43 2009
@@ -29,6 +29,7 @@
import org.apache.cassandra.io.SSTableReader;
import org.apache.cassandra.CleanupHelper;
+import org.apache.cassandra.db.filter.QueryPath;
import static junit.framework.Assert.assertEquals;
public class CompactionsTest extends CleanupHelper
@@ -46,7 +47,7 @@
for (int i = 0; i < ROWS_PER_SSTABLE; i++) {
String key = String.valueOf(i % 2);
RowMutation rm = new RowMutation("Table1", key);
- rm.add("Standard1:" + (i / 2), new byte[0], j * ROWS_PER_SSTABLE + i);
+ rm.add(new QueryPath("Standard1", null, String.valueOf(i / 2)), new byte[0], j * ROWS_PER_SSTABLE + i);
rm.apply();
inserted.add(key);
}
Modified: incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java (original)
+++ incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java Wed Jul 15 22:04:43 2009
@@ -26,6 +26,7 @@
import org.junit.Test;
import org.apache.cassandra.CleanupHelper;
+import org.apache.cassandra.db.filter.QueryPath;
public class NameSortTest extends CleanupHelper
{
@@ -65,7 +66,7 @@
{
byte[] bytes = j % 2 == 0 ? "a".getBytes() : "b".getBytes();
rm = new RowMutation("Table1", key);
- rm.add("Standard1:" + "Column-" + j, bytes, j);
+ rm.add(new QueryPath("Standard1", null, "Column-" + j), bytes, j);
rm.apply();
}
@@ -76,7 +77,7 @@
{
byte[] bytes = (j + k) % 2 == 0 ? "a".getBytes() : "b".getBytes();
rm = new RowMutation("Table1", key);
- rm.add("Super1:" + "SuperColumn-" + j + ":Column-" + k, bytes, k);
+ rm.add(new QueryPath("Super1", "SuperColumn-" + j, "Column-" + k), bytes, k);
rm.apply();
}
}
Modified: incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/OneCompactionTest.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/OneCompactionTest.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/OneCompactionTest.java (original)
+++ incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/OneCompactionTest.java Wed Jul 15 22:04:43 2009
@@ -28,6 +28,7 @@
import org.junit.Test;
import static junit.framework.Assert.assertEquals;
+import org.apache.cassandra.db.filter.QueryPath;
public class OneCompactionTest
{
@@ -40,7 +41,7 @@
for (int j = 0; j < insertsPerTable; j++) {
String key = "0";
RowMutation rm = new RowMutation("Table1", key);
- rm.add(columnFamilyName + ":0", new byte[0], j);
+ rm.add(new QueryPath(columnFamilyName, null, "0"), new byte[0], j);
rm.apply();
inserted.add(key);
store.forceBlockingFlush();
Modified: incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ReadMessageTest.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ReadMessageTest.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ReadMessageTest.java (original)
+++ incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/ReadMessageTest.java Wed Jul 15 22:04:43 2009
@@ -29,6 +29,7 @@
import org.apache.cassandra.io.DataInputBuffer;
import org.apache.cassandra.io.DataOutputBuffer;
+import org.apache.cassandra.db.filter.QueryPath;
public class ReadMessageTest
{
@@ -41,23 +42,19 @@
ReadCommand rm, rm2;
- rm = new SliceByNamesReadCommand("Table1", "row1", "foo", colList);
+ rm = new SliceByNamesReadCommand("Table1", "row1", new QueryPath("foo"), colList);
rm2 = serializeAndDeserializeReadMessage(rm);
assert rm2.toString().equals(rm.toString());
- rm = new ColumnReadCommand("Table1", "row1", "foo:col1");
+ rm = new ColumnsSinceReadCommand("Table1", "row1", new QueryPath("foo"), 1);
rm2 = serializeAndDeserializeReadMessage(rm);
assert rm2.toString().equals(rm.toString());
- rm = new ColumnsSinceReadCommand("Table1", "row1", "foo", 1);
- rm2 = serializeAndDeserializeReadMessage(rm);
- assert rm2.toString().equals(rm.toString());
-
- rm = new SliceFromReadCommand("Table1", "row1", "foo", "", "", true, 0, 2);
+ rm = new SliceFromReadCommand("Table1", "row1", new QueryPath("foo"), "", "", true, 0, 2);
rm2 = serializeAndDeserializeReadMessage(rm);
assert rm2.toString().equals(rm.toString());
- rm = new SliceFromReadCommand("Table1", "row1", "foo", "a", "z", true, 0, 5);
+ rm = new SliceFromReadCommand("Table1", "row1", new QueryPath("foo"), "a", "z", true, 0, 5);
rm2 = serializeAndDeserializeReadMessage(rm);
assertEquals(rm2.toString(), rm.toString());
}
@@ -90,10 +87,10 @@
// add data
rm = new RowMutation("Table1", "key1");
- rm.add("Standard1:Column1", "abcd".getBytes(), 0);
+ rm.add(new QueryPath("Standard1", null, "Column1"), "abcd".getBytes(), 0);
rm.apply();
- ReadCommand command = new ColumnReadCommand("Table1", "key1", "Standard1:Column1");
+ ReadCommand command = new SliceByNamesReadCommand("Table1", "key1", new QueryPath("Standard1"), Arrays.asList("Column1"));
Row row = command.getRow(table);
ColumnFamily cf = row.getColumnFamily("Standard1");
IColumn col = cf.getColumn("Column1");
Modified: incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyTest.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyTest.java?rev=794429&r1=794428&r2=794429&view=diff
==============================================================================
--- incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyTest.java (original)
+++ incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/RemoveColumnFamilyTest.java Wed Jul 15 22:04:43 2009
@@ -25,6 +25,7 @@
import static junit.framework.Assert.assertNull;
import org.apache.cassandra.db.filter.IdentityQueryFilter;
+import org.apache.cassandra.db.filter.QueryPath;
public class RemoveColumnFamilyTest
{
@@ -37,15 +38,15 @@
// add data
rm = new RowMutation("Table1", "key1");
- rm.add("Standard1:Column1", "asdf".getBytes(), 0);
+ rm.add(new QueryPath("Standard1", null, "Column1"), "asdf".getBytes(), 0);
rm.apply();
// remove
rm = new RowMutation("Table1", "key1");
- rm.delete("Standard1", 1);
+ rm.delete(new QueryPath("Standard1"), 1);
rm.apply();
- ColumnFamily retrieved = store.getColumnFamily(new IdentityQueryFilter("key1", "Standard1:Column1"));
+ ColumnFamily retrieved = store.getColumnFamily(new IdentityQueryFilter("key1", new QueryPath("Standard1", null, "Column1")));
assert retrieved.isMarkedForDelete();
assertNull(retrieved.getColumn("Column1"));
assertNull(ColumnFamilyStore.removeDeleted(retrieved, Integer.MAX_VALUE));