Hi again, i am still having trouble with this. If I define the index using cli with these commands: create column family A with column_type='Standard' and comparator='TimeUUIDType' and keys_cached=200000 and read_repair_chance=1.0 and rows_cached=0.0 and column_metadata=[{column_name: 00000000-0000-1000-0000-000000000000, validation_class: UTF8Type, index_name: MyIndex, index_type: KEYS}]; create column family B with column_type='Standard' and comparator='TimeUUIDType' and keys_cached=200000 and read_repair_chance=1.0 and rows_cached=0.0 and column_metadata=[{column_name: 00000000-0000-1000-0000-000000000000, validation_class: UTF8Type, index_name: MyIndex, index_type: KEYS}];
I can do IndexedSliceQueries as expected In my unit tests where I use an embedded Cassandra instance configured via yaml like this: - column_metadata: [{name: 00000000-0000-1000-0000-000000000000, validator_class: UTF8Type, index_name: MyIndex, index_type: KEYS}] compare_with: TimeUUIDType gc_grace_seconds: 864000 keys_cached: 0.0 max_compaction_threshold: 32 min_compaction_threshold: 4 name: A read_repair_chance: 1.0 rows_cached: 0.0 - column_metadata: [{name: 00000000-0000-1000-0000-000000000000, validator_class: UTF8Type, index_name: MyIndex, index_type: KEYS}] compare_with: TimeUUIDType gc_grace_seconds: 864000 keys_cached: 0.0 max_compaction_threshold: 32 min_compaction_threshold: 4 name: B read_repair_chance: 1.0 rows_cached: 0.0 I get these Exceptions: 18:23:55.973 [CassandraDataFetcher-queries] ERROR c.y.s.c.i.event.CassandraDataFetcher - Query me.prettyprint.cassandra.model.IndexedSlicesQuery@1bbd3e2 failed, stop query. me.prettyprint.hector.api.exceptions.HInvalidRequestException: InvalidRequestException(why:No indexed columns present in index clause with operator EQ) at me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(ExceptionsTranslatorImpl.java:42) ~[hector-core-0.7.0-26.jar:na] at me.prettyprint.cassandra.service.KeyspaceServiceImpl$12.execute(KeyspaceServiceImpl.java:513) ~[hector-core-0.7.0-26.jar:na] at me.prettyprint.cassandra.service.KeyspaceServiceImpl$12.execute(KeyspaceServiceImpl.java:495) ~[hector-core-0.7.0-26.jar:na] at me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:101) ~[hector-core-0.7.0-26.jar:na] at me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:161) ~[hector-core-0.7.0-26.jar:na] at me.prettyprint.cassandra.service.KeyspaceServiceImpl.operateWithFailover(KeyspaceServiceImpl.java:129) ~[hector-core-0.7.0-26.jar:na] at me.prettyprint.cassandra.service.KeyspaceServiceImpl.getIndexedSlices(KeyspaceServiceImpl.java:517) ~[hector-core-0.7.0-26.jar:na] at me.prettyprint.cassandra.model.IndexedSlicesQuery$1.doInKeyspace(IndexedSlicesQuery.java:140) ~[hector-core-0.7.0-26.jar:na] at me.prettyprint.cassandra.model.IndexedSlicesQuery$1.doInKeyspace(IndexedSlicesQuery.java:131) ~[hector-core-0.7.0-26.jar:na] at me.prettyprint.cassandra.model.KeyspaceOperationCallback.doInKeyspaceAndMeasure(KeyspaceOperationCallback.java:20) ~[hector-core-0.7.0-26.jar:na] at me.prettyprint.cassandra.model.ExecutingKeyspace.doExecute(ExecutingKeyspace.java:85) ~[hector-core-0.7.0-26.jar:na] at me.prettyprint.cassandra.model.IndexedSlicesQuery.execute(IndexedSlicesQuery.java:130) ~[hector-core-0.7.0-26.jar:na] at com.yoochoose.services.cassandra.internal.event.CassandraDataFetcher$1.onMessage(CassandraDataFetcher.java:60) [classes/:na] at com.yoochoose.services.cassandra.internal.event.CassandraDataFetcher$1.onMessage(CassandraDataFetcher.java:47) [classes/:na] at org.jetlang.channels.ChannelSubscription$1.run(ChannelSubscription.java:31) [jetlang-0.2.1.jar:na] at org.jetlang.core.BatchExecutorImpl.execute(BatchExecutorImpl.java:11) [jetlang-0.2.1.jar:na] at org.jetlang.core.RunnableExecutorImpl.run(RunnableExecutorImpl.java:34) [jetlang-0.2.1.jar:na] at org.jetlang.fibers.ThreadFiber.runThread(ThreadFiber.java:51) [jetlang-0.2.1.jar:na] at org.jetlang.fibers.ThreadFiber.access$000(ThreadFiber.java:10) [jetlang-0.2.1.jar:na] at org.jetlang.fibers.ThreadFiber$1.run(ThreadFiber.java:27) [jetlang-0.2.1.jar:na] at java.lang.Thread.run(Thread.java:619) [na:1.6.0_17] Caused by: org.apache.cassandra.thrift.InvalidRequestException: null at org.apache.cassandra.thrift.Cassandra$get_indexed_slices_result.read(Cassandra.java:13299) ~[cassandra-all-0.7.0.jar:0.7.0] at org.apache.cassandra.thrift.Cassandra$Client.recv_get_indexed_slices(Cassandra.java:780) ~[cassandra-all-0.7.0.jar:0.7.0] at org.apache.cassandra.thrift.Cassandra$Client.get_indexed_slices(Cassandra.java:752) ~[cassandra-all-0.7.0.jar:0.7.0] at me.prettyprint.cassandra.service.KeyspaceServiceImpl$12.execute(KeyspaceServiceImpl.java:501) ~[hector-core-0.7.0-26.jar:na] ... 19 common frames omitted With the very same code and data. I assume that the column name I give in Cassandra.yaml is somehow not inmterpreted as a TimedUUID or something. Any help would be greatly appreciated Greetings, roland Von: Michal Augustýn [mailto:augustyn.mic...@gmail.com] Gesendet: Dienstag, 15. Februar 2011 16:22 An: user@cassandra.apache.org Betreff: Re: cant seem to figure out secondary index definition Ah, ok. I checked that in source and the problem is that you wrote "validation_class" but you should "validator_class". Augi 2011/2/15 Roland Gude <roland.g...@yoochoose.com<mailto:roland.g...@yoochoose.com>> Yeah i know about that, but the definition i have is for a cluster that is started/stopped from a unit test with hector embeddedServerHelper, which takes definitions from the yaml. So i'd still like to define the index in the yaml file (it should very well be possible I guess) Von: Michal Augustýn [mailto:augustyn.mic...@gmail.com<mailto:augustyn.mic...@gmail.com>] Gesendet: Dienstag, 15. Februar 2011 15:53 An: user@cassandra.apache.org<mailto:user@cassandra.apache.org> Betreff: Re: cant seem to figure out secondary index definition Hi, if you download Cassandra and look into "conf/cassandra.yaml" then you can see this: "this keyspace definition is for demonstration purposes only. Cassandra will not load these definitions during startup. See http://wiki.apache.org/cassandra/FAQ#no_keyspaces for an explanation." So you should make all schema-related operation via Thrift/AVRO API, or you can use Cassandra CLI. Augi 2011/2/15 Roland Gude <roland.g...@yoochoose.com<mailto:roland.g...@yoochoose.com>> Hi, i am a little puzzled on creation of secondary indexes and the docs in that area are still very sparse. What I am trying to do is - in a columnfamily with TimeUUID comparator, I want the "special" timeuuid 00000000-0000-1000-0000-000000000000 to be indexed. The value being some UTF8 string on which I want to perform equality checks. What do I need to put in my cassandra.yaml file? Something like this? - column_metadata: [{name: 00000000-0000-1000-0000-000000000000, validation_class: UTF8Type, index_name: MyIndex, index_type: KEYS}] This gives me that error: 15:05:12.492 [pool-1-thread-1] ERROR o.a.c.config.DatabaseDescriptor - Fatal error: null; Can't construct a java object for tag:yaml.org<http://yaml.org>,2002:org.apache.cassandra.config.Config; exception=Cannot create property=keyspaces for JavaBean=org.apache.cassandra.config.Config@7eb6e2; Cannot create property=column_families for JavaBean=org.apache.cassandra.config.RawKeyspace@987a33; Cannot create property=column_metadata for JavaBean=org.apache.cassandra.config.RawColumnFamily@716cb7; Cannot create property=validation_class for JavaBean=org.apache.cassandra.config.RawColumnDefinition@e29820; Unable to find property 'validation_class' on class: org.apache.cassandra.config.RawColumnDefinition Bad configuration; unable to start server I am furthermor uncertain if the column name will be correctly used if given like this. Should I put the byte representation of the uuid there? Greetings, roland -- YOOCHOOSE GmbH Roland Gude Software Engineer Im Mediapark 8, 50670 Köln +49 221 4544151 (Tel) +49 221 4544159 (Fax) +49 171 7894057 (Mobil) Email: roland.g...@yoochoose.com<mailto:roland.g...@yoochoose.com> WWW: www.yoochoose.com<http://www.yoochoose.com/> YOOCHOOSE GmbH Geschäftsführer: Dr. Uwe Alkemper, Michael Friedmann Handelsregister: Amtsgericht Köln HRB 65275 Ust-Ident-Nr: DE 264 773 520 Sitz der Gesellschaft: Köln