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

Empty partition keys allowed in MV, but not in normal table

    XMLWordPrintableJSON

    Details

    • Severity:
      Normal

      Description

      Given the following table:

       

      cqlsh> create keyspace ks WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
       cqlsh> create table t (p text, c int, v text, primary key (p));
       cqlsh> use ks;
      

      The following fails:

      cqlsh:ks> insert into t (p, c, v) values ('', 2, '');
       InvalidRequest: Error from server: code=2200 [Invalid query] message="Key may not be empty"

      However, MVs don't appear to have this restriction:

      create materialized view mv as select * from t where v is not null and p is not null and c is not null primary key (v, p);
      insert into t (p, c, v) values ('a', 2, '');
      select * from mv;
      
       v | p | c
      ---+---+---
         | a | 2
      

      I think the behavior should be made consistent, if nothing else because
      querying the MV for the empty key is impossible:

      cqlsh:ks> select * from mv where v = '';
       InvalidRequest: Error from server: code=2200 [Invalid query] message="Key may not be empty"

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              duarten Duarte Nunes
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated: