the following type of query was too eagerly optimised, leading to errors in code-generation:
LET a = (FOR i IN [] RETURN i) LET b = (FOR i IN [] RETURN i) RETURN 1
the problem occurred when both lists in the subqueries were empty. In this case invalid code
was generated and the query couldn't be executed.
AQL user-defined functions were introduced in ArangoDB 1.3, and the namespace resolution
operator for them was the single colon (`:`). A function call looked like this:
RETURN mygroup:myfunc()
The single colon caused an ambiguity in the AQL grammar, making it indistinguishable from
named attributes or the ternary operator in some cases, e.g.
{ mygroup:myfunc ? mygroup:myfunc }
The change of the namespace resolution operator from `:` to `::` fixes this ambiguity.
Existing user functions in the database will be automatically fixed when starting ArangoDB
1.4 with the `--upgrade` option. However, queries using user-defined functions need to be
adjusted on the client side to use the new operator.