mirror of https://gitee.com/bigwinds/arangodb
removed "old" AQL function AQL_EXPLAIN
This commit is contained in:
parent
672eec350e
commit
611ef2b73c
|
@ -1315,144 +1315,6 @@ static v8::Handle<v8::Value> JS_RunAhuacatl (v8::Arguments const& argv) {
|
|||
return scope.Close(result);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief explains an AQL query
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static v8::Handle<v8::Value> JS_ExplainAhuacatl (v8::Arguments const& argv) {
|
||||
v8::HandleScope scope;
|
||||
v8::TryCatch tryCatch;
|
||||
const uint32_t argc = argv.Length();
|
||||
|
||||
if (argc < 1 || argc > 3) {
|
||||
TRI_V8_EXCEPTION_USAGE(scope, "AHUACATL_EXPLAIN(<querystring>, <bindvalues>, <performoptimisations>)");
|
||||
}
|
||||
|
||||
TRI_vocbase_t* vocbase = GetContextVocBase();
|
||||
|
||||
if (vocbase == nullptr) {
|
||||
TRI_V8_EXCEPTION(scope, TRI_ERROR_ARANGO_DATABASE_NOT_FOUND);
|
||||
}
|
||||
|
||||
// get the query string
|
||||
v8::Handle<v8::Value> queryArg = argv[0];
|
||||
if (! queryArg->IsString()) {
|
||||
TRI_V8_TYPE_ERROR(scope, "expecting string for <querystring>");
|
||||
}
|
||||
|
||||
const string queryString = TRI_ObjectToString(queryArg);
|
||||
|
||||
// bind parameters
|
||||
TRI_json_t* parameters = nullptr;
|
||||
if (argc > 1) {
|
||||
// parameters may still be null afterwards!
|
||||
parameters = TRI_ObjectToJson(argv[1]);
|
||||
}
|
||||
|
||||
AhuacatlGuard guard(vocbase, queryString, 0);
|
||||
|
||||
if (! guard.valid()) {
|
||||
if (parameters != nullptr) {
|
||||
TRI_FreeJson(TRI_UNKNOWN_MEM_ZONE, parameters);
|
||||
}
|
||||
TRI_V8_EXCEPTION_MEMORY(scope);
|
||||
}
|
||||
|
||||
TRI_aql_context_t* context = guard.ptr();
|
||||
|
||||
bool performOptimisations = true;
|
||||
if (argc > 2) {
|
||||
// turn off optimisations ?
|
||||
performOptimisations = TRI_ObjectToBoolean(argv[2]);
|
||||
}
|
||||
|
||||
TRI_json_t* explain = 0;
|
||||
|
||||
if (! TRI_ValidateQueryContextAql(context) ||
|
||||
! TRI_BindQueryContextAql(context, parameters) ||
|
||||
! TRI_SetupCollectionsContextAql(context)) {
|
||||
|
||||
if (parameters != nullptr) {
|
||||
TRI_FreeJson(TRI_UNKNOWN_MEM_ZONE, parameters);
|
||||
}
|
||||
|
||||
v8::Handle<v8::Object> errorObject = CreateErrorObjectAhuacatl(&context->_error);
|
||||
return scope.Close(v8::ThrowException(errorObject));
|
||||
}
|
||||
|
||||
if (parameters != nullptr) {
|
||||
TRI_FreeJson(TRI_UNKNOWN_MEM_ZONE, parameters);
|
||||
}
|
||||
|
||||
// note: a query is not necessarily collection-based.
|
||||
// this means that the _collections array might contain 0 collections!
|
||||
AhuacatlTransaction<V8TransactionContext<true>> trx(vocbase, context);
|
||||
|
||||
int res = trx.begin();
|
||||
|
||||
if (res != TRI_ERROR_NO_ERROR) {
|
||||
// check if there is some error data registered in the transaction
|
||||
const string errorData = trx.getErrorData();
|
||||
|
||||
if (errorData.empty()) {
|
||||
// no error data. return a regular error message
|
||||
TRI_V8_EXCEPTION_MESSAGE(scope, res, "cannot explain query");
|
||||
}
|
||||
else {
|
||||
// there is specific error data. return a more tailored error message
|
||||
const string errorMsg = "cannot explain query: " + string(TRI_errno_string(res)) + ": '" + errorData + "'";
|
||||
return scope.Close(v8::ThrowException(TRI_CreateErrorObject(__FILE__,
|
||||
__LINE__,
|
||||
res,
|
||||
errorMsg)));
|
||||
}
|
||||
}
|
||||
|
||||
if ((performOptimisations && ! TRI_OptimiseQueryContextAql(context)) ||
|
||||
! (explain = TRI_ExplainAql(context))) {
|
||||
v8::Handle<v8::Object> errorObject = CreateErrorObjectAhuacatl(&context->_error);
|
||||
return scope.Close(v8::ThrowException(errorObject));
|
||||
}
|
||||
|
||||
trx.finish(TRI_ERROR_NO_ERROR);
|
||||
|
||||
TRI_ASSERT(explain);
|
||||
|
||||
v8::Handle<v8::Value> result;
|
||||
result = TRI_ObjectJson(explain);
|
||||
TRI_FreeJson(TRI_UNKNOWN_MEM_ZONE, explain);
|
||||
guard.free();
|
||||
|
||||
if (tryCatch.HasCaught()) {
|
||||
if (tryCatch.CanContinue()) {
|
||||
if (tryCatch.Exception()->IsObject() && v8::Handle<v8::Array>::Cast(tryCatch.Exception())->HasOwnProperty(v8::String::New("errorNum"))) {
|
||||
// we already have an ArangoError object
|
||||
return scope.Close(v8::ThrowException(tryCatch.Exception()));
|
||||
}
|
||||
|
||||
// create a new error object
|
||||
v8::Handle<v8::Object> errorObject = TRI_CreateErrorObject(
|
||||
__FILE__,
|
||||
__LINE__,
|
||||
TRI_ERROR_QUERY_SCRIPT,
|
||||
TRI_ObjectToString(tryCatch.Exception()).c_str());
|
||||
return scope.Close(v8::ThrowException(errorObject));
|
||||
}
|
||||
else {
|
||||
TRI_v8_global_t* v8g = static_cast<TRI_v8_global_t*>(v8::Isolate::GetCurrent()->GetData());
|
||||
v8g->_canceled = true;
|
||||
return scope.Close(result);
|
||||
}
|
||||
}
|
||||
|
||||
return scope.Close(result);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// --SECTION-- TRI_VOCBASE_COL_T FUNCTIONS
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// --SECTION-- TRI_VOCBASE_T FUNCTIONS
|
||||
// -----------------------------------------------------------------------------
|
||||
|
@ -2675,7 +2537,6 @@ void TRI_InitV8VocBridge (v8::Handle<v8::Context> context,
|
|||
|
||||
// AQL functions. not intended to be used by end users
|
||||
TRI_AddGlobalFunctionVocbase(context, "AHUACATL_RUN", JS_RunAhuacatl, true);
|
||||
TRI_AddGlobalFunctionVocbase(context, "AHUACATL_EXPLAIN", JS_ExplainAhuacatl, true);
|
||||
|
||||
// new AQL functions. not intended to be used directly by end users
|
||||
TRI_AddGlobalFunctionVocbase(context, "AQL_EXECUTE", JS_ExecuteAql, true);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*jshint strict: false */
|
||||
/*global require */
|
||||
/*global require, AQL_EXPLAIN */
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief query explain actions
|
||||
|
@ -32,7 +32,6 @@
|
|||
var actions = require("org/arangodb/actions");
|
||||
|
||||
var ERRORS = require("internal").errors;
|
||||
var EXPLAIN = require("internal").AQL_EXPLAIN;
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// --SECTION-- global variables
|
||||
|
@ -185,7 +184,7 @@ function post_api_explain (req, res) {
|
|||
return;
|
||||
}
|
||||
|
||||
var result = EXPLAIN(json.query, json.bindVars);
|
||||
var result = AQL_EXPLAIN(json.query, json.bindVars);
|
||||
|
||||
if (result instanceof Error) {
|
||||
actions.resultException(req, res, result, undefined, false);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*jshint -W051: true */
|
||||
/*global require, db, ArangoCollection, ArangoDatabase, ArangoCursor, ShapedJson,
|
||||
RELOAD_AUTH, SYS_DEFINE_ACTION, SYS_EXECUTE_GLOBAL_CONTEXT_FUNCTION,
|
||||
AHUACATL_RUN, AHUACATL_EXPLAIN, WAL_FLUSH, WAL_PROPERTIES,
|
||||
AHUACATL_RUN, WAL_FLUSH, WAL_PROPERTIES,
|
||||
REPLICATION_LOGGER_STATE, REPLICATION_LOGGER_CONFIGURE, REPLICATION_SERVER_ID,
|
||||
REPLICATION_APPLIER_CONFIGURE, REPLICATION_APPLIER_START, REPLICATION_APPLIER_SHUTDOWN,
|
||||
REPLICATION_APPLIER_FORGET, REPLICATION_APPLIER_STATE, REPLICATION_SYNCHRONISE,
|
||||
|
@ -108,13 +108,6 @@
|
|||
internal.AQL_QUERY = AHUACATL_RUN;
|
||||
delete AHUACATL_RUN;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief explains an AQL query
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
internal.AQL_EXPLAIN = AHUACATL_EXPLAIN;
|
||||
delete AHUACATL_EXPLAIN;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief resets engine in development mode
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -95,9 +95,7 @@ function assertParseError (errorCode, query) {
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
function getQueryExplanation (query, bindVars) {
|
||||
var result = internal.AQL_EXPLAIN(query, bindVars);
|
||||
|
||||
return result;
|
||||
return AQL_EXPLAIN(query, bindVars);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -65,7 +65,7 @@ ArangoStatement.prototype.parse = function () {
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
ArangoStatement.prototype.explain = function () {
|
||||
return internal.AQL_EXPLAIN(this._query, this._bindVars);
|
||||
return AQL_EXPLAIN(this._query, this._bindVars);
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -29,7 +29,6 @@ var jsunity = require("jsunity");
|
|||
var internal = require("internal");
|
||||
var helper = require("org/arangodb/aql-helper");
|
||||
var getQueryResults = helper.getQueryResults;
|
||||
var getQueryExplanation = helper.getQueryExplanation;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief test suite
|
||||
|
@ -80,46 +79,6 @@ function ahuacatlQueryEdgesTestSuite () {
|
|||
internal.db._drop("UnitTestsAhuacatlUserRelations");
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief checks the explain output
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
testFromQueryExplain : function () {
|
||||
var actual = getQueryExplanation("FOR r IN UnitTestsAhuacatlUserRelations FILTER r._from == \"" + docs["John"]._id +"\" RETURN { \"from\" : r._from, \"to\" : r._to }");
|
||||
assertEqual("index", actual[0].expression.extra.accessType);
|
||||
assertEqual("edge", actual[0].expression.extra.index.type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief checks the explain output
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
testToQueryExplain : function () {
|
||||
var actual = getQueryExplanation("FOR r IN UnitTestsAhuacatlUserRelations FILTER r._to == \"" + docs["Fred"]._id +"\" RETURN { \"from\" : r._from, \"to\" : r._to }");
|
||||
assertEqual("index", actual[0].expression.extra.accessType);
|
||||
assertEqual("edge", actual[0].expression.extra.index.type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief checks the explain output
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
testFromToQueryExplain : function () {
|
||||
var actual = getQueryExplanation("FOR r IN UnitTestsAhuacatlUserRelations FILTER r._from == \"" + docs["John"]._id +"\" && r._to == \"" + docs["Fred"]._id + "\" RETURN { \"from\" : r._from, \"to\" : r._to }");
|
||||
assertEqual("index", actual[0].expression.extra.accessType);
|
||||
assertEqual("edge", actual[0].expression.extra.index.type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief checks the explain output
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
testFromToQuerySelfExplain : function () {
|
||||
var actual = getQueryExplanation("FOR r IN UnitTestsAhuacatlUserRelations FILTER r._from == \"" + docs["Self"]._id +"\" && r._to == \"" + docs["Self"]._id + "\" RETURN { \"from\" : r._from, \"to\" : r._to }");
|
||||
assertEqual("index", actual[0].expression.extra.accessType);
|
||||
assertEqual("edge", actual[0].expression.extra.index.type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief checks an edge index query using _from
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -29,7 +29,6 @@ var internal = require("internal");
|
|||
var jsunity = require("jsunity");
|
||||
var helper = require("org/arangodb/aql-helper");
|
||||
var getQueryResults = helper.getQueryResults;
|
||||
var getQueryExplanation = helper.getQueryExplanation;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief test suite
|
||||
|
@ -78,10 +77,6 @@ function ahuacatlHashTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("index", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -94,10 +89,6 @@ function ahuacatlHashTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("index", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -134,10 +125,6 @@ function ahuacatlHashTestSuite () {
|
|||
var actual = getQueryResults(query, { "a": i, "b": j });
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query, { "a": i, "b": j });
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("index", explain[0].expression.extra.accessType);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -154,10 +141,6 @@ function ahuacatlHashTestSuite () {
|
|||
var actual = getQueryResults(query, { "a": i, "b": j });
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query, { "a": i, "b": j });
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("index", explain[0].expression.extra.accessType);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -172,11 +155,6 @@ function ahuacatlHashTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("let", explain[0].type);
|
||||
assertEqual("for", explain[1].type);
|
||||
assertEqual("index", explain[1].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -265,10 +243,6 @@ function ahuacatlHashTestSuite () {
|
|||
var actual = getQueryResults(query, { "a": 2, "b": 3 });
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query, { "a": 2, "b": 3 });
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("index", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -281,10 +255,6 @@ function ahuacatlHashTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -297,10 +267,6 @@ function ahuacatlHashTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -313,10 +279,6 @@ function ahuacatlHashTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -329,10 +291,6 @@ function ahuacatlHashTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -345,11 +303,7 @@ function ahuacatlHashTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
},
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
|
|
@ -29,7 +29,6 @@ var jsunity = require("jsunity");
|
|||
var internal = require("internal");
|
||||
var helper = require("org/arangodb/aql-helper");
|
||||
var getQueryResults = helper.getQueryResults;
|
||||
var getQueryExplanation = helper.getQueryExplanation;
|
||||
var assertQueryError = helper.assertQueryError;
|
||||
var errors = internal.errors;
|
||||
|
||||
|
@ -103,10 +102,6 @@ function ahuacatlQueryOptimiserInTestSuite () {
|
|||
var expected = [ 'test5', 'test7' ];
|
||||
var actual = getQueryResults("LET parents = [ 'test5', 'test7' ] FOR c IN " + cn + " FILTER c._key IN parents SORT c._key RETURN c._key");
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation("LET parents = [ 'test5', 'test7' ] FOR c IN " + cn + " FILTER c._key IN parents SORT c._key RETURN c._key");
|
||||
assertEqual("index", explain[1].expression.extra.accessType);
|
||||
assertEqual("primary", explain[1].expression.extra.index.type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -122,10 +117,6 @@ function ahuacatlQueryOptimiserInTestSuite () {
|
|||
var expected = [ 'test5', 'test7' ];
|
||||
var actual = getQueryResults("LET parents = (FOR c IN " + cn + " FILTER c._key IN [ 'test5', 'test7' ] RETURN c._key) FOR c IN " + cn + " FILTER c._key IN parents SORT c._key RETURN c._key");
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation("LET parents = (FOR c IN " + cn + " FILTER c._key IN [ 'test5', 'test7' ] RETURN c._key) FOR c IN " + cn + " FILTER c._key IN parents SORT c._key RETURN c._key");
|
||||
assertEqual("index", explain[5].expression.extra.accessType);
|
||||
assertEqual("primary", explain[5].expression.extra.index.type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -172,10 +163,6 @@ function ahuacatlQueryOptimiserInTestSuite () {
|
|||
var expected = [ 'test5', 'test7' ];
|
||||
var actual = getQueryResults("LET parents = [ 'test5', 'test7' ] FOR c IN " + cn + " FILTER c.code IN parents SORT c.code RETURN c.code");
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation("LET parents = [ 'test5', 'test7' ] FOR c IN " + cn + " FILTER c.code IN parents SORT c.code RETURN c.code");
|
||||
assertEqual("index", explain[1].expression.extra.accessType);
|
||||
assertEqual("hash", explain[1].expression.extra.index.type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -192,10 +179,6 @@ function ahuacatlQueryOptimiserInTestSuite () {
|
|||
var expected = [ 'test5', 'test7' ];
|
||||
var actual = getQueryResults("LET parents = (FOR c IN " + cn + " FILTER c.code IN [ 'test5', 'test7' ] RETURN c.code) FOR c IN " + cn + " FILTER c.code IN parents SORT c.code RETURN c.code");
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation("LET parents = (FOR c IN " + cn + " FILTER c.code IN [ 'test5', 'test7' ] RETURN c.code) FOR c IN " + cn + " FILTER c.code IN parents SORT c.code RETURN c.code");
|
||||
assertEqual("index", explain[5].expression.extra.accessType);
|
||||
assertEqual("hash", explain[5].expression.extra.index.type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -244,10 +227,6 @@ function ahuacatlQueryOptimiserInTestSuite () {
|
|||
var expected = [ 'test5', 'test7' ];
|
||||
var actual = getQueryResults("LET parents = [ 'test5', 'test7' ] FOR c IN " + cn + " FILTER c.code IN parents SORT c.code RETURN c.code");
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation("LET parents = [ 'test5', 'test7' ] FOR c IN " + cn + " FILTER c.code IN parents SORT c.code RETURN c.code");
|
||||
assertEqual("index", explain[1].expression.extra.accessType);
|
||||
assertEqual("skiplist", explain[1].expression.extra.index.type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -264,10 +243,6 @@ function ahuacatlQueryOptimiserInTestSuite () {
|
|||
var expected = [ 'test5', 'test7' ];
|
||||
var actual = getQueryResults("LET parents = (FOR c IN " + cn + " FILTER c.code IN [ 'test5', 'test7' ] RETURN c.code) FOR c IN " + cn + " FILTER c.code IN parents SORT c.code RETURN c.code");
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation("LET parents = (FOR c IN " + cn + " FILTER c.code IN [ 'test5', 'test7' ] RETURN c.code) FOR c IN " + cn + " FILTER c.code IN parents SORT c.code RETURN c.code");
|
||||
assertEqual("index", explain[5].expression.extra.accessType);
|
||||
assertEqual("skiplist", explain[5].expression.extra.index.type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -324,10 +299,6 @@ function ahuacatlQueryOptimiserInTestSuite () {
|
|||
var actual = getQueryResults("LET parents = [ '" + cn + "/test5', '" + cn + "/test7' ] FOR c IN " + en + " FILTER c._from IN parents SORT c._to RETURN c._to");
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation("LET parents = [ '" + cn + "/test5', '" + cn + "/test7' ] FOR c IN " + en + " FILTER c._from IN parents SORT c._to RETURN c._to");
|
||||
assertEqual("index", explain[1].expression.extra.accessType);
|
||||
assertEqual("edge", explain[1].expression.extra.index.type);
|
||||
|
||||
internal.db._drop(en);
|
||||
},
|
||||
|
||||
|
@ -353,10 +324,6 @@ function ahuacatlQueryOptimiserInTestSuite () {
|
|||
var actual = getQueryResults("LET parents = (FOR c IN " + cn + " FILTER c._key IN [ 'test5', 'test7' ] RETURN c._id) FOR c IN " + en + " FILTER c._from IN parents SORT c._to RETURN c._to");
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation("LET parents = (FOR c IN " + cn + " FILTER c._key IN [ 'test5', 'test7' ] RETURN c._id) FOR c IN " + en + " FILTER c._from IN parents SORT c._to RETURN c._to");
|
||||
assertEqual("index", explain[5].expression.extra.accessType);
|
||||
assertEqual("edge", explain[5].expression.extra.index.type);
|
||||
|
||||
internal.db._drop(en);
|
||||
},
|
||||
|
||||
|
|
|
@ -29,7 +29,6 @@ var jsunity = require("jsunity");
|
|||
var internal = require("internal");
|
||||
var helper = require("org/arangodb/aql-helper");
|
||||
var getQueryResults = helper.getQueryResults;
|
||||
var getQueryExplanation = helper.getQueryExplanation;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief test suite
|
||||
|
@ -96,10 +95,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
|
||||
var actual = getQueryResults(query);
|
||||
assertEqual(test.expectedLength, actual.length);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(true, explain[0].limit);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -132,10 +127,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
|
||||
var actual = getQueryResults(query);
|
||||
assertEqual(test.expectedLength, actual.length);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(test.offset + test.limit, explain[0]["expression"]["extra"]["limit"]);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -166,10 +157,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
|
||||
var actual = getQueryResults(query);
|
||||
assertEqual(0, actual.length);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("return (empty)", explain[0].type);
|
||||
assertEqual("const list", explain[0].expression.type);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -195,10 +182,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
|
||||
var actual = getQueryResults(query);
|
||||
assertEqual(0, actual.length);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("return (empty)", explain[0].type);
|
||||
assertEqual("const list", explain[0].expression.type);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -216,10 +199,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
|
||||
var actual = getQueryResults(query);
|
||||
assertEqual(0, actual.length);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("return (empty)", explain[0].type);
|
||||
assertEqual("const list", explain[0].expression.type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -231,10 +210,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
|
||||
var actual = getQueryResults(query);
|
||||
assertEqual(0, actual.length);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("return (empty)", explain[0].type);
|
||||
assertEqual("const list", explain[0].expression.type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -266,10 +241,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
|
||||
var actual = getQueryResults(query);
|
||||
assertEqual(test.expectedLength, actual.length);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(true, explain[0].limit);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -297,10 +268,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
|
||||
var actual = getQueryResults(query);
|
||||
assertEqual(test.expectedLength, actual.length);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(test.offset + test.limit, explain[0]["expression"]["extra"]["limit"]);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -350,10 +317,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
|
||||
var actual = getQueryResults(query);
|
||||
assertEqual(test.expectedLength, actual.length);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(true, explain[0].limit);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -398,10 +361,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
|
||||
var actual = getQueryResults(query);
|
||||
assertEqual(test.expectedLength, actual.length);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(true, explain[0].limit);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -446,10 +405,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
|
||||
var actual = getQueryResults(query);
|
||||
assertEqual(test.expectedLength, actual.length);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(undefined, explain[0].limit);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -466,10 +421,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
assertEqual(2, actual.length);
|
||||
assertEqual(23, actual[0].value);
|
||||
assertEqual(24, actual[1].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(true, explain[0].limit);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -486,10 +437,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
assertEqual(20, actual[0].value);
|
||||
assertEqual(21, actual[1].value);
|
||||
assertEqual(29, actual[9].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(true, explain[0].limit);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -506,10 +453,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
assertEqual(20, actual[0].value);
|
||||
assertEqual(21, actual[1].value);
|
||||
assertEqual(29, actual[9].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(undefined, explain[0].limit);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -525,10 +468,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
assertEqual(2, actual.length);
|
||||
assertEqual(23, actual[0].value);
|
||||
assertEqual(24, actual[1].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(true, explain[0].limit);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -545,10 +484,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
assertEqual(20, actual[0].value);
|
||||
assertEqual(21, actual[1].value);
|
||||
assertEqual(29, actual[9].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(true, explain[0].limit);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -565,10 +500,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
assertEqual(20, actual[0].value);
|
||||
assertEqual(21, actual[1].value);
|
||||
assertEqual(29, actual[9].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(undefined, explain[0].limit);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -583,10 +514,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
assertEqual(20, actual[0].value);
|
||||
assertEqual(21, actual[1].value);
|
||||
assertEqual(29, actual[9].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(true, explain[0].limit);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -603,10 +530,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
assertEqual(21, actual[1].value);
|
||||
assertEqual(22, actual[2].value);
|
||||
assertEqual(29, actual[9].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(true, explain[0].limit);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -618,10 +541,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
|
||||
var actual = getQueryResults(query);
|
||||
assertEqual(0, actual.length);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(undefined, explain[0].limit);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -638,10 +557,6 @@ function ahuacatlQueryOptimiserLimitTestSuite () {
|
|||
assertEqual(21, actual[1].value);
|
||||
assertEqual(22, actual[2].value);
|
||||
assertEqual(29, actual[9].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual(undefined, explain[0].limit);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -29,7 +29,6 @@ var jsunity = require("jsunity");
|
|||
var internal = require("internal");
|
||||
var helper = require("org/arangodb/aql-helper");
|
||||
var getQueryResults = helper.getQueryResults;
|
||||
var getQueryExplanation = helper.getQueryExplanation;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief test suite
|
||||
|
@ -176,10 +175,6 @@ function ahuacatlQueryOptimiserRefTestSuite () {
|
|||
var actual = getQueryResults(query, { "att" : "name", "what" : "age" });
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query, { "att": "name", "what": "age" });
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("index", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -192,10 +187,6 @@ function ahuacatlQueryOptimiserRefTestSuite () {
|
|||
var actual = getQueryResults(query, { "att" : "age", "what" : "name" });
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query, { "att": "age", "what": "name" });
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
}
|
||||
|
||||
};
|
||||
|
|
|
@ -29,7 +29,6 @@ var jsunity = require("jsunity");
|
|||
var internal = require("internal");
|
||||
var helper = require("org/arangodb/aql-helper");
|
||||
var getQueryResults = helper.getQueryResults;
|
||||
var getQueryExplanation = helper.getQueryExplanation;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief test suite
|
||||
|
@ -78,11 +77,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(50, actual[50].value);
|
||||
assertEqual(98, actual[98].value);
|
||||
assertEqual(99, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("sort", explain[1].type); // no optimisation as there's no index
|
||||
assertEqual("return", explain[2].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -101,11 +95,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(49, actual[50].value);
|
||||
assertEqual(1, actual[98].value);
|
||||
assertEqual(0, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("sort", explain[1].type); // no optimisation as there's no index
|
||||
assertEqual("return", explain[2].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -126,11 +115,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(50, actual[50].value);
|
||||
assertEqual(98, actual[98].value);
|
||||
assertEqual(99, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("sort", explain[1].type); // no optimisation as there's no filter and thus no index involved
|
||||
assertEqual("return", explain[2].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -150,11 +134,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(18, actual[3].value);
|
||||
assertEqual(98, actual[83].value);
|
||||
assertEqual(99, actual[84].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type); // sort optimised away
|
||||
assertEqual("return", explain[2].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -174,12 +153,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(96, actual[3].value);
|
||||
assertEqual(16, actual[83].value);
|
||||
assertEqual(15, actual[84].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type);
|
||||
assertEqual("sort", explain[2].type); // sort still there because sort order is DESC
|
||||
assertEqual("return", explain[3].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -200,11 +173,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(50, actual[50].value);
|
||||
assertEqual(98, actual[98].value);
|
||||
assertEqual(99, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type); // sort optimised away
|
||||
assertEqual("return", explain[2].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -225,12 +193,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(49, actual[50].value);
|
||||
assertEqual(1, actual[98].value);
|
||||
assertEqual(0, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type);
|
||||
assertEqual("sort", explain[2].type); // sort still there
|
||||
assertEqual("return", explain[3].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -243,7 +205,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
var query = "FOR c IN " + cn + " FILTER c.value >= 0 SORT c.value DESC SORT c.value RETURN c";
|
||||
|
||||
var actual = getQueryResults(query);
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual(100, actual.length);
|
||||
assertEqual(0, actual[0].value);
|
||||
assertEqual(1, actual[1].value);
|
||||
|
@ -252,13 +213,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(50, actual[50].value);
|
||||
assertEqual(98, actual[98].value);
|
||||
assertEqual(99, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type);
|
||||
assertEqual("sort", explain[2].type); // sort still there
|
||||
assertEqual("sort", explain[3].type); // sort still there
|
||||
assertEqual("return", explain[4].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -280,22 +234,11 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(98, actual[98].value);
|
||||
assertEqual(99, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type);
|
||||
assertEqual("sort", explain[2].type); // sort still there
|
||||
assertEqual("return", explain[3].type);
|
||||
|
||||
query = "FOR c IN " + cn + " FILTER c.value == 0 && c.value2 >= 0 SORT c.value RETURN c";
|
||||
|
||||
actual = getQueryResults(query);
|
||||
assertEqual(1, actual.length);
|
||||
assertEqual(0, actual[0].value);
|
||||
|
||||
explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type); // sort optimised away
|
||||
assertEqual("return", explain[2].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -317,22 +260,11 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(98, actual[98].value);
|
||||
assertEqual(99, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type);
|
||||
assertEqual("sort", explain[2].type); // sort still there
|
||||
assertEqual("return", explain[3].type);
|
||||
|
||||
query = "FOR c IN " + cn + " FILTER c.value == 0 && c.value2 <= 1 SORT c.value, c.value2 RETURN c";
|
||||
|
||||
actual = getQueryResults(query);
|
||||
assertEqual(1, actual.length);
|
||||
assertEqual(0, actual[0].value);
|
||||
|
||||
explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type); // sort optimised away
|
||||
assertEqual("return", explain[2].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -353,12 +285,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(50, actual[50].value);
|
||||
assertEqual(98, actual[98].value);
|
||||
assertEqual(99, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type);
|
||||
assertEqual("sort", explain[2].type); // cannot use index for sorting
|
||||
assertEqual("return", explain[3].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -379,12 +305,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(50, actual[50].value);
|
||||
assertEqual(98, actual[98].value);
|
||||
assertEqual(99, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type); // cannot use index for sorting
|
||||
assertEqual("sort", explain[2].type); // cannot use index for sorting
|
||||
assertEqual("return", explain[3].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -405,12 +325,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(50, actual[50].value);
|
||||
assertEqual(98, actual[98].value);
|
||||
assertEqual(99, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type);
|
||||
assertEqual("sort", explain[2].type); // cannot use index for sorting
|
||||
assertEqual("return", explain[3].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -431,12 +345,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(50, actual[50].value);
|
||||
assertEqual(98, actual[98].value);
|
||||
assertEqual(99, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type);
|
||||
assertEqual("sort", explain[2].type); // sort still there
|
||||
assertEqual("return", explain[3].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -457,12 +365,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(50, actual[50].value);
|
||||
assertEqual(98, actual[98].value);
|
||||
assertEqual(99, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type);
|
||||
assertEqual("sort", explain[2].type); // sort still there
|
||||
assertEqual("return", explain[3].type);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -483,12 +385,6 @@ function ahuacatlQueryOptimiserSortTestSuite () {
|
|||
assertEqual(50, actual[50].value);
|
||||
assertEqual(98, actual[98].value);
|
||||
assertEqual(99, actual[99].value);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("filter", explain[1].type);
|
||||
assertEqual("sort", explain[2].type); // sort still there
|
||||
assertEqual("return", explain[3].type);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -29,7 +29,6 @@ var internal = require("internal");
|
|||
var jsunity = require("jsunity");
|
||||
var helper = require("org/arangodb/aql-helper");
|
||||
var getQueryResults = helper.getQueryResults;
|
||||
var getQueryExplanation = helper.getQueryExplanation;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief test suite
|
||||
|
@ -76,10 +75,6 @@ function ahuacatlSkiplistTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -92,10 +87,6 @@ function ahuacatlSkiplistTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -108,10 +99,6 @@ function ahuacatlSkiplistTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -124,10 +111,6 @@ function ahuacatlSkiplistTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -184,10 +167,6 @@ function ahuacatlSkiplistTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("index", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -343,10 +322,6 @@ function ahuacatlSkiplistTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("index", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -359,10 +334,6 @@ function ahuacatlSkiplistTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("index", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -399,10 +370,6 @@ function ahuacatlSkiplistTestSuite () {
|
|||
var actual = getQueryResults(query, { "a": i, "b": j });
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query, { "a": i, "b": j });
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("index", explain[0].expression.extra.accessType);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1047,10 +1014,6 @@ function ahuacatlSkiplistTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -1063,10 +1026,6 @@ function ahuacatlSkiplistTestSuite () {
|
|||
var actual = getQueryResults(query);
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
},
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -1085,30 +1044,18 @@ function ahuacatlSkiplistTestSuite () {
|
|||
var expected = [ [ 20, 1 ] ];
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
var explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
|
||||
query = "FOR a IN " + skiplist.name() + " FILTER a.a == 20 SORT a.a, a.c RETURN [ a.a, a.c ]";
|
||||
actual = getQueryResults(query);
|
||||
expected = [ [ 20, 1 ], [ 20, 2 ] ];
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
|
||||
query = "FOR a IN " + skiplist.name() + " FILTER a.a >= 20 SORT a.a, a.c RETURN [ a.a, a.c ]";
|
||||
actual = getQueryResults(query);
|
||||
expected = [ [ 20, 1 ], [ 20, 2 ], [ 21, 1 ], [ 21, 2 ] ];
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
|
||||
query = "FOR a IN " + skiplist.name() + " FILTER a.a >= 21 && a.a <= 21 SORT a.a, a.c RETURN [ a.a, a.c ]";
|
||||
actual = getQueryResults(query);
|
||||
|
@ -1116,29 +1063,17 @@ function ahuacatlSkiplistTestSuite () {
|
|||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
|
||||
query = "FOR a IN " + skiplist.name() + " FILTER a.a >= 20 && a.a <= 21 && a.c <= 2 SORT a.a, a.c RETURN [ a.a, a.c ]";
|
||||
actual = getQueryResults(query);
|
||||
expected = [ [ 20, 1 ], [ 20, 2 ], [ 21, 1 ], [ 21, 2 ] ];
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
|
||||
query = "FOR a IN " + skiplist.name() + " FILTER a.a == 20 && a.c >= 1 SORT a.a, a.c RETURN [ a.a, a.c ]";
|
||||
actual = getQueryResults(query);
|
||||
expected = [ [ 20, 1 ], [ 20, 2 ] ];
|
||||
|
||||
assertEqual(expected, actual);
|
||||
|
||||
explain = getQueryExplanation(query);
|
||||
assertEqual("for", explain[0].type);
|
||||
assertEqual("all", explain[0].expression.extra.accessType);
|
||||
}
|
||||
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue