fix create stable error
This commit is contained in:
parent
e984a6d4ad
commit
a52213dd23
|
@ -37,8 +37,8 @@
|
||||||
#define TD_MSG_RANGE_CODE_
|
#define TD_MSG_RANGE_CODE_
|
||||||
#include "tmsgdef.h"
|
#include "tmsgdef.h"
|
||||||
|
|
||||||
#include "tlog.h"
|
|
||||||
#include "tcol.h"
|
#include "tcol.h"
|
||||||
|
#include "tlog.h"
|
||||||
|
|
||||||
#define DECODESQL() \
|
#define DECODESQL() \
|
||||||
do { \
|
do { \
|
||||||
|
@ -635,7 +635,7 @@ int32_t tDeserializeSMCreateStbReq(void *buf, int32_t bufLen, SMCreateStbReq *pR
|
||||||
if (tDecodeI32(&decoder, &pReq->ast1Len) < 0) return -1;
|
if (tDecodeI32(&decoder, &pReq->ast1Len) < 0) return -1;
|
||||||
if (tDecodeI32(&decoder, &pReq->ast2Len) < 0) return -1;
|
if (tDecodeI32(&decoder, &pReq->ast2Len) < 0) return -1;
|
||||||
|
|
||||||
pReq->pColumns = taosArrayInit(pReq->numOfColumns, sizeof(SField));
|
pReq->pColumns = taosArrayInit(pReq->numOfColumns, sizeof(SFieldWithOptions));
|
||||||
pReq->pTags = taosArrayInit(pReq->numOfTags, sizeof(SField));
|
pReq->pTags = taosArrayInit(pReq->numOfTags, sizeof(SField));
|
||||||
pReq->pFuncs = taosArrayInit(pReq->numOfFuncs, TSDB_FUNC_NAME_LEN);
|
pReq->pFuncs = taosArrayInit(pReq->numOfFuncs, TSDB_FUNC_NAME_LEN);
|
||||||
if (pReq->pColumns == NULL || pReq->pTags == NULL || pReq->pFuncs == NULL) {
|
if (pReq->pColumns == NULL || pReq->pTags == NULL || pReq->pFuncs == NULL) {
|
||||||
|
@ -7569,6 +7569,7 @@ int tEncodeSVCreateStbReq(SEncoder *pCoder, const SVCreateStbReq *pReq) {
|
||||||
}
|
}
|
||||||
if (tEncodeI8(pCoder, pReq->source) < 0) return -1;
|
if (tEncodeI8(pCoder, pReq->source) < 0) return -1;
|
||||||
|
|
||||||
|
if (tEncodeI8(pCoder, pReq->colCmpred) < 0) return -1;
|
||||||
if (tEncodeSColCmprWrapper(pCoder, &pReq->colCmpr) < 0) return -1;
|
if (tEncodeSColCmprWrapper(pCoder, &pReq->colCmpr) < 0) return -1;
|
||||||
|
|
||||||
tEndEncode(pCoder);
|
tEndEncode(pCoder);
|
||||||
|
@ -7594,6 +7595,9 @@ int tDecodeSVCreateStbReq(SDecoder *pCoder, SVCreateStbReq *pReq) {
|
||||||
if (!tDecodeIsEnd(pCoder)) {
|
if (!tDecodeIsEnd(pCoder)) {
|
||||||
if (tDecodeI8(pCoder, &pReq->source) < 0) return -1;
|
if (tDecodeI8(pCoder, &pReq->source) < 0) return -1;
|
||||||
|
|
||||||
|
if (!tDecodeIsEnd(pCoder)) {
|
||||||
|
if (tDecodeI8(pCoder, &pReq->colCmpred) < 0) return -1;
|
||||||
|
}
|
||||||
if (!tDecodeIsEnd(pCoder)) {
|
if (!tDecodeIsEnd(pCoder)) {
|
||||||
if (tDecodeSColCmprWrapperEx(pCoder, &pReq->colCmpr) < 0) return -1;
|
if (tDecodeSColCmprWrapperEx(pCoder, &pReq->colCmpr) < 0) return -1;
|
||||||
}
|
}
|
||||||
|
@ -7638,7 +7642,9 @@ int tEncodeSVCreateTbReq(SEncoder *pCoder, const SVCreateTbReq *pReq) {
|
||||||
if (tEncodeI32(pCoder, pReq->sqlLen) < 0) return -1;
|
if (tEncodeI32(pCoder, pReq->sqlLen) < 0) return -1;
|
||||||
if (tEncodeBinary(pCoder, pReq->sql, pReq->sqlLen) < 0) return -1;
|
if (tEncodeBinary(pCoder, pReq->sql, pReq->sqlLen) < 0) return -1;
|
||||||
}
|
}
|
||||||
if (tEncodeSColCmprWrapper(pCoder, &pReq->colCmpr) < 0) return -1;
|
if (pReq->type == TSDB_SUPER_TABLE || pReq->type == TSDB_NORMAL_TABLE) {
|
||||||
|
if (tEncodeSColCmprWrapper(pCoder, &pReq->colCmpr) < 0) return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// Encode Column Options: encode compress level
|
// Encode Column Options: encode compress level
|
||||||
|
|
||||||
|
@ -7690,10 +7696,10 @@ int tDecodeSVCreateTbReq(SDecoder *pCoder, SVCreateTbReq *pReq) {
|
||||||
if (pReq->sqlLen > 0) {
|
if (pReq->sqlLen > 0) {
|
||||||
if (tDecodeBinaryAlloc(pCoder, (void **)&pReq->sql, NULL) < 0) return -1;
|
if (tDecodeBinaryAlloc(pCoder, (void **)&pReq->sql, NULL) < 0) return -1;
|
||||||
}
|
}
|
||||||
|
if (pReq->type == TSDB_NORMAL_TABLE || pReq->type == TSDB_SUPER_TABLE)
|
||||||
if (!tDecodeIsEnd(pCoder)) {
|
if (!tDecodeIsEnd(pCoder)) {
|
||||||
if (tDecodeSColCmprWrapperEx(pCoder, &pReq->colCmpr) < 0) return -1;
|
if (tDecodeSColCmprWrapperEx(pCoder, &pReq->colCmpr) < 0) return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tEndDecode(pCoder);
|
tEndDecode(pCoder);
|
||||||
|
|
|
@ -310,6 +310,7 @@ _OVER:
|
||||||
taosMemoryFreeClear(pStb->pColumns);
|
taosMemoryFreeClear(pStb->pColumns);
|
||||||
taosMemoryFreeClear(pStb->pTags);
|
taosMemoryFreeClear(pStb->pTags);
|
||||||
taosMemoryFreeClear(pStb->comment);
|
taosMemoryFreeClear(pStb->comment);
|
||||||
|
taosMemoryFree(pStb->pCmpr);
|
||||||
}
|
}
|
||||||
taosMemoryFreeClear(pRow);
|
taosMemoryFreeClear(pRow);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -432,6 +433,8 @@ static int32_t mndStbActionUpdate(SSdb *pSdb, SStbObj *pOld, SStbObj *pNew) {
|
||||||
memcpy(pOld->pAst2, pNew->pAst2, pNew->ast2Len);
|
memcpy(pOld->pAst2, pNew->pAst2, pNew->ast2Len);
|
||||||
pOld->ast2Len = pNew->ast2Len;
|
pOld->ast2Len = pNew->ast2Len;
|
||||||
}
|
}
|
||||||
|
memcpy(pOld->pCmpr, pNew->pCmpr, pOld->numOfColumns * sizeof(SCmprObj));
|
||||||
|
|
||||||
taosWUnLockLatch(&pOld->lock);
|
taosWUnLockLatch(&pOld->lock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -494,10 +497,12 @@ void *mndBuildVCreateStbReq(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pStb, int3
|
||||||
req.schemaTag.version = pStb->tagVer;
|
req.schemaTag.version = pStb->tagVer;
|
||||||
req.schemaTag.pSchema = pStb->pTags;
|
req.schemaTag.pSchema = pStb->pTags;
|
||||||
|
|
||||||
|
req.colCmpred = 1;
|
||||||
SColCmprWrapper *pCmpr = &req.colCmpr;
|
SColCmprWrapper *pCmpr = &req.colCmpr;
|
||||||
pCmpr->version = pStb->colVer;
|
pCmpr->version = pStb->colVer;
|
||||||
pCmpr->nCols = pStb->numOfColumns;
|
pCmpr->nCols = pStb->numOfColumns;
|
||||||
for (int i = 0; pStb->numOfColumns; i++) {
|
req.colCmpr.pColCmpr = taosMemoryCalloc(1, sizeof(SColCmpr));
|
||||||
|
for (int32_t i = 0; i < pStb->numOfColumns; i++) {
|
||||||
SColCmpr *p = &pCmpr->pColCmpr[i];
|
SColCmpr *p = &pCmpr->pColCmpr[i];
|
||||||
p->alg = pStb->pCmpr[i].cmprAlg;
|
p->alg = pStb->pCmpr[i].cmprAlg;
|
||||||
p->id = pStb->pCmpr[i].colId;
|
p->id = pStb->pCmpr[i].colId;
|
||||||
|
@ -553,10 +558,12 @@ void *mndBuildVCreateStbReq(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pStb, int3
|
||||||
*pContLen = contLen;
|
*pContLen = contLen;
|
||||||
taosMemoryFreeClear(req.rsmaParam.qmsg[0]);
|
taosMemoryFreeClear(req.rsmaParam.qmsg[0]);
|
||||||
taosMemoryFreeClear(req.rsmaParam.qmsg[1]);
|
taosMemoryFreeClear(req.rsmaParam.qmsg[1]);
|
||||||
|
taosMemoryFreeClear(req.colCmpr.pColCmpr);
|
||||||
return pHead;
|
return pHead;
|
||||||
_err:
|
_err:
|
||||||
taosMemoryFreeClear(req.rsmaParam.qmsg[0]);
|
taosMemoryFreeClear(req.rsmaParam.qmsg[0]);
|
||||||
taosMemoryFreeClear(req.rsmaParam.qmsg[1]);
|
taosMemoryFreeClear(req.rsmaParam.qmsg[1]);
|
||||||
|
taosMemoryFreeClear(req.colCmpr.pColCmpr);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -619,7 +626,7 @@ int32_t mndCheckCreateStbReq(SMCreateStbReq *pCreate) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int32_t i = 0; i < pCreate->numOfColumns; ++i) {
|
for (int32_t i = 0; i < pCreate->numOfColumns; ++i) {
|
||||||
SField *pField1 = taosArrayGet(pCreate->pColumns, i);
|
SFieldWithOptions *pField1 = taosArrayGet(pCreate->pColumns, i);
|
||||||
if (pField1->type >= TSDB_DATA_TYPE_MAX) {
|
if (pField1->type >= TSDB_DATA_TYPE_MAX) {
|
||||||
terrno = TSDB_CODE_MND_INVALID_STB_OPTION;
|
terrno = TSDB_CODE_MND_INVALID_STB_OPTION;
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -861,8 +868,8 @@ int32_t mndBuildStbFromReq(SMnode *pMnode, SStbObj *pDst, SMCreateStbReq *pCreat
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int32_t i = 0; i < pDst->numOfColumns; ++i) {
|
for (int32_t i = 0; i < pDst->numOfColumns; ++i) {
|
||||||
SField *pField = taosArrayGet(pCreate->pColumns, i);
|
SFieldWithOptions *pField = taosArrayGet(pCreate->pColumns, i);
|
||||||
SSchema *pSchema = &pDst->pColumns[i];
|
SSchema *pSchema = &pDst->pColumns[i];
|
||||||
pSchema->type = pField->type;
|
pSchema->type = pField->type;
|
||||||
pSchema->bytes = pField->bytes;
|
pSchema->bytes = pField->bytes;
|
||||||
pSchema->flags = pField->flags;
|
pSchema->flags = pField->flags;
|
||||||
|
@ -883,10 +890,15 @@ int32_t mndBuildStbFromReq(SMnode *pMnode, SStbObj *pDst, SMCreateStbReq *pCreat
|
||||||
pSchema->colId = pDst->nextColId;
|
pSchema->colId = pDst->nextColId;
|
||||||
pDst->nextColId++;
|
pDst->nextColId++;
|
||||||
}
|
}
|
||||||
|
// set col compress
|
||||||
pDst->pCmpr = taosMemoryCalloc(1, pDst->numOfColumns * sizeof(SCmprObj));
|
pDst->pCmpr = taosMemoryCalloc(1, pDst->numOfColumns * sizeof(SCmprObj));
|
||||||
for (int32_t i = 0; i < pDst->numOfColumns; i++) {
|
for (int32_t i = 0; i < pDst->numOfColumns; i++) {
|
||||||
SCmprObj *p = &pDst->pCmpr[i];
|
SFieldWithOptions *pField = taosArrayGet(pCreate->pColumns, i);
|
||||||
|
SSchema *pSchema = &pDst->pColumns[i];
|
||||||
|
|
||||||
|
SCmprObj *pColCmpr = &pDst->pCmpr[i];
|
||||||
|
pColCmpr->colId = pSchema->colId;
|
||||||
|
pColCmpr->cmprAlg = pField->compress;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1126,8 +1138,8 @@ static int32_t mndProcessCreateStbReq(SRpcMsg *pReq) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo xsdebug
|
// todo xsdebug
|
||||||
terrno = TSDB_CODE_OPS_NOT_SUPPORT;
|
// terrno = TSDB_CODE_OPS_NOT_SUPPORT;
|
||||||
goto _OVER;
|
// goto _OVER;
|
||||||
|
|
||||||
mInfo("stb:%s, start to create", createReq.name);
|
mInfo("stb:%s, start to create", createReq.name);
|
||||||
if (mndCheckCreateStbReq(&createReq) != 0) {
|
if (mndCheckCreateStbReq(&createReq) != 0) {
|
||||||
|
|
|
@ -43,8 +43,6 @@ END:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int metaEncodeEntry(SEncoder *pCoder, const SMetaEntry *pME) {
|
int metaEncodeEntry(SEncoder *pCoder, const SMetaEntry *pME) {
|
||||||
if (tStartEncode(pCoder) < 0) return -1;
|
if (tStartEncode(pCoder) < 0) return -1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue