[
https://issues.apache.org/jira/browse/CASSANDRA-2676?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jonathan Ellis resolved CASSANDRA-2676.
---------------------------------------
Resolution: Not A Problem
That's by design. (Otherwise how could you remove column_metadata entries
entirely?)
> Adding secondary index with and do not overwrite existing ones
> --------------------------------------------------------------
>
> Key: CASSANDRA-2676
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2676
> Project: Cassandra
> Issue Type: New Feature
> Components: API
> Reporter: Markus Wiesenbacher
> Priority: Minor
>
> Hi,
> I am hard working on a web client for Cassandra (about 80% reached by now),
> and have a problem. I am using following function to create a new secondary
> index:
> public boolean insertSecondaryIndex (String keyspace, String column_family,
> int columnfamilyid, String columnfamily_comparator, String
> column_validation_class, String column_index_name, String column_index_field)
> throws Exception {
> if (!isClosed()) {
>
> client.set_keyspace(keyspace);
>
> CfDef cfDef = new CfDef(keyspace, column_family);
> cfDef.setId(columnfamilyid);
> cfDef.setComparator_type(columnfamily_comparator);
> // secondary index definition
> ColumnDef column_metadata = new ColumnDef();
> column_metadata.setIndex_name(column_index_name);
>
> column_metadata.setName(ByteBuffer.wrap(column_index_field.getBytes()));
>
> column_metadata.setValidation_class(lastPart(column_validation_class, "."));
> column_metadata.setIndex_type(IndexType.KEYS);
> cfDef.addToColumn_metadata(column_metadata);
> client.system_update_column_family(cfDef);
>
> return true;
> }
>
> return false;
> }
> This seems to overwrite the already existing indices. I use this to select
> the indexed field names:
> public HashMap<String, String> getIndexColumns (String keyspaceName, String
> columnFamilyName)
> throws Exception {
> HashMap<String, String> toret = new HashMap<String,String>();
>
> if (!isClosed()) {
> KsDef keyspace = client.describe_keyspace(keyspaceName);
> List<CfDef> columnFamilies = keyspace.getCf_defs();
>
> for (CfDef columnFamily : columnFamilies) {
> if
> (columnFamily.getName().equalsIgnoreCase(columnFamilyName)) {
> Iterator<ColumnDef> iter =
> columnFamily.getColumn_metadataIterator();
> while (iter.hasNext()) {
>
> ColumnDef cd = iter.next();
> toret.put (new
> String(cd.getName(), encoding), "");
> }
>
> break;
> }
> }
> }
>
> return toret;
> }
> Is this by design or a bug?
> Many thanks and best regards
> Wiesi ;)
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira