[ 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