【问题标题】:What is the query for Altering a Cassandra UDT TYPE to add multiple attributes更改 Cassandra UDT 类型以添加​​多个属性的查询是什么
【发布时间】:2020-05-12 00:39:43
【问题描述】:

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

这可以在单个查询中完成吗? 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);

【问题讨论】:

  • 什么版本的 Cassandra?

标签: cassandra user-defined-types alter


【解决方案1】:

根据CQL grammar,这是不可能的:

/**
 * 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 以添加此类功能。

附:您能指出它在 DataStax 文档中所写的页面吗?

【讨论】:

猜你喜欢
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 2015-04-09
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多