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

Sylvain Lebresne updated CASSANDRA-4093:
----------------------------------------

    Attachment: 4093_v2.txt

Attaching 4093_v2. Internally, this is roughtly the same as the previous patch 
(using componentIndex). However, this patch doesn't not expose it through 
thrift and remove column_aliases and value_alias (from thrift) too.

Note that it completely skip ColumnDefinition whose componentIndex is not null 
(i.e those created by CQL3) when translating to thrift, which fixes the CLI 
problem (basically the CLI don't get back the parts he don't know how to 
interpret).

An additional change is that CFMetaData.apply() make sure that a thrift update 
won't wrongfully remove CQL3 only metadata (ie. columnAliases, valueAliases and 
ColumnDefinition with a non-null componentIndex). In other words, it's safe to 
create a column family through CQL3 and later update it with the cli (to avoid 
foot shooting for those that would be in the middle of transitioning to CQL3 
for instance).

The only small detail is that we *need* to backport CASSANDRA-4037 to 1.1.0 for 
this to work (since currently CQL do a toThrift(fromThrift()) dance for schema 
update (in order to use ThriftValidation)).

bq. Yes, I suppose there's no reason not to expose that to Thrift as well.

I'm actually happy with the idea of v2 of not exposing to thrift what's not 
usefull right now. I guess we can go with v2 and expose componentIndex later 
when it makes sense on the thrift.

                
> schema_* CFs do not respect column comparator which leads to CLI commands 
> failure.
> ----------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-4093
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4093
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Tools
>    Affects Versions: 1.1.0
>            Reporter: Dave Brosius
>            Assignee: Sylvain Lebresne
>             Fix For: 1.1.0
>
>         Attachments: 4093.txt, 4093_v2.txt, CASSANDRA-4093-CD-changes.patch
>
>
> ColumnDefinition.{ascii, utf8, bool, ...} static methods used to initialize 
> schema_* CFs column_metadata do not respect CF comparator and use 
> ByteBufferUtil.bytes(...) for column names which creates problems in CLI and 
> probably in other places.
> The CompositeType validator throws exception on first column
> String columnName = columnNameValidator.getString(columnDef.name);
> Because it appears the composite type length header is wrong (25455)
> AbstractCompositeType.getWithShortLength
> java.lang.IllegalArgumentException
>       at java.nio.Buffer.limit(Buffer.java:247)
>       at 
> org.apache.cassandra.db.marshal.AbstractCompositeType.getBytes(AbstractCompositeType.java:50)
>       at 
> org.apache.cassandra.db.marshal.AbstractCompositeType.getWithShortLength(AbstractCompositeType.java:59)
>       at 
> org.apache.cassandra.db.marshal.AbstractCompositeType.getString(AbstractCompositeType.java:139)
>       at 
> org.apache.cassandra.cli.CliClient.describeColumnFamily(CliClient.java:2046)
>       at 
> org.apache.cassandra.cli.CliClient.describeKeySpace(CliClient.java:1969)
>       at 
> org.apache.cassandra.cli.CliClient.executeShowKeySpaces(CliClient.java:1574)
> (seen in trunk)

--
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