enh: error handle in message encode and decode
This commit is contained in:
parent
8012a1902b
commit
a260a5f2f7
|
@ -55,36 +55,44 @@ void tFreeCompactObj(SCompactObj *pCompact) {}
|
|||
|
||||
int32_t tSerializeSCompactObj(void *buf, int32_t bufLen, const SCompactObj *pObj) {
|
||||
SEncoder encoder = {0};
|
||||
int32_t code = 0;
|
||||
int32_t lino;
|
||||
int32_t tlen;
|
||||
tEncoderInit(&encoder, buf, bufLen);
|
||||
|
||||
if (tStartEncode(&encoder) < 0) return -1;
|
||||
|
||||
if (tEncodeI32(&encoder, pObj->compactId) < 0) return -1;
|
||||
if (tEncodeCStr(&encoder, pObj->dbname) < 0) return -1;
|
||||
if (tEncodeI64(&encoder, pObj->startTime) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tStartEncode(&encoder));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pObj->compactId));
|
||||
TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pObj->dbname));
|
||||
TAOS_CHECK_EXIT(tEncodeI64(&encoder, pObj->startTime));
|
||||
|
||||
tEndEncode(&encoder);
|
||||
|
||||
int32_t tlen = encoder.pos;
|
||||
_exit:
|
||||
if (code) {
|
||||
tlen = code;
|
||||
} else {
|
||||
tlen = encoder.pos;
|
||||
}
|
||||
tEncoderClear(&encoder);
|
||||
return tlen;
|
||||
}
|
||||
|
||||
int32_t tDeserializeSCompactObj(void *buf, int32_t bufLen, SCompactObj *pObj) {
|
||||
int8_t ex = 0;
|
||||
int32_t code = 0;
|
||||
int32_t lino;
|
||||
SDecoder decoder = {0};
|
||||
tDecoderInit(&decoder, buf, bufLen);
|
||||
|
||||
TAOS_CHECK_RETURN(tStartDecode(&decoder));
|
||||
|
||||
TAOS_CHECK_RETURN(tDecodeI32(&decoder, &pObj->compactId));
|
||||
TAOS_CHECK_RETURN(tDecodeCStrTo(&decoder, pObj->dbname));
|
||||
TAOS_CHECK_RETURN(tDecodeI64(&decoder, &pObj->startTime));
|
||||
TAOS_CHECK_EXIT(tStartDecode(&decoder));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pObj->compactId));
|
||||
TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pObj->dbname));
|
||||
TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pObj->startTime));
|
||||
|
||||
tEndDecode(&decoder);
|
||||
|
||||
_exit:
|
||||
tDecoderClear(&decoder);
|
||||
return 0;
|
||||
return code;
|
||||
}
|
||||
|
||||
SSdbRaw *mndCompactActionEncode(SCompactObj *pCompact) {
|
||||
|
@ -633,8 +641,8 @@ void mndCompactSendProgressReq(SMnode *pMnode, SCompactObj *pCompact) {
|
|||
|
||||
static int32_t mndSaveCompactProgress(SMnode *pMnode, int32_t compactId) {
|
||||
int32_t code = 0;
|
||||
bool needSave = false;
|
||||
void *pIter = NULL;
|
||||
bool needSave = false;
|
||||
void *pIter = NULL;
|
||||
while (1) {
|
||||
SCompactDetailObj *pDetail = NULL;
|
||||
pIter = sdbFetch(pMnode->pSdb, SDB_COMPACT_DETAIL, pIter, (void **)&pDetail);
|
||||
|
|
|
@ -13,9 +13,9 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "mndCompactDetail.h"
|
||||
#include "mndTrans.h"
|
||||
#include "mndShow.h"
|
||||
#include "mndDb.h"
|
||||
#include "mndShow.h"
|
||||
#include "mndTrans.h"
|
||||
|
||||
#define MND_COMPACT_VER_NUMBER 1
|
||||
|
||||
|
@ -35,21 +35,20 @@ int32_t mndInitCompactDetail(SMnode *pMnode) {
|
|||
return sdbSetTable(pMnode->pSdb, table);
|
||||
}
|
||||
|
||||
void mndCleanupCompactDetail(SMnode *pMnode) {
|
||||
mDebug("mnd compact detail cleanup");
|
||||
}
|
||||
void mndCleanupCompactDetail(SMnode *pMnode) { mDebug("mnd compact detail cleanup"); }
|
||||
|
||||
int32_t mndRetrieveCompactDetail(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) {
|
||||
SMnode *pMnode = pReq->info.node;
|
||||
SSdb *pSdb = pMnode->pSdb;
|
||||
int32_t numOfRows = 0;
|
||||
SCompactDetailObj *pCompactDetail = NULL;
|
||||
char *sep = NULL;
|
||||
SDbObj *pDb = NULL;
|
||||
|
||||
int32_t mndRetrieveCompactDetail(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows){
|
||||
SMnode *pMnode = pReq->info.node;
|
||||
SSdb *pSdb = pMnode->pSdb;
|
||||
int32_t numOfRows = 0;
|
||||
SCompactDetailObj *pCompactDetail = NULL;
|
||||
char *sep = NULL;
|
||||
SDbObj *pDb = NULL;
|
||||
|
||||
if (strlen(pShow->db) > 0) {
|
||||
sep = strchr(pShow->db, '.');
|
||||
if (sep && ((0 == strcmp(sep + 1, TSDB_INFORMATION_SCHEMA_DB) || (0 == strcmp(sep + 1, TSDB_PERFORMANCE_SCHEMA_DB))))) {
|
||||
if (sep &&
|
||||
((0 == strcmp(sep + 1, TSDB_INFORMATION_SCHEMA_DB) || (0 == strcmp(sep + 1, TSDB_PERFORMANCE_SCHEMA_DB))))) {
|
||||
sep++;
|
||||
} else {
|
||||
pDb = mndAcquireDb(pMnode, pShow->db);
|
||||
|
@ -57,7 +56,7 @@ int32_t mndRetrieveCompactDetail(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
|||
}
|
||||
}
|
||||
|
||||
while(numOfRows < rows){
|
||||
while (numOfRows < rows) {
|
||||
pShow->pIter = sdbFetch(pSdb, SDB_COMPACT_DETAIL, pShow->pIter, (void **)&pCompactDetail);
|
||||
if (pShow->pIter == NULL) break;
|
||||
|
||||
|
@ -94,53 +93,60 @@ int32_t mndRetrieveCompactDetail(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
|||
return numOfRows;
|
||||
}
|
||||
|
||||
void tFreeCompactDetailObj(SCompactDetailObj *pCompact) {
|
||||
}
|
||||
void tFreeCompactDetailObj(SCompactDetailObj *pCompact) {}
|
||||
|
||||
int32_t tSerializeSCompactDetailObj(void *buf, int32_t bufLen, const SCompactDetailObj *pObj) {
|
||||
SEncoder encoder = {0};
|
||||
int32_t code = 0;
|
||||
int32_t lino;
|
||||
int32_t tlen;
|
||||
tEncoderInit(&encoder, buf, bufLen);
|
||||
|
||||
if (tStartEncode(&encoder) < 0) return -1;
|
||||
|
||||
if (tEncodeI32(&encoder, pObj->compactDetailId) < 0) return -1;
|
||||
if (tEncodeI32(&encoder, pObj->compactId) < 0) return -1;
|
||||
if (tEncodeI32(&encoder, pObj->vgId) < 0) return -1;
|
||||
if (tEncodeI32(&encoder, pObj->dnodeId) < 0) return -1;
|
||||
if (tEncodeI32(&encoder, pObj->numberFileset) < 0) return -1;
|
||||
if (tEncodeI32(&encoder, pObj->finished) < 0) return -1;
|
||||
if (tEncodeI64(&encoder, pObj->startTime) < 0) return -1;
|
||||
if (tEncodeI32(&encoder, pObj->newNumberFileset) < 0) return -1;
|
||||
if (tEncodeI32(&encoder, pObj->newFinished) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tStartEncode(&encoder));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pObj->compactDetailId));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pObj->compactId));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pObj->vgId));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pObj->dnodeId));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pObj->numberFileset));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pObj->finished));
|
||||
TAOS_CHECK_EXIT(tEncodeI64(&encoder, pObj->startTime));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pObj->newNumberFileset));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pObj->newFinished));
|
||||
|
||||
tEndEncode(&encoder);
|
||||
|
||||
int32_t tlen = encoder.pos;
|
||||
_exit:
|
||||
if (code) {
|
||||
tlen = code;
|
||||
} else {
|
||||
tlen = encoder.pos;
|
||||
}
|
||||
tEncoderClear(&encoder);
|
||||
return tlen;
|
||||
}
|
||||
|
||||
int32_t tDeserializeSCompactDetailObj(void *buf, int32_t bufLen, SCompactDetailObj *pObj) {
|
||||
int8_t ex = 0;
|
||||
int32_t code = 0;
|
||||
int32_t lino;
|
||||
SDecoder decoder = {0};
|
||||
tDecoderInit(&decoder, buf, bufLen);
|
||||
|
||||
TAOS_CHECK_RETURN(tStartDecode(&decoder));
|
||||
|
||||
TAOS_CHECK_RETURN(tDecodeI32(&decoder, &pObj->compactDetailId));
|
||||
TAOS_CHECK_RETURN(tDecodeI32(&decoder, &pObj->compactId));
|
||||
TAOS_CHECK_RETURN(tDecodeI32(&decoder, &pObj->vgId));
|
||||
TAOS_CHECK_RETURN(tDecodeI32(&decoder, &pObj->dnodeId));
|
||||
TAOS_CHECK_RETURN(tDecodeI32(&decoder, &pObj->numberFileset));
|
||||
TAOS_CHECK_RETURN(tDecodeI32(&decoder, &pObj->finished));
|
||||
TAOS_CHECK_RETURN(tDecodeI64(&decoder, &pObj->startTime));
|
||||
TAOS_CHECK_RETURN(tDecodeI32(&decoder, &pObj->newNumberFileset));
|
||||
TAOS_CHECK_RETURN(tDecodeI32(&decoder, &pObj->newFinished));
|
||||
TAOS_CHECK_EXIT(tStartDecode(&decoder));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pObj->compactDetailId));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pObj->compactId));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pObj->vgId));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pObj->dnodeId));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pObj->numberFileset));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pObj->finished));
|
||||
TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pObj->startTime));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pObj->newNumberFileset));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pObj->newFinished));
|
||||
|
||||
tEndDecode(&decoder);
|
||||
|
||||
_exit:
|
||||
tDecoderClear(&decoder);
|
||||
return 0;
|
||||
return code;
|
||||
}
|
||||
|
||||
SSdbRaw *mndCompactDetailActionEncode(SCompactDetailObj *pCompact) {
|
||||
|
@ -148,7 +154,7 @@ SSdbRaw *mndCompactDetailActionEncode(SCompactDetailObj *pCompact) {
|
|||
int32_t lino = 0;
|
||||
terrno = TSDB_CODE_SUCCESS;
|
||||
|
||||
void *buf = NULL;
|
||||
void *buf = NULL;
|
||||
SSdbRaw *pRaw = NULL;
|
||||
|
||||
int32_t tlen = tSerializeSCompactDetailObj(NULL, 0, pCompact);
|
||||
|
@ -156,8 +162,8 @@ SSdbRaw *mndCompactDetailActionEncode(SCompactDetailObj *pCompact) {
|
|||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||
goto OVER;
|
||||
}
|
||||
|
||||
int32_t size = sizeof(int32_t) + tlen;
|
||||
|
||||
int32_t size = sizeof(int32_t) + tlen;
|
||||
pRaw = sdbAllocRaw(SDB_COMPACT_DETAIL, MND_COMPACT_VER_NUMBER, size);
|
||||
if (pRaw == NULL) {
|
||||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||
|
@ -181,7 +187,6 @@ SSdbRaw *mndCompactDetailActionEncode(SCompactDetailObj *pCompact) {
|
|||
SDB_SET_BINARY(pRaw, dataPos, buf, tlen, OVER);
|
||||
SDB_SET_DATALEN(pRaw, dataPos, OVER);
|
||||
|
||||
|
||||
OVER:
|
||||
taosMemoryFreeClear(buf);
|
||||
if (terrno != TSDB_CODE_SUCCESS) {
|
||||
|
@ -263,9 +268,8 @@ int32_t mndCompactDetailActionDelete(SSdb *pSdb, SCompactDetailObj *pCompact) {
|
|||
}
|
||||
|
||||
int32_t mndCompactDetailActionUpdate(SSdb *pSdb, SCompactDetailObj *pOldCompact, SCompactDetailObj *pNewCompact) {
|
||||
mTrace("compact detail:%" PRId32 ", perform update action, old row:%p new row:%p",
|
||||
pOldCompact->compactId, pOldCompact, pNewCompact);
|
||||
|
||||
mTrace("compact detail:%" PRId32 ", perform update action, old row:%p new row:%p", pOldCompact->compactId,
|
||||
pOldCompact, pNewCompact);
|
||||
|
||||
pOldCompact->numberFileset = pNewCompact->numberFileset;
|
||||
pOldCompact->finished = pNewCompact->finished;
|
||||
|
@ -273,8 +277,8 @@ int32_t mndCompactDetailActionUpdate(SSdb *pSdb, SCompactDetailObj *pOldCompact,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int32_t mndAddCompactDetailToTran(SMnode *pMnode, STrans *pTrans, SCompactObj* pCompact, SVgObj *pVgroup,
|
||||
SVnodeGid *pVgid, int32_t index){
|
||||
int32_t mndAddCompactDetailToTran(SMnode *pMnode, STrans *pTrans, SCompactObj *pCompact, SVgObj *pVgroup,
|
||||
SVnodeGid *pVgid, int32_t index) {
|
||||
int32_t code = 0;
|
||||
SCompactDetailObj compactDetail = {0};
|
||||
compactDetail.compactDetailId = index;
|
||||
|
@ -287,8 +291,8 @@ int32_t mndAddCompactDetailToTran(SMnode *pMnode, STrans *pTrans, SCompactObj* p
|
|||
compactDetail.newNumberFileset = -1;
|
||||
compactDetail.newFinished = -1;
|
||||
|
||||
mInfo("compact:%d, add compact detail to trans, index:%d, vgId:%d, dnodeId:%d",
|
||||
compactDetail.compactId, compactDetail.compactDetailId, compactDetail.vgId, compactDetail.dnodeId);
|
||||
mInfo("compact:%d, add compact detail to trans, index:%d, vgId:%d, dnodeId:%d", compactDetail.compactId,
|
||||
compactDetail.compactDetailId, compactDetail.vgId, compactDetail.dnodeId);
|
||||
|
||||
SSdbRaw *pVgRaw = mndCompactDetailActionEncode(&compactDetail);
|
||||
if (pVgRaw == NULL) return -1;
|
||||
|
|
|
@ -16,64 +16,79 @@
|
|||
#include "tq.h"
|
||||
|
||||
int32_t tEncodeSTqHandle(SEncoder* pEncoder, const STqHandle* pHandle) {
|
||||
if (tStartEncode(pEncoder) < 0) return -1;
|
||||
if (tEncodeCStr(pEncoder, pHandle->subKey) < 0) return -1;
|
||||
if (tEncodeI8(pEncoder, pHandle->fetchMeta) < 0) return -1;
|
||||
if (tEncodeI64(pEncoder, pHandle->consumerId) < 0) return -1;
|
||||
if (tEncodeI64(pEncoder, pHandle->snapshotVer) < 0) return -1;
|
||||
if (tEncodeI32(pEncoder, pHandle->epoch) < 0) return -1;
|
||||
if (tEncodeI8(pEncoder, pHandle->execHandle.subType) < 0) return -1;
|
||||
int32_t code = 0;
|
||||
int32_t lino;
|
||||
|
||||
TAOS_CHECK_EXIT(tStartEncode(pEncoder));
|
||||
TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pHandle->subKey));
|
||||
TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pHandle->fetchMeta));
|
||||
TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pHandle->consumerId));
|
||||
TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pHandle->snapshotVer));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pHandle->epoch));
|
||||
TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pHandle->execHandle.subType));
|
||||
if (pHandle->execHandle.subType == TOPIC_SUB_TYPE__COLUMN) {
|
||||
if (tEncodeCStr(pEncoder, pHandle->execHandle.execCol.qmsg) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pHandle->execHandle.execCol.qmsg));
|
||||
} else if (pHandle->execHandle.subType == TOPIC_SUB_TYPE__DB) {
|
||||
int32_t size = taosHashGetSize(pHandle->execHandle.execDb.pFilterOutTbUid);
|
||||
if (tEncodeI32(pEncoder, size) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tEncodeI32(pEncoder, size));
|
||||
void* pIter = NULL;
|
||||
pIter = taosHashIterate(pHandle->execHandle.execDb.pFilterOutTbUid, pIter);
|
||||
while (pIter) {
|
||||
int64_t* tbUid = (int64_t*)taosHashGetKey(pIter, NULL);
|
||||
if (tEncodeI64(pEncoder, *tbUid) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tEncodeI64(pEncoder, *tbUid));
|
||||
pIter = taosHashIterate(pHandle->execHandle.execDb.pFilterOutTbUid, pIter);
|
||||
}
|
||||
} else if (pHandle->execHandle.subType == TOPIC_SUB_TYPE__TABLE) {
|
||||
if (tEncodeI64(pEncoder, pHandle->execHandle.execTb.suid) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pHandle->execHandle.execTb.suid));
|
||||
if (pHandle->execHandle.execTb.qmsg != NULL) {
|
||||
if (tEncodeCStr(pEncoder, pHandle->execHandle.execTb.qmsg) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pHandle->execHandle.execTb.qmsg));
|
||||
}
|
||||
}
|
||||
tEndEncode(pEncoder);
|
||||
return pEncoder->pos;
|
||||
_exit:
|
||||
if (code) {
|
||||
return code;
|
||||
} else {
|
||||
return pEncoder->pos;
|
||||
}
|
||||
}
|
||||
|
||||
int32_t tDecodeSTqHandle(SDecoder* pDecoder, STqHandle* pHandle) {
|
||||
if (tStartDecode(pDecoder) < 0) return -1;
|
||||
if (tDecodeCStrTo(pDecoder, pHandle->subKey) < 0) return -1;
|
||||
if (tDecodeI8(pDecoder, &pHandle->fetchMeta) < 0) return -1;
|
||||
if (tDecodeI64(pDecoder, &pHandle->consumerId) < 0) return -1;
|
||||
if (tDecodeI64(pDecoder, &pHandle->snapshotVer) < 0) return -1;
|
||||
if (tDecodeI32(pDecoder, &pHandle->epoch) < 0) return -1;
|
||||
if (tDecodeI8(pDecoder, &pHandle->execHandle.subType) < 0) return -1;
|
||||
int32_t code = 0;
|
||||
int32_t lino;
|
||||
|
||||
TAOS_CHECK_EXIT(tStartDecode(pDecoder));
|
||||
TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, pHandle->subKey));
|
||||
TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pHandle->fetchMeta));
|
||||
TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pHandle->consumerId));
|
||||
TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pHandle->snapshotVer));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pHandle->epoch));
|
||||
TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pHandle->execHandle.subType));
|
||||
if (pHandle->execHandle.subType == TOPIC_SUB_TYPE__COLUMN) {
|
||||
if (tDecodeCStrAlloc(pDecoder, &pHandle->execHandle.execCol.qmsg) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tDecodeCStrAlloc(pDecoder, &pHandle->execHandle.execCol.qmsg));
|
||||
} else if (pHandle->execHandle.subType == TOPIC_SUB_TYPE__DB) {
|
||||
pHandle->execHandle.execDb.pFilterOutTbUid =
|
||||
taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_ENTRY_LOCK);
|
||||
if (pHandle->execHandle.execDb.pFilterOutTbUid == NULL) return -1;
|
||||
if (pHandle->execHandle.execDb.pFilterOutTbUid == NULL) {
|
||||
TAOS_CHECK_EXIT(terrno);
|
||||
}
|
||||
int32_t size = 0;
|
||||
if (tDecodeI32(pDecoder, &size) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &size));
|
||||
for (int32_t i = 0; i < size; i++) {
|
||||
int64_t tbUid = 0;
|
||||
if (tDecodeI64(pDecoder, &tbUid) < 0) return -1;
|
||||
if (taosHashPut(pHandle->execHandle.execDb.pFilterOutTbUid, &tbUid, sizeof(int64_t), NULL, 0) != 0) return -1;
|
||||
TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &tbUid));
|
||||
TAOS_CHECK_EXIT(taosHashPut(pHandle->execHandle.execDb.pFilterOutTbUid, &tbUid, sizeof(int64_t), NULL, 0));
|
||||
}
|
||||
} else if (pHandle->execHandle.subType == TOPIC_SUB_TYPE__TABLE) {
|
||||
if (tDecodeI64(pDecoder, &pHandle->execHandle.execTb.suid) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pHandle->execHandle.execTb.suid));
|
||||
if (!tDecodeIsEnd(pDecoder)) {
|
||||
if (tDecodeCStrAlloc(pDecoder, &pHandle->execHandle.execTb.qmsg) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tDecodeCStrAlloc(pDecoder, &pHandle->execHandle.execTb.qmsg));
|
||||
}
|
||||
}
|
||||
tEndDecode(pDecoder);
|
||||
return 0;
|
||||
|
||||
_exit:
|
||||
return code;
|
||||
}
|
||||
|
||||
int32_t tqMetaDecodeCheckInfo(STqCheckInfo* info, void* pVal, int32_t vLen) {
|
||||
|
|
|
@ -6437,63 +6437,74 @@ int32_t blockDistFunction(SqlFunctionCtx* pCtx) {
|
|||
|
||||
int32_t tSerializeBlockDistInfo(void* buf, int32_t bufLen, const STableBlockDistInfo* pInfo) {
|
||||
SEncoder encoder = {0};
|
||||
int32_t code = 0;
|
||||
int32_t lino;
|
||||
int32_t tlen;
|
||||
tEncoderInit(&encoder, buf, bufLen);
|
||||
|
||||
if (tStartEncode(&encoder) < 0) return -1;
|
||||
if (tEncodeU32(&encoder, pInfo->rowSize) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tStartEncode(&encoder));
|
||||
TAOS_CHECK_EXIT(tEncodeU32(&encoder, pInfo->rowSize));
|
||||
|
||||
if (tEncodeU16(&encoder, pInfo->numOfFiles) < 0) return -1;
|
||||
if (tEncodeU32(&encoder, pInfo->numOfBlocks) < 0) return -1;
|
||||
if (tEncodeU32(&encoder, pInfo->numOfTables) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tEncodeU16(&encoder, pInfo->numOfFiles));
|
||||
TAOS_CHECK_EXIT(tEncodeU32(&encoder, pInfo->numOfBlocks));
|
||||
TAOS_CHECK_EXIT(tEncodeU32(&encoder, pInfo->numOfTables));
|
||||
|
||||
if (tEncodeU64(&encoder, pInfo->totalSize) < 0) return -1;
|
||||
if (tEncodeU64(&encoder, pInfo->totalRows) < 0) return -1;
|
||||
if (tEncodeI32(&encoder, pInfo->maxRows) < 0) return -1;
|
||||
if (tEncodeI32(&encoder, pInfo->minRows) < 0) return -1;
|
||||
if (tEncodeI32(&encoder, pInfo->defMaxRows) < 0) return -1;
|
||||
if (tEncodeI32(&encoder, pInfo->defMinRows) < 0) return -1;
|
||||
if (tEncodeU32(&encoder, pInfo->numOfInmemRows) < 0) return -1;
|
||||
if (tEncodeU32(&encoder, pInfo->numOfSttRows) < 0) return -1;
|
||||
if (tEncodeU32(&encoder, pInfo->numOfVgroups) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tEncodeU64(&encoder, pInfo->totalSize));
|
||||
TAOS_CHECK_EXIT(tEncodeU64(&encoder, pInfo->totalRows));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pInfo->maxRows));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pInfo->minRows));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pInfo->defMaxRows));
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pInfo->defMinRows));
|
||||
TAOS_CHECK_EXIT(tEncodeU32(&encoder, pInfo->numOfInmemRows));
|
||||
TAOS_CHECK_EXIT(tEncodeU32(&encoder, pInfo->numOfSttRows));
|
||||
TAOS_CHECK_EXIT(tEncodeU32(&encoder, pInfo->numOfVgroups));
|
||||
|
||||
for (int32_t i = 0; i < tListLen(pInfo->blockRowsHisto); ++i) {
|
||||
if (tEncodeI32(&encoder, pInfo->blockRowsHisto[i]) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tEncodeI32(&encoder, pInfo->blockRowsHisto[i]));
|
||||
}
|
||||
|
||||
tEndEncode(&encoder);
|
||||
|
||||
int32_t tlen = encoder.pos;
|
||||
_exit:
|
||||
if (code) {
|
||||
tlen = code;
|
||||
} else {
|
||||
tlen = encoder.pos;
|
||||
}
|
||||
tEncoderClear(&encoder);
|
||||
return tlen;
|
||||
}
|
||||
|
||||
int32_t tDeserializeBlockDistInfo(void* buf, int32_t bufLen, STableBlockDistInfo* pInfo) {
|
||||
SDecoder decoder = {0};
|
||||
int32_t code = 0;
|
||||
int32_t lino;
|
||||
tDecoderInit(&decoder, buf, bufLen);
|
||||
|
||||
if (tStartDecode(&decoder) < 0) return -1;
|
||||
if (tDecodeU32(&decoder, &pInfo->rowSize) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tStartDecode(&decoder));
|
||||
TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pInfo->rowSize));
|
||||
|
||||
if (tDecodeU16(&decoder, &pInfo->numOfFiles) < 0) return -1;
|
||||
if (tDecodeU32(&decoder, &pInfo->numOfBlocks) < 0) return -1;
|
||||
if (tDecodeU32(&decoder, &pInfo->numOfTables) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tDecodeU16(&decoder, &pInfo->numOfFiles));
|
||||
TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pInfo->numOfBlocks));
|
||||
TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pInfo->numOfTables));
|
||||
|
||||
if (tDecodeU64(&decoder, &pInfo->totalSize) < 0) return -1;
|
||||
if (tDecodeU64(&decoder, &pInfo->totalRows) < 0) return -1;
|
||||
if (tDecodeI32(&decoder, &pInfo->maxRows) < 0) return -1;
|
||||
if (tDecodeI32(&decoder, &pInfo->minRows) < 0) return -1;
|
||||
if (tDecodeI32(&decoder, &pInfo->defMaxRows) < 0) return -1;
|
||||
if (tDecodeI32(&decoder, &pInfo->defMinRows) < 0) return -1;
|
||||
if (tDecodeU32(&decoder, &pInfo->numOfInmemRows) < 0) return -1;
|
||||
if (tDecodeU32(&decoder, &pInfo->numOfSttRows) < 0) return -1;
|
||||
if (tDecodeU32(&decoder, &pInfo->numOfVgroups) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pInfo->totalSize));
|
||||
TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pInfo->totalRows));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pInfo->maxRows));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pInfo->minRows));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pInfo->defMaxRows));
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pInfo->defMinRows));
|
||||
TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pInfo->numOfInmemRows));
|
||||
TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pInfo->numOfSttRows));
|
||||
TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pInfo->numOfVgroups));
|
||||
|
||||
for (int32_t i = 0; i < tListLen(pInfo->blockRowsHisto); ++i) {
|
||||
if (tDecodeI32(&decoder, &pInfo->blockRowsHisto[i]) < 0) return -1;
|
||||
TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pInfo->blockRowsHisto[i]));
|
||||
}
|
||||
|
||||
_exit:
|
||||
tDecoderClear(&decoder);
|
||||
return 0;
|
||||
return code;
|
||||
}
|
||||
|
||||
int32_t blockDistFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue