diff --git a/include/dnode/vnode/meta/meta.h b/include/dnode/vnode/meta/meta.h index df67b37686dbbc0b33ccc0afd79d06903f1f7a76..6060db02c4fc34cc0c5d479ebdd33a88fb6f65fd 100644 --- a/include/dnode/vnode/meta/meta.h +++ b/include/dnode/vnode/meta/meta.h @@ -75,7 +75,7 @@ SMeta *metaOpen(const char *path, const SMetaCfg *pOptions); void metaClose(SMeta *pMeta); void metaRemove(const char *path); int metaCreateTable(SMeta *pMeta, STbCfg *pTbCfg); -int metaDropTable(SMeta *pMeta, const void *pReq, const int len); +int metaDropTable(SMeta *pMeta, tb_uid_t uid); int metaCommit(SMeta *pMeta); // Options diff --git a/source/dnode/vnode/impl/inc/vnodeDef.h b/source/dnode/vnode/impl/inc/vnodeDef.h index 41943ce4f1c03991fa138258bd1547c9798ade5a..ee414eb5e20028653b5a4a90f1f150fc1217eb7c 100644 --- a/source/dnode/vnode/impl/inc/vnodeDef.h +++ b/source/dnode/vnode/impl/inc/vnodeDef.h @@ -23,9 +23,10 @@ #include "vnode.h" #include "vnodeBufferPool.h" +#include "vnodeCfg.h" #include "vnodeCommit.h" #include "vnodeFS.h" -#include "vnodeCfg.h" +#include "vnodeRequest.h" #include "vnodeStateMgr.h" #include "vnodeSync.h" diff --git a/source/dnode/vnode/impl/inc/vnodeRequest.h b/source/dnode/vnode/impl/inc/vnodeRequest.h index e7fdff092ed1d85f9e2a29524fef50822ce772dc..e31ce8a5ee01394994482118a9ff59a29201e965 100644 --- a/source/dnode/vnode/impl/inc/vnodeRequest.h +++ b/source/dnode/vnode/impl/inc/vnodeRequest.h @@ -22,8 +22,12 @@ extern "C" { #endif +// SVCreateTableReq int vnodeBuildCreateTableReq(const SVCreateTableReq *pReq, char *msg, int len); int vnodeParseCreateTableReq(const char *msg, int len, SVCreateTableReq *pReq); +// SVDropTableReq +int vnodeBuildDropTableReq(const SVDropTableReq *pReq, char *msg, int len); +int vnodeParseDropTableReq(const char *msg, int len, SVDropTableReq *pReq); #ifdef __cplusplus } diff --git a/source/dnode/vnode/impl/src/vnodeWrite.c b/source/dnode/vnode/impl/src/vnodeWrite.c index 2daee82b69e0f4828616d8d93252d61653f3f7cf..0d4250c60e3aae1516b1b87c088ae8125ceeec0e 100644 --- a/source/dnode/vnode/impl/src/vnodeWrite.c +++ b/source/dnode/vnode/impl/src/vnodeWrite.c @@ -38,6 +38,7 @@ int vnodeProcessWMsgs(SVnode *pVnode, SArray *pMsgs) { pMsg = *(SRpcMsg **)taosArrayGet(pMsgs, i); pVnodeReq = (SVnodeReq *)(pMsg->pCont); SVCreateTableReq ctReq; + SVDropTableReq dtReq; // Apply the request { @@ -49,7 +50,7 @@ int vnodeProcessWMsgs(SVnode *pVnode, SArray *pMsgs) { memcpy(ptr, pVnodeReq, pMsg->contLen); // todo: change the interface here - if (tqPushMsg(pVnode->pTq, pVnodeReq->req, pVnodeReq->ver) < 0) { + if (tqPushMsg(pVnode->pTq, ptr, pVnodeReq->ver) < 0) { // TODO: handle error } @@ -66,7 +67,13 @@ int vnodeProcessWMsgs(SVnode *pVnode, SArray *pMsgs) { // TODO: maybe need to clear the requst struct break; case TSDB_MSG_TYPE_DROP_TABLE: - /* code */ + if (vnodeParseDropTableReq(pVnodeReq->req, pMsg->contLen - sizeof(pVnodeReq->ver), &(dtReq)) < 0) { + // TODO: handle error + } + + if (metaDropTable(pVnode->pMeta, dtReq.uid) < 0) { + // TODO: handle error + } break; case TSDB_MSG_TYPE_SUBMIT: /* code */ diff --git a/source/dnode/vnode/meta/src/metaTable.c b/source/dnode/vnode/meta/src/metaTable.c index bed2140f51e39d8779b4e39583599757fb15ae10..fc0f19302f45c438836ae9e0e4afd0c5aa234efc 100644 --- a/source/dnode/vnode/meta/src/metaTable.c +++ b/source/dnode/vnode/meta/src/metaTable.c @@ -37,8 +37,7 @@ int metaCreateTable(SMeta *pMeta, STbCfg *pTbCfg) { return 0; } -int metaDropTable(SMeta *pMeta, const void *pCont, const int len) { - tb_uid_t uid; +int metaDropTable(SMeta *pMeta, tb_uid_t uid) { if (metaRemoveTableFromIdx(pMeta, uid) < 0) { // TODO: handle error return -1;