[TD-3147] <fix>: support insert interval. refactor.
This commit is contained in:
parent
17dc360f64
commit
471dc33093
|
@ -458,9 +458,9 @@ void resetAfterAnsiEscape(void) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int createDatabases();
|
int createDatabases();
|
||||||
static void createChildTables();
|
void createChildTables();
|
||||||
static int queryDbExec(TAOS *taos, char *command, int type);
|
int queryDbExec(TAOS *taos, char *command, int type);
|
||||||
|
|
||||||
/* ************ Global variables ************ */
|
/* ************ Global variables ************ */
|
||||||
|
|
||||||
|
@ -774,7 +774,7 @@ void tmfree(char *buf) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int queryDbExec(TAOS *taos, char *command, int type) {
|
int queryDbExec(TAOS *taos, char *command, int type) {
|
||||||
int i;
|
int i;
|
||||||
TAOS_RES *res = NULL;
|
TAOS_RES *res = NULL;
|
||||||
int32_t code = -1;
|
int32_t code = -1;
|
||||||
|
@ -1921,10 +1921,14 @@ static int createSuperTable(TAOS * taos, char* dbName, SSuperTable* superTbls,
|
||||||
char* dataType = superTbls->columns[colIndex].dataType;
|
char* dataType = superTbls->columns[colIndex].dataType;
|
||||||
|
|
||||||
if (strcasecmp(dataType, "BINARY") == 0) {
|
if (strcasecmp(dataType, "BINARY") == 0) {
|
||||||
len += snprintf(cols + len, STRING_LEN - len, ", col%d %s(%d)", colIndex, "BINARY", superTbls->columns[colIndex].dataLen);
|
len += snprintf(cols + len, STRING_LEN - len,
|
||||||
|
", col%d %s(%d)", colIndex, "BINARY",
|
||||||
|
superTbls->columns[colIndex].dataLen);
|
||||||
lenOfOneRow += superTbls->columns[colIndex].dataLen + 3;
|
lenOfOneRow += superTbls->columns[colIndex].dataLen + 3;
|
||||||
} else if (strcasecmp(dataType, "NCHAR") == 0) {
|
} else if (strcasecmp(dataType, "NCHAR") == 0) {
|
||||||
len += snprintf(cols + len, STRING_LEN - len, ", col%d %s(%d)", colIndex, "NCHAR", superTbls->columns[colIndex].dataLen);
|
len += snprintf(cols + len, STRING_LEN - len,
|
||||||
|
", col%d %s(%d)", colIndex, "NCHAR",
|
||||||
|
superTbls->columns[colIndex].dataLen);
|
||||||
lenOfOneRow += superTbls->columns[colIndex].dataLen + 3;
|
lenOfOneRow += superTbls->columns[colIndex].dataLen + 3;
|
||||||
} else if (strcasecmp(dataType, "INT") == 0) {
|
} else if (strcasecmp(dataType, "INT") == 0) {
|
||||||
len += snprintf(cols + len, STRING_LEN - len, ", col%d %s", colIndex, "INT");
|
len += snprintf(cols + len, STRING_LEN - len, ", col%d %s", colIndex, "INT");
|
||||||
|
@ -2028,65 +2032,77 @@ static int createSuperTable(TAOS * taos, char* dbName, SSuperTable* superTbls,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int createDatabases() {
|
int createDatabases() {
|
||||||
TAOS * taos = NULL;
|
TAOS * taos = NULL;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
taos = taos_connect(g_Dbs.host, g_Dbs.user, g_Dbs.password, NULL, g_Dbs.port);
|
taos = taos_connect(g_Dbs.host, g_Dbs.user, g_Dbs.password, NULL, g_Dbs.port);
|
||||||
if (taos == NULL) {
|
if (taos == NULL) {
|
||||||
fprintf(stderr, "Failed to connect to TDengine, reason:%s\n", taos_errstr(NULL));
|
fprintf(stderr, "Failed to connect to TDengine, reason:%s\n", taos_errstr(NULL));
|
||||||
exit(-1);
|
return -1;
|
||||||
}
|
}
|
||||||
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);
|
||||||
debugPrint("DEBUG %s() %d \n", __func__, __LINE__);
|
debugPrint("DEBUG %s() %d \n", __func__, __LINE__);
|
||||||
if (0 != queryDbExec(taos, command, NO_INSERT_TYPE)) {
|
if (0 != queryDbExec(taos, command, NO_INSERT_TYPE)) {
|
||||||
taos_close(taos);
|
taos_close(taos);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int dataLen = 0;
|
int dataLen = 0;
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "create database if not exists %s ", g_Dbs.db[i].dbName);
|
dataLen += snprintf(command + dataLen,
|
||||||
|
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) {
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "blocks %d ", g_Dbs.db[i].dbCfg.blocks);
|
dataLen += snprintf(command + dataLen,
|
||||||
|
BUFFER_SIZE - dataLen, "blocks %d ", g_Dbs.db[i].dbCfg.blocks);
|
||||||
}
|
}
|
||||||
if (g_Dbs.db[i].dbCfg.cache > 0) {
|
if (g_Dbs.db[i].dbCfg.cache > 0) {
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "cache %d ", g_Dbs.db[i].dbCfg.cache);
|
dataLen += snprintf(command + dataLen,
|
||||||
|
BUFFER_SIZE - dataLen, "cache %d ", g_Dbs.db[i].dbCfg.cache);
|
||||||
}
|
}
|
||||||
if (g_Dbs.db[i].dbCfg.days > 0) {
|
if (g_Dbs.db[i].dbCfg.days > 0) {
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "days %d ", g_Dbs.db[i].dbCfg.days);
|
dataLen += snprintf(command + dataLen,
|
||||||
|
BUFFER_SIZE - dataLen, "days %d ", g_Dbs.db[i].dbCfg.days);
|
||||||
}
|
}
|
||||||
if (g_Dbs.db[i].dbCfg.keep > 0) {
|
if (g_Dbs.db[i].dbCfg.keep > 0) {
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "keep %d ", g_Dbs.db[i].dbCfg.keep);
|
dataLen += snprintf(command + dataLen,
|
||||||
|
BUFFER_SIZE - dataLen, "keep %d ", g_Dbs.db[i].dbCfg.keep);
|
||||||
}
|
}
|
||||||
if (g_Dbs.db[i].dbCfg.replica > 0) {
|
if (g_Dbs.db[i].dbCfg.replica > 0) {
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "replica %d ", g_Dbs.db[i].dbCfg.replica);
|
dataLen += snprintf(command + dataLen,
|
||||||
|
BUFFER_SIZE - dataLen, "replica %d ", g_Dbs.db[i].dbCfg.replica);
|
||||||
}
|
}
|
||||||
if (g_Dbs.db[i].dbCfg.update > 0) {
|
if (g_Dbs.db[i].dbCfg.update > 0) {
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "update %d ", g_Dbs.db[i].dbCfg.update);
|
dataLen += snprintf(command + dataLen,
|
||||||
|
BUFFER_SIZE - dataLen, "update %d ", g_Dbs.db[i].dbCfg.update);
|
||||||
}
|
}
|
||||||
//if (g_Dbs.db[i].dbCfg.maxtablesPerVnode > 0) {
|
//if (g_Dbs.db[i].dbCfg.maxtablesPerVnode > 0) {
|
||||||
// dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "tables %d ", g_Dbs.db[i].dbCfg.maxtablesPerVnode);
|
// dataLen += snprintf(command + dataLen,
|
||||||
|
// BUFFER_SIZE - dataLen, "tables %d ", g_Dbs.db[i].dbCfg.maxtablesPerVnode);
|
||||||
//}
|
//}
|
||||||
if (g_Dbs.db[i].dbCfg.minRows > 0) {
|
if (g_Dbs.db[i].dbCfg.minRows > 0) {
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "minrows %d ", g_Dbs.db[i].dbCfg.minRows);
|
dataLen += snprintf(command + dataLen,
|
||||||
|
BUFFER_SIZE - dataLen, "minrows %d ", g_Dbs.db[i].dbCfg.minRows);
|
||||||
}
|
}
|
||||||
if (g_Dbs.db[i].dbCfg.maxRows > 0) {
|
if (g_Dbs.db[i].dbCfg.maxRows > 0) {
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "maxrows %d ", g_Dbs.db[i].dbCfg.maxRows);
|
dataLen += snprintf(command + dataLen,
|
||||||
|
BUFFER_SIZE - dataLen, "maxrows %d ", g_Dbs.db[i].dbCfg.maxRows);
|
||||||
}
|
}
|
||||||
if (g_Dbs.db[i].dbCfg.comp > 0) {
|
if (g_Dbs.db[i].dbCfg.comp > 0) {
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "comp %d ", g_Dbs.db[i].dbCfg.comp);
|
dataLen += snprintf(command + dataLen,
|
||||||
|
BUFFER_SIZE - dataLen, "comp %d ", g_Dbs.db[i].dbCfg.comp);
|
||||||
}
|
}
|
||||||
if (g_Dbs.db[i].dbCfg.walLevel > 0) {
|
if (g_Dbs.db[i].dbCfg.walLevel > 0) {
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "wal %d ", g_Dbs.db[i].dbCfg.walLevel);
|
dataLen += snprintf(command + dataLen,
|
||||||
|
BUFFER_SIZE - dataLen, "wal %d ", g_Dbs.db[i].dbCfg.walLevel);
|
||||||
}
|
}
|
||||||
if (g_Dbs.db[i].dbCfg.cacheLast > 0) {
|
if (g_Dbs.db[i].dbCfg.cacheLast > 0) {
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "cachelast %d ", g_Dbs.db[i].dbCfg.cacheLast);
|
dataLen += snprintf(command + dataLen,
|
||||||
|
BUFFER_SIZE - dataLen, "cachelast %d ", g_Dbs.db[i].dbCfg.cacheLast);
|
||||||
}
|
}
|
||||||
if (g_Dbs.db[i].dbCfg.fsync > 0) {
|
if (g_Dbs.db[i].dbCfg.fsync > 0) {
|
||||||
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "fsync %d ", g_Dbs.db[i].dbCfg.fsync);
|
dataLen += snprintf(command + dataLen, BUFFER_SIZE - dataLen, "fsync %d ", g_Dbs.db[i].dbCfg.fsync);
|
||||||
|
@ -2100,6 +2116,7 @@ static int createDatabases() {
|
||||||
debugPrint("DEBUG %s() %d \n", __func__, __LINE__);
|
debugPrint("DEBUG %s() %d \n", __func__, __LINE__);
|
||||||
if (0 != queryDbExec(taos, command, NO_INSERT_TYPE)) {
|
if (0 != queryDbExec(taos, command, NO_INSERT_TYPE)) {
|
||||||
taos_close(taos);
|
taos_close(taos);
|
||||||
|
printf("\ncreate database %s failed!\n\n", g_Dbs.db[i].dbName);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
printf("\ncreate database %s success!\n\n", g_Dbs.db[i].dbName);
|
printf("\ncreate database %s success!\n\n", g_Dbs.db[i].dbName);
|
||||||
|
@ -2108,7 +2125,7 @@ static int createDatabases() {
|
||||||
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
|
// describe super table, if exists
|
||||||
sprintf(command, "describe %s.%s;", g_Dbs.db[i].dbName, g_Dbs.db[i].superTbls[j].sTblName);
|
sprintf(command, "describe %s.%s;", g_Dbs.db[i].dbName, g_Dbs.db[i].superTbls[j].sTblName);
|
||||||
debugPrint("DEBUG %s() %d \n", __func__, __LINE__);
|
debugPrint("DEBUG %s() %d \n", __func__, __LINE__);
|
||||||
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);
|
ret = createSuperTable(taos, g_Dbs.db[i].dbName, &g_Dbs.db[i].superTbls[j], g_Dbs.use_metric);
|
||||||
|
@ -2118,8 +2135,11 @@ static int createDatabases() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != ret) {
|
if (0 != ret) {
|
||||||
|
printf("\ncreate super table %d failed!\n\n", j);
|
||||||
taos_close(taos);
|
taos_close(taos);
|
||||||
return -1;
|
return -1;
|
||||||
|
} else {
|
||||||
|
printf("\ncreate super table %d success!\n\n", j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2135,14 +2155,24 @@ void * createTable(void *sarg)
|
||||||
|
|
||||||
int64_t lastPrintTime = taosGetTimestampMs();
|
int64_t lastPrintTime = taosGetTimestampMs();
|
||||||
|
|
||||||
char* buffer = calloc(superTblInfo->maxSqlLen, 1);
|
int buff_len;
|
||||||
|
if (superTblInfo)
|
||||||
|
buff_len = superTblInfo->maxSqlLen;
|
||||||
|
else
|
||||||
|
buff_len = BUFFER_SIZE;
|
||||||
|
|
||||||
|
char *buffer = calloc(superTblInfo->maxSqlLen, 1);
|
||||||
|
if (buffer == NULL) {
|
||||||
|
fprintf(stderr, "Memory allocated failed!");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
int len = 0;
|
int len = 0;
|
||||||
int batchNum = 0;
|
int batchNum = 0;
|
||||||
//printf("Creating table from %d to %d\n", winfo->start_table_id, winfo->end_table_id);
|
//printf("Creating table from %d to %d\n", winfo->start_table_id, winfo->end_table_id);
|
||||||
for (int i = winfo->start_table_id; i <= winfo->end_table_id; i++) {
|
for (int i = winfo->start_table_id; i <= winfo->end_table_id; i++) {
|
||||||
if (0 == g_Dbs.use_metric) {
|
if (0 == g_Dbs.use_metric) {
|
||||||
snprintf(buffer, BUFFER_SIZE,
|
snprintf(buffer, buff_len,
|
||||||
"create table if not exists %s.%s%d %s;",
|
"create table if not exists %s.%s%d %s;",
|
||||||
winfo->db_name,
|
winfo->db_name,
|
||||||
superTblInfo->childTblPrefix, i,
|
superTblInfo->childTblPrefix, i,
|
||||||
|
@ -2150,11 +2180,11 @@ void * createTable(void *sarg)
|
||||||
} else {
|
} else {
|
||||||
if (0 == len) {
|
if (0 == len) {
|
||||||
batchNum = 0;
|
batchNum = 0;
|
||||||
memset(buffer, 0, superTblInfo->maxSqlLen);
|
memset(buffer, 0, buff_len);
|
||||||
len += snprintf(buffer + len,
|
len += snprintf(buffer + len,
|
||||||
superTblInfo->maxSqlLen - len, "create table ");
|
buff_len - len, "create table ");
|
||||||
}
|
}
|
||||||
|
|
||||||
char* tagsValBuf = NULL;
|
char* tagsValBuf = NULL;
|
||||||
if (0 == superTblInfo->tagSource) {
|
if (0 == superTblInfo->tagSource) {
|
||||||
tagsValBuf = generateTagVaulesForStb(superTblInfo);
|
tagsValBuf = generateTagVaulesForStb(superTblInfo);
|
||||||
|
@ -2208,7 +2238,7 @@ void * createTable(void *sarg)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void startMultiThreadCreateChildTable(
|
int startMultiThreadCreateChildTable(
|
||||||
char* cols, int threads, int ntables,
|
char* cols, int threads, int ntables,
|
||||||
char* db_name, SSuperTable* superTblInfo) {
|
char* db_name, SSuperTable* superTblInfo) {
|
||||||
pthread_t *pids = malloc(threads * sizeof(pthread_t));
|
pthread_t *pids = malloc(threads * sizeof(pthread_t));
|
||||||
|
@ -2231,7 +2261,7 @@ void startMultiThreadCreateChildTable(
|
||||||
|
|
||||||
int b = 0;
|
int b = 0;
|
||||||
b = ntables % threads;
|
b = ntables % threads;
|
||||||
|
|
||||||
int last = 0;
|
int last = 0;
|
||||||
for (int i = 0; i < threads; i++) {
|
for (int i = 0; i < threads; i++) {
|
||||||
threadInfo *t_info = infos + i;
|
threadInfo *t_info = infos + i;
|
||||||
|
@ -2244,6 +2274,10 @@ void startMultiThreadCreateChildTable(
|
||||||
g_Dbs.password,
|
g_Dbs.password,
|
||||||
db_name,
|
db_name,
|
||||||
g_Dbs.port);
|
g_Dbs.port);
|
||||||
|
if (t_info->taos == NULL) {
|
||||||
|
fprintf(stderr, "Failed to connect to TDengine, reason:%s\n", taos_errstr(NULL));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
t_info->start_table_id = last;
|
t_info->start_table_id = last;
|
||||||
t_info->end_table_id = i < b ? last + a : last + a - 1;
|
t_info->end_table_id = i < b ? last + a : last + a - 1;
|
||||||
last = t_info->end_table_id + 1;
|
last = t_info->end_table_id + 1;
|
||||||
|
@ -2264,23 +2298,35 @@ void startMultiThreadCreateChildTable(
|
||||||
|
|
||||||
free(pids);
|
free(pids);
|
||||||
free(infos);
|
free(infos);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void createChildTables() {
|
void createChildTables() {
|
||||||
for (int i = 0; i < g_Dbs.dbCount; i++) {
|
for (int i = 0; i < g_Dbs.dbCount; i++) {
|
||||||
for (int j = 0; j < g_Dbs.db[i].superTblCount; j++) {
|
if (g_Dbs.db[i].superTblCount > 0) {
|
||||||
if ((AUTO_CREATE_SUBTBL == g_Dbs.db[i].superTbls[j].autoCreateTable)
|
for (int j = 0; j < g_Dbs.db[i].superTblCount; j++) {
|
||||||
|
if ((AUTO_CREATE_SUBTBL == g_Dbs.db[i].superTbls[j].autoCreateTable)
|
||||||
|| (TBL_ALREADY_EXISTS == g_Dbs.db[i].superTbls[j].childTblExists)) {
|
|| (TBL_ALREADY_EXISTS == g_Dbs.db[i].superTbls[j].childTblExists)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
startMultiThreadCreateChildTable(
|
|
||||||
|
startMultiThreadCreateChildTable(
|
||||||
g_Dbs.db[i].superTbls[j].colsOfCreatChildTable,
|
g_Dbs.db[i].superTbls[j].colsOfCreatChildTable,
|
||||||
g_Dbs.threadCountByCreateTbl,
|
g_Dbs.threadCountByCreateTbl,
|
||||||
g_Dbs.db[i].superTbls[j].childTblCount,
|
g_Dbs.db[i].superTbls[j].childTblCount,
|
||||||
g_Dbs.db[i].dbName, &(g_Dbs.db[i].superTbls[j]));
|
g_Dbs.db[i].dbName, &(g_Dbs.db[i].superTbls[j]));
|
||||||
g_totalChildTables += g_Dbs.db[i].superTbls[j].childTblCount;
|
g_totalChildTables += g_Dbs.db[i].superTbls[j].childTblCount;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
startMultiThreadCreateChildTable(
|
||||||
|
g_Dbs.db[i].superTbls[j].colsOfCreatChildTable,
|
||||||
|
g_Dbs.threadCountByCreateTbl,
|
||||||
|
g_args.num_of_DPT,
|
||||||
|
g_Dbs.db[i].dbName,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4524,14 +4570,6 @@ void *readMetric(void *sarg) {
|
||||||
|
|
||||||
int insertTestProcess() {
|
int insertTestProcess() {
|
||||||
|
|
||||||
debugPrint("DEBUG - %d result file: %s\n", __LINE__, g_Dbs.resultFile);
|
|
||||||
|
|
||||||
g_fpOfInsertResult = fopen(g_Dbs.resultFile, "a");
|
|
||||||
if (NULL == g_fpOfInsertResult) {
|
|
||||||
fprintf(stderr, "Failed to open %s for save result\n", g_Dbs.resultFile);
|
|
||||||
return 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
setupForAnsiEscape();
|
setupForAnsiEscape();
|
||||||
int ret = printfInsertMeta();
|
int ret = printfInsertMeta();
|
||||||
resetAfterAnsiEscape();
|
resetAfterAnsiEscape();
|
||||||
|
@ -4539,7 +4577,14 @@ int insertTestProcess() {
|
||||||
if (ret == -1)
|
if (ret == -1)
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
|
||||||
printfInsertMetaToFile(g_fpOfInsertResult);
|
debugPrint("DEBUG - %d result file: %s\n", __LINE__, g_Dbs.resultFile);
|
||||||
|
g_fpOfInsertResult = fopen(g_Dbs.resultFile, "a");
|
||||||
|
if (NULL == g_fpOfInsertResult) {
|
||||||
|
fprintf(stderr, "Failed to open %s for save result\n", g_Dbs.resultFile);
|
||||||
|
return -1;
|
||||||
|
} {
|
||||||
|
printfInsertMetaToFile(g_fpOfInsertResult);
|
||||||
|
}
|
||||||
|
|
||||||
if (!g_args.answer_yes) {
|
if (!g_args.answer_yes) {
|
||||||
printf("Press enter key to continue\n\n");
|
printf("Press enter key to continue\n\n");
|
||||||
|
@ -4549,7 +4594,10 @@ int insertTestProcess() {
|
||||||
init_rand_data();
|
init_rand_data();
|
||||||
|
|
||||||
// create database and super tables
|
// create database and super tables
|
||||||
(void)createDatabases();
|
if( createDatabases() != 0) {
|
||||||
|
fclose(g_fpOfInsertResult);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// pretreatement
|
// pretreatement
|
||||||
prePareSampleData();
|
prePareSampleData();
|
||||||
|
@ -4561,6 +4609,7 @@ int insertTestProcess() {
|
||||||
start = getCurrentTime();
|
start = getCurrentTime();
|
||||||
createChildTables();
|
createChildTables();
|
||||||
end = getCurrentTime();
|
end = getCurrentTime();
|
||||||
|
|
||||||
if (g_totalChildTables > 0) {
|
if (g_totalChildTables > 0) {
|
||||||
printf("Spent %.4f seconds to create %d tables with %d thread(s)\n\n",
|
printf("Spent %.4f seconds to create %d tables with %d thread(s)\n\n",
|
||||||
end - start, g_totalChildTables, g_Dbs.threadCount);
|
end - start, g_totalChildTables, g_Dbs.threadCount);
|
||||||
|
@ -4570,7 +4619,6 @@ int insertTestProcess() {
|
||||||
}
|
}
|
||||||
|
|
||||||
taosMsleep(1000);
|
taosMsleep(1000);
|
||||||
|
|
||||||
// create sub threads for inserting data
|
// create sub threads for inserting data
|
||||||
//start = getCurrentTime();
|
//start = getCurrentTime();
|
||||||
for (int i = 0; i < g_Dbs.dbCount; i++) {
|
for (int i = 0; i < g_Dbs.dbCount; i++) {
|
||||||
|
@ -4604,36 +4652,8 @@ int insertTestProcess() {
|
||||||
// totalAffectedRows += g_Dbs.db[i].superTbls[j].totalAffectedRows;
|
// totalAffectedRows += g_Dbs.db[i].superTbls[j].totalAffectedRows;
|
||||||
//}
|
//}
|
||||||
//printf("Spent %.4f seconds to insert rows: %"PRId64", affected rows: %"PRId64" with %d thread(s)\n\n", end - start, totalRowsInserted, totalAffectedRows, g_Dbs.threadCount);
|
//printf("Spent %.4f seconds to insert rows: %"PRId64", affected rows: %"PRId64" with %d thread(s)\n\n", end - start, totalRowsInserted, totalAffectedRows, g_Dbs.threadCount);
|
||||||
if (NULL == g_args.metaFile && false == g_Dbs.insert_only) {
|
|
||||||
// query data
|
|
||||||
pthread_t read_id;
|
|
||||||
threadInfo *rInfo = malloc(sizeof(threadInfo));
|
|
||||||
rInfo->start_time = 1500000000000; // 2017-07-14 10:40:00.000
|
|
||||||
rInfo->start_table_id = 0;
|
|
||||||
rInfo->end_table_id = g_Dbs.db[0].superTbls[0].childTblCount - 1;
|
|
||||||
//rInfo->do_aggreFunc = g_Dbs.do_aggreFunc;
|
|
||||||
//rInfo->nrecords_per_table = g_Dbs.db[0].superTbls[0].insertRows;
|
|
||||||
rInfo->superTblInfo = &g_Dbs.db[0].superTbls[0];
|
|
||||||
rInfo->taos = taos_connect(
|
|
||||||
g_Dbs.host,
|
|
||||||
g_Dbs.user,
|
|
||||||
g_Dbs.password,
|
|
||||||
g_Dbs.db[0].dbName,
|
|
||||||
g_Dbs.port);
|
|
||||||
strcpy(rInfo->tb_prefix, g_Dbs.db[0].superTbls[0].childTblPrefix);
|
|
||||||
strcpy(rInfo->fp, g_Dbs.resultFile);
|
|
||||||
|
|
||||||
if (!g_Dbs.use_metric) {
|
|
||||||
pthread_create(&read_id, NULL, readTable, rInfo);
|
|
||||||
} else {
|
|
||||||
pthread_create(&read_id, NULL, readMetric, rInfo);
|
|
||||||
}
|
|
||||||
pthread_join(read_id, NULL);
|
|
||||||
taos_close(rInfo->taos);
|
|
||||||
}
|
|
||||||
|
|
||||||
postFreeResource();
|
postFreeResource();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5259,6 +5279,7 @@ void setParaFromArg(){
|
||||||
g_Dbs.db[0].superTbls[0].tags[1].dataLen = g_args.len_of_binary;
|
g_Dbs.db[0].superTbls[0].tags[1].dataLen = g_args.len_of_binary;
|
||||||
g_Dbs.db[0].superTbls[0].tagCount = 2;
|
g_Dbs.db[0].superTbls[0].tagCount = 2;
|
||||||
} else {
|
} else {
|
||||||
|
g_Dbs.threadCountByCreateTbl = 1;
|
||||||
g_Dbs.db[0].superTbls[0].tagCount = 0;
|
g_Dbs.db[0].superTbls[0].tagCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5306,7 +5327,7 @@ void querySqlFile(TAOS* taos, char* sqlFile)
|
||||||
printf("failed to open file %s, reason:%s\n", sqlFile, strerror(errno));
|
printf("failed to open file %s, reason:%s\n", sqlFile, strerror(errno));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int read_len = 0;
|
int read_len = 0;
|
||||||
char * cmd = calloc(1, MAX_SQL_SIZE);
|
char * cmd = calloc(1, MAX_SQL_SIZE);
|
||||||
size_t cmd_len = 0;
|
size_t cmd_len = 0;
|
||||||
|
@ -5314,7 +5335,7 @@ void querySqlFile(TAOS* taos, char* sqlFile)
|
||||||
size_t line_len = 0;
|
size_t line_len = 0;
|
||||||
|
|
||||||
double t = getCurrentTime();
|
double t = getCurrentTime();
|
||||||
|
|
||||||
while ((read_len = tgetline(&line, &line_len, fp)) != -1) {
|
while ((read_len = tgetline(&line, &line_len, fp)) != -1) {
|
||||||
if (read_len >= MAX_SQL_SIZE) continue;
|
if (read_len >= MAX_SQL_SIZE) continue;
|
||||||
line[--read_len] = '\0';
|
line[--read_len] = '\0';
|
||||||
|
@ -5346,6 +5367,78 @@ void querySqlFile(TAOS* taos, char* sqlFile)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void testMetaFile() {
|
||||||
|
if (INSERT_MODE == g_args.test_mode) {
|
||||||
|
if (g_Dbs.cfgDir[0]) taos_options(TSDB_OPTION_CONFIGDIR, g_Dbs.cfgDir);
|
||||||
|
insertTestProcess();
|
||||||
|
} else if (QUERY_MODE == g_args.test_mode) {
|
||||||
|
if (g_queryInfo.cfgDir[0])
|
||||||
|
taos_options(TSDB_OPTION_CONFIGDIR, g_queryInfo.cfgDir);
|
||||||
|
(void)queryTestProcess();
|
||||||
|
} else if (SUBSCRIBE_MODE == g_args.test_mode) {
|
||||||
|
if (g_queryInfo.cfgDir[0])
|
||||||
|
taos_options(TSDB_OPTION_CONFIGDIR, g_queryInfo.cfgDir);
|
||||||
|
(void)subscribeTestProcess();
|
||||||
|
} else {
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void testCmdLine() {
|
||||||
|
|
||||||
|
g_args.test_mode = INSERT_MODE;
|
||||||
|
insertTestProcess();
|
||||||
|
|
||||||
|
if (g_Dbs.insert_only)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// select
|
||||||
|
if (false == g_Dbs.insert_only) {
|
||||||
|
// query data
|
||||||
|
|
||||||
|
pthread_t read_id;
|
||||||
|
threadInfo *rInfo = malloc(sizeof(threadInfo));
|
||||||
|
rInfo->start_time = 1500000000000; // 2017-07-14 10:40:00.000
|
||||||
|
rInfo->start_table_id = 0;
|
||||||
|
|
||||||
|
//rInfo->do_aggreFunc = g_Dbs.do_aggreFunc;
|
||||||
|
if (g_args.use_metric) {
|
||||||
|
rInfo->end_table_id = g_Dbs.db[0].superTbls[0].childTblCount - 1;
|
||||||
|
rInfo->superTblInfo = &g_Dbs.db[0].superTbls[0];
|
||||||
|
strcpy(rInfo->tb_prefix,
|
||||||
|
g_Dbs.db[0].superTbls[0].childTblPrefix);
|
||||||
|
} else {
|
||||||
|
rInfo->end_table_id = g_args.num_of_tables -1;
|
||||||
|
strcpy(rInfo->tb_prefix, g_args.tb_prefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
rInfo->taos = taos_connect(
|
||||||
|
g_Dbs.host,
|
||||||
|
g_Dbs.user,
|
||||||
|
g_Dbs.password,
|
||||||
|
g_Dbs.db[0].dbName,
|
||||||
|
g_Dbs.port);
|
||||||
|
if (rInfo->taos == NULL) {
|
||||||
|
fprintf(stderr, "Failed to connect to TDengine, reason:%s\n", taos_errstr(NULL));
|
||||||
|
free(rInfo);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy(rInfo->fp, g_Dbs.resultFile);
|
||||||
|
|
||||||
|
if (!g_Dbs.use_metric) {
|
||||||
|
pthread_create(&read_id, NULL, readTable, rInfo);
|
||||||
|
} else {
|
||||||
|
pthread_create(&read_id, NULL, readMetric, rInfo);
|
||||||
|
}
|
||||||
|
pthread_join(read_id, NULL);
|
||||||
|
taos_close(rInfo->taos);
|
||||||
|
free(rInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
parse_args(argc, argv, &g_args);
|
parse_args(argc, argv, &g_args);
|
||||||
|
|
||||||
|
@ -5360,23 +5453,9 @@ int main(int argc, char *argv[]) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (INSERT_MODE == g_args.test_mode) {
|
testMetaFile();
|
||||||
if (g_Dbs.cfgDir[0]) taos_options(TSDB_OPTION_CONFIGDIR, g_Dbs.cfgDir);
|
} else {
|
||||||
(void)insertTestProcess();
|
|
||||||
} else if (QUERY_MODE == g_args.test_mode) {
|
|
||||||
if (g_queryInfo.cfgDir[0])
|
|
||||||
taos_options(TSDB_OPTION_CONFIGDIR, g_queryInfo.cfgDir);
|
|
||||||
(void)queryTestProcess();
|
|
||||||
} else if (SUBSCRIBE_MODE == g_args.test_mode) {
|
|
||||||
if (g_queryInfo.cfgDir[0])
|
|
||||||
taos_options(TSDB_OPTION_CONFIGDIR, g_queryInfo.cfgDir);
|
|
||||||
(void)subscribeTestProcess();
|
|
||||||
} else {
|
|
||||||
;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
memset(&g_Dbs, 0, sizeof(SDbs));
|
memset(&g_Dbs, 0, sizeof(SDbs));
|
||||||
g_args.test_mode = INSERT_MODE;
|
|
||||||
setParaFromArg();
|
setParaFromArg();
|
||||||
|
|
||||||
if (NULL != g_args.sqlFile) {
|
if (NULL != g_args.sqlFile) {
|
||||||
|
@ -5388,46 +5467,12 @@ int main(int argc, char *argv[]) {
|
||||||
g_Dbs.port);
|
g_Dbs.port);
|
||||||
querySqlFile(qtaos, g_args.sqlFile);
|
querySqlFile(qtaos, g_args.sqlFile);
|
||||||
taos_close(qtaos);
|
taos_close(qtaos);
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
(void)insertTestProcess();
|
} else {
|
||||||
if (g_Dbs.insert_only) return 0;
|
testCmdLine();
|
||||||
|
|
||||||
// select
|
|
||||||
if (false == g_Dbs.insert_only) {
|
|
||||||
// query data
|
|
||||||
|
|
||||||
pthread_t read_id;
|
|
||||||
threadInfo *rInfo = malloc(sizeof(threadInfo));
|
|
||||||
rInfo->start_time = 1500000000000; // 2017-07-14 10:40:00.000
|
|
||||||
rInfo->start_table_id = 0;
|
|
||||||
rInfo->end_table_id = g_Dbs.db[0].superTbls[0].childTblCount - 1;
|
|
||||||
//rInfo->do_aggreFunc = g_Dbs.do_aggreFunc;
|
|
||||||
//rInfo->nrecords_per_table = g_Dbs.db[0].superTbls[0].insertRows;
|
|
||||||
rInfo->superTblInfo = &g_Dbs.db[0].superTbls[0];
|
|
||||||
rInfo->taos = taos_connect(
|
|
||||||
g_Dbs.host,
|
|
||||||
g_Dbs.user,
|
|
||||||
g_Dbs.password,
|
|
||||||
g_Dbs.db[0].dbName,
|
|
||||||
g_Dbs.port);
|
|
||||||
strcpy(rInfo->tb_prefix,
|
|
||||||
g_Dbs.db[0].superTbls[0].childTblPrefix);
|
|
||||||
strcpy(rInfo->fp, g_Dbs.resultFile);
|
|
||||||
|
|
||||||
if (!g_Dbs.use_metric) {
|
|
||||||
pthread_create(&read_id, NULL, readTable, rInfo);
|
|
||||||
} else {
|
|
||||||
pthread_create(&read_id, NULL, readMetric, rInfo);
|
|
||||||
}
|
|
||||||
pthread_join(read_id, NULL);
|
|
||||||
taos_close(rInfo->taos);
|
|
||||||
free(rInfo);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
taos_cleanup();
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue