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

Sylvain Lebresne updated CASSANDRA-3783:
----------------------------------------

    Attachment: 3783-v4.txt

Sorry I wasn't clear, what I meant earlier is that CASSANDRA-5081 already has 
the tests needed to handle null. Typically, the test the patch adds to 
Operation is already in Constants.Setter and related collection methods (the 
goal being to have the same code to handle prepared and non-prepared statement).

So attaching a v4 that reuse the code introduced by CASSANDRA-5081. It makes 
{{null}} a separate object rather than another constant because that felt 
slightly cleaner/simpler). Also, in the parser, {{null}} is a 'value' instead 
of 'constant': the difference is minor but it avoid having to deal with 
{{null}} in CREATE/ALTER property values (since they are 'constant').

The patch also validate that null values are not used inside a collection and 
simplify/fix a few collections methods.

                
> 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
>            Assignee: MichaƂ Michalski
>            Priority: Minor
>              Labels: cql3
>             Fix For: 1.2.4
>
>         Attachments: 3783-v2.patch, 3783-v3.patch, 3783-v4.txt, 
> 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

Reply via email to