mirror of https://gitee.com/bigwinds/arangodb
added tests
This commit is contained in:
parent
a1f812b28b
commit
b6e182fd0f
|
@ -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
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
Loading…
Reference in New Issue