more code
This commit is contained in:
parent
0525b4fa0d
commit
3700f0dc8e
|
@ -111,6 +111,7 @@ void debugPrintSTag(STag *pTag, const char *tag, int32_t ln); // TODO: remov
|
||||||
int32_t parseJsontoTagData(const char *json, SArray *pTagVals, STag **ppTag, void *pMsgBuf);
|
int32_t parseJsontoTagData(const char *json, SArray *pTagVals, STag **ppTag, void *pMsgBuf);
|
||||||
|
|
||||||
// SColData ================================
|
// SColData ================================
|
||||||
|
typedef void *(*xMallocFn)(void *, int32_t);
|
||||||
void tColDataDestroy(void *ph);
|
void tColDataDestroy(void *ph);
|
||||||
void tColDataInit(SColData *pColData, int16_t cid, int8_t type, int8_t smaOn);
|
void tColDataInit(SColData *pColData, int16_t cid, int8_t type, int8_t smaOn);
|
||||||
void tColDataClear(SColData *pColData);
|
void tColDataClear(SColData *pColData);
|
||||||
|
@ -118,7 +119,7 @@ void tColDataDeepClear(SColData *pColData);
|
||||||
int32_t tColDataAppendValue(SColData *pColData, SColVal *pColVal);
|
int32_t tColDataAppendValue(SColData *pColData, SColVal *pColVal);
|
||||||
void tColDataGetValue(SColData *pColData, int32_t iVal, SColVal *pColVal);
|
void tColDataGetValue(SColData *pColData, int32_t iVal, SColVal *pColVal);
|
||||||
uint8_t tColDataGetBitValue(const SColData *pColData, int32_t iVal);
|
uint8_t tColDataGetBitValue(const SColData *pColData, int32_t iVal);
|
||||||
int32_t tColDataCopy(SColData *pColDataSrc, SColData *pColDataDest);
|
int32_t tColDataCopy(SColData *pColDataFrom, SColData *pColData, xMallocFn xMalloc, void *arg);
|
||||||
extern void (*tColDataCalcSMA[])(SColData *pColData, int64_t *sum, int64_t *max, int64_t *min, int16_t *numOfNull);
|
extern void (*tColDataCalcSMA[])(SColData *pColData, int64_t *sum, int64_t *max, int64_t *min, int16_t *numOfNull);
|
||||||
|
|
||||||
// for stmt bind
|
// for stmt bind
|
||||||
|
|
|
@ -2018,41 +2018,60 @@ uint8_t tColDataGetBitValue(const SColData *pColData, int32_t iVal) {
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t tColDataCopy(SColData *pColDataSrc, SColData *pColDataDest) {
|
int32_t tColDataCopy(SColData *pColDataFrom, SColData *pColData, xMallocFn xMalloc, void *arg) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
int32_t size;
|
|
||||||
|
|
||||||
ASSERT(pColDataSrc->nVal > 0);
|
*pColData = *pColDataFrom;
|
||||||
ASSERT(pColDataDest->cid == pColDataSrc->cid);
|
|
||||||
ASSERT(pColDataDest->type == pColDataSrc->type);
|
|
||||||
|
|
||||||
pColDataDest->smaOn = pColDataSrc->smaOn;
|
|
||||||
pColDataDest->nVal = pColDataSrc->nVal;
|
|
||||||
pColDataDest->flag = pColDataSrc->flag;
|
|
||||||
|
|
||||||
// bitmap
|
// bitmap
|
||||||
if (pColDataSrc->flag != HAS_NONE && pColDataSrc->flag != HAS_NULL && pColDataSrc->flag != HAS_VALUE) {
|
switch (pColData->flag) {
|
||||||
size = BIT2_SIZE(pColDataSrc->nVal);
|
case (HAS_NULL | HAS_NONE):
|
||||||
code = tRealloc(&pColDataDest->pBitMap, size);
|
case (HAS_VALUE | HAS_NONE):
|
||||||
if (code) goto _exit;
|
case (HAS_VALUE | HAS_NULL):
|
||||||
memcpy(pColDataDest->pBitMap, pColDataSrc->pBitMap, size);
|
pColData->pBitMap = xMalloc(arg, BIT1_SIZE(pColData->nVal));
|
||||||
|
if (pColData->pBitMap == NULL) {
|
||||||
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
memcpy(pColData->pBitMap, pColDataFrom->pBitMap, BIT1_SIZE(pColData->nVal));
|
||||||
|
break;
|
||||||
|
case (HAS_VALUE | HAS_NULL | HAS_NONE):
|
||||||
|
pColData->pBitMap = xMalloc(arg, BIT2_SIZE(pColData->nVal));
|
||||||
|
if (pColData->pBitMap == NULL) {
|
||||||
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
memcpy(pColData->pBitMap, pColDataFrom->pBitMap, BIT2_SIZE(pColData->nVal));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
pColData->pBitMap = NULL;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// offset
|
// offset
|
||||||
if (IS_VAR_DATA_TYPE(pColDataDest->type)) {
|
if (IS_VAR_DATA_TYPE(pColData->type) && (pColData->flag & HAS_VALUE)) {
|
||||||
size = sizeof(int32_t) * pColDataSrc->nVal;
|
pColData->aOffset = xMalloc(arg, pColData->nVal << 2);
|
||||||
|
if (pColData->aOffset == NULL) {
|
||||||
code = tRealloc((uint8_t **)&pColDataDest->aOffset, size);
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
if (code) goto _exit;
|
goto _exit;
|
||||||
|
}
|
||||||
memcpy(pColDataDest->aOffset, pColDataSrc->aOffset, size);
|
memcpy(pColData->aOffset, pColDataFrom->aOffset, pColData->nVal << 2);
|
||||||
|
} else {
|
||||||
|
pColData->aOffset = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// value
|
// value
|
||||||
pColDataDest->nData = pColDataSrc->nData;
|
if (pColData->nVal) {
|
||||||
code = tRealloc(&pColDataDest->pData, pColDataSrc->nData);
|
pColData->pData = xMalloc(arg, pColData->nVal);
|
||||||
if (code) goto _exit;
|
if (pColData->pData == NULL) {
|
||||||
memcpy(pColDataDest->pData, pColDataSrc->pData, pColDataDest->nData);
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(pColData->pData, pColDataFrom->pData, pColData->nData);
|
||||||
|
} else {
|
||||||
|
pColData->pData = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
return code;
|
return code;
|
||||||
|
|
|
@ -87,7 +87,7 @@ typedef struct SSnapDataHdr SSnapDataHdr;
|
||||||
#define VNODE_RSMA2_DIR "rsma2"
|
#define VNODE_RSMA2_DIR "rsma2"
|
||||||
|
|
||||||
// vnd.h
|
// vnd.h
|
||||||
void* vnodeBufPoolMalloc(SVBufPool* pPool, int size);
|
void* vnodeBufPoolMalloc(SVBufPool* pPool, int32_t size);
|
||||||
void vnodeBufPoolFree(SVBufPool* pPool, void* p);
|
void vnodeBufPoolFree(SVBufPool* pPool, void* p);
|
||||||
void vnodeBufPoolRef(SVBufPool* pPool);
|
void vnodeBufPoolRef(SVBufPool* pPool);
|
||||||
void vnodeBufPoolUnRef(SVBufPool* pPool);
|
void vnodeBufPoolUnRef(SVBufPool* pPool);
|
||||||
|
|
|
@ -601,8 +601,13 @@ static int32_t tsdbInsertColDataToTable(SMemTable *pMemTable, STbData *pTbData,
|
||||||
memcpy(pBlockData->aTSKEY, aColData[0].pData, aColData[0].nData);
|
memcpy(pBlockData->aTSKEY, aColData[0].pData, aColData[0].nData);
|
||||||
|
|
||||||
pBlockData->nColData = nColData - 1;
|
pBlockData->nColData = nColData - 1;
|
||||||
for (int32_t iColData = 1; iColData < nColData; ++iColData) {
|
pBlockData->aColData = vnodeBufPoolMalloc(pPool, sizeof(SColData) * pBlockData->nColData);
|
||||||
// todo
|
if (pBlockData->aColData == NULL) {
|
||||||
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
for (int32_t iColData = 0; iColData < pBlockData->nColData; ++iColData) {
|
||||||
|
code = tColDataCopy(&aColData[iColData + 1], &pBlockData->aColData[iColData], (xMallocFn)vnodeBufPoolMalloc, pPool);
|
||||||
|
if (code) goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// loop to add each row to the skiplist
|
// loop to add each row to the skiplist
|
||||||
|
|
|
@ -35,7 +35,7 @@ static int vnodeBufPoolCreate(SVnode *pVnode, int64_t size, SVBufPool **ppPool)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (taosThreadSpinInit(pPool->lock, 0) != 0) {
|
if (taosThreadSpinInit(pPool->lock, 0) != 0) {
|
||||||
taosMemoryFree((void*)pPool->lock);
|
taosMemoryFree((void *)pPool->lock);
|
||||||
taosMemoryFree(pPool);
|
taosMemoryFree(pPool);
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -62,7 +62,7 @@ static int vnodeBufPoolDestroy(SVBufPool *pPool) {
|
||||||
vnodeBufPoolReset(pPool);
|
vnodeBufPoolReset(pPool);
|
||||||
if (pPool->lock) {
|
if (pPool->lock) {
|
||||||
taosThreadSpinDestroy(pPool->lock);
|
taosThreadSpinDestroy(pPool->lock);
|
||||||
taosMemoryFree((void*)pPool->lock);
|
taosMemoryFree((void *)pPool->lock);
|
||||||
}
|
}
|
||||||
taosMemoryFree(pPool);
|
taosMemoryFree(pPool);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -123,7 +123,7 @@ void vnodeBufPoolReset(SVBufPool *pPool) {
|
||||||
pPool->ptr = pPool->node.data;
|
pPool->ptr = pPool->node.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *vnodeBufPoolMalloc(SVBufPool *pPool, int size) {
|
void *vnodeBufPoolMalloc(SVBufPool *pPool, int32_t size) {
|
||||||
SVBufPoolNode *pNode;
|
SVBufPoolNode *pNode;
|
||||||
void *p = NULL;
|
void *p = NULL;
|
||||||
ASSERT(pPool != NULL);
|
ASSERT(pPool != NULL);
|
||||||
|
|
Loading…
Reference in New Issue