Cassandra 如何更改用户定义的类型并使其在表中传播?

Cassandra 如何更改用户定义的类型并使其在表中传播?,cassandra,alter-table,user-defined-types,Cassandra,Alter Table,User Defined Types,我试图用重命名的字段更新Cassandra中的用户定义类型。这是我的另一份声明 ALTER TYPE test.test_type RENAME a TO b; 这很好,执行DESC TYPE test.test_TYPE会向我显示新的模式。但是我有一个模式为 col1 text PRIMARY KEY col2 frozen<test_type> 如果我尝试插入,我将被迫使用新类型 INSERT INTO test_table (c1, c2) VALUES ('value2'

我试图用重命名的字段更新Cassandra中的用户定义类型。这是我的另一份声明

ALTER TYPE test.test_type RENAME a TO b;
这很好,执行DESC TYPE test.test_TYPE会向我显示新的模式。但是我有一个模式为

col1 text PRIMARY KEY
col2 frozen<test_type>
如果我尝试插入,我将被迫使用新类型

INSERT INTO test_table (c1, c2) VALUES ('value2', {a: 'a2'});
InvalidRequest:code=2200[无效查询]消息=用户定义的类型测试类型的值中的未知字段“a”

但即使使用新类型插入,仍然会得到旧字段

INSERT INTO test_table (c1, c2) VALUES ('value2', {b: 'a2'});
SELECT * FROM test_table;

c1      | c2
--------+------------
value1  | {a: 'a1'}
value2  | {a: 'a2'}
我还尝试运行ALTER TABLE以使用新类型重新键入列,向冻结类型的表中添加新列,甚至删除该表并重新创建它,这在生产环境中甚至不是一个选项。不管怎样,当我从中选择时,类型保持不变


我应该如何实际更改类型?

发现问题已记录在此Jira中。


重新启动cqlsh将返回您期望的值。基础表和类型已被正确修改,只是cqlsh有一个bug,在重新启动cqlsh之前,它不会返回更新值

对我来说这看起来像个虫子,但我找不到任何吉拉提到它。我在Cass 2.1和CQL 3.2上得到了和你一样的结果。即使创建具有更新类型的新表也会有问题。插入使用更新的格式,选择使用原始格式。@AlecCollier这有点令人沮丧。在执行ALTER TYPE test_TYPE ADD c text时,我会得到相同的行为。我有点惊讶,因为如果ALTER TYPE语句实际上不起作用,我真的不明白它的意义是什么。谢谢你弄明白了。
INSERT INTO test_table (c1, c2) VALUES ('value2', {b: 'a2'});
SELECT * FROM test_table;

c1      | c2
--------+------------
value1  | {a: 'a1'}
value2  | {a: 'a2'}