mirror of https://gitee.com/bigwinds/arangodb
removed unused function
This commit is contained in:
parent
e30d6d42b9
commit
22c8b5518e
|
@ -581,149 +581,6 @@ static bool skiplistIndex_findHelperIntervalIntersectionValid (
|
|||
return skiplistIndex_findHelperIntervalValid(skiplistIndex, interval);
|
||||
}
|
||||
|
||||
static void SkiplistIndex_findHelper (SkiplistIndex* skiplistIndex,
|
||||
TRI_vector_t const* shapeList,
|
||||
TRI_index_operator_t const* indexOperator,
|
||||
TRI_vector_t* resultIntervalList) {
|
||||
TRI_skiplist_index_key_t values;
|
||||
TRI_vector_t leftResult;
|
||||
TRI_vector_t rightResult;
|
||||
TRI_skiplist_iterator_interval_t interval;
|
||||
triagens::basics::SkipListNode* temp;
|
||||
|
||||
TRI_InitVector(&(leftResult), TRI_UNKNOWN_MEM_ZONE, sizeof(TRI_skiplist_iterator_interval_t));
|
||||
TRI_InitVector(&(rightResult), TRI_UNKNOWN_MEM_ZONE, sizeof(TRI_skiplist_iterator_interval_t));
|
||||
|
||||
TRI_relation_index_operator_t* relationOperator = (TRI_relation_index_operator_t*) indexOperator;
|
||||
TRI_logical_index_operator_t* logicalOperator = (TRI_logical_index_operator_t*) indexOperator;
|
||||
|
||||
switch (indexOperator->_type) {
|
||||
case TRI_EQ_INDEX_OPERATOR:
|
||||
case TRI_LE_INDEX_OPERATOR:
|
||||
case TRI_LT_INDEX_OPERATOR:
|
||||
case TRI_GE_INDEX_OPERATOR:
|
||||
case TRI_GT_INDEX_OPERATOR:
|
||||
|
||||
values._fields = relationOperator->_fields;
|
||||
values._numFields = relationOperator->_numFields;
|
||||
break; // this is to silence a compiler warning
|
||||
|
||||
default: {
|
||||
// must not access relationOperator->xxx if the operator is not a
|
||||
// relational one otherwise we'll get invalid reads and the prog
|
||||
// might crash
|
||||
}
|
||||
}
|
||||
|
||||
switch (indexOperator->_type) {
|
||||
case TRI_AND_INDEX_OPERATOR: {
|
||||
SkiplistIndex_findHelper(skiplistIndex, shapeList, logicalOperator->_left, &leftResult);
|
||||
SkiplistIndex_findHelper(skiplistIndex, shapeList, logicalOperator->_right, &rightResult);
|
||||
|
||||
size_t nl = TRI_LengthVector(&leftResult);
|
||||
size_t nr = TRI_LengthVector(&rightResult);
|
||||
for (size_t i = 0; i < nl; ++i) {
|
||||
for (size_t j = 0; j < nr; ++j) {
|
||||
auto tempLeftInterval = static_cast<TRI_skiplist_iterator_interval_t*>(TRI_AddressVector(&leftResult, i));
|
||||
auto tempRightInterval = static_cast<TRI_skiplist_iterator_interval_t*>(TRI_AddressVector(&rightResult, j));
|
||||
|
||||
if (skiplistIndex_findHelperIntervalIntersectionValid(
|
||||
skiplistIndex,
|
||||
tempLeftInterval,
|
||||
tempRightInterval,
|
||||
&interval)) {
|
||||
TRI_PushBackVector(resultIntervalList, &interval);
|
||||
}
|
||||
}
|
||||
}
|
||||
TRI_DestroyVector(&leftResult);
|
||||
TRI_DestroyVector(&rightResult);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
case TRI_EQ_INDEX_OPERATOR: {
|
||||
temp = skiplistIndex->skiplist->leftKeyLookup(&values);
|
||||
TRI_ASSERT(nullptr != temp);
|
||||
interval._leftEndPoint = temp;
|
||||
|
||||
bool const allAttributesCoveredByCondition = (values._numFields == skiplistIndex->_numFields);
|
||||
|
||||
if (skiplistIndex->unique && allAttributesCoveredByCondition) {
|
||||
// At most one hit:
|
||||
temp = temp->nextNode();
|
||||
if (nullptr != temp) {
|
||||
if (0 == CmpKeyElm(skiplistIndex, &values, temp->document())) {
|
||||
interval._rightEndPoint = temp->nextNode();
|
||||
if (skiplistIndex_findHelperIntervalValid(skiplistIndex,
|
||||
&interval)) {
|
||||
TRI_PushBackVector(resultIntervalList, &interval);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
temp = skiplistIndex->skiplist->rightKeyLookup(&values);
|
||||
interval._rightEndPoint = temp->nextNode();
|
||||
if (skiplistIndex_findHelperIntervalValid(skiplistIndex,
|
||||
&interval)) {
|
||||
TRI_PushBackVector(resultIntervalList, &interval);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
case TRI_LE_INDEX_OPERATOR: {
|
||||
interval._leftEndPoint = skiplistIndex->skiplist->startNode();
|
||||
temp = skiplistIndex->skiplist->rightKeyLookup(&values);
|
||||
interval._rightEndPoint = temp->nextNode();
|
||||
|
||||
if (skiplistIndex_findHelperIntervalValid(skiplistIndex, &interval)) {
|
||||
TRI_PushBackVector(resultIntervalList, &interval);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
case TRI_LT_INDEX_OPERATOR: {
|
||||
interval._leftEndPoint = skiplistIndex->skiplist->startNode();
|
||||
temp = skiplistIndex->skiplist->leftKeyLookup(&values);
|
||||
interval._rightEndPoint = temp->nextNode();
|
||||
|
||||
if (skiplistIndex_findHelperIntervalValid(skiplistIndex, &interval)) {
|
||||
TRI_PushBackVector(resultIntervalList, &interval);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
case TRI_GE_INDEX_OPERATOR: {
|
||||
temp = skiplistIndex->skiplist->leftKeyLookup(&values);
|
||||
interval._leftEndPoint = temp;
|
||||
interval._rightEndPoint = skiplistIndex->skiplist->endNode();
|
||||
|
||||
if (skiplistIndex_findHelperIntervalValid(skiplistIndex, &interval)) {
|
||||
TRI_PushBackVector(resultIntervalList, &interval);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
case TRI_GT_INDEX_OPERATOR: {
|
||||
temp = skiplistIndex->skiplist->rightKeyLookup(&values);
|
||||
interval._leftEndPoint = temp;
|
||||
interval._rightEndPoint = skiplistIndex->skiplist->endNode();
|
||||
|
||||
if (skiplistIndex_findHelperIntervalValid(skiplistIndex, &interval)) {
|
||||
TRI_PushBackVector(resultIntervalList, &interval);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
default: {
|
||||
TRI_ASSERT(false);
|
||||
}
|
||||
|
||||
} // end of switch statement
|
||||
}
|
||||
|
||||
static void SkiplistIndex_findHelper (SkiplistIndex* skiplistIndex,
|
||||
TRI_index_operator_t const* indexOperator,
|
||||
TRI_vector_t* resultIntervalList) {
|
||||
|
|
Loading…
Reference in New Issue