fix: when update func, set createdtime to original time
This commit is contained in:
parent
765c09d59e
commit
6b68a373e9
|
@ -146,7 +146,7 @@ static SSdbRow *mndFuncActionDecode(SSdbRaw *pRaw) {
|
||||||
}
|
}
|
||||||
SDB_GET_BINARY(pRaw, dataPos, pFunc->pCode, pFunc->codeSize, _OVER)
|
SDB_GET_BINARY(pRaw, dataPos, pFunc->pCode, pFunc->codeSize, _OVER)
|
||||||
|
|
||||||
if(sver >= 2){
|
if (sver >= 2) {
|
||||||
SDB_GET_INT32(pRaw, dataPos, &pFunc->funcVersion, _OVER)
|
SDB_GET_INT32(pRaw, dataPos, &pFunc->funcVersion, _OVER)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,21 +194,21 @@ static int32_t mndFuncActionUpdate(SSdb *pSdb, SFuncObj *pOld, SFuncObj *pNew) {
|
||||||
pOld->outputLen = pNew->outputLen;
|
pOld->outputLen = pNew->outputLen;
|
||||||
pOld->outputType = pNew->outputType;
|
pOld->outputType = pNew->outputType;
|
||||||
|
|
||||||
if(pOld->pComment != NULL){
|
if (pOld->pComment != NULL) {
|
||||||
taosMemoryFree(pOld->pComment);
|
taosMemoryFree(pOld->pComment);
|
||||||
pOld->pComment = NULL;
|
pOld->pComment = NULL;
|
||||||
}
|
}
|
||||||
if(pNew->commentSize > 0 && pNew->pComment != NULL){
|
if (pNew->commentSize > 0 && pNew->pComment != NULL) {
|
||||||
pOld->commentSize = pNew->commentSize;
|
pOld->commentSize = pNew->commentSize;
|
||||||
pOld->pComment = taosMemoryMalloc(pOld->commentSize);
|
pOld->pComment = taosMemoryMalloc(pOld->commentSize);
|
||||||
memcpy(pOld->pComment, pNew->pComment, pOld->commentSize);
|
memcpy(pOld->pComment, pNew->pComment, pOld->commentSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pOld->pCode != NULL){
|
if (pOld->pCode != NULL) {
|
||||||
taosMemoryFree(pOld->pCode);
|
taosMemoryFree(pOld->pCode);
|
||||||
pOld->pCode = NULL;
|
pOld->pCode = NULL;
|
||||||
}
|
}
|
||||||
if(pNew->codeSize > 0 && pNew->pCode != NULL){
|
if (pNew->codeSize > 0 && pNew->pCode != NULL) {
|
||||||
pOld->codeSize = pNew->codeSize;
|
pOld->codeSize = pNew->codeSize;
|
||||||
pOld->pCode = taosMemoryMalloc(pOld->codeSize);
|
pOld->pCode = taosMemoryMalloc(pOld->codeSize);
|
||||||
memcpy(pOld->pCode, pNew->pCode, pOld->codeSize);
|
memcpy(pOld->pCode, pNew->pCode, pOld->codeSize);
|
||||||
|
@ -274,8 +274,9 @@ static int32_t mndCreateFunc(SMnode *pMnode, SRpcMsg *pReq, SCreateFuncReq *pCre
|
||||||
mInfo("trans:%d, used to create func:%s", pTrans->id, pCreate->name);
|
mInfo("trans:%d, used to create func:%s", pTrans->id, pCreate->name);
|
||||||
|
|
||||||
SFuncObj *oldFunc = mndAcquireFunc(pMnode, pCreate->name);
|
SFuncObj *oldFunc = mndAcquireFunc(pMnode, pCreate->name);
|
||||||
if(pCreate->orReplace == 1 && oldFunc != NULL){
|
if (pCreate->orReplace == 1 && oldFunc != NULL) {
|
||||||
func.funcVersion = oldFunc->funcVersion + 1;
|
func.funcVersion = oldFunc->funcVersion + 1;
|
||||||
|
func.createdTime = oldFunc->createdTime;
|
||||||
|
|
||||||
SSdbRaw *pRedoRaw = mndFuncActionEncode(oldFunc);
|
SSdbRaw *pRedoRaw = mndFuncActionEncode(oldFunc);
|
||||||
if (pRedoRaw == NULL || mndTransAppendRedolog(pTrans, pRedoRaw) != 0) goto _OVER;
|
if (pRedoRaw == NULL || mndTransAppendRedolog(pTrans, pRedoRaw) != 0) goto _OVER;
|
||||||
|
@ -288,8 +289,7 @@ static int32_t mndCreateFunc(SMnode *pMnode, SRpcMsg *pReq, SCreateFuncReq *pCre
|
||||||
SSdbRaw *pCommitRaw = mndFuncActionEncode(&func);
|
SSdbRaw *pCommitRaw = mndFuncActionEncode(&func);
|
||||||
if (pCommitRaw == NULL || mndTransAppendCommitlog(pTrans, pCommitRaw) != 0) goto _OVER;
|
if (pCommitRaw == NULL || mndTransAppendCommitlog(pTrans, pCommitRaw) != 0) goto _OVER;
|
||||||
if (sdbSetRawStatus(pCommitRaw, SDB_STATUS_READY) != 0) goto _OVER;
|
if (sdbSetRawStatus(pCommitRaw, SDB_STATUS_READY) != 0) goto _OVER;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
SSdbRaw *pRedoRaw = mndFuncActionEncode(&func);
|
SSdbRaw *pRedoRaw = mndFuncActionEncode(&func);
|
||||||
if (pRedoRaw == NULL || mndTransAppendRedolog(pTrans, pRedoRaw) != 0) goto _OVER;
|
if (pRedoRaw == NULL || mndTransAppendRedolog(pTrans, pRedoRaw) != 0) goto _OVER;
|
||||||
if (sdbSetRawStatus(pRedoRaw, SDB_STATUS_CREATING) != 0) goto _OVER;
|
if (sdbSetRawStatus(pRedoRaw, SDB_STATUS_CREATING) != 0) goto _OVER;
|
||||||
|
@ -308,7 +308,7 @@ static int32_t mndCreateFunc(SMnode *pMnode, SRpcMsg *pReq, SCreateFuncReq *pCre
|
||||||
code = 0;
|
code = 0;
|
||||||
|
|
||||||
_OVER:
|
_OVER:
|
||||||
if(oldFunc != NULL){
|
if (oldFunc != NULL) {
|
||||||
mndReleaseFunc(pMnode, oldFunc);
|
mndReleaseFunc(pMnode, oldFunc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -628,7 +628,7 @@ static int32_t mndRetrieveFuncs(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl
|
||||||
colDataSetVal(pColInfo, numOfRows, (const char *)&pFunc->bufSize, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pFunc->bufSize, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
char* language = "";
|
char *language = "";
|
||||||
if (pFunc->scriptType == TSDB_FUNC_SCRIPT_BIN_LIB) {
|
if (pFunc->scriptType == TSDB_FUNC_SCRIPT_BIN_LIB) {
|
||||||
language = "C";
|
language = "C";
|
||||||
} else if (pFunc->scriptType == TSDB_FUNC_SCRIPT_PYTHON) {
|
} else if (pFunc->scriptType == TSDB_FUNC_SCRIPT_PYTHON) {
|
||||||
|
@ -640,15 +640,17 @@ static int32_t mndRetrieveFuncs(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl
|
||||||
colDataSetVal(pColInfo, numOfRows, (const char *)varLang, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)varLang, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
int32_t varCodeLen = (pFunc->codeSize + VARSTR_HEADER_SIZE) > TSDB_MAX_BINARY_LEN ? TSDB_MAX_BINARY_LEN : pFunc->codeSize + VARSTR_HEADER_SIZE;
|
int32_t varCodeLen = (pFunc->codeSize + VARSTR_HEADER_SIZE) > TSDB_MAX_BINARY_LEN
|
||||||
char *b4 = taosMemoryMalloc(varCodeLen);
|
? TSDB_MAX_BINARY_LEN
|
||||||
|
: pFunc->codeSize + VARSTR_HEADER_SIZE;
|
||||||
|
char *b4 = taosMemoryMalloc(varCodeLen);
|
||||||
memcpy(varDataVal(b4), pFunc->pCode, varCodeLen - VARSTR_HEADER_SIZE);
|
memcpy(varDataVal(b4), pFunc->pCode, varCodeLen - VARSTR_HEADER_SIZE);
|
||||||
varDataSetLen(b4, varCodeLen - VARSTR_HEADER_SIZE);
|
varDataSetLen(b4, varCodeLen - VARSTR_HEADER_SIZE);
|
||||||
colDataSetVal(pColInfo, numOfRows, (const char*)b4, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)b4, false);
|
||||||
taosMemoryFree(b4);
|
taosMemoryFree(b4);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataSetVal(pColInfo, numOfRows, (const char*)&pFunc->funcVersion, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pFunc->funcVersion, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pFunc);
|
sdbRelease(pSdb, pFunc);
|
||||||
|
|
Loading…
Reference in New Issue