提交 2b022f66 编写于 作者: H Hongze Cheng

more

上级 9fe400f2
...@@ -347,8 +347,15 @@ static void memDataMovePosTo(SMemData *pMemData, SMemSkipListNode **pos, TSDBKEY ...@@ -347,8 +347,15 @@ static void memDataMovePosTo(SMemData *pMemData, SMemSkipListNode **pos, TSDBKEY
if (backward) { if (backward) {
px = pMemData->sl.pTail; px = pMemData->sl.pTail;
for (int8_t iLevel = pMemData->sl.maxLevel - 1; iLevel >= 0; iLevel--) {
if (iLevel < pMemData->sl.level) { for (int8_t iLevel = pMemData->sl.maxLevel - 1; iLevel >= pMemData->sl.level; iLevel--) {
pos[iLevel] = px;
}
if (pMemData->sl.level) {
if (fromPos) px = pos[pMemData->sl.level - 1];
for (int8_t iLevel = pMemData->sl.level - 1; iLevel >= 0; iLevel--) {
pn = SL_NODE_BACKWARD(px, iLevel); pn = SL_NODE_BACKWARD(px, iLevel);
while (pn != pMemData->sl.pHead) { while (pn != pMemData->sl.pHead) {
pTKey = (TSDBKEY *)SL_NODE_DATA(pn); pTKey = (TSDBKEY *)SL_NODE_DATA(pn);
...@@ -361,25 +368,36 @@ static void memDataMovePosTo(SMemData *pMemData, SMemSkipListNode **pos, TSDBKEY ...@@ -361,25 +368,36 @@ static void memDataMovePosTo(SMemData *pMemData, SMemSkipListNode **pos, TSDBKEY
pn = SL_NODE_BACKWARD(px, iLevel); pn = SL_NODE_BACKWARD(px, iLevel);
} }
} }
pos[iLevel] = px;
} }
pos[iLevel] = px;
} }
} else { } else {
px = pMemData->sl.pHead; px = pMemData->sl.pHead;
for (int8_t iLevel = pMemData->sl.maxLevel - 1; iLevel >= 0; iLevel--) {
pn = SL_NODE_FORWARD(px, iLevel); for (int8_t iLevel = pMemData->sl.maxLevel - 1; iLevel >= pMemData->sl.level; iLevel--) {
while (pn != pMemData->sl.pTail) { pos[iLevel] = px;
pTKey = (TSDBKEY *)SL_NODE_DATA(pn); }
c = tsdbKeyCmprFn(pTKey, pKey); if (pMemData->sl.level) {
if (pTKey >= 0) { if (fromPos) px = pos[pMemData->sl.level - 1];
break;
} else { for (int8_t iLevel = pMemData->sl.level - 1; iLevel >= 0; iLevel--) {
px = pn; pn = SL_NODE_FORWARD(px, iLevel);
pn = SL_NODE_FORWARD(px, iLevel); while (pn != pMemData->sl.pHead) {
pTKey = (TSDBKEY *)SL_NODE_DATA(pn);
c = tsdbKeyCmprFn(pTKey, pKey);
if (c >= 0) {
break;
} else {
px = pn;
pn = SL_NODE_FORWARD(px, iLevel);
}
} }
pos[iLevel] = px;
} }
pos[iLevel] = px;
} }
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册