提交 8c5a3a95 编写于 作者: H Hongze Cheng

Merge branch 'develop' into feature/TD-1925_new

...@@ -348,7 +348,7 @@ function set_ipAsFqdn() { ...@@ -348,7 +348,7 @@ function set_ipAsFqdn() {
} }
function local_fqdn_check() { function local_fqdn_check() {
#serverFqdn=$(hostname -f) #serverFqdn=$(hostname)
echo echo
echo -e -n "System hostname is: ${GREEN}$serverFqdn${NC}" echo -e -n "System hostname is: ${GREEN}$serverFqdn${NC}"
echo echo
...@@ -911,7 +911,7 @@ function install_TDengine() { ...@@ -911,7 +911,7 @@ function install_TDengine() {
## ==============================Main program starts from here============================ ## ==============================Main program starts from here============================
serverFqdn=$(hostname -f) serverFqdn=$(hostname)
if [ "$verType" == "server" ]; then if [ "$verType" == "server" ]; then
# Install server and client # Install server and client
if [ -x ${bin_dir}/taosd ]; then if [ -x ${bin_dir}/taosd ]; then
......
...@@ -345,7 +345,7 @@ function set_ipAsFqdn() { ...@@ -345,7 +345,7 @@ function set_ipAsFqdn() {
} }
function local_fqdn_check() { function local_fqdn_check() {
#serverFqdn=$(hostname -f) #serverFqdn=$(hostname)
echo echo
echo -e -n "System hostname is: ${GREEN}$serverFqdn${NC}" echo -e -n "System hostname is: ${GREEN}$serverFqdn${NC}"
echo echo
...@@ -881,7 +881,7 @@ function install_PowerDB() { ...@@ -881,7 +881,7 @@ function install_PowerDB() {
## ==============================Main program starts from here============================ ## ==============================Main program starts from here============================
serverFqdn=$(hostname -f) serverFqdn=$(hostname)
if [ "$verType" == "server" ]; then if [ "$verType" == "server" ]; then
# Install server and client # Install server and client
if [ -x ${bin_dir}/powerd ]; then if [ -x ${bin_dir}/powerd ]; then
......
...@@ -228,7 +228,7 @@ function set_ipAsFqdn() { ...@@ -228,7 +228,7 @@ function set_ipAsFqdn() {
} }
function local_fqdn_check() { function local_fqdn_check() {
#serverFqdn=$(hostname -f) #serverFqdn=$(hostname)
echo echo
echo -e -n "System hostname is: ${GREEN}$serverFqdn${NC}" echo -e -n "System hostname is: ${GREEN}$serverFqdn${NC}"
echo echo
...@@ -492,5 +492,5 @@ function install_TDengine() { ...@@ -492,5 +492,5 @@ function install_TDengine() {
## ==============================Main program starts from here============================ ## ==============================Main program starts from here============================
serverFqdn=$(hostname -f) serverFqdn=$(hostname)
install_TDengine install_TDengine
...@@ -160,7 +160,7 @@ static void signal_handler(int32_t signum, siginfo_t *sigInfo, void *context) { ...@@ -160,7 +160,7 @@ static void signal_handler(int32_t signum, siginfo_t *sigInfo, void *context) {
syslog(LOG_INFO, "Shut down signal is %d", signum); syslog(LOG_INFO, "Shut down signal is %d", signum);
syslog(LOG_INFO, "Shutting down TDengine service..."); syslog(LOG_INFO, "Shutting down TDengine service...");
// clean the system. // clean the system.
dInfo("shut down signal is %d, sender PID:%d", signum, sigInfo->si_pid); dInfo("shut down signal is %d, sender PID:%d cmdline:%s", signum, sigInfo->si_pid, taosGetCmdlineByPID(sigInfo->si_pid));
// protect the application from receive another signal // protect the application from receive another signal
struct sigaction act = {{0}}; struct sigaction act = {{0}};
......
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
"port": 6030, "port": 6030,
"user": "root", "user": "root",
"password": "taosdata", "password": "taosdata",
"thread_count": 2, "thread_count": 4,
"thread_count_create_tbl": 1,
"result_file": "./insert_res.txt", "result_file": "./insert_res.txt",
"databases": [{ "databases": [{
"dbinfo": { "dbinfo": {
......
...@@ -93,9 +93,6 @@ extern char configDir[]; ...@@ -93,9 +93,6 @@ extern char configDir[];
#define MAX_QUERY_SQL_COUNT 10 #define MAX_QUERY_SQL_COUNT 10
#define MAX_QUERY_SQL_LENGTH 256 #define MAX_QUERY_SQL_LENGTH 256
#define MAX_LINE_COUNT_IN_MEM 10000
typedef enum CREATE_SUB_TALBE_MOD_EN { typedef enum CREATE_SUB_TALBE_MOD_EN {
PRE_CREATE_SUBTBL, PRE_CREATE_SUBTBL,
AUTO_CREATE_SUBTBL, AUTO_CREATE_SUBTBL,
...@@ -259,6 +256,7 @@ typedef struct SDbs_S { ...@@ -259,6 +256,7 @@ typedef struct SDbs_S {
bool queryMode; bool queryMode;
int threadCount; int threadCount;
int threadCountByCreateTbl;
int dbCount; int dbCount;
SDataBase db[MAX_DB_COUNT]; SDataBase db[MAX_DB_COUNT];
...@@ -1418,7 +1416,6 @@ static int getAllChildNameOfSuperTable(TAOS * taos, char* dbName, char* sTblName ...@@ -1418,7 +1416,6 @@ static int getAllChildNameOfSuperTable(TAOS * taos, char* dbName, char* sTblName
char command[BUFFER_SIZE] = "\0"; char command[BUFFER_SIZE] = "\0";
TAOS_RES * res; TAOS_RES * res;
TAOS_ROW row = NULL; TAOS_ROW row = NULL;
int count = 0;
char* childTblName = *childTblNameOfSuperTbl; char* childTblName = *childTblNameOfSuperTbl;
...@@ -1434,11 +1431,12 @@ static int getAllChildNameOfSuperTable(TAOS * taos, char* dbName, char* sTblName ...@@ -1434,11 +1431,12 @@ static int getAllChildNameOfSuperTable(TAOS * taos, char* dbName, char* sTblName
} }
int childTblCount = 10000; int childTblCount = 10000;
count = 0; int count = 0;
childTblName = (char*)calloc(1, childTblCount * TSDB_TABLE_NAME_LEN); childTblName = (char*)calloc(1, childTblCount * TSDB_TABLE_NAME_LEN);
char* pTblName = childTblName; char* pTblName = childTblName;
while ((row = taos_fetch_row(res)) != NULL) { while ((row = taos_fetch_row(res)) != NULL) {
strncpy(pTblName, (char *)row[0], TSDB_TABLE_NAME_LEN); int32_t* len = taos_fetch_lengths(res);
strncpy(pTblName, (char *)row[0], len[0]);
//printf("==== sub table name: %s\n", pTblName); //printf("==== sub table name: %s\n", pTblName);
count++; count++;
if (count >= childTblCount - 1) { if (count >= childTblCount - 1) {
...@@ -1829,33 +1827,59 @@ static void createChildTables() { ...@@ -1829,33 +1827,59 @@ static void createChildTables() {
if ((AUTO_CREATE_SUBTBL == g_Dbs.db[i].superTbls[j].autoCreateTable) || (TBL_ALREADY_EXISTS == g_Dbs.db[i].superTbls[j].childTblExists)) { if ((AUTO_CREATE_SUBTBL == g_Dbs.db[i].superTbls[j].autoCreateTable) || (TBL_ALREADY_EXISTS == g_Dbs.db[i].superTbls[j].childTblExists)) {
continue; continue;
} }
startMultiThreadCreateChildTable(g_Dbs.db[i].superTbls[j].colsOfCreatChildTable, g_Dbs.threadCount, g_Dbs.db[i].superTbls[j].childTblCount, g_Dbs.db[i].dbName, &(g_Dbs.db[i].superTbls[j])); startMultiThreadCreateChildTable(g_Dbs.db[i].superTbls[j].colsOfCreatChildTable, g_Dbs.threadCountByCreateTbl, g_Dbs.db[i].superTbls[j].childTblCount, 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;
} }
} }
} }
/*
static int taosGetLineNum(const char *fileName)
{
int lineNum = 0;
char cmd[1024] = { 0 };
char buf[1024] = { 0 };
sprintf(cmd, "wc -l %s", fileName);
FILE *fp = popen(cmd, "r");
if (fp == NULL) {
fprintf(stderr, "ERROR: failed to execute:%s, error:%s\n", cmd, strerror(errno));
return lineNum;
}
if (fgets(buf, sizeof(buf), fp)) {
int index = strchr((const char*)buf, ' ') - buf;
buf[index] = '\0';
lineNum = atoi(buf);
}
pclose(fp);
return lineNum;
}
*/
/* /*
Read 10000 lines at most. If more than 10000 lines, continue to read after using Read 10000 lines at most. If more than 10000 lines, continue to read after using
*/ */
int readTagFromCsvFileToMem(SSuperTable * supterTblInfo) { int readTagFromCsvFileToMem(SSuperTable * superTblInfo) {
size_t n = 0; size_t n = 0;
ssize_t readLen = 0; ssize_t readLen = 0;
char * line = NULL; char * line = NULL;
FILE *fp = fopen(supterTblInfo->tagsFile, "r"); FILE *fp = fopen(superTblInfo->tagsFile, "r");
if (fp == NULL) { if (fp == NULL) {
printf("Failed to open tags file: %s, reason:%s\n", supterTblInfo->tagsFile, strerror(errno)); printf("Failed to open tags file: %s, reason:%s\n", superTblInfo->tagsFile, strerror(errno));
return -1; return -1;
} }
if (supterTblInfo->tagDataBuf) { if (superTblInfo->tagDataBuf) {
free(supterTblInfo->tagDataBuf); free(superTblInfo->tagDataBuf);
supterTblInfo->tagDataBuf = NULL; superTblInfo->tagDataBuf = NULL;
} }
supterTblInfo->tagDataBuf = calloc(supterTblInfo->lenOfTagOfOneRow * MAX_LINE_COUNT_IN_MEM, 1); int tagCount = 10000;
if (supterTblInfo->tagDataBuf == NULL) { int count = 0;
char* tagDataBuf = calloc(1, superTblInfo->lenOfTagOfOneRow * tagCount);
if (tagDataBuf == NULL) {
printf("Failed to calloc, reason:%s\n", strerror(errno)); printf("Failed to calloc, reason:%s\n", strerror(errno));
fclose(fp); fclose(fp);
return -1; return -1;
...@@ -1870,20 +1894,35 @@ int readTagFromCsvFileToMem(SSuperTable * supterTblInfo) { ...@@ -1870,20 +1894,35 @@ int readTagFromCsvFileToMem(SSuperTable * supterTblInfo) {
continue; continue;
} }
memcpy(supterTblInfo->tagDataBuf + supterTblInfo->tagSampleCount * supterTblInfo->lenOfTagOfOneRow, line, readLen); memcpy(tagDataBuf + count * superTblInfo->lenOfTagOfOneRow, line, readLen);
supterTblInfo->tagSampleCount++; count++;
if (supterTblInfo->tagSampleCount >= MAX_LINE_COUNT_IN_MEM) { if (count >= tagCount - 1) {
break; char *tmp = realloc(tagDataBuf, (size_t)tagCount*1.5*superTblInfo->lenOfTagOfOneRow);
if (tmp != NULL) {
tagDataBuf = tmp;
tagCount = (int)(tagCount*1.5);
memset(tagDataBuf + count*superTblInfo->lenOfTagOfOneRow, 0, (size_t)((tagCount-count)*superTblInfo->lenOfTagOfOneRow));
} else {
// exit, if allocate more memory failed
printf("realloc fail for save tag val from %s\n", superTblInfo->tagsFile);
tmfree(tagDataBuf);
free(line);
fclose(fp);
return -1;
} }
} }
}
superTblInfo->tagDataBuf = tagDataBuf;
superTblInfo->tagSampleCount = count;
free(line); free(line);
fclose(fp); fclose(fp);
return 0; return 0;
} }
int readSampleFromJsonFileToMem(SSuperTable * supterTblInfo) { int readSampleFromJsonFileToMem(SSuperTable * superTblInfo) {
// TODO // TODO
return 0; return 0;
} }
...@@ -2139,6 +2178,16 @@ static bool getMetaFromInsertJsonFile(cJSON* root) { ...@@ -2139,6 +2178,16 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
goto PARSE_OVER; goto PARSE_OVER;
} }
cJSON* threads2 = cJSON_GetObjectItem(root, "thread_count_create_tbl");
if (threads2 && threads2->type == cJSON_Number) {
g_Dbs.threadCountByCreateTbl = threads2->valueint;
} else if (!threads2) {
g_Dbs.threadCountByCreateTbl = 1;
} else {
printf("failed to read json, threads2 not found");
goto PARSE_OVER;
}
cJSON* dbs = cJSON_GetObjectItem(root, "databases"); cJSON* dbs = cJSON_GetObjectItem(root, "databases");
if (!dbs || dbs->type != cJSON_Array) { if (!dbs || dbs->type != cJSON_Array) {
printf("failed to read json, databases not found\n"); printf("failed to read json, databases not found\n");
...@@ -3008,6 +3057,10 @@ void postFreeResource() { ...@@ -3008,6 +3057,10 @@ void postFreeResource() {
free(g_Dbs.db[i].superTbls[j].sampleDataBuf); free(g_Dbs.db[i].superTbls[j].sampleDataBuf);
g_Dbs.db[i].superTbls[j].sampleDataBuf = NULL; g_Dbs.db[i].superTbls[j].sampleDataBuf = NULL;
} }
if (0 != g_Dbs.db[i].superTbls[j].tagDataBuf) {
free(g_Dbs.db[i].superTbls[j].tagDataBuf);
g_Dbs.db[i].superTbls[j].tagDataBuf = NULL;
}
if (0 != g_Dbs.db[i].superTbls[j].childTblName) { if (0 != g_Dbs.db[i].superTbls[j].childTblName) {
free(g_Dbs.db[i].superTbls[j].childTblName); free(g_Dbs.db[i].superTbls[j].childTblName);
g_Dbs.db[i].superTbls[j].childTblName = NULL; g_Dbs.db[i].superTbls[j].childTblName = NULL;
......
...@@ -38,6 +38,7 @@ void taosPrintOsInfo(); ...@@ -38,6 +38,7 @@ void taosPrintOsInfo();
int taosSystem(const char * cmd) ; int taosSystem(const char * cmd) ;
void taosKillSystem(); void taosKillSystem();
bool taosGetSystemUid(char *uid); bool taosGetSystemUid(char *uid);
char *taosGetCmdlineByPID(int pid);
// TAOS_OS_FUNC_SYSINFO_CORE // TAOS_OS_FUNC_SYSINFO_CORE
void taosSetCoreDump(); void taosSetCoreDump();
......
...@@ -40,3 +40,21 @@ void osInit() { ...@@ -40,3 +40,21 @@ void osInit() {
strcpy(tsMnodeDir, ""); strcpy(tsMnodeDir, "");
strcpy(tsOsName, "Linux"); strcpy(tsOsName, "Linux");
} }
char cmdline[1024];
char *taosGetCmdlineByPID(int pid)
{
sprintf(cmdline, "/proc/%d/cmdline",pid);
FILE* f = fopen(cmdline,"r");
if(f){
size_t size;
size = fread(cmdline, sizeof(char), 1024, f);
if(size>0){
if('\n'==cmdline[size-1])
cmdline[size-1]='\0';
}
fclose(f);
}
return cmdline;
}
...@@ -105,11 +105,11 @@ class TDTestCase: ...@@ -105,11 +105,11 @@ class TDTestCase:
# Create db # Create db
tdSql.execute("drop database if exists %s" % (db)) tdSql.execute("drop database if exists %s" % (db))
tdSql.execute("reset query cache") tdSql.execute("reset query cache")
tdSql.execute("create database %s maxrows 200 maxtables 4" % (db)) tdSql.execute("create database %s maxrows 200" % (db))
tdSql.execute("use %s" % (db)) tdSql.execute("use %s" % (db))
# Create a table with one colunm of int type and insert 300 rows # Create a table with one colunm of int type and insert 300 rows
tdLog.info("Create table tb") tdLog.info("create table tb")
tdSql.execute("create table tb (ts timestamp, c1 int)") tdSql.execute("create table tb (ts timestamp, c1 int)")
tdLog.info("Insert %d rows into tb" % (self.rowNum)) tdLog.info("Insert %d rows into tb" % (self.rowNum))
for k in range(1, self.rowNum + 1): for k in range(1, self.rowNum + 1):
...@@ -120,19 +120,21 @@ class TDTestCase: ...@@ -120,19 +120,21 @@ class TDTestCase:
# all added column are NULL # all added column are NULL
self.addColumnAndCount() self.addColumnAndCount()
tdDnodes.stop(1) tdDnodes.stop(1)
time.sleep(5)
tdDnodes.start(1) tdDnodes.start(1)
time.sleep(5)
tdSql.query(self.sqlHead + self.sqlTail) tdSql.query(self.sqlHead + self.sqlTail)
for i in range(2, len(self.types) + 2): size = len(self.types) + 2
tdSql.checkData(0, i, self.rowNum * (len(self.types) + 2 - i)) for i in range(2, size):
tdSql.checkData(0, i, self.rowNum * (size - i))
self.dropColumnAndCount() tdSql.execute("create table st(ts timestamp, c1 int) tags(t1 float)")
tdSql.execute("create table t0 using st tags(null)")
tdSql.execute("alter table t0 set tag t1=2.1")
tdSql.query("show tables")
tdSql.checkRows(1)
def stop(self): def stop(self):
tdSql.close() tdSql.close()
tdLog.success("%s successfully executed" % __file__) tdLog.success("%s successfully executed" % __file__)
#tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase()) tdCases.addLinux(__file__, TDTestCase())
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册