enh: exclude sys tbl for time series
This commit is contained in:
parent
88fdeca5cf
commit
d0a046c7a3
|
@ -136,6 +136,7 @@ int32_t metaPutTbGroupToCache(void *pVnode, uint64_t suid, const void *pKey, in
|
||||||
bool metaTbInFilterCache(void *pVnode, void* key, int8_t type);
|
bool metaTbInFilterCache(void *pVnode, void* key, int8_t type);
|
||||||
int32_t metaPutTbToFilterCache(void *pVnode, void* key, int8_t type);
|
int32_t metaPutTbToFilterCache(void *pVnode, void* key, int8_t type);
|
||||||
int32_t metaSizeOfTbFilterCache(void *pVnode, int8_t type);
|
int32_t metaSizeOfTbFilterCache(void *pVnode, int8_t type);
|
||||||
|
int32_t metaInitTbFilterCache(void *pVnode);
|
||||||
|
|
||||||
int32_t metaGetStbStats(void *pVnode, int64_t uid, int64_t *numOfTables, int32_t *numOfCols);
|
int32_t metaGetStbStats(void *pVnode, int64_t uid, int64_t *numOfTables, int32_t *numOfCols);
|
||||||
|
|
||||||
|
|
|
@ -179,11 +179,15 @@ int32_t metaCacheOpen(SMeta* pMeta) {
|
||||||
goto _err2;
|
goto _err2;
|
||||||
}
|
}
|
||||||
|
|
||||||
pCache->STbFilterCache.pStbName = taosHashInit(0, taosGetDefaultHashFunction(TSDB_DATA_TYPE_VARCHAR), false, HASH_NO_LOCK);
|
pCache->STbFilterCache.pStbName =
|
||||||
|
taosHashInit(0, taosGetDefaultHashFunction(TSDB_DATA_TYPE_VARCHAR), false, HASH_NO_LOCK);
|
||||||
if (pCache->STbFilterCache.pStbName == NULL) {
|
if (pCache->STbFilterCache.pStbName == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
goto _err2;
|
goto _err2;
|
||||||
}
|
}
|
||||||
|
if ((code = metaInitTbFilterCache(pMeta->pVnode)) != 0) {
|
||||||
|
goto _err2;
|
||||||
|
}
|
||||||
|
|
||||||
pMeta->pCache = pCache;
|
pMeta->pCache = pCache;
|
||||||
return code;
|
return code;
|
||||||
|
|
|
@ -28,7 +28,7 @@ static int metaSaveToSkmDb(SMeta *pMeta, const SMetaEntry *pME);
|
||||||
static int metaUpdateCtbIdx(SMeta *pMeta, const SMetaEntry *pME);
|
static int metaUpdateCtbIdx(SMeta *pMeta, const SMetaEntry *pME);
|
||||||
static int metaUpdateSuidIdx(SMeta *pMeta, const SMetaEntry *pME);
|
static int metaUpdateSuidIdx(SMeta *pMeta, const SMetaEntry *pME);
|
||||||
static int metaUpdateTagIdx(SMeta *pMeta, const SMetaEntry *pCtbEntry);
|
static int metaUpdateTagIdx(SMeta *pMeta, const SMetaEntry *pCtbEntry);
|
||||||
static int metaDropTableByUid(SMeta *pMeta, tb_uid_t uid, int *type, tb_uid_t *pSuid);
|
static int metaDropTableByUid(SMeta *pMeta, tb_uid_t uid, int *type, tb_uid_t *pSuid, int8_t *pSysTbl);
|
||||||
static void metaDestroyTagIdxKey(STagIdxKey *pTagIdxKey);
|
static void metaDestroyTagIdxKey(STagIdxKey *pTagIdxKey);
|
||||||
// opt ins_tables query
|
// opt ins_tables query
|
||||||
static int metaUpdateBtimeIdx(SMeta *pMeta, const SMetaEntry *pME);
|
static int metaUpdateBtimeIdx(SMeta *pMeta, const SMetaEntry *pME);
|
||||||
|
@ -307,7 +307,7 @@ int metaDropSTable(SMeta *pMeta, int64_t verison, SVDropStbReq *pReq, SArray *tb
|
||||||
|
|
||||||
for (int32_t iChild = 0; iChild < taosArrayGetSize(tbUidList); iChild++) {
|
for (int32_t iChild = 0; iChild < taosArrayGetSize(tbUidList); iChild++) {
|
||||||
tb_uid_t uid = *(tb_uid_t *)taosArrayGet(tbUidList, iChild);
|
tb_uid_t uid = *(tb_uid_t *)taosArrayGet(tbUidList, iChild);
|
||||||
metaDropTableByUid(pMeta, uid, NULL, NULL);
|
metaDropTableByUid(pMeta, uid, NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// drop super table
|
// drop super table
|
||||||
|
@ -863,6 +863,7 @@ int metaDropTable(SMeta *pMeta, int64_t version, SVDropTbReq *pReq, SArray *tbUi
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
tb_uid_t uid = 0;
|
tb_uid_t uid = 0;
|
||||||
tb_uid_t suid = 0;
|
tb_uid_t suid = 0;
|
||||||
|
int8_t sysTbl = 0;
|
||||||
int type;
|
int type;
|
||||||
|
|
||||||
rc = tdbTbGet(pMeta->pNameIdx, pReq->name, strlen(pReq->name) + 1, &pData, &nData);
|
rc = tdbTbGet(pMeta->pNameIdx, pReq->name, strlen(pReq->name) + 1, &pData, &nData);
|
||||||
|
@ -873,12 +874,12 @@ int metaDropTable(SMeta *pMeta, int64_t version, SVDropTbReq *pReq, SArray *tbUi
|
||||||
uid = *(tb_uid_t *)pData;
|
uid = *(tb_uid_t *)pData;
|
||||||
|
|
||||||
metaWLock(pMeta);
|
metaWLock(pMeta);
|
||||||
rc = metaDropTableByUid(pMeta, uid, &type, &suid);
|
rc = metaDropTableByUid(pMeta, uid, &type, &suid, &sysTbl);
|
||||||
metaULock(pMeta);
|
metaULock(pMeta);
|
||||||
|
|
||||||
if (rc < 0) goto _exit;
|
if (rc < 0) goto _exit;
|
||||||
|
|
||||||
if (type == TSDB_CHILD_TABLE) {
|
if (type == TSDB_CHILD_TABLE && !sysTbl) {
|
||||||
int32_t nCols = 0;
|
int32_t nCols = 0;
|
||||||
SVnodeStats *pStats = &pMeta->pVnode->config.vndStats;
|
SVnodeStats *pStats = &pMeta->pVnode->config.vndStats;
|
||||||
if (metaGetStbStats(pMeta->pVnode, suid, NULL, &nCols) == 0) {
|
if (metaGetStbStats(pMeta->pVnode, suid, NULL, &nCols) == 0) {
|
||||||
|
@ -909,9 +910,10 @@ void metaDropTables(SMeta *pMeta, SArray *tbUids) {
|
||||||
for (int i = 0; i < taosArrayGetSize(tbUids); ++i) {
|
for (int i = 0; i < taosArrayGetSize(tbUids); ++i) {
|
||||||
tb_uid_t uid = *(tb_uid_t *)taosArrayGet(tbUids, i);
|
tb_uid_t uid = *(tb_uid_t *)taosArrayGet(tbUids, i);
|
||||||
tb_uid_t suid = 0;
|
tb_uid_t suid = 0;
|
||||||
|
int8_t sysTbl = 0;
|
||||||
int type;
|
int type;
|
||||||
metaDropTableByUid(pMeta, uid, &type, &suid);
|
metaDropTableByUid(pMeta, uid, &type, &suid, &sysTbl);
|
||||||
if (type == TSDB_CHILD_TABLE && suid != 0 && suidHash) {
|
if (!sysTbl && type == TSDB_CHILD_TABLE && suid != 0 && suidHash) {
|
||||||
int64_t *pVal = tSimpleHashGet(suidHash, &suid, sizeof(tb_uid_t));
|
int64_t *pVal = tSimpleHashGet(suidHash, &suid, sizeof(tb_uid_t));
|
||||||
if (pVal) {
|
if (pVal) {
|
||||||
nCtbDropped = *pVal + 1;
|
nCtbDropped = *pVal + 1;
|
||||||
|
@ -1070,7 +1072,7 @@ static int metaDeleteTtl(SMeta *pMeta, const SMetaEntry *pME) {
|
||||||
return ttlMgrDeleteTtl(pMeta->pTtlMgr, &ctx);
|
return ttlMgrDeleteTtl(pMeta->pTtlMgr, &ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int metaDropTableByUid(SMeta *pMeta, tb_uid_t uid, int *type, tb_uid_t *pSuid) { //}, char* stbName) {
|
static int metaDropTableByUid(SMeta *pMeta, tb_uid_t uid, int *type, tb_uid_t *pSuid, int8_t* pSysTbl) {
|
||||||
void *pData = NULL;
|
void *pData = NULL;
|
||||||
int nData = 0;
|
int nData = 0;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
@ -1099,7 +1101,6 @@ static int metaDropTableByUid(SMeta *pMeta, tb_uid_t uid, int *type, tb_uid_t *p
|
||||||
void *tData = NULL;
|
void *tData = NULL;
|
||||||
int tLen = 0;
|
int tLen = 0;
|
||||||
|
|
||||||
|
|
||||||
if (tdbTbGet(pMeta->pUidIdx, &e.ctbEntry.suid, sizeof(tb_uid_t), &tData, &tLen) == 0) {
|
if (tdbTbGet(pMeta->pUidIdx, &e.ctbEntry.suid, sizeof(tb_uid_t), &tData, &tLen) == 0) {
|
||||||
STbDbKey tbDbKey = {.uid = e.ctbEntry.suid, .version = ((SUidIdxVal *)tData)[0].version};
|
STbDbKey tbDbKey = {.uid = e.ctbEntry.suid, .version = ((SUidIdxVal *)tData)[0].version};
|
||||||
if (tdbTbGet(pMeta->pTbDb, &tbDbKey, sizeof(tbDbKey), &tData, &tLen) == 0) {
|
if (tdbTbGet(pMeta->pTbDb, &tbDbKey, sizeof(tbDbKey), &tData, &tLen) == 0) {
|
||||||
|
@ -1109,6 +1110,8 @@ static int metaDropTableByUid(SMeta *pMeta, tb_uid_t uid, int *type, tb_uid_t *p
|
||||||
tDecoderInit(&tdc, tData, tLen);
|
tDecoderInit(&tdc, tData, tLen);
|
||||||
metaDecodeEntry(&tdc, &stbEntry);
|
metaDecodeEntry(&tdc, &stbEntry);
|
||||||
|
|
||||||
|
if (pSysTbl) *pSysTbl = metaTbInFilterCache(pMeta->pVnode, stbEntry.name, 1) ? 1 : 0;
|
||||||
|
|
||||||
SSchema *pTagColumn = NULL;
|
SSchema *pTagColumn = NULL;
|
||||||
SSchemaWrapper *pTagSchema = &stbEntry.stbEntry.schemaTag;
|
SSchemaWrapper *pTagSchema = &stbEntry.stbEntry.schemaTag;
|
||||||
if (pTagSchema->nCols == 1 && pTagSchema->pSchema[0].type == TSDB_DATA_TYPE_JSON) {
|
if (pTagSchema->nCols == 1 && pTagSchema->pSchema[0].type == TSDB_DATA_TYPE_JSON) {
|
||||||
|
|
|
@ -596,7 +596,8 @@ static int32_t vnodeGetTimeSeriesBlackList(SVnode *pVnode) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int32_t tbSize = 0;
|
int32_t tbSize = 0;
|
||||||
if (0 == strncmp(++dbName, "log", TSDB_DB_NAME_LEN)) {
|
++dbName;
|
||||||
|
if (0 == strncmp(dbName, "log", TSDB_DB_NAME_LEN)) {
|
||||||
tbSize = metaSizeOfTbFilterCache(pVnode, 0);
|
tbSize = metaSizeOfTbFilterCache(pVnode, 0);
|
||||||
if (tbSize < TK_LOG_STB_NUM) {
|
if (tbSize < TK_LOG_STB_NUM) {
|
||||||
for (int32_t i = 0; i < TK_LOG_STB_NUM; ++i) {
|
for (int32_t i = 0; i < TK_LOG_STB_NUM; ++i) {
|
||||||
|
@ -630,8 +631,31 @@ bool vnodeSkipTimeSeries(SVnode *pVnode, const char *stbName) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t metaInitTbFilterCache(void *pVnode) {
|
||||||
|
char *dbName = strchr(pVnode->config.dbname, '.');
|
||||||
|
if (!dbName) return 0;
|
||||||
|
++dbName;
|
||||||
|
if (0 == strncmp(dbName, "log", TSDB_DB_NAME_LEN)) {
|
||||||
|
for (int32_t i = 0; i < TK_LOG_STB_NUM; ++i) {
|
||||||
|
if (metaPutTbToFilterCache(pVnode, &tkLogStb[i], strlen(tkLogStb[i])) != 0) {
|
||||||
|
return terrno ? terrno : -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (0 == strncmp(dbName, "audit", TSDB_DB_NAME_LEN)) {
|
||||||
|
for (int32_t i = 0; i < TK_AUDIT_STB_NUM; ++i) {
|
||||||
|
if (metaPutTbToFilterCache(pVnode, &tkLogStb[i], strlen(tkAuditStb[i])) != 0) {
|
||||||
|
return terrno ? terrno : -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int32_t metaInitTbFilterCache(void *pVnode) { return 0; }
|
||||||
|
|
||||||
static bool vnodeTimeSeriesFilter(void *arg1, void *arg2) {
|
static bool vnodeTimeSeriesFilter(void *arg1, void *arg2) {
|
||||||
SVnode *pVnode = (SVnode *)arg1;
|
SVnode *pVnode = (SVnode *)arg1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue