根据文档,ascli应该能够在对记录(docs on ascli command 'udf-record-apply')应用记录udf时采用参数。
然而,我没有让这个工作。这是一个最小的例子:
-- Minimal failing example
function testfunc(rec, param1, param2, param3)
local ret = map()
-- Just print what was passed into UDF
ret['debug_param1'] = param1
ret['debug_param2'] = param2
ret['debug_param3'] = param3
return ret
end
已在ascli udf-put minimal-example.lua
注册。当与aql一起使用时,记录udf工作正常:
aql> execute minimal-example.testfunc(12345) on test.test where PK = '1'
+----------------------------------------------------------------+
| testfunc |
+----------------------------------------------------------------+
| {"debug_param1":12345, "debug_param2":NIL, "debug_param3":NIL} |
+----------------------------------------------------------------+
1 row in set (0.000 secs)
但是,当从cli使用param1 = 12345时,它会忽略传递给udf的所有参数:
$ ascli udf-record-apply test test 1 minimal-example testfunc 12345
{ "debug_param1": null, "debug_param2": null, "debug_param3": null }
我对ascli的调用是否不正确或者这是一个错误?
答案 0 :(得分:3)
您可以通过ascli将整数列表(或空列表)传递到UDF中。例如:
ascli udf-record-apply test test 1 udfModule funcName [123] [234,235] [1,[2]] []
一些注意事项:
- 参数传递似乎仅适用于整数列表(无字符串,地图等)
- 列表中的逗号后面没有空格
答案 1 :(得分:0)
最好使用功能更丰富且维护良好的aql工具,而不是ascli。