Merge pull request #19503 from taosdata/fix/TD-21888
fix(tdb/ofp): upgrade large key ofp case
This commit is contained in:
commit
6fccf849a1
|
@ -1063,11 +1063,11 @@ static int tdbBtreeEncodePayload(SPage *pPage, SCell *pCell, int nHeader, const
|
||||||
} else {
|
} else {
|
||||||
int nLeftKey = kLen;
|
int nLeftKey = kLen;
|
||||||
// pack partial key and nextPgno
|
// pack partial key and nextPgno
|
||||||
memcpy(pCell + nHeader, pKey, nLocal - 4);
|
memcpy(pCell + nHeader, pKey, nLocal - nHeader - sizeof(pgno));
|
||||||
nLeft -= nLocal - 4;
|
nLeft -= nLocal - nHeader - sizeof(pgno);
|
||||||
nLeftKey -= nLocal - 4;
|
nLeftKey -= nLocal - nHeader - sizeof(pgno);
|
||||||
|
|
||||||
memcpy(pCell + nHeader + nLocal - 4, &pgno, sizeof(pgno));
|
memcpy(pCell + nLocal - sizeof(pgno), &pgno, sizeof(pgno));
|
||||||
|
|
||||||
int lastKeyPageSpace = 0;
|
int lastKeyPageSpace = 0;
|
||||||
// pack left key & val to ovpages
|
// pack left key & val to ovpages
|
||||||
|
@ -1087,9 +1087,12 @@ static int tdbBtreeEncodePayload(SPage *pPage, SCell *pCell, int nHeader, const
|
||||||
|
|
||||||
if (lastKeyPage) {
|
if (lastKeyPage) {
|
||||||
if (lastKeyPageSpace >= vLen) {
|
if (lastKeyPageSpace >= vLen) {
|
||||||
|
if (vLen > 0) {
|
||||||
memcpy(pBuf + kLen - nLeftKey, pVal, vLen);
|
memcpy(pBuf + kLen - nLeftKey, pVal, vLen);
|
||||||
|
|
||||||
nLeft -= vLen;
|
nLeft -= vLen;
|
||||||
|
}
|
||||||
|
|
||||||
pgno = 0;
|
pgno = 0;
|
||||||
} else {
|
} else {
|
||||||
memcpy(pBuf + kLen - nLeftKey, pVal, lastKeyPageSpace);
|
memcpy(pBuf + kLen - nLeftKey, pVal, lastKeyPageSpace);
|
||||||
|
@ -1111,7 +1114,7 @@ static int tdbBtreeEncodePayload(SPage *pPage, SCell *pCell, int nHeader, const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(pBuf + kLen - nLeft, &pgno, sizeof(pgno));
|
memcpy(pBuf + bytes, &pgno, sizeof(pgno));
|
||||||
|
|
||||||
ret = tdbPageInsertCell(ofp, 0, pBuf, bytes + sizeof(pgno), 0);
|
ret = tdbPageInsertCell(ofp, 0, pBuf, bytes + sizeof(pgno), 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
|
Loading…
Reference in New Issue