reduce the possible of first tag index name
This commit is contained in:
parent
e958e18726
commit
a66145a494
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#include "mndStb.h"
|
#include "mndStb.h"
|
||||||
|
#include "audit.h"
|
||||||
#include "mndDb.h"
|
#include "mndDb.h"
|
||||||
#include "mndDnode.h"
|
#include "mndDnode.h"
|
||||||
#include "mndIndex.h"
|
#include "mndIndex.h"
|
||||||
|
@ -31,7 +32,6 @@
|
||||||
#include "mndUser.h"
|
#include "mndUser.h"
|
||||||
#include "mndVgroup.h"
|
#include "mndVgroup.h"
|
||||||
#include "tname.h"
|
#include "tname.h"
|
||||||
#include "audit.h"
|
|
||||||
|
|
||||||
#define STB_VER_NUMBER 1
|
#define STB_VER_NUMBER 1
|
||||||
#define STB_RESERVE_SIZE 64
|
#define STB_RESERVE_SIZE 64
|
||||||
|
@ -858,7 +858,19 @@ int32_t mndBuildStbFromReq(SMnode *pMnode, SStbObj *pDst, SMCreateStbReq *pCreat
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
static int32_t mndGenIdxNameForFirstTag(char *fullname, char *dbname, char *tagname) {
|
||||||
|
char randStr[24] = {0};
|
||||||
|
|
||||||
|
int8_t start = 8;
|
||||||
|
int8_t end = sizeof(randStr) - 1;
|
||||||
|
// gen rand str len [base:end]
|
||||||
|
// note: ignore rand performance issues
|
||||||
|
int64_t len = taosRand() % (end - start + 1) + start;
|
||||||
|
|
||||||
|
taosRandStr2(randStr, len);
|
||||||
|
sprintf(fullname, "%s.%s_%s", dbname, tagname, randStr);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
static int32_t mndCreateStb(SMnode *pMnode, SRpcMsg *pReq, SMCreateStbReq *pCreate, SDbObj *pDb) {
|
static int32_t mndCreateStb(SMnode *pMnode, SRpcMsg *pReq, SMCreateStbReq *pCreate, SDbObj *pDb) {
|
||||||
SStbObj stbObj = {0};
|
SStbObj stbObj = {0};
|
||||||
int32_t code = -1;
|
int32_t code = -1;
|
||||||
|
@ -871,11 +883,8 @@ static int32_t mndCreateStb(SMnode *pMnode, SRpcMsg *pReq, SMCreateStbReq *pCrea
|
||||||
mInfo("trans:%d, used to create stb:%s", pTrans->id, pCreate->name);
|
mInfo("trans:%d, used to create stb:%s", pTrans->id, pCreate->name);
|
||||||
if (mndBuildStbFromReq(pMnode, &stbObj, pCreate, pDb) != 0) goto _OVER;
|
if (mndBuildStbFromReq(pMnode, &stbObj, pCreate, pDb) != 0) goto _OVER;
|
||||||
|
|
||||||
char randStr[24] = {0};
|
|
||||||
taosRandStr2(randStr, tListLen(randStr) - 1);
|
|
||||||
SSchema *pSchema = &(stbObj.pTags[0]);
|
SSchema *pSchema = &(stbObj.pTags[0]);
|
||||||
sprintf(fullIdxName, "%s.%s_%s", pDb->name, pSchema->name, randStr);
|
mndGenIdxNameForFirstTag(fullIdxName, pDb->name, pSchema->name);
|
||||||
|
|
||||||
SSIdx idx = {0};
|
SSIdx idx = {0};
|
||||||
if (mndAcquireGlobalIdx(pMnode, fullIdxName, SDB_IDX, &idx) == 0 && idx.pIdx != NULL) {
|
if (mndAcquireGlobalIdx(pMnode, fullIdxName, SDB_IDX, &idx) == 0 && idx.pIdx != NULL) {
|
||||||
terrno = TSDB_CODE_MND_TAG_INDEX_ALREADY_EXIST;
|
terrno = TSDB_CODE_MND_TAG_INDEX_ALREADY_EXIST;
|
||||||
|
@ -1066,9 +1075,8 @@ static int32_t mndBuildStbFromAlter(SStbObj *pStb, SStbObj *pDst, SMCreateStbReq
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char* mndAuditFieldTypeStr(int32_t type){
|
static char *mndAuditFieldTypeStr(int32_t type) {
|
||||||
switch (type)
|
switch (type) {
|
||||||
{
|
|
||||||
case TSDB_DATA_TYPE_NULL:
|
case TSDB_DATA_TYPE_NULL:
|
||||||
return "null";
|
return "null";
|
||||||
case TSDB_DATA_TYPE_BOOL:
|
case TSDB_DATA_TYPE_BOOL:
|
||||||
|
@ -1117,27 +1125,25 @@ static char* mndAuditFieldTypeStr(int32_t type){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mndAuditFieldStr(char* detail, SArray *arr, int32_t len, int32_t max){
|
static void mndAuditFieldStr(char *detail, SArray *arr, int32_t len, int32_t max) {
|
||||||
int32_t detialLen = strlen(detail);
|
int32_t detialLen = strlen(detail);
|
||||||
int32_t fieldLen = 0;
|
int32_t fieldLen = 0;
|
||||||
for (int32_t i = 0; i < len; ++i) {
|
for (int32_t i = 0; i < len; ++i) {
|
||||||
SField *pField = taosArrayGet(arr, i);
|
SField *pField = taosArrayGet(arr, i);
|
||||||
char field[TSDB_COL_NAME_LEN + 20] = {0};
|
char field[TSDB_COL_NAME_LEN + 20] = {0};
|
||||||
fieldLen = strlen(", ");
|
fieldLen = strlen(", ");
|
||||||
if(detialLen > 0 && detialLen < max-fieldLen-1) {
|
if (detialLen > 0 && detialLen < max - fieldLen - 1) {
|
||||||
strcat(detail, ", ");
|
strcat(detail, ", ");
|
||||||
detialLen += fieldLen;
|
detialLen += fieldLen;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sprintf(field, "%s:%s", pField->name, mndAuditFieldTypeStr(pField->type));
|
sprintf(field, "%s:%s", pField->name, mndAuditFieldTypeStr(pField->type));
|
||||||
fieldLen = strlen(field);
|
fieldLen = strlen(field);
|
||||||
if(detialLen < max-fieldLen-1) {
|
if (detialLen < max - fieldLen - 1) {
|
||||||
strcat(detail, field);
|
strcat(detail, field);
|
||||||
detialLen += fieldLen;
|
detialLen += fieldLen;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1252,14 +1258,17 @@ static int32_t mndProcessCreateStbReq(SRpcMsg *pReq) {
|
||||||
if (code == 0) code = TSDB_CODE_ACTION_IN_PROGRESS;
|
if (code == 0) code = TSDB_CODE_ACTION_IN_PROGRESS;
|
||||||
|
|
||||||
char detail[AUDIT_DETAIL_MAX] = {0};
|
char detail[AUDIT_DETAIL_MAX] = {0};
|
||||||
sprintf(detail, "colVer:%d, delay1:%" PRId64 ", delay2:%" PRId64 ", deleteMark1:%" PRId64 ", "
|
sprintf(detail,
|
||||||
"deleteMark2:%" PRId64 ", igExists:%d, numOfColumns:%d, numOfFuncs:%d, numOfTags:%d, "
|
"colVer:%d, delay1:%" PRId64 ", delay2:%" PRId64 ", deleteMark1:%" PRId64
|
||||||
"source:%d, suid:%" PRId64 ", tagVer:%d, ttl:%d, "
|
", "
|
||||||
|
"deleteMark2:%" PRId64
|
||||||
|
", igExists:%d, numOfColumns:%d, numOfFuncs:%d, numOfTags:%d, "
|
||||||
|
"source:%d, suid:%" PRId64
|
||||||
|
", tagVer:%d, ttl:%d, "
|
||||||
"watermark1:%" PRId64 ", watermark2:%" PRId64,
|
"watermark1:%" PRId64 ", watermark2:%" PRId64,
|
||||||
createReq.colVer, createReq.delay1, createReq.delay2, createReq.deleteMark1,
|
createReq.colVer, createReq.delay1, createReq.delay2, createReq.deleteMark1, createReq.deleteMark2,
|
||||||
createReq.deleteMark2, createReq.igExists, createReq.numOfColumns, createReq.numOfFuncs, createReq.numOfTags,
|
createReq.igExists, createReq.numOfColumns, createReq.numOfFuncs, createReq.numOfTags, createReq.source,
|
||||||
createReq.source, createReq.suid, createReq.tagVer, createReq.ttl,
|
createReq.suid, createReq.tagVer, createReq.ttl, createReq.watermark1, createReq.watermark2);
|
||||||
createReq.watermark1, createReq.watermark2);
|
|
||||||
|
|
||||||
mndAuditFieldStr(detail, createReq.pColumns, createReq.numOfColumns, AUDIT_DETAIL_MAX);
|
mndAuditFieldStr(detail, createReq.pColumns, createReq.numOfColumns, AUDIT_DETAIL_MAX);
|
||||||
mndAuditFieldStr(detail, createReq.pTags, createReq.numOfTags, AUDIT_DETAIL_MAX);
|
mndAuditFieldStr(detail, createReq.pTags, createReq.numOfTags, AUDIT_DETAIL_MAX);
|
||||||
|
@ -2338,8 +2347,7 @@ static int32_t mndProcessAlterStbReq(SRpcMsg *pReq) {
|
||||||
if (code == 0) code = TSDB_CODE_ACTION_IN_PROGRESS;
|
if (code == 0) code = TSDB_CODE_ACTION_IN_PROGRESS;
|
||||||
|
|
||||||
char detail[2000] = {0};
|
char detail[2000] = {0};
|
||||||
sprintf(detail, "alterType:%d, numOfFields:%d, ttl:%d" ,
|
sprintf(detail, "alterType:%d, numOfFields:%d, ttl:%d", alterReq.alterType, alterReq.numOfFields, alterReq.ttl);
|
||||||
alterReq.alterType, alterReq.numOfFields, alterReq.ttl);
|
|
||||||
|
|
||||||
SName name = {0};
|
SName name = {0};
|
||||||
tNameFromString(&name, alterReq.name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE);
|
tNameFromString(&name, alterReq.name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE);
|
||||||
|
@ -2608,8 +2616,7 @@ static int32_t mndProcessDropStbReq(SRpcMsg *pReq) {
|
||||||
if (code == 0) code = TSDB_CODE_ACTION_IN_PROGRESS;
|
if (code == 0) code = TSDB_CODE_ACTION_IN_PROGRESS;
|
||||||
|
|
||||||
char detail[2000] = {0};
|
char detail[2000] = {0};
|
||||||
sprintf(detail, "igNotExists:%d, source:%d" ,
|
sprintf(detail, "igNotExists:%d, source:%d", dropReq.igNotExists, dropReq.source);
|
||||||
dropReq.igNotExists, dropReq.source);
|
|
||||||
|
|
||||||
SName name = {0};
|
SName name = {0};
|
||||||
tNameFromString(&name, dropReq.name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE);
|
tNameFromString(&name, dropReq.name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE);
|
||||||
|
@ -3369,7 +3376,7 @@ static int32_t buildSysDbColsInfo(SSDataBlock *p, int8_t buildWhichDBs, char *tb
|
||||||
return p->info.rows;
|
return p->info.rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int8_t determineBuildColForWhichDBs(const char* db) {
|
static int8_t determineBuildColForWhichDBs(const char *db) {
|
||||||
int8_t buildWhichDBs;
|
int8_t buildWhichDBs;
|
||||||
if (!db[0])
|
if (!db[0])
|
||||||
buildWhichDBs = BUILD_COL_FOR_ALL_DB;
|
buildWhichDBs = BUILD_COL_FOR_ALL_DB;
|
||||||
|
|
|
@ -86,8 +86,9 @@ void taosRandStr(char* str, int32_t size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void taosRandStr2(char* str, int32_t size) {
|
void taosRandStr2(char* str, int32_t size) {
|
||||||
const char* set = "abcdefghijklmnopqrstuvwxyz0123456789";
|
|
||||||
int32_t len = 36;
|
const char* set = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ@";
|
||||||
|
int32_t len = strlen(set);
|
||||||
|
|
||||||
for (int32_t i = 0; i < size; ++i) {
|
for (int32_t i = 0; i < size; ++i) {
|
||||||
str[i] = set[taosRand() % len];
|
str[i] = set[taosRand() % len];
|
||||||
|
|
|
@ -216,7 +216,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_FUNC_BUFSIZE, "Invalid func bufSize"
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_FUNC_COMMENT, "Invalid func comment")
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_FUNC_COMMENT, "Invalid func comment")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_FUNC_RETRIEVE, "Invalid func retrieve msg")
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_FUNC_RETRIEVE, "Invalid func retrieve msg")
|
||||||
|
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_TAG_INDEX_ALREADY_EXIST, "index already exists")
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_TAG_INDEX_ALREADY_EXIST, "index already exists in db")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_TAG_INDEX_NOT_EXIST, "index not exist")
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_TAG_INDEX_NOT_EXIST, "index not exist")
|
||||||
|
|
||||||
|
|
||||||
|
@ -307,7 +307,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_TOO_MANY_STREAMS, "Too many streams")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_TARGET_TABLE, "Cannot write the same stable as other stream")
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_TARGET_TABLE, "Cannot write the same stable as other stream")
|
||||||
|
|
||||||
// mnode-sma
|
// mnode-sma
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_SMA_ALREADY_EXIST, "index already exists")
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_SMA_ALREADY_EXIST, "index already exists in db")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_SMA_NOT_EXIST, "index not exist")
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_SMA_NOT_EXIST, "index not exist")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_SMA_OPTION, "Invalid sma index option")
|
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_SMA_OPTION, "Invalid sma index option")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue