首页 > 解决方案 > 更改 Cassandra UDT 类型以添加​​多个属性的查询是什么

问题描述

我有一个 Cassandra UDT 列,它有大约 10 个属性,现在我们计划再添加 3 个属性。添加所有三个属性的查询是什么。我可以通过执行 3 个不同的查询(如alter TYPE commentmetadata ADD columnname1 <type>;, alter TYPE commentmetadata ADD columnname2 <type>;, alter TYPE commentmetadata ADD columnname3 <type>;.

这可以在单个查询中完成吗?Datastax 文档提到,可以通过ALTER TYPE commentmetadata ADD (field_name cql_datatype[,...])在逗号分隔列表中输入字段名称后跟数据类型来添加字段。我尝试了以下 3 个查询,但我都收到了查询错误。

ALTER TYPE commentmetadata ADD columnname1 int, columnname2 int, columnname3 int;
ALTER TYPE commentmetadata ADD [columnname1 int, columnname2 int, columnname3 int]; 
ALTER TYPE commentmetadata ADD (columnname1 int, columnname2 int, columnname3 int);

标签: cassandrauser-defined-typesalter

解决方案


根据CQL 语法,这是不可能的:

/**
 * ALTER TYPE <name> ALTER <field> TYPE <newtype>;
 * ALTER TYPE <name> ADD <field> <newtype>;
 * ALTER TYPE <name> RENAME <field> TO <newtype> AND ...;
 */
alterTypeStatement returns [AlterTypeStatement.Raw stmt]
    : K_ALTER K_TYPE name=userTypeName { $stmt = new AlterTypeStatement.Raw(name); }
      (
        K_ALTER   f=fident K_TYPE v=comparatorType { $stmt.alter(f, v); }

      | K_ADD     f=fident v=comparatorType        { $stmt.add(f, v); }

      | K_RENAME f1=fident K_TO toF1=fident        { $stmt.rename(f1, toF1); }
         ( K_AND fn=fident K_TO toFn=fident        { $stmt.rename(fn, toFn); } )*
      )
    ;

您可以为 Cassandra 提交 JIRA 以添加此类功能。

PS你能指出它在DataStax文档中写的页面吗?


推荐阅读