more work
This commit is contained in:
parent
4e2c2b8084
commit
a992b5f966
|
@ -153,7 +153,6 @@ int32_t tTABLEIDCmprFn(const void *p1, const void *p2);
|
||||||
int32_t tsdbKeyCmprFn(const void *p1, const void *p2);
|
int32_t tsdbKeyCmprFn(const void *p1, const void *p2);
|
||||||
|
|
||||||
// SDelIdx
|
// SDelIdx
|
||||||
int32_t tDelIdxGetSize(SDelIdx *pDelIdx);
|
|
||||||
int32_t tDelIdxGetItem(SDelIdx *pDelIdx, SDelIdxItem *pItem, TABLEID id);
|
int32_t tDelIdxGetItem(SDelIdx *pDelIdx, SDelIdxItem *pItem, TABLEID id);
|
||||||
int32_t tDelIdxGetItemByIdx(SDelIdx *pDelIdx, SDelIdxItem *pItem, int32_t idx);
|
int32_t tDelIdxGetItemByIdx(SDelIdx *pDelIdx, SDelIdxItem *pItem, int32_t idx);
|
||||||
int32_t tDelIdxPutItem(SDelIdx *pDelIdx, SDelIdxItem *pItem);
|
int32_t tDelIdxPutItem(SDelIdx *pDelIdx, SDelIdxItem *pItem);
|
||||||
|
@ -161,8 +160,8 @@ int32_t tPutDelIdx(uint8_t *p, SDelIdx *pDelIdx);
|
||||||
int32_t tGetDelIdx(uint8_t *p, SDelIdx *pDelIdx);
|
int32_t tGetDelIdx(uint8_t *p, SDelIdx *pDelIdx);
|
||||||
|
|
||||||
// SDelData
|
// SDelData
|
||||||
int32_t tDelDataGetSize(SDelData *pDelData);
|
int32_t tDelDataGetItem(SDelData *pDelData, SDelDataItem *pItem, int64_t version);
|
||||||
int32_t tDelDataGetItem(SDelData *pDelData, int32_t idx, SDelDataItem *pItem);
|
int32_t tDelDataGetItemByIdx(SDelData *pDelData, SDelDataItem *pItem, int32_t idx);
|
||||||
int32_t tDelDataPutItem(SDelData *pDelData, SDelDataItem *pItem);
|
int32_t tDelDataPutItem(SDelData *pDelData, SDelDataItem *pItem);
|
||||||
int32_t tPutDelData(uint8_t *p, SDelData *pDelData);
|
int32_t tPutDelData(uint8_t *p, SDelData *pDelData);
|
||||||
int32_t tGetDelData(uint8_t *p, SDelData *pDelData);
|
int32_t tGetDelData(uint8_t *p, SDelData *pDelData);
|
||||||
|
@ -360,7 +359,7 @@ struct SDelData {
|
||||||
tb_uid_t suid;
|
tb_uid_t suid;
|
||||||
tb_uid_t uid;
|
tb_uid_t uid;
|
||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
uint32_t nOffset;
|
uint32_t nItem;
|
||||||
uint8_t *pOffset;
|
uint8_t *pOffset;
|
||||||
uint32_t nData;
|
uint32_t nData;
|
||||||
uint8_t *pData;
|
uint8_t *pData;
|
||||||
|
|
|
@ -144,12 +144,6 @@ static FORCE_INLINE int32_t tGetDelIdxItem(uint8_t *p, SDelIdxItem *pDelIdxItem)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SDelIdx ======================================================
|
// SDelIdx ======================================================
|
||||||
int32_t tDelIdxGetSize(SDelIdx *pDelIdx) {
|
|
||||||
int32_t code = 0;
|
|
||||||
// TODO
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t tDelIdxGetItem(SDelIdx *pDelIdx, SDelIdxItem *pItem, TABLEID id) {
|
int32_t tDelIdxGetItem(SDelIdx *pDelIdx, SDelIdxItem *pItem, TABLEID id) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
int32_t lidx = 0;
|
int32_t lidx = 0;
|
||||||
|
@ -179,11 +173,8 @@ _exit:
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t tDelIdxGetItemByIdx(SDelIdx *pDelIdx, SDelIdxItem *pItem, int32_t idx) {
|
int32_t tDelIdxGetItemByIdx(SDelIdx *pDelIdx, SDelIdxItem *pItem, int32_t idx) {
|
||||||
int32_t code = 0;
|
|
||||||
|
|
||||||
tGetDelIdxItem(pDelIdx->pData + tsdbGetOffset(pDelIdx->pOffset, pDelIdx->flags, idx), pItem);
|
tGetDelIdxItem(pDelIdx->pData + tsdbGetOffset(pDelIdx->pOffset, pDelIdx->flags, idx), pItem);
|
||||||
|
return 0;
|
||||||
return code;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t tDelIdxPutItem(SDelIdx *pDelIdx, SDelIdxItem *pItem) {
|
int32_t tDelIdxPutItem(SDelIdx *pDelIdx, SDelIdxItem *pItem) {
|
||||||
|
@ -233,22 +224,77 @@ int32_t tGetDelIdx(uint8_t *p, SDelIdx *pDelIdx) {
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SDelDataItem ======================================================
|
||||||
|
static FORCE_INLINE int32_t tPutDelDataItem(uint8_t *p, SDelDataItem *pItem) {
|
||||||
|
int32_t n = 0;
|
||||||
|
|
||||||
|
n += tPutI64v(p ? p + n : p, pItem->version);
|
||||||
|
n += tPutI64(p ? p + n : p, pItem->sKey);
|
||||||
|
n += tPutI64(p ? p + n : p, pItem->eKey);
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
static FORCE_INLINE int32_t tGetDelDataItem(uint8_t *p, SDelDataItem *pItem) {
|
||||||
|
int32_t n = 0;
|
||||||
|
|
||||||
|
n += tGetI64v(p, &pItem->version);
|
||||||
|
n += tGetI64(p, &pItem->sKey);
|
||||||
|
n += tGetI64(p, &pItem->eKey);
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
// SDelData ======================================================
|
// SDelData ======================================================
|
||||||
int32_t tDelDataGetSize(SDelData *pDelData) {
|
int32_t tDelDataGetItem(SDelData *pDelData, SDelDataItem *pItem, int64_t version) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
// TODO
|
int32_t lidx = 0;
|
||||||
|
int32_t ridx = pDelData->nItem - 1;
|
||||||
|
int32_t midx;
|
||||||
|
|
||||||
|
while (lidx <= ridx) {
|
||||||
|
midx = (lidx + ridx) / 2;
|
||||||
|
|
||||||
|
tDelDataGetItemByIdx(pDelData, pItem, midx);
|
||||||
|
if (version == pItem->version) {
|
||||||
|
goto _exit;
|
||||||
|
} else if (version < pItem->version) {
|
||||||
|
ridx = midx - 1;
|
||||||
|
} else {
|
||||||
|
ridx = midx + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
code = TSDB_CODE_NOT_FOUND;
|
||||||
|
|
||||||
|
_exit:
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t tDelDataGetItem(SDelData *pDelData, int32_t idx, SDelDataItem *pItem) {
|
int32_t tDelDataGetItemByIdx(SDelData *pDelData, SDelDataItem *pItem, int32_t idx) {
|
||||||
int32_t code = 0;
|
tGetDelDataItem(pDelData->pData + tsdbGetOffset(pDelData->pOffset, pDelData->flags, idx), pItem);
|
||||||
// TODO
|
return 0;
|
||||||
return code;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t tDelDataPutItem(SDelData *pDelData, SDelDataItem *pItem) {
|
int32_t tDelDataPutItem(SDelData *pDelData, SDelDataItem *pItem) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
// TODO
|
uint32_t nItem = pDelData->nItem;
|
||||||
|
uint32_t offset = pDelData->nData;
|
||||||
|
|
||||||
|
pDelData->nItem++;
|
||||||
|
pDelData->nData += tPutDelDataItem(NULL, pItem);
|
||||||
|
|
||||||
|
// alloc
|
||||||
|
code = tsdbRealloc(&pDelData->pOffset, pDelData->nItem * sizeof(uint32_t));
|
||||||
|
if (code) goto _exit;
|
||||||
|
code = tsdbRealloc(&pDelData->pData, pDelData->nData);
|
||||||
|
if (code) goto _exit;
|
||||||
|
|
||||||
|
// put
|
||||||
|
((uint32_t *)pDelData->pOffset)[nItem] = offset;
|
||||||
|
tPutDelDataItem(pDelData->pData + offset, pItem);
|
||||||
|
|
||||||
|
_exit:
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,8 +302,11 @@ int32_t tPutDelData(uint8_t *p, SDelData *pDelData) {
|
||||||
int32_t n = 0;
|
int32_t n = 0;
|
||||||
|
|
||||||
n += tPutU32(p ? p + n : p, pDelData->delimiter);
|
n += tPutU32(p ? p + n : p, pDelData->delimiter);
|
||||||
|
n += tPutI64(p ? p + n : p, pDelData->suid);
|
||||||
|
n += tPutI64(p ? p + n : p, pDelData->uid);
|
||||||
n += tPutU8(p ? p + n : p, pDelData->flags);
|
n += tPutU8(p ? p + n : p, pDelData->flags);
|
||||||
n += tPutBinary(p ? p + n : p, pDelData->pOffset, pDelData->nOffset);
|
n += tPutU32v(p ? p + n : p, pDelData->nItem);
|
||||||
|
n += tPutBinary(p ? p + n : p, pDelData->pOffset, pDelData->nItem * tsdbOffsetSize(pDelData->flags));
|
||||||
n += tPutBinary(p ? p + n : p, pDelData->pData, pDelData->nData);
|
n += tPutBinary(p ? p + n : p, pDelData->pData, pDelData->nData);
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
|
@ -267,8 +316,11 @@ int32_t tGetDelData(uint8_t *p, SDelData *pDelData) {
|
||||||
int32_t n = 0;
|
int32_t n = 0;
|
||||||
|
|
||||||
n += tGetU32(p, &pDelData->delimiter);
|
n += tGetU32(p, &pDelData->delimiter);
|
||||||
|
n += tGetI64(p, &pDelData->suid);
|
||||||
|
n += tGetI64(p, &pDelData->uid);
|
||||||
n += tGetU8(p, &pDelData->flags);
|
n += tGetU8(p, &pDelData->flags);
|
||||||
n += tGetBinary(p, &pDelData->pOffset, &pDelData->nOffset);
|
n += tGetU32v(p, &pDelData->nItem);
|
||||||
|
n += tGetBinary(p, &pDelData->pOffset, NULL);
|
||||||
n += tGetBinary(p, &pDelData->pData, &pDelData->nData);
|
n += tGetBinary(p, &pDelData->pData, &pDelData->nData);
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
|
|
Loading…
Reference in New Issue