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;
|
return ret > 0 ? 1 : -1;
|
||||||
}
|
}
|
||||||
} else {
|
} 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) {
|
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) {
|
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;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo keep the the last returned key
|
|
||||||
static void setBlockAllDumped(SFileBlockDumpInfo* pDumpInfo, int64_t maxKey, int32_t order) {
|
static void setBlockAllDumped(SFileBlockDumpInfo* pDumpInfo, int64_t maxKey, int32_t order) {
|
||||||
// int32_t step = ASCENDING_TRAVERSE(order) ? 1 : -1;
|
|
||||||
pDumpInfo->allDumped = true;
|
pDumpInfo->allDumped = true;
|
||||||
// ASSERT(0);
|
|
||||||
// pDumpInfo->lastKey.key.ts = maxKey + step;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updateLastKeyInfo(SRowKey* pKey, SFileDataBlockInfo* pBlockInfo, SDataBlockInfo* pInfo, int32_t numOfPks,
|
static void updateLastKeyInfo(SRowKey* pKey, SFileDataBlockInfo* pBlockInfo, SDataBlockInfo* pInfo, int32_t numOfPks,
|
||||||
bool asc) {
|
bool asc) {
|
||||||
pKey->ts = asc ? pInfo->window.ekey : pInfo->window.skey;
|
pKey->ts = asc ? pInfo->window.ekey : pInfo->window.skey;
|
||||||
|
|
||||||
pKey->numOfPKs = numOfPks;
|
pKey->numOfPKs = numOfPks;
|
||||||
if (pKey->numOfPKs <= 0) {
|
if (pKey->numOfPKs <= 0) {
|
||||||
return;
|
return;
|
||||||
|
@ -845,7 +840,7 @@ static void updateLastKeyInfo(SRowKey* pKey, SFileDataBlockInfo* pBlockInfo, SDa
|
||||||
pKey->pks[0].val = asc ? pBlockInfo->lastPk.val : pBlockInfo->firstPk.val;
|
pKey->pks[0].val = asc ? pBlockInfo->lastPk.val : pBlockInfo->firstPk.val;
|
||||||
} else {
|
} else {
|
||||||
uint8_t* p = asc ? pBlockInfo->lastPk.pData : pBlockInfo->firstPk.pData;
|
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);
|
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[0].val = pBlockInfo->firstPk.val;
|
||||||
pInfo->pks[1].val = pBlockInfo->lastPk.val;
|
pInfo->pks[1].val = pBlockInfo->lastPk.val;
|
||||||
} else {
|
} else {
|
||||||
memcpy(pInfo->pks[0].pData, pBlockInfo->firstPk.pData, pBlockInfo->firstPKLen);
|
memcpy(pInfo->pks[0].pData, varDataVal(pBlockInfo->firstPk.pData), varDataLen(pBlockInfo->firstPk.pData));
|
||||||
memcpy(pInfo->pks[1].pData, pBlockInfo->lastPk.pData, pBlockInfo->lastPKLen);
|
memcpy(pInfo->pks[1].pData, varDataVal(pBlockInfo->lastPk.pData), varDataLen(pBlockInfo->lastPk.pData));
|
||||||
|
|
||||||
pInfo->pks[0].nData = pBlockInfo->firstPKLen;
|
pInfo->pks[0].nData = varDataLen(pBlockInfo->firstPk.pData);
|
||||||
pInfo->pks[1].nData = pBlockInfo->lastPKLen;
|
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)) {
|
if (IS_NUMERIC_TYPE(pFirstKey->pks[0].type)) {
|
||||||
pBlockInfo->firstPk.val = pFirstKey->pks[0].val;
|
pBlockInfo->firstPk.val = pFirstKey->pks[0].val;
|
||||||
pBlockInfo->lastPk.val = record->lastKey.key.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;
|
int32_t keyLen = record->lastKey.key.pks[0].nData;
|
||||||
pBlockInfo->lastPKLen = 0;
|
p = taosMemoryCalloc(1, keyLen + VARSTR_HEADER_SIZE);
|
||||||
} else { // todo handle memory alloc error, opt memory alloc perf
|
memcpy(varDataVal(p), record->lastKey.key.pks[0].pData, keyLen);
|
||||||
pBlockInfo->firstPKLen = pFirstKey->pks[0].nData;
|
varDataSetLen(p, keyLen);
|
||||||
pBlockInfo->firstPk.pData = taosMemoryCalloc(1, pBlockInfo->firstPKLen);
|
pBlockInfo->lastPk.pData = (uint8_t*)p;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -212,8 +212,6 @@ typedef struct SFileDataBlockInfo {
|
||||||
uint8_t* pData;
|
uint8_t* pData;
|
||||||
} lastPk;
|
} lastPk;
|
||||||
|
|
||||||
int32_t firstPKLen;
|
|
||||||
int32_t lastPKLen;
|
|
||||||
int64_t minVer;
|
int64_t minVer;
|
||||||
int64_t maxVer;
|
int64_t maxVer;
|
||||||
int64_t blockOffset;
|
int64_t blockOffset;
|
||||||
|
|
|
@ -261,6 +261,7 @@ int32_t prepareDataBlockBuf(SSDataBlock* pDataBlock, SColMatchInfo* pMatchInfo)
|
||||||
pBlockInfo->pks[0].type = pInfoData->info.type;
|
pBlockInfo->pks[0].type = pInfoData->info.type;
|
||||||
pBlockInfo->pks[1].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)) {
|
if (IS_VAR_DATA_TYPE(pItem->dataType.type)) {
|
||||||
pBlockInfo->pks[0].pData = taosMemoryCalloc(1, pInfoData->info.bytes);
|
pBlockInfo->pks[0].pData = taosMemoryCalloc(1, pInfoData->info.bytes);
|
||||||
if (pBlockInfo->pks[0].pData == NULL) {
|
if (pBlockInfo->pks[0].pData == NULL) {
|
||||||
|
|
Loading…
Reference in New Issue