我在AQL查询中遇到解析错误,该查询包含值为
-1 x < .5
或x > -.2
。
我认为这可能是一个错误,但是文档中并未明确说明是否需要前导零(似乎很奇怪,这是必需的)。
我仅运行3.4 rc4版本,因此无法验证任何正式发布的版本是否存在此行为。有人可以确认吗?还是这里有任何ArangoDB开发人员愿意发表评论?
谢谢!
答案 0 :(得分:1)
AQL不支持没有前导数字的浮点数文字。
documentation显示了受支持的符号的示例,而.5
之类的符号不在其中。
如果要将此功能作为功能提出,请create an issue on GitHub。
您可以在此处找到定义数字语言标记的代码: https://github.com/arangodb/arangodb/blob/devel/arangod/Aql/tokens.ll#L447
(0|[1-9][0-9]*) {
/* a numeric integer value */
...
(0|[1-9][0-9]*)((\.[0-9]+)?([eE][\-\+]?[0-9]+)?) {
/* a numeric double value */
从这些正则表达式可以看出,00
和00.123
之类的文字也不被支持-整数部分中最多不能包含一个前导0
。
答案 1 :(得分:0)
在3.3.19中运行它并可以正常运行:
let tmp = [0.2,3,4,0.5]
for t in tmp
filter t > 0.5
return t
这会引发解析错误
let tmp = [0.2,3,4,0.5]
for t in tmp
filter t > .5
return t
所以,我认为可以肯定地说0为强制性
答案 2 :(得分:0)
更新
我们最近将a pull request合并到ArangoDB的devel分支中,该分支增加了对小数的支持,而不会在AQL前面加零。从下一个版本开始,ArangoDB开发版本将提供此功能,但任何发行版均不可用。到目前为止,目标版本为3.5。
如果对该功能有普遍需求,那么也应该很容易将拉取请求反向移植到ArangoDB 3.4。