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

Sylvain Lebresne updated CASSANDRA-4377:
----------------------------------------

    Attachment: 4377.txt

Attaching simple patch to allow the insertion in the case above. Truth is, I'm 
not really satisfied (though I don't have a clearly better option) by such a 
patch for 2 reasons:
# it will break the case for thrift where people were using compositeType and 
column_metadata on them. That might be 0 people we're talking about but it's 
still a bit annoying. An alternative here would be that for each composite 
column, we iterater over all column_metadata and check where one apply. This 
would work but this feels butt ugly.
# it feels to me we supporting either not enough or too much in the thrift 
side. Even if we support this, we still don't expose the CQL3 metadata to 
thrift, so one has to know the CQL schema definition to be able to create the 
column in the first place (or deserialize it on read). In particular, most 
advanced thrift client will likely still break at one point or another.

Overall I see two reasonable approaches:
* Either we start exposing enough on the thirft side so that thrift client can 
work correctly with CQL3. While this may be doable reasonably easily now, this 
will be increasingly difficult with things like CASSANDRA-4179, CASSANDRA-3647, 
... Besides, even if we make it possible to work with CQL3 table, it doesn't 
mean it will be convenient since thrift won't do the grouping of columns in 
sparse table.
* Be clear that you cannot work with CQL3 created table from thrift.

But imo the in-the-middle approach that this patch would start takes the risk 
of polluting the thrift side without adding much.

                
> CQL3 column value validation bug
> --------------------------------
>
>                 Key: CASSANDRA-4377
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4377
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 1.1.1
>            Reporter: Nick Bailey
>            Assignee: Sylvain Lebresne
>             Fix For: 1.1.3
>
>         Attachments: 4377.txt
>
>
> {noformat}
> cqlsh> create keyspace test with strategy_class = 'SimpleStrategy' and 
> strategy_options:replication_factor = 1;
> cqlsh> use test;
> cqlsh:test> CREATE TABLE stats (
>         ...   gid          blob,
>         ...   period     int,
>         ...   tid          blob, 
>         ...   sum        int,
>         ...   uniques           blob,
>         ...   PRIMARY KEY(gid, period, tid)
>         ... );
> cqlsh:test> describe columnfamily stats;
> CREATE TABLE stats (
>   gid blob PRIMARY KEY
> ) WITH
>   comment='' AND
>   
> comparator='CompositeType(org.apache.cassandra.db.marshal.Int32Type,org.apache.cassandra.db.marshal.BytesType,org.apache.cassandra.db.marshal.UTF8Type)'
>  AND
>   read_repair_chance=0.100000 AND
>   gc_grace_seconds=864000 AND
>   default_validation=text AND
>   min_compaction_threshold=4 AND
>   max_compaction_threshold=32 AND
>   replicate_on_write='true' AND
>   compaction_strategy_class='SizeTieredCompactionStrategy' AND
>   compression_parameters:sstable_compression='SnappyCompressor';
> {noformat}
> You can see in the above output that the stats cf is created with the column 
> validator set to text, but neither of the non primary key columns defined are 
> text. It should either be setting metadata for those columns or not setting a 
> default validator or some combination of the two.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to