[ 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