Roland Mechler created CASSANDRA-4926:
-----------------------------------------

             Summary: CQL3: IN relation does not work for last part of 
composite key
                 Key: CASSANDRA-4926
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4926
             Project: Cassandra
          Issue Type: Bug
    Affects Versions: 1.1.6
            Reporter: Roland Mechler


Everything below was done using cqlsh -3, against single node Cassandra 1.1.6.

I created a test table with the following definition:

CREATE TABLE testtable (
  a text,
  b text,
  c text,
  data text,
  PRIMARY KEY (a, b, c)
) WITH
  comment='' AND
  caching='KEYS_ONLY' AND
  read_repair_chance=0.100000 AND
  gc_grace_seconds=864000 AND
  replicate_on_write='true' AND
  compaction_strategy_class='SizeTieredCompactionStrategy' AND
  compression_parameters:sstable_compression='SnappyCompressor';

and inserted some data:

INSERT INTO testtable (a, b, c, data) VALUES ('1', '1', '1', 'data 1');
INSERT INTO testtable (a, b, c, data) VALUES ('1', '1', '2', 'data 2');
INSERT INTO testtable (a, b, c, data) VALUES ('1', '1', '3', 'data 3');

so a full table query produced:

cqlsh:testkeyspace> select * from testtable;
 a | b | c | data
---+---+---+--------
 1 | 1 | 1 | data 1
 1 | 1 | 2 | data 2
 1 | 1 | 3 | data 3

Next I tried the following query with an IN relation on the second part of the 
key:

cqlsh:testkeyspace> select * from testtable where a = '1' and b in ('1', '2');
Bad Request: PRIMARY KEY part b cannot be restricted by IN relation (only the 
first and last parts can)

which is apparently not supported, but the error message suggests an IN 
relation in the last part is supported, so I tried:

cqlsh:testkeyspace> select * from testtable where a = '1' and b = '1' and c in 
('1', '2');
cqlsh:testkeyspace> 

which did not produce an error, but also returned no results. I was expecting 2 
rows. This seems to be a bug?

Note that I get the expected result if the IN relation contains only 1 value:

cqlsh:testkeyspace> select * from testtable where a = '1' and b = '1' and c in 
('1');
 a | b | c | data
---+---+---+--------
 1 | 1 | 1 | data 1


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to