diff --git a/source/dnode/vnode/src/tsdb/tsdbCache.c b/source/dnode/vnode/src/tsdb/tsdbCache.c index f86efb7c5b..f9cab74b5f 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCache.c +++ b/source/dnode/vnode/src/tsdb/tsdbCache.c @@ -130,6 +130,10 @@ static void tsdbCloseRocksCache(STsdb *pTsdb) { } SLastCol *tsdbCacheDeserialize(char const *value) { + if (!value) { + return NULL; + } + SLastCol *pLastCol = (SLastCol *)value; SColVal *pColVal = &pLastCol->colVal; if (IS_VAR_DATA_TYPE(pColVal->type)) { @@ -236,10 +240,7 @@ int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow for (int i = 0; i < num_keys; ++i) { SColVal *pColVal = (SColVal *)taosArrayGet(aColVal, i); if (COL_VAL_IS_VALUE(pColVal)) { - SLastCol *pLastCol = NULL; - if (NULL != values_list[i]) { - pLastCol = tsdbCacheDeserialize(values_list[i]); - } + SLastCol *pLastCol = tsdbCacheDeserialize(values_list[i]); if (NULL == pLastCol || pLastCol->ts <= keyTs) { char *value = NULL; diff --git a/source/dnode/vnode/src/tsdb/tsdbCacheRead.c b/source/dnode/vnode/src/tsdb/tsdbCacheRead.c index 964ff2e297..285e668e12 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCacheRead.c +++ b/source/dnode/vnode/src/tsdb/tsdbCacheRead.c @@ -449,6 +449,9 @@ int32_t tsdbRetrieveCacheRows(void* pReader, SSDataBlock* pResBlock, const int32 char const* lstring = pr->type & CACHESCAN_RETRIEVE_LAST ? "last" : "last_row"; tsdbCacheGet(pr->pTsdb, pKeyInfo->uid, &pRow, pr, lstring); + if (TARRAY_SIZE(pRow) <= 0) { + continue; + } saveOneRow(pRow, pResBlock, pr, slotIds, dstSlotIds, pRes, pr->idstr); taosArrayDestroy(pRow);