cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvain Lebresne (Updated) (JIRA)" <>
Subject [jira] [Updated] (CASSANDRA-4093) schema_* CFs do not respect column comparator which leads to CLI commands failure.
Date Fri, 06 Apr 2012 16:15:24 GMT


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

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

> schema_* CFs do not respect column comparator which leads to CLI commands failure.
> ----------------------------------------------------------------------------------
>                 Key: CASSANDRA-4093
>                 URL:
>             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(;
> Because it appears the composite type length header is wrong (25455)
> AbstractCompositeType.getWithShortLength
> java.lang.IllegalArgumentException
> 	at java.nio.Buffer.limit(
> 	at org.apache.cassandra.db.marshal.AbstractCompositeType.getBytes(
> 	at org.apache.cassandra.db.marshal.AbstractCompositeType.getWithShortLength(
> 	at org.apache.cassandra.db.marshal.AbstractCompositeType.getString(
> 	at org.apache.cassandra.cli.CliClient.describeColumnFamily(
> 	at org.apache.cassandra.cli.CliClient.describeKeySpace(
> 	at org.apache.cassandra.cli.CliClient.executeShowKeySpaces(
> (seen in trunk)

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message