cassandra-commits mailing list archives

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

     [ https://issues.apache.org/jira/browse/CASSANDRA-3783?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

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: https://issues.apache.org/jira/browse/CASSANDRA-3783
>             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)
> ) WITH COMPACT STORAGE
> {noformat}
> you can insert
> {noformat}
> INSERT INTO connections (userid, ip, port, time) VALUES (2, '192.168.0.1', 80, 123456789);
> {noformat}
> You cannot however select that column specifically (i.e, without selecting column (2,
'192.168.0.1', 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 = '192.168.0.1' 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, '192.168.0.1',
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: http://www.atlassian.com/software/jira

Mime
View raw message