[
https://issues.apache.org/jira/browse/CASSANDRA-5489?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13639108#comment-13639108
]
Sylvain Lebresne commented on CASSANDRA-5489:
---------------------------------------------
Unfortunately, this is more complicated. The fact that 1.2 doesn't handles
nulls happens to be kind of a bug.
More precisely, if using the CLI you do:
{noformat}
[default@ks] create column family test with
comparator='CompositeType(Int32Type, Int32Type, Int32Type)' and
key_validation_class=UTF8Type and default_validation_class=UTF8Type;
{noformat}
and then with cqlsh:
{noformat}
cqlsh:ks> DESC COLUMNFAMILY test;
CREATE TABLE test (
key text,
column1 int,
column2 int,
column3 int,
value text,
PRIMARY KEY (key, column1, column2, column3)
) WITH COMPACT STORAGE ...
cqlsh:ks> ALTER TABLE test RENAME column2 TO foo;
TSocket read 0 bytes
{noformat}
Basically, the idea is that when upgrading from thrift, if you only rename some
of the PK columns, then you can have nulls in the column_alias list. At least
that was the initial intention, but well, that's not handled correctly in 1.2.
So, this is getting a bit too complicated, so what I suggest here is to simply
refuse the ALTER command above. I.e. if you're upgrading from thrift, i.e. if
you don't have any column_aliases, then we should probably only allow to rename
all the cluster_alias in one shot, not one alias by one alias. This is not
really much of a restriction and that'll avoids having to handle nulls in the
key/column_aliases.
> Fix 2.0 key and column aliases serialization and cqlsh DESC SCHEMA
> ------------------------------------------------------------------
>
> Key: CASSANDRA-5489
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5489
> Project: Cassandra
> Issue Type: Bug
> Components: Core, Tools
> Affects Versions: 2.0
> Reporter: Aleksey Yeschenko
> Assignee: Aleksey Yeschenko
> Priority: Minor
> Fix For: 2.0
>
> Attachments: 5489.txt
>
>
> CASSANDRA-5125 made a slight change to how key_aliases and column_aliases are
> serialized in schema. Prior to that we never kept nulls in the the json
> pseudo-lists. This does break cqlsh and probably breaks 1.2 nodes receiving
> such migrations as well. The patch reverts this behavior and also slightly
> modifies cqlsh itself to ignore non-regular columns from
> system.schema_columns table.
> This patch breaks nothing, since 2.0 already handles 1.2 non-null padded
> alias lists.
--
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