AQL数字文字解析错误,不加零

时间:2018-11-15 20:12:11

标签: arangodb aql

我在AQL查询中遇到解析错误,该查询包含值为数字文字,其中
-1 前导零,例如x < .5x > -.2

我认为这可能是一个错误,但是文档中并未明确说明是否需要前导零(似乎很奇怪,这是必需的)。

我仅运行3.4 rc4版本,因此无法验证任何正式发布的版本是否存在此行为。有人可以确认吗?还是这里有任何ArangoDB开发人员愿意发表评论?

谢谢!

3 个答案:

答案 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 */

从这些正则表达式可以看出,0000.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。