[TD-3321] <fix>: describe stb with better logic. (#5559)
Co-authored-by: Shuduo Sang <sdsang@taosdata.com>
This commit is contained in:
parent
6e3322d35d
commit
afd0869a7c
|
@ -187,6 +187,7 @@ typedef struct SArguments_S {
|
||||||
char * tb_prefix;
|
char * tb_prefix;
|
||||||
char * sqlFile;
|
char * sqlFile;
|
||||||
bool use_metric;
|
bool use_metric;
|
||||||
|
bool drop_database;
|
||||||
bool insert_only;
|
bool insert_only;
|
||||||
bool answer_yes;
|
bool answer_yes;
|
||||||
bool debug_print;
|
bool debug_print;
|
||||||
|
@ -315,7 +316,7 @@ typedef struct SDbCfg_S {
|
||||||
|
|
||||||
typedef struct SDataBase_S {
|
typedef struct SDataBase_S {
|
||||||
char dbName[MAX_DB_NAME_SIZE];
|
char dbName[MAX_DB_NAME_SIZE];
|
||||||
int drop; // 0: use exists, 1: if exists, drop then new create
|
bool drop; // 0: use exists, 1: if exists, drop then new create
|
||||||
SDbCfg dbCfg;
|
SDbCfg dbCfg;
|
||||||
int superTblCount;
|
int superTblCount;
|
||||||
SSuperTable superTbls[MAX_SUPER_TABLE_COUNT];
|
SSuperTable superTbls[MAX_SUPER_TABLE_COUNT];
|
||||||
|
@ -525,6 +526,7 @@ SArguments g_args = {
|
||||||
"t", // tb_prefix
|
"t", // tb_prefix
|
||||||
NULL, // sqlFile
|
NULL, // sqlFile
|
||||||
true, // use_metric
|
true, // use_metric
|
||||||
|
true, // drop_database
|
||||||
true, // insert_only
|
true, // insert_only
|
||||||
false, // debug_print
|
false, // debug_print
|
||||||
false, // verbose_print
|
false, // verbose_print
|
||||||
|
@ -2112,6 +2114,7 @@ static int getAllChildNameOfSuperTable(TAOS * taos, char* dbName,
|
||||||
|
|
||||||
static int getSuperTableFromServer(TAOS * taos, char* dbName,
|
static int getSuperTableFromServer(TAOS * taos, char* dbName,
|
||||||
SSuperTable* superTbls) {
|
SSuperTable* superTbls) {
|
||||||
|
|
||||||
char command[BUFFER_SIZE] = "\0";
|
char command[BUFFER_SIZE] = "\0";
|
||||||
TAOS_RES * res;
|
TAOS_RES * res;
|
||||||
TAOS_ROW row = NULL;
|
TAOS_ROW row = NULL;
|
||||||
|
@ -2337,7 +2340,7 @@ static int createDatabases() {
|
||||||
}
|
}
|
||||||
char command[BUFFER_SIZE] = "\0";
|
char command[BUFFER_SIZE] = "\0";
|
||||||
|
|
||||||
for (int i = 0; i < g_Dbs.dbCount; i++) {
|
for (int i = 0; i < g_Dbs.dbCount; i++) {
|
||||||
if (g_Dbs.db[i].drop) {
|
if (g_Dbs.db[i].drop) {
|
||||||
sprintf(command, "drop database if exists %s;", g_Dbs.db[i].dbName);
|
sprintf(command, "drop database if exists %s;", g_Dbs.db[i].dbName);
|
||||||
verbosePrint("%s() %d command: %s\n", __func__, __LINE__, command);
|
verbosePrint("%s() %d command: %s\n", __func__, __LINE__, command);
|
||||||
|
@ -2348,7 +2351,7 @@ static int createDatabases() {
|
||||||
}
|
}
|
||||||
|
|
||||||
int dataLen = 0;
|
int dataLen = 0;
|
||||||
dataLen += snprintf(command + dataLen,
|
dataLen += snprintf(command + dataLen,
|
||||||
BUFFER_SIZE - dataLen, "create database if not exists %s", g_Dbs.db[i].dbName);
|
BUFFER_SIZE - dataLen, "create database if not exists %s", g_Dbs.db[i].dbName);
|
||||||
|
|
||||||
if (g_Dbs.db[i].dbCfg.blocks > 0) {
|
if (g_Dbs.db[i].dbCfg.blocks > 0) {
|
||||||
|
@ -2425,25 +2428,38 @@ static int createDatabases() {
|
||||||
debugPrint("%s() %d supertbl count:%d\n",
|
debugPrint("%s() %d supertbl count:%d\n",
|
||||||
__func__, __LINE__, g_Dbs.db[i].superTblCount);
|
__func__, __LINE__, g_Dbs.db[i].superTblCount);
|
||||||
for (int j = 0; j < g_Dbs.db[i].superTblCount; j++) {
|
for (int j = 0; j < g_Dbs.db[i].superTblCount; j++) {
|
||||||
// describe super table, if exists
|
if ((g_Dbs.db[i].drop) || (g_Dbs.db[i].superTbls[j].superTblExists == TBL_NO_EXISTS)) {
|
||||||
|
ret = createSuperTable(taos, g_Dbs.db[i].dbName,
|
||||||
|
&g_Dbs.db[i].superTbls[j], g_Dbs.use_metric);
|
||||||
|
|
||||||
|
if (0 != ret) {
|
||||||
|
errorPrint("\ncreate super table %d failed!\n\n", j);
|
||||||
|
taos_close(taos);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* describe super table, if exists
|
||||||
sprintf(command, "describe %s.%s;", g_Dbs.db[i].dbName,
|
sprintf(command, "describe %s.%s;", g_Dbs.db[i].dbName,
|
||||||
g_Dbs.db[i].superTbls[j].sTblName);
|
g_Dbs.db[i].superTbls[j].sTblName);
|
||||||
verbosePrint("%s() %d command: %s\n", __func__, __LINE__, command);
|
verbosePrint("%s() %d command: %s\n", __func__, __LINE__, command);
|
||||||
|
|
||||||
if (0 != queryDbExec(taos, command, NO_INSERT_TYPE)) {
|
if (0 != queryDbExec(taos, command, NO_INSERT_TYPE)) {
|
||||||
g_Dbs.db[i].superTbls[j].superTblExists = TBL_NO_EXISTS;
|
g_Dbs.db[i].superTbls[j].superTblExists = TBL_NO_EXISTS;
|
||||||
ret = createSuperTable(taos, g_Dbs.db[i].dbName,
|
|
||||||
&g_Dbs.db[i].superTbls[j], g_Dbs.use_metric);
|
|
||||||
} else {
|
} else {
|
||||||
|
*/
|
||||||
g_Dbs.db[i].superTbls[j].superTblExists = TBL_ALREADY_EXISTS;
|
g_Dbs.db[i].superTbls[j].superTblExists = TBL_ALREADY_EXISTS;
|
||||||
ret = getSuperTableFromServer(taos, g_Dbs.db[i].dbName,
|
ret = getSuperTableFromServer(taos, g_Dbs.db[i].dbName,
|
||||||
&g_Dbs.db[i].superTbls[j]);
|
&g_Dbs.db[i].superTbls[j]);
|
||||||
}
|
//}
|
||||||
|
if (0 != ret) {
|
||||||
|
errorPrint("\nget super table %s.%s info failed!\n\n", g_Dbs.db[i].dbName,
|
||||||
|
g_Dbs.db[i].superTbls[j].sTblName);
|
||||||
|
taos_close(taos);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (0 != ret) {
|
|
||||||
printf("\ncreate super table %d failed!\n\n", j);
|
|
||||||
taos_close(taos);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3122,15 +3138,16 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
|
||||||
|
|
||||||
cJSON *drop = cJSON_GetObjectItem(dbinfo, "drop");
|
cJSON *drop = cJSON_GetObjectItem(dbinfo, "drop");
|
||||||
if (drop && drop->type == cJSON_String && drop->valuestring != NULL) {
|
if (drop && drop->type == cJSON_String && drop->valuestring != NULL) {
|
||||||
if (0 == strncasecmp(drop->valuestring, "yes", 3)) {
|
if (0 == strncasecmp(drop->valuestring, "yes", strlen("yes"))) {
|
||||||
g_Dbs.db[i].drop = 1;
|
g_Dbs.db[i].drop = true;
|
||||||
} else {
|
} else {
|
||||||
g_Dbs.db[i].drop = 0;
|
g_Dbs.db[i].drop = false;
|
||||||
}
|
}
|
||||||
} else if (!drop) {
|
} else if (!drop) {
|
||||||
g_Dbs.db[i].drop = 0;
|
g_Dbs.db[i].drop = g_args.drop_database;
|
||||||
} else {
|
} else {
|
||||||
printf("ERROR: failed to read json, drop not found\n");
|
errorPrint("%s() LN%d, failed to read json, drop input mistake\n",
|
||||||
|
__func__, __LINE__);
|
||||||
goto PARSE_OVER;
|
goto PARSE_OVER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5921,7 +5938,8 @@ static void initOfInsertMeta() {
|
||||||
tstrncpy(g_Dbs.user, TSDB_DEFAULT_USER, MAX_DB_NAME_SIZE);
|
tstrncpy(g_Dbs.user, TSDB_DEFAULT_USER, MAX_DB_NAME_SIZE);
|
||||||
tstrncpy(g_Dbs.password, TSDB_DEFAULT_PASS, MAX_DB_NAME_SIZE);
|
tstrncpy(g_Dbs.password, TSDB_DEFAULT_PASS, MAX_DB_NAME_SIZE);
|
||||||
g_Dbs.threadCount = 2;
|
g_Dbs.threadCount = 2;
|
||||||
g_Dbs.use_metric = true;
|
|
||||||
|
g_Dbs.use_metric = g_args.use_metric;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void initOfQueryMeta() {
|
static void initOfQueryMeta() {
|
||||||
|
@ -6130,7 +6148,8 @@ static void querySqlFile(TAOS* taos, char* sqlFile)
|
||||||
|
|
||||||
static void testMetaFile() {
|
static void testMetaFile() {
|
||||||
if (INSERT_TEST == g_args.test_mode) {
|
if (INSERT_TEST == g_args.test_mode) {
|
||||||
if (g_Dbs.cfgDir[0]) taos_options(TSDB_OPTION_CONFIGDIR, g_Dbs.cfgDir);
|
if (g_Dbs.cfgDir[0])
|
||||||
|
taos_options(TSDB_OPTION_CONFIGDIR, g_Dbs.cfgDir);
|
||||||
|
|
||||||
insertTestProcess();
|
insertTestProcess();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue