mirror of https://gitee.com/bigwinds/arangodb
moving function getIndexes for EnumerateCollectionNode from h to cpp file.
This commit is contained in:
parent
9dfeb4bba2
commit
4ba4ec4523
|
@ -397,6 +397,44 @@ void EnumerateCollectionNode::toJsonHelper (triagens::basics::Json& nodes,
|
||||||
nodes(json);
|
nodes(json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief get vector of indexes with fields <attrs>
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
std::vector<TRI_index_t*> EnumerateCollectionNode::getIndexes (vector<std::string> attrs) const {
|
||||||
|
std::vector<TRI_index_t*> out;
|
||||||
|
TRI_document_collection_t* document = _collection->documentCollection();
|
||||||
|
size_t const n = document->_allIndexes._length;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < n; ++i) {
|
||||||
|
TRI_index_t* idx = static_cast<TRI_index_t*>(document->_allIndexes._buffer[i]);
|
||||||
|
|
||||||
|
size_t seen = 0;
|
||||||
|
for (size_t j = 0; j < idx->_fields._length; j++) {
|
||||||
|
bool found = false;
|
||||||
|
for (size_t k = 0; k < attrs.size(); k++){
|
||||||
|
if(std::string(idx->_fields._buffer[j]) == attrs[k]) {
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found) {
|
||||||
|
seen++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((idx->_type == TRI_IDX_TYPE_HASH_INDEX) && seen == idx->_fields._length )
|
||||||
|
|| ((idx->_type == TRI_IDX_TYPE_SKIPLIST_INDEX) && seen > 0 )) {
|
||||||
|
// all fields equal
|
||||||
|
out.push_back(idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// --SECTION-- methods of EnumerateListNode
|
// --SECTION-- methods of EnumerateListNode
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
|
@ -658,39 +658,7 @@ namespace triagens {
|
||||||
/// @brief get vector of indexes with fields <attrs>
|
/// @brief get vector of indexes with fields <attrs>
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
vector<TRI_index_t*> getIndexes (vector<std::string> attrs) const {
|
std::vector<TRI_index_t*> getIndexes (vector<std::string> attrs) const;
|
||||||
vector<TRI_index_t*> out;
|
|
||||||
TRI_document_collection_t* document = _collection->documentCollection();
|
|
||||||
size_t const n = document->_allIndexes._length;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < n; ++i) {
|
|
||||||
TRI_index_t* idx = static_cast<TRI_index_t*>(document->_allIndexes._buffer[i]);
|
|
||||||
|
|
||||||
size_t seen = 0;
|
|
||||||
for (size_t j = 0; j < idx->_fields._length; j++) {
|
|
||||||
bool found = false;
|
|
||||||
for (size_t k = 0; k < attrs.size(); k++){
|
|
||||||
if(std::string(idx->_fields._buffer[j]) == attrs[k]) {
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (found) {
|
|
||||||
seen++;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (((idx->_type == TRI_IDX_TYPE_HASH_INDEX) && seen == idx->_fields._length )
|
|
||||||
|| ((idx->_type == TRI_IDX_TYPE_SKIPLIST_INDEX) && seen > 0 )) {
|
|
||||||
// all fields equal
|
|
||||||
out.push_back(idx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
TRI_vocbase_t* vocbase () const {
|
TRI_vocbase_t* vocbase () const {
|
||||||
return _vocbase;
|
return _vocbase;
|
||||||
|
|
Loading…
Reference in New Issue