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;

Reply via email to