From 58a761648f88013655c694751c12982121fa518b Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Sat, 4 Feb 2023 22:09:24 +0800 Subject: [PATCH] opt index --- source/dnode/mnode/impl/inc/mndIndex.h | 23 +++++++++++++++ source/dnode/mnode/impl/src/mndIndex.c | 40 ++++++++++++++------------ source/dnode/mnode/impl/src/mndMain.c | 2 +- source/dnode/mnode/impl/src/mndSma.c | 17 +++++++++-- 4 files changed, 60 insertions(+), 22 deletions(-) create mode 100644 source/dnode/mnode/impl/inc/mndIndex.h diff --git a/source/dnode/mnode/impl/inc/mndIndex.h b/source/dnode/mnode/impl/inc/mndIndex.h new file mode 100644 index 0000000000..7c7c1ba7e8 --- /dev/null +++ b/source/dnode/mnode/impl/inc/mndIndex.h @@ -0,0 +1,23 @@ +#ifndef _TD_MND_IDX_H_ +#define _TD_MND_IDX_H_ + +#include "mndInt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int32_t mndInitIdx(SMnode *pMnode); +void mndCleanupIdx(SMnode *pMnode); +SIdxObj *mndAcquireIdx(SMnode *pMnode, char *Name); +void mndReleaseIdx(SMnode *pMnode, SIdxObj *pSma); +int32_t mndDropIdxsByStb(SMnode *pMnode, STrans *pTrans, SDbObj *pDb, SStbObj *pStb); +int32_t mndDropIdxsByDb(SMnode *pMnode, STrans *pTrans, SDbObj *pDb); +int32_t mndGetTableIdx(SMnode *pMnode, char *tbFName, STableIndexRsp *rsp, bool *exist); + +int32_t mndRetrieveTagIdx(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows); +#ifdef __cplusplus +} +#endif + +#endif /*_TD_MND_IDX_H_*/ \ No newline at end of file diff --git a/source/dnode/mnode/impl/src/mndIndex.c b/source/dnode/mnode/impl/src/mndIndex.c index 40a9d70144..96f4245c97 100644 --- a/source/dnode/mnode/impl/src/mndIndex.c +++ b/source/dnode/mnode/impl/src/mndIndex.c @@ -14,9 +14,9 @@ */ #define _DEFAULT_SOURCE +#include "mndIndex.h" #include "mndDb.h" #include "mndDnode.h" -#include "mndIdx.h" #include "mndInfoSchema.h" #include "mndMnode.h" #include "mndPrivilege.h" @@ -68,11 +68,12 @@ int32_t mndInitIdx(SMnode *pMnode) { // mndSetMsgHandle(pMnode, TDMT_MND_DROP_SMA, mndProcessDropIdxReq); // mndSetMsgHandle(pMnode, TDMT_VND_CREATE_SMA_RSP, mndTransProcessRsp); // mndSetMsgHandle(pMnode, TDMT_VND_DROP_SMA_RSP, mndTransProcessRsp); - mndSetMsgHandle(pMnode, TDMT_MND_GET_INDEX, mndProcessGetIdxReq); - mndSetMsgHandle(pMnode, TDMT_MND_GET_TABLE_INDEX, mndProcessGetTbIdxReq); + // mndSetMsgHandle(pMnode, TDMT_MND_GET_INDEX, mndProcessGetIdxReq); + // mndSetMsgHandle(pMnode, TDMT_MND_GET_TABLE_INDEX, mndProcessGetTbIdxReq); - mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_INDEX, mndRetrieveIdx); - mndAddShowFreeIterHandle(pMnode, TSDB_MGMT_TABLE_INDEX, mndCancelGetNextIdx); + // type same with sma + // mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_INDEX, mndRetrieveIdx); + // mndAddShowFreeIterHandle(pMnode, TSDB_MGMT_TABLE_INDEX, mndCancelGetNextIdx); return sdbSetTable(pMnode->pSdb, table); } @@ -612,11 +613,11 @@ static int32_t mndProcessGetTbIdxReq(SRpcMsg *pReq) { return 0; } -static int32_t mndRetrieveIdx(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) { +int32_t mndRetrieveTagIdx(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) { SMnode *pMnode = pReq->info.node; SSdb *pSdb = pMnode->pSdb; int32_t numOfRows = 0; - SSmaObj *pSma = NULL; + SIdxObj *pIdx = NULL; int32_t cols = 0; SDbObj *pDb = NULL; @@ -624,28 +625,28 @@ static int32_t mndRetrieveIdx(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBloc pDb = mndAcquireDb(pMnode, pShow->db); if (pDb == NULL) return 0; } - + int invalid = -1; while (numOfRows < rows) { - pShow->pIter = sdbFetch(pSdb, SDB_SMA, pShow->pIter, (void **)&pSma); + pShow->pIter = sdbFetch(pSdb, SDB_IDX, pShow->pIter, (void **)&pIdx); if (pShow->pIter == NULL) break; - if (NULL != pDb && pSma->dbUid != pDb->uid) { - sdbRelease(pSdb, pSma); + if (NULL != pDb && pIdx->dbUid != pDb->uid) { + sdbRelease(pSdb, pIdx); continue; } cols = 0; - SName smaName = {0}; - tNameFromString(&smaName, pSma->name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); + SName idxName = {0}; + tNameFromString(&idxName, pIdx->name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); char n1[TSDB_TABLE_FNAME_LEN + VARSTR_HEADER_SIZE] = {0}; - STR_TO_VARSTR(n1, (char *)tNameGetTableName(&smaName)); + STR_TO_VARSTR(n1, (char *)tNameGetTableName(&idxName)); char n2[TSDB_DB_FNAME_LEN + VARSTR_HEADER_SIZE] = {0}; - STR_TO_VARSTR(n2, (char *)mndGetDbStr(pSma->db)); + STR_TO_VARSTR(n2, (char *)mndGetDbStr(pIdx->db)); SName stbName = {0}; - tNameFromString(&stbName, pSma->stb, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); + tNameFromString(&stbName, pIdx->stb, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); char n3[TSDB_TABLE_FNAME_LEN + VARSTR_HEADER_SIZE] = {0}; STR_TO_VARSTR(n3, (char *)tNameGetTableName(&stbName)); @@ -659,13 +660,14 @@ static int32_t mndRetrieveIdx(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBloc colDataAppend(pColInfo, numOfRows, (const char *)n3, false); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - colDataAppend(pColInfo, numOfRows, (const char *)&pSma->dstVgId, false); + + colDataAppend(pColInfo, numOfRows, (const char *)&invalid, false); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); - colDataAppend(pColInfo, numOfRows, (const char *)&pSma->createdTime, false); + colDataAppend(pColInfo, numOfRows, (const char *)&pIdx->createdTime, false); numOfRows++; - sdbRelease(pSdb, pSma); + sdbRelease(pSdb, pIdx); } mndReleaseDb(pMnode, pDb); diff --git a/source/dnode/mnode/impl/src/mndMain.c b/source/dnode/mnode/impl/src/mndMain.c index 273cdc97e8..9bea1351de 100644 --- a/source/dnode/mnode/impl/src/mndMain.c +++ b/source/dnode/mnode/impl/src/mndMain.c @@ -21,7 +21,7 @@ #include "mndDnode.h" #include "mndFunc.h" #include "mndGrant.h" -#include "mndIdx.h" +#include "mndIndex.h" #include "mndInfoSchema.h" #include "mndMnode.h" #include "mndPerfSchema.h" diff --git a/source/dnode/mnode/impl/src/mndSma.c b/source/dnode/mnode/impl/src/mndSma.c index 90baf57c52..fd426c4b01 100644 --- a/source/dnode/mnode/impl/src/mndSma.c +++ b/source/dnode/mnode/impl/src/mndSma.c @@ -17,6 +17,7 @@ #include "mndSma.h" #include "mndDb.h" #include "mndDnode.h" +#include "mndIndex.h" #include "mndInfoSchema.h" #include "mndMnode.h" #include "mndPrivilege.h" @@ -46,6 +47,18 @@ static int32_t mndRetrieveSma(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlo static void mndCancelGetNextSma(SMnode *pMnode, void *pIter); static void mndDestroySmaObj(SSmaObj *pSmaObj); +// sma index and tag index +static int32_t mndRetrieveIdx(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rows) { + // TODO + int32_t read = mndRetrieveSma(pReq, pShow, pBlock, rows); + + read += mndRetrieveTagIdx(pReq, pShow, pBlock, rows - read); + + return read; +} +static void mndCancelGetNextIdx(SMnode *pMnode, void *pIter) { + // TODO +} int32_t mndInitSma(SMnode *pMnode) { SSdbTable table = { .sdbType = SDB_SMA, @@ -64,8 +77,8 @@ int32_t mndInitSma(SMnode *pMnode) { mndSetMsgHandle(pMnode, TDMT_MND_GET_INDEX, mndProcessGetSmaReq); mndSetMsgHandle(pMnode, TDMT_MND_GET_TABLE_INDEX, mndProcessGetTbSmaReq); - mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_INDEX, mndRetrieveSma); - mndAddShowFreeIterHandle(pMnode, TSDB_MGMT_TABLE_INDEX, mndCancelGetNextSma); + mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_INDEX, mndRetrieveIdx); + mndAddShowFreeIterHandle(pMnode, TSDB_MGMT_TABLE_INDEX, mndCancelGetNextIdx); return sdbSetTable(pMnode->pSdb, table); } -- GitLab