tsdb/cache: fix last col version when updating rocks
This commit is contained in:
parent
b979c584fb
commit
562bf0fe1e
|
@ -374,9 +374,9 @@ static SLastCol *tsdbCacheDeserializeV2(char const *value) {
|
||||||
SLastCol *pLastCol = taosMemoryMalloc(sizeof(SLastCol));
|
SLastCol *pLastCol = taosMemoryMalloc(sizeof(SLastCol));
|
||||||
*pLastCol = *(SLastCol *)(value);
|
*pLastCol = *(SLastCol *)(value);
|
||||||
|
|
||||||
char* currentPos = (char *)value + sizeof(*pLastCol);
|
char *currentPos = (char *)value + sizeof(*pLastCol);
|
||||||
for (int8_t i = 0; i < pLastCol->rowKey.numOfPKs; i++) {
|
for (int8_t i = 0; i < pLastCol->rowKey.numOfPKs; i++) {
|
||||||
SValue* pValue = &pLastCol->rowKey.pks[i];
|
SValue *pValue = &pLastCol->rowKey.pks[i];
|
||||||
if (IS_VAR_DATA_TYPE(pValue->type)) {
|
if (IS_VAR_DATA_TYPE(pValue->type)) {
|
||||||
if (pValue->nData > 0) {
|
if (pValue->nData > 0) {
|
||||||
pValue->pData = currentPos;
|
pValue->pData = currentPos;
|
||||||
|
@ -437,7 +437,7 @@ static void tsdbCacheSerialize(SLastCol *pLastCol, char **value, size_t *size) {
|
||||||
*value = taosMemoryMalloc(length);
|
*value = taosMemoryMalloc(length);
|
||||||
|
|
||||||
// copy last col
|
// copy last col
|
||||||
SLastCol* pToLastCol = (SLastCol *)(*value);
|
SLastCol *pToLastCol = (SLastCol *)(*value);
|
||||||
*pToLastCol = *pLastCol;
|
*pToLastCol = *pLastCol;
|
||||||
char *currentPos = *value + sizeof(*pLastCol);
|
char *currentPos = *value + sizeof(*pLastCol);
|
||||||
|
|
||||||
|
@ -544,9 +544,7 @@ static void reallocVarDataVal(SValue *pValue) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void reallocVarData(SColVal *pColVal) {
|
static void reallocVarData(SColVal *pColVal) { reallocVarDataVal(&pColVal->value); }
|
||||||
reallocVarDataVal(&pColVal->value);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void tsdbCacheDeleter(const void *key, size_t klen, void *value, void *ud) {
|
static void tsdbCacheDeleter(const void *key, size_t klen, void *value, void *ud) {
|
||||||
SLastCol *pLastCol = (SLastCol *)value;
|
SLastCol *pLastCol = (SLastCol *)value;
|
||||||
|
@ -1094,7 +1092,8 @@ int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow
|
||||||
if (NULL == pLastCol || (tRowKeyCompare(&pLastCol->rowKey, pRowKey) != 1)) {
|
if (NULL == pLastCol || (tRowKeyCompare(&pLastCol->rowKey, pRowKey) != 1)) {
|
||||||
char *value = NULL;
|
char *value = NULL;
|
||||||
size_t vlen = 0;
|
size_t vlen = 0;
|
||||||
tsdbCacheSerialize(&(SLastCol){.rowKey = *pRowKey, .colVal = *pColVal}, &value, &vlen);
|
tsdbCacheSerialize(&(SLastCol){.version = LAST_COL_VERSION, .rowKey = *pRowKey, .colVal = *pColVal}, &value,
|
||||||
|
&vlen);
|
||||||
|
|
||||||
// SLastKey key = (SLastKey){.ltype = 0, .uid = uid, .cid = pColVal->cid};
|
// SLastKey key = (SLastKey){.ltype = 0, .uid = uid, .cid = pColVal->cid};
|
||||||
taosThreadMutexLock(&pTsdb->rCache.rMutex);
|
taosThreadMutexLock(&pTsdb->rCache.rMutex);
|
||||||
|
@ -1135,7 +1134,8 @@ int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow
|
||||||
if (NULL == pLastCol || (tRowKeyCompare(&pLastCol->rowKey, pRowKey) != 1)) {
|
if (NULL == pLastCol || (tRowKeyCompare(&pLastCol->rowKey, pRowKey) != 1)) {
|
||||||
char *value = NULL;
|
char *value = NULL;
|
||||||
size_t vlen = 0;
|
size_t vlen = 0;
|
||||||
tsdbCacheSerialize(&(SLastCol){.rowKey = *pRowKey, .colVal = *pColVal}, &value, &vlen);
|
tsdbCacheSerialize(&(SLastCol){.version = LAST_COL_VERSION, .rowKey = *pRowKey, .colVal = *pColVal}, &value,
|
||||||
|
&vlen);
|
||||||
|
|
||||||
// SLastKey key = (SLastKey){.ltype = 1, .uid = uid, .cid = pColVal->cid};
|
// SLastKey key = (SLastKey){.ltype = 1, .uid = uid, .cid = pColVal->cid};
|
||||||
taosThreadMutexLock(&pTsdb->rCache.rMutex);
|
taosThreadMutexLock(&pTsdb->rCache.rMutex);
|
||||||
|
@ -1562,7 +1562,7 @@ static int32_t tsdbCacheLoadFromRocks(STsdb *pTsdb, tb_uid_t uid, SArray *pLastA
|
||||||
SLRUCache *pCache = pTsdb->lruCache;
|
SLRUCache *pCache = pTsdb->lruCache;
|
||||||
for (int i = 0, j = 0; i < num_keys && j < TARRAY_SIZE(remainCols); ++i) {
|
for (int i = 0, j = 0; i < num_keys && j < TARRAY_SIZE(remainCols); ++i) {
|
||||||
SLastCol *pLastCol = tsdbCacheDeserialize(values_list[i]);
|
SLastCol *pLastCol = tsdbCacheDeserialize(values_list[i]);
|
||||||
SLastCol* PToFree = pLastCol;
|
SLastCol *PToFree = pLastCol;
|
||||||
SIdxKey *idxKey = &((SIdxKey *)TARRAY_DATA(remainCols))[j];
|
SIdxKey *idxKey = &((SIdxKey *)TARRAY_DATA(remainCols))[j];
|
||||||
if (pLastCol) {
|
if (pLastCol) {
|
||||||
SLastCol *pTmpLastCol = taosMemoryCalloc(1, sizeof(SLastCol));
|
SLastCol *pTmpLastCol = taosMemoryCalloc(1, sizeof(SLastCol));
|
||||||
|
|
Loading…
Reference in New Issue