我正在尝试使用重命名的字段更新Cassandra中的用户定义类型。这是我的修改声明。
ALTER TYPE test.test_type RENAME a TO b;
这很好用,DESC TYPE test.test_type
向我展示了新架构。但是我有一个像
col1 text PRIMARY KEY
col2 frozen<test_type>
这似乎没有更新。
如果我运行SELECT * FROM test_table
,我会收到旧类型字段
c1 | c2
--------+------------
value1 | {a: 'a1'}
如果我尝试插入,我被迫使用新类型
INSERT INTO test_table (c1, c2) VALUES ('value2', {a: 'a2'});
InvalidRequest:code = 2200 [无效查询]消息=&#34;未知字段&#39; a&#39;用户定义类型test_type&#34;
的值
但即使我使用新类型插入,我仍然会得到旧字段。
INSERT INTO test_table (c1, c2) VALUES ('value2', {b: 'a2'});
SELECT * FROM test_table;
c1 | c2
--------+------------
value1 | {a: 'a1'}
value2 | {a: 'a2'}
我还尝试运行ALTER TABLE
来重新键入具有新类型的列,向类型frozen<test_type>
的表中添加新列,甚至删除表并重新创建它(这甚至不是生产中的一种选择)。无论如何,当我从中选择时,类型保持不变。
我该如何改变这种类型?
答案 0 :(得分:0)
发现此问题已记录在此Jira中。 https://issues.apache.org/jira/browse/CASSANDRA-9188
重新启动cqlsh将返回您期望的值。基础表和类型已被正确修改,只是cqlsh有一个错误,在重新启动cqlsh之前它不会返回更新值。