http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/Relation.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/Relation.java b/src/java/org/apache/cassandra/cql3/Relation.java index 097b88e..1d27874 100644 --- a/src/java/org/apache/cassandra/cql3/Relation.java +++ b/src/java/org/apache/cassandra/cql3/Relation.java @@ -20,8 +20,8 @@ package org.apache.cassandra.cql3; import java.util.ArrayList; import java.util.List; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.TableMetadata; +import org.apache.cassandra.schema.ColumnMetadata; import org.apache.cassandra.cql3.restrictions.Restriction; import org.apache.cassandra.cql3.statements.Bound; import org.apache.cassandra.exceptions.InvalidRequestException; @@ -132,31 +132,30 @@ public abstract class Relation /** * Converts this <code>Relation</code> into a <code>Restriction</code>. * - * @param cfm the Column Family meta data + * @param table the Column Family meta data * @param boundNames the variables specification where to collect the bind variables * @return the <code>Restriction</code> corresponding to this <code>Relation</code> * @throws InvalidRequestException if this <code>Relation</code> is not valid */ - public final Restriction toRestriction(CFMetaData cfm, - VariableSpecifications boundNames) throws InvalidRequestException + public final Restriction toRestriction(TableMetadata table, VariableSpecifications boundNames) { switch (relationType) { - case EQ: return newEQRestriction(cfm, boundNames); - case LT: return newSliceRestriction(cfm, boundNames, Bound.END, false); - case LTE: return newSliceRestriction(cfm, boundNames, Bound.END, true); - case GTE: return newSliceRestriction(cfm, boundNames, Bound.START, true); - case GT: return newSliceRestriction(cfm, boundNames, Bound.START, false); - case IN: return newINRestriction(cfm, boundNames); - case CONTAINS: return newContainsRestriction(cfm, boundNames, false); - case CONTAINS_KEY: return newContainsRestriction(cfm, boundNames, true); - case IS_NOT: return newIsNotRestriction(cfm, boundNames); + case EQ: return newEQRestriction(table, boundNames); + case LT: return newSliceRestriction(table, boundNames, Bound.END, false); + case LTE: return newSliceRestriction(table, boundNames, Bound.END, true); + case GTE: return newSliceRestriction(table, boundNames, Bound.START, true); + case GT: return newSliceRestriction(table, boundNames, Bound.START, false); + case IN: return newINRestriction(table, boundNames); + case CONTAINS: return newContainsRestriction(table, boundNames, false); + case CONTAINS_KEY: return newContainsRestriction(table, boundNames, true); + case IS_NOT: return newIsNotRestriction(table, boundNames); case LIKE_PREFIX: case LIKE_SUFFIX: case LIKE_CONTAINS: case LIKE_MATCHES: case LIKE: - return newLikeRestriction(cfm, boundNames, relationType); + return newLikeRestriction(table, boundNames, relationType); default: throw invalidRequest("Unsupported \"!=\" relation: %s", this); } } @@ -164,59 +163,52 @@ public abstract class Relation /** * Creates a new EQ restriction instance. * - * @param cfm the Column Family meta data + * @param table the table meta data * @param boundNames the variables specification where to collect the bind variables * @return a new EQ restriction instance. * @throws InvalidRequestException if the relation cannot be converted into an EQ restriction. */ - protected abstract Restriction newEQRestriction(CFMetaData cfm, - VariableSpecifications boundNames) throws InvalidRequestException; + protected abstract Restriction newEQRestriction(TableMetadata table, VariableSpecifications boundNames); /** * Creates a new IN restriction instance. * - * @param cfm the Column Family meta data + * @param table the table meta data * @param boundNames the variables specification where to collect the bind variables * @return a new IN restriction instance * @throws InvalidRequestException if the relation cannot be converted into an IN restriction. */ - protected abstract Restriction newINRestriction(CFMetaData cfm, - VariableSpecifications boundNames) throws InvalidRequestException; + protected abstract Restriction newINRestriction(TableMetadata table, VariableSpecifications boundNames); /** * Creates a new Slice restriction instance. * - * @param cfm the Column Family meta data + * @param table the table meta data * @param boundNames the variables specification where to collect the bind variables * @param bound the slice bound * @param inclusive <code>true</code> if the bound is included. * @return a new slice restriction instance * @throws InvalidRequestException if the <code>Relation</code> is not valid */ - protected abstract Restriction newSliceRestriction(CFMetaData cfm, + protected abstract Restriction newSliceRestriction(TableMetadata table, VariableSpecifications boundNames, Bound bound, - boolean inclusive) throws InvalidRequestException; + boolean inclusive); /** * Creates a new Contains restriction instance. * - * @param cfm the Column Family meta data + * @param table the table meta data * @param boundNames the variables specification where to collect the bind variables * @param isKey <code>true</code> if the restriction to create is a CONTAINS KEY * @return a new Contains <code>Restriction</code> instance * @throws InvalidRequestException if the <code>Relation</code> is not valid */ - protected abstract Restriction newContainsRestriction(CFMetaData cfm, - VariableSpecifications boundNames, - boolean isKey) throws InvalidRequestException; + protected abstract Restriction newContainsRestriction(TableMetadata table, VariableSpecifications boundNames, boolean isKey); - protected abstract Restriction newIsNotRestriction(CFMetaData cfm, - VariableSpecifications boundNames) throws InvalidRequestException; + protected abstract Restriction newIsNotRestriction(TableMetadata table, VariableSpecifications boundNames); - protected abstract Restriction newLikeRestriction(CFMetaData cfm, - VariableSpecifications boundNames, - Operator operator) throws InvalidRequestException; + protected abstract Restriction newLikeRestriction(TableMetadata table, VariableSpecifications boundNames, Operator operator); /** * Converts the specified <code>Raw</code> into a <code>Term</code>. @@ -231,8 +223,7 @@ public abstract class Relation protected abstract Term toTerm(List<? extends ColumnSpecification> receivers, Term.Raw raw, String keyspace, - VariableSpecifications boundNames) - throws InvalidRequestException; + VariableSpecifications boundNames); /** * Converts the specified <code>Raw</code> terms into a <code>Term</code>s. @@ -247,7 +238,7 @@ public abstract class Relation protected final List<Term> toTerms(List<? extends ColumnSpecification> receivers, List<? extends Term.Raw> raws, String keyspace, - VariableSpecifications boundNames) throws InvalidRequestException + VariableSpecifications boundNames) { if (raws == null) return null; @@ -266,5 +257,5 @@ public abstract class Relation * @return this object, if the old identifier is not in the set of entities that this relation covers; otherwise * a new Relation with "from" replaced by "to" is returned. */ - public abstract Relation renameIdentifier(ColumnDefinition.Raw from, ColumnDefinition.Raw to); + public abstract Relation renameIdentifier(ColumnMetadata.Raw from, ColumnMetadata.Raw to); }
http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/Sets.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/Sets.java b/src/java/org/apache/cassandra/cql3/Sets.java index e79bda7..2920ed7 100644 --- a/src/java/org/apache/cassandra/cql3/Sets.java +++ b/src/java/org/apache/cassandra/cql3/Sets.java @@ -24,7 +24,7 @@ import java.util.*; import java.util.stream.Collectors; import java.util.stream.StreamSupport; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.ColumnMetadata; import org.apache.cassandra.cql3.functions.Function; import org.apache.cassandra.db.DecoratedKey; import org.apache.cassandra.db.rows.*; @@ -301,7 +301,7 @@ public abstract class Sets public static class Setter extends Operation { - public Setter(ColumnDefinition column, Term t) + public Setter(ColumnMetadata column, Term t) { super(column, t); } @@ -321,7 +321,7 @@ public abstract class Sets public static class Adder extends Operation { - public Adder(ColumnDefinition column, Term t) + public Adder(ColumnMetadata column, Term t) { super(column, t); } @@ -334,7 +334,7 @@ public abstract class Sets doAdd(value, column, params); } - static void doAdd(Term.Terminal value, ColumnDefinition column, UpdateParameters params) throws InvalidRequestException + static void doAdd(Term.Terminal value, ColumnMetadata column, UpdateParameters params) throws InvalidRequestException { if (column.type.isMultiCell()) { @@ -363,7 +363,7 @@ public abstract class Sets // Note that this is reused for Map subtraction too (we subtract a set from a map) public static class Discarder extends Operation { - public Discarder(ColumnDefinition column, Term t) + public Discarder(ColumnMetadata column, Term t) { super(column, t); } @@ -388,7 +388,7 @@ public abstract class Sets public static class ElementDiscarder extends Operation { - public ElementDiscarder(ColumnDefinition column, Term k) + public ElementDiscarder(ColumnMetadata column, Term k) { super(column, k); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/SingleColumnRelation.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/SingleColumnRelation.java b/src/java/org/apache/cassandra/cql3/SingleColumnRelation.java index 719ef68..412eb16 100644 --- a/src/java/org/apache/cassandra/cql3/SingleColumnRelation.java +++ b/src/java/org/apache/cassandra/cql3/SingleColumnRelation.java @@ -21,8 +21,8 @@ import java.util.Collections; import java.util.ArrayList; import java.util.List; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.ColumnMetadata; +import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.cql3.Term.Raw; import org.apache.cassandra.cql3.restrictions.Restriction; import org.apache.cassandra.cql3.restrictions.SingleColumnRestriction; @@ -44,12 +44,12 @@ import static org.apache.cassandra.cql3.statements.RequestValidations.invalidReq */ public final class SingleColumnRelation extends Relation { - private final ColumnDefinition.Raw entity; + private final ColumnMetadata.Raw entity; private final Term.Raw mapKey; private final Term.Raw value; private final List<Term.Raw> inValues; - private SingleColumnRelation(ColumnDefinition.Raw entity, Term.Raw mapKey, Operator type, Term.Raw value, List<Term.Raw> inValues) + private SingleColumnRelation(ColumnMetadata.Raw entity, Term.Raw mapKey, Operator type, Term.Raw value, List<Term.Raw> inValues) { this.entity = entity; this.mapKey = mapKey; @@ -69,7 +69,7 @@ public final class SingleColumnRelation extends Relation * @param type the type that describes how this entity relates to the value. * @param value the value being compared. */ - public SingleColumnRelation(ColumnDefinition.Raw entity, Term.Raw mapKey, Operator type, Term.Raw value) + public SingleColumnRelation(ColumnMetadata.Raw entity, Term.Raw mapKey, Operator type, Term.Raw value) { this(entity, mapKey, type, value, null); } @@ -81,7 +81,7 @@ public final class SingleColumnRelation extends Relation * @param type the type that describes how this entity relates to the value. * @param value the value being compared. */ - public SingleColumnRelation(ColumnDefinition.Raw entity, Operator type, Term.Raw value) + public SingleColumnRelation(ColumnMetadata.Raw entity, Operator type, Term.Raw value) { this(entity, null, type, value); } @@ -96,12 +96,12 @@ public final class SingleColumnRelation extends Relation return inValues; } - public static SingleColumnRelation createInRelation(ColumnDefinition.Raw entity, List<Term.Raw> inValues) + public static SingleColumnRelation createInRelation(ColumnMetadata.Raw entity, List<Term.Raw> inValues) { return new SingleColumnRelation(entity, null, Operator.IN, null, inValues); } - public ColumnDefinition.Raw getEntity() + public ColumnMetadata.Raw getEntity() { return entity; } @@ -135,7 +135,7 @@ public final class SingleColumnRelation extends Relation } } - public Relation renameIdentifier(ColumnDefinition.Raw from, ColumnDefinition.Raw to) + public Relation renameIdentifier(ColumnMetadata.Raw from, ColumnMetadata.Raw to) { return entity.equals(from) ? new SingleColumnRelation(to, mapKey, operator(), value, inValues) @@ -156,31 +156,29 @@ public final class SingleColumnRelation extends Relation } @Override - protected Restriction newEQRestriction(CFMetaData cfm, - VariableSpecifications boundNames) throws InvalidRequestException + protected Restriction newEQRestriction(TableMetadata table, VariableSpecifications boundNames) { - ColumnDefinition columnDef = entity.prepare(cfm); + ColumnMetadata columnDef = entity.prepare(table); if (mapKey == null) { - Term term = toTerm(toReceivers(columnDef), value, cfm.ksName, boundNames); + Term term = toTerm(toReceivers(columnDef), value, table.keyspace, boundNames); return new SingleColumnRestriction.EQRestriction(columnDef, term); } List<? extends ColumnSpecification> receivers = toReceivers(columnDef); - Term entryKey = toTerm(Collections.singletonList(receivers.get(0)), mapKey, cfm.ksName, boundNames); - Term entryValue = toTerm(Collections.singletonList(receivers.get(1)), value, cfm.ksName, boundNames); + Term entryKey = toTerm(Collections.singletonList(receivers.get(0)), mapKey, table.keyspace, boundNames); + Term entryValue = toTerm(Collections.singletonList(receivers.get(1)), value, table.keyspace, boundNames); return new SingleColumnRestriction.ContainsRestriction(columnDef, entryKey, entryValue); } @Override - protected Restriction newINRestriction(CFMetaData cfm, - VariableSpecifications boundNames) throws InvalidRequestException + protected Restriction newINRestriction(TableMetadata table, VariableSpecifications boundNames) { - ColumnDefinition columnDef = entity.prepare(cfm); + ColumnMetadata columnDef = entity.prepare(table); List<? extends ColumnSpecification> receivers = toReceivers(columnDef); - List<Term> terms = toTerms(receivers, inValues, cfm.ksName, boundNames); + List<Term> terms = toTerms(receivers, inValues, table.keyspace, boundNames); if (terms == null) { - Term term = toTerm(receivers, value, cfm.ksName, boundNames); + Term term = toTerm(receivers, value, table.keyspace, boundNames); return new SingleColumnRestriction.InRestrictionWithMarker(columnDef, (Lists.Marker) term); } @@ -192,46 +190,46 @@ public final class SingleColumnRelation extends Relation } @Override - protected Restriction newSliceRestriction(CFMetaData cfm, + protected Restriction newSliceRestriction(TableMetadata table, VariableSpecifications boundNames, Bound bound, - boolean inclusive) throws InvalidRequestException + boolean inclusive) { - ColumnDefinition columnDef = entity.prepare(cfm); + ColumnMetadata columnDef = entity.prepare(table); checkFalse(columnDef.type instanceof DurationType, "Slice restriction are not supported on duration columns"); - Term term = toTerm(toReceivers(columnDef), value, cfm.ksName, boundNames); + Term term = toTerm(toReceivers(columnDef), value, table.keyspace, boundNames); return new SingleColumnRestriction.SliceRestriction(columnDef, bound, inclusive, term); } @Override - protected Restriction newContainsRestriction(CFMetaData cfm, + protected Restriction newContainsRestriction(TableMetadata table, VariableSpecifications boundNames, boolean isKey) throws InvalidRequestException { - ColumnDefinition columnDef = entity.prepare(cfm); - Term term = toTerm(toReceivers(columnDef), value, cfm.ksName, boundNames); + ColumnMetadata columnDef = entity.prepare(table); + Term term = toTerm(toReceivers(columnDef), value, table.keyspace, boundNames); return new SingleColumnRestriction.ContainsRestriction(columnDef, term, isKey); } @Override - protected Restriction newIsNotRestriction(CFMetaData cfm, + protected Restriction newIsNotRestriction(TableMetadata table, VariableSpecifications boundNames) throws InvalidRequestException { - ColumnDefinition columnDef = entity.prepare(cfm); + ColumnMetadata columnDef = entity.prepare(table); // currently enforced by the grammar assert value == Constants.NULL_LITERAL : "Expected null literal for IS NOT relation: " + this.toString(); return new SingleColumnRestriction.IsNotNullRestriction(columnDef); } @Override - protected Restriction newLikeRestriction(CFMetaData cfm, VariableSpecifications boundNames, Operator operator) throws InvalidRequestException + protected Restriction newLikeRestriction(TableMetadata table, VariableSpecifications boundNames, Operator operator) { if (mapKey != null) throw invalidRequest("%s can't be used with collections.", operator()); - ColumnDefinition columnDef = entity.prepare(cfm); - Term term = toTerm(toReceivers(columnDef), value, cfm.ksName, boundNames); + ColumnMetadata columnDef = entity.prepare(table); + Term term = toTerm(toReceivers(columnDef), value, table.keyspace, boundNames); return new SingleColumnRestriction.LikeRestriction(columnDef, operator, term); } @@ -242,7 +240,7 @@ public final class SingleColumnRelation extends Relation * @return the receivers for the specified relation. * @throws InvalidRequestException if the relation is invalid */ - private List<? extends ColumnSpecification> toReceivers(ColumnDefinition columnDef) throws InvalidRequestException + private List<? extends ColumnSpecification> toReceivers(ColumnMetadata columnDef) throws InvalidRequestException { ColumnSpecification receiver = columnDef; http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/TokenRelation.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/TokenRelation.java b/src/java/org/apache/cassandra/cql3/TokenRelation.java index 42464ef..62f603b 100644 --- a/src/java/org/apache/cassandra/cql3/TokenRelation.java +++ b/src/java/org/apache/cassandra/cql3/TokenRelation.java @@ -24,8 +24,8 @@ import java.util.stream.Collectors; import com.google.common.base.Joiner; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.ColumnMetadata; +import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.cql3.Term.Raw; import org.apache.cassandra.cql3.restrictions.Restriction; import org.apache.cassandra.cql3.restrictions.TokenRestriction; @@ -47,11 +47,11 @@ import static org.apache.cassandra.cql3.statements.RequestValidations.invalidReq */ public final class TokenRelation extends Relation { - private final List<ColumnDefinition.Raw> entities; + private final List<ColumnMetadata.Raw> entities; private final Term.Raw value; - public TokenRelation(List<ColumnDefinition.Raw> entities, Operator type, Term.Raw value) + public TokenRelation(List<ColumnMetadata.Raw> entities, Operator type, Term.Raw value) { this.entities = entities; this.relationType = type; @@ -75,44 +75,44 @@ public final class TokenRelation extends Relation } @Override - protected Restriction newEQRestriction(CFMetaData cfm, VariableSpecifications boundNames) throws InvalidRequestException + protected Restriction newEQRestriction(TableMetadata table, VariableSpecifications boundNames) { - List<ColumnDefinition> columnDefs = getColumnDefinitions(cfm); - Term term = toTerm(toReceivers(cfm, columnDefs), value, cfm.ksName, boundNames); - return new TokenRestriction.EQRestriction(cfm, columnDefs, term); + List<ColumnMetadata> columnDefs = getColumnDefinitions(table); + Term term = toTerm(toReceivers(table, columnDefs), value, table.keyspace, boundNames); + return new TokenRestriction.EQRestriction(table, columnDefs, term); } @Override - protected Restriction newINRestriction(CFMetaData cfm, VariableSpecifications boundNames) throws InvalidRequestException + protected Restriction newINRestriction(TableMetadata table, VariableSpecifications boundNames) { throw invalidRequest("%s cannot be used with the token function", operator()); } @Override - protected Restriction newSliceRestriction(CFMetaData cfm, + protected Restriction newSliceRestriction(TableMetadata table, VariableSpecifications boundNames, Bound bound, - boolean inclusive) throws InvalidRequestException + boolean inclusive) { - List<ColumnDefinition> columnDefs = getColumnDefinitions(cfm); - Term term = toTerm(toReceivers(cfm, columnDefs), value, cfm.ksName, boundNames); - return new TokenRestriction.SliceRestriction(cfm, columnDefs, bound, inclusive, term); + List<ColumnMetadata> columnDefs = getColumnDefinitions(table); + Term term = toTerm(toReceivers(table, columnDefs), value, table.keyspace, boundNames); + return new TokenRestriction.SliceRestriction(table, columnDefs, bound, inclusive, term); } @Override - protected Restriction newContainsRestriction(CFMetaData cfm, VariableSpecifications boundNames, boolean isKey) throws InvalidRequestException + protected Restriction newContainsRestriction(TableMetadata table, VariableSpecifications boundNames, boolean isKey) { throw invalidRequest("%s cannot be used with the token function", operator()); } @Override - protected Restriction newIsNotRestriction(CFMetaData cfm, VariableSpecifications boundNames) throws InvalidRequestException + protected Restriction newIsNotRestriction(TableMetadata table, VariableSpecifications boundNames) { throw invalidRequest("%s cannot be used with the token function", operator()); } @Override - protected Restriction newLikeRestriction(CFMetaData cfm, VariableSpecifications boundNames, Operator operator) throws InvalidRequestException + protected Restriction newLikeRestriction(TableMetadata table, VariableSpecifications boundNames, Operator operator) { throw invalidRequest("%s cannot be used with the token function", operator); } @@ -128,12 +128,12 @@ public final class TokenRelation extends Relation return term; } - public Relation renameIdentifier(ColumnDefinition.Raw from, ColumnDefinition.Raw to) + public Relation renameIdentifier(ColumnMetadata.Raw from, ColumnMetadata.Raw to) { if (!entities.contains(from)) return this; - List<ColumnDefinition.Raw> newEntities = entities.stream().map(e -> e.equals(from) ? to : e).collect(Collectors.toList()); + List<ColumnMetadata.Raw> newEntities = entities.stream().map(e -> e.equals(from) ? to : e).collect(Collectors.toList()); return new TokenRelation(newEntities, operator(), value); } @@ -146,48 +146,48 @@ public final class TokenRelation extends Relation /** * Returns the definition of the columns to which apply the token restriction. * - * @param cfm the column family metadata + * @param table the table metadata * @return the definition of the columns to which apply the token restriction. * @throws InvalidRequestException if the entity cannot be resolved */ - private List<ColumnDefinition> getColumnDefinitions(CFMetaData cfm) throws InvalidRequestException + private List<ColumnMetadata> getColumnDefinitions(TableMetadata table) { - List<ColumnDefinition> columnDefs = new ArrayList<>(entities.size()); - for ( ColumnDefinition.Raw raw : entities) - columnDefs.add(raw.prepare(cfm)); + List<ColumnMetadata> columnDefs = new ArrayList<>(entities.size()); + for ( ColumnMetadata.Raw raw : entities) + columnDefs.add(raw.prepare(table)); return columnDefs; } /** * Returns the receivers for this relation. * - * @param cfm the Column Family meta data + * @param table the table meta data * @param columnDefs the column definitions * @return the receivers for the specified relation. * @throws InvalidRequestException if the relation is invalid */ - private static List<? extends ColumnSpecification> toReceivers(CFMetaData cfm, - List<ColumnDefinition> columnDefs) + private static List<? extends ColumnSpecification> toReceivers(TableMetadata table, + List<ColumnMetadata> columnDefs) throws InvalidRequestException { - if (!columnDefs.equals(cfm.partitionKeyColumns())) + if (!columnDefs.equals(table.partitionKeyColumns())) { - checkTrue(columnDefs.containsAll(cfm.partitionKeyColumns()), + checkTrue(columnDefs.containsAll(table.partitionKeyColumns()), "The token() function must be applied to all partition key components or none of them"); checkContainsNoDuplicates(columnDefs, "The token() function contains duplicate partition key components"); - checkContainsOnly(columnDefs, cfm.partitionKeyColumns(), "The token() function must contains only partition key components"); + checkContainsOnly(columnDefs, table.partitionKeyColumns(), "The token() function must contains only partition key components"); throw invalidRequest("The token function arguments must be in the partition key order: %s", - Joiner.on(", ").join(ColumnDefinition.toIdentifiers(cfm.partitionKeyColumns()))); + Joiner.on(", ").join(ColumnMetadata.toIdentifiers(table.partitionKeyColumns()))); } - ColumnDefinition firstColumn = columnDefs.get(0); + ColumnMetadata firstColumn = columnDefs.get(0); return Collections.singletonList(new ColumnSpecification(firstColumn.ksName, firstColumn.cfName, new ColumnIdentifier("partition key token", true), - cfm.partitioner.getTokenValidator())); + table.partitioner.getTokenValidator())); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/UntypedResultSet.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/UntypedResultSet.java b/src/java/org/apache/cassandra/cql3/UntypedResultSet.java index d896071..9733830 100644 --- a/src/java/org/apache/cassandra/cql3/UntypedResultSet.java +++ b/src/java/org/apache/cassandra/cql3/UntypedResultSet.java @@ -22,17 +22,16 @@ import java.net.InetAddress; import java.nio.ByteBuffer; import java.util.*; -import org.apache.cassandra.transport.ProtocolVersion; -import org.apache.cassandra.utils.AbstractIterator; - -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.ColumnMetadata; import org.apache.cassandra.cql3.statements.SelectStatement; import org.apache.cassandra.db.*; -import org.apache.cassandra.db.rows.*; -import org.apache.cassandra.db.partitions.PartitionIterator; import org.apache.cassandra.db.marshal.*; +import org.apache.cassandra.db.partitions.PartitionIterator; +import org.apache.cassandra.db.rows.*; +import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.service.pager.QueryPager; +import org.apache.cassandra.transport.ProtocolVersion; +import org.apache.cassandra.utils.AbstractIterator; import org.apache.cassandra.utils.FBUtilities; /** a utility for doing internal cql-based queries */ @@ -221,19 +220,19 @@ public abstract class UntypedResultSet implements Iterable<UntypedResultSet.Row> data.put(names.get(i).name.toString(), columns.get(i)); } - public static Row fromInternalRow(CFMetaData metadata, DecoratedKey key, org.apache.cassandra.db.rows.Row row) + public static Row fromInternalRow(TableMetadata metadata, DecoratedKey key, org.apache.cassandra.db.rows.Row row) { Map<String, ByteBuffer> data = new HashMap<>(); ByteBuffer[] keyComponents = SelectStatement.getComponents(metadata, key); - for (ColumnDefinition def : metadata.partitionKeyColumns()) + for (ColumnMetadata def : metadata.partitionKeyColumns()) data.put(def.name.toString(), keyComponents[def.position()]); Clustering clustering = row.clustering(); - for (ColumnDefinition def : metadata.clusteringColumns()) + for (ColumnMetadata def : metadata.clusteringColumns()) data.put(def.name.toString(), clustering.get(def.position())); - for (ColumnDefinition def : metadata.partitionColumns()) + for (ColumnMetadata def : metadata.regularAndStaticColumns()) { if (def.isSimple()) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/UpdateParameters.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/UpdateParameters.java b/src/java/org/apache/cassandra/cql3/UpdateParameters.java index d065269..0be8f51 100644 --- a/src/java/org/apache/cassandra/cql3/UpdateParameters.java +++ b/src/java/org/apache/cassandra/cql3/UpdateParameters.java @@ -20,8 +20,8 @@ package org.apache.cassandra.cql3; import java.nio.ByteBuffer; import java.util.Map; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.ColumnMetadata; +import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.db.*; import org.apache.cassandra.db.context.CounterContext; import org.apache.cassandra.db.filter.ColumnFilter; @@ -35,8 +35,8 @@ import org.apache.cassandra.utils.FBUtilities; */ public class UpdateParameters { - public final CFMetaData metadata; - public final PartitionColumns updatedColumns; + public final TableMetadata metadata; + public final RegularAndStaticColumns updatedColumns; public final QueryOptions options; private final int nowInSec; @@ -54,8 +54,8 @@ public class UpdateParameters // The builder currently in use. Will alias either staticBuilder or regularBuilder, which are themselves built lazily. private Row.Builder builder; - public UpdateParameters(CFMetaData metadata, - PartitionColumns updatedColumns, + public UpdateParameters(TableMetadata metadata, + RegularAndStaticColumns updatedColumns, QueryOptions options, long timestamp, int ttl, @@ -124,27 +124,27 @@ public class UpdateParameters // the "compact" one. As such, deleting the row or deleting that single cell is equivalent. We favor the later // for backward compatibility (thought it doesn't truly matter anymore). if (metadata.isCompactTable() && builder.clustering() != Clustering.STATIC_CLUSTERING) - addTombstone(metadata.compactValueColumn()); + addTombstone(metadata.compactValueColumn); else builder.addRowDeletion(Row.Deletion.regular(deletionTime)); } - public void addTombstone(ColumnDefinition column) throws InvalidRequestException + public void addTombstone(ColumnMetadata column) throws InvalidRequestException { addTombstone(column, null); } - public void addTombstone(ColumnDefinition column, CellPath path) throws InvalidRequestException + public void addTombstone(ColumnMetadata column, CellPath path) throws InvalidRequestException { builder.addCell(BufferCell.tombstone(column, timestamp, nowInSec, path)); } - public void addCell(ColumnDefinition column, ByteBuffer value) throws InvalidRequestException + public void addCell(ColumnMetadata column, ByteBuffer value) throws InvalidRequestException { addCell(column, null, value); } - public void addCell(ColumnDefinition column, CellPath path, ByteBuffer value) throws InvalidRequestException + public void addCell(ColumnMetadata column, CellPath path, ByteBuffer value) throws InvalidRequestException { Cell cell = ttl == LivenessInfo.NO_TTL ? BufferCell.live(column, timestamp, value, path) @@ -152,7 +152,7 @@ public class UpdateParameters builder.addCell(cell); } - public void addCounter(ColumnDefinition column, long increment) throws InvalidRequestException + public void addCounter(ColumnMetadata column, long increment) throws InvalidRequestException { assert ttl == LivenessInfo.NO_TTL; @@ -168,12 +168,12 @@ public class UpdateParameters builder.addCell(BufferCell.live(column, timestamp, CounterContext.instance().createLocal(increment))); } - public void setComplexDeletionTime(ColumnDefinition column) + public void setComplexDeletionTime(ColumnMetadata column) { builder.addComplexDeletion(column, deletionTime); } - public void setComplexDeletionTimeForOverwrite(ColumnDefinition column) + public void setComplexDeletionTimeForOverwrite(ColumnMetadata column) { builder.addComplexDeletion(column, new DeletionTime(deletionTime.markedForDeleteAt() - 1, deletionTime.localDeletionTime())); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/UserTypes.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/UserTypes.java b/src/java/org/apache/cassandra/cql3/UserTypes.java index c8ddad0..9b87352 100644 --- a/src/java/org/apache/cassandra/cql3/UserTypes.java +++ b/src/java/org/apache/cassandra/cql3/UserTypes.java @@ -21,7 +21,7 @@ import java.nio.ByteBuffer; import java.util.*; import java.util.stream.Collectors; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.ColumnMetadata; import org.apache.cassandra.cql3.functions.Function; import org.apache.cassandra.db.DecoratedKey; import org.apache.cassandra.db.marshal.*; @@ -315,7 +315,7 @@ public abstract class UserTypes public static class Setter extends Operation { - public Setter(ColumnDefinition column, Term t) + public Setter(ColumnMetadata column, Term t) { super(column, t); } @@ -361,7 +361,7 @@ public abstract class UserTypes { private final FieldIdentifier field; - public SetterByField(ColumnDefinition column, FieldIdentifier field, Term t) + public SetterByField(ColumnMetadata column, FieldIdentifier field, Term t) { super(column, t); this.field = field; @@ -388,7 +388,7 @@ public abstract class UserTypes { private final FieldIdentifier field; - public DeleterByField(ColumnDefinition column, FieldIdentifier field) + public DeleterByField(ColumnMetadata column, FieldIdentifier field) { super(column, null); this.field = field; http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/Validation.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/Validation.java b/src/java/org/apache/cassandra/cql3/Validation.java index 3f388eb..34a4027 100644 --- a/src/java/org/apache/cassandra/cql3/Validation.java +++ b/src/java/org/apache/cassandra/cql3/Validation.java @@ -19,12 +19,9 @@ package org.apache.cassandra.cql3; import java.nio.ByteBuffer; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.Schema; -import org.apache.cassandra.config.SchemaConstants; -import org.apache.cassandra.db.KeyspaceNotDefinedException; -import org.apache.cassandra.serializers.MarshalException; import org.apache.cassandra.exceptions.InvalidRequestException; +import org.apache.cassandra.schema.TableMetadata; +import org.apache.cassandra.serializers.MarshalException; import org.apache.cassandra.utils.FBUtilities; /** @@ -36,37 +33,6 @@ import org.apache.cassandra.utils.FBUtilities; */ public abstract class Validation { - /** - * Retrieves the metadata for the provided keyspace and table name, throwing - * a meaningful user exception if those doen't exist. - * - * @param keyspaceName the keyspace name. - * @param tableName the table name. - * @return the metadata for table {@code keyspaceName.tableName} if it - * exists (otherwise an {@code InvalidRequestException} is thrown). - * - * @throws InvalidRequestException if the table requested doesn't exist. - */ - public static CFMetaData validateColumnFamily(String keyspaceName, String tableName) - throws InvalidRequestException - { - validateKeyspace(keyspaceName); - if (tableName.isEmpty()) - throw new InvalidRequestException("non-empty table is required"); - - CFMetaData metadata = Schema.instance.getCFMetaData(keyspaceName, tableName); - if (metadata == null) - throw new InvalidRequestException("unconfigured table " + tableName); - - return metadata; - } - - private static void validateKeyspace(String keyspaceName) - throws KeyspaceNotDefinedException - { - if (!Schema.instance.getKeyspaces().contains(keyspaceName)) - throw new KeyspaceNotDefinedException("Keyspace " + keyspaceName + " does not exist"); - } /** * Validates a (full serialized) partition key. @@ -76,8 +42,7 @@ public abstract class Validation * * @throws InvalidRequestException if the provided {@code key} is invalid. */ - public static void validateKey(CFMetaData metadata, ByteBuffer key) - throws InvalidRequestException + public static void validateKey(TableMetadata metadata, ByteBuffer key) { if (key == null || key.remaining() == 0) throw new InvalidRequestException("Key may not be empty"); @@ -92,26 +57,11 @@ public abstract class Validation try { - metadata.getKeyValidator().validate(key); + metadata.partitionKeyType.validate(key); } catch (MarshalException e) { throw new InvalidRequestException(e.getMessage()); } } - - /** - * Validates that the provided keyspace is not one of the system keyspace. - * - * @param keyspace the keyspace name to validate. - * - * @throws InvalidRequestException if {@code keyspace} is the name of a - * system keyspace. - */ - public static void validateKeyspaceNotSystem(String keyspace) - throws InvalidRequestException - { - if (SchemaConstants.isSystemKeyspace(keyspace)) - throw new InvalidRequestException(String.format("%s keyspace is not user-modifiable", keyspace)); - } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/VariableSpecifications.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/VariableSpecifications.java b/src/java/org/apache/cassandra/cql3/VariableSpecifications.java index 24f71e4..96290a6 100644 --- a/src/java/org/apache/cassandra/cql3/VariableSpecifications.java +++ b/src/java/org/apache/cassandra/cql3/VariableSpecifications.java @@ -17,24 +17,24 @@ */ package org.apache.cassandra.cql3; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.ColumnDefinition; - import java.util.Arrays; import java.util.Collections; import java.util.List; +import org.apache.cassandra.schema.ColumnMetadata; +import org.apache.cassandra.schema.TableMetadata; + public class VariableSpecifications { private final List<ColumnIdentifier> variableNames; private final ColumnSpecification[] specs; - private final ColumnDefinition[] targetColumns; + private final ColumnMetadata[] targetColumns; public VariableSpecifications(List<ColumnIdentifier> variableNames) { this.variableNames = variableNames; this.specs = new ColumnSpecification[variableNames.size()]; - this.targetColumns = new ColumnDefinition[variableNames.size()]; + this.targetColumns = new ColumnMetadata[variableNames.size()]; } /** @@ -58,21 +58,21 @@ public class VariableSpecifications /** * Returns an array with the same length as the number of partition key columns for the table corresponding - * to cfm. Each short in the array represents the bind index of the marker that holds the value for that + * to table. Each short in the array represents the bind index of the marker that holds the value for that * partition key column. If there are no bind markers for any of the partition key columns, null is returned. * * Callers of this method should ensure that all statements operate on the same table. */ - public short[] getPartitionKeyBindIndexes(CFMetaData cfm) + public short[] getPartitionKeyBindIndexes(TableMetadata metadata) { - short[] partitionKeyPositions = new short[cfm.partitionKeyColumns().size()]; + short[] partitionKeyPositions = new short[metadata.partitionKeyColumns().size()]; boolean[] set = new boolean[partitionKeyPositions.length]; for (int i = 0; i < targetColumns.length; i++) { - ColumnDefinition targetColumn = targetColumns[i]; + ColumnMetadata targetColumn = targetColumns[i]; if (targetColumn != null && targetColumn.isPartitionKey()) { - assert targetColumn.ksName.equals(cfm.ksName) && targetColumn.cfName.equals(cfm.cfName); + assert targetColumn.ksName.equals(metadata.keyspace) && targetColumn.cfName.equals(metadata.name); partitionKeyPositions[targetColumn.position()] = (short) i; set[targetColumn.position()] = true; } @@ -87,8 +87,8 @@ public class VariableSpecifications public void add(int bindIndex, ColumnSpecification spec) { - if (spec instanceof ColumnDefinition) - targetColumns[bindIndex] = (ColumnDefinition) spec; + if (spec instanceof ColumnMetadata) + targetColumns[bindIndex] = (ColumnMetadata) spec; ColumnIdentifier bindMarkerName = variableNames.get(bindIndex); // Use the user name, if there is one http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/conditions/AbstractConditions.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/conditions/AbstractConditions.java b/src/java/org/apache/cassandra/cql3/conditions/AbstractConditions.java index 9b6dd7e..0e2646e 100644 --- a/src/java/org/apache/cassandra/cql3/conditions/AbstractConditions.java +++ b/src/java/org/apache/cassandra/cql3/conditions/AbstractConditions.java @@ -19,7 +19,7 @@ package org.apache.cassandra.cql3.conditions; import java.util.List; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.ColumnMetadata; import org.apache.cassandra.cql3.functions.Function; /** @@ -32,7 +32,7 @@ abstract class AbstractConditions implements Conditions { } - public Iterable<ColumnDefinition> getColumns() + public Iterable<ColumnMetadata> getColumns() { return null; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/conditions/ColumnCondition.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/conditions/ColumnCondition.java b/src/java/org/apache/cassandra/cql3/conditions/ColumnCondition.java index cfd62f5..31b7185 100644 --- a/src/java/org/apache/cassandra/cql3/conditions/ColumnCondition.java +++ b/src/java/org/apache/cassandra/cql3/conditions/ColumnCondition.java @@ -22,13 +22,13 @@ import java.util.*; import com.google.common.collect.Iterators; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.cql3.*; import org.apache.cassandra.cql3.Term.Terminal; import org.apache.cassandra.cql3.functions.Function; import org.apache.cassandra.db.rows.*; import org.apache.cassandra.db.marshal.*; +import org.apache.cassandra.schema.ColumnMetadata; +import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.transport.ProtocolVersion; import org.apache.cassandra.utils.ByteBufferUtil; @@ -39,11 +39,11 @@ import static org.apache.cassandra.cql3.statements.RequestValidations.*; */ public abstract class ColumnCondition { - public final ColumnDefinition column; + public final ColumnMetadata column; public final Operator operator; private final Terms terms; - private ColumnCondition(ColumnDefinition column, Operator op, Terms terms) + private ColumnCondition(ColumnMetadata column, Operator op, Terms terms) { this.column = column; this.operator = op; @@ -116,7 +116,7 @@ public abstract class ColumnCondition */ private static final class SimpleColumnCondition extends ColumnCondition { - public SimpleColumnCondition(ColumnDefinition column, Operator op, Terms values) + public SimpleColumnCondition(ColumnMetadata column, Operator op, Terms values) { super(column, op, values); } @@ -140,7 +140,7 @@ public abstract class ColumnCondition { private final Term collectionElement; - public CollectionElementCondition(ColumnDefinition column, Term collectionElement, Operator op, Terms values) + public CollectionElementCondition(ColumnMetadata column, Term collectionElement, Operator op, Terms values) { super(column, op, values); this.collectionElement = collectionElement; @@ -171,7 +171,7 @@ public abstract class ColumnCondition { private final FieldIdentifier udtField; - public UDTFieldCondition(ColumnDefinition column, FieldIdentifier udtField, Operator op, Terms values) + public UDTFieldCondition(ColumnMetadata column, FieldIdentifier udtField, Operator op, Terms values) { super(column, op, values); assert udtField != null; @@ -187,7 +187,7 @@ public abstract class ColumnCondition /** * A regular column, simple condition. */ - public static ColumnCondition condition(ColumnDefinition column, Operator op, Terms terms) + public static ColumnCondition condition(ColumnMetadata column, Operator op, Terms terms) { return new SimpleColumnCondition(column, op, terms); } @@ -195,7 +195,7 @@ public abstract class ColumnCondition /** * A collection column, simple condition. */ - public static ColumnCondition condition(ColumnDefinition column, Term collectionElement, Operator op, Terms terms) + public static ColumnCondition condition(ColumnMetadata column, Term collectionElement, Operator op, Terms terms) { return new CollectionElementCondition(column, collectionElement, op, terms); } @@ -203,17 +203,17 @@ public abstract class ColumnCondition /** * A UDT column, simple condition. */ - public static ColumnCondition condition(ColumnDefinition column, FieldIdentifier udtField, Operator op, Terms terms) + public static ColumnCondition condition(ColumnMetadata column, FieldIdentifier udtField, Operator op, Terms terms) { return new UDTFieldCondition(column, udtField, op, terms); } public static abstract class Bound { - public final ColumnDefinition column; + public final ColumnMetadata column; public final Operator comparisonOperator; - protected Bound(ColumnDefinition column, Operator operator) + protected Bound(ColumnMetadata column, Operator operator) { this.column = column; // If the operator is an IN we want to compare the value using an EQ. @@ -257,21 +257,21 @@ public abstract class ColumnCondition } } - protected static final Cell getCell(Row row, ColumnDefinition column) + protected static final Cell getCell(Row row, ColumnMetadata column) { // If we're asking for a given cell, and we didn't got any row from our read, it's // the same as not having said cell. return row == null ? null : row.getCell(column); } - protected static final Cell getCell(Row row, ColumnDefinition column, CellPath path) + protected static final Cell getCell(Row row, ColumnMetadata column, CellPath path) { // If we're asking for a given cell, and we didn't got any row from our read, it's // the same as not having said cell. return row == null ? null : row.getCell(column, path); } - protected static final Iterator<Cell> getCells(Row row, ColumnDefinition column) + protected static final Iterator<Cell> getCells(Row row, ColumnMetadata column) { // If we're asking for a complex cells, and we didn't got any row from our read, it's // the same as not having any cells for that column. @@ -312,7 +312,7 @@ public abstract class ColumnCondition */ private final List<ByteBuffer> values; - private SimpleBound(ColumnDefinition column, Operator operator, List<ByteBuffer> values) + private SimpleBound(ColumnMetadata column, Operator operator, List<ByteBuffer> values) { super(column, operator); this.values = values; @@ -356,10 +356,10 @@ public abstract class ColumnCondition */ private final List<ByteBuffer> values; - private ElementAccessBound(ColumnDefinition column, - ByteBuffer collectionElement, - Operator operator, - List<ByteBuffer> values) + private ElementAccessBound(ColumnMetadata column, + ByteBuffer collectionElement, + Operator operator, + List<ByteBuffer> values) { super(column, operator); @@ -452,7 +452,7 @@ public abstract class ColumnCondition { private final List<Term.Terminal> values; - public MultiCellCollectionBound(ColumnDefinition column, Operator operator, List<Term.Terminal> values) + public MultiCellCollectionBound(ColumnMetadata column, Operator operator, List<Term.Terminal> values) { super(column, operator); assert column.type.isMultiCell(); @@ -586,7 +586,7 @@ public abstract class ColumnCondition */ private final List<ByteBuffer> values; - private UDTFieldAccessBound(ColumnDefinition column, FieldIdentifier field, Operator operator, List<ByteBuffer> values) + private UDTFieldAccessBound(ColumnMetadata column, FieldIdentifier field, Operator operator, List<ByteBuffer> values) { super(column, operator); assert column.type.isUDT() && field != null; @@ -645,7 +645,7 @@ public abstract class ColumnCondition */ private final ProtocolVersion protocolVersion; - private MultiCellUdtBound(ColumnDefinition column, Operator op, List<ByteBuffer> values, ProtocolVersion protocolVersion) + private MultiCellUdtBound(ColumnMetadata column, Operator op, List<ByteBuffer> values, ProtocolVersion protocolVersion) { super(column, op); assert column.type.isMultiCell(); @@ -756,7 +756,7 @@ public abstract class ColumnCondition return new Raw(null, null, inMarker, null, udtField, Operator.IN); } - public ColumnCondition prepare(String keyspace, ColumnDefinition receiver, CFMetaData cfm) + public ColumnCondition prepare(String keyspace, ColumnMetadata receiver, TableMetadata cfm) { if (receiver.type instanceof CounterColumnType) throw invalidRequest("Conditions on counters are not supported"); http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/conditions/ColumnConditions.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/conditions/ColumnConditions.java b/src/java/org/apache/cassandra/cql3/conditions/ColumnConditions.java index b0378b7..3057b05 100644 --- a/src/java/org/apache/cassandra/cql3/conditions/ColumnConditions.java +++ b/src/java/org/apache/cassandra/cql3/conditions/ColumnConditions.java @@ -24,11 +24,11 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.cql3.QueryOptions; import org.apache.cassandra.cql3.functions.Function; import org.apache.cassandra.cql3.statements.CQL3CasRequest; import org.apache.cassandra.db.Clustering; +import org.apache.cassandra.schema.ColumnMetadata; /** * A set of <code>ColumnCondition</code>s. @@ -68,7 +68,7 @@ public final class ColumnConditions extends AbstractConditions } @Override - public Collection<ColumnDefinition> getColumns() + public Collection<ColumnMetadata> getColumns() { return Stream.concat(columnConditions.stream(), staticConditions.stream()) .map(e -> e.column) @@ -136,7 +136,7 @@ public final class ColumnConditions extends AbstractConditions */ public Builder add(ColumnCondition condition) { - List<ColumnCondition> conds = null; + List<ColumnCondition> conds; if (condition.column.isStatic()) { if (staticConditions.isEmpty()) http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/conditions/Conditions.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/conditions/Conditions.java b/src/java/org/apache/cassandra/cql3/conditions/Conditions.java index 0214fcf..1622be0 100644 --- a/src/java/org/apache/cassandra/cql3/conditions/Conditions.java +++ b/src/java/org/apache/cassandra/cql3/conditions/Conditions.java @@ -19,11 +19,11 @@ package org.apache.cassandra.cql3.conditions; import java.util.List; -import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.cql3.QueryOptions; import org.apache.cassandra.cql3.functions.Function; import org.apache.cassandra.cql3.statements.CQL3CasRequest; import org.apache.cassandra.db.Clustering; +import org.apache.cassandra.schema.ColumnMetadata; /** * Conditions that can be applied to a mutation statement. @@ -56,7 +56,7 @@ public interface Conditions * Returns the column definitions to which apply the conditions. * @return the column definitions to which apply the conditions. */ - Iterable<ColumnDefinition> getColumns(); + Iterable<ColumnMetadata> getColumns(); /** * Checks if this <code>Conditions</code> is empty. http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/functions/AbstractFunction.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/functions/AbstractFunction.java b/src/java/org/apache/cassandra/cql3/functions/AbstractFunction.java index aa7555f..5e10e9f 100644 --- a/src/java/org/apache/cassandra/cql3/functions/AbstractFunction.java +++ b/src/java/org/apache/cassandra/cql3/functions/AbstractFunction.java @@ -22,10 +22,13 @@ import java.util.List; import com.google.common.base.Objects; import org.apache.cassandra.cql3.AssignmentTestable; +import org.apache.cassandra.cql3.CQL3Type; import org.apache.cassandra.cql3.ColumnSpecification; import org.apache.cassandra.db.marshal.AbstractType; import org.apache.commons.lang3.text.StrBuilder; +import static java.util.stream.Collectors.toList; + /** * Base class for our native/hardcoded functions. */ @@ -57,6 +60,14 @@ public abstract class AbstractFunction implements Function return returnType; } + public List<String> argumentsList() + { + return argTypes().stream() + .map(AbstractType::asCQL3Type) + .map(CQL3Type::toString) + .collect(toList()); + } + @Override public boolean equals(Object o) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/functions/FunctionName.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/functions/FunctionName.java b/src/java/org/apache/cassandra/cql3/functions/FunctionName.java index aa980e9..be71d52 100644 --- a/src/java/org/apache/cassandra/cql3/functions/FunctionName.java +++ b/src/java/org/apache/cassandra/cql3/functions/FunctionName.java @@ -19,7 +19,7 @@ package org.apache.cassandra.cql3.functions; import com.google.common.base.Objects; -import org.apache.cassandra.config.SchemaConstants; +import org.apache.cassandra.schema.SchemaConstants; public final class FunctionName { http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/functions/FunctionResolver.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/functions/FunctionResolver.java b/src/java/org/apache/cassandra/cql3/functions/FunctionResolver.java index 7234d1f..9c7e85f 100644 --- a/src/java/org/apache/cassandra/cql3/functions/FunctionResolver.java +++ b/src/java/org/apache/cassandra/cql3/functions/FunctionResolver.java @@ -21,11 +21,11 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.apache.cassandra.config.Schema; import org.apache.cassandra.cql3.AbstractMarker; import org.apache.cassandra.cql3.AssignmentTestable; import org.apache.cassandra.cql3.ColumnIdentifier; import org.apache.cassandra.cql3.ColumnSpecification; +import org.apache.cassandra.schema.Schema; import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.exceptions.InvalidRequestException; @@ -70,7 +70,7 @@ public final class FunctionResolver throws InvalidRequestException { if (name.equalsNativeFunction(TOKEN_FUNCTION_NAME)) - return new TokenFct(Schema.instance.getCFMetaData(receiverKs, receiverCf)); + return new TokenFct(Schema.instance.getTableMetadata(receiverKs, receiverCf)); // The toJson() function can accept any type of argument, so instances of it are not pre-declared. Instead, // we create new instances as needed while handling selectors (which is the only place that toJson() is supported, http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/functions/OperationFcts.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/functions/OperationFcts.java b/src/java/org/apache/cassandra/cql3/functions/OperationFcts.java index 1f115a9..0a039c0 100644 --- a/src/java/org/apache/cassandra/cql3/functions/OperationFcts.java +++ b/src/java/org/apache/cassandra/cql3/functions/OperationFcts.java @@ -22,7 +22,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.apache.cassandra.config.SchemaConstants; +import org.apache.cassandra.schema.SchemaConstants; import org.apache.cassandra.db.marshal.*; import org.apache.cassandra.exceptions.OperationExecutionException; import org.apache.cassandra.transport.ProtocolVersion; http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/functions/TokenFct.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/functions/TokenFct.java b/src/java/org/apache/cassandra/cql3/functions/TokenFct.java index 1907641..e93084f 100644 --- a/src/java/org/apache/cassandra/cql3/functions/TokenFct.java +++ b/src/java/org/apache/cassandra/cql3/functions/TokenFct.java @@ -20,8 +20,8 @@ package org.apache.cassandra.cql3.functions; import java.nio.ByteBuffer; import java.util.List; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.ColumnMetadata; +import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.db.CBuilder; import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.exceptions.InvalidRequestException; @@ -29,26 +29,26 @@ import org.apache.cassandra.transport.ProtocolVersion; public class TokenFct extends NativeScalarFunction { - private final CFMetaData cfm; + private final TableMetadata metadata; - public TokenFct(CFMetaData cfm) + public TokenFct(TableMetadata metadata) { - super("token", cfm.partitioner.getTokenValidator(), getKeyTypes(cfm)); - this.cfm = cfm; + super("token", metadata.partitioner.getTokenValidator(), getKeyTypes(metadata)); + this.metadata = metadata; } - private static AbstractType[] getKeyTypes(CFMetaData cfm) + private static AbstractType[] getKeyTypes(TableMetadata metadata) { - AbstractType[] types = new AbstractType[cfm.partitionKeyColumns().size()]; + AbstractType[] types = new AbstractType[metadata.partitionKeyColumns().size()]; int i = 0; - for (ColumnDefinition def : cfm.partitionKeyColumns()) + for (ColumnMetadata def : metadata.partitionKeyColumns()) types[i++] = def.type; return types; } public ByteBuffer execute(ProtocolVersion protocolVersion, List<ByteBuffer> parameters) throws InvalidRequestException { - CBuilder builder = CBuilder.create(cfm.getKeyValidatorAsClusteringComparator()); + CBuilder builder = CBuilder.create(metadata.partitionKeyAsClusteringComparator()); for (int i = 0; i < parameters.size(); i++) { ByteBuffer bb = parameters.get(i); @@ -56,6 +56,6 @@ public class TokenFct extends NativeScalarFunction return null; builder.add(bb); } - return cfm.partitioner.getTokenFactory().toByteArray(cfm.partitioner.getToken(CFMetaData.serializePartitionKey(builder.build()))); + return metadata.partitioner.getTokenFactory().toByteArray(metadata.partitioner.getToken(builder.build().serializeAsPartitionKey())); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/functions/UDFunction.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/functions/UDFunction.java b/src/java/org/apache/cassandra/cql3/functions/UDFunction.java index f8af619..b6fedcc 100644 --- a/src/java/org/apache/cassandra/cql3/functions/UDFunction.java +++ b/src/java/org/apache/cassandra/cql3/functions/UDFunction.java @@ -42,10 +42,9 @@ import org.slf4j.LoggerFactory; import com.datastax.driver.core.DataType; import com.datastax.driver.core.TypeCodec; -import com.datastax.driver.core.UserType; import org.apache.cassandra.config.Config; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.config.Schema; +import org.apache.cassandra.schema.Schema; import org.apache.cassandra.cql3.ColumnIdentifier; import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.exceptions.FunctionExecutionException; @@ -53,10 +52,8 @@ import org.apache.cassandra.exceptions.InvalidRequestException; import org.apache.cassandra.schema.Functions; import org.apache.cassandra.schema.KeyspaceMetadata; import org.apache.cassandra.service.ClientWarn; -import org.apache.cassandra.service.MigrationManager; import org.apache.cassandra.tracing.Tracing; import org.apache.cassandra.transport.ProtocolVersion; -import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.JVMStabilityInspector; /** @@ -212,7 +209,7 @@ public abstract class UDFunction extends AbstractFunction implements ScalarFunct this.argCodecs = UDHelper.codecsFor(argDataTypes); this.returnCodec = UDHelper.codecFor(returnDataType); this.calledOnNullInput = calledOnNullInput; - KeyspaceMetadata keyspaceMetadata = Schema.instance.getKSMetaData(name.keyspace); + KeyspaceMetadata keyspaceMetadata = Schema.instance.getKeyspaceMetadata(name.keyspace); this.udfContext = new UDFContextImpl(argNames, argCodecs, returnCodec, keyspaceMetadata); } @@ -605,37 +602,6 @@ public abstract class UDFunction extends AbstractFunction implements ScalarFunct return Objects.hashCode(name, Functions.typeHashCode(argTypes), Functions.typeHashCode(returnType), returnType, language, body); } - public void userTypeUpdated(String ksName, String typeName) - { - boolean updated = false; - - for (int i = 0; i < argCodecs.length; i++) - { - DataType dataType = argCodecs[i].getCqlType(); - if (dataType instanceof UserType) - { - UserType userType = (UserType) dataType; - if (userType.getKeyspace().equals(ksName) && userType.getTypeName().equals(typeName)) - { - KeyspaceMetadata ksm = Schema.instance.getKSMetaData(ksName); - assert ksm != null; - - org.apache.cassandra.db.marshal.UserType ut = ksm.types.get(ByteBufferUtil.bytes(typeName)).get(); - - DataType newUserType = UDHelper.driverType(ut); - argCodecs[i] = UDHelper.codecFor(newUserType); - - argTypes.set(i, ut); - - updated = true; - } - } - } - - if (updated) - MigrationManager.announceNewFunction(this, true); - } - private static class UDFClassLoader extends ClassLoader { // insecureClassLoader is the C* class loader http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/restrictions/ClusteringColumnRestrictions.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/restrictions/ClusteringColumnRestrictions.java b/src/java/org/apache/cassandra/cql3/restrictions/ClusteringColumnRestrictions.java index ed0d325..f537255 100644 --- a/src/java/org/apache/cassandra/cql3/restrictions/ClusteringColumnRestrictions.java +++ b/src/java/org/apache/cassandra/cql3/restrictions/ClusteringColumnRestrictions.java @@ -19,8 +19,8 @@ package org.apache.cassandra.cql3.restrictions; import java.util.*; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.ColumnMetadata; +import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.cql3.QueryOptions; import org.apache.cassandra.cql3.statements.Bound; import org.apache.cassandra.db.*; @@ -47,14 +47,14 @@ final class ClusteringColumnRestrictions extends RestrictionSetWrapper */ private final boolean allowFiltering; - public ClusteringColumnRestrictions(CFMetaData cfm) + public ClusteringColumnRestrictions(TableMetadata table) { - this(cfm, false); + this(table, false); } - public ClusteringColumnRestrictions(CFMetaData cfm, boolean allowFiltering) + public ClusteringColumnRestrictions(TableMetadata table, boolean allowFiltering) { - this(cfm.comparator, new RestrictionSet(), allowFiltering); + this(table.comparator, new RestrictionSet(), allowFiltering); } private ClusteringColumnRestrictions(ClusteringComparator comparator, @@ -74,8 +74,8 @@ final class ClusteringColumnRestrictions extends RestrictionSetWrapper if (!isEmpty() && !allowFiltering) { SingleRestriction lastRestriction = restrictions.lastRestriction(); - ColumnDefinition lastRestrictionStart = lastRestriction.getFirstColumn(); - ColumnDefinition newRestrictionStart = restriction.getFirstColumn(); + ColumnMetadata lastRestrictionStart = lastRestriction.getFirstColumn(); + ColumnMetadata newRestrictionStart = restriction.getFirstColumn(); checkFalse(lastRestriction.isSlice() && newRestrictionStart.position() > lastRestrictionStart.position(), "Clustering column \"%s\" cannot be restricted (preceding column \"%s\" is restricted by a non-EQ relation)", http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/restrictions/CustomIndexExpression.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/restrictions/CustomIndexExpression.java b/src/java/org/apache/cassandra/cql3/restrictions/CustomIndexExpression.java index eb91928..6ea6842 100644 --- a/src/java/org/apache/cassandra/cql3/restrictions/CustomIndexExpression.java +++ b/src/java/org/apache/cassandra/cql3/restrictions/CustomIndexExpression.java @@ -18,7 +18,7 @@ package org.apache.cassandra.cql3.restrictions; -import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.cql3.*; import org.apache.cassandra.db.filter.RowFilter; import org.apache.cassandra.db.marshal.AbstractType; @@ -38,21 +38,19 @@ public class CustomIndexExpression this.valueRaw = value; } - public void prepareValue(CFMetaData cfm, AbstractType<?> expressionType, VariableSpecifications boundNames) + public void prepareValue(TableMetadata table, AbstractType<?> expressionType, VariableSpecifications boundNames) { - ColumnSpecification spec = new ColumnSpecification(cfm.ksName, cfm.ksName, valueColId, expressionType); - value = valueRaw.prepare(cfm.ksName, spec); + ColumnSpecification spec = new ColumnSpecification(table.keyspace, table.keyspace, valueColId, expressionType); + value = valueRaw.prepare(table.keyspace, spec); value.collectMarkerSpecification(boundNames); } - public void addToRowFilter(RowFilter filter, - CFMetaData cfm, - QueryOptions options) + public void addToRowFilter(RowFilter filter, TableMetadata table, QueryOptions options) { - filter.addCustomIndexExpression(cfm, - cfm.getIndexes() - .get(targetIndex.getIdx()) - .orElseThrow(() -> IndexRestrictions.indexNotFound(targetIndex, cfm)), + filter.addCustomIndexExpression(table, + table.indexes + .get(targetIndex.getIdx()) + .orElseThrow(() -> IndexRestrictions.indexNotFound(targetIndex, table)), value.bindAndGet(options)); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/restrictions/IndexRestrictions.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/restrictions/IndexRestrictions.java b/src/java/org/apache/cassandra/cql3/restrictions/IndexRestrictions.java index c7f6b5f..ced04ed 100644 --- a/src/java/org/apache/cassandra/cql3/restrictions/IndexRestrictions.java +++ b/src/java/org/apache/cassandra/cql3/restrictions/IndexRestrictions.java @@ -21,14 +21,14 @@ package org.apache.cassandra.cql3.restrictions; import java.util.ArrayList; import java.util.List; -import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.cql3.IndexName; import org.apache.cassandra.exceptions.InvalidRequestException; public class IndexRestrictions { - public static final String INDEX_NOT_FOUND = "Invalid index expression, index %s not found for %s.%s"; - public static final String INVALID_INDEX = "Target index %s cannot be used to query %s.%s"; + public static final String INDEX_NOT_FOUND = "Invalid index expression, index %s not found for %s"; + public static final String INVALID_INDEX = "Target index %s cannot be used to query %s"; public static final String CUSTOM_EXPRESSION_NOT_SUPPORTED = "Index %s does not support custom expressions"; public static final String NON_CUSTOM_INDEX_IN_EXPRESSION = "Only CUSTOM indexes may be used in custom index expressions, %s is not valid"; public static final String MULTIPLE_EXPRESSIONS = "Multiple custom index expressions in a single query are not supported"; @@ -61,14 +61,14 @@ public class IndexRestrictions return customExpressions; } - static InvalidRequestException invalidIndex(IndexName indexName, CFMetaData cfm) + static InvalidRequestException invalidIndex(IndexName indexName, TableMetadata table) { - return new InvalidRequestException(String.format(INVALID_INDEX, indexName.getIdx(), cfm.ksName, cfm.cfName)); + return new InvalidRequestException(String.format(INVALID_INDEX, indexName.getIdx(), table.toString())); } - static InvalidRequestException indexNotFound(IndexName indexName, CFMetaData cfm) + static InvalidRequestException indexNotFound(IndexName indexName, TableMetadata table) { - return new InvalidRequestException(String.format(INDEX_NOT_FOUND,indexName.getIdx(), cfm.ksName, cfm.cfName)); + return new InvalidRequestException(String.format(INDEX_NOT_FOUND, indexName.getIdx(), table.toString())); } static InvalidRequestException nonCustomIndexInExpression(IndexName indexName) http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java b/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java index b0cbdff..bf10024 100644 --- a/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java +++ b/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java @@ -20,7 +20,7 @@ package org.apache.cassandra.cql3.restrictions; import java.nio.ByteBuffer; import java.util.*; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.ColumnMetadata; import org.apache.cassandra.cql3.*; import org.apache.cassandra.cql3.Term.Terminal; import org.apache.cassandra.cql3.functions.Function; @@ -40,9 +40,9 @@ public abstract class MultiColumnRestriction implements SingleRestriction /** * The columns to which the restriction apply. */ - protected final List<ColumnDefinition> columnDefs; + protected final List<ColumnMetadata> columnDefs; - public MultiColumnRestriction(List<ColumnDefinition> columnDefs) + public MultiColumnRestriction(List<ColumnMetadata> columnDefs) { this.columnDefs = columnDefs; } @@ -54,19 +54,19 @@ public abstract class MultiColumnRestriction implements SingleRestriction } @Override - public ColumnDefinition getFirstColumn() + public ColumnMetadata getFirstColumn() { return columnDefs.get(0); } @Override - public ColumnDefinition getLastColumn() + public ColumnMetadata getLastColumn() { return columnDefs.get(columnDefs.size() - 1); } @Override - public List<ColumnDefinition> getColumnDefs() + public List<ColumnMetadata> getColumnDefs() { return columnDefs; } @@ -96,14 +96,14 @@ public abstract class MultiColumnRestriction implements SingleRestriction */ protected final String getColumnsInCommons(Restriction otherRestriction) { - Set<ColumnDefinition> commons = new HashSet<>(getColumnDefs()); + Set<ColumnMetadata> commons = new HashSet<>(getColumnDefs()); commons.retainAll(otherRestriction.getColumnDefs()); StringBuilder builder = new StringBuilder(); - for (ColumnDefinition columnDefinition : commons) + for (ColumnMetadata columnMetadata : commons) { if (builder.length() != 0) builder.append(" ,"); - builder.append(columnDefinition.name); + builder.append(columnMetadata.name); } return builder.toString(); } @@ -130,7 +130,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction { protected final Term value; - public EQRestriction(List<ColumnDefinition> columnDefs, Term value) + public EQRestriction(List<ColumnMetadata> columnDefs, Term value) { super(columnDefs); this.value = value; @@ -158,7 +158,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction @Override protected boolean isSupportedBy(Index index) { - for(ColumnDefinition column : columnDefs) + for(ColumnMetadata column : columnDefs) if (index.supportsExpression(column, Operator.EQ)) return true; return false; @@ -185,7 +185,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction for (int i = 0, m = columnDefs.size(); i < m; i++) { - ColumnDefinition columnDef = columnDefs.get(i); + ColumnMetadata columnDef = columnDefs.get(i); filter.add(columnDef, Operator.EQ, values.get(i)); } } @@ -193,7 +193,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction public abstract static class INRestriction extends MultiColumnRestriction { - public INRestriction(List<ColumnDefinition> columnDefs) + public INRestriction(List<ColumnMetadata> columnDefs) { super(columnDefs); } @@ -208,7 +208,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction builder.addAllElementsToAll(splitInValues); if (builder.containsNull()) - throw invalidRequest("Invalid null value in condition for columns: %s", ColumnDefinition.toIdentifiers(columnDefs)); + throw invalidRequest("Invalid null value in condition for columns: %s", ColumnMetadata.toIdentifiers(columnDefs)); return builder; } @@ -228,7 +228,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction @Override protected boolean isSupportedBy(Index index) { - for (ColumnDefinition column: columnDefs) + for (ColumnMetadata column: columnDefs) if (index.supportsExpression(column, Operator.IN)) return true; return false; @@ -253,7 +253,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction { protected final List<Term> values; - public InRestrictionWithValues(List<ColumnDefinition> columnDefs, List<Term> values) + public InRestrictionWithValues(List<ColumnMetadata> columnDefs, List<Term> values) { super(columnDefs); this.values = values; @@ -292,7 +292,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction { protected final AbstractMarker marker; - public InRestrictionWithMarker(List<ColumnDefinition> columnDefs, AbstractMarker marker) + public InRestrictionWithMarker(List<ColumnMetadata> columnDefs, AbstractMarker marker) { super(columnDefs); this.marker = marker; @@ -323,12 +323,12 @@ public abstract class MultiColumnRestriction implements SingleRestriction { private final TermSlice slice; - public SliceRestriction(List<ColumnDefinition> columnDefs, Bound bound, boolean inclusive, Term term) + public SliceRestriction(List<ColumnMetadata> columnDefs, Bound bound, boolean inclusive, Term term) { this(columnDefs, TermSlice.newInstance(bound, inclusive, term)); } - SliceRestriction(List<ColumnDefinition> columnDefs, TermSlice slice) + SliceRestriction(List<ColumnMetadata> columnDefs, TermSlice slice) { super(columnDefs); this.slice = slice; @@ -360,7 +360,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction for (int i = 0, m = columnDefs.size(); i < m; i++) { - ColumnDefinition column = columnDefs.get(i); + ColumnMetadata column = columnDefs.get(i); Bound b = bound.reverseIfNeeded(column); // For mixed order columns, we need to create additional slices when 2 columns are in reverse order @@ -410,7 +410,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction @Override protected boolean isSupportedBy(Index index) { - for(ColumnDefinition def : columnDefs) + for(ColumnMetadata def : columnDefs) if (slice.isSupportedBy(def, index)) return true; return false; @@ -443,7 +443,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction if (!getFirstColumn().equals(otherRestriction.getFirstColumn())) { - ColumnDefinition column = getFirstColumn().position() > otherRestriction.getFirstColumn().position() + ColumnMetadata column = getFirstColumn().position() > otherRestriction.getFirstColumn().position() ? getFirstColumn() : otherRestriction.getFirstColumn(); throw invalidRequest("Column \"%s\" cannot be restricted by two inequalities not starting with the same column", @@ -458,7 +458,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction getColumnsInCommons(otherRestriction)); SliceRestriction otherSlice = (SliceRestriction) otherRestriction; - List<ColumnDefinition> newColumnDefs = columnDefs.size() >= otherSlice.columnDefs.size() ? columnDefs : otherSlice.columnDefs; + List<ColumnMetadata> newColumnDefs = columnDefs.size() >= otherSlice.columnDefs.size() ? columnDefs : otherSlice.columnDefs; return new SliceRestriction(newColumnDefs, slice.merge(otherSlice.slice)); } @@ -507,7 +507,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction public static class NotNullRestriction extends MultiColumnRestriction { - public NotNullRestriction(List<ColumnDefinition> columnDefs) + public NotNullRestriction(List<ColumnMetadata> columnDefs) { super(columnDefs); assert columnDefs.size() == 1; @@ -540,7 +540,7 @@ public abstract class MultiColumnRestriction implements SingleRestriction @Override protected boolean isSupportedBy(Index index) { - for(ColumnDefinition column : columnDefs) + for(ColumnMetadata column : columnDefs) if (index.supportsExpression(column, Operator.IS_NOT)) return true; return false;
