refactor: do some internal refactor.
This commit is contained in:
parent
b60cc321f3
commit
efdd0c8a2a
|
@ -119,7 +119,7 @@ int32_t pkCompEx(__compar_fn_t comparFn, SRowKey* p1, SRowKey* p2) {
|
|||
return ret > 0 ? 1 : -1;
|
||||
}
|
||||
} else {
|
||||
return comparFn(&p1->pks[0].val, &p2->pks[0].val);
|
||||
return p1->pks[0].val - p2->pks[0].val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -396,7 +396,7 @@ _err:
|
|||
}
|
||||
|
||||
bool shouldFreePkBuf(SBlockLoadSuppInfo *pSupp) {
|
||||
return pSupp->numOfPks > 0 && IS_VAR_DATA_TYPE(pSupp->pk.type);
|
||||
return (pSupp->numOfPks > 0) && IS_VAR_DATA_TYPE(pSupp->pk.type);
|
||||
}
|
||||
|
||||
void resetDataBlockIterator(SDataBlockIter* pIter, int32_t order, bool needFree) {
|
||||
|
@ -824,18 +824,13 @@ static int32_t loadFileBlockBrinInfo(STsdbReader* pReader, SArray* pIndexList, S
|
|||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
// todo keep the the last returned key
|
||||
static void setBlockAllDumped(SFileBlockDumpInfo* pDumpInfo, int64_t maxKey, int32_t order) {
|
||||
// int32_t step = ASCENDING_TRAVERSE(order) ? 1 : -1;
|
||||
pDumpInfo->allDumped = true;
|
||||
// ASSERT(0);
|
||||
// pDumpInfo->lastKey.key.ts = maxKey + step;
|
||||
}
|
||||
|
||||
static void updateLastKeyInfo(SRowKey* pKey, SFileDataBlockInfo* pBlockInfo, SDataBlockInfo* pInfo, int32_t numOfPks,
|
||||
bool asc) {
|
||||
pKey->ts = asc ? pInfo->window.ekey : pInfo->window.skey;
|
||||
|
||||
pKey->numOfPKs = numOfPks;
|
||||
if (pKey->numOfPKs <= 0) {
|
||||
return;
|
||||
|
@ -845,7 +840,7 @@ static void updateLastKeyInfo(SRowKey* pKey, SFileDataBlockInfo* pBlockInfo, SDa
|
|||
pKey->pks[0].val = asc ? pBlockInfo->lastPk.val : pBlockInfo->firstPk.val;
|
||||
} else {
|
||||
uint8_t* p = asc ? pBlockInfo->lastPk.pData : pBlockInfo->firstPk.pData;
|
||||
pKey->pks[0].nData = asc ? pBlockInfo->lastPKLen : pBlockInfo->firstPKLen;
|
||||
pKey->pks[0].nData = asc ? varDataLen(pBlockInfo->lastPk.pData) : varDataLen(pBlockInfo->firstPk.pData);
|
||||
memcpy(pKey->pks[0].pData, p, pKey->pks[0].nData);
|
||||
}
|
||||
}
|
||||
|
@ -2841,11 +2836,11 @@ static void buildCleanBlockFromDataFiles(STsdbReader* pReader, STableBlockScanIn
|
|||
pInfo->pks[0].val = pBlockInfo->firstPk.val;
|
||||
pInfo->pks[1].val = pBlockInfo->lastPk.val;
|
||||
} else {
|
||||
memcpy(pInfo->pks[0].pData, pBlockInfo->firstPk.pData, pBlockInfo->firstPKLen);
|
||||
memcpy(pInfo->pks[1].pData, pBlockInfo->lastPk.pData, pBlockInfo->lastPKLen);
|
||||
memcpy(pInfo->pks[0].pData, varDataVal(pBlockInfo->firstPk.pData), varDataLen(pBlockInfo->firstPk.pData));
|
||||
memcpy(pInfo->pks[1].pData, varDataVal(pBlockInfo->lastPk.pData), varDataLen(pBlockInfo->lastPk.pData));
|
||||
|
||||
pInfo->pks[0].nData = pBlockInfo->firstPKLen;
|
||||
pInfo->pks[1].nData = pBlockInfo->lastPKLen;
|
||||
pInfo->pks[0].nData = varDataLen(pBlockInfo->firstPk.pData);
|
||||
pInfo->pks[1].nData = varDataLen(pBlockInfo->lastPk.pData);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -446,17 +446,17 @@ void recordToBlockInfo(SFileDataBlockInfo* pBlockInfo, SBrinRecord* record) {
|
|||
if (IS_NUMERIC_TYPE(pFirstKey->pks[0].type)) {
|
||||
pBlockInfo->firstPk.val = pFirstKey->pks[0].val;
|
||||
pBlockInfo->lastPk.val = record->lastKey.key.pks[0].val;
|
||||
} else {
|
||||
char* p = taosMemoryCalloc(1, pFirstKey->pks[0].nData + VARSTR_HEADER_SIZE);
|
||||
memcpy(varDataVal(p), pFirstKey->pks[0].pData, pFirstKey->pks[0].nData);
|
||||
varDataSetLen(p, pFirstKey->pks[0].nData);
|
||||
pBlockInfo->firstPk.pData = (uint8_t*)p;
|
||||
|
||||
pBlockInfo->firstPKLen = 0;
|
||||
pBlockInfo->lastPKLen = 0;
|
||||
} else { // todo handle memory alloc error, opt memory alloc perf
|
||||
pBlockInfo->firstPKLen = pFirstKey->pks[0].nData;
|
||||
pBlockInfo->firstPk.pData = taosMemoryCalloc(1, pBlockInfo->firstPKLen);
|
||||
memcpy(pBlockInfo->firstPk.pData, pFirstKey->pks[0].pData, pBlockInfo->firstPKLen);
|
||||
|
||||
pBlockInfo->lastPKLen = record->lastKey.key.pks[0].nData;
|
||||
pBlockInfo->lastPk.pData = taosMemoryCalloc(1, pBlockInfo->lastPKLen);
|
||||
memcpy(pBlockInfo->lastPk.pData, record->lastKey.key.pks[0].pData, pBlockInfo->lastPKLen);
|
||||
int32_t keyLen = record->lastKey.key.pks[0].nData;
|
||||
p = taosMemoryCalloc(1, keyLen + VARSTR_HEADER_SIZE);
|
||||
memcpy(varDataVal(p), record->lastKey.key.pks[0].pData, keyLen);
|
||||
varDataSetLen(p, keyLen);
|
||||
pBlockInfo->lastPk.pData = (uint8_t*)p;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -212,8 +212,6 @@ typedef struct SFileDataBlockInfo {
|
|||
uint8_t* pData;
|
||||
} lastPk;
|
||||
|
||||
int32_t firstPKLen;
|
||||
int32_t lastPKLen;
|
||||
int64_t minVer;
|
||||
int64_t maxVer;
|
||||
int64_t blockOffset;
|
||||
|
|
|
@ -261,6 +261,7 @@ int32_t prepareDataBlockBuf(SSDataBlock* pDataBlock, SColMatchInfo* pMatchInfo)
|
|||
pBlockInfo->pks[0].type = pInfoData->info.type;
|
||||
pBlockInfo->pks[1].type = pInfoData->info.type;
|
||||
|
||||
// allocate enough buffer size, which is pInfoData->info.bytes
|
||||
if (IS_VAR_DATA_TYPE(pItem->dataType.type)) {
|
||||
pBlockInfo->pks[0].pData = taosMemoryCalloc(1, pInfoData->info.bytes);
|
||||
if (pBlockInfo->pks[0].pData == NULL) {
|
||||
|
|
Loading…
Reference in New Issue