I have no problem doing this w 2.0.5 - what version of C* are you using? Or maybe I don't understand your data model... attach 'creates' if you don't mind.
ml On Thu, Mar 13, 2014 at 9:24 AM, David Savage <davemssav...@gmail.com>wrote: > Hi Peter, > > Thanks for the help, unfortunately I'm not sure that's the problem, the id > is the primary key on the documents table and the timestamp is the > primary key on the eventlog table > > Kind regards, > > > Dave > > On Thursday, 13 March 2014, Peter Lin <wool...@gmail.com> wrote: > >> >> it's not clear to me if your "id" column is the KEY or just a regular >> column with secondary index. >> >> queries that have IN on non primary key columns isn't supported yet. not >> sure if that answers your question. >> >> >> On Thu, Mar 13, 2014 at 7:12 AM, David Savage <davemssav...@gmail.com>wrote: >> >>> Hi there, >>> >>> I'm experimenting using cassandra and have run across an error message >>> which I need a little more information on. >>> >>> The use case I'm experimenting with is a series of document updates >>> (documents being an arbitrary map of key value pairs), I would like to find >>> the latest document updates after a specified time period. I don't want to >>> store many copies of the documents (one per update) as the updates are >>> often only to single keys in the map so that would involve a lot of >>> duplicated data. >>> >>> The solution I've found that seems to fit best in terms of performance >>> is to have two tables. >>> >>> One that has an event log of timeuuid -> docid and a second that stores >>> the documents themselves stored by docid -> map<string, string>. I then run >>> two queries, one to select ids that have changed after a certain time: >>> >>> SELECT id FROM eventlog WHERE timestamp>=minTimeuuid($minimumTime) >>> >>> and then a second to select the actual documents themselves >>> >>> SELECT id, data FROM documents WHERE id IN (0, 1, 2, 3, 4, 5, 6, 7…) >>> >>> However this then explodes on query with the error message: >>> >>> "Cannot restrict PRIMARY KEY part id by IN relation as a collection is >>> selected by the query" >>> >>> Detective work lead me to these lines in >>> org.apache.cassandra.cql3.statementsSelectStatement: >>> >>> // We only support IN for the last name and for >>> compact storage so far >>> // TODO: #3885 allows us to extend to non compact as >>> well, but that remains to be done >>> if (i != stmt.columnRestrictions.length - 1) >>> throw new >>> InvalidRequestException(String.format("PRIMARY KEY part %s cannot be >>> restricted by IN relation", cname)); >>> else if (stmt.selectACollection()) >>> throw new >>> InvalidRequestException(String.format("Cannot restrict PRIMARY KEY part %s >>> by IN relation as a collection is selected by the query", cname)); >>> >>> It seems like #3885 will allow support for the first IF block above, but >>> I don't think it will allow the second, am I correct? >>> >>> Any pointers on how I can work around this would be greatly appreciated. >>> >>> Kind regards, >>> >>> Dave >>> >> >>