我尝试使用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
答案 0 :(得分:4)
DevCenter会执行自己的语法语法检查以及语义验证。
这是一个DevCenter错误 - 在此上下文中语法不允许列名“输入”,因为它也是一个在这里被错误地不允许的CQL关键字。
在修复程序可用之前,建议的解决方法是更改列的名称,例如“inputValue的”。
答案 1 :(得分:1)
正如它所说的那样“在输入'输入'时没有可行的替代方案”
似乎'input'是Devcenter中的保留关键字,而不是CQLSH中的保留关键字。 尝试使用另一个名称作为变量。