diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index faf920ead04b620e70ed5e72de0541be7215f9be..5ad488e214dbd54d6b42705a006eb5f95755e943 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -3127,6 +3127,13 @@ static int32_t translateCreateFunction(STranslateContext* pCxt, SCreateFunctionS return code; } +static int32_t translateDropFunction(STranslateContext* pCxt, SDropFunctionStmt* pStmt) { + SDropFuncReq req = {0}; + strcpy(req.name, pStmt->funcName); + req.igNotExists = pStmt->ignoreNotExists; + return buildCmdMsg(pCxt, TDMT_MND_DROP_FUNC, (FSerializeFunc)tSerializeSDropFuncReq, &req); +} + static int32_t translateGrant(STranslateContext* pCxt, SGrantStmt* pStmt) { SAlterUserReq req = {0}; if (PRIVILEGE_TYPE_TEST_MASK(pStmt->privileges, PRIVILEGE_TYPE_ALL) || @@ -3266,6 +3273,9 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) { case QUERY_NODE_CREATE_FUNCTION_STMT: code = translateCreateFunction(pCxt, (SCreateFunctionStmt*)pNode); break; + case QUERY_NODE_DROP_FUNCTION_STMT: + code = translateDropFunction(pCxt, (SDropFunctionStmt*)pNode); + break; case QUERY_NODE_GRANT_STMT: code = translateGrant(pCxt, (SGrantStmt*)pNode); break; diff --git a/tests/script/tsim/query/udf.sim b/tests/script/tsim/query/udf.sim index f583d91e6537a6edd6858f73d4b545e7b0c037ba..cabb88ea09e43650b89ccca91f2b3c920ae3237d 100644 --- a/tests/script/tsim/query/udf.sim +++ b/tests/script/tsim/query/udf.sim @@ -93,6 +93,18 @@ endi if $data00 != 2.645751311 then return -1 endi -#sql drop function udf1; -#sql drop function udf2; +sql drop function udf1; +sql show functions; +if $rows != 1 then + return -1 +endi +if $data00 != @udf2@ then + return -1 + endi +sql drop function udf2; +sql show functions; +if $rows != 0 then + return -1 +endi + system sh/exec.sh -n dnode1 -s stop -x SIGTERM