1
0
Fork 0

allow functions results as parameters in all function calls

This commit is contained in:
Jan Steemann 2014-01-06 11:14:54 +01:00
parent 94d6523b87
commit 02a84a4f92
2 changed files with 18 additions and 2 deletions

View File

@ -150,7 +150,8 @@ static bool CheckArgumentType (TRI_aql_node_t const* parameter,
const param_t* const allowed) {
param_t found = InitParam();
if (parameter->_type == TRI_AQL_NODE_REFERENCE) {
if (parameter->_type == TRI_AQL_NODE_REFERENCE ||
parameter->_type == TRI_AQL_NODE_FCALL) {
return true;
}

View File

@ -1760,13 +1760,28 @@ function ahuacatlFunctionsTestSuite () {
actual = getQueryResults("RETURN DOCUMENT(\"" + d2._id + "\")");
assertEqual(expected, actual);
// test with function result parameter
actual = getQueryResults("RETURN DOCUMENT(CONCAT(\"foo\", \"bar\"))");
assertEqual([ null ], actual);
actual = getQueryResults("RETURN DOCUMENT(CONCAT(\"" + cn + "\", \"bart\"))");
assertEqual([ null ], actual);
var d3 = cx.save({ _key: "foo", value: "bar" });
expected = [ { value: "bar" } ];
actual = getQueryResults("RETURN DOCUMENT(CONCAT(\"" + cn + "\", \"foo\"))");
assertEqual([ null ], actual);
actual = getQueryResults("RETURN DOCUMENT(CONCAT(@c, \"/\", @k))", { c: cn, k: "foo" });
assertEqual(expected, actual);
actual = getQueryResults("RETURN DOCUMENT(CONCAT(\"" + cn + "\", \"/\", @k))", { k: "foo" });
assertEqual(expected, actual);
// test with bind parameter
expected = [ { title: "nada", value : 123 } ];
actual = getQueryResults("RETURN DOCUMENT(@id)", { id: d2._id });
assertEqual(expected, actual);
// test dynamic parameter
expected = [ { title: "nada", value : 123 }, { title: "123", value: 456 } ];
expected = [ { title: "nada", value : 123 }, { title: "123", value: 456 }, { value: "bar" } ];
actual = getQueryResults("FOR d IN @@cn SORT d.value RETURN DOCUMENT(d._id)", { "@cn" : cn });
assertEqual(expected, actual);