From ff884d4a29788359126bf71625fb9472ff3a1e16 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Mon, 8 Mar 2021 21:15:29 +0800 Subject: [PATCH 1/9] [TD-3143] : make taosdemo restful working on windows. --- src/kit/taosdemo/taosdemo.c | 97 ++++++++++++++++++++++++++++++++----- 1 file changed, 84 insertions(+), 13 deletions(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index 0353fcabd3..60d6aa0e97 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -47,9 +47,10 @@ #include "os.h" #ifdef TD_WINDOWS + #include + typedef unsigned __int32 uint32_t; + #pragma comment ( lib, "ws2_32.lib" ) - #pragma comment ( lib, "winmm.lib" ) - #pragma comment ( lib, "wldap32.lib" ) #endif #endif @@ -94,6 +95,7 @@ extern char configDir[]; #define MAX_QUERY_SQL_LENGTH 256 #define MAX_DATABASE_COUNT 256 +#define INPUT_BUF_LEN 256 typedef enum CREATE_SUB_TALBE_MOD_EN { PRE_CREATE_SUBTBL, @@ -1592,11 +1594,10 @@ int postProceSql(char* host, uint16_t port, char* sqlstr) char *req_fmt = "POST %s HTTP/1.1\r\nHost: %s:%d\r\nAccept: */*\r\n%s\r\nContent-Length: %d\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n%s"; char *url = "/rest/sql"; - char *auth = "Authorization: Basic cm9vdDp0YW9zZGF0YQ=="; struct hostent *server; struct sockaddr_in serv_addr; - int sockfd, bytes, sent, received, req_str_len, resp_len; + int bytes, sent, received, req_str_len, resp_len; char *request_buf; char response_buf[RESP_BUF_LEN]; uint16_t rest_port = port + TSDB_PORT_HTTP; @@ -1607,16 +1608,54 @@ int postProceSql(char* host, uint16_t port, char* sqlstr) if (NULL == request_buf) ERROR_EXIT("ERROR, cannot allocate memory."); - int r = snprintf(request_buf, - req_buf_len, - req_fmt, url, host, rest_port, - auth, strlen(sqlstr), sqlstr); - if (r >= req_buf_len) { - free(request_buf); - ERROR_EXIT("ERROR too long request"); - } - printf("Request:\n%s\n", request_buf); + char userpass_buf[INPUT_BUF_LEN]; + int mod_table[] = {0, 2, 1}; + static char base64[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', + 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', + 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', + 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', + 'w', 'x', 'y', 'z', '0', '1', '2', '3', + '4', '5', '6', '7', '8', '9', '+', '/'}; + + snprintf(userpass_buf, INPUT_BUF_LEN, "%s:%s", + g_Dbs.user, g_Dbs.password); + size_t userpass_buf_len = strlen(userpass_buf); + size_t encoded_len = 4 * ((userpass_buf_len +2) / 3); + + char base64_buf[INPUT_BUF_LEN]; + memset(base64_buf, 0, INPUT_BUF_LEN); + + for (int n = 0, m = 0; n < userpass_buf_len;) { + uint32_t oct_a = n < userpass_buf_len ? + (unsigned char) userpass_buf[n++]:0; + uint32_t oct_b = n < userpass_buf_len ? + (unsigned char) userpass_buf[n++]:0; + uint32_t oct_c = n < userpass_buf_len ? + (unsigned char) userpass_buf[n++]:0; + uint32_t triple = (oct_a << 0x10) + (oct_b << 0x08) + oct_c; + + base64_buf[m++] = base64[(triple >> 3* 6) & 0x3f]; + base64_buf[m++] = base64[(triple >> 2* 6) & 0x3f]; + base64_buf[m++] = base64[(triple >> 1* 6) & 0x3f]; + base64_buf[m++] = base64[(triple >> 0* 6) & 0x3f]; + } + + for (int l = 0; l < mod_table[userpass_buf_len % 3]; l++) + base64_buf[encoded_len - 1 - l] = '='; + + printf("auth string base64 encoded: %s\n", base64_buf); + char *auth = base64_buf; + +#ifdef TD_WINDOWS + WSADATA wsaData; + WSAStartup(MAKEWORD(2, 1), &wsaData); + SOCKET sockfd; +#else + int sockfd; +#endif sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { free(request_buf); @@ -1629,20 +1668,43 @@ int postProceSql(char* host, uint16_t port, char* sqlstr) ERROR_EXIT("ERROR, no such host"); } + debugPrint("h_name: %s\nh_addretype: %s\nh_length: %d\n", + server->h_name, + (server->h_addrtype == AF_INET)?"ipv4":"ipv6", + server->h_length); + memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(rest_port); +#ifdef WINDOWS + serv_addr.sin_addr.s_addr = inet_addr(host); +#else memcpy(&serv_addr.sin_addr.s_addr,server->h_addr,server->h_length); +#endif if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) { free(request_buf); ERROR_EXIT("ERROR connecting"); } + int r = snprintf(request_buf, + req_buf_len, + req_fmt, url, host, rest_port, + auth, strlen(sqlstr), sqlstr); + if (r >= req_buf_len) { + free(request_buf); + ERROR_EXIT("ERROR too long request"); + } + printf("Request:\n%s\n", request_buf); + req_str_len = strlen(request_buf); sent = 0; do { +#ifdef WINDOWS + bytes = send(sockfd, request_buf + sent, req_str_len - sent, 0); +#else bytes = write(sockfd, request_buf + sent, req_str_len - sent); +#endif if (bytes < 0) ERROR_EXIT("ERROR writing message to socket"); if (bytes == 0) @@ -1654,7 +1716,11 @@ int postProceSql(char* host, uint16_t port, char* sqlstr) resp_len = sizeof(response_buf) - 1; received = 0; do { +#ifdef WINDOWS + bytes = recv(sockfd, response_buf + received, resp_len - received, 0); +#else bytes = read(sockfd, response_buf + received, resp_len - received); +#endif if (bytes < 0) { free(request_buf); ERROR_EXIT("ERROR reading response from socket"); @@ -1672,7 +1738,12 @@ int postProceSql(char* host, uint16_t port, char* sqlstr) printf("Response:\n%s\n", response_buf); free(request_buf); +#ifdef WINDOWS + closesocket(sockfd); + WSACleanup(); +#else close(sockfd); +#endif return 0; } From e01365f42299ff130a1a39a8446ed01f976349f0 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Wed, 10 Mar 2021 10:54:20 +0800 Subject: [PATCH 2/9] [TD-3143] : make taosdemo restful work on Windows. --- src/kit/taosdemo/taosdemo.c | 56 ++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index 2711447cdc..87265fdd62 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -1601,7 +1601,7 @@ void ERROR_EXIT(const char *msg) { perror(msg); exit(0); } int postProceSql(char* host, uint16_t port, char* sqlstr) { - char *req_fmt = "POST %s HTTP/1.1\r\nHost: %s:%d\r\nAccept: */*\r\n%s\r\nContent-Length: %d\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n%s"; + char *req_fmt = "POST %s HTTP/1.1\r\nHost: %s:%d\r\nAccept: */*\r\nAuthorization: Basic %s\r\nContent-Length: %d\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n%s"; char *url = "/rest/sql"; @@ -1656,7 +1656,7 @@ int postProceSql(char* host, uint16_t port, char* sqlstr) for (int l = 0; l < mod_table[userpass_buf_len % 3]; l++) base64_buf[encoded_len - 1 - l] = '='; - printf("auth string base64 encoded: %s\n", base64_buf); + debugPrint("%s() LN%d: auth string base64 encoded: %s\n", __func__, __LINE__, base64_buf); char *auth = base64_buf; #ifdef TD_WINDOWS @@ -1705,7 +1705,7 @@ int postProceSql(char* host, uint16_t port, char* sqlstr) free(request_buf); ERROR_EXIT("ERROR too long request"); } - printf("Request:\n%s\n", request_buf); + verbosePrint("%s() LN%d: Request:\n%s\n", __func__, __LINE__, request_buf); req_str_len = strlen(request_buf); sent = 0; @@ -4447,42 +4447,46 @@ static void* syncWriteWithStb(void *sarg) { winfo->totalRowsInserted += k; + int64_t startTs = taosGetTimestampUs(); + int64_t endTs; + int affectedRows; if (0 == strncasecmp(superTblInfo->insertMode, "taosc", strlen("taosc"))) { - int64_t startTs; - int64_t endTs; - startTs = taosGetTimestampUs(); - verbosePrint("%s() LN%d %s\n", __func__, __LINE__, buffer); - int affectedRows = queryDbExec(winfo->taos, buffer, INSERT_TYPE); + affectedRows = queryDbExec(winfo->taos, buffer, INSERT_TYPE); if (0 > affectedRows){ goto free_and_statistics_2; - } else { - endTs = taosGetTimestampUs(); - int64_t delay = endTs - startTs; - if (delay > winfo->maxDelay) winfo->maxDelay = delay; - if (delay < winfo->minDelay) winfo->minDelay = delay; - winfo->cntDelay++; - winfo->totalDelay += delay; - } - winfo->totalAffectedRows += affectedRows; - - int64_t currentPrintTime = taosGetTimestampMs(); - if (currentPrintTime - lastPrintTime > 30*1000) { - printf("thread[%d] has currently inserted rows: %"PRId64 ", affected rows: %"PRId64 "\n", - winfo->threadID, - winfo->totalRowsInserted, - winfo->totalAffectedRows); - lastPrintTime = currentPrintTime; } } else { + verbosePrint("%s() LN%d %s\n", __func__, __LINE__, buffer); int retCode = postProceSql(g_Dbs.host, g_Dbs.port, buffer); - + if (0 != retCode) { printf("========restful return fail, threadID[%d]\n", winfo->threadID); goto free_and_statistics_2; } + + affectedRows = k; } + + endTs = taosGetTimestampUs(); + int64_t delay = endTs - startTs; + if (delay > winfo->maxDelay) winfo->maxDelay = delay; + if (delay < winfo->minDelay) winfo->minDelay = delay; + winfo->cntDelay++; + winfo->totalDelay += delay; + + winfo->totalAffectedRows += affectedRows; + + int64_t currentPrintTime = taosGetTimestampMs(); + if (currentPrintTime - lastPrintTime > 30*1000) { + printf("thread[%d] has currently inserted rows: %"PRId64 ", affected rows: %"PRId64 "\n", + winfo->threadID, + winfo->totalRowsInserted, + winfo->totalAffectedRows); + lastPrintTime = currentPrintTime; + } + if (g_args.insert_interval) { et = taosGetTimestampMs(); } From 105531cab49ec031adaa93b0a38490642209885d Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Wed, 10 Mar 2021 11:36:29 +0800 Subject: [PATCH 3/9] [TD-3143] : make taosdemo works on Windows. fix macro definition. --- src/kit/taosdemo/taosdemo.c | 64 ++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index 87265fdd62..008adb42c1 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -46,7 +46,7 @@ #include #include "os.h" -#ifdef TD_WINDOWS +#ifdef WINDOWS #include typedef unsigned __int32 uint32_t; @@ -1597,7 +1597,7 @@ static void printfQuerySystemInfo(TAOS * taos) { } -void ERROR_EXIT(const char *msg) { perror(msg); exit(0); } +void ERROR_EXIT(const char *msg) { perror(msg); exit(-1); } int postProceSql(char* host, uint16_t port, char* sqlstr) { @@ -1636,38 +1636,19 @@ int postProceSql(char* host, uint16_t port, char* sqlstr) size_t encoded_len = 4 * ((userpass_buf_len +2) / 3); char base64_buf[INPUT_BUF_LEN]; - memset(base64_buf, 0, INPUT_BUF_LEN); - - for (int n = 0, m = 0; n < userpass_buf_len;) { - uint32_t oct_a = n < userpass_buf_len ? - (unsigned char) userpass_buf[n++]:0; - uint32_t oct_b = n < userpass_buf_len ? - (unsigned char) userpass_buf[n++]:0; - uint32_t oct_c = n < userpass_buf_len ? - (unsigned char) userpass_buf[n++]:0; - uint32_t triple = (oct_a << 0x10) + (oct_b << 0x08) + oct_c; - - base64_buf[m++] = base64[(triple >> 3* 6) & 0x3f]; - base64_buf[m++] = base64[(triple >> 2* 6) & 0x3f]; - base64_buf[m++] = base64[(triple >> 1* 6) & 0x3f]; - base64_buf[m++] = base64[(triple >> 0* 6) & 0x3f]; - } - - for (int l = 0; l < mod_table[userpass_buf_len % 3]; l++) - base64_buf[encoded_len - 1 - l] = '='; - - debugPrint("%s() LN%d: auth string base64 encoded: %s\n", __func__, __LINE__, base64_buf); - char *auth = base64_buf; - -#ifdef TD_WINDOWS +#ifdef WINDOWS WSADATA wsaData; - WSAStartup(MAKEWORD(2, 1), &wsaData); + WSAStartup(MAKEWORD(2, 2), &wsaData); SOCKET sockfd; #else int sockfd; #endif sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { +#ifdef WINDOWS + fprintf(stderr, "Could not create socket : %d" , WSAGetLastError()); +#endif + debugPrint("%s() LN%d sockfd=%d\n", __func__, __LINE__, sockfd); free(request_buf); ERROR_EXIT("ERROR opening socket"); } @@ -1692,11 +1673,36 @@ int postProceSql(char* host, uint16_t port, char* sqlstr) memcpy(&serv_addr.sin_addr.s_addr,server->h_addr,server->h_length); #endif - if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) { + int retConn = connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)); + debugPrint("%s() LN%d connect() return %d\n", __func__, __LINE__, retConn); + if (retConn < 0) { free(request_buf); ERROR_EXIT("ERROR connecting"); } + memset(base64_buf, 0, INPUT_BUF_LEN); + + for (int n = 0, m = 0; n < userpass_buf_len;) { + uint32_t oct_a = n < userpass_buf_len ? + (unsigned char) userpass_buf[n++]:0; + uint32_t oct_b = n < userpass_buf_len ? + (unsigned char) userpass_buf[n++]:0; + uint32_t oct_c = n < userpass_buf_len ? + (unsigned char) userpass_buf[n++]:0; + uint32_t triple = (oct_a << 0x10) + (oct_b << 0x08) + oct_c; + + base64_buf[m++] = base64[(triple >> 3* 6) & 0x3f]; + base64_buf[m++] = base64[(triple >> 2* 6) & 0x3f]; + base64_buf[m++] = base64[(triple >> 1* 6) & 0x3f]; + base64_buf[m++] = base64[(triple >> 0* 6) & 0x3f]; + } + + for (int l = 0; l < mod_table[userpass_buf_len % 3]; l++) + base64_buf[encoded_len - 1 - l] = '='; + + debugPrint("%s() LN%d: auth string base64 encoded: %s\n", __func__, __LINE__, base64_buf); + char *auth = base64_buf; + int r = snprintf(request_buf, req_buf_len, req_fmt, url, host, rest_port, @@ -4435,7 +4441,7 @@ static void* syncWriteWithStb(void *sarg) { } len += retLen; - verbosePrint("%s() LN%d retLen=%d len=%d k=%d buffer=%s\n", __func__, __LINE__, retLen, len, k, buffer); + verbosePrint("%s() LN%d retLen=%d len=%d k=%d \nbuffer=%s\n", __func__, __LINE__, retLen, len, k, buffer); tblInserted++; k++; From 1b49d1e2b51396d779325a241882bbc9e37f2dd6 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Wed, 10 Mar 2021 23:39:01 +0800 Subject: [PATCH 4/9] [TD-3143]] : make taosdemo works on windows. cleanup. --- src/kit/taosdemo/taosdemo.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index 008adb42c1..dd0644ade9 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -1659,7 +1659,7 @@ int postProceSql(char* host, uint16_t port, char* sqlstr) ERROR_EXIT("ERROR, no such host"); } - debugPrint("h_name: %s\nh_addretype: %s\nh_length: %d\n", + debugPrint("h_name: %s\nh_addretype: %s\nh_length: %d\n", server->h_name, (server->h_addrtype == AF_INET)?"ipv4":"ipv6", server->h_length); @@ -1683,11 +1683,11 @@ int postProceSql(char* host, uint16_t port, char* sqlstr) memset(base64_buf, 0, INPUT_BUF_LEN); for (int n = 0, m = 0; n < userpass_buf_len;) { - uint32_t oct_a = n < userpass_buf_len ? + uint32_t oct_a = n < userpass_buf_len ? (unsigned char) userpass_buf[n++]:0; - uint32_t oct_b = n < userpass_buf_len ? + uint32_t oct_b = n < userpass_buf_len ? (unsigned char) userpass_buf[n++]:0; - uint32_t oct_c = n < userpass_buf_len ? + uint32_t oct_c = n < userpass_buf_len ? (unsigned char) userpass_buf[n++]:0; uint32_t triple = (oct_a << 0x10) + (oct_b << 0x08) + oct_c; @@ -1703,9 +1703,9 @@ int postProceSql(char* host, uint16_t port, char* sqlstr) debugPrint("%s() LN%d: auth string base64 encoded: %s\n", __func__, __LINE__, base64_buf); char *auth = base64_buf; - int r = snprintf(request_buf, - req_buf_len, - req_fmt, url, host, rest_port, + int r = snprintf(request_buf, + req_buf_len, + req_fmt, url, host, rest_port, auth, strlen(sqlstr), sqlstr); if (r >= req_buf_len) { free(request_buf); @@ -4041,8 +4041,8 @@ send_to_server: int64_t currentPrintTime = taosGetTimestampMs(); if (currentPrintTime - lastPrintTime > 30*1000) { - printf("thread[%d] has currently inserted rows: %"PRId64 ", affected rows: %"PRId64 "\n", - winfo->threadID, + printf("thread[%d] has currently inserted rows: %"PRId64 ", affected rows: %"PRId64 "\n", + winfo->threadID, winfo->totalRowsInserted, winfo->totalAffectedRows); lastPrintTime = currentPrintTime; @@ -4486,9 +4486,9 @@ static void* syncWriteWithStb(void *sarg) { int64_t currentPrintTime = taosGetTimestampMs(); if (currentPrintTime - lastPrintTime > 30*1000) { - printf("thread[%d] has currently inserted rows: %"PRId64 ", affected rows: %"PRId64 "\n", - winfo->threadID, - winfo->totalRowsInserted, + printf("thread[%d] has currently inserted rows: %"PRId64 ", affected rows: %"PRId64 "\n", + winfo->threadID, + winfo->totalRowsInserted, winfo->totalAffectedRows); lastPrintTime = currentPrintTime; } From 5ae71f5b80e26a9ee77f4a0c4c32b93cfa417a8d Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Thu, 11 Mar 2021 12:49:52 +0800 Subject: [PATCH 5/9] [TD-3143] : make taosdemo works on windows. fix time shifting. --- src/kit/taosdemo/taosdemo.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index dd0644ade9..9f51bfcd0e 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -4179,10 +4179,11 @@ static void* syncWrite(void *sarg) { winfo->totalAffectedRows = 0; for (int tID = winfo->start_table_id; tID <= winfo->end_table_id; tID++) { + int64_t tmp_time = time_counter; + for (int i = 0; i < g_args.num_of_DPT;) { int tblInserted = i; - int64_t tmp_time = time_counter; char *pstr = buffer; pstr += sprintf(pstr, @@ -4251,7 +4252,7 @@ static void* syncWrite(void *sarg) { winfo->avgDelay = (double)winfo->totalDelay / winfo->cntDelay; } - verbosePrint("%s() LN%d: totalaffectedRows:%"PRId64"\n", __func__, __LINE__, winfo->totalAffectedRows); + verbosePrint("%s() LN%d: totalaffectedRows:%"PRId64" tblInserted\n", __func__, __LINE__, winfo->totalAffectedRows, tblInserted); if (g_args.insert_interval) { et = taosGetTimestampMs(); } From 8af62a58b5b4028a19550e113551d643a22a1656 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Thu, 11 Mar 2021 13:04:26 +0800 Subject: [PATCH 6/9] [TD-3143] : make taosdemo works on windows. fix compile issue. --- src/kit/taosdemo/taosdemo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index 9f51bfcd0e..c4f71c6a3e 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -4252,7 +4252,7 @@ static void* syncWrite(void *sarg) { winfo->avgDelay = (double)winfo->totalDelay / winfo->cntDelay; } - verbosePrint("%s() LN%d: totalaffectedRows:%"PRId64" tblInserted\n", __func__, __LINE__, winfo->totalAffectedRows, tblInserted); + verbosePrint("%s() LN%d: totalaffectedRows:%"PRId64" tblInserted=%d\n", __func__, __LINE__, winfo->totalAffectedRows, tblInserted); if (g_args.insert_interval) { et = taosGetTimestampMs(); } From 808e674ece1c7d237248f95a350d2a781b14d732 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Thu, 11 Mar 2021 13:32:35 +0800 Subject: [PATCH 7/9] [TD-3143] : make taosdemo works on windows. more failure info. --- src/kit/taosdemo/taosdemo.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index c4f71c6a3e..99c575aa33 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -2220,7 +2220,7 @@ static int createDatabases() { debugPrint("%s() %d command: %s\n", __func__, __LINE__, command); if (0 != queryDbExec(taos, command, NO_INSERT_TYPE)) { taos_close(taos); - printf("\ncreate database %s failed!\n\n", g_Dbs.db[i].dbName); + fprintf(stderr, "\ncreate database %s failed!\n\n", g_Dbs.db[i].dbName); return -1; } printf("\ncreate database %s success!\n\n", g_Dbs.db[i].dbName); @@ -2319,6 +2319,7 @@ static void* createTable(void *sarg) len = 0; verbosePrint("%s() LN%d %s\n", __func__, __LINE__, buffer); if (0 != queryDbExec(winfo->taos, buffer, NO_INSERT_TYPE)){ + fprintf(stderr, "queryDbExec() failed. buffer:\n%s\n", buffer); free(buffer); return NULL; } @@ -2333,7 +2334,9 @@ static void* createTable(void *sarg) if (0 != len) { verbosePrint("%s() %d buffer: %s\n", __func__, __LINE__, buffer); - (void)queryDbExec(winfo->taos, buffer, NO_INSERT_TYPE); + if (0 != queryDbExec(winfo->taos, buffer, NO_INSERT_TYPE)) { + fprintf(stderr, "queryDbExec() failed. buffer:\n%s\n", buffer); + } } free(buffer); @@ -4027,6 +4030,7 @@ send_to_server: winfo->taos, buffer, INSERT_TYPE); if (0 > affectedRows) { + fprintf(stderr, "queryDbExec() buffer:\n%s\naffected rows is %d", buffer, affectedRows); goto free_and_statistics; } else { endTs = taosGetTimestampUs(); @@ -4238,7 +4242,6 @@ static void* syncWrite(void *sarg) { verbosePrint("%s() LN%d %s\n", __func__, __LINE__, buffer); int affectedRows = queryDbExec(winfo->taos, buffer, 1); - verbosePrint("%s() LN%d: affectedRows:%d\n", __func__, __LINE__, affectedRows); if (0 <= affectedRows){ endTs = taosGetTimestampUs(); int64_t delay = endTs - startTs; @@ -4250,6 +4253,8 @@ static void* syncWrite(void *sarg) { winfo->totalDelay += delay; winfo->totalAffectedRows += affectedRows; winfo->avgDelay = (double)winfo->totalDelay / winfo->cntDelay; + } else { + fprintf(stderr, "queryDbExec() buffer:\n%s\naffected rows is %d", buffer, affectedRows); } verbosePrint("%s() LN%d: totalaffectedRows:%"PRId64" tblInserted=%d\n", __func__, __LINE__, winfo->totalAffectedRows, tblInserted); From 9d13525f3029dfa50b6f28de0e2788a4c34f60e6 Mon Sep 17 00:00:00 2001 From: Ping Xiao Date: Thu, 11 Mar 2021 13:37:34 +0800 Subject: [PATCH 8/9] remove data files before taosd start for JDBC and Unit test --- tests/test-all.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test-all.sh b/tests/test-all.sh index 4f7afe7d17..db9d6523a0 100755 --- a/tests/test-all.sh +++ b/tests/test-all.sh @@ -316,6 +316,7 @@ if [ "$2" != "sim" ] && [ "$2" != "python" ] && [ "$2" != "unit" ] && [ "$1" == cd debug/ stopTaosd + rm -rf /var/lib/taos/* nohup build/bin/taosd -c /etc/taos/ > /dev/null 2>&1 & sleep 30 @@ -358,6 +359,7 @@ if [ "$2" != "sim" ] && [ "$2" != "python" ] && [ "$2" != "jdbc" ] && [ "$1" == pwd cd debug/build/bin + rm -rf /var/lib/taos/* nohup ./taosd -c /etc/taos/ > /dev/null 2>&1 & sleep 30 From 841ac5341545c41ff3cecccb42d42957385406ff Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Thu, 11 Mar 2021 13:47:59 +0800 Subject: [PATCH 9/9] [TD-3143] : make taosdemo works on windows. adjust debug info. --- src/kit/taosdemo/taosdemo.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index 99c575aa33..c585e91c50 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -4029,10 +4029,7 @@ send_to_server: int affectedRows = queryDbExec( winfo->taos, buffer, INSERT_TYPE); - if (0 > affectedRows) { - fprintf(stderr, "queryDbExec() buffer:\n%s\naffected rows is %d", buffer, affectedRows); - goto free_and_statistics; - } else { + if (0 < affectedRows) { endTs = taosGetTimestampUs(); int64_t delay = endTs - startTs; if (delay > winfo->maxDelay) winfo->maxDelay = delay; @@ -4041,6 +4038,9 @@ send_to_server: winfo->totalDelay += delay; winfo->avgDelay = (double)winfo->totalDelay / winfo->cntDelay; winfo->totalAffectedRows += affectedRows; + } else { + fprintf(stderr, "queryDbExec() buffer:\n%s\naffected rows is %d", buffer, affectedRows); + goto free_and_statistics; } int64_t currentPrintTime = taosGetTimestampMs(); @@ -4242,7 +4242,7 @@ static void* syncWrite(void *sarg) { verbosePrint("%s() LN%d %s\n", __func__, __LINE__, buffer); int affectedRows = queryDbExec(winfo->taos, buffer, 1); - if (0 <= affectedRows){ + if (0 < affectedRows){ endTs = taosGetTimestampUs(); int64_t delay = endTs - startTs; if (delay > winfo->maxDelay) @@ -4341,7 +4341,7 @@ static void* syncWriteWithStb(void *sarg) { int sampleUsePos; - debugPrint("%s() LN%d insertRows=%"PRId64"\n", __func__, __LINE__, superTblInfo->insertRows); + verbosePrint("%s() LN%d insertRows=%"PRId64"\n", __func__, __LINE__, superTblInfo->insertRows); for (uint32_t tID = winfo->start_table_id; tID <= winfo->end_table_id; tID++) {