1
0
Fork 0

Merge branch 'devel' of https://github.com/arangodb/arangodb into vpack

This commit is contained in:
Jan Steemann 2015-12-11 16:33:35 +01:00
commit 43eff8f0e9
4 changed files with 78 additions and 6 deletions

View File

@ -748,6 +748,20 @@ endif ()
add_definitions("-DTRI_ZLIB_VERSION=\"${ZLIB_VERSION}\"")
################################################################################
### @brief VELOCYPACK
################################################################################
set(VELOCYPACK_VERSION "unknown" CACHE string "VELOCYPACK version")
if (NOT MSVC)
set(VELOCYPACK_INCLUDE ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/include CACHE path "VELOCYPACK include path")
endif ()
if (VELOCYPACK_INCLUDE)
include_directories(${VELOCYPACK_INCLUDE})
endif ()
## -----------------------------------------------------------------------------
## --SECTION-- SUB-PROJECTS
## -----------------------------------------------------------------------------

View File

@ -493,6 +493,7 @@ AqlValue Expression::executeSimpleExpression (AstNode const* node,
std::vector<Variable const*> const& vars,
std::vector<RegisterId> const& regs,
bool doCopy) {
switch (node->type) {
case NODE_TYPE_ATTRIBUTE_ACCESS:
return executeSimpleExpressionAttributeAccess(node, trx, argv, startPos, vars, regs);
@ -660,7 +661,6 @@ AqlValue Expression::executeSimpleExpressionAttributeAccess (AstNode const* node
return AqlValue(new Json(TRI_UNKNOWN_MEM_ZONE, j.steal()));
}
////////////////////////////////////////////////////////////////////////////////
/// @brief execute an expression of type SIMPLE with INDEXED ACCESS
////////////////////////////////////////////////////////////////////////////////

View File

@ -211,10 +211,6 @@ int IndexBlock::initialize () {
else {
// Index is responsible for the right side, check if left side has to be evaluated
if (! lhs->isConstant()) {
if (leaf->type == NODE_TYPE_OPERATOR_BINARY_IN) {
// IN: now make IN result unique
lhs = makeUnique(lhs);
}
instantiateExpression(i, j, 0, lhs);
TRI_IF_FAILURE("IndexBlock::initializeExpressions") {
THROW_ARANGO_EXCEPTION(TRI_ERROR_DEBUG);

View File

@ -295,10 +295,72 @@ function nestedArrayIndexSuite () {
}
////////////////////////////////////////////////////////////////////////////////
/// @brief executes the test suite
/// @brief test suite
////////////////////////////////////////////////////////////////////////////////
function nestedArrayInArraySuite () {
var cn1 = "UnitTestsArray1";
var cn2 = "UnitTestsArray2";
var c1;
var c2;
var indexUsed = function (query, bindVars) {
var plan = AQL_EXPLAIN(query, bindVars || {}).plan;
var nodeTypes = plan.nodes.map(function(node) {
return node.type;
});
return (nodeTypes.indexOf("IndexNode") !== -1);
};
return {
setUp : function () {
db._drop(cn1);
db._drop(cn2);
c1 = db._create(cn1);
c2 = db._create(cn2);
},
tearDown : function () {
db._drop(cn1);
db._drop(cn2);
},
testIndexUsage : function () {
c1.insert({ value: "foobar" });
c1.insert({ value: "baz" });
c2.insert({ values: [ "foo", "bar", "bark" ] });
c2.insert({ values: [ "bart", "qux", "foobar", "foobar", "foobar" ] });
c2.insert({ values: [ "baz", "foobar", "foobar", "bart" ] });
c2.insert({ values: "troet" });
var query = "FOR doc1 IN @@c1 FOR doc2 IN @@c2 FILTER doc1.value IN doc2.values RETURN doc1.value";
var expected = [
"foobar",
"foobar",
"baz"
];
var result = AQL_EXECUTE(query, { "@c1" : cn1, "@c2" : cn2 });
assertEqual(expected.sort(), result.json.sort());
assertEqual(0, result.warnings.length);
c2.ensureIndex({ type: "hash", fields: [ "values[*]" ] });
var result = AQL_EXECUTE(query, { "@c1" : cn1, "@c2" : cn2 });
assertEqual(expected.sort(), result.json.sort());
assertEqual(0, result.warnings.length);
assertTrue(indexUsed(query, { "@c1": cn1, "@c2" : cn2 }));
}
};
}
////////////////////////////////////////////////////////////////////////////////
/// @brief executes the test suites
////////////////////////////////////////////////////////////////////////////////
jsunity.run(nestedArrayIndexSuite);
jsunity.run(nestedArrayInArraySuite);
return jsunity.done();