Merge branch 'develop' into feature/TD-1925_new
This commit is contained in:
commit
8c5a3a95b5
|
@ -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() {
|
||||||
|
|
||||||
|
|
||||||
## ==============================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() {
|
||||||
}
|
}
|
||||||
|
|
||||||
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() {
|
||||||
|
|
||||||
|
|
||||||
## ==============================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() {
|
||||||
}
|
}
|
||||||
|
|
||||||
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() {
|
||||||
|
|
||||||
|
|
||||||
## ==============================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) {
|
||||||
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 @@
|
||||||
"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[];
|
||||||
#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 {
|
||||||
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
|
||||||
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;
|
||||||
|
|
||||||
|
@ -1433,12 +1430,13 @@ static int getAllChildNameOfSuperTable(TAOS * taos, char* dbName, char* sTblName
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
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() {
|
||||||
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) {
|
||||||
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) {
|
||||||
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() {
|
||||||
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();
|
||||||
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() {
|
||||||
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:
|
||||||
# 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:
|
||||||
# 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())
|
||||||
|
|
Loading…
Reference in New Issue