Fix bug in schema conversion of index options to thrift format

Patch by Sam Tunnicliffe; reviewed by Sylvain Lebresne for
CASSANDRA-10483


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/cf365e30
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/cf365e30
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/cf365e30

Branch: refs/heads/trunk
Commit: cf365e30216d28b587493d07875182515d21bcad
Parents: 5a808ad
Author: Sam Tunnicliffe <s...@beobal.com>
Authored: Thu Oct 8 18:37:27 2015 +0100
Committer: Sam Tunnicliffe <s...@beobal.com>
Committed: Fri Oct 9 11:28:39 2015 +0100

----------------------------------------------------------------------
 .../apache/cassandra/thrift/ThriftConversion.java  |  2 +-
 .../apache/cassandra/config/CFMetaDataTest.java    | 17 +++++++++++++----
 2 files changed, 14 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/cf365e30/src/java/org/apache/cassandra/thrift/ThriftConversion.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/thrift/ThriftConversion.java 
b/src/java/org/apache/cassandra/thrift/ThriftConversion.java
index 3794fe0..4a1ff76 100644
--- a/src/java/org/apache/cassandra/thrift/ThriftConversion.java
+++ b/src/java/org/apache/cassandra/thrift/ThriftConversion.java
@@ -611,7 +611,7 @@ public class ThriftConversion
                                                                   s -> 
!IndexTarget.TARGET_OPTION_NAME.equals(s));
             cd.setIndex_options(filteredOptions.isEmpty()
                                 ? null
-                                : Maps.newHashMap(matchedIndex.options));
+                                : Maps.newHashMap(filteredOptions));
         }
 
         return cd;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/cf365e30/test/unit/org/apache/cassandra/config/CFMetaDataTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/config/CFMetaDataTest.java 
b/test/unit/org/apache/cassandra/config/CFMetaDataTest.java
index 567d516..3deb5fa 100644
--- a/test/unit/org/apache/cassandra/config/CFMetaDataTest.java
+++ b/test/unit/org/apache/cassandra/config/CFMetaDataTest.java
@@ -18,13 +18,12 @@
  */
 package org.apache.cassandra.config;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.HashSet;
+import java.util.*;
 
 import org.apache.cassandra.SchemaLoader;
 import org.apache.cassandra.db.*;
 import org.apache.cassandra.db.marshal.AsciiType;
+import org.apache.cassandra.db.marshal.Int32Type;
 import org.apache.cassandra.db.marshal.UTF8Type;
 import org.apache.cassandra.db.rows.UnfilteredRowIterators;
 import org.apache.cassandra.db.partitions.PartitionUpdate;
@@ -62,6 +61,14 @@ public class CFMetaDataTest
         columnDefs.add(new ColumnDef(ByteBufferUtil.bytes("col2"), 
UTF8Type.class.getCanonicalName())
                                     .setIndex_name("col2Index")
                                     .setIndex_type(IndexType.KEYS));
+
+        Map<String, String> customIndexOptions = new HashMap<>();
+        customIndexOptions.put("option1", "value1");
+        customIndexOptions.put("option2", "value2");
+        columnDefs.add(new ColumnDef(ByteBufferUtil.bytes("col3"), 
Int32Type.class.getCanonicalName())
+                                    .setIndex_name("col3Index")
+                                    .setIndex_type(IndexType.CUSTOM)
+                                    .setIndex_options(customIndexOptions));
     }
 
     @BeforeClass
@@ -97,7 +104,9 @@ public class CFMetaDataTest
             c.name = ByteBufferUtil.clone(columnDef.name);
             c.validation_class = columnDef.getValidation_class();
             c.index_name = columnDef.getIndex_name();
-            c.index_type = IndexType.KEYS;
+            c.index_type = columnDef.getIndex_type();
+            if (columnDef.isSetIndex_options())
+                c.setIndex_options(columnDef.getIndex_options());
             thriftCfDef.column_metadata.add(c);
         }
 

Reply via email to