1
0
Fork 0

Fixing some accidentally broken fulltext tests (#3951)

* Fixing some accidentally broken tests

* Fixing test...again
This commit is contained in:
Simon Grätzer 2017-12-13 10:19:17 +01:00 committed by Jan
parent 98d6eff37e
commit 739af2d1f5
7 changed files with 31 additions and 47 deletions

View File

@ -1366,7 +1366,7 @@ def buildEdition(os, edition, maintainer) {
logExceptionStage(os, logFile, logFile, exc)
def msg = exc.toString()
if (os == 'linux' || os == 'mac') {
sh "echo \"${msg}\" >> ${logFile}"
}

View File

@ -177,31 +177,25 @@ AqlValue MMFilesAqlFunctions::Fulltext(
ValidateParameters(parameters, "FULLTEXT", 3, 4);
AqlValue collectionValue = ExtractFunctionParameterValue(trx, parameters, 0);
if (!collectionValue.isString()) {
RegisterWarning(query, "FULLTEXT", TRI_ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH);
return AqlValue(AqlValueHintNull());
}
std::string const collectionName(collectionValue.slice().copyString());
std::string const cname(collectionValue.slice().copyString());
AqlValue attribute = ExtractFunctionParameterValue(trx, parameters, 1);
if (!attribute.isString()) {
RegisterWarning(query, "FULLTEXT", TRI_ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH);
return AqlValue(AqlValueHintNull());
}
std::string attributeName(attribute.slice().copyString());
std::string const attributeName(attribute.slice().copyString());
AqlValue queryValue = ExtractFunctionParameterValue(trx, parameters, 2);
if (!queryValue.isString()) {
RegisterWarning(query, "FULLTEXT", TRI_ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH);
return AqlValue(AqlValueHintNull());
}
std::string queryString = queryValue.slice().copyString();
std::string const queryString = queryValue.slice().copyString();
size_t maxResults = 0; // 0 means "all results"
if (parameters.size() >= 4) {
@ -218,12 +212,11 @@ AqlValue MMFilesAqlFunctions::Fulltext(
}
}
auto resolver = trx->resolver();
TRI_voc_cid_t cid = resolver->getCollectionIdLocal(collectionName);
trx->addCollectionAtRuntime(cid, collectionName);
// add the collection to the query for proper cache handling
query->collections()->add(cname, AccessMode::Type::READ);
TRI_voc_cid_t cid = trx->resolver()->getCollectionIdLocal(cname);
trx->addCollectionAtRuntime(cid, cname);
LogicalCollection* collection = trx->documentCollection(cid);
if (collection == nullptr) {
RegisterWarning(query, "FULLTEXT", TRI_ERROR_ARANGO_COLLECTION_NOT_FOUND);
return AqlValue(AqlValueHintNull());

View File

@ -23,7 +23,9 @@
#include "RocksDBAqlFunctions.h"
#include "Aql/AqlFunctionFeature.h"
#include "Aql/Collection.h"
#include "Aql/Function.h"
#include "Aql/Query.h"
#include "RocksDBEngine/RocksDBFulltextIndex.h"
#include "RocksDBEngine/RocksDBGeoIndex.h"
#include "StorageEngine/TransactionState.h"
@ -52,31 +54,25 @@ AqlValue RocksDBAqlFunctions::Fulltext(
ValidateParameters(parameters, "FULLTEXT", 3, 4);
AqlValue collectionValue = ExtractFunctionParameterValue(trx, parameters, 0);
if (!collectionValue.isString()) {
RegisterWarning(query, "FULLTEXT", TRI_ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH);
return AqlValue(AqlValueHintNull());
}
std::string const collectionName(collectionValue.slice().copyString());
std::string const cname(collectionValue.slice().copyString());
AqlValue attribute = ExtractFunctionParameterValue(trx, parameters, 1);
if (!attribute.isString()) {
RegisterWarning(query, "FULLTEXT", TRI_ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH);
return AqlValue(AqlValueHintNull());
}
std::string attributeName(attribute.slice().copyString());
std::string const attributeName(attribute.slice().copyString());
AqlValue queryValue = ExtractFunctionParameterValue(trx, parameters, 2);
if (!queryValue.isString()) {
RegisterWarning(query, "FULLTEXT", TRI_ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH);
return AqlValue(AqlValueHintNull());
}
std::string queryString = queryValue.slice().copyString();
std::string const queryString = queryValue.slice().copyString();
size_t maxResults = 0; // 0 means "all results"
if (parameters.size() >= 4) {
@ -93,12 +89,11 @@ AqlValue RocksDBAqlFunctions::Fulltext(
}
}
auto resolver = trx->resolver();
TRI_voc_cid_t cid = resolver->getCollectionIdLocal(collectionName);
trx->addCollectionAtRuntime(cid, collectionName);
// add the collection to the query for proper cache handling
query->collections()->add(cname, AccessMode::Type::READ);
TRI_voc_cid_t cid = trx->resolver()->getCollectionIdLocal(cname);
trx->addCollectionAtRuntime(cid, cname);
LogicalCollection* collection = trx->documentCollection(cid);
if (collection == nullptr) {
RegisterWarning(query, "FULLTEXT", TRI_ERROR_ARANGO_COLLECTION_NOT_FOUND);
return AqlValue(AqlValueHintNull());

View File

@ -283,9 +283,6 @@ RocksDBSortedAllIterator::RocksDBSortedAllIterator(
: IndexIterator(collection, trx, mmdr, index),
_trx(trx),
_bounds(RocksDBKeyBounds::PrimaryIndex(index->objectId())),
#ifdef ARANGODB_ENABLE_MAINTAINER_MODE
_index(index),
#endif
_cmp(index->comparator()) {
RocksDBMethods* mthds = RocksDBTransactionState::toMethods(trx);

View File

@ -122,9 +122,6 @@ class RocksDBSortedAllIterator final : public IndexIterator {
transaction::Methods* _trx;
RocksDBKeyBounds const _bounds;
std::unique_ptr<rocksdb::Iterator> _iterator;
#ifdef ARANGODB_ENABLE_MAINTAINER_MODE
RocksDBPrimaryIndex const* _index;
#endif
rocksdb::Comparator const* _cmp;
};
}

View File

@ -4286,7 +4286,8 @@ function AQL_FULLTEXT (collection, attribute, query, limit) {
var idx = INDEX_FULLTEXT(COLLECTION(collection, 'FULLTEXT'), attribute);
if (idx === null) {
THROW('FULLTEXT', INTERNAL.errors.ERROR_QUERY_FULLTEXT_INDEX_MISSING, collection);
WARN('FULLTEXT', INTERNAL.errors.ERROR_QUERY_FULLTEXT_INDEX_MISSING, collection);
return null;
}
// Just start a simple query

View File

@ -28,19 +28,20 @@
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////
var db = require("@arangodb").db;
var jsunity = require("jsunity");
var errors = require("@arangodb").errors;
var helper = require("@arangodb/aql-helper");
var getQueryResults = helper.getQueryResults;
var assertQueryError = helper.assertQueryError;
const db = require("@arangodb").db;
const jsunity = require("jsunity");
const errors = require("@arangodb").errors;
const helper = require("@arangodb/aql-helper");
const getQueryResults = helper.getQueryResults;
const assertQueryError = helper.assertQueryError;
const assertQueryWarningAndNull = helper.assertQueryWarningAndNull;
////////////////////////////////////////////////////////////////////////////////
/// @brief test suite
////////////////////////////////////////////////////////////////////////////////
function ahuacatlFulltextTestSuite () {
var cn = "UnitTestsAhuacatlFulltext";
const cn = "UnitTestsAhuacatlFulltext";
var fulltext;
return {
@ -151,9 +152,9 @@ function ahuacatlFulltextTestSuite () {
////////////////////////////////////////////////////////////////////////////////
testNonIndexed : function () {
// assertQueryError(errors.ERROR_QUERY_FULLTEXT_INDEX_MISSING.code, "RETURN FULLTEXT(" + fulltext.name() + ", 'bang', 'search')");
// assertQueryError(errors.ERROR_QUERY_FULLTEXT_INDEX_MISSING.code, "RETURN FULLTEXT(" + fulltext.name() + ", 'texts', 'foo')");
// assertQueryError(errors.ERROR_ARANGO_COLLECTION_NOT_FOUND.code, "RETURN FULLTEXT(NotExistingFooCollection, 'text', 'foo')");
assertQueryWarningAndNull(errors.ERROR_QUERY_FULLTEXT_INDEX_MISSING.code, "RETURN FULLTEXT(" + fulltext.name() + ", 'bang', 'search')");
assertQueryWarningAndNull(errors.ERROR_QUERY_FULLTEXT_INDEX_MISSING.code, "RETURN FULLTEXT(" + fulltext.name() + ", 'texts', 'foo')");
assertQueryError(errors.ERROR_ARANGO_COLLECTION_NOT_FOUND.code, "RETURN FULLTEXT(NotExistingFooCollection, 'text', 'foo')");
}
};