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

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

    XMLWordPrintableJSON

Details

    • 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

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

            Dates

              Created:
              Updated: