TD-10431 update sdb for stable

This commit is contained in:
Shengliang Guan 2021-12-10 11:42:03 +08:00
parent a27bf43fab
commit b6ed305614
6 changed files with 48 additions and 26 deletions

View File

@ -159,7 +159,7 @@ typedef enum _mgmt_table {
TSDB_MGMT_TABLE_DNODE, TSDB_MGMT_TABLE_DNODE,
TSDB_MGMT_TABLE_MNODE, TSDB_MGMT_TABLE_MNODE,
TSDB_MGMT_TABLE_VGROUP, TSDB_MGMT_TABLE_VGROUP,
TSDB_MGMT_TABLE_METRIC, TSDB_MGMT_TABLE_STABLE,
TSDB_MGMT_TABLE_MODULE, TSDB_MGMT_TABLE_MODULE,
TSDB_MGMT_TABLE_QUERIES, TSDB_MGMT_TABLE_QUERIES,
TSDB_MGMT_TABLE_STREAMS, TSDB_MGMT_TABLE_STREAMS,

View File

@ -251,9 +251,9 @@ typedef struct SStableObj {
int32_t version; int32_t version;
int16_t numOfFields; int16_t numOfFields;
int16_t numOfTags; int16_t numOfTags;
SRWLatch lock;
SSchema *fieldSchema; SSchema *fieldSchema;
SSchema *tagSchema; SSchema *tagSchema;
char pCont[];
} SStableObj; } SStableObj;
typedef struct SFuncObj { typedef struct SFuncObj {

View File

@ -270,7 +270,7 @@ char *mndShowStr(int32_t showType) {
return "show mnodes"; return "show mnodes";
case TSDB_MGMT_TABLE_VGROUP: case TSDB_MGMT_TABLE_VGROUP:
return "show vgroups"; return "show vgroups";
case TSDB_MGMT_TABLE_METRIC: case TSDB_MGMT_TABLE_STABLE:
return "show stables"; return "show stables";
case TSDB_MGMT_TABLE_MODULE: case TSDB_MGMT_TABLE_MODULE:
return "show modules"; return "show modules";

View File

@ -33,6 +33,10 @@ static int32_t mndStableActionUpdate(SSdb *pSdb, SStableObj *pOldStable, SStabl
static int32_t mndProcessCreateStableMsg(SMnodeMsg *pMsg); static int32_t mndProcessCreateStableMsg(SMnodeMsg *pMsg);
static int32_t mndProcessAlterStableMsg(SMnodeMsg *pMsg); static int32_t mndProcessAlterStableMsg(SMnodeMsg *pMsg);
static int32_t mndProcessDropStableMsg(SMnodeMsg *pMsg); static int32_t mndProcessDropStableMsg(SMnodeMsg *pMsg);
static int32_t mndProcessCreateStableInRsp(SMnodeMsg *pMsg);
static int32_t mndProcessAlterStableInRsp(SMnodeMsg *pMsg);
static int32_t mndProcessDropStableInRsp(SMnodeMsg *pMsg);
static int32_t mndProcessStableMetaMsg(SMnodeMsg *pMsg);
static int32_t mndGetStableMeta(SMnodeMsg *pMsg, SShowObj *pShow, STableMetaMsg *pMeta); static int32_t mndGetStableMeta(SMnodeMsg *pMsg, SShowObj *pShow, STableMetaMsg *pMeta);
static int32_t mndRetrieveStables(SMnodeMsg *pMsg, SShowObj *pShow, char *data, int32_t rows); static int32_t mndRetrieveStables(SMnodeMsg *pMsg, SShowObj *pShow, char *data, int32_t rows);
static void mndCancelGetNextStable(SMnode *pMnode, void *pIter); static void mndCancelGetNextStable(SMnode *pMnode, void *pIter);
@ -46,13 +50,17 @@ int32_t mndInitStable(SMnode *pMnode) {
.updateFp = (SdbUpdateFp)mndStableActionUpdate, .updateFp = (SdbUpdateFp)mndStableActionUpdate,
.deleteFp = (SdbDeleteFp)mndStableActionDelete}; .deleteFp = (SdbDeleteFp)mndStableActionDelete};
mndSetMsgHandle(pMnode, TSDB_MSG_TYPE_CREATE_DB, mndProcessCreateStableMsg); mndSetMsgHandle(pMnode, TSDB_MSG_TYPE_CREATE_STABLE, mndProcessCreateStableMsg);
mndSetMsgHandle(pMnode, TSDB_MSG_TYPE_ALTER_DB, mndProcessAlterStableMsg); mndSetMsgHandle(pMnode, TSDB_MSG_TYPE_ALTER_STABLE, mndProcessAlterStableMsg);
mndSetMsgHandle(pMnode, TSDB_MSG_TYPE_DROP_DB, mndProcessDropStableMsg); mndSetMsgHandle(pMnode, TSDB_MSG_TYPE_DROP_STABLE, mndProcessDropStableMsg);
mndSetMsgHandle(pMnode, TSDB_MSG_TYPE_CREATE_STABLE_IN_RSP, mndProcessCreateStableInRsp);
mndSetMsgHandle(pMnode, TSDB_MSG_TYPE_ALTER_STABLE_IN_RSP, mndProcessAlterStableInRsp);
mndSetMsgHandle(pMnode, TSDB_MSG_TYPE_DROP_STABLE_IN_RSP, mndProcessDropStableInRsp);
mndSetMsgHandle(pMnode, TSDB_MSG_TYPE_TABLE_META, mndProcessStableMetaMsg);
mndAddShowMetaHandle(pMnode, TSDB_MGMT_TABLE_DB, mndGetStableMeta); mndAddShowMetaHandle(pMnode, TSDB_MGMT_TABLE_STABLE, mndGetStableMeta);
mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_DB, mndRetrieveStables); mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_STABLE, mndRetrieveStables);
mndAddShowFreeIterHandle(pMnode, TSDB_MGMT_TABLE_DB, mndCancelGetNextStable); mndAddShowFreeIterHandle(pMnode, TSDB_MGMT_TABLE_STABLE, mndCancelGetNextStable);
return sdbSetTable(pMnode->pSdb, table); return sdbSetTable(pMnode->pSdb, table);
} }
@ -119,8 +127,8 @@ static SSdbRow *mndStableActionDecode(SSdbRaw *pRaw) {
SDB_GET_INT16(pRaw, pRow, dataPos, &pStable->numOfFields) SDB_GET_INT16(pRaw, pRow, dataPos, &pStable->numOfFields)
SDB_GET_INT16(pRaw, pRow, dataPos, &pStable->numOfTags) SDB_GET_INT16(pRaw, pRow, dataPos, &pStable->numOfTags)
pStable->fieldSchema = (SSchema *)pStable->pCont; pStable->fieldSchema = calloc(pStable->numOfFields, sizeof(SSchema));
pStable->tagSchema = (SSchema *)(pStable->pCont + pStable->numOfFields * sizeof(SSchema)); pStable->tagSchema = calloc(pStable->numOfTags, sizeof(SSchema));
for (int32_t i = 0; i < pStable->numOfFields; ++i) { for (int32_t i = 0; i < pStable->numOfFields; ++i) {
SSchema *pSchema = &pStable->fieldSchema[i]; SSchema *pSchema = &pStable->fieldSchema[i];
@ -155,28 +163,42 @@ static int32_t mndStableActionDelete(SSdb *pSdb, SStableObj *pStable) {
static int32_t mndStableActionUpdate(SSdb *pSdb, SStableObj *pOldStable, SStableObj *pNewStable) { static int32_t mndStableActionUpdate(SSdb *pSdb, SStableObj *pOldStable, SStableObj *pNewStable) {
mTrace("stable:%s, perform update action", pOldStable->name); mTrace("stable:%s, perform update action", pOldStable->name);
memcpy(pOldStable->name, pNewStable->name, TSDB_TABLE_NAME_LEN); atomic_exchange_32(&pOldStable->updateTime, pNewStable->updateTime);
pOldStable->createdTime = pNewStable->createdTime; atomic_exchange_32(&pOldStable->version, pNewStable->version);
pOldStable->updateTime = pNewStable->updateTime;
pOldStable->uid = pNewStable->uid;
pOldStable->version = pNewStable->version;
pOldStable->numOfFields = pNewStable->numOfFields;
pOldStable->numOfTags = pNewStable->numOfTags;
pOldStable->createdTime = pNewStable->createdTime;
memcpy(pOldStable->pCont, pNewStable, sizeof(SDbObj)); taosWLockLatch(&pOldStable->lock);
// pStable->fieldSchema = pStable->pCont; int16_t numOfTags = pNewStable->numOfTags;
// pStable->tagSchema = pStable->pCont + pStable->numOfFields * sizeof(SSchema); int32_t tagSize = numOfTags * sizeof(SSchema);
int16_t numOfFields = pNewStable->numOfFields;
int32_t fieldSize = numOfFields * sizeof(SSchema);
if (pOldStable->numOfTags < numOfTags) {
pOldStable->tagSchema = malloc(tagSize);
}
if (pOldStable->numOfFields < numOfFields) {
pOldStable->fieldSchema = malloc(fieldSize);
}
memcpy(pOldStable->tagSchema, pNewStable->tagSchema, tagSize);
memcpy(pOldStable->fieldSchema, pNewStable->fieldSchema, fieldSize);
taosWUnLockLatch(&pOldStable->lock);
return 0; return 0;
} }
static int32_t mndProcessCreateStableMsg(SMnodeMsg *pMsg) { return 0; } static int32_t mndProcessCreateStableMsg(SMnodeMsg *pMsg) { return 0; }
static int32_t mndProcessCreateStableInRsp(SMnodeMsg *pMsg) { return 0; }
static int32_t mndProcessAlterStableMsg(SMnodeMsg *pMsg) { return 0; } static int32_t mndProcessAlterStableMsg(SMnodeMsg *pMsg) { return 0; }
static int32_t mndProcessAlterStableInRsp(SMnodeMsg *pMsg) { return 0; }
static int32_t mndProcessDropStableMsg(SMnodeMsg *pMsg) { return 0; } static int32_t mndProcessDropStableMsg(SMnodeMsg *pMsg) { return 0; }
static int32_t mndProcessDropStableInRsp(SMnodeMsg *pMsg) { return 0; }
static int32_t mndProcessStableMetaMsg(SMnodeMsg *pMsg) { return 0; }
static int32_t mndGetNumOfStables(SMnode *pMnode, char *dbName, int32_t *pNumOfStables) { static int32_t mndGetNumOfStables(SMnode *pMnode, char *dbName, int32_t *pNumOfStables) {
SSdb *pSdb = pMnode->pSdb; SSdb *pSdb = pMnode->pSdb;

View File

@ -112,13 +112,13 @@ cmd ::= SHOW dbPrefix(X) TABLES LIKE ids(Y). {
} }
cmd ::= SHOW dbPrefix(X) STABLES. { cmd ::= SHOW dbPrefix(X) STABLES. {
setShowOptions(pInfo, TSDB_MGMT_TABLE_METRIC, &X, 0); setShowOptions(pInfo, TSDB_MGMT_TABLE_STABLE, &X, 0);
} }
cmd ::= SHOW dbPrefix(X) STABLES LIKE ids(Y). { cmd ::= SHOW dbPrefix(X) STABLES LIKE ids(Y). {
SToken token; SToken token;
tSetDbName(&token, &X); tSetDbName(&token, &X);
setShowOptions(pInfo, TSDB_MGMT_TABLE_METRIC, &token, &Y); setShowOptions(pInfo, TSDB_MGMT_TABLE_STABLE, &token, &Y);
} }
cmd ::= SHOW dbPrefix(X) VGROUPS. { cmd ::= SHOW dbPrefix(X) VGROUPS. {