1
0
Fork 0

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

This commit is contained in:
hkernbach 2016-09-23 10:21:28 +02:00
commit d9d092695c
3 changed files with 13 additions and 4 deletions

View File

@ -135,6 +135,8 @@ devel
v3.0.10 (XXXX-XX-XX)
--------------------
* fixed issue #2072
* fixed issue #2070

View File

@ -331,6 +331,7 @@ TRI_fulltext_handle_t TRI_InsertHandleFulltextIndex(
// fill in document
slot->_documents[slotPosition] = document;
slot->_deleted[slotPosition] = 0;
slot->_numUsed++;
// no need to fill in deleted flag as it is initialized to false

View File

@ -1114,6 +1114,7 @@ static TRI_fulltext_result_t* MakeListResult(index__t* const idx,
TRI_fulltext_result_t* result;
TRI_fulltext_list_entry_t* listEntries;
uint32_t numResults;
uint32_t originalNumResults;
uint32_t i, pos;
if (list == nullptr) {
@ -1123,6 +1124,7 @@ static TRI_fulltext_result_t* MakeListResult(index__t* const idx,
// we have a list of handles
// now turn the handles into documents and exclude deleted ones on the fly
numResults = TRI_NumEntriesListFulltextIndex(list);
originalNumResults = numResults;
if (static_cast<size_t>(numResults) > maxResults && maxResults > 0) {
// cap the number of results
numResults = static_cast<uint32_t>(maxResults);
@ -1136,7 +1138,7 @@ static TRI_fulltext_result_t* MakeListResult(index__t* const idx,
pos = 0;
listEntries = TRI_StartListFulltextIndex(list);
for (i = 0; i < numResults; ++i) {
for (i = 0; i < originalNumResults; ++i) {
TRI_fulltext_handle_t handle;
TRI_fulltext_doc_t doc;
@ -1149,6 +1151,9 @@ static TRI_fulltext_result_t* MakeListResult(index__t* const idx,
}
result->_documents[pos++] = doc;
if (pos >= numResults) {
break;
}
}
result->_numDocuments = pos;
@ -1591,8 +1596,6 @@ TRI_fulltext_result_t* TRI_QueryFulltextIndex(TRI_fts_index_t* const ftx,
}
}
TRI_ReadUnlockReadWriteLock(&idx->_lock);
TRI_FreeQueryFulltextIndex(query);
if (result == nullptr) {
@ -1602,7 +1605,10 @@ TRI_fulltext_result_t* TRI_QueryFulltextIndex(TRI_fts_index_t* const ftx,
// now convert the handle list into a result (this will also filter out
// deleted documents)
return MakeListResult(idx, result, maxResults);
TRI_fulltext_result_t* r = MakeListResult(idx, result, maxResults);
TRI_ReadUnlockReadWriteLock(&idx->_lock);
return r;
}
////////////////////////////////////////////////////////////////////////////////