cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michał Michalski (JIRA) <>
Subject [jira] [Updated] (CASSANDRA-3783) Add 'null' support to CQL 3.0
Date Sun, 10 Feb 2013 18:09:13 GMT


Michał Michalski updated CASSANDRA-3783:

    Attachment: 3783-wip-v1.patch

I started to investigate this problem a bit and I easily came to the point where I can pass
null in cql3sh - see attached work-in-progress patch. It even ends up with proper INSERT ("proper"
means that it shows up as "red colored" null in cqlsh when performing SELECT ;-) ) for all
fields of Type that returns EMPTY_BYTE_BUFFER in fromString method, as I pass "" to Literal
constructor. However, this simply cannot work with strings, as "" will be saved as "". Anyway,
before I try to push this problem further, I have some questions:

1. Is this (see attachment), in general, a good way to go with this task? Or maybe I'm completely
wrong with this approach?

2. How about "string-based" Types? We obviously can't return EMPTY_BYTE_BUFFER for "" because
it's a valid string, so I was thinking about a solution that will handle literal 'null' value
as a second param for Literal class constructor, which could be then handled (by simple 'if')
in all db.marshall types to return EMPTY_BYTE_BUFFER. It doesn't look like a "perfect" solution
to me, but it looks _quite_ clean and... well... it's the best idea I had so far ;-)

Any other thoughts on this? 

> Add 'null' support to CQL 3.0
> -----------------------------
>                 Key: CASSANDRA-3783
>                 URL:
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: API
>            Reporter: Sylvain Lebresne
>            Priority: Minor
>              Labels: cql3
>             Fix For: 1.2.2
>         Attachments: 3783-wip-v1.patch
> Dense composite supports adding records where only a prefix of all the component specifying
the key is defined. In other words, with:
> {noformat}
> CREATE TABLE connections (
>    userid int,
>    ip text,
>    port int,
>    protocol text,
>    time timestamp,
>    PRIMARY KEY (userid, ip, port, protocol)
> {noformat}
> you can insert
> {noformat}
> INSERT INTO connections (userid, ip, port, time) VALUES (2, '', 80, 123456789);
> {noformat}
> You cannot however select that column specifically (i.e, without selecting column (2,
'', 80, 'http') for instance).
> This ticket proposes to allow that though 'null', i.e. to allow
> {noformat}
> SELECT * FROM connections WHERE userid = 2 AND ip = '' AND port = 80 AND protocol
= null;
> {noformat}
> It would then also make sense to support:
> {noformat}
> INSERT INTO connections (userid, ip, port, protocol, time) VALUES (2, '',
80, null, 123456789);
> {noformat}
> as an equivalent to the insert query above.

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:

View raw message