On 24.10.2013, at 15:13, Petter von Dolwitz (Hem) 
<petter.von.dolw...@gmail.com> wrote:

> >You cannot use a part in a where clause unless you specify the preceeding 
> >parts also.
> But the statement SELECT * FROM mytable WHERE c='myvalue'; works?
> 
> What are secondary indexes for then if you can't use them in this way?

What you have in your example is parts of a primary key.

Secondary are defined in a different way (I never use them because they sort of 
goes against the whole point of using C* IMHO so I don't know right now how to 
do it. check the docs)

Jan


> 
> Forgot to mention that I am on Cassandra 2.0.1
> 
> /Petter
> 
> 
> 2013/10/24 Jan Algermissen <jan.algermis...@nordsc.com>
> Petter,
> 
> On 24.10.2013, at 14:38, Petter von Dolwitz (Hem) 
> <petter.von.dolw...@gmail.com> wrote:
> 
> > Hi,
> >
> > I have a table that (in simplified version) looks like this:
> >
> > CREATE TABLE mytable (
> >   a varchar,
> >   b varchar,
> >   c varchar
> >   d timstamp,
> >   e varchar,
> >   PRIMARY KEY (a, b, c, d)
> > );
> >
> > CREATE INDEX mytable_c_idx ON mytable ( c );
> >
> > After populating I execute:
> >
> > SELECT * FROM mytable WHERE c='myvalue';
> >
> > which works fine. However, using:
> >
> > SELECT * FROM mytable WHERE c IN ('myvalue');
> >
> > gives me:
> > Bad Request: PRIMARY KEY part c cannot be restricted (preceding part b is 
> > either not restricted or by a non-EQ relation)
> >
> > Can anybody explain this?
> 
> You cannot use a part in a where clause unless you specify the preceeding 
> parts also.
> 
> Think of it this way: To resolve yur restriction, C* would have to do a full 
> scan over all rows to find those rows that have a 'myvalue' C-part.
> 
> Jan
> 
> 
> > My aim is to query for more than one value in the c column. Is this 
> > supported?
> >
> > Thanks,
> > Petter
> >
> >
> >
> >
> >
> 
> 

Reply via email to