diff --git a/src/client/src/tscLocal.c b/src/client/src/tscLocal.c index 2da786d1d8..79fa1e28cc 100644 --- a/src/client/src/tscLocal.c +++ b/src/client/src/tscLocal.c @@ -56,7 +56,7 @@ static int32_t getToStringLength(const char *pData, int32_t length, int32_t type } break; case TSDB_DATA_TYPE_TIMESTAMP: case TSDB_DATA_TYPE_BIGINT: - len = sprintf(buf, "%" PRId64 "", *(int64_t *)pData); + len = sprintf(buf, "%" PRId64, *(int64_t *)pData); break; case TSDB_DATA_TYPE_BOOL: len = MAX_BOOL_TYPE_LENGTH; diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 5caa9048c3..a134410bc4 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -4540,11 +4540,13 @@ int32_t validateDNodeConfig(tDCLSQL* pOptions) { return TSDB_CODE_INVALID_SQL; } - const SDNodeDynConfOption DNODE_DYNAMIC_CFG_OPTIONS[14] = { - {"resetLog", 8}, {"resetQueryCache", 15}, {"dDebugFlag", 10}, {"rpcDebugFlag", 12}, - {"tmrDebugFlag", 12}, {"cDebugFlag", 10}, {"uDebugFlag", 10}, {"mDebugFlag", 10}, - {"sdbDebugFlag", 12}, {"httpDebugFlag", 13}, {"monitorDebugFlag", 16}, {"qDebugflag", 10}, - {"debugFlag", 9}, {"monitor", 7}}; + const int DNODE_DYNAMIC_CFG_OPTIONS_SIZE = 17; + const SDNodeDynConfOption DNODE_DYNAMIC_CFG_OPTIONS[] = { + {"resetLog", 8}, {"resetQueryCache", 15}, {"debugFlag", 9}, {"mDebugFlag", 10}, + {"dDebugFlag", 10}, {"sdbDebugFlag", 12}, {"vDebugFlag", 10}, {"cDebugFlag", 10}, + {"httpDebugFlag", 13}, {"monitorDebugFlag", 16}, {"rpcDebugFlag", 12}, {"uDebugFlag", 10}, + {"tmrDebugFlag", 12}, {"qDebugflag", 10}, {"sDebugflag", 10}, {"tsdbDebugFlag", 13}, + {"monitor", 7}}; SSQLToken* pOptionToken = &pOptions->a[1]; @@ -4556,8 +4558,8 @@ int32_t validateDNodeConfig(tDCLSQL* pOptions) { return TSDB_CODE_SUCCESS; } } - } else if ((strncasecmp(DNODE_DYNAMIC_CFG_OPTIONS[13].name, pOptionToken->z, pOptionToken->n) == 0) && - (DNODE_DYNAMIC_CFG_OPTIONS[13].len == pOptionToken->n)) { + } else if ((strncasecmp(DNODE_DYNAMIC_CFG_OPTIONS[DNODE_DYNAMIC_CFG_OPTIONS_SIZE - 1].name, pOptionToken->z, pOptionToken->n) == 0) && + (DNODE_DYNAMIC_CFG_OPTIONS[DNODE_DYNAMIC_CFG_OPTIONS_SIZE - 1].len == pOptionToken->n)) { SSQLToken* pValToken = &pOptions->a[2]; int32_t val = strtol(pValToken->z, NULL, 10); if (val != 0 && val != 1) { @@ -4573,7 +4575,7 @@ int32_t validateDNodeConfig(tDCLSQL* pOptions) { return TSDB_CODE_INVALID_SQL; } - for (int32_t i = 2; i < tListLen(DNODE_DYNAMIC_CFG_OPTIONS) - 1; ++i) { + for (int32_t i = 2; i < DNODE_DYNAMIC_CFG_OPTIONS_SIZE - 1; ++i) { const SDNodeDynConfOption* pOption = &DNODE_DYNAMIC_CFG_OPTIONS[i]; if ((strncasecmp(pOption->name, pOptionToken->z, pOptionToken->n) == 0) && (pOption->len == pOptionToken->n)) { diff --git a/src/client/src/tscStream.c b/src/client/src/tscStream.c index f42bf819ca..fd84a2b759 100644 --- a/src/client/src/tscStream.c +++ b/src/client/src/tscStream.c @@ -165,7 +165,7 @@ static void tscSetTimestampForRes(SSqlStream *pStream, SSqlObj *pSql) { if (timestamp != actualTimestamp) { // reset the timestamp of each agg point by using start time of each interval *((int64_t *)pRes->data) = actualTimestamp; - tscWarn("%p stream:%p, timestamp of points is:%" PRId64 ", reset to %" PRId64 "", pSql, pStream, timestamp, actualTimestamp); + tscWarn("%p stream:%p, timestamp of points is:%" PRId64 ", reset to %" PRId64, pSql, pStream, timestamp, actualTimestamp); } } @@ -287,10 +287,10 @@ static void tscSetRetryTimer(SSqlStream *pStream, SSqlObj *pSql, int64_t timer) return; } - tscTrace("%p stream:%p, next start at %" PRId64 ", in %" PRId64 "ms. delay:%" PRId64 "ms qrange %" PRId64 "-%" PRId64 "", pStream->pSql, pStream, + tscTrace("%p stream:%p, next start at %" PRId64 ", in %" PRId64 "ms. delay:%" PRId64 "ms qrange %" PRId64 "-%" PRId64, pStream->pSql, pStream, now + timer, timer, delay, pStream->stime, etime); } else { - tscTrace("%p stream:%p, next start at %" PRId64 ", in %" PRId64 "ms. delay:%" PRId64 "ms qrange %" PRId64 "-%" PRId64 "", pStream->pSql, pStream, + tscTrace("%p stream:%p, next start at %" PRId64 ", in %" PRId64 "ms. delay:%" PRId64 "ms qrange %" PRId64 "-%" PRId64, pStream->pSql, pStream, pStream->stime, timer, delay, pStream->stime - pStream->interval, pStream->stime - 1); } @@ -380,7 +380,7 @@ static void tscSetSlidingWindowInfo(SSqlObj *pSql, SSqlStream *pStream) { SQueryInfo* pQueryInfo = tscGetQueryInfoDetail(&pSql->cmd, 0); if (pQueryInfo->intervalTime < minIntervalTime) { - tscWarn("%p stream:%p, original sample interval:%ld too small, reset to:%" PRId64 "", pSql, pStream, + tscWarn("%p stream:%p, original sample interval:%ld too small, reset to:%" PRId64, pSql, pStream, pQueryInfo->intervalTime, minIntervalTime); pQueryInfo->intervalTime = minIntervalTime; } @@ -397,14 +397,14 @@ static void tscSetSlidingWindowInfo(SSqlObj *pSql, SSqlStream *pStream) { if (pQueryInfo->slidingTime == -1) { pQueryInfo->slidingTime = pQueryInfo->intervalTime; } else if (pQueryInfo->slidingTime < minSlidingTime) { - tscWarn("%p stream:%p, original sliding value:%" PRId64 " too small, reset to:%" PRId64 "", pSql, pStream, + tscWarn("%p stream:%p, original sliding value:%" PRId64 " too small, reset to:%" PRId64, pSql, pStream, pQueryInfo->slidingTime, minSlidingTime); pQueryInfo->slidingTime = minSlidingTime; } if (pQueryInfo->slidingTime > pQueryInfo->intervalTime) { - tscWarn("%p stream:%p, sliding value:%" PRId64 " can not be larger than interval range, reset to:%" PRId64 "", pSql, pStream, + tscWarn("%p stream:%p, sliding value:%" PRId64 " can not be larger than interval range, reset to:%" PRId64, pSql, pStream, pQueryInfo->slidingTime, pQueryInfo->intervalTime); pQueryInfo->slidingTime = pQueryInfo->intervalTime; @@ -433,11 +433,11 @@ static int64_t tscGetStreamStartTimestamp(SSqlObj *pSql, SSqlStream *pStream, in } else { // timewindow based aggregation stream if (stime == 0) { // no data in meter till now stime = ((int64_t)taosGetTimestamp(pStream->precision) / pStream->interval) * pStream->interval; - tscWarn("%p stream:%p, last timestamp:0, reset to:%" PRId64 "", pSql, pStream, stime); + tscWarn("%p stream:%p, last timestamp:0, reset to:%" PRId64, pSql, pStream, stime); } else { int64_t newStime = (stime / pStream->interval) * pStream->interval; if (newStime != stime) { - tscWarn("%p stream:%p, last timestamp:%" PRId64 ", reset to:%" PRId64 "", pSql, pStream, stime, newStime); + tscWarn("%p stream:%p, last timestamp:%" PRId64 ", reset to:%" PRId64, pSql, pStream, stime, newStime); stime = newStime; } } diff --git a/src/common/src/tglobal.c b/src/common/src/tglobal.c index c711aa25c3..6b348b7fc7 100644 --- a/src/common/src/tglobal.c +++ b/src/common/src/tglobal.c @@ -107,7 +107,6 @@ int32_t tsReplications = TSDB_DEFAULT_REPLICA_NUM; int16_t tsAffectedRowsMod = 0; int32_t tsNumOfMPeers = 3; int32_t tsMaxShellConns = 2000; -int32_t tsMaxTables = 100000; char tsDefaultDB[TSDB_DB_NAME_LEN] = {0}; char tsDefaultUser[64] = "root"; diff --git a/src/dnode/src/dnodeModule.c b/src/dnode/src/dnodeModule.c index 86193fcebc..f5c28c9573 100644 --- a/src/dnode/src/dnodeModule.c +++ b/src/dnode/src/dnodeModule.c @@ -114,18 +114,20 @@ void dnodeStartModules() { } void dnodeProcessModuleStatus(uint32_t moduleStatus) { - bool enableMgmtModule = moduleStatus & (1 << TSDB_MOD_MGMT); - if (!tsModule[TSDB_MOD_MGMT].enable && enableMgmtModule) { - dPrint("module status is received, start mgmt module", tsModuleStatus, moduleStatus); - tsModule[TSDB_MOD_MGMT].enable = true; - dnodeSetModuleStatus(TSDB_MOD_MGMT); - (*tsModule[TSDB_MOD_MGMT].startFp)(); - } + for (int32_t module = TSDB_MOD_MGMT; module < TSDB_MOD_HTTP; ++module) { + bool enableModule = moduleStatus & (1 << module); + if (!tsModule[module].enable && enableModule) { + dPrint("module status:%u is received, start %s module", tsModuleStatus, tsModule[module].name); + tsModule[module].enable = true; + dnodeSetModuleStatus(module); + (*tsModule[module].startFp)(); + } - if (tsModule[TSDB_MOD_MGMT].enable && !enableMgmtModule) { - dPrint("module status is received, stop mgmt module", tsModuleStatus, moduleStatus); - tsModule[TSDB_MOD_MGMT].enable = false; - dnodeUnSetModuleStatus(TSDB_MOD_MGMT); - (*tsModule[TSDB_MOD_MGMT].stopFp)(); + if (tsModule[module].enable && !enableModule) { + dPrint("module status:%u is received, stop %s module", tsModuleStatus, tsModule[module].name); + tsModule[module].enable = false; + dnodeUnSetModuleStatus(module); + (*tsModule[module].stopFp)(); + } } } diff --git a/src/inc/taosdef.h b/src/inc/taosdef.h index aeccd92d9a..b6a37d85a2 100644 --- a/src/inc/taosdef.h +++ b/src/inc/taosdef.h @@ -340,13 +340,14 @@ void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size); #define TSDB_SESSIONS_PER_VNODE (300) #define TSDB_SESSIONS_PER_DNODE (TSDB_SESSIONS_PER_VNODE * TSDB_MAX_VNODES) -#define TSDB_MAX_MNODES 5 -#define TSDB_MAX_DNODES 10 -#define TSDB_MAX_ACCOUNTS 10 -#define TSDB_MAX_USERS 20 -#define TSDB_MAX_DBS 100 -#define TSDB_MAX_VGROUPS 1000 -#define TSDB_MAX_SUPER_TABLES 100 +#define TSDB_DEFAULT_MNODES_HASH_SIZE 5 +#define TSDB_DEFAULT_DNODES_HASH_SIZE 10 +#define TSDB_DEFAULT_ACCOUNTS_HASH_SIZE 10 +#define TSDB_DEFAULT_USERS_HASH_SIZE 20 +#define TSDB_DEFAULT_DBS_HASH_SIZE 100 +#define TSDB_DEFAULT_VGROUPS_HASH_SIZE 100 +#define TSDB_DEFAULT_STABLES_HASH_SIZE 100 +#define TSDB_DEFAULT_CTABLES_HASH_SIZE 10000 #define TSDB_PORT_DNODESHELL 0 #define TSDB_PORT_DNODEDNODE 5 diff --git a/src/inc/taoserror.h b/src/inc/taoserror.h index 1390d66113..ae30efd93e 100644 --- a/src/inc/taoserror.h +++ b/src/inc/taoserror.h @@ -156,6 +156,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_SERV_OUT_OF_MEMORY, 0, 405, "server out of m TAOS_DEFINE_ERROR(TSDB_CODE_NO_DISK_PERMISSIONS, 0, 406, "no disk permissions") TAOS_DEFINE_ERROR(TSDB_CODE_FILE_CORRUPTED, 0, 407, "file corrupted") TAOS_DEFINE_ERROR(TSDB_CODE_MEMORY_CORRUPTED, 0, 408, "memory corrupted") +TAOS_DEFINE_ERROR(TSDB_CODE_NOT_SUCH_FILE_OR_DIR, 0, 409, "no such file or directory") // client TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CLIENT_VERSION, 0, 451, "invalid client version") diff --git a/src/kit/taosdump/taosdump.c b/src/kit/taosdump/taosdump.c index adba091136..5ea75a1cde 100644 --- a/src/kit/taosdump/taosdump.c +++ b/src/kit/taosdump/taosdump.c @@ -37,6 +37,8 @@ #define COMMAND_SIZE 65536 #define DEFAULT_DUMP_FILE "taosdump.sql" +#define MAX_DBS 100 + int converStringToReadable(char *str, int size, char *buf, int bufsize); int convertNCharToReadable(char *str, int size, char *buf, int bufsize); void taosDumpCharset(FILE *fp); @@ -359,7 +361,7 @@ int main(int argc, char *argv[]) { void taosFreeDbInfos() { if (dbInfos == NULL) return; - for (int i = 0; i < TSDB_MAX_DBS; i++) tfree(dbInfos[i]); + for (int i = 0; i < MAX_DBS; i++) tfree(dbInfos[i]); tfree(dbInfos); } @@ -437,7 +439,7 @@ int taosDumpOut(SDumpArguments *arguments) { return -1; } - dbInfos = (SDbInfo **)calloc(TSDB_MAX_DBS, sizeof(SDbInfo *)); + dbInfos = (SDbInfo **)calloc(MAX_DBS, sizeof(SDbInfo *)); if (dbInfos == NULL) { fprintf(stderr, "failed to allocate memory\n"); goto _exit_failure; @@ -941,7 +943,7 @@ int taosDumpTableData(FILE *fp, char *tbname, SDumpArguments *arguments) { pstr += sprintf(pstr, "%d", *((int *)row[col])); break; case TSDB_DATA_TYPE_BIGINT: - pstr += sprintf(pstr, "%" PRId64 "", *((int64_t *)row[col])); + pstr += sprintf(pstr, "%" PRId64, *((int64_t *)row[col])); break; case TSDB_DATA_TYPE_FLOAT: pstr += sprintf(pstr, "%f", GET_FLOAT_VAL(row[col])); @@ -960,7 +962,7 @@ int taosDumpTableData(FILE *fp, char *tbname, SDumpArguments *arguments) { pstr += sprintf(pstr, "\'%s\'", tbuf); break; case TSDB_DATA_TYPE_TIMESTAMP: - pstr += sprintf(pstr, "%" PRId64 "", *(int64_t *)row[col]); + pstr += sprintf(pstr, "%" PRId64, *(int64_t *)row[col]); break; default: break; diff --git a/src/mnode/inc/mgmtMnode.h b/src/mnode/inc/mgmtMnode.h index b9a135346d..0973aa6ea6 100644 --- a/src/mnode/inc/mgmtMnode.h +++ b/src/mnode/inc/mgmtMnode.h @@ -44,7 +44,7 @@ void mgmtDecMnodeRef(struct SMnodeObj *pMnode); char * mgmtGetMnodeRoleStr(); void mgmtGetMnodeIpSet(SRpcIpSet *ipSet); void mgmtGetMnodeInfos(void *mnodes); - +void mgmtUpdateMnodeIpSet(); #ifdef __cplusplus } diff --git a/src/mnode/inc/mgmtVgroup.h b/src/mnode/inc/mgmtVgroup.h index ce4cfed532..ab0345cd20 100644 --- a/src/mnode/inc/mgmtVgroup.h +++ b/src/mnode/inc/mgmtVgroup.h @@ -29,6 +29,7 @@ void mgmtIncVgroupRef(SVgObj *pVgroup); void mgmtDecVgroupRef(SVgObj *pVgroup); void mgmtDropAllDbVgroups(SDbObj *pDropDb, bool sendMsg); void mgmtDropAllDnodeVgroups(SDnodeObj *pDropDnode); +void mgmtUpdateAllDbVgroups(SDbObj *pAlterDb); void * mgmtGetNextVgroup(void *pIter, SVgObj **pVgroup); void mgmtUpdateVgroup(SVgObj *pVgroup); diff --git a/src/mnode/src/mgmtAcct.c b/src/mnode/src/mgmtAcct.c index 27beff8944..a35591382c 100644 --- a/src/mnode/src/mgmtAcct.c +++ b/src/mnode/src/mgmtAcct.c @@ -94,7 +94,7 @@ int32_t mgmtInitAccts() { SSdbTableDesc tableDesc = { .tableId = SDB_TABLE_ACCOUNT, .tableName = "accounts", - .hashSessions = TSDB_MAX_ACCOUNTS, + .hashSessions = TSDB_DEFAULT_ACCOUNTS_HASH_SIZE, .maxRowSize = tsAcctUpdateSize, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_STRING, diff --git a/src/mnode/src/mgmtDb.c b/src/mnode/src/mgmtDb.c index 3ea2e3aa87..df18fe8786 100644 --- a/src/mnode/src/mgmtDb.c +++ b/src/mnode/src/mgmtDb.c @@ -96,6 +96,7 @@ static int32_t mgmtDbActionUpdate(SSdbOper *pOper) { memcpy(pSaved, pDb, pOper->rowSize); free(pDb); } + mgmtUpdateAllDbVgroups(pSaved); mgmtDecDbRef(pSaved); return TSDB_CODE_SUCCESS; } @@ -127,7 +128,7 @@ int32_t mgmtInitDbs() { SSdbTableDesc tableDesc = { .tableId = SDB_TABLE_DB, .tableName = "dbs", - .hashSessions = TSDB_MAX_DBS, + .hashSessions = TSDB_DEFAULT_DBS_HASH_SIZE, .maxRowSize = tsDbUpdateSize, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_STRING, diff --git a/src/mnode/src/mgmtDnode.c b/src/mnode/src/mgmtDnode.c index c3ae8b5ab1..1189da92e2 100644 --- a/src/mnode/src/mgmtDnode.c +++ b/src/mnode/src/mgmtDnode.c @@ -130,7 +130,7 @@ int32_t mgmtInitDnodes() { SSdbTableDesc tableDesc = { .tableId = SDB_TABLE_DNODE, .tableName = "dnodes", - .hashSessions = TSDB_MAX_DNODES, + .hashSessions = TSDB_DEFAULT_DNODES_HASH_SIZE, .maxRowSize = tsDnodeUpdateSize, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_AUTO, diff --git a/src/mnode/src/mgmtMnode.c b/src/mnode/src/mgmtMnode.c index d9ddd465f6..3ba7042c40 100644 --- a/src/mnode/src/mgmtMnode.c +++ b/src/mnode/src/mgmtMnode.c @@ -36,6 +36,25 @@ static int32_t tsMnodeUpdateSize = 0; static int32_t mgmtGetMnodeMeta(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn); static int32_t mgmtRetrieveMnodes(SShowObj *pShow, char *data, int32_t rows, void *pConn); +static SRpcIpSet tsMnodeRpcIpSet; +static SDMMnodeInfos tsMnodeInfos; + +#if defined(LINUX) + static pthread_rwlock_t tsMnodeLock; + #define mgmtMnodeWrLock() pthread_rwlock_wrlock(&tsMnodeLock) + #define mgmtMnodeRdLock() pthread_rwlock_rdlock(&tsMnodeLock) + #define mgmtMnodeUnLock() pthread_rwlock_unlock(&tsMnodeLock) + #define mgmtMnodeInitLock() pthread_rwlock_init(&tsMnodeLock, NULL) + #define mgmtMnodeDestroyLock() pthread_rwlock_destroy(&tsMnodeLock) +#else + static pthread_mutex_t tsMnodeLock; + #define mgmtMnodeWrLock() pthread_mutex_lock(&tsMnodeLock) + #define mgmtMnodeRdLock() pthread_mutex_lock(&tsMnodeLock) + #define mgmtMnodeUnLock() pthread_mutex_unlock(&tsMnodeLock) + #define mgmtMnodeInitLock() pthread_mutex_init(&tsMnodeLock, NULL) + #define mgmtMnodeDestroyLock() pthread_mutex_destroy(&tsMnodeLock) +#endif + static int32_t mgmtMnodeActionDestroy(SSdbOper *pOper) { tfree(pOper->pObj); return TSDB_CODE_SUCCESS; @@ -102,17 +121,22 @@ static int32_t mgmtMnodeActionRestored() { } sdbFreeIter(pIter); } + + mgmtUpdateMnodeIpSet(); + return TSDB_CODE_SUCCESS; } int32_t mgmtInitMnodes() { + mgmtMnodeInitLock(); + SMnodeObj tObj; tsMnodeUpdateSize = (int8_t *)tObj.updateEnd - (int8_t *)&tObj; SSdbTableDesc tableDesc = { .tableId = SDB_TABLE_MNODE, .tableName = "mnodes", - .hashSessions = TSDB_MAX_MNODES, + .hashSessions = TSDB_DEFAULT_MNODES_HASH_SIZE, .maxRowSize = tsMnodeUpdateSize, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_INT, @@ -140,6 +164,7 @@ int32_t mgmtInitMnodes() { void mgmtCleanupMnodes() { sdbCloseTable(tsMnodeSdb); + mgmtMnodeDestroyLock(); } int32_t mgmtGetMnodesNum() { @@ -177,8 +202,16 @@ char *mgmtGetMnodeRoleStr(int32_t role) { } } -void mgmtGetMnodeIpSet(SRpcIpSet *ipSet) { - void *pIter = NULL; +void mgmtUpdateMnodeIpSet() { + SRpcIpSet *ipSet = &tsMnodeRpcIpSet; + SDMMnodeInfos *mnodes = &tsMnodeInfos; + + mPrint("update mnodes ipset, numOfIps:%d ", mgmtGetMnodesNum()); + + mgmtMnodeWrLock(); + + int32_t index = 0; + void * pIter = NULL; while (1) { SMnodeObj *pMnode = NULL; pIter = mgmtGetNextMnode(pIter, &pMnode); @@ -187,40 +220,39 @@ void mgmtGetMnodeIpSet(SRpcIpSet *ipSet) { strcpy(ipSet->fqdn[ipSet->numOfIps], pMnode->pDnode->dnodeFqdn); ipSet->port[ipSet->numOfIps] = htons(pMnode->pDnode->dnodePort); - if (pMnode->role == TAOS_SYNC_ROLE_MASTER) { - ipSet->inUse = ipSet->numOfIps; - } - - ipSet->numOfIps++; - - mgmtDecMnodeRef(pMnode); - } - sdbFreeIter(pIter); -} - -void mgmtGetMnodeInfos(void *param) { - SDMMnodeInfos *mnodes = param; - mnodes->inUse = 0; - - int32_t index = 0; - void *pIter = NULL; - while (1) { - SMnodeObj *pMnode = NULL; - pIter = mgmtGetNextMnode(pIter, &pMnode); - if (pMnode == NULL) break; - mnodes->nodeInfos[index].nodeId = htonl(pMnode->mnodeId); strcpy(mnodes->nodeInfos[index].nodeEp, pMnode->pDnode->dnodeEp); + if (pMnode->role == TAOS_SYNC_ROLE_MASTER) { + ipSet->inUse = ipSet->numOfIps; mnodes->inUse = index; } + mPrint("mnode:%d, ep:%s %s", index, pMnode->pDnode->dnodeEp, pMnode->role == TAOS_SYNC_ROLE_MASTER ? "master" : ""); + + ipSet->numOfIps++; index++; + mgmtDecMnodeRef(pMnode); } - sdbFreeIter(pIter); mnodes->nodeNum = index; + + sdbFreeIter(pIter); + + mgmtMnodeUnLock(); +} + +void mgmtGetMnodeIpSet(SRpcIpSet *ipSet) { + mgmtMnodeRdLock(); + *ipSet = tsMnodeRpcIpSet; + mgmtMnodeUnLock(); +} + +void mgmtGetMnodeInfos(void *mnodeInfos) { + mgmtMnodeRdLock(); + *(SDMMnodeInfos *)mnodeInfos = tsMnodeInfos; + mgmtMnodeUnLock(); } int32_t mgmtAddMnode(int32_t dnodeId) { @@ -240,6 +272,8 @@ int32_t mgmtAddMnode(int32_t dnodeId) { code = TSDB_CODE_SDB_ERROR; } + mgmtUpdateMnodeIpSet(); + return code; } @@ -250,6 +284,8 @@ void mgmtDropMnodeLocal(int32_t dnodeId) { sdbDeleteRow(&oper); mgmtDecMnodeRef(pMnode); } + + mgmtUpdateMnodeIpSet(); } int32_t mgmtDropMnode(int32_t dnodeId) { @@ -270,6 +306,9 @@ int32_t mgmtDropMnode(int32_t dnodeId) { } sdbDecRef(tsMnodeSdb, pMnode); + + mgmtUpdateMnodeIpSet(); + return code; } diff --git a/src/mnode/src/mgmtSdb.c b/src/mnode/src/mgmtSdb.c index 47fb71680a..ef7668c88e 100644 --- a/src/mnode/src/mgmtSdb.c +++ b/src/mnode/src/mgmtSdb.c @@ -196,6 +196,8 @@ void sdbUpdateMnodeRoles() { mgmtDecMnodeRef(pMnode); } } + + mgmtUpdateMnodeIpSet(); } static uint32_t sdbGetFileInfo(void *ahandle, char *name, uint32_t *index, int32_t *size, uint64_t *fversion) { @@ -442,8 +444,8 @@ static int32_t sdbInsertHash(SSdbTable *pTable, SSdbOper *pOper) { pthread_mutex_unlock(&pTable->mutex); - sdbTrace("table:%s, insert record:%s to hash, numOfRows:%d version:%" PRIu64, pTable->tableName, - sdbGetKeyStrFromObj(pTable, pOper->pObj), pTable->numOfRows, sdbGetVersion()); + sdbTrace("table:%s, insert record:%s to hash, rowSize:%d vnumOfRows:%d version:%" PRIu64, pTable->tableName, + sdbGetKeyStrFromObj(pTable, pOper->pObj), pOper->rowSize, pTable->numOfRows, sdbGetVersion()); (*pTable->insertFp)(pOper); return TSDB_CODE_SUCCESS; diff --git a/src/mnode/src/mgmtShell.c b/src/mnode/src/mgmtShell.c index d8bcf67242..1da811de13 100644 --- a/src/mnode/src/mgmtShell.c +++ b/src/mnode/src/mgmtShell.c @@ -119,7 +119,7 @@ static void mgmtDoDealyedAddToShellQueue(void *param, void *tmrId) { void mgmtDealyedAddToShellQueue(SQueuedMsg *queuedMsg) { void *unUsed = NULL; - taosTmrReset(mgmtDoDealyedAddToShellQueue, 1000, queuedMsg, tsMgmtTmr, &unUsed); + taosTmrReset(mgmtDoDealyedAddToShellQueue, 300, queuedMsg, tsMgmtTmr, &unUsed); } void mgmtProcessMsgFromShell(SRpcMsg *rpcMsg) { diff --git a/src/mnode/src/mgmtTable.c b/src/mnode/src/mgmtTable.c index 06b31d8e68..0d821ee9e8 100644 --- a/src/mnode/src/mgmtTable.c +++ b/src/mnode/src/mgmtTable.c @@ -340,7 +340,7 @@ static int32_t mgmtInitChildTables() { SSdbTableDesc tableDesc = { .tableId = SDB_TABLE_CTABLE, .tableName = "ctables", - .hashSessions = tsMaxTables, + .hashSessions = TSDB_DEFAULT_CTABLES_HASH_SIZE, .maxRowSize = sizeof(SChildTableObj) + sizeof(SSchema) * (TSDB_MAX_TAGS + TSDB_MAX_COLUMNS + 16) + TSDB_TABLE_ID_LEN + TSDB_CQ_SQL_SIZE, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_VAR_STRING, @@ -507,7 +507,7 @@ static int32_t mgmtInitSuperTables() { SSdbTableDesc tableDesc = { .tableId = SDB_TABLE_STABLE, .tableName = "stables", - .hashSessions = TSDB_MAX_SUPER_TABLES, + .hashSessions = TSDB_DEFAULT_STABLES_HASH_SIZE, .maxRowSize = sizeof(SSuperTableObj) + sizeof(SSchema) * (TSDB_MAX_TAGS + TSDB_MAX_COLUMNS + 16) + TSDB_TABLE_ID_LEN, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_VAR_STRING, @@ -1538,7 +1538,7 @@ static void mgmtProcessCreateChildTableMsg(SQueuedMsg *pMsg) { SRpcIpSet ipSet = mgmtGetIpSetFromVgroup(pVgroup); SQueuedMsg *newMsg = mgmtCloneQueuedMsg(pMsg); newMsg->ahandle = pMsg->pTable; - newMsg->maxRetry = 5; + newMsg->maxRetry = 10; SRpcMsg rpcMsg = { .handle = newMsg, .pCont = pMDCreate, diff --git a/src/mnode/src/mgmtUser.c b/src/mnode/src/mgmtUser.c index cc22ed2169..62a98c4170 100644 --- a/src/mnode/src/mgmtUser.c +++ b/src/mnode/src/mgmtUser.c @@ -117,7 +117,7 @@ int32_t mgmtInitUsers() { SSdbTableDesc tableDesc = { .tableId = SDB_TABLE_USER, .tableName = "users", - .hashSessions = TSDB_MAX_USERS, + .hashSessions = TSDB_DEFAULT_USERS_HASH_SIZE, .maxRowSize = tsUserUpdateSize, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_STRING, diff --git a/src/mnode/src/mgmtVgroup.c b/src/mnode/src/mgmtVgroup.c index ef5582f395..4c85351148 100644 --- a/src/mnode/src/mgmtVgroup.c +++ b/src/mnode/src/mgmtVgroup.c @@ -121,6 +121,20 @@ static int32_t mgmtVgroupActionDelete(SSdbOper *pOper) { return TSDB_CODE_SUCCESS; } +static void mgmtVgroupUpdateIdPool(SVgObj *pVgroup) { + int32_t oldTables = taosIdPoolMaxSize(pVgroup->idPool); + SDbObj *pDb = pVgroup->pDb; + if (pDb != NULL) { + if (pDb->cfg.maxTables != oldTables) { + mPrint("vgId:%d tables change from %d to %d", pVgroup->vgId, oldTables, pDb->cfg.maxTables); + taosUpdateIdPool(pVgroup->idPool, pDb->cfg.maxTables); + int32_t size = sizeof(SChildTableObj *) * pDb->cfg.maxTables; + pVgroup->tableList = (SChildTableObj **)realloc(pVgroup->tableList, size); + memset(pVgroup->tableList + oldTables, 0, (pDb->cfg.maxTables - oldTables) * sizeof(SChildTableObj **)); + } + } +} + static int32_t mgmtVgroupActionUpdate(SSdbOper *pOper) { SVgObj *pNew = pOper->pObj; SVgObj *pVgroup = mgmtGetVgroup(pNew->vgId); @@ -146,20 +160,11 @@ static int32_t mgmtVgroupActionUpdate(SSdbOper *pOper) { } } - int32_t oldTables = taosIdPoolMaxSize(pVgroup->idPool); - SDbObj *pDb = pVgroup->pDb; - if (pDb != NULL) { - if (pDb->cfg.maxTables != oldTables) { - mPrint("vgId:%d tables change from %d to %d", pVgroup->vgId, oldTables, pDb->cfg.maxTables); - taosUpdateIdPool(pVgroup->idPool, pDb->cfg.maxTables); - int32_t size = sizeof(SChildTableObj *) * pDb->cfg.maxTables; - pVgroup->tableList = (SChildTableObj **)realloc(pVgroup->tableList, size); - } - } + mgmtVgroupUpdateIdPool(pVgroup); mgmtDecVgroupRef(pVgroup); - mTrace("vgId:%d, is updated, numOfVnode:%d tables:%d", pVgroup->vgId, pVgroup->numOfVnodes, pDb == NULL ? 0 : pDb->cfg.maxTables); + mTrace("vgId:%d, is updated, numOfVnode:%d", pVgroup->vgId, pVgroup->numOfVnodes); return TSDB_CODE_SUCCESS; } @@ -196,7 +201,7 @@ int32_t mgmtInitVgroups() { SSdbTableDesc tableDesc = { .tableId = SDB_TABLE_VGROUP, .tableName = "vgroups", - .hashSessions = TSDB_MAX_VGROUPS, + .hashSessions = TSDB_DEFAULT_VGROUPS_HASH_SIZE, .maxRowSize = tsVgUpdateSize, .refCountPos = (int8_t *)(&tObj.refCount) - (int8_t *)&tObj, .keyType = SDB_KEY_AUTO, @@ -762,6 +767,28 @@ void mgmtDropAllDnodeVgroups(SDnodeObj *pDropDnode) { sdbFreeIter(pIter); } +void mgmtUpdateAllDbVgroups(SDbObj *pAlterDb) { + void * pIter = NULL; + SVgObj *pVgroup = NULL; + + mPrint("db:%s, all vgroups will be update in sdb", pAlterDb->name); + + while (1) { + pIter = mgmtGetNextVgroup(pIter, &pVgroup); + if (pVgroup == NULL) break; + + if (pVgroup->pDb == pAlterDb) { + mgmtVgroupUpdateIdPool(pVgroup); + } + + mgmtDecVgroupRef(pVgroup); + } + + sdbFreeIter(pIter); + + mPrint("db:%s, all vgroups is updated in sdb", pAlterDb->name); +} + void mgmtDropAllDbVgroups(SDbObj *pDropDb, bool sendMsg) { void * pIter = NULL; int32_t numOfVgroups = 0; diff --git a/src/query/src/qExecutor.c b/src/query/src/qExecutor.c index e148bcb58e..cdb8476546 100644 --- a/src/query/src/qExecutor.c +++ b/src/query/src/qExecutor.c @@ -4022,7 +4022,7 @@ void skipBlocks(SQueryRuntimeEnv *pRuntimeEnv) { pTableQueryInfo->lastKey = (QUERY_IS_ASC_QUERY(pQuery)) ? blockInfo.window.ekey : blockInfo.window.skey; pTableQueryInfo->lastKey += step; - qTrace("QInfo:%p skip rows:%d, offset:%" PRId64 "", GET_QINFO_ADDR(pRuntimeEnv), blockInfo.rows, + qTrace("QInfo:%p skip rows:%d, offset:%" PRId64, GET_QINFO_ADDR(pRuntimeEnv), blockInfo.rows, pQuery->limit.offset); } else { // find the appropriated start position in current block updateOffsetVal(pRuntimeEnv, &blockInfo); @@ -5134,7 +5134,7 @@ bool validateExprColumnInfo(SQueryTableMsg *pQueryMsg, SSqlFuncMsg *pExprMsg, SC static bool validateQueryMsg(SQueryTableMsg *pQueryMsg) { if (pQueryMsg->intervalTime < 0) { - qError("qmsg:%p illegal value of interval time %" PRId64 "", pQueryMsg, pQueryMsg->intervalTime); + qError("qmsg:%p illegal value of interval time %" PRId64, pQueryMsg, pQueryMsg->intervalTime); return false; } diff --git a/src/tsdb/src/tsdbCache.c b/src/tsdb/src/tsdbCache.c index 2761ed5e8e..be339d2816 100644 --- a/src/tsdb/src/tsdbCache.c +++ b/src/tsdb/src/tsdbCache.c @@ -162,6 +162,7 @@ int tsdbAlterCacheTotalBlocks(STsdbRepo *pRepo, int totalBlocks) { pCache->totalCacheBlocks = totalBlocks; tsdbAdjustCacheBlocks(pCache); } + pRepo->config.totalBlocks = totalBlocks; tsdbUnLockRepo((TsdbRepoT *)pRepo); tsdbTrace("vgId:%d, tsdb total cache blocks changed from %d to %d", pRepo->config.tsdbId, oldNumOfBlocks, totalBlocks); diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c index cac5279b76..a9f0d9b6ec 100644 --- a/src/tsdb/src/tsdbMain.c +++ b/src/tsdb/src/tsdbMain.c @@ -37,7 +37,8 @@ static TSKEY tsdbNextIterKey(SSkipListIterator *pIter); static int tsdbHasDataToCommit(SSkipListIterator **iters, int nIters, TSKEY minKey, TSKEY maxKey); static void tsdbAlterCompression(STsdbRepo *pRepo, int8_t compression); static void tsdbAlterKeep(STsdbRepo *pRepo, int32_t keep); -static void tsdbAlterMaxTables(STsdbRepo *pRepo, int32_t maxTables); +static void tsdbAlterMaxTables(STsdbRepo *pRepo, int32_t maxTables); +static int32_t tsdbSaveConfig(STsdbRepo *pRepo); #define TSDB_GET_TABLE_BY_ID(pRepo, sid) (((STSDBRepo *)pRepo)->pTableList)[sid] #define TSDB_GET_TABLE_BY_NAME(pRepo, name) @@ -319,10 +320,25 @@ int32_t tsdbConfigRepo(TsdbRepoT *repo, STsdbCfg *pCfg) { ASSERT(pRCfg->maxRowsPerFileBlock == pCfg->maxRowsPerFileBlock); ASSERT(pRCfg->precision == pCfg->precision); - if (pRCfg->compression != pCfg->compression) tsdbAlterCompression(pRepo, pCfg->compression); - if (pRCfg->keep != pCfg->keep) tsdbAlterKeep(pRepo, pCfg->keep); - if (pRCfg->totalBlocks != pCfg->totalBlocks) tsdbAlterCacheTotalBlocks(pRepo, pCfg->totalBlocks); - if (pRCfg->maxTables != pCfg->maxTables) tsdbAlterMaxTables(pRepo, pCfg->maxTables); + bool configChanged = false; + if (pRCfg->compression != pCfg->compression) { + configChanged = true; + tsdbAlterCompression(pRepo, pCfg->compression); + } + if (pRCfg->keep != pCfg->keep) { + configChanged = true; + tsdbAlterKeep(pRepo, pCfg->keep); + } + if (pRCfg->totalBlocks != pCfg->totalBlocks) { + configChanged = true; + tsdbAlterCacheTotalBlocks(pRepo, pCfg->totalBlocks); + } + if (pRCfg->maxTables != pCfg->maxTables) { + configChanged = true; + tsdbAlterMaxTables(pRepo, pCfg->maxTables); + } + + if (configChanged) tsdbSaveConfig(pRepo); return TSDB_CODE_SUCCESS; } @@ -1134,8 +1150,10 @@ static void tsdbAlterKeep(STsdbRepo *pRepo, int32_t keep) { int maxFiles = keep / pCfg->maxTables + 3; if (pRepo->config.keep > keep) { + pRepo->config.keep = keep; pRepo->tsdbFileH->maxFGroups = maxFiles; } else { + pRepo->config.keep = keep; pRepo->tsdbFileH->fGroup = realloc(pRepo->tsdbFileH->fGroup, sizeof(SFileGroup)); if (pRepo->tsdbFileH->fGroup == NULL) { // TODO: deal with the error @@ -1155,6 +1173,8 @@ static void tsdbAlterMaxTables(STsdbRepo *pRepo, int32_t maxTables) { pMeta->maxTables = maxTables; pMeta->tables = realloc(pMeta->tables, maxTables * sizeof(STable *)); + memset(&pMeta->tables[oldMaxTables], 0, sizeof(STable *) * (maxTables-oldMaxTables)); + pRepo->config.maxTables = maxTables; tsdbTrace("vgId:%d, tsdb maxTables is changed from %d to %d!", pRepo->config.tsdbId, oldMaxTables, maxTables); } diff --git a/src/tsdb/src/tsdbMeta.c b/src/tsdb/src/tsdbMeta.c index ecd8aec759..de8304aa62 100644 --- a/src/tsdb/src/tsdbMeta.c +++ b/src/tsdb/src/tsdbMeta.c @@ -127,7 +127,7 @@ int tsdbRestoreTable(void *pHandle, void *cont, int contLen) { if (pTable->type == TSDB_SUPER_TABLE) { STColumn* pColSchema = schemaColAt(pTable->tagSchema, 0); pTable->pIndex = tSkipListCreate(TSDB_SUPER_TABLE_SL_LEVEL, pColSchema->type, pColSchema->bytes, - 1, 0, 0, getTagIndexKey); + 1, 0, 1, getTagIndexKey); } tsdbAddTableToMeta(pMeta, pTable, false); @@ -316,7 +316,7 @@ int tsdbCreateTable(TsdbRepoT *repo, STableCfg *pCfg) { // index the first tag column STColumn* pColSchema = schemaColAt(super->tagSchema, 0); super->pIndex = tSkipListCreate(TSDB_SUPER_TABLE_SL_LEVEL, pColSchema->type, pColSchema->bytes, - 1, 0, 0, getTagIndexKey); // Allow duplicate key, no lock + 1, 0, 1, getTagIndexKey); // Allow duplicate key, no lock if (super->pIndex == NULL) { tdFreeSchema(super->schema); @@ -440,6 +440,7 @@ static int tsdbFreeTable(STable *pTable) { // Free content if (TSDB_TABLE_IS_SUPER_TABLE(pTable)) { + tdFreeSchema(pTable->tagSchema); tSkipListDestroy(pTable->pIndex); } diff --git a/src/tsdb/src/tsdbRWHelper.c b/src/tsdb/src/tsdbRWHelper.c index c5ef00c233..7205a70ecc 100644 --- a/src/tsdb/src/tsdbRWHelper.c +++ b/src/tsdb/src/tsdbRWHelper.c @@ -409,7 +409,7 @@ int tsdbWriteCompInfo(SRWHelper *pHelper) { if (pIdx->offset > 0) { pIdx->offset = lseek(pHelper->files.nHeadF.fd, 0, SEEK_END); if (pIdx->offset < 0) return -1; - ASSERT(pIdx->offset >= tsizeof(pHelper->pCompIdx)); + ASSERT(pIdx->offset >= TSDB_FILE_HEAD_SIZE); if (tsendfile(pHelper->files.nHeadF.fd, pHelper->files.headF.fd, NULL, pIdx->len) < pIdx->len) return -1; } @@ -489,6 +489,7 @@ int tsdbLoadCompIdx(SRWHelper *pHelper, void *target) { } ASSERT(((char *)ptr - (char *)pHelper->pBuffer) == (pFile->info.len - sizeof(TSCKSUM))); + if (lseek(fd, TSDB_FILE_HEAD_SIZE, SEEK_SET) < 0) return -1; } } diff --git a/src/vnode/src/vnodeMain.c b/src/vnode/src/vnodeMain.c index 4514d80a54..6f0b19b0c6 100644 --- a/src/vnode/src/vnodeMain.c +++ b/src/vnode/src/vnodeMain.c @@ -73,13 +73,18 @@ int32_t vnodeCreate(SMDCreateVnodeMsg *pVnodeCfg) { return TSDB_CODE_SUCCESS; } + mkdir(tsVnodeDir, 0755); + char rootDir[TSDB_FILENAME_LEN] = {0}; sprintf(rootDir, "%s/vnode%d", tsVnodeDir, pVnodeCfg->cfg.vgId); if (mkdir(rootDir, 0755) != 0) { + vPrint("vgId:%d, failed to create vnode, reason:%s dir:%s", pVnodeCfg->cfg.vgId, strerror(errno), rootDir); if (errno == EACCES) { return TSDB_CODE_NO_DISK_PERMISSIONS; } else if (errno == ENOSPC) { return TSDB_CODE_SERV_NO_DISKSPACE; + } else if (errno == ENOENT) { + return TSDB_CODE_NOT_SUCH_FILE_OR_DIR; } else if (errno == EEXIST) { } else { return TSDB_CODE_VG_INIT_FAILED; @@ -239,6 +244,10 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) { syncInfo.notifyFileSynced = vnodeNotifyFileSynced; pVnode->sync = syncStart(&syncInfo); +#ifndef _SYNC + pVnode->role = TAOS_SYNC_ROLE_MASTER; +#endif + // start continuous query if (pVnode->role == TAOS_SYNC_ROLE_MASTER) cqStart(pVnode->cq); @@ -429,7 +438,7 @@ static void vnodeNotifyRole(void *ahandle, int8_t role) { static void vnodeNotifyFileSynced(void *ahandle, uint64_t fversion) { SVnodeObj *pVnode = ahandle; - vTrace("vgId:%d, data file is synced, fversion:%" PRId64 "", pVnode->vgId, fversion); + vTrace("vgId:%d, data file is synced, fversion:%" PRId64, pVnode->vgId, fversion); pVnode->fversion = fversion; pVnode->version = fversion; diff --git a/tests/script/general/db/alter_tables_d2.sim b/tests/script/general/db/alter_tables_d2.sim new file mode 100644 index 0000000000..7e8d4e117a --- /dev/null +++ b/tests/script/general/db/alter_tables_d2.sim @@ -0,0 +1,468 @@ +system sh/stop_dnodes.sh +system sh/deploy.sh -n dnode1 -i 1 +system sh/cfg.sh -n dnode1 -c wallevel -v 2 +system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 2 + +system sh/deploy.sh -n dnode2 -i 2 +system sh/cfg.sh -n dnode2 -c wallevel -v 2 +system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 2 + +system sh/exec.sh -n dnode1 -s start +system sh/exec.sh -n dnode2 -s start + +sleep 3000 +sql connect +sql create dnode $hostname2 +sleep 1000 + +print ============================ step1 + +sql create database db maxTables 5 +sql create table db.st (ts timestamp, i int) tags(t int) +sql create table db.t000 using db.st tags(0) +sql create table db.t001 using db.st tags(1) +sql create table db.t002 using db.st tags(2) +sql create table db.t003 using db.st tags(3) +sql create table db.t004 using db.st tags(4) +sql create table db.t005 using db.st tags(5) +sql create table db.t006 using db.st tags(6) +sql create table db.t007 using db.st tags(7) +sql create table db.t008 using db.st tags(8) +sql create table db.t009 using db.st tags(9) +sql create table db.t010 using db.st tags(0) +sql create table db.t011 using db.st tags(1) +sql create table db.t012 using db.st tags(2) +sql create table db.t013 using db.st tags(3) +sql create table db.t014 using db.st tags(4) +sql create table db.t015 using db.st tags(5) +sql create table db.t016 using db.st tags(6) +sql create table db.t017 using db.st tags(7) +sql create table db.t018 using db.st tags(8) +sql create table db.t019 using db.st tags(9) + +sql show db.tables +if $rows != 20 then + return -1 +endi + +sql insert into db.t000 values(now, 1) +sql insert into db.t001 values(now, 1) +sql insert into db.t002 values(now, 1) +sql insert into db.t003 values(now, 1) +sql insert into db.t004 values(now, 1) +sql insert into db.t005 values(now, 1) +sql insert into db.t006 values(now, 1) +sql insert into db.t007 values(now, 1) +sql insert into db.t008 values(now, 1) +sql insert into db.t009 values(now, 1) +sql insert into db.t010 values(now, 1) +sql insert into db.t011 values(now, 1) +sql insert into db.t012 values(now, 1) +sql insert into db.t013 values(now, 1) +sql insert into db.t014 values(now, 1) +sql insert into db.t015 values(now, 1) +sql insert into db.t016 values(now, 1) +sql insert into db.t017 values(now, 1) +sql insert into db.t018 values(now, 1) +sql insert into db.t019 values(now, 1) + +print ============================ step2 +sql_error create table db.t100 using db.st tags(10) +sql show db.tables +if $rows != 20 then + return -1 +endi + +print ============================ step3 + +sql alter database db maxTables 10 +sleep 1000 + +sql create table db.t100 using db.st tags(0) +sql create table db.t101 using db.st tags(1) +sql create table db.t102 using db.st tags(2) +sql create table db.t103 using db.st tags(3) +sql create table db.t104 using db.st tags(4) +sql create table db.t105 using db.st tags(5) +sql create table db.t106 using db.st tags(6) +sql create table db.t107 using db.st tags(7) +sql create table db.t108 using db.st tags(8) +sql create table db.t109 using db.st tags(9) +sql create table db.t110 using db.st tags(0) +sql create table db.t111 using db.st tags(1) +sql create table db.t112 using db.st tags(2) +sql create table db.t113 using db.st tags(3) +sql create table db.t114 using db.st tags(4) +sql create table db.t115 using db.st tags(5) +sql create table db.t116 using db.st tags(6) +sql create table db.t117 using db.st tags(7) +sql create table db.t118 using db.st tags(8) +sql create table db.t119 using db.st tags(9) +sql show db.tables +if $rows != 40 then + return -1 +endi + + +sql insert into db.t100 values(now, 1) +sql insert into db.t101 values(now, 1) +sql insert into db.t102 values(now, 1) +sql insert into db.t103 values(now, 1) +sql insert into db.t104 values(now, 1) +sql insert into db.t105 values(now, 1) +sql insert into db.t106 values(now, 1) +sql insert into db.t107 values(now, 1) +sql insert into db.t108 values(now, 1) +sql insert into db.t109 values(now, 1) +sql insert into db.t110 values(now, 1) +sql insert into db.t111 values(now, 1) +sql insert into db.t112 values(now, 1) +sql insert into db.t113 values(now, 1) +sql insert into db.t114 values(now, 1) +sql insert into db.t115 values(now, 1) +sql insert into db.t116 values(now, 1) +sql insert into db.t117 values(now, 1) +sql insert into db.t118 values(now, 1) +sql insert into db.t119 values(now, 1) + +print ============================ step4 +sql_error create table db.t200 using db.st tags(10) +sql show db.tables +if $rows != 40 then + return -1 +endi + +print ============================ step5 + +sql alter database db maxTables 15 +sleep 1000 + +sql create table db.t200 using db.st tags(0) +sql create table db.t201 using db.st tags(1) +sql create table db.t202 using db.st tags(2) +sql create table db.t203 using db.st tags(3) +sql create table db.t204 using db.st tags(4) +sql create table db.t205 using db.st tags(5) +sql create table db.t206 using db.st tags(6) +sql create table db.t207 using db.st tags(7) +sql create table db.t208 using db.st tags(8) +sql create table db.t209 using db.st tags(9) +sql create table db.t210 using db.st tags(0) +sql create table db.t211 using db.st tags(1) +sql create table db.t212 using db.st tags(2) +sql create table db.t213 using db.st tags(3) +sql create table db.t214 using db.st tags(4) +sql create table db.t215 using db.st tags(5) +sql create table db.t216 using db.st tags(6) +sql create table db.t217 using db.st tags(7) +sql create table db.t218 using db.st tags(8) +sql create table db.t219 using db.st tags(9) +sql show db.tables +if $rows != 60 then + return -1 +endi + +sql insert into db.t200 values(now, 1) +sql insert into db.t201 values(now, 1) +sql insert into db.t202 values(now, 1) +sql insert into db.t203 values(now, 1) +sql insert into db.t204 values(now, 1) +sql insert into db.t205 values(now, 1) +sql insert into db.t206 values(now, 1) +sql insert into db.t207 values(now, 1) +sql insert into db.t208 values(now, 1) +sql insert into db.t209 values(now, 1) +sql insert into db.t210 values(now, 1) +sql insert into db.t211 values(now, 1) +sql insert into db.t212 values(now, 1) +sql insert into db.t213 values(now, 1) +sql insert into db.t214 values(now, 1) +sql insert into db.t215 values(now, 1) +sql insert into db.t216 values(now, 1) +sql insert into db.t217 values(now, 1) +sql insert into db.t218 values(now, 1) +sql insert into db.t219 values(now, 1) + +print ============================ step6 + +sql reset query cache +sleep 1000 + +sql select * from db.t000 +if $rows != 1 then + return -1 +endi + +sql select * from db.t100 +if $rows != 1 then + return -1 +endi + +sql select * from db.t200 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 60 then + return -1 +endi + +print ============================ step7 +system sh/exec.sh -n dnode1 -s stop -x SIGINT +system sh/exec.sh -n dnode2 -s stop -x SIGINT +sleep 1000 +system sh/exec.sh -n dnode1 -s start +system sh/exec.sh -n dnode2 -s start +sleep 3000 + +sql reset query cache +sleep 1000 + +sql show db.tables +if $rows != 60 then + return -1 +endi + +sql select * from db.t000 +if $rows != 1 then + return -1 +endi + +sql select * from db.t100 +if $rows != 1 then + return -1 +endi + +sql select * from db.t200 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 60 then + return -1 +endi + +print ============================ step8 +sql_error create table db.t300 using db.st tags(10) +sql show db.tables +if $rows != 60 then + return -1 +endi + +print ============================ step9 + +sql alter database db maxTables 20 +sleep 1000 + +sql create table db.t300 using db.st tags(0) +sql create table db.t301 using db.st tags(1) +sql create table db.t302 using db.st tags(2) +sql create table db.t303 using db.st tags(3) +sql create table db.t304 using db.st tags(4) +sql create table db.t305 using db.st tags(5) +sql create table db.t306 using db.st tags(6) +sql create table db.t307 using db.st tags(7) +sql create table db.t308 using db.st tags(8) +sql create table db.t309 using db.st tags(9) +sql create table db.t310 using db.st tags(0) +sql create table db.t311 using db.st tags(1) +sql create table db.t312 using db.st tags(2) +sql create table db.t313 using db.st tags(3) +sql create table db.t314 using db.st tags(4) +sql create table db.t315 using db.st tags(5) +sql create table db.t316 using db.st tags(6) +sql create table db.t317 using db.st tags(7) +sql create table db.t318 using db.st tags(8) +sql create table db.t319 using db.st tags(9) + +sql insert into db.t300 values(now, 1) +sql insert into db.t301 values(now, 1) +sql insert into db.t302 values(now, 1) +sql insert into db.t303 values(now, 1) +sql insert into db.t304 values(now, 1) +sql insert into db.t305 values(now, 1) +sql insert into db.t306 values(now, 1) +sql insert into db.t307 values(now, 1) +sql insert into db.t308 values(now, 1) +sql insert into db.t309 values(now, 1) +sql insert into db.t310 values(now, 1) +sql insert into db.t311 values(now, 1) +sql insert into db.t312 values(now, 1) +sql insert into db.t313 values(now, 1) +sql insert into db.t314 values(now, 1) +sql insert into db.t315 values(now, 1) +sql insert into db.t316 values(now, 1) +sql insert into db.t317 values(now, 1) +sql insert into db.t318 values(now, 1) +sql insert into db.t319 values(now, 1) + +sql show db.tables +if $rows != 80 then + return -1 +endi + +sql reset query cache +sleep 1000 + +sql select * from db.t000 +if $rows != 1 then + return -1 +endi + +sql select * from db.t100 +if $rows != 1 then + return -1 +endi + +sql select * from db.t200 +if $rows != 1 then + return -1 +endi + +sql select * from db.t300 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 80 then + return -1 +endi + +print ============================ step10 +system sh/exec.sh -n dnode1 -s stop -x SIGINT +system sh/exec.sh -n dnode2 -s stop -x SIGINT +sleep 1000 +system sh/exec.sh -n dnode1 -s start +system sh/exec.sh -n dnode2 -s start +sleep 3000 + +sql reset query cache +sleep 1000 + +sql show db.tables +if $rows != 80 then + return -1 +endi + +sql select * from db.t000 +if $rows != 1 then + return -1 +endi + +sql select * from db.t100 +if $rows != 1 then + return -1 +endi + +sql select * from db.t200 +if $rows != 1 then + return -1 +endi + +sql select * from db.t300 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 80 then + return -1 +endi + +print ============================ step11 +sql_error create table db.t400 using db.st tags(10) +sql show db.tables +if $rows != 50 then + return -1 +endi + +print ============================ step9 + +sql alter database db maxTables 25 +sleep 1000 + +sql create table db.t400 using db.st tags(0) +sql create table db.t401 using db.st tags(1) +sql create table db.t402 using db.st tags(2) +sql create table db.t403 using db.st tags(3) +sql create table db.t404 using db.st tags(4) +sql create table db.t405 using db.st tags(5) +sql create table db.t406 using db.st tags(6) +sql create table db.t407 using db.st tags(7) +sql create table db.t408 using db.st tags(8) +sql create table db.t409 using db.st tags(9) +sql create table db.t410 using db.st tags(0) +sql create table db.t411 using db.st tags(1) +sql create table db.t412 using db.st tags(2) +sql create table db.t413 using db.st tags(3) +sql create table db.t414 using db.st tags(4) +sql create table db.t415 using db.st tags(5) +sql create table db.t416 using db.st tags(6) +sql create table db.t417 using db.st tags(7) +sql create table db.t418 using db.st tags(8) +sql create table db.t419 using db.st tags(9) + +sql insert into db.t400 values(now, 1) +sql insert into db.t401 values(now, 1) +sql insert into db.t402 values(now, 1) +sql insert into db.t403 values(now, 1) +sql insert into db.t404 values(now, 1) +sql insert into db.t405 values(now, 1) +sql insert into db.t406 values(now, 1) +sql insert into db.t407 values(now, 1) +sql insert into db.t408 values(now, 1) +sql insert into db.t409 values(now, 1) +sql insert into db.t410 values(now, 1) +sql insert into db.t411 values(now, 1) +sql insert into db.t412 values(now, 1) +sql insert into db.t413 values(now, 1) +sql insert into db.t414 values(now, 1) +sql insert into db.t415 values(now, 1) +sql insert into db.t416 values(now, 1) +sql insert into db.t417 values(now, 1) +sql insert into db.t418 values(now, 1) +sql insert into db.t419 values(now, 1) + +sql show db.tables +if $rows != 50 then + return -1 +endi + +sql reset query cache +sleep 1000 + +sql select * from db.t000 +if $rows != 1 then + return -1 +endi + +sql select * from db.t100 +if $rows != 1 then + return -1 +endi + +sql select * from db.t200 +if $rows != 1 then + return -1 +endi + +sql select * from db.t300 +if $rows != 1 then + return -1 +endi + +sql select * from db.t400 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 100 then + return -1 +endi + +system sh/exec.sh -n dnode1 -s stop -x SIGINT +system sh/exec.sh -n dnode2 -s stop -x SIGINT \ No newline at end of file diff --git a/tests/script/general/db/alter_tables_v1.sim b/tests/script/general/db/alter_tables_v1.sim new file mode 100644 index 0000000000..17aa746ce3 --- /dev/null +++ b/tests/script/general/db/alter_tables_v1.sim @@ -0,0 +1,352 @@ +system sh/stop_dnodes.sh +system sh/deploy.sh -n dnode1 -i 1 +system sh/cfg.sh -n dnode1 -c wallevel -v 0 +system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 1 +system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 1000 + +system sh/exec.sh -n dnode1 -s start + +sleep 3000 +sql connect + +print ============================ step1 + +sql create database db maxTables 10 +sql create table db.st (ts timestamp, i int) tags(t int) +sql create table db.t0 using db.st tags(0) +sql create table db.t1 using db.st tags(1) +sql create table db.t2 using db.st tags(2) +sql create table db.t3 using db.st tags(3) +sql create table db.t4 using db.st tags(4) +sql create table db.t5 using db.st tags(5) +sql create table db.t6 using db.st tags(6) +sql create table db.t7 using db.st tags(7) +sql create table db.t8 using db.st tags(8) +sql create table db.t9 using db.st tags(9) + +sql show db.tables +if $rows != 10 then + return -1 +endi + +sql insert into db.t0 values(now, 1) +sql insert into db.t1 values(now, 1) +sql insert into db.t2 values(now, 1) +sql insert into db.t3 values(now, 1) +sql insert into db.t4 values(now, 1) +sql insert into db.t5 values(now, 1) +sql insert into db.t6 values(now, 1) +sql insert into db.t7 values(now, 1) +sql insert into db.t8 values(now, 1) +sql insert into db.t9 values(now, 1) + +print ============================ step2 +sql_error create table db.t10 using db.st tags(10) +sql show db.tables +if $rows != 10 then + return -1 +endi + +print ============================ step3 + +sql alter database db maxTables 20 +sleep 1000 + +sql create table db.t10 using db.st tags(0) +sql create table db.t11 using db.st tags(1) +sql create table db.t12 using db.st tags(2) +sql create table db.t13 using db.st tags(3) +sql create table db.t14 using db.st tags(4) +sql create table db.t15 using db.st tags(5) +sql create table db.t16 using db.st tags(6) +sql create table db.t17 using db.st tags(7) +sql create table db.t18 using db.st tags(8) +sql create table db.t19 using db.st tags(9) +sql show db.tables +if $rows != 20 then + return -1 +endi + +sql insert into db.t10 values(now, 1) +sql insert into db.t11 values(now, 1) +sql insert into db.t12 values(now, 1) +sql insert into db.t13 values(now, 1) +sql insert into db.t14 values(now, 1) +sql insert into db.t15 values(now, 1) +sql insert into db.t16 values(now, 1) +sql insert into db.t17 values(now, 1) +sql insert into db.t18 values(now, 1) +sql insert into db.t19 values(now, 1) + +print ============================ step4 +sql_error create table db.t20 using db.st tags(10) +sql show db.tables +if $rows != 20 then + return -1 +endi + +print ============================ step5 + +sql alter database db maxTables 30 +sleep 1000 + +sql create table db.t20 using db.st tags(0) +sql create table db.t21 using db.st tags(1) +sql create table db.t22 using db.st tags(2) +sql create table db.t23 using db.st tags(3) +sql create table db.t24 using db.st tags(4) +sql create table db.t25 using db.st tags(5) +sql create table db.t26 using db.st tags(6) +sql create table db.t27 using db.st tags(7) +sql create table db.t28 using db.st tags(8) +sql create table db.t29 using db.st tags(9) +sql show db.tables +if $rows != 30 then + return -1 +endi + +sql insert into db.t20 values(now, 1) +sql insert into db.t21 values(now, 1) +sql insert into db.t22 values(now, 1) +sql insert into db.t23 values(now, 1) +sql insert into db.t24 values(now, 1) +sql insert into db.t25 values(now, 1) +sql insert into db.t26 values(now, 1) +sql insert into db.t27 values(now, 1) +sql insert into db.t28 values(now, 1) +sql insert into db.t29 values(now, 1) + +print ============================ step6 + +sql reset query cache +sleep 1000 + +sql select * from db.t0 +if $rows != 1 then + return -1 +endi + +sql select * from db.t10 +if $rows != 1 then + return -1 +endi + +sql select * from db.t20 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 30 then + return -1 +endi + +print ============================ step7 +system sh/exec.sh -n dnode1 -s stop -x SIGINT +sleep 1000 +system sh/exec.sh -n dnode1 -s start +sleep 3000 + +sql reset query cache +sleep 1000 + +sql show db.tables +if $rows != 30 then + return -1 +endi + +sql select * from db.t0 +if $rows != 1 then + return -1 +endi + +sql select * from db.t10 +if $rows != 1 then + return -1 +endi + +sql select * from db.t20 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 30 then + return -1 +endi + +print ============================ step8 +sql_error create table db.t30 using db.st tags(10) +sql show db.tables +if $rows != 30 then + return -1 +endi + +print ============================ step9 + +sql alter database db maxTables 40 +sleep 1000 + +sql create table db.t30 using db.st tags(0) +sql create table db.t31 using db.st tags(1) +sql create table db.t32 using db.st tags(2) +sql create table db.t33 using db.st tags(3) +sql create table db.t34 using db.st tags(4) +sql create table db.t35 using db.st tags(5) +sql create table db.t36 using db.st tags(6) +sql create table db.t37 using db.st tags(7) +sql create table db.t38 using db.st tags(8) +sql create table db.t39 using db.st tags(9) + +sql insert into db.t30 values(now, 1) +sql insert into db.t31 values(now, 1) +sql insert into db.t32 values(now, 1) +sql insert into db.t33 values(now, 1) +sql insert into db.t34 values(now, 1) +sql insert into db.t35 values(now, 1) +sql insert into db.t36 values(now, 1) +sql insert into db.t37 values(now, 1) +sql insert into db.t38 values(now, 1) +sql insert into db.t39 values(now, 1) + +sql show db.tables +if $rows != 40 then + return -1 +endi + +sql reset query cache +sleep 1000 + +sql select * from db.t0 +if $rows != 1 then + return -1 +endi + +sql select * from db.t10 +if $rows != 1 then + return -1 +endi + +sql select * from db.t20 +if $rows != 1 then + return -1 +endi + +sql select * from db.t30 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 40 then + return -1 +endi + + +print ============================ step10 +system sh/exec.sh -n dnode1 -s stop -x SIGINT +sleep 1000 +system sh/exec.sh -n dnode1 -s start +sleep 3000 + +sql reset query cache +sleep 1000 + +sql show db.tables +if $rows != 40 then + return -1 +endi + +sql select * from db.t0 +if $rows != 1 then + return -1 +endi + +sql select * from db.t10 +if $rows != 1 then + return -1 +endi + +sql select * from db.t20 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 40 then + return -1 +endi + +print ============================ step11 +sql_error create table db.t40 using db.st tags(10) +sql show db.tables +if $rows != 40 then + return -1 +endi + +print ============================ step12 + +sql alter database db maxTables 50 +sleep 1000 + +sql create table db.t40 using db.st tags(0) +sql create table db.t41 using db.st tags(1) +sql create table db.t42 using db.st tags(2) +sql create table db.t43 using db.st tags(3) +sql create table db.t44 using db.st tags(4) +sql create table db.t45 using db.st tags(5) +sql create table db.t46 using db.st tags(6) +sql create table db.t47 using db.st tags(7) +sql create table db.t48 using db.st tags(8) +sql create table db.t49 using db.st tags(9) + +sql insert into db.t40 values(now, 1) +sql insert into db.t41 values(now, 1) +sql insert into db.t42 values(now, 1) +sql insert into db.t43 values(now, 1) +sql insert into db.t44 values(now, 1) +sql insert into db.t45 values(now, 1) +sql insert into db.t46 values(now, 1) +sql insert into db.t47 values(now, 1) +sql insert into db.t48 values(now, 1) +sql insert into db.t49 values(now, 1) + +sql show db.tables +if $rows != 50 then + return -1 +endi + +sql reset query cache +sleep 1000 + +sql select * from db.t0 +if $rows != 1 then + return -1 +endi + +sql select * from db.t10 +if $rows != 1 then + return -1 +endi + +sql select * from db.t20 +if $rows != 1 then + return -1 +endi + +sql select * from db.t30 +if $rows != 1 then + return -1 +endi + +sql select * from db.t40 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 50 then + return -1 +endi + +system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file diff --git a/tests/script/general/db/alter_tables_v4.sim b/tests/script/general/db/alter_tables_v4.sim new file mode 100644 index 0000000000..db00219ed0 --- /dev/null +++ b/tests/script/general/db/alter_tables_v4.sim @@ -0,0 +1,457 @@ +system sh/stop_dnodes.sh +system sh/deploy.sh -n dnode1 -i 1 +system sh/cfg.sh -n dnode1 -c wallevel -v 0 +system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 +system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 1000 + +system sh/exec.sh -n dnode1 -s start + +sleep 3000 +sql connect + +print ============================ step1 + +sql create database db maxTables 5 +sql create table db.st (ts timestamp, i int) tags(t int) +sql create table db.t000 using db.st tags(0) +sql create table db.t001 using db.st tags(1) +sql create table db.t002 using db.st tags(2) +sql create table db.t003 using db.st tags(3) +sql create table db.t004 using db.st tags(4) +sql create table db.t005 using db.st tags(5) +sql create table db.t006 using db.st tags(6) +sql create table db.t007 using db.st tags(7) +sql create table db.t008 using db.st tags(8) +sql create table db.t009 using db.st tags(9) +sql create table db.t010 using db.st tags(0) +sql create table db.t011 using db.st tags(1) +sql create table db.t012 using db.st tags(2) +sql create table db.t013 using db.st tags(3) +sql create table db.t014 using db.st tags(4) +sql create table db.t015 using db.st tags(5) +sql create table db.t016 using db.st tags(6) +sql create table db.t017 using db.st tags(7) +sql create table db.t018 using db.st tags(8) +sql create table db.t019 using db.st tags(9) + +sql show db.tables +if $rows != 20 then + return -1 +endi + +sql insert into db.t000 values(now, 1) +sql insert into db.t001 values(now, 1) +sql insert into db.t002 values(now, 1) +sql insert into db.t003 values(now, 1) +sql insert into db.t004 values(now, 1) +sql insert into db.t005 values(now, 1) +sql insert into db.t006 values(now, 1) +sql insert into db.t007 values(now, 1) +sql insert into db.t008 values(now, 1) +sql insert into db.t009 values(now, 1) +sql insert into db.t010 values(now, 1) +sql insert into db.t011 values(now, 1) +sql insert into db.t012 values(now, 1) +sql insert into db.t013 values(now, 1) +sql insert into db.t014 values(now, 1) +sql insert into db.t015 values(now, 1) +sql insert into db.t016 values(now, 1) +sql insert into db.t017 values(now, 1) +sql insert into db.t018 values(now, 1) +sql insert into db.t019 values(now, 1) + +print ============================ step2 +sql_error create table db.t100 using db.st tags(10) +sql show db.tables +if $rows != 20 then + return -1 +endi + +print ============================ step3 + +sql alter database db maxTables 10 +sleep 1000 + +sql create table db.t100 using db.st tags(0) +sql create table db.t101 using db.st tags(1) +sql create table db.t102 using db.st tags(2) +sql create table db.t103 using db.st tags(3) +sql create table db.t104 using db.st tags(4) +sql create table db.t105 using db.st tags(5) +sql create table db.t106 using db.st tags(6) +sql create table db.t107 using db.st tags(7) +sql create table db.t108 using db.st tags(8) +sql create table db.t109 using db.st tags(9) +sql create table db.t110 using db.st tags(0) +sql create table db.t111 using db.st tags(1) +sql create table db.t112 using db.st tags(2) +sql create table db.t113 using db.st tags(3) +sql create table db.t114 using db.st tags(4) +sql create table db.t115 using db.st tags(5) +sql create table db.t116 using db.st tags(6) +sql create table db.t117 using db.st tags(7) +sql create table db.t118 using db.st tags(8) +sql create table db.t119 using db.st tags(9) +sql show db.tables +if $rows != 40 then + return -1 +endi + + +sql insert into db.t100 values(now, 1) +sql insert into db.t101 values(now, 1) +sql insert into db.t102 values(now, 1) +sql insert into db.t103 values(now, 1) +sql insert into db.t104 values(now, 1) +sql insert into db.t105 values(now, 1) +sql insert into db.t106 values(now, 1) +sql insert into db.t107 values(now, 1) +sql insert into db.t108 values(now, 1) +sql insert into db.t109 values(now, 1) +sql insert into db.t110 values(now, 1) +sql insert into db.t111 values(now, 1) +sql insert into db.t112 values(now, 1) +sql insert into db.t113 values(now, 1) +sql insert into db.t114 values(now, 1) +sql insert into db.t115 values(now, 1) +sql insert into db.t116 values(now, 1) +sql insert into db.t117 values(now, 1) +sql insert into db.t118 values(now, 1) +sql insert into db.t119 values(now, 1) + +print ============================ step4 +sql_error create table db.t200 using db.st tags(10) +sql show db.tables +if $rows != 40 then + return -1 +endi + +print ============================ step5 + +sql alter database db maxTables 15 +sleep 1000 + +sql create table db.t200 using db.st tags(0) +sql create table db.t201 using db.st tags(1) +sql create table db.t202 using db.st tags(2) +sql create table db.t203 using db.st tags(3) +sql create table db.t204 using db.st tags(4) +sql create table db.t205 using db.st tags(5) +sql create table db.t206 using db.st tags(6) +sql create table db.t207 using db.st tags(7) +sql create table db.t208 using db.st tags(8) +sql create table db.t209 using db.st tags(9) +sql create table db.t210 using db.st tags(0) +sql create table db.t211 using db.st tags(1) +sql create table db.t212 using db.st tags(2) +sql create table db.t213 using db.st tags(3) +sql create table db.t214 using db.st tags(4) +sql create table db.t215 using db.st tags(5) +sql create table db.t216 using db.st tags(6) +sql create table db.t217 using db.st tags(7) +sql create table db.t218 using db.st tags(8) +sql create table db.t219 using db.st tags(9) +sql show db.tables +if $rows != 60 then + return -1 +endi + +sql insert into db.t200 values(now, 1) +sql insert into db.t201 values(now, 1) +sql insert into db.t202 values(now, 1) +sql insert into db.t203 values(now, 1) +sql insert into db.t204 values(now, 1) +sql insert into db.t205 values(now, 1) +sql insert into db.t206 values(now, 1) +sql insert into db.t207 values(now, 1) +sql insert into db.t208 values(now, 1) +sql insert into db.t209 values(now, 1) +sql insert into db.t210 values(now, 1) +sql insert into db.t211 values(now, 1) +sql insert into db.t212 values(now, 1) +sql insert into db.t213 values(now, 1) +sql insert into db.t214 values(now, 1) +sql insert into db.t215 values(now, 1) +sql insert into db.t216 values(now, 1) +sql insert into db.t217 values(now, 1) +sql insert into db.t218 values(now, 1) +sql insert into db.t219 values(now, 1) + +print ============================ step6 + +sql reset query cache +sleep 1000 + +sql select * from db.t000 +if $rows != 1 then + return -1 +endi + +sql select * from db.t100 +if $rows != 1 then + return -1 +endi + +sql select * from db.t200 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 60 then + return -1 +endi + +print ============================ step7 +system sh/exec.sh -n dnode1 -s stop -x SIGINT +sleep 1000 +system sh/exec.sh -n dnode1 -s start +sleep 3000 + +sql reset query cache +sleep 1000 + +sql show db.tables +if $rows != 60 then + return -1 +endi + +sql select * from db.t000 +if $rows != 1 then + return -1 +endi + +sql select * from db.t100 +if $rows != 1 then + return -1 +endi + +sql select * from db.t200 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 60 then + return -1 +endi + +print ============================ step8 +sql_error create table db.t300 using db.st tags(10) +sql show db.tables +if $rows != 60 then + return -1 +endi + +print ============================ step9 + +sql alter database db maxTables 20 +sleep 1000 + +sql create table db.t300 using db.st tags(0) +sql create table db.t301 using db.st tags(1) +sql create table db.t302 using db.st tags(2) +sql create table db.t303 using db.st tags(3) +sql create table db.t304 using db.st tags(4) +sql create table db.t305 using db.st tags(5) +sql create table db.t306 using db.st tags(6) +sql create table db.t307 using db.st tags(7) +sql create table db.t308 using db.st tags(8) +sql create table db.t309 using db.st tags(9) +sql create table db.t310 using db.st tags(0) +sql create table db.t311 using db.st tags(1) +sql create table db.t312 using db.st tags(2) +sql create table db.t313 using db.st tags(3) +sql create table db.t314 using db.st tags(4) +sql create table db.t315 using db.st tags(5) +sql create table db.t316 using db.st tags(6) +sql create table db.t317 using db.st tags(7) +sql create table db.t318 using db.st tags(8) +sql create table db.t319 using db.st tags(9) + +sql insert into db.t300 values(now, 1) +sql insert into db.t301 values(now, 1) +sql insert into db.t302 values(now, 1) +sql insert into db.t303 values(now, 1) +sql insert into db.t304 values(now, 1) +sql insert into db.t305 values(now, 1) +sql insert into db.t306 values(now, 1) +sql insert into db.t307 values(now, 1) +sql insert into db.t308 values(now, 1) +sql insert into db.t309 values(now, 1) +sql insert into db.t310 values(now, 1) +sql insert into db.t311 values(now, 1) +sql insert into db.t312 values(now, 1) +sql insert into db.t313 values(now, 1) +sql insert into db.t314 values(now, 1) +sql insert into db.t315 values(now, 1) +sql insert into db.t316 values(now, 1) +sql insert into db.t317 values(now, 1) +sql insert into db.t318 values(now, 1) +sql insert into db.t319 values(now, 1) + +sql show db.tables +if $rows != 80 then + return -1 +endi + +sql reset query cache +sleep 1000 + +sql select * from db.t000 +if $rows != 1 then + return -1 +endi + +sql select * from db.t100 +if $rows != 1 then + return -1 +endi + +sql select * from db.t200 +if $rows != 1 then + return -1 +endi + +sql select * from db.t300 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 80 then + return -1 +endi + +print ============================ step10 +system sh/exec.sh -n dnode1 -s stop -x SIGINT +sleep 1000 +system sh/exec.sh -n dnode1 -s start +sleep 3000 + +sql reset query cache +sleep 1000 + +sql show db.tables +if $rows != 80 then + return -1 +endi + +sql select * from db.t000 +if $rows != 1 then + return -1 +endi + +sql select * from db.t100 +if $rows != 1 then + return -1 +endi + +sql select * from db.t200 +if $rows != 1 then + return -1 +endi + +sql select * from db.t300 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 80 then + return -1 +endi + +print ============================ step11 +sql_error create table db.t400 using db.st tags(10) +sql show db.tables +if $rows != 80 then + return -1 +endi + +print ============================ step12 + +sql alter database db maxTables 25 +sleep 1000 + +sql create table db.t400 using db.st tags(0) +sql create table db.t401 using db.st tags(1) +sql create table db.t402 using db.st tags(2) +sql create table db.t403 using db.st tags(3) +sql create table db.t404 using db.st tags(4) +sql create table db.t405 using db.st tags(5) +sql create table db.t406 using db.st tags(6) +sql create table db.t407 using db.st tags(7) +sql create table db.t408 using db.st tags(8) +sql create table db.t409 using db.st tags(9) +sql create table db.t410 using db.st tags(0) +sql create table db.t411 using db.st tags(1) +sql create table db.t412 using db.st tags(2) +sql create table db.t413 using db.st tags(3) +sql create table db.t414 using db.st tags(4) +sql create table db.t415 using db.st tags(5) +sql create table db.t416 using db.st tags(6) +sql create table db.t417 using db.st tags(7) +sql create table db.t418 using db.st tags(8) +sql create table db.t419 using db.st tags(9) + +sql insert into db.t400 values(now, 1) +sql insert into db.t401 values(now, 1) +sql insert into db.t402 values(now, 1) +sql insert into db.t403 values(now, 1) +sql insert into db.t404 values(now, 1) +sql insert into db.t405 values(now, 1) +sql insert into db.t406 values(now, 1) +sql insert into db.t407 values(now, 1) +sql insert into db.t408 values(now, 1) +sql insert into db.t409 values(now, 1) +sql insert into db.t410 values(now, 1) +sql insert into db.t411 values(now, 1) +sql insert into db.t412 values(now, 1) +sql insert into db.t413 values(now, 1) +sql insert into db.t414 values(now, 1) +sql insert into db.t415 values(now, 1) +sql insert into db.t416 values(now, 1) +sql insert into db.t417 values(now, 1) +sql insert into db.t418 values(now, 1) +sql insert into db.t419 values(now, 1) + +sql show db.tables +if $rows != 100 then + return -1 +endi + +sql reset query cache +sleep 1000 + +sql select * from db.t000 +if $rows != 1 then + return -1 +endi + +sql select * from db.t100 +if $rows != 1 then + return -1 +endi + +sql select * from db.t200 +if $rows != 1 then + return -1 +endi + +sql select * from db.t300 +if $rows != 1 then + return -1 +endi + +sql select * from db.t400 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 100 then + return -1 +endi + +system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file diff --git a/tests/script/general/db/alter_vgroups.sim b/tests/script/general/db/alter_vgroups.sim new file mode 100644 index 0000000000..1aae7b9383 --- /dev/null +++ b/tests/script/general/db/alter_vgroups.sim @@ -0,0 +1,210 @@ +system sh/stop_dnodes.sh +system sh/deploy.sh -n dnode1 -i 1 +system sh/cfg.sh -n dnode1 -c wallevel -v 0 +system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 1 +system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 1000 + +system sh/exec.sh -n dnode1 -s start + +sleep 3000 +sql connect + +print ============================ step1 + +sql create database db maxTables 20 +sql create table db.st (ts timestamp, i int) tags(t int) +sql create table db.t000 using db.st tags(0) +sql create table db.t001 using db.st tags(1) +sql create table db.t002 using db.st tags(2) +sql create table db.t003 using db.st tags(3) +sql create table db.t004 using db.st tags(4) +sql create table db.t005 using db.st tags(5) +sql create table db.t006 using db.st tags(6) +sql create table db.t007 using db.st tags(7) +sql create table db.t008 using db.st tags(8) +sql create table db.t009 using db.st tags(9) +sql create table db.t010 using db.st tags(0) +sql create table db.t011 using db.st tags(1) +sql create table db.t012 using db.st tags(2) +sql create table db.t013 using db.st tags(3) +sql create table db.t014 using db.st tags(4) +sql create table db.t015 using db.st tags(5) +sql create table db.t016 using db.st tags(6) +sql create table db.t017 using db.st tags(7) +sql create table db.t018 using db.st tags(8) +sql create table db.t019 using db.st tags(9) + +sql show db.tables +if $rows != 20 then + return -1 +endi + +sql insert into db.t000 values(now, 1) +sql insert into db.t001 values(now, 1) +sql insert into db.t002 values(now, 1) +sql insert into db.t003 values(now, 1) +sql insert into db.t004 values(now, 1) +sql insert into db.t005 values(now, 1) +sql insert into db.t006 values(now, 1) +sql insert into db.t007 values(now, 1) +sql insert into db.t008 values(now, 1) +sql insert into db.t009 values(now, 1) +sql insert into db.t010 values(now, 1) +sql insert into db.t011 values(now, 1) +sql insert into db.t012 values(now, 1) +sql insert into db.t013 values(now, 1) +sql insert into db.t014 values(now, 1) +sql insert into db.t015 values(now, 1) +sql insert into db.t016 values(now, 1) +sql insert into db.t017 values(now, 1) +sql insert into db.t018 values(now, 1) +sql insert into db.t019 values(now, 1) + +print ============================ step2 +sql_error create table db.t100 using db.st tags(10) +sql show db.tables +if $rows != 20 then + return -1 +endi + +print ============================ step3 +system sh/exec.sh -n dnode1 -s stop -x SIGINT +system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 2 +sleep 1000 +system sh/exec.sh -n dnode1 -s start +sleep 3000 + +sql create table db.t100 using db.st tags(0) +sql create table db.t101 using db.st tags(1) +sql create table db.t102 using db.st tags(2) +sql create table db.t103 using db.st tags(3) +sql create table db.t104 using db.st tags(4) +sql create table db.t105 using db.st tags(5) +sql create table db.t106 using db.st tags(6) +sql create table db.t107 using db.st tags(7) +sql create table db.t108 using db.st tags(8) +sql create table db.t109 using db.st tags(9) +sql create table db.t110 using db.st tags(0) +sql create table db.t111 using db.st tags(1) +sql create table db.t112 using db.st tags(2) +sql create table db.t113 using db.st tags(3) +sql create table db.t114 using db.st tags(4) +sql create table db.t115 using db.st tags(5) +sql create table db.t116 using db.st tags(6) +sql create table db.t117 using db.st tags(7) +sql create table db.t118 using db.st tags(8) +sql create table db.t119 using db.st tags(9) +sql show db.tables +if $rows != 40 then + return -1 +endi + + +sql insert into db.t100 values(now, 1) +sql insert into db.t101 values(now, 1) +sql insert into db.t102 values(now, 1) +sql insert into db.t103 values(now, 1) +sql insert into db.t104 values(now, 1) +sql insert into db.t105 values(now, 1) +sql insert into db.t106 values(now, 1) +sql insert into db.t107 values(now, 1) +sql insert into db.t108 values(now, 1) +sql insert into db.t109 values(now, 1) +sql insert into db.t110 values(now, 1) +sql insert into db.t111 values(now, 1) +sql insert into db.t112 values(now, 1) +sql insert into db.t113 values(now, 1) +sql insert into db.t114 values(now, 1) +sql insert into db.t115 values(now, 1) +sql insert into db.t116 values(now, 1) +sql insert into db.t117 values(now, 1) +sql insert into db.t118 values(now, 1) +sql insert into db.t119 values(now, 1) + +print ============================ step4 +sql_error create table db.t200 using db.st tags(10) +sql show db.tables +if $rows != 40 then + return -1 +endi + +print ============================ step5 + +system sh/exec.sh -n dnode1 -s stop -x SIGINT +system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 3 +sleep 1000 +system sh/exec.sh -n dnode1 -s start +sleep 3000 + +sql create table db.t200 using db.st tags(0) +sql create table db.t201 using db.st tags(1) +sql create table db.t202 using db.st tags(2) +sql create table db.t203 using db.st tags(3) +sql create table db.t204 using db.st tags(4) +sql create table db.t205 using db.st tags(5) +sql create table db.t206 using db.st tags(6) +sql create table db.t207 using db.st tags(7) +sql create table db.t208 using db.st tags(8) +sql create table db.t209 using db.st tags(9) +sql create table db.t210 using db.st tags(0) +sql create table db.t211 using db.st tags(1) +sql create table db.t212 using db.st tags(2) +sql create table db.t213 using db.st tags(3) +sql create table db.t214 using db.st tags(4) +sql create table db.t215 using db.st tags(5) +sql create table db.t216 using db.st tags(6) +sql create table db.t217 using db.st tags(7) +sql create table db.t218 using db.st tags(8) +sql create table db.t219 using db.st tags(9) +sql show db.tables +if $rows != 60 then + return -1 +endi + +sql insert into db.t200 values(now, 1) +sql insert into db.t201 values(now, 1) +sql insert into db.t202 values(now, 1) +sql insert into db.t203 values(now, 1) +sql insert into db.t204 values(now, 1) +sql insert into db.t205 values(now, 1) +sql insert into db.t206 values(now, 1) +sql insert into db.t207 values(now, 1) +sql insert into db.t208 values(now, 1) +sql insert into db.t209 values(now, 1) +sql insert into db.t210 values(now, 1) +sql insert into db.t211 values(now, 1) +sql insert into db.t212 values(now, 1) +sql insert into db.t213 values(now, 1) +sql insert into db.t214 values(now, 1) +sql insert into db.t215 values(now, 1) +sql insert into db.t216 values(now, 1) +sql insert into db.t217 values(now, 1) +sql insert into db.t218 values(now, 1) +sql insert into db.t219 values(now, 1) + +print ============================ step6 + +sql reset query cache +sleep 1000 + +sql select * from db.t000 +if $rows != 1 then + return -1 +endi + +sql select * from db.t100 +if $rows != 1 then + return -1 +endi + +sql select * from db.t200 +if $rows != 1 then + return -1 +endi + +sql select * from db.st +if $rows != 60 then + return -1 +endi + +system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file diff --git a/tests/script/jenkins/basic.txt b/tests/script/jenkins/basic.txt index ea2c538ddf..027204af5b 100644 --- a/tests/script/jenkins/basic.txt +++ b/tests/script/jenkins/basic.txt @@ -44,6 +44,10 @@ cd ../../../debug; make ./test.sh -f general/compute/top.sim ./test.sh -f general/db/alter_option.sim +#./test.sh -f general/db/alter_tables_d2.sim +./test.sh -f general/db/alter_tables_v1.sim +./test.sh -f general/db/alter_tables_v4.sim +./test.sh -f general/db/alter_vgroups.sim ./test.sh -f general/db/basic.sim ./test.sh -f general/db/basic1.sim ./test.sh -f general/db/basic2.sim @@ -103,18 +107,18 @@ cd ../../../debug; make #unsupport ./test.sh -f general/parser/alter_stable.sim ./test.sh -f general/parser/auto_create_tb.sim ./test.sh -f general/parser/auto_create_tb_drop_tb.sim -#liao ./test.sh -f general/parser/col_arithmetic_operation.sim -./test.sh -f general/parser/columnValue.sim -#liao ./test.sh -f general/parser/commit.sim +./test.sh -f general/parser/col_arithmetic_operation.sim +#/test.sh -f general/parser/columnValue.sim +./test.sh -f general/parser/commit.sim # ./test.sh -f general/parser/create_db.sim -# ./test.sh -f general/parser/create_mt.sim -# ./test.sh -f general/parser/create_tb.sim -# ./test.sh -f general/parser/dbtbnameValidate.sim +./test.sh -f general/parser/create_mt.sim +./test.sh -f general/parser/create_tb.sim +./test.sh -f general/parser/dbtbnameValidate.sim ./test.sh -f general/parser/import_commit1.sim ./test.sh -f general/parser/import_commit2.sim ./test.sh -f general/parser/import_commit3.sim -# ./test.sh -f general/parser/insert_tb.sim -# ./test.sh -f general/parser/first_last.sim +./test.sh -f general/parser/insert_tb.sim +./test.sh -f general/parser/first_last.sim # ./test.sh -f general/parser/import_file.sim # ./test.sh -f general/parser/lastrow.sim # ./test.sh -f general/parser/nchar.sim @@ -271,7 +275,7 @@ cd ../../../debug; make ./test.sh -u -f unique/dnode/offline1.sim #jeff ./test.sh -u -f unique/dnode/offline2.sim ./test.sh -u -f unique/dnode/remove1.sim -#hongze ./test.sh -u -f unique/dnode/remove2.sim +#jeff ./test.sh -u -f unique/dnode/remove2.sim ./test.sh -u -f unique/dnode/vnode_clean.sim ./test.sh -u -f unique/http/admin.sim