You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sa...@apache.org on 2015/09/11 19:05:47 UTC
[2/3] cassandra git commit: Modernize system_schema columns and
triggers tables
Modernize system_schema columns and triggers tables
Patch by Aleksey Yeschenko; reviewed by Sam Tunnicliffe for
CASSANDRA-6717
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0790e481
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0790e481
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0790e481
Branch: refs/heads/trunk
Commit: 0790e48191f5cbe040a286881fbfb9e6de375303
Parents: 0b990b7
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Sun Aug 23 20:11:34 2015 +0300
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Fri Sep 11 18:03:12 2015 +0100
----------------------------------------------------------------------
...ore-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar | Bin 2209194 -> 0 bytes
...ore-3.0.0-alpha3-55db84c-SNAPSHOT-shaded.jar | Bin 0 -> 2209303 bytes
...iver-internal-only-3.0.0a1.post0-807aaa6.zip | Bin 201064 -> 0 bytes
...iver-internal-only-3.0.0a2.post0-2429ba3.zip | Bin 0 -> 229078 bytes
.../org/apache/cassandra/config/CFMetaData.java | 18 ++--
.../cassandra/config/ColumnDefinition.java | 93 ++++++++++---------
src/java/org/apache/cassandra/db/Columns.java | 9 +-
.../cassandra/schema/LegacySchemaMigrator.java | 4 +-
.../apache/cassandra/schema/SchemaKeyspace.java | 26 +++---
.../cassandra/thrift/ThriftConversion.java | 10 +-
.../utils/NativeSSTableLoaderClient.java | 14 +--
.../unit/org/apache/cassandra/SchemaLoader.java | 4 +-
.../org/apache/cassandra/db/ColumnsTest.java | 13 +--
13 files changed, 94 insertions(+), 97 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/lib/cassandra-driver-core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar
----------------------------------------------------------------------
diff --git a/lib/cassandra-driver-core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar b/lib/cassandra-driver-core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar
deleted file mode 100644
index f930cc6..0000000
Binary files a/lib/cassandra-driver-core-3.0.0-alpha2-ae1e256-SNAPSHOT-shaded.jar and /dev/null differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/lib/cassandra-driver-core-3.0.0-alpha3-55db84c-SNAPSHOT-shaded.jar
----------------------------------------------------------------------
diff --git a/lib/cassandra-driver-core-3.0.0-alpha3-55db84c-SNAPSHOT-shaded.jar b/lib/cassandra-driver-core-3.0.0-alpha3-55db84c-SNAPSHOT-shaded.jar
new file mode 100644
index 0000000..385d947
Binary files /dev/null and b/lib/cassandra-driver-core-3.0.0-alpha3-55db84c-SNAPSHOT-shaded.jar differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/lib/cassandra-driver-internal-only-3.0.0a1.post0-807aaa6.zip
----------------------------------------------------------------------
diff --git a/lib/cassandra-driver-internal-only-3.0.0a1.post0-807aaa6.zip b/lib/cassandra-driver-internal-only-3.0.0a1.post0-807aaa6.zip
deleted file mode 100644
index 4b84830..0000000
Binary files a/lib/cassandra-driver-internal-only-3.0.0a1.post0-807aaa6.zip and /dev/null differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/lib/cassandra-driver-internal-only-3.0.0a2.post0-2429ba3.zip
----------------------------------------------------------------------
diff --git a/lib/cassandra-driver-internal-only-3.0.0a2.post0-2429ba3.zip b/lib/cassandra-driver-internal-only-3.0.0a2.post0-2429ba3.zip
new file mode 100644
index 0000000..435c5e1
Binary files /dev/null and b/lib/cassandra-driver-internal-only-3.0.0a2.post0-2429ba3.zip differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java
index bcc65b5..a26b19d 100644
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@ -1273,8 +1273,8 @@ public final class CFMetaData
for (int i = 0; i < partitionKeys.size(); i++)
{
Pair<ColumnIdentifier, AbstractType> p = partitionKeys.get(i);
- Integer componentIndex = partitionKeys.size() == 1 ? null : i;
- partitions.add(new ColumnDefinition(keyspace, table, p.left, p.right, componentIndex, ColumnDefinition.Kind.PARTITION_KEY));
+ int position = partitionKeys.size() == 1 ? ColumnDefinition.NO_POSITION : i;
+ partitions.add(new ColumnDefinition(keyspace, table, p.left, p.right, position, ColumnDefinition.Kind.PARTITION_KEY));
}
for (int i = 0; i < clusteringColumns.size(); i++)
@@ -1283,17 +1283,11 @@ public final class CFMetaData
clusterings.add(new ColumnDefinition(keyspace, table, p.left, p.right, i, ColumnDefinition.Kind.CLUSTERING));
}
- for (int i = 0; i < regularColumns.size(); i++)
- {
- Pair<ColumnIdentifier, AbstractType> p = regularColumns.get(i);
- builder.add(new ColumnDefinition(keyspace, table, p.left, p.right, null, ColumnDefinition.Kind.REGULAR));
- }
+ for (Pair<ColumnIdentifier, AbstractType> p : regularColumns)
+ builder.add(new ColumnDefinition(keyspace, table, p.left, p.right, ColumnDefinition.NO_POSITION, ColumnDefinition.Kind.REGULAR));
- for (int i = 0; i < staticColumns.size(); i++)
- {
- Pair<ColumnIdentifier, AbstractType> p = staticColumns.get(i);
- builder.add(new ColumnDefinition(keyspace, table, p.left, p.right, null, ColumnDefinition.Kind.STATIC));
- }
+ for (Pair<ColumnIdentifier, AbstractType> p : staticColumns)
+ builder.add(new ColumnDefinition(keyspace, table, p.left, p.right, ColumnDefinition.NO_POSITION, ColumnDefinition.Kind.STATIC));
return new CFMetaData(keyspace,
table,
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/src/java/org/apache/cassandra/config/ColumnDefinition.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/ColumnDefinition.java b/src/java/org/apache/cassandra/config/ColumnDefinition.java
index 82f2556..17276bc 100644
--- a/src/java/org/apache/cassandra/config/ColumnDefinition.java
+++ b/src/java/org/apache/cassandra/config/ColumnDefinition.java
@@ -32,7 +32,10 @@ import org.apache.cassandra.serializers.MarshalException;
public class ColumnDefinition extends ColumnSpecification implements Comparable<ColumnDefinition>
{
- public static final Comparator<Object> asymmetricColumnDataComparator = (a, b) -> ((ColumnData) a).column().compareTo((ColumnDefinition) b);
+ public static final Comparator<Object> asymmetricColumnDataComparator =
+ (a, b) -> ((ColumnData) a).column().compareTo((ColumnDefinition) b);
+
+ public static final int NO_POSITION = -1;
/*
* The type of CQL3 column this definition represents.
@@ -41,7 +44,7 @@ public class ColumnDefinition extends ColumnSpecification implements Comparable<
* static ones.
*
* Note that thrift only knows about definitions of type REGULAR (and
- * the ones whose componentIndex == null).
+ * the ones whose position == NO_POSITION (-1)).
*/
public enum Kind
{
@@ -61,10 +64,10 @@ public class ColumnDefinition extends ColumnSpecification implements Comparable<
/*
* If the column comparator is a composite type, indicates to which
- * component this definition refers to. If null, the definition refers to
+ * component this definition refers to. If NO_POSITION (-1), the definition refers to
* the full column name.
*/
- private final Integer componentIndex;
+ private final int position;
private final Comparator<CellPath> cellPathComparator;
private final Comparator<Object> asymmetricCellPathComparator;
@@ -81,48 +84,48 @@ public class ColumnDefinition extends ColumnSpecification implements Comparable<
return (kind.ordinal() << 28) | (isComplex ? 1 << 27 : 0) | position;
}
- public static ColumnDefinition partitionKeyDef(CFMetaData cfm, ByteBuffer name, AbstractType<?> validator, Integer componentIndex)
+ public static ColumnDefinition partitionKeyDef(CFMetaData cfm, ByteBuffer name, AbstractType<?> type, int position)
{
- return new ColumnDefinition(cfm, name, validator, componentIndex, Kind.PARTITION_KEY);
+ return new ColumnDefinition(cfm, name, type, position, Kind.PARTITION_KEY);
}
- public static ColumnDefinition partitionKeyDef(String ksName, String cfName, String name, AbstractType<?> validator, Integer componentIndex)
+ public static ColumnDefinition partitionKeyDef(String ksName, String cfName, String name, AbstractType<?> type, int position)
{
- return new ColumnDefinition(ksName, cfName, ColumnIdentifier.getInterned(name, true), validator, componentIndex, Kind.PARTITION_KEY);
+ return new ColumnDefinition(ksName, cfName, ColumnIdentifier.getInterned(name, true), type, position, Kind.PARTITION_KEY);
}
- public static ColumnDefinition clusteringKeyDef(CFMetaData cfm, ByteBuffer name, AbstractType<?> validator, Integer componentIndex)
+ public static ColumnDefinition clusteringDef(CFMetaData cfm, ByteBuffer name, AbstractType<?> type, int position)
{
- return new ColumnDefinition(cfm, name, validator, componentIndex, Kind.CLUSTERING);
+ return new ColumnDefinition(cfm, name, type, position, Kind.CLUSTERING);
}
- public static ColumnDefinition clusteringKeyDef(String ksName, String cfName, String name, AbstractType<?> validator, Integer componentIndex)
+ public static ColumnDefinition clusteringDef(String ksName, String cfName, String name, AbstractType<?> type, int position)
{
- return new ColumnDefinition(ksName, cfName, ColumnIdentifier.getInterned(name, true), validator, componentIndex, Kind.CLUSTERING);
+ return new ColumnDefinition(ksName, cfName, ColumnIdentifier.getInterned(name, true), type, position, Kind.CLUSTERING);
}
- public static ColumnDefinition regularDef(CFMetaData cfm, ByteBuffer name, AbstractType<?> validator)
+ public static ColumnDefinition regularDef(CFMetaData cfm, ByteBuffer name, AbstractType<?> type)
{
- return new ColumnDefinition(cfm, name, validator, null, Kind.REGULAR);
+ return new ColumnDefinition(cfm, name, type, NO_POSITION, Kind.REGULAR);
}
- public static ColumnDefinition regularDef(String ksName, String cfName, String name, AbstractType<?> validator)
+ public static ColumnDefinition regularDef(String ksName, String cfName, String name, AbstractType<?> type)
{
- return new ColumnDefinition(ksName, cfName, ColumnIdentifier.getInterned(name, true), validator, null, Kind.REGULAR);
+ return new ColumnDefinition(ksName, cfName, ColumnIdentifier.getInterned(name, true), type, NO_POSITION, Kind.REGULAR);
}
- public static ColumnDefinition staticDef(CFMetaData cfm, ByteBuffer name, AbstractType<?> validator)
+ public static ColumnDefinition staticDef(CFMetaData cfm, ByteBuffer name, AbstractType<?> type)
{
- return new ColumnDefinition(cfm, name, validator, null, Kind.STATIC);
+ return new ColumnDefinition(cfm, name, type, NO_POSITION, Kind.STATIC);
}
- public ColumnDefinition(CFMetaData cfm, ByteBuffer name, AbstractType<?> validator, Integer componentIndex, Kind kind)
+ public ColumnDefinition(CFMetaData cfm, ByteBuffer name, AbstractType<?> type, int position, Kind kind)
{
this(cfm.ksName,
cfm.cfName,
ColumnIdentifier.getInterned(name, cfm.getColumnDefinitionNameComparator(kind)),
- validator,
- componentIndex,
+ type,
+ position,
kind);
}
@@ -130,29 +133,30 @@ public class ColumnDefinition extends ColumnSpecification implements Comparable<
public ColumnDefinition(String ksName,
String cfName,
ColumnIdentifier name,
- AbstractType<?> validator,
- Integer componentIndex,
+ AbstractType<?> type,
+ int position,
Kind kind)
{
- super(ksName, cfName, name, validator);
- assert name != null && validator != null && kind != null;
+ super(ksName, cfName, name, type);
+ assert name != null && type != null && kind != null;
assert name.isInterned();
- assert componentIndex == null || kind.isPrimaryKeyKind(); // The componentIndex really only make sense for partition and clustering columns,
- // so make sure we don't sneak it for something else since it'd breaks equals()
+ assert position == NO_POSITION || kind.isPrimaryKeyKind(); // The position really only make sense for partition and clustering columns,
+ // so make sure we don't sneak it for something else since it'd breaks equals()
this.kind = kind;
- this.componentIndex = componentIndex;
- this.cellPathComparator = makeCellPathComparator(kind, validator);
+ this.position = position;
+ this.cellPathComparator = makeCellPathComparator(kind, type);
this.cellComparator = cellPathComparator == null ? ColumnData.comparator : (a, b) -> cellPathComparator.compare(a.path(), b.path());
this.asymmetricCellPathComparator = cellPathComparator == null ? null : (a, b) -> cellPathComparator.compare(((Cell)a).path(), (CellPath) b);
this.comparisonOrder = comparisonOrder(kind, isComplex(), position());
}
- private static Comparator<CellPath> makeCellPathComparator(Kind kind, AbstractType<?> validator)
+ private static Comparator<CellPath> makeCellPathComparator(Kind kind, AbstractType<?> type)
{
- if (kind.isPrimaryKeyKind() || !validator.isCollection() || !validator.isMultiCell())
+ if (kind.isPrimaryKeyKind() || !type.isCollection() || !type.isMultiCell())
return null;
- final CollectionType type = (CollectionType)validator;
+ CollectionType collection = (CollectionType) type;
+
return new Comparator<CellPath>()
{
public int compare(CellPath path1, CellPath path2)
@@ -168,29 +172,29 @@ public class ColumnDefinition extends ColumnSpecification implements Comparable<
// This will get more complicated once we have non-frozen UDT and nested collections
assert path1.size() == 1 && path2.size() == 1;
- return type.nameComparator().compare(path1.get(0), path2.get(0));
+ return collection.nameComparator().compare(path1.get(0), path2.get(0));
}
};
}
public ColumnDefinition copy()
{
- return new ColumnDefinition(ksName, cfName, name, type, componentIndex, kind);
+ return new ColumnDefinition(ksName, cfName, name, type, position, kind);
}
public ColumnDefinition withNewName(ColumnIdentifier newName)
{
- return new ColumnDefinition(ksName, cfName, newName, type, componentIndex, kind);
+ return new ColumnDefinition(ksName, cfName, newName, type, position, kind);
}
public ColumnDefinition withNewType(AbstractType<?> newType)
{
- return new ColumnDefinition(ksName, cfName, name, newType, componentIndex, kind);
+ return new ColumnDefinition(ksName, cfName, name, newType, position, kind);
}
public boolean isOnAllComponents()
{
- return componentIndex == null;
+ return position == NO_POSITION;
}
public boolean isPartitionKey()
@@ -213,12 +217,13 @@ public class ColumnDefinition extends ColumnSpecification implements Comparable<
return kind == Kind.REGULAR;
}
- // The componentIndex. This never return null however for convenience sake:
- // if componentIndex == null, this return 0. So caller should first check
- // isOnAllComponents() to distinguish if that's a possibility.
+ /**
+ * For convenience sake, if position == NO_POSITION, this method will return 0. The callers should first check
+ * isOnAllComponents() to distinguish between proper 0 position and NO_POSITION.
+ */
public int position()
{
- return componentIndex == null ? 0 : componentIndex;
+ return Math.max(0, position);
}
@Override
@@ -237,13 +242,13 @@ public class ColumnDefinition extends ColumnSpecification implements Comparable<
&& Objects.equal(name, cd.name)
&& Objects.equal(type, cd.type)
&& Objects.equal(kind, cd.kind)
- && Objects.equal(componentIndex, cd.componentIndex);
+ && Objects.equal(position, cd.position);
}
@Override
public int hashCode()
{
- return Objects.hashCode(ksName, cfName, name, type, kind, componentIndex);
+ return Objects.hashCode(ksName, cfName, name, type, kind, position);
}
@Override
@@ -253,7 +258,7 @@ public class ColumnDefinition extends ColumnSpecification implements Comparable<
.add("name", name)
.add("type", type)
.add("kind", kind)
- .add("componentIndex", componentIndex)
+ .add("position", position)
.toString();
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/src/java/org/apache/cassandra/db/Columns.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Columns.java b/src/java/org/apache/cassandra/db/Columns.java
index 582b742..442f77f 100644
--- a/src/java/org/apache/cassandra/db/Columns.java
+++ b/src/java/org/apache/cassandra/db/Columns.java
@@ -50,8 +50,13 @@ public class Columns extends AbstractCollection<ColumnDefinition> implements Col
{
public static final Serializer serializer = new Serializer();
public static final Columns NONE = new Columns(BTree.empty(), 0);
- public static final ColumnDefinition FIRST_COMPLEX = new ColumnDefinition("", "", ColumnIdentifier.getInterned(ByteBufferUtil.EMPTY_BYTE_BUFFER, UTF8Type.instance),
- SetType.getInstance(UTF8Type.instance, true), null, ColumnDefinition.Kind.REGULAR);
+ public static final ColumnDefinition FIRST_COMPLEX =
+ new ColumnDefinition("",
+ "",
+ ColumnIdentifier.getInterned(ByteBufferUtil.EMPTY_BYTE_BUFFER, UTF8Type.instance),
+ SetType.getInstance(UTF8Type.instance, true),
+ ColumnDefinition.NO_POSITION,
+ ColumnDefinition.Kind.REGULAR);
private final Object[] columns;
private final int complexIdx; // Index of the first complex column
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java b/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java
index 7c0eadf..1674de8 100644
--- a/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java
+++ b/src/java/org/apache/cassandra/schema/LegacySchemaMigrator.java
@@ -476,7 +476,7 @@ public final class LegacySchemaMigrator
}
else if (isStaticCompactTable)
{
- defs.add(ColumnDefinition.clusteringKeyDef(ksName, cfName, names.defaultClusteringName(), rawComparator, null));
+ defs.add(ColumnDefinition.clusteringDef(ksName, cfName, names.defaultClusteringName(), rawComparator, ColumnDefinition.NO_POSITION));
defs.add(ColumnDefinition.regularDef(ksName, cfName, names.defaultCompactValueName(), defaultValidator));
}
else
@@ -572,7 +572,7 @@ public final class LegacySchemaMigrator
if (needsUpgrade && isStaticCompactTable && kind == ColumnDefinition.Kind.REGULAR)
kind = ColumnDefinition.Kind.STATIC;
- Integer componentIndex = null;
+ int componentIndex = ColumnDefinition.NO_POSITION;
// Note that the component_index is not useful for non-primary key parts (it never really in fact since there is
// no particular ordering of non-PK columns, we only used to use it as a simplification but that's not needed
// anymore)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
index 2df4ca4..55b841b 100644
--- a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
+++ b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
@@ -118,9 +118,9 @@ public final class SchemaKeyspace
+ "table_name text,"
+ "column_name text,"
+ "column_name_bytes blob,"
- + "component_index int,"
+ + "kind text,"
+ + "position int,"
+ "type text,"
- + "validator text,"
+ "PRIMARY KEY ((keyspace_name), table_name, column_name))");
private static final CFMetaData DroppedColumns =
@@ -141,7 +141,7 @@ public final class SchemaKeyspace
+ "keyspace_name text,"
+ "table_name text,"
+ "trigger_name text,"
- + "trigger_options frozen<map<text, text>>,"
+ + "options frozen<map<text, text>>,"
+ "PRIMARY KEY ((keyspace_name), table_name, trigger_name))");
private static final CFMetaData MaterializedViews =
@@ -1162,9 +1162,9 @@ public final class SchemaKeyspace
RowUpdateBuilder adder = new RowUpdateBuilder(Columns, timestamp, mutation).clustering(table.cfName, column.name.toString());
adder.add("column_name_bytes", column.name.bytes)
- .add("validator", column.type.toString())
- .add("type", column.kind.toString().toLowerCase())
- .add("component_index", column.isOnAllComponents() ? null : column.position())
+ .add("kind", column.kind.toString().toLowerCase())
+ .add("position", column.isOnAllComponents() ? ColumnDefinition.NO_POSITION : column.position())
+ .add("type", column.type.toString())
.build();
}
@@ -1188,15 +1188,13 @@ public final class SchemaKeyspace
ColumnIdentifier name = ColumnIdentifier.getInterned(row.getBytes("column_name_bytes"), row.getString("column_name"));
- ColumnDefinition.Kind kind = ColumnDefinition.Kind.valueOf(row.getString("type").toUpperCase());
+ ColumnDefinition.Kind kind = ColumnDefinition.Kind.valueOf(row.getString("kind").toUpperCase());
- Integer componentIndex = null;
- if (row.has("component_index"))
- componentIndex = row.getInt("component_index");
+ int position = row.getInt("position");
- AbstractType<?> validator = parseType(row.getString("validator"));
+ AbstractType<?> type = parseType(row.getString("type"));
- return new ColumnDefinition(keyspace, table, name, validator, componentIndex, kind);
+ return new ColumnDefinition(keyspace, table, name, type, position, kind);
}
/*
@@ -1245,7 +1243,7 @@ public final class SchemaKeyspace
{
new RowUpdateBuilder(Triggers, timestamp, mutation)
.clustering(table.cfName, trigger.name)
- .frozenMap("trigger_options", Collections.singletonMap("class", trigger.classOption))
+ .frozenMap("options", Collections.singletonMap("class", trigger.classOption))
.build();
}
@@ -1271,7 +1269,7 @@ public final class SchemaKeyspace
private static TriggerMetadata createTriggerFromTriggerRow(UntypedResultSet.Row row)
{
String name = row.getString("trigger_name");
- String classOption = row.getFrozenTextMap("trigger_options").get("class");
+ String classOption = row.getFrozenTextMap("options").get("class");
return new TriggerMetadata(name, classOption);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/src/java/org/apache/cassandra/thrift/ThriftConversion.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/thrift/ThriftConversion.java b/src/java/org/apache/cassandra/thrift/ThriftConversion.java
index 4c17a4b..86cfe42 100644
--- a/src/java/org/apache/cassandra/thrift/ThriftConversion.java
+++ b/src/java/org/apache/cassandra/thrift/ThriftConversion.java
@@ -238,7 +238,7 @@ public class ThriftConversion
// historical reasons)
boolean hasKeyAlias = cf_def.isSetKey_alias() && keyValidator != null && !(keyValidator instanceof CompositeType);
if (hasKeyAlias)
- defs.add(ColumnDefinition.partitionKeyDef(cf_def.keyspace, cf_def.name, UTF8Type.instance.getString(cf_def.key_alias), keyValidator, null));
+ defs.add(ColumnDefinition.partitionKeyDef(cf_def.keyspace, cf_def.name, UTF8Type.instance.getString(cf_def.key_alias), keyValidator, ColumnDefinition.NO_POSITION));
// Now add any CQL metadata that we want to copy, skipping the keyAlias if there was one
for (ColumnDefinition def : previousCQLMetadata)
@@ -376,14 +376,14 @@ public class ThriftConversion
}
else
{
- defs.add(ColumnDefinition.partitionKeyDef(ks, cf, names.defaultPartitionKeyName(), keyValidator, null));
+ defs.add(ColumnDefinition.partitionKeyDef(ks, cf, names.defaultPartitionKeyName(), keyValidator, ColumnDefinition.NO_POSITION));
}
}
if (subComparator != null)
{
// SuperColumn tables: we use a special map to hold dynamic values within a given super column
- defs.add(ColumnDefinition.clusteringKeyDef(ks, cf, names.defaultClusteringName(), comparator, 0));
+ defs.add(ColumnDefinition.clusteringDef(ks, cf, names.defaultClusteringName(), comparator, 0));
defs.add(ColumnDefinition.regularDef(ks, cf, CompactTables.SUPER_COLUMN_MAP_COLUMN_STR, MapType.getInstance(subComparator, defaultValidator, true)));
}
else
@@ -393,7 +393,7 @@ public class ThriftConversion
: Collections.<AbstractType<?>>singletonList(comparator);
for (int i = 0; i < subTypes.size(); i++)
- defs.add(ColumnDefinition.clusteringKeyDef(ks, cf, names.defaultClusteringName(), subTypes.get(i), i));
+ defs.add(ColumnDefinition.clusteringDef(ks, cf, names.defaultClusteringName(), subTypes.get(i), i));
defs.add(ColumnDefinition.regularDef(ks, cf, names.defaultCompactValueName(), defaultValidator));
}
@@ -505,7 +505,7 @@ public class ThriftConversion
cfName,
ColumnIdentifier.getInterned(ByteBufferUtil.clone(thriftColumnDef.name), comparator),
TypeParser.parse(thriftColumnDef.validation_class),
- null,
+ ColumnDefinition.NO_POSITION,
kind);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java b/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java
index f862816..d602076 100644
--- a/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java
+++ b/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java
@@ -149,15 +149,9 @@ public class NativeSSTableLoaderClient extends SSTableLoader.Client
private static ColumnDefinition createDefinitionFromRow(Row row, String keyspace, String table)
{
ColumnIdentifier name = ColumnIdentifier.getInterned(row.getBytes("column_name_bytes"), row.getString("column_name"));
-
- ColumnDefinition.Kind kind = ColumnDefinition.Kind.valueOf(row.getString("type").toUpperCase());
-
- Integer componentIndex = null;
- if (!row.isNull("component_index"))
- componentIndex = row.getInt("component_index");
-
- AbstractType<?> validator = TypeParser.parse(row.getString("validator"));
-
- return new ColumnDefinition(keyspace, table, name, validator, componentIndex, kind);
+ AbstractType<?> type = TypeParser.parse(row.getString("type"));
+ int position = row.getInt("position");
+ ColumnDefinition.Kind kind = ColumnDefinition.Kind.valueOf(row.getString("kind").toUpperCase());
+ return new ColumnDefinition(keyspace, table, name, type, position, kind);
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/test/unit/org/apache/cassandra/SchemaLoader.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/SchemaLoader.java b/test/unit/org/apache/cassandra/SchemaLoader.java
index 8675d7f..175e492 100644
--- a/test/unit/org/apache/cassandra/SchemaLoader.java
+++ b/test/unit/org/apache/cassandra/SchemaLoader.java
@@ -270,7 +270,7 @@ public class SchemaLoader
cfName,
ColumnIdentifier.getInterned(IntegerType.instance.fromString("42"), IntegerType.instance),
UTF8Type.instance,
- null,
+ ColumnDefinition.NO_POSITION,
ColumnDefinition.Kind.REGULAR);
}
@@ -280,7 +280,7 @@ public class SchemaLoader
cfName,
ColumnIdentifier.getInterned("fortytwo", true),
UTF8Type.instance,
- null,
+ ColumnDefinition.NO_POSITION,
ColumnDefinition.Kind.REGULAR);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0790e481/test/unit/org/apache/cassandra/db/ColumnsTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/ColumnsTest.java b/test/unit/org/apache/cassandra/db/ColumnsTest.java
index 4962cb2..921209e 100644
--- a/test/unit/org/apache/cassandra/db/ColumnsTest.java
+++ b/test/unit/org/apache/cassandra/db/ColumnsTest.java
@@ -37,13 +37,14 @@ import org.apache.cassandra.db.marshal.SetType;
import org.apache.cassandra.db.marshal.UTF8Type;
import org.apache.cassandra.io.util.DataInputBuffer;
import org.apache.cassandra.io.util.DataOutputBuffer;
-import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.btree.BTreeSet;
+import static org.apache.cassandra.utils.ByteBufferUtil.bytes;
+
public class ColumnsTest
{
- private static CFMetaData cfMetaData = MockSchema.newCFS().metadata;
+ private static final CFMetaData cfMetaData = MockSchema.newCFS().metadata;
// this tests most of our functionality, since each subset we perform
// reasonably comprehensive tests of basic functionality against
@@ -380,26 +381,26 @@ public class ColumnsTest
private static void addPartition(List<String> names, List<ColumnDefinition> results)
{
for (String name : names)
- results.add(new ColumnDefinition(cfMetaData, ByteBufferUtil.bytes(name), UTF8Type.instance, null, ColumnDefinition.Kind.PARTITION_KEY));
+ results.add(ColumnDefinition.partitionKeyDef(cfMetaData, bytes(name), UTF8Type.instance, ColumnDefinition.NO_POSITION));
}
private static void addClustering(List<String> names, List<ColumnDefinition> results)
{
int i = 0;
for (String name : names)
- results.add(new ColumnDefinition(cfMetaData, ByteBufferUtil.bytes(name), UTF8Type.instance, i++, ColumnDefinition.Kind.CLUSTERING));
+ results.add(ColumnDefinition.clusteringDef(cfMetaData, bytes(name), UTF8Type.instance, i++));
}
private static void addRegular(List<String> names, List<ColumnDefinition> results)
{
for (String name : names)
- results.add(new ColumnDefinition(cfMetaData, ByteBufferUtil.bytes(name), UTF8Type.instance, null, ColumnDefinition.Kind.REGULAR));
+ results.add(ColumnDefinition.regularDef(cfMetaData, bytes(name), UTF8Type.instance));
}
private static <V> void addComplex(List<String> names, List<ColumnDefinition> results)
{
for (String name : names)
- results.add(new ColumnDefinition(cfMetaData, ByteBufferUtil.bytes(name), SetType.getInstance(UTF8Type.instance, true), null, ColumnDefinition.Kind.REGULAR));
+ results.add(ColumnDefinition.regularDef(cfMetaData, bytes(name), SetType.getInstance(UTF8Type.instance, true)));
}
private static CFMetaData mock(Columns columns)