You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Duarte Nunes (JIRA)" <ji...@apache.org> on 2018/03/26 11:39:00 UTC

[jira] [Created] (CASSANDRA-14345) Empty partition keys allowed in MV, but not in normal table

Duarte Nunes created CASSANDRA-14345:
----------------------------------------

             Summary: Empty partition keys allowed in MV, but not in normal table
                 Key: CASSANDRA-14345
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14345
             Project: Cassandra
          Issue Type: Bug
          Components: Materialized Views
            Reporter: Duarte Nunes


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 guess this is because an empty value can't be distinguished from null at the protocol level, but this distinction can be made internally.

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"



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org