【问题标题】:Is Cassandra Update IF statement where the condition is an inequality expression supported?是否支持条件为不等式表达式的 Cassandra Update IF 语句?
【发布时间】:2016-02-17 17:56:54
【问题描述】:

Cassandra CQL 支持 UPDATE IF [condition] 其中 [condition] 是不等式吗?

我查看了语言参考,似乎 CQL 不能通过其语法支持不等式。我使用了这里的语言参考:https://cassandra.apache.org/doc/cql3/CQL.html#updateStmt

令人困惑的是,使用 C# 驱动程序或 CQLSH 可以成功执行查询,但是从 Datasax DevCenter 执行相同操作时出现错误。

我正在使用类似于以下的查询:

UPDATE product
SET edit_date = [new_value]
WHERE customer_id = '4' AND code = 'AMZ-ISMDB' 
IF edit_date < [new_value]

结果如下:

  • Datasax DevCenter 在尝试执行脚本 sn-p 时引发错误。我得到的错误是抱怨脚本的 UPDATE IF 部分中的不等式。

    当前脚本中存在一个语法错误(请参阅下面的详细信息)。 请修复并重试。 第 29 行:输入 '

    没有可行的替代方案
  • 如果我将 CLINQ 与 Datasax C# 驱动程序一起使用,则会按上述方式生成查询,并且在执行时,如果新的 edit_date 在现有的 edit_date 之后(这是预期的行为),则会保留更新。

  • 使用 CQLSH 查询成功运行并且更新被持久化

【问题讨论】:

  • 你的 cassandra 和 CQL 版本是多少?

标签: cassandra cql cql3 cqlsh cqlinq


【解决方案1】:

此问题很可能是 DevCenter 尚未更新以支持最新语法。

不等式条件被添加到: CASSANDRA-6839

看起来他们在添加文档时错过了更新。我打开CASSANDRA-10752 来解决这个问题。

【讨论】:

    【解决方案2】:

    此问题已在 DevCenter 版本 1.6.0 中修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      相关资源
      最近更新 更多