本文整理汇总了C++中TableIndex::moveToCoveringCell方法的典型用法代码示例。如果您正苦于以下问题:C++ TableIndex::moveToCoveringCell方法的具体用法?C++ TableIndex::moveToCoveringCell怎么用?C++ TableIndex::moveToCoveringCell使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TableIndex
的用法示例。
在下文中一共展示了TableIndex::moveToCoveringCell方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: p_execute
//.........这里部分代码省略.........
}
else if (localLookupType == INDEX_LOOKUP_TYPE_GT) {
tableIndex->moveToGreaterThanKey(&searchKey, indexCursor);
}
else if (localLookupType == INDEX_LOOKUP_TYPE_GTE) {
tableIndex->moveToKeyOrGreater(&searchKey, indexCursor);
}
else if (localLookupType == INDEX_LOOKUP_TYPE_LT) {
tableIndex->moveToLessThanKey(&searchKey, indexCursor);
}
else if (localLookupType == INDEX_LOOKUP_TYPE_LTE) {
// find the entry whose key is greater than search key,
// do a forward scan using initialExpr to find the correct
// start point to do reverse scan
bool isEnd = tableIndex->moveToGreaterThanKey(&searchKey, indexCursor);
if (isEnd) {
tableIndex->moveToEnd(false, indexCursor);
}
else {
while (!(tuple = tableIndex->nextValue(indexCursor)).isNullTuple()) {
pmp.countdownProgress();
if (initial_expression != NULL && !initial_expression->eval(&tuple, NULL).isTrue()) {
// just passed the first failed entry, so move 2 backward
tableIndex->moveToBeforePriorEntry(indexCursor);
break;
}
}
if (tuple.isNullTuple()) {
tableIndex->moveToEnd(false, indexCursor);
}
}
}
else if (localLookupType == INDEX_LOOKUP_TYPE_GEO_CONTAINS) {
tableIndex->moveToCoveringCell(&searchKey, indexCursor);
}
else {
return false;
}
}
else {
bool toStartActually = (localSortDirection != SORT_DIRECTION_TYPE_DESC);
tableIndex->moveToEnd(toStartActually, indexCursor);
}
//
// We have to different nextValue() methods for different lookup types
//
while (postfilter.isUnderLimit() &&
getNextTuple(localLookupType,
&tuple,
tableIndex,
&indexCursor,
activeNumOfSearchKeys)) {
if (tuple.isPendingDelete()) {
continue;
}
VOLT_TRACE("LOOPING in indexscan: tuple: '%s'\n", tuple.debug("tablename").c_str());
pmp.countdownProgress();
//
// First check to eliminate the null index rows for UNDERFLOW case only
//
if (skipNullExpr != NULL) {
if (skipNullExpr->eval(&tuple, NULL).isTrue()) {
VOLT_DEBUG("Index scan: find out null rows or columns.");
continue;
示例2: p_execute
//.........这里部分代码省略.........
}
else if (localLookupType == INDEX_LOOKUP_TYPE_GT) {
index->moveToGreaterThanKey(&index_values, indexCursor);
}
else if (localLookupType == INDEX_LOOKUP_TYPE_GTE) {
index->moveToKeyOrGreater(&index_values, indexCursor);
}
else if (localLookupType == INDEX_LOOKUP_TYPE_LT) {
index->moveToLessThanKey(&index_values, indexCursor);
}
else if (localLookupType == INDEX_LOOKUP_TYPE_LTE) {
// find the entry whose key is greater than search key,
// do a forward scan using initialExpr to find the correct
// start point to do reverse scan
bool isEnd = index->moveToGreaterThanKey(&index_values, indexCursor);
if (isEnd) {
index->moveToEnd(false, indexCursor);
}
else {
while (!(inner_tuple = index->nextValue(indexCursor)).isNullTuple()) {
pmp.countdownProgress();
if (initial_expression != NULL && !initial_expression->eval(&outer_tuple, &inner_tuple).isTrue()) {
// just passed the first failed entry, so move 2 backward
index->moveToBeforePriorEntry(indexCursor);
break;
}
}
if (inner_tuple.isNullTuple()) {
index->moveToEnd(false, indexCursor);
}
}
}
else if (localLookupType == INDEX_LOOKUP_TYPE_GEO_CONTAINS) {
index->moveToCoveringCell(&index_values, indexCursor);
}
else {
return false;
}
}
else {
bool toStartActually = (localSortDirection != SORT_DIRECTION_TYPE_DESC);
index->moveToEnd(toStartActually, indexCursor);
}
AbstractExpression* skipNullExprIteration = skipNullExpr;
while (postfilter.isUnderLimit() &&
IndexScanExecutor::getNextTuple(localLookupType,
&inner_tuple,
index,
&indexCursor,
num_of_searchkeys)) {
if (inner_tuple.isPendingDelete()) {
continue;
}
VOLT_TRACE("inner_tuple:%s",
inner_tuple.debug(inner_table->name()).c_str());
pmp.countdownProgress();
//
// First check to eliminate the null index rows for UNDERFLOW case only
//
if (skipNullExprIteration != NULL) {
if (skipNullExprIteration->eval(&outer_tuple, &inner_tuple).isTrue()) {
VOLT_DEBUG("Index scan: find out null rows or columns.");
continue;