fix: add func_version to systable

This commit is contained in:
shenglian zhou 2023-04-06 15:58:53 +08:00
parent 4612d6d14b
commit 66c86a60d5
4 changed files with 20 additions and 10 deletions

View File

@ -116,6 +116,7 @@ static const SSysDbTableSchema userFuncSchema[] = {
{.name = "bufsize", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = false},
{.name = "func_language", .bytes = TSDB_TYPE_STR_MAX_LEN - 1 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = false},
{.name = "func_body", .bytes = TSDB_MAX_BINARY_LEN, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = false},
{.name = "func_version", .bytes = 4, .type = TSDB_DATA_TYPE_INT, .sysInfo = false},
};
static const SSysDbTableSchema userIdxSchema[] = {

View File

@ -1921,11 +1921,17 @@ int32_t tDeserializeSRetrieveFuncRsp(void *buf, int32_t bufLen, SRetrieveFuncRsp
pRsp->pFuncVersions = taosArrayInit(pRsp->numOfFuncs, sizeof(int32_t));
if (pRsp->pFuncVersions == NULL) return -1;
for (int32_t i = 0; i < pRsp->numOfFuncs; ++i) {
int32_t version = 0;
if (tDecodeI32(&decoder, &version) < 0) return -1;
taosArrayPush(pRsp->pFuncVersions, &version);
if (tDecodeIsEnd(&decoder)) {
for (int32_t i = 0; i < pRsp->numOfFuncs; ++i) {
int32_t version = 0;
taosArrayPush(pRsp->pFuncVersions, &version);
}
} else {
for (int32_t i = 0; i < pRsp->numOfFuncs; ++i) {
int32_t version = 0;
if (tDecodeI32(&decoder, &version) < 0) return -1;
taosArrayPush(pRsp->pFuncVersions, &version);
}
}
tEndDecode(&decoder);

View File

@ -447,7 +447,7 @@ typedef struct {
int32_t codeSize;
char* pComment;
char* pCode;
int32_t funcVersions;
int32_t funcVersion;
} SFuncObj;
typedef struct {

View File

@ -83,7 +83,7 @@ static SSdbRaw *mndFuncActionEncode(SFuncObj *pFunc) {
SDB_SET_BINARY(pRaw, dataPos, pFunc->pComment, pFunc->commentSize, _OVER)
}
SDB_SET_BINARY(pRaw, dataPos, pFunc->pCode, pFunc->codeSize, _OVER)
SDB_SET_INT32(pRaw, dataPos, pFunc->funcVersions, _OVER)
SDB_SET_INT32(pRaw, dataPos, pFunc->funcVersion, _OVER)
SDB_SET_RESERVE(pRaw, dataPos, SDB_FUNC_RESERVE_SIZE, _OVER)
SDB_SET_DATALEN(pRaw, dataPos, _OVER);
@ -147,7 +147,7 @@ static SSdbRow *mndFuncActionDecode(SSdbRaw *pRaw) {
SDB_GET_BINARY(pRaw, dataPos, pFunc->pCode, pFunc->codeSize, _OVER)
if(sver >= 2){
SDB_GET_INT32(pRaw, dataPos, &pFunc->funcVersions, _OVER)
SDB_GET_INT32(pRaw, dataPos, &pFunc->funcVersion, _OVER)
}
SDB_GET_RESERVE(pRaw, dataPos, SDB_FUNC_RESERVE_SIZE, _OVER)
@ -234,7 +234,7 @@ static int32_t mndCreateFunc(SMnode *pMnode, SRpcMsg *pReq, SCreateFuncReq *pCre
if(oldFunc == NULL){
goto _OVER;
}
func.funcVersions = oldFunc->funcVersions + 1;
func.funcVersion = oldFunc->funcVersion + 1;
mndReleaseFunc(pMnode, oldFunc);
}
@ -473,7 +473,7 @@ static int32_t mndProcessRetrieveFuncReq(SRpcMsg *pReq) {
}
taosArrayPush(retrieveRsp.pFuncInfos, &funcInfo);
taosArrayPush(retrieveRsp.pFuncVersions, &pFunc->funcVersions);
taosArrayPush(retrieveRsp.pFuncVersions, &pFunc->funcVersion);
mndReleaseFunc(pMnode, pFunc);
}
@ -590,6 +590,9 @@ static int32_t mndRetrieveFuncs(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl
colDataSetVal(pColInfo, numOfRows, (const char*)b4, false);
taosMemoryFree(b4);
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
colDataSetVal(pColInfo, numOfRows, (const char*)&pFunc->funcVersion, false);
numOfRows++;
sdbRelease(pSdb, pFunc);
}