I think that qualify as a bug. We should either refuse the query if we don't know how to do this correctly or return a sensible result (i.e, no result in that case). Would you mind opening a ticket on https://issues.apache.org/jira/browse/CASSANDRA?
-- Sylvain On Fri, Jan 20, 2012 at 6:39 AM, <vaibha...@geodesiconline.com> wrote: > Dear Aaron, > > > > Thanks for the information. > > > > Actually it's a normal query which works with SQL. I believe there will be > some mechanism to do so in Cassandra, as first retrieving the records based > on key and then checking for the column index later will be inefficient. > > > > Thanks again. > > > > Regards, > > Vaibhav > > > > -----Original Message----- > From: "aaron morton" <aa...@thelastpickle.com> > Sent: Friday, January 20, 2012 12:23am > To: user@cassandra.apache.org > Subject: Re: CQL 'Where' clause ignores secondary index filter > > It is working as expected. > Because you have specified a KEY the query returns records that match that > key(s), and it ignores the other clauses. > Selecting rows follows one of three paths: > * selects rows by key(s) > * select rows by key range, i.e. rows after this key. > * select rows by (secondary) column index. > Hope that helps. > ----------------- > Aaron Morton > Freelance Developer > @aaronmorton > http://www.thelastpickle.com > > On 20/01/2012, at 12:18 AM, vaibha...@geodesiconline.com wrote: > > Hi, > > > > I've defined a column family 'Vaibhav' in which every row has few columns > and its values. I've declared two column as secondary index so that I can > filter the rows on the basis of those column values. > > > > Now whenever I execute a CQL with either only rowkey or column name in > 'WHERE' clause, it gives me the proper result. But when I use both rowkey > and column name filter in 'WHERE' clause it ignores the column filter and > gives the result matching with the rowkey. > > > > Sample Records from column family 'Vaibhav': > =================================== > > > > > > RowKey: 1111 > > > > => (column=Bare_JID, value=mit...@geo.com, timestamp=1326436553009) > => (column=Domain, value=geo.com, timestamp=1326436553014) > => (column=Full_JID, value=mit...@geo.com/android, timestamp=1326436552979) > ------------------- > RowKey: 2222 > => (column=Bare_JID, value=ven...@geo.com, timestamp=1326436611316) > => (column=Domain, value=geo.com, timestamp=1326436611318) > => (column=Full_JID, value=ven...@geo.com/android, timestamp=1326436611310) > ------------------- > RowKey: 3333 > => (column=Bare_JID, value=kondi...@geo.com, timestamp=1326436643841) > => (column=Domain, value=geo.com, timestamp=1326436643842) > => (column=Full_JID, value=kondi...@geo.com/android, > timestamp=1326436643835) > > > > > > Here both 'Bare_JID' and 'Domain' have secondary Index. > > > > CQL : SELECT * from Vaibhav where KEY = '1111' AND Bare_JID='ven...@geo.com' > > > > is returning the first row, but ideally it should return no records as both > the condition are not satisfied. > > > > > > Kindly help me to resolve this issue. > > > > Regards, > Vaibhav S.