You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ee...@apache.org on 2011/04/11 06:17:14 UTC
svn commit: r1090931 -
/cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java
Author: eevans
Date: Mon Apr 11 04:17:14 2011
New Revision: 1090931
URL: http://svn.apache.org/viewvc?rev=1090931&view=rev
Log:
do not default to BytesType when comparator is unknown
Patch by eevans
Modified:
cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java
Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java?rev=1090931&r1=1090930&r2=1090931&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java Mon Apr 11 04:17:14 2011
@@ -232,9 +232,17 @@ public class CreateColumnFamilyStatement
CFMetaData newCFMD;
try
{
- // RPC uses BytesType as the default validator/comparator but BytesType expects hex for string terms, (not convenient).
- AbstractType<?> comparator = DatabaseDescriptor.getComparator(comparators.get(getPropertyString(KW_COMPARATOR, "text")));
- String validator = getPropertyString(KW_DEFAULTVALIDATION, "utf8");
+ /* If not comparator/validator is not specified, default to text (BytesType is the wrong default for CQL
+ * since it uses hex terms). If the value specified is not found in the comparators map, assume the user
+ * knows what they are doing (a custom comparator/validator for example), and pass it on as-is.
+ */
+ String comparatorString = (comparators.get(getPropertyString(KW_COMPARATOR, "text")) != null)
+ ? comparators.get(getPropertyString(KW_COMPARATOR, "text"))
+ : getPropertyString(KW_COMPARATOR, "text");
+ String validatorString = (comparators.get(getPropertyString(KW_DEFAULTVALIDATION, "text")) != null)
+ ? comparators.get(getPropertyString(KW_DEFAULTVALIDATION, "text"))
+ : getPropertyString(KW_DEFAULTVALIDATION, "text");
+ AbstractType<?> comparator = DatabaseDescriptor.getComparator(comparatorString);
newCFMD = new CFMetaData(keyspace,
name,
@@ -248,7 +256,7 @@ public class CreateColumnFamilyStatement
.readRepairChance(getPropertyDouble(KW_READREPAIRCHANCE, CFMetaData.DEFAULT_READ_REPAIR_CHANCE))
.replicateOnWrite(getPropertyBoolean(KW_REPLICATEONWRITE, CFMetaData.DEFAULT_REPLICATE_ON_WRITE))
.gcGraceSeconds(getPropertyInt(KW_GCGRACESECONDS, CFMetaData.DEFAULT_GC_GRACE_SECONDS))
- .defaultValidator(DatabaseDescriptor.getComparator(comparators.get(validator)))
+ .defaultValidator(DatabaseDescriptor.getComparator(validatorString))
.minCompactionThreshold(getPropertyInt(KW_MINCOMPACTIONTHRESHOLD, CFMetaData.DEFAULT_MIN_COMPACTION_THRESHOLD))
.maxCompactionThreshold(getPropertyInt(KW_MAXCOMPACTIONTHRESHOLD, CFMetaData.DEFAULT_MAX_COMPACTION_THRESHOLD))
.rowCacheSavePeriod(getPropertyInt(KW_ROWCACHESAVEPERIODSECS, CFMetaData.DEFAULT_ROW_CACHE_SAVE_PERIOD_IN_SECONDS))