From 483809b3e8eee76e8a2aeefc85023582fbdc3c85 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 28 Dec 2021 13:58:53 +0800 Subject: [PATCH] more --- include/dnode/vnode/meta/meta.h | 5 ++++- include/util/tmacro.h | 2 ++ source/dnode/vnode/impl/src/vnodeQuery.c | 16 ++++++++++++++++ source/dnode/vnode/meta/src/metaBDBImpl.c | 16 ++++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/include/dnode/vnode/meta/meta.h b/include/dnode/vnode/meta/meta.h index fd6a6b7a40..067682af1a 100644 --- a/include/dnode/vnode/meta/meta.h +++ b/include/dnode/vnode/meta/meta.h @@ -18,8 +18,8 @@ #include "mallocator.h" #include "os.h" -#include "trow.h" #include "tmsg.h" +#include "trow.h" #ifdef __cplusplus extern "C" { @@ -47,6 +47,9 @@ int metaCreateTable(SMeta *pMeta, STbCfg *pTbCfg); int metaDropTable(SMeta *pMeta, tb_uid_t uid); int metaCommit(SMeta *pMeta); +// For Query +int metaGetTableInfo(SMeta *pMeta, const char *tbname, STableMetaMsg **ppMsg); + // Options void metaOptionsInit(SMetaCfg *pMetaCfg); void metaOptionsClear(SMetaCfg *pMetaCfg); diff --git a/include/util/tmacro.h b/include/util/tmacro.h index 5cca8a1062..5ed051c021 100644 --- a/include/util/tmacro.h +++ b/include/util/tmacro.h @@ -35,6 +35,8 @@ typedef int8_t td_mode_flag_t; #define TD_CHECK_AND_SET_MOD_CLEAR(FLAG) atomic_val_compare_exchange_8((FLAG), TD_MOD_UNCLEARD, TD_MOD_CLEARD) +#define TD_IS_NULL(PTR) ((PTR) == NULL) + #ifdef __cplusplus } #endif diff --git a/source/dnode/vnode/impl/src/vnodeQuery.c b/source/dnode/vnode/impl/src/vnodeQuery.c index 85a2de9dfa..4f6bcfce6b 100644 --- a/source/dnode/vnode/impl/src/vnodeQuery.c +++ b/source/dnode/vnode/impl/src/vnodeQuery.c @@ -32,6 +32,22 @@ int vnodeProcessFetchReq(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) { static int vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) { STableInfoMsg *pReq = (STableInfoMsg *)(pMsg->pCont); + STableMetaMsg *pRspMsg; + int ret; + + if (metaGetTableInfo(pVnode->pMeta, pReq->tableFname, &pRspMsg) < 0) { + return -1; + } + + *pRsp = malloc(sizeof(SRpcMsg)); + if (TD_IS_NULL(*pRsp)) { + terrno = TSDB_CODE_OUT_OF_MEMORY; + free(pMsg); + return -1; + } + // TODO + (*pRsp)->pCont = pRspMsg; + return 0; } \ No newline at end of file diff --git a/source/dnode/vnode/meta/src/metaBDBImpl.c b/source/dnode/vnode/meta/src/metaBDBImpl.c index dba6a7e403..e2137ebbdf 100644 --- a/source/dnode/vnode/meta/src/metaBDBImpl.c +++ b/source/dnode/vnode/meta/src/metaBDBImpl.c @@ -428,4 +428,20 @@ static void metaClearTbCfg(STbCfg *pTbCfg) { } else if (pTbCfg->type == META_CHILD_TABLE) { tfree(pTbCfg->ctbCfg.pTag); } +} + +/* ------------------------ FOR QUERY ------------------------ */ +int metaGetTableInfo(SMeta *pMeta, const char *tbname, STableMetaMsg **ppMsg) { + DBT key = {0}; + DBT value = {0}; + SMetaDB *pMetaDB = pMeta->pDB; + + key.data = tbname; + key.size = strlen(tbname) + 1; + + pMetaDB->pNameIdx->get(pMetaDB->pNameIdx, NULL, &key, &value, 0); + + // TODO: construct the message body + + return 0; } \ No newline at end of file