1
0
Fork 0

added tests

This commit is contained in:
Jan Steemann 2014-11-26 20:24:28 +01:00 committed by Frank Celler
parent a1f812b28b
commit b6e182fd0f
1 changed files with 69 additions and 0 deletions

View File

@ -77,6 +77,75 @@ function optimizerIndexesTestSuite () {
assertTrue(results.stats.scannedIndex > 0);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test index usage
////////////////////////////////////////////////////////////////////////////////
testUseIndexJoin : function () {
var query = "FOR i IN " + c.name() + " FILTER i.value == 8 FOR j IN " + c.name() + " FILTER i.value == j.value RETURN i.value";
var plan = AQL_EXPLAIN(query).plan;
var indexes = 0;
var nodeTypes = plan.nodes.map(function(node) {
if (node.type === "IndexRangeNode") {
++indexes;
}
return node.type;
});
assertEqual(2, indexes);
var results = AQL_EXECUTE(query);
assertEqual([ 8 ], results.json, query);
assertEqual(0, results.stats.scannedFull);
assertTrue(results.stats.scannedIndex > 0);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test index usage
////////////////////////////////////////////////////////////////////////////////
testUseIndexJoinJoin : function () {
var query = "FOR i IN " + c.name() + " FILTER i.value == 8 FOR j IN " + c.name() + " FILTER i._key == j._key RETURN i.value";
var plan = AQL_EXPLAIN(query).plan;
var indexes = 0;
var nodeTypes = plan.nodes.map(function(node) {
if (node.type === "IndexRangeNode") {
++indexes;
}
return node.type;
});
assertEqual(2, indexes);
var results = AQL_EXECUTE(query);
assertEqual([ 8 ], results.json, query);
assertEqual(0, results.stats.scannedFull);
assertTrue(results.stats.scannedIndex > 0);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test index usage
////////////////////////////////////////////////////////////////////////////////
testUseIndexJoinJoinJoin : function () {
var query = "FOR i IN " + c.name() + " FILTER i.value == 8 FOR j IN " + c.name() + " FILTER i.value == j.value FOR k IN " + c.name() + " FILTER j.value == k.value RETURN i.value";
var plan = AQL_EXPLAIN(query).plan;
var indexes = 0;
var nodeTypes = plan.nodes.map(function(node) {
if (node.type === "IndexRangeNode") {
++indexes;
}
return node.type;
});
assertEqual(3, indexes);
var results = AQL_EXECUTE(query);
assertEqual([ 8 ], results.json, query);
assertEqual(0, results.stats.scannedFull);
assertTrue(results.stats.scannedIndex > 0);
},
////////////////////////////////////////////////////////////////////////////////
/// @brief test index usage
////////////////////////////////////////////////////////////////////////////////