cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Markus Wiesenbacher (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CASSANDRA-2676) Adding secondary index with and do not overwrite existing ones
Date Fri, 20 May 2011 19:33:47 GMT
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

Mime
View raw message