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);
|
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,
|
static void SkiplistIndex_findHelper (SkiplistIndex* skiplistIndex,
|
||||||
TRI_index_operator_t const* indexOperator,
|
TRI_index_operator_t const* indexOperator,
|
||||||
TRI_vector_t* resultIntervalList) {
|
TRI_vector_t* resultIntervalList) {
|
||||||
|
|
Loading…
Reference in New Issue