【问题标题】:DevCenter reports syntax error but same CQL runs on cqlshDevCenter 报告语法错误,但在 cqlsh 上运行相同的 CQL
【发布时间】:2016-01-19 13:36:23
【问题描述】:

我正在尝试使用 Devcenter 创建用户定义函数。

http://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateUDF.html

以下示例取自上述链接。

CREATE OR REPLACE FUNCTION fLog (input double) CALLED ON NULL INPUT RETURNS double LANGUAGE java AS 'return Double.valueOf(Math.log(input.doubleValue()));';

它在 cqlsh 中有效,但在 DevCenter 中失败并出现以下错误。根据我得到响应的速度,我认为 DevCenter 会进行本地语法检查并中止执行,因为它认为查询是错误的。

我正在使用 Cassandra 2.2.3 和 DevCenter 1.4.1

【问题讨论】:

  • DevCenter 的查询窗口不是 CQLSH 的复制品 - 并非所有适用于 CQLSH 的命令都适用于 DevCenter。 (COPY 是另一个不起作用的命令)
  • COPY 是可以理解的,因为它可能必须与本地文件系统一起使用,但 UDF 创建将被视为 DML 并且在 DevCenter 中允许 DML,所以我倾向于认为这是一个错误。

标签: cassandra datastax-enterprise


【解决方案1】:

DevCenter 会执行它自己的语法语法检查以及语义验证。

这是一个 DevCenter 错误 - 在此上下文中,语法不允许列名“输入”,因为它也是此处错误地不允许的 CQL 关键字。

在修复可用之前,建议的解决方法是更改​​列的名称,例如“输入值”。

【讨论】:

    【解决方案2】:

    正如它所说的“输入'输入'没有可行的替代方案”

    似乎“输入”是 Devcenter 中的保留关键字,而不是 CQLSH。 尝试为变量使用其他名称。

    【讨论】:

      猜你喜欢
      • 2014-04-25
      • 1970-01-01
      • 2012-10-28
      • 2021-02-28
      • 2016-04-28
      • 2019-05-29
      • 1970-01-01
      • 2019-12-18
      • 2020-11-17
      相关资源
      最近更新 更多