http://git-wip-us.apache.org/repos/asf/cassandra/blob/a67f7792/src/java/org/apache/cassandra/db/marshal/UTF8Type.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/marshal/UTF8Type.java b/src/java/org/apache/cassandra/db/marshal/UTF8Type.java index 26327b0..5e05a3f 100644 --- a/src/java/org/apache/cassandra/db/marshal/UTF8Type.java +++ b/src/java/org/apache/cassandra/db/marshal/UTF8Type.java @@ -18,13 +18,19 @@ package org.apache.cassandra.db.marshal; import java.nio.ByteBuffer; +import java.util.EnumSet; +import java.util.Set; import org.apache.cassandra.cql.jdbc.JdbcUTF8; +import org.apache.cassandra.cql3.CQL3Type; +import org.apache.cassandra.cql3.Term; public class UTF8Type extends AbstractType<String> { public static final UTF8Type instance = new UTF8Type(); + private final Set<Term.Type> supportedCQL3Constants = EnumSet.of(Term.Type.STRING); + UTF8Type() {} // singleton public String compose(ByteBuffer bytes) @@ -190,4 +196,14 @@ public class UTF8Type extends AbstractType<String> // comparison return this == previous || previous == AsciiType.instance; } + + public Set<Term.Type> supportedCQL3Constants() + { + return supportedCQL3Constants; + } + + public CQL3Type asCQL3Type() + { + return CQL3Type.Native.TEXT; + } }
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a67f7792/src/java/org/apache/cassandra/db/marshal/UUIDType.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/marshal/UUIDType.java b/src/java/org/apache/cassandra/db/marshal/UUIDType.java index cef7b00..427326b 100644 --- a/src/java/org/apache/cassandra/db/marshal/UUIDType.java +++ b/src/java/org/apache/cassandra/db/marshal/UUIDType.java @@ -20,9 +20,13 @@ package org.apache.cassandra.db.marshal; import java.nio.ByteBuffer; import java.text.ParseException; +import java.util.EnumSet; +import java.util.Set; import java.util.UUID; import org.apache.cassandra.cql.jdbc.JdbcUUID; +import org.apache.cassandra.cql3.CQL3Type; +import org.apache.cassandra.cql3.Term; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.FBUtilities; import org.apache.cassandra.utils.UUIDGen; @@ -44,6 +48,8 @@ public class UUIDType extends AbstractType<UUID> { public static final UUIDType instance = new UUIDType(); + private final Set<Term.Type> supportedCQL3Constants = EnumSet.of(Term.Type.UUID); + UUIDType() { } @@ -242,4 +248,14 @@ public class UUIDType extends AbstractType<UUID> return idBytes; } + + public Set<Term.Type> supportedCQL3Constants() + { + return supportedCQL3Constants; + } + + public CQL3Type asCQL3Type() + { + return CQL3Type.Native.UUID; + } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a67f7792/src/java/org/apache/cassandra/dht/AbstractByteOrderedPartitioner.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/dht/AbstractByteOrderedPartitioner.java b/src/java/org/apache/cassandra/dht/AbstractByteOrderedPartitioner.java index cff4754..1d391d1 100644 --- a/src/java/org/apache/cassandra/dht/AbstractByteOrderedPartitioner.java +++ b/src/java/org/apache/cassandra/dht/AbstractByteOrderedPartitioner.java @@ -26,6 +26,8 @@ import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.commons.lang.ArrayUtils; import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.marshal.BytesType; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.FBUtilities; @@ -215,4 +217,9 @@ public abstract class AbstractByteOrderedPartitioner extends AbstractPartitioner return allTokens; } + + public AbstractType<?> getTokenValidator() + { + return BytesType.instance; + } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a67f7792/src/java/org/apache/cassandra/dht/IPartitioner.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/dht/IPartitioner.java b/src/java/org/apache/cassandra/dht/IPartitioner.java index 98b3658..053a95f 100644 --- a/src/java/org/apache/cassandra/dht/IPartitioner.java +++ b/src/java/org/apache/cassandra/dht/IPartitioner.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.Map; import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.db.marshal.AbstractType; public interface IPartitioner<T extends Token> { @@ -84,5 +85,7 @@ public interface IPartitioner<T extends Token> */ public Map<Token, Float> describeOwnership(List<Token> sortedTokens); + public AbstractType<?> getTokenValidator(); + public <R extends RingPosition> R minValue(Class<R> klass); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a67f7792/src/java/org/apache/cassandra/dht/LocalPartitioner.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/dht/LocalPartitioner.java b/src/java/org/apache/cassandra/dht/LocalPartitioner.java index 13bf337..51e8f74 100644 --- a/src/java/org/apache/cassandra/dht/LocalPartitioner.java +++ b/src/java/org/apache/cassandra/dht/LocalPartitioner.java @@ -79,4 +79,9 @@ public class LocalPartitioner extends AbstractPartitioner<LocalToken> { return Collections.singletonMap((Token)getMinimumToken(), new Float(1.0)); } + + public AbstractType<?> getTokenValidator() + { + return comparator; + } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a67f7792/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java b/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java index ad3579a..fa0c630 100644 --- a/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java +++ b/src/java/org/apache/cassandra/dht/Murmur3Partitioner.java @@ -26,6 +26,8 @@ import java.util.List; import java.util.Map; import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.marshal.LongType; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.FBUtilities; @@ -186,4 +188,9 @@ public class Murmur3Partitioner extends AbstractPartitioner<LongToken> return new LongToken(Long.valueOf(string)); } }; + + public AbstractType<?> getTokenValidator() + { + return LongType.instance; + } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a67f7792/src/java/org/apache/cassandra/dht/OrderPreservingPartitioner.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/dht/OrderPreservingPartitioner.java b/src/java/org/apache/cassandra/dht/OrderPreservingPartitioner.java index 25f26f4..9445ab0 100644 --- a/src/java/org/apache/cassandra/dht/OrderPreservingPartitioner.java +++ b/src/java/org/apache/cassandra/dht/OrderPreservingPartitioner.java @@ -24,6 +24,8 @@ import java.util.*; import org.apache.cassandra.config.*; import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.marshal.UTF8Type; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.gms.VersionedValue; import org.apache.cassandra.service.StorageService; @@ -208,4 +210,9 @@ public class OrderPreservingPartitioner extends AbstractPartitioner<StringToken> return allTokens; } + + public AbstractType<?> getTokenValidator() + { + return UTF8Type.instance; + } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a67f7792/src/java/org/apache/cassandra/dht/RandomPartitioner.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/dht/RandomPartitioner.java b/src/java/org/apache/cassandra/dht/RandomPartitioner.java index da11fd1..26b399e 100644 --- a/src/java/org/apache/cassandra/dht/RandomPartitioner.java +++ b/src/java/org/apache/cassandra/dht/RandomPartitioner.java @@ -25,6 +25,8 @@ import java.util.*; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.marshal.IntegerType; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.FBUtilities; import org.apache.cassandra.utils.GuidGenerator; @@ -183,4 +185,9 @@ public class RandomPartitioner extends AbstractPartitioner<BigIntegerToken> } return ownerships; } + + public AbstractType<?> getTokenValidator() + { + return IntegerType.instance; + } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a67f7792/src/java/org/apache/cassandra/service/StorageService.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index 21f7c69..979b68e 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -1176,16 +1176,16 @@ public class StorageService extends NotificationBroadcasterSupport implements IE handleStateRelocating(endpoint, pieces); break; case RELEASE_VERSION: - SystemTable.updatePeerInfo(endpoint, "release_version", value.value); + SystemTable.updatePeerInfo(endpoint, "release_version", quote(value.value)); break; case DC: - SystemTable.updatePeerInfo(endpoint, "data_center", value.value); + SystemTable.updatePeerInfo(endpoint, "data_center", quote(value.value)); break; case RACK: - SystemTable.updatePeerInfo(endpoint, "rack", value.value); + SystemTable.updatePeerInfo(endpoint, "rack", quote(value.value)); break; case RPC_ADDRESS: - SystemTable.updatePeerInfo(endpoint, "rpc_address", value.value); + SystemTable.updatePeerInfo(endpoint, "rpc_address", quote(value.value)); break; case SCHEMA: SystemTable.updatePeerInfo(endpoint, "schema_version", value.value); @@ -1196,6 +1196,11 @@ public class StorageService extends NotificationBroadcasterSupport implements IE } } + private String quote(String value) + { + return "'" + value + "'"; + } + private byte[] getApplicationStateValue(InetAddress endpoint, ApplicationState appstate) { String vvalue = Gossiper.instance.getEndpointStateForEndpoint(endpoint).getApplicationState(appstate).value;