Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-8424

Collection filtering not working when using PK

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Low
    • Resolution: Duplicate
    • Fix Version/s: None
    • Component/s: None
    • Labels:
    • Environment:

      [cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]
      Ubuntu 14.04.5 64-bit

      Description

      I can do queries for collection keys/values as detailed in http://www.datastax.com/dev/blog/cql-in-2-1 without problems. Even without having a secondary index on the collection it will work (with ALLOW FILTERING) but only as long as the query is performed through a secondary index. If you go through PK it won't. Of course full-scan filtering query is not allowed.

      As an example, I created this table:

      CREATE TABLE test.uloc9 (
          usr int,
          type int,
          gb ascii,
          gb_q ascii,
          info map<ascii, text>,
          lat float,
          lng float,
          q int,
          traits set<ascii>,
          ts timestamp,
          PRIMARY KEY (usr, type)
      );
      CREATE INDEX uloc9_gb ON test.uloc9 (gb);
      CREATE INDEX uloc9_gb_q ON test.uloc9 (gb_q);
      CREATE INDEX uloc9_traits ON test.uloc9 (traits);
      

      then added some data and queried:

      cqlsh:test> select * from uloc9 where gb='/nw' and info contains 'argentina' allow filtering;
      
       usr | type | gb  | gb_q  | info                                     | lat          | lng          | q | traits             | ts
      -----+------+-----+-------+------------------------------------------+--------------+--------------+---+--------------------+--------------------------
         1 |    0 | /nw | /nw:1 | {'ci': 'san antonio', 'co': 'argentina'} | -40.74000168 | -65.80000305 | 1 | {'r:photographer'} | 2014-11-04 18:20:29-0300
         1 |    1 | /nw | /nw:1 | {'ci': 'san antonio', 'co': 'argentina'} | -40.75799942 | -66.00800323 | 1 | {'r:photographer'} | 2014-11-04 18:20:29-0300
      
      (2 rows)
      cqlsh:test> select * from uloc9 where usr=1 and info contains 'argentina' allow filtering;
      code=2200 [Invalid query] message="No indexed columns present in by-columns clause with Equal operator"
      cqlsh:test> select * from uloc9 where usr=1 and type=0 and info contains 'argentina' allow filtering;
      code=2200 [Invalid query] message="No indexed columns present in by-columns clause with Equal operator"
      

      Maybe I got things wrong, but I don't see any reasons why collection filtering should fail when using PK while it succeeds using any secondary index (related or otherwise).

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                lexlythius Lex Lythius
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: