提交 0eb724fc 编写于 作者: Z zhaoyanggh

remove assert

上级 9ef8f245
...@@ -383,10 +383,8 @@ typedef struct SSuperTable_S { ...@@ -383,10 +383,8 @@ typedef struct SSuperTable_S {
uint32_t tagSampleCount; uint32_t tagSampleCount;
uint32_t tagUsePos; uint32_t tagUsePos;
#if STMT_BIND_PARAM_BATCH == 1
// bind param batch // bind param batch
char *sampleBindBatchArray; char *sampleBindBatchArray;
#endif
// statistics // statistics
uint64_t totalInsertRows; uint64_t totalInsertRows;
uint64_t totalAffectedRows; uint64_t totalAffectedRows;
...@@ -525,13 +523,9 @@ typedef struct SThreadInfo_S { ...@@ -525,13 +523,9 @@ typedef struct SThreadInfo_S {
TAOS_STMT *stmt; TAOS_STMT *stmt;
int64_t * bind_ts; int64_t * bind_ts;
#if STMT_BIND_PARAM_BATCH == 1
int64_t *bind_ts_array; int64_t *bind_ts_array;
char * bindParams; char * bindParams;
char * is_null; char * is_null;
#else
char *sampleBindArray;
#endif
int threadID; int threadID;
char db_name[TSDB_DB_NAME_LEN]; char db_name[TSDB_DB_NAME_LEN];
...@@ -579,7 +573,6 @@ typedef struct SThreadInfo_S { ...@@ -579,7 +573,6 @@ typedef struct SThreadInfo_S {
} threadInfo; } threadInfo;
/* ************ Global variables ************ */ /* ************ Global variables ************ */
extern char * g_dupstr;
extern char * g_aggreFuncDemo[]; extern char * g_aggreFuncDemo[];
extern char * g_aggreFunc[]; extern char * g_aggreFunc[];
extern SArguments g_args; extern SArguments g_args;
......
...@@ -18,10 +18,8 @@ ...@@ -18,10 +18,8 @@
#include "demo.h" #include "demo.h"
/***** Global variables ******/ /***** Global variables ******/
extern char *g_sampleDataBuf; extern char * g_sampleDataBuf;
#if STMT_BIND_PARAM_BATCH == 1 extern char * g_sampleBindBatchArray;
extern char *g_sampleBindBatchArray;
#endif
extern int32_t * g_randint; extern int32_t * g_randint;
extern uint32_t *g_randuint; extern uint32_t *g_randuint;
extern int64_t * g_randbigint; extern int64_t * g_randbigint;
...@@ -43,7 +41,7 @@ extern char * g_rand_current_buff; ...@@ -43,7 +41,7 @@ extern char * g_rand_current_buff;
extern char * g_rand_phase_buff; extern char * g_rand_phase_buff;
extern char * g_randdouble_buff; extern char * g_randdouble_buff;
/***** Declare functions *****/ /***** Declare functions *****/
void init_rand_data(); int init_rand_data();
char * rand_bool_str(); char * rand_bool_str();
int32_t rand_bool(); int32_t rand_bool();
char * rand_tinyint_str(); char * rand_tinyint_str();
......
...@@ -27,9 +27,9 @@ char *g_aggreFuncDemo[] = {"*", ...@@ -27,9 +27,9 @@ char *g_aggreFuncDemo[] = {"*",
char *g_aggreFunc[] = {"*", "count(*)", "avg(C0)", "sum(C0)", char *g_aggreFunc[] = {"*", "count(*)", "avg(C0)", "sum(C0)",
"max(C0)", "min(C0)", "first(C0)", "last(C0)"}; "max(C0)", "min(C0)", "first(C0)", "last(C0)"};
char *g_dupstr = NULL;
int parse_args(int argc, char *argv[], SArguments *arguments) { int parse_args(int argc, char *argv[], SArguments *arguments) {
int32_t code = -1;
char * g_dupstr;
for (int i = 1; i < argc; i++) { for (int i = 1; i < argc; i++) {
if ((0 == strncmp(argv[i], "-f", strlen("-f"))) || if ((0 == strncmp(argv[i], "-f", strlen("-f"))) ||
(0 == strncmp(argv[i], "--file", strlen("--file")))) { (0 == strncmp(argv[i], "--file", strlen("--file")))) {
...@@ -38,7 +38,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -38,7 +38,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (i + 1 == argc) { if (i + 1 == argc) {
errorPrintReqArg(argv[0], "f"); errorPrintReqArg(argv[0], "f");
return -1; goto end_parse_command;
} }
arguments->metaFile = argv[++i]; arguments->metaFile = argv[++i];
} else if (0 == strncmp(argv[i], "-f", strlen("-f"))) { } else if (0 == strncmp(argv[i], "-f", strlen("-f"))) {
...@@ -46,14 +46,14 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -46,14 +46,14 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
} else if (strlen("--file") == strlen(argv[i])) { } else if (strlen("--file") == strlen(argv[i])) {
if (i + 1 == argc) { if (i + 1 == argc) {
errorPrintReqArg3(argv[0], "--file"); errorPrintReqArg3(argv[0], "--file");
return -1; goto end_parse_command;
} }
arguments->metaFile = argv[++i]; arguments->metaFile = argv[++i];
} else if (0 == strncmp(argv[i], "--file=", strlen("--file="))) { } else if (0 == strncmp(argv[i], "--file=", strlen("--file="))) {
arguments->metaFile = (char *)(argv[i] + strlen("--file=")); arguments->metaFile = (char *)(argv[i] + strlen("--file="));
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-c", strlen("-c"))) || } else if ((0 == strncmp(argv[i], "-c", strlen("-c"))) ||
(0 == (0 ==
...@@ -61,7 +61,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -61,7 +61,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "c"); errorPrintReqArg(argv[0], "c");
return -1; goto end_parse_command;
} }
tstrncpy(configDir, argv[++i], TSDB_FILENAME_LEN); tstrncpy(configDir, argv[++i], TSDB_FILENAME_LEN);
} else if (0 == strncmp(argv[i], "-c", strlen("-c"))) { } else if (0 == strncmp(argv[i], "-c", strlen("-c"))) {
...@@ -70,7 +70,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -70,7 +70,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
} else if (strlen("--config-dir") == strlen(argv[i])) { } else if (strlen("--config-dir") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--config-dir"); errorPrintReqArg3(argv[0], "--config-dir");
return -1; goto end_parse_command;
} }
tstrncpy(configDir, argv[++i], TSDB_FILENAME_LEN); tstrncpy(configDir, argv[++i], TSDB_FILENAME_LEN);
} else if (0 == strncmp(argv[i], } else if (0 == strncmp(argv[i],
...@@ -79,14 +79,14 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -79,14 +79,14 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
TSDB_FILENAME_LEN); TSDB_FILENAME_LEN);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-h", strlen("-h"))) || } else if ((0 == strncmp(argv[i], "-h", strlen("-h"))) ||
(0 == strncmp(argv[i], "--host", strlen("--host")))) { (0 == strncmp(argv[i], "--host", strlen("--host")))) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "h"); errorPrintReqArg(argv[0], "h");
return -1; goto end_parse_command;
} }
arguments->host = argv[++i]; arguments->host = argv[++i];
} else if (0 == strncmp(argv[i], "-h", strlen("-h"))) { } else if (0 == strncmp(argv[i], "-h", strlen("-h"))) {
...@@ -94,14 +94,14 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -94,14 +94,14 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
} else if (strlen("--host") == strlen(argv[i])) { } else if (strlen("--host") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--host"); errorPrintReqArg3(argv[0], "--host");
return -1; goto end_parse_command;
} }
arguments->host = argv[++i]; arguments->host = argv[++i];
} else if (0 == strncmp(argv[i], "--host=", strlen("--host="))) { } else if (0 == strncmp(argv[i], "--host=", strlen("--host="))) {
arguments->host = (char *)(argv[i] + strlen("--host=")); arguments->host = (char *)(argv[i] + strlen("--host="));
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if (strcmp(argv[i], "-PP") == 0) { } else if (strcmp(argv[i], "-PP") == 0) {
arguments->performance_print = true; arguments->performance_print = true;
...@@ -113,12 +113,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -113,12 +113,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "P"); errorPrintReqArg(argv[0], "P");
return -1; goto end_parse_command;
} else if (isStringNumber(argv[i + 1])) { } else if (isStringNumber(argv[i + 1])) {
tstrncpy(strPort, argv[++i], BIGINT_BUFF_LEN); tstrncpy(strPort, argv[++i], BIGINT_BUFF_LEN);
} else { } else {
errorPrintReqArg2(argv[0], "P"); errorPrintReqArg2(argv[0], "P");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "--port=", strlen("--port="))) { } else if (0 == strncmp(argv[i], "--port=", strlen("--port="))) {
if (isStringNumber((char *)(argv[i] + strlen("--port=")))) { if (isStringNumber((char *)(argv[i] + strlen("--port=")))) {
...@@ -126,7 +126,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -126,7 +126,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
BIGINT_BUFF_LEN); BIGINT_BUFF_LEN);
} else { } else {
errorPrintReqArg2(argv[0], "--port"); errorPrintReqArg2(argv[0], "--port");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-P", strlen("-P"))) { } else if (0 == strncmp(argv[i], "-P", strlen("-P"))) {
if (isStringNumber((char *)(argv[i] + strlen("-P")))) { if (isStringNumber((char *)(argv[i] + strlen("-P")))) {
...@@ -134,27 +134,27 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -134,27 +134,27 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
BIGINT_BUFF_LEN); BIGINT_BUFF_LEN);
} else { } else {
errorPrintReqArg2(argv[0], "--port"); errorPrintReqArg2(argv[0], "--port");
return -1; goto end_parse_command;
} }
} else if (strlen("--port") == strlen(argv[i])) { } else if (strlen("--port") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--port"); errorPrintReqArg3(argv[0], "--port");
return -1; goto end_parse_command;
} else if (isStringNumber(argv[i + 1])) { } else if (isStringNumber(argv[i + 1])) {
tstrncpy(strPort, argv[++i], BIGINT_BUFF_LEN); tstrncpy(strPort, argv[++i], BIGINT_BUFF_LEN);
} else { } else {
errorPrintReqArg2(argv[0], "--port"); errorPrintReqArg2(argv[0], "--port");
return -1; goto end_parse_command;
} }
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
port = atoi(strPort); port = atoi(strPort);
if (port > 65535) { if (port > 65535) {
errorWrongValue("taosdump", "-P or --port", strPort); errorWrongValue("taosdump", "-P or --port", strPort);
return -1; goto end_parse_command;
} }
arguments->port = (uint16_t)port; arguments->port = (uint16_t)port;
...@@ -164,7 +164,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -164,7 +164,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "I"); errorPrintReqArg(argv[0], "I");
return -1; goto end_parse_command;
} }
if (0 == strcasecmp(argv[i + 1], "taosc")) { if (0 == strcasecmp(argv[i + 1], "taosc")) {
arguments->iface = TAOSC_IFACE; arguments->iface = TAOSC_IFACE;
...@@ -176,7 +176,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -176,7 +176,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
arguments->iface = SML_IFACE; arguments->iface = SML_IFACE;
} else { } else {
errorWrongValue(argv[0], "-I", argv[i + 1]); errorWrongValue(argv[0], "-I", argv[i + 1]);
return -1; goto end_parse_command;
} }
i++; i++;
} else if (0 == strncmp(argv[i], } else if (0 == strncmp(argv[i],
...@@ -198,7 +198,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -198,7 +198,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
arguments->iface = SML_IFACE; arguments->iface = SML_IFACE;
} else { } else {
errorPrintReqArg3(argv[0], "--interface"); errorPrintReqArg3(argv[0], "--interface");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-I", strlen("-I"))) { } else if (0 == strncmp(argv[i], "-I", strlen("-I"))) {
if (0 == if (0 ==
...@@ -216,12 +216,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -216,12 +216,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
} else { } else {
errorWrongValue(argv[0], "-I", errorWrongValue(argv[0], "-I",
(char *)(argv[i] + strlen("-I"))); (char *)(argv[i] + strlen("-I")));
return -1; goto end_parse_command;
} }
} else if (strlen("--interface") == strlen(argv[i])) { } else if (strlen("--interface") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--interface"); errorPrintReqArg3(argv[0], "--interface");
return -1; goto end_parse_command;
} }
if (0 == strcasecmp(argv[i + 1], "taosc")) { if (0 == strcasecmp(argv[i + 1], "taosc")) {
arguments->iface = TAOSC_IFACE; arguments->iface = TAOSC_IFACE;
...@@ -233,19 +233,19 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -233,19 +233,19 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
arguments->iface = SML_IFACE; arguments->iface = SML_IFACE;
} else { } else {
errorWrongValue(argv[0], "--interface", argv[i + 1]); errorWrongValue(argv[0], "--interface", argv[i + 1]);
return -1; goto end_parse_command;
} }
i++; i++;
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-u", strlen("-u"))) || } else if ((0 == strncmp(argv[i], "-u", strlen("-u"))) ||
(0 == strncmp(argv[i], "--user", strlen("--user")))) { (0 == strncmp(argv[i], "--user", strlen("--user")))) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "u"); errorPrintReqArg(argv[0], "u");
return -1; goto end_parse_command;
} }
arguments->user = argv[++i]; arguments->user = argv[++i];
} else if (0 == strncmp(argv[i], "-u", strlen("-u"))) { } else if (0 == strncmp(argv[i], "-u", strlen("-u"))) {
...@@ -255,12 +255,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -255,12 +255,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
} else if (strlen("--user") == strlen(argv[i])) { } else if (strlen("--user") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--user"); errorPrintReqArg3(argv[0], "--user");
return -1; goto end_parse_command;
} }
arguments->user = argv[++i]; arguments->user = argv[++i];
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-p", strlen("-p"))) || } else if ((0 == strncmp(argv[i], "-p", strlen("-p"))) ||
(0 == strcmp(argv[i], "--password"))) { (0 == strcmp(argv[i], "--password"))) {
...@@ -281,7 +281,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -281,7 +281,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--output"); errorPrintReqArg3(argv[0], "--output");
return -1; goto end_parse_command;
} }
arguments->output_file = argv[++i]; arguments->output_file = argv[++i];
} else if (0 == } else if (0 ==
...@@ -293,12 +293,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -293,12 +293,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
} else if (strlen("--output") == strlen(argv[i])) { } else if (strlen("--output") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--output"); errorPrintReqArg3(argv[0], "--output");
return -1; goto end_parse_command;
} }
arguments->output_file = argv[++i]; arguments->output_file = argv[++i];
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-s", strlen("-s"))) || } else if ((0 == strncmp(argv[i], "-s", strlen("-s"))) ||
(0 == (0 ==
...@@ -306,7 +306,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -306,7 +306,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "s"); errorPrintReqArg(argv[0], "s");
return -1; goto end_parse_command;
} }
arguments->sqlFile = argv[++i]; arguments->sqlFile = argv[++i];
} else if (0 == } else if (0 ==
...@@ -318,12 +318,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -318,12 +318,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
} else if (strlen("--sql-file") == strlen(argv[i])) { } else if (strlen("--sql-file") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--sql-file"); errorPrintReqArg3(argv[0], "--sql-file");
return -1; goto end_parse_command;
} }
arguments->sqlFile = argv[++i]; arguments->sqlFile = argv[++i];
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-q", strlen("-q"))) || } else if ((0 == strncmp(argv[i], "-q", strlen("-q"))) ||
(0 == (0 ==
...@@ -331,10 +331,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -331,10 +331,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "q"); errorPrintReqArg(argv[0], "q");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "q"); errorPrintReqArg2(argv[0], "q");
return -1; goto end_parse_command;
} }
arguments->async_mode = atoi(argv[++i]); arguments->async_mode = atoi(argv[++i]);
} else if (0 == strncmp(argv[i], } else if (0 == strncmp(argv[i],
...@@ -345,7 +345,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -345,7 +345,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--query-mode="))); atoi((char *)(argv[i] + strlen("--query-mode=")));
} else { } else {
errorPrintReqArg2(argv[0], "--query-mode"); errorPrintReqArg2(argv[0], "--query-mode");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-q", strlen("-q"))) { } else if (0 == strncmp(argv[i], "-q", strlen("-q"))) {
if (isStringNumber((char *)(argv[i] + strlen("-q")))) { if (isStringNumber((char *)(argv[i] + strlen("-q")))) {
...@@ -353,30 +353,30 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -353,30 +353,30 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("-q"))); atoi((char *)(argv[i] + strlen("-q")));
} else { } else {
errorPrintReqArg2(argv[0], "-q"); errorPrintReqArg2(argv[0], "-q");
return -1; goto end_parse_command;
} }
} else if (strlen("--query-mode") == strlen(argv[i])) { } else if (strlen("--query-mode") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--query-mode"); errorPrintReqArg3(argv[0], "--query-mode");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--query-mode"); errorPrintReqArg2(argv[0], "--query-mode");
return -1; goto end_parse_command;
} }
arguments->async_mode = atoi(argv[++i]); arguments->async_mode = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-T", strlen("-T"))) || } else if ((0 == strncmp(argv[i], "-T", strlen("-T"))) ||
(0 == strncmp(argv[i], "--threads", strlen("--threads")))) { (0 == strncmp(argv[i], "--threads", strlen("--threads")))) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "T"); errorPrintReqArg(argv[0], "T");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "T"); errorPrintReqArg2(argv[0], "T");
return -1; goto end_parse_command;
} }
arguments->nthreads = atoi(argv[++i]); arguments->nthreads = atoi(argv[++i]);
} else if (0 == } else if (0 ==
...@@ -386,7 +386,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -386,7 +386,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--threads="))); atoi((char *)(argv[i] + strlen("--threads=")));
} else { } else {
errorPrintReqArg2(argv[0], "--threads"); errorPrintReqArg2(argv[0], "--threads");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-T", strlen("-T"))) { } else if (0 == strncmp(argv[i], "-T", strlen("-T"))) {
if (isStringNumber((char *)(argv[i] + strlen("-T")))) { if (isStringNumber((char *)(argv[i] + strlen("-T")))) {
...@@ -394,20 +394,20 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -394,20 +394,20 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("-T"))); atoi((char *)(argv[i] + strlen("-T")));
} else { } else {
errorPrintReqArg2(argv[0], "-T"); errorPrintReqArg2(argv[0], "-T");
return -1; goto end_parse_command;
} }
} else if (strlen("--threads") == strlen(argv[i])) { } else if (strlen("--threads") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--threads"); errorPrintReqArg3(argv[0], "--threads");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--threads"); errorPrintReqArg2(argv[0], "--threads");
return -1; goto end_parse_command;
} }
arguments->nthreads = atoi(argv[++i]); arguments->nthreads = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-i", strlen("-i"))) || } else if ((0 == strncmp(argv[i], "-i", strlen("-i"))) ||
(0 == strncmp(argv[i], "--insert-interval", (0 == strncmp(argv[i], "--insert-interval",
...@@ -415,10 +415,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -415,10 +415,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "i"); errorPrintReqArg(argv[0], "i");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "i"); errorPrintReqArg2(argv[0], "i");
return -1; goto end_parse_command;
} }
arguments->insert_interval = atoi(argv[++i]); arguments->insert_interval = atoi(argv[++i]);
} else if (0 == strncmp(argv[i], "--insert-interval=", } else if (0 == strncmp(argv[i], "--insert-interval=",
...@@ -429,7 +429,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -429,7 +429,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--insert-interval="))); atoi((char *)(argv[i] + strlen("--insert-interval=")));
} else { } else {
errorPrintReqArg3(argv[0], "--insert-innterval"); errorPrintReqArg3(argv[0], "--insert-innterval");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-i", strlen("-i"))) { } else if (0 == strncmp(argv[i], "-i", strlen("-i"))) {
if (isStringNumber((char *)(argv[i] + strlen("-i")))) { if (isStringNumber((char *)(argv[i] + strlen("-i")))) {
...@@ -437,20 +437,20 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -437,20 +437,20 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("-i"))); atoi((char *)(argv[i] + strlen("-i")));
} else { } else {
errorPrintReqArg3(argv[0], "-i"); errorPrintReqArg3(argv[0], "-i");
return -1; goto end_parse_command;
} }
} else if (strlen("--insert-interval") == strlen(argv[i])) { } else if (strlen("--insert-interval") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--insert-interval"); errorPrintReqArg3(argv[0], "--insert-interval");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--insert-interval"); errorPrintReqArg2(argv[0], "--insert-interval");
return -1; goto end_parse_command;
} }
arguments->insert_interval = atoi(argv[++i]); arguments->insert_interval = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-S", strlen("-S"))) || } else if ((0 == strncmp(argv[i], "-S", strlen("-S"))) ||
(0 == (0 ==
...@@ -458,10 +458,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -458,10 +458,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "S"); errorPrintReqArg(argv[0], "S");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "S"); errorPrintReqArg2(argv[0], "S");
return -1; goto end_parse_command;
} }
arguments->async_mode = atoi(argv[++i]); arguments->async_mode = atoi(argv[++i]);
} else if (0 == strncmp(argv[i], } else if (0 == strncmp(argv[i],
...@@ -472,7 +472,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -472,7 +472,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--time-step="))); atoi((char *)(argv[i] + strlen("--time-step=")));
} else { } else {
errorPrintReqArg2(argv[0], "--time-step"); errorPrintReqArg2(argv[0], "--time-step");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-S", strlen("-S"))) { } else if (0 == strncmp(argv[i], "-S", strlen("-S"))) {
if (isStringNumber((char *)(argv[i] + strlen("-S")))) { if (isStringNumber((char *)(argv[i] + strlen("-S")))) {
...@@ -480,26 +480,26 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -480,26 +480,26 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("-S"))); atoi((char *)(argv[i] + strlen("-S")));
} else { } else {
errorPrintReqArg2(argv[0], "-S"); errorPrintReqArg2(argv[0], "-S");
return -1; goto end_parse_command;
} }
} else if (strlen("--time-step") == strlen(argv[i])) { } else if (strlen("--time-step") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--time-step"); errorPrintReqArg3(argv[0], "--time-step");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--time-step"); errorPrintReqArg2(argv[0], "--time-step");
return -1; goto end_parse_command;
} }
arguments->async_mode = atoi(argv[++i]); arguments->async_mode = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if (strcmp(argv[i], "-qt") == 0) { } else if (strcmp(argv[i], "-qt") == 0) {
if ((argc == i + 1) || (!isStringNumber(argv[i + 1]))) { if ((argc == i + 1) || (!isStringNumber(argv[i + 1]))) {
printHelp(); printHelp();
errorPrint("%s", "\n\t-qt need a number following!\n"); errorPrint("%s", "\n\t-qt need a number following!\n");
return -1; goto end_parse_command;
} }
arguments->query_times = atoi(argv[++i]); arguments->query_times = atoi(argv[++i]);
} else if ((0 == strncmp(argv[i], "-B", strlen("-B"))) || } else if ((0 == strncmp(argv[i], "-B", strlen("-B"))) ||
...@@ -508,10 +508,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -508,10 +508,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (strlen("-B") == strlen(argv[i])) { if (strlen("-B") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "B"); errorPrintReqArg(argv[0], "B");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "B"); errorPrintReqArg2(argv[0], "B");
return -1; goto end_parse_command;
} }
arguments->interlaceRows = atoi(argv[++i]); arguments->interlaceRows = atoi(argv[++i]);
} else if (0 == strncmp(argv[i], "--interlace-rows=", } else if (0 == strncmp(argv[i], "--interlace-rows=",
...@@ -522,7 +522,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -522,7 +522,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--interlace-rows="))); atoi((char *)(argv[i] + strlen("--interlace-rows=")));
} else { } else {
errorPrintReqArg2(argv[0], "--interlace-rows"); errorPrintReqArg2(argv[0], "--interlace-rows");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-B", strlen("-B"))) { } else if (0 == strncmp(argv[i], "-B", strlen("-B"))) {
if (isStringNumber((char *)(argv[i] + strlen("-B")))) { if (isStringNumber((char *)(argv[i] + strlen("-B")))) {
...@@ -530,30 +530,30 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -530,30 +530,30 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("-B"))); atoi((char *)(argv[i] + strlen("-B")));
} else { } else {
errorPrintReqArg2(argv[0], "-B"); errorPrintReqArg2(argv[0], "-B");
return -1; goto end_parse_command;
} }
} else if (strlen("--interlace-rows") == strlen(argv[i])) { } else if (strlen("--interlace-rows") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--interlace-rows"); errorPrintReqArg3(argv[0], "--interlace-rows");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--interlace-rows"); errorPrintReqArg2(argv[0], "--interlace-rows");
return -1; goto end_parse_command;
} }
arguments->interlaceRows = atoi(argv[++i]); arguments->interlaceRows = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-r", strlen("-r"))) || } else if ((0 == strncmp(argv[i], "-r", strlen("-r"))) ||
(0 == strncmp(argv[i], "--rec-per-req", 13))) { (0 == strncmp(argv[i], "--rec-per-req", 13))) {
if (strlen("-r") == strlen(argv[i])) { if (strlen("-r") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "r"); errorPrintReqArg(argv[0], "r");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "r"); errorPrintReqArg2(argv[0], "r");
return -1; goto end_parse_command;
} }
arguments->reqPerReq = atoi(argv[++i]); arguments->reqPerReq = atoi(argv[++i]);
} else if (0 == strncmp(argv[i], "--rec-per-req=", } else if (0 == strncmp(argv[i], "--rec-per-req=",
...@@ -564,7 +564,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -564,7 +564,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--rec-per-req="))); atoi((char *)(argv[i] + strlen("--rec-per-req=")));
} else { } else {
errorPrintReqArg2(argv[0], "--rec-per-req"); errorPrintReqArg2(argv[0], "--rec-per-req");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-r", strlen("-r"))) { } else if (0 == strncmp(argv[i], "-r", strlen("-r"))) {
if (isStringNumber((char *)(argv[i] + strlen("-r")))) { if (isStringNumber((char *)(argv[i] + strlen("-r")))) {
...@@ -572,30 +572,30 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -572,30 +572,30 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("-r"))); atoi((char *)(argv[i] + strlen("-r")));
} else { } else {
errorPrintReqArg2(argv[0], "-r"); errorPrintReqArg2(argv[0], "-r");
return -1; goto end_parse_command;
} }
} else if (strlen("--rec-per-req") == strlen(argv[i])) { } else if (strlen("--rec-per-req") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--rec-per-req"); errorPrintReqArg3(argv[0], "--rec-per-req");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--rec-per-req"); errorPrintReqArg2(argv[0], "--rec-per-req");
return -1; goto end_parse_command;
} }
arguments->reqPerReq = atoi(argv[++i]); arguments->reqPerReq = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-t", strlen("-t"))) || } else if ((0 == strncmp(argv[i], "-t", strlen("-t"))) ||
(0 == strncmp(argv[i], "--tables", strlen("--tables")))) { (0 == strncmp(argv[i], "--tables", strlen("--tables")))) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "t"); errorPrintReqArg(argv[0], "t");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "t"); errorPrintReqArg2(argv[0], "t");
return -1; goto end_parse_command;
} }
arguments->ntables = atoi(argv[++i]); arguments->ntables = atoi(argv[++i]);
} else if (0 == } else if (0 ==
...@@ -605,27 +605,27 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -605,27 +605,27 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--tables="))); atoi((char *)(argv[i] + strlen("--tables=")));
} else { } else {
errorPrintReqArg2(argv[0], "--tables"); errorPrintReqArg2(argv[0], "--tables");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-t", strlen("-t"))) { } else if (0 == strncmp(argv[i], "-t", strlen("-t"))) {
if (isStringNumber((char *)(argv[i] + strlen("-t")))) { if (isStringNumber((char *)(argv[i] + strlen("-t")))) {
arguments->ntables = atoi((char *)(argv[i] + strlen("-t"))); arguments->ntables = atoi((char *)(argv[i] + strlen("-t")));
} else { } else {
errorPrintReqArg2(argv[0], "-t"); errorPrintReqArg2(argv[0], "-t");
return -1; goto end_parse_command;
} }
} else if (strlen("--tables") == strlen(argv[i])) { } else if (strlen("--tables") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--tables"); errorPrintReqArg3(argv[0], "--tables");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--tables"); errorPrintReqArg2(argv[0], "--tables");
return -1; goto end_parse_command;
} }
arguments->ntables = atoi(argv[++i]); arguments->ntables = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
g_totalChildTables = arguments->ntables; g_totalChildTables = arguments->ntables;
...@@ -634,10 +634,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -634,10 +634,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "n"); errorPrintReqArg(argv[0], "n");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "n"); errorPrintReqArg2(argv[0], "n");
return -1; goto end_parse_command;
} }
arguments->insertRows = atoi(argv[++i]); arguments->insertRows = atoi(argv[++i]);
} else if (0 == } else if (0 ==
...@@ -647,7 +647,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -647,7 +647,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--records="))); atoi((char *)(argv[i] + strlen("--records=")));
} else { } else {
errorPrintReqArg2(argv[0], "--records"); errorPrintReqArg2(argv[0], "--records");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-n", strlen("-n"))) { } else if (0 == strncmp(argv[i], "-n", strlen("-n"))) {
if (isStringNumber((char *)(argv[i] + strlen("-n")))) { if (isStringNumber((char *)(argv[i] + strlen("-n")))) {
...@@ -655,20 +655,20 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -655,20 +655,20 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("-n"))); atoi((char *)(argv[i] + strlen("-n")));
} else { } else {
errorPrintReqArg2(argv[0], "-n"); errorPrintReqArg2(argv[0], "-n");
return -1; goto end_parse_command;
} }
} else if (strlen("--records") == strlen(argv[i])) { } else if (strlen("--records") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--records"); errorPrintReqArg3(argv[0], "--records");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--records"); errorPrintReqArg2(argv[0], "--records");
return -1; goto end_parse_command;
} }
arguments->insertRows = atoi(argv[++i]); arguments->insertRows = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-d", strlen("-d"))) || } else if ((0 == strncmp(argv[i], "-d", strlen("-d"))) ||
(0 == (0 ==
...@@ -676,7 +676,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -676,7 +676,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "d"); errorPrintReqArg(argv[0], "d");
return -1; goto end_parse_command;
} }
arguments->database = argv[++i]; arguments->database = argv[++i];
} else if (0 == } else if (0 ==
...@@ -688,12 +688,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -688,12 +688,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
} else if (strlen("--database") == strlen(argv[i])) { } else if (strlen("--database") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--database"); errorPrintReqArg3(argv[0], "--database");
return -1; goto end_parse_command;
} }
arguments->database = argv[++i]; arguments->database = argv[++i];
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-l", strlen("-l"))) || } else if ((0 == strncmp(argv[i], "-l", strlen("-l"))) ||
(0 == strncmp(argv[i], "--columns", strlen("--columns")))) { (0 == strncmp(argv[i], "--columns", strlen("--columns")))) {
...@@ -701,10 +701,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -701,10 +701,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "l"); errorPrintReqArg(argv[0], "l");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "l"); errorPrintReqArg2(argv[0], "l");
return -1; goto end_parse_command;
} }
arguments->columnCount = atoi(argv[++i]); arguments->columnCount = atoi(argv[++i]);
} else if (0 == } else if (0 ==
...@@ -714,7 +714,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -714,7 +714,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--columns="))); atoi((char *)(argv[i] + strlen("--columns=")));
} else { } else {
errorPrintReqArg2(argv[0], "--columns"); errorPrintReqArg2(argv[0], "--columns");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-l", strlen("-l"))) { } else if (0 == strncmp(argv[i], "-l", strlen("-l"))) {
if (isStringNumber((char *)(argv[i] + strlen("-l")))) { if (isStringNumber((char *)(argv[i] + strlen("-l")))) {
...@@ -722,20 +722,20 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -722,20 +722,20 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("-l"))); atoi((char *)(argv[i] + strlen("-l")));
} else { } else {
errorPrintReqArg2(argv[0], "-l"); errorPrintReqArg2(argv[0], "-l");
return -1; goto end_parse_command;
} }
} else if (strlen("--columns") == strlen(argv[i])) { } else if (strlen("--columns") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--columns"); errorPrintReqArg3(argv[0], "--columns");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--columns"); errorPrintReqArg2(argv[0], "--columns");
return -1; goto end_parse_command;
} }
arguments->columnCount = atoi(argv[++i]); arguments->columnCount = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
if (arguments->columnCount > MAX_NUM_COLUMNS) { if (arguments->columnCount > MAX_NUM_COLUMNS) {
...@@ -764,7 +764,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -764,7 +764,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "b"); errorPrintReqArg(argv[0], "b");
return -1; goto end_parse_command;
} }
dataType = argv[++i]; dataType = argv[++i];
} else if (0 == strncmp(argv[i], } else if (0 == strncmp(argv[i],
...@@ -775,12 +775,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -775,12 +775,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
} else if (strlen("--data-type") == strlen(argv[i])) { } else if (strlen("--data-type") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--data-type"); errorPrintReqArg3(argv[0], "--data-type");
return -1; goto end_parse_command;
} }
dataType = argv[++i]; dataType = argv[++i];
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
if (strstr(dataType, ",") == NULL) { if (strstr(dataType, ",") == NULL) {
...@@ -802,7 +802,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -802,7 +802,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
strcasecmp(dataType, "UBIGINT")) { strcasecmp(dataType, "UBIGINT")) {
printHelp(); printHelp();
errorPrint("%s", "-b: Invalid data_type!\n"); errorPrint("%s", "-b: Invalid data_type!\n");
return -1; goto end_parse_command;
} }
arguments->dataType[0] = dataType; arguments->dataType[0] = dataType;
if (0 == strcasecmp(dataType, "INT")) { if (0 == strcasecmp(dataType, "INT")) {
...@@ -865,9 +865,8 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -865,9 +865,8 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
strcasecmp(token, "UINT") && strcasecmp(token, "UINT") &&
strcasecmp(token, "UBIGINT")) { strcasecmp(token, "UBIGINT")) {
printHelp(); printHelp();
free(g_dupstr);
errorPrint("%s", "-b: Invalid data_type!\n"); errorPrint("%s", "-b: Invalid data_type!\n");
return -1; goto end_parse_command;
} }
if (0 == strcasecmp(token, "INT")) { if (0 == strcasecmp(token, "INT")) {
...@@ -919,10 +918,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -919,10 +918,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "w"); errorPrintReqArg(argv[0], "w");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "w"); errorPrintReqArg2(argv[0], "w");
return -1; goto end_parse_command;
} }
arguments->binwidth = atoi(argv[++i]); arguments->binwidth = atoi(argv[++i]);
} else if (0 == } else if (0 ==
...@@ -932,7 +931,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -932,7 +931,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--binwidth="))); atoi((char *)(argv[i] + strlen("--binwidth=")));
} else { } else {
errorPrintReqArg2(argv[0], "--binwidth"); errorPrintReqArg2(argv[0], "--binwidth");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-w", strlen("-w"))) { } else if (0 == strncmp(argv[i], "-w", strlen("-w"))) {
if (isStringNumber((char *)(argv[i] + strlen("-w")))) { if (isStringNumber((char *)(argv[i] + strlen("-w")))) {
...@@ -940,20 +939,20 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -940,20 +939,20 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("-w"))); atoi((char *)(argv[i] + strlen("-w")));
} else { } else {
errorPrintReqArg2(argv[0], "-w"); errorPrintReqArg2(argv[0], "-w");
return -1; goto end_parse_command;
} }
} else if (strlen("--binwidth") == strlen(argv[i])) { } else if (strlen("--binwidth") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--binwidth"); errorPrintReqArg3(argv[0], "--binwidth");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--binwidth"); errorPrintReqArg2(argv[0], "--binwidth");
return -1; goto end_parse_command;
} }
arguments->binwidth = atoi(argv[++i]); arguments->binwidth = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-m", strlen("-m"))) || } else if ((0 == strncmp(argv[i], "-m", strlen("-m"))) ||
(0 == strncmp(argv[i], "--table-prefix", (0 == strncmp(argv[i], "--table-prefix",
...@@ -961,7 +960,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -961,7 +960,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "m"); errorPrintReqArg(argv[0], "m");
return -1; goto end_parse_command;
} }
arguments->tb_prefix = argv[++i]; arguments->tb_prefix = argv[++i];
} else if (0 == strncmp(argv[i], "--table-prefix=", } else if (0 == strncmp(argv[i], "--table-prefix=",
...@@ -973,12 +972,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -973,12 +972,12 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
} else if (strlen("--table-prefix") == strlen(argv[i])) { } else if (strlen("--table-prefix") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--table-prefix"); errorPrintReqArg3(argv[0], "--table-prefix");
return -1; goto end_parse_command;
} }
arguments->tb_prefix = argv[++i]; arguments->tb_prefix = argv[++i];
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-E", strlen("-E"))) || } else if ((0 == strncmp(argv[i], "-E", strlen("-E"))) ||
(0 == strncmp(argv[i], "--escape-character", (0 == strncmp(argv[i], "--escape-character",
...@@ -1008,10 +1007,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1008,10 +1007,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (strlen("-R") == strlen(argv[i])) { if (strlen("-R") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "R"); errorPrintReqArg(argv[0], "R");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "R"); errorPrintReqArg2(argv[0], "R");
return -1; goto end_parse_command;
} }
arguments->disorderRange = atoi(argv[++i]); arguments->disorderRange = atoi(argv[++i]);
} else if (0 == strncmp(argv[i], "--disorder-range=", } else if (0 == strncmp(argv[i], "--disorder-range=",
...@@ -1022,7 +1021,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1022,7 +1021,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--disorder-range="))); atoi((char *)(argv[i] + strlen("--disorder-range=")));
} else { } else {
errorPrintReqArg2(argv[0], "--disorder-range"); errorPrintReqArg2(argv[0], "--disorder-range");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-R", strlen("-R"))) { } else if (0 == strncmp(argv[i], "-R", strlen("-R"))) {
if (isStringNumber((char *)(argv[i] + strlen("-R")))) { if (isStringNumber((char *)(argv[i] + strlen("-R")))) {
...@@ -1030,7 +1029,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1030,7 +1029,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("-R"))); atoi((char *)(argv[i] + strlen("-R")));
} else { } else {
errorPrintReqArg2(argv[0], "-R"); errorPrintReqArg2(argv[0], "-R");
return -1; goto end_parse_command;
} }
if (arguments->disorderRange < 0) { if (arguments->disorderRange < 0) {
...@@ -1041,15 +1040,15 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1041,15 +1040,15 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
} else if (strlen("--disorder-range") == strlen(argv[i])) { } else if (strlen("--disorder-range") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--disorder-range"); errorPrintReqArg3(argv[0], "--disorder-range");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--disorder-range"); errorPrintReqArg2(argv[0], "--disorder-range");
return -1; goto end_parse_command;
} }
arguments->disorderRange = atoi(argv[++i]); arguments->disorderRange = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
} else if ((0 == strncmp(argv[i], "-O", strlen("-O"))) || } else if ((0 == strncmp(argv[i], "-O", strlen("-O"))) ||
(0 == (0 ==
...@@ -1057,10 +1056,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1057,10 +1056,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "O"); errorPrintReqArg(argv[0], "O");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "O"); errorPrintReqArg2(argv[0], "O");
return -1; goto end_parse_command;
} }
arguments->disorderRatio = atoi(argv[++i]); arguments->disorderRatio = atoi(argv[++i]);
} else if (0 == } else if (0 ==
...@@ -1070,7 +1069,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1070,7 +1069,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--disorder="))); atoi((char *)(argv[i] + strlen("--disorder=")));
} else { } else {
errorPrintReqArg2(argv[0], "--disorder"); errorPrintReqArg2(argv[0], "--disorder");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-O", strlen("-O"))) { } else if (0 == strncmp(argv[i], "-O", strlen("-O"))) {
if (isStringNumber((char *)(argv[i] + strlen("-O")))) { if (isStringNumber((char *)(argv[i] + strlen("-O")))) {
...@@ -1078,20 +1077,20 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1078,20 +1077,20 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("-O"))); atoi((char *)(argv[i] + strlen("-O")));
} else { } else {
errorPrintReqArg2(argv[0], "-O"); errorPrintReqArg2(argv[0], "-O");
return -1; goto end_parse_command;
} }
} else if (strlen("--disorder") == strlen(argv[i])) { } else if (strlen("--disorder") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--disorder"); errorPrintReqArg3(argv[0], "--disorder");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--disorder"); errorPrintReqArg2(argv[0], "--disorder");
return -1; goto end_parse_command;
} }
arguments->disorderRatio = atoi(argv[++i]); arguments->disorderRatio = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
if (arguments->disorderRatio > 50) { if (arguments->disorderRatio > 50) {
...@@ -1104,10 +1103,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1104,10 +1103,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (2 == strlen(argv[i])) { if (2 == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg(argv[0], "a"); errorPrintReqArg(argv[0], "a");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "a"); errorPrintReqArg2(argv[0], "a");
return -1; goto end_parse_command;
} }
arguments->replica = atoi(argv[++i]); arguments->replica = atoi(argv[++i]);
} else if (0 == } else if (0 ==
...@@ -1117,27 +1116,27 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1117,27 +1116,27 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
atoi((char *)(argv[i] + strlen("--replica="))); atoi((char *)(argv[i] + strlen("--replica=")));
} else { } else {
errorPrintReqArg2(argv[0], "--replica"); errorPrintReqArg2(argv[0], "--replica");
return -1; goto end_parse_command;
} }
} else if (0 == strncmp(argv[i], "-a", strlen("-a"))) { } else if (0 == strncmp(argv[i], "-a", strlen("-a"))) {
if (isStringNumber((char *)(argv[i] + strlen("-a")))) { if (isStringNumber((char *)(argv[i] + strlen("-a")))) {
arguments->replica = atoi((char *)(argv[i] + strlen("-a"))); arguments->replica = atoi((char *)(argv[i] + strlen("-a")));
} else { } else {
errorPrintReqArg2(argv[0], "-a"); errorPrintReqArg2(argv[0], "-a");
return -1; goto end_parse_command;
} }
} else if (strlen("--replica") == strlen(argv[i])) { } else if (strlen("--replica") == strlen(argv[i])) {
if (argc == i + 1) { if (argc == i + 1) {
errorPrintReqArg3(argv[0], "--replica"); errorPrintReqArg3(argv[0], "--replica");
return -1; goto end_parse_command;
} else if (!isStringNumber(argv[i + 1])) { } else if (!isStringNumber(argv[i + 1])) {
errorPrintReqArg2(argv[0], "--replica"); errorPrintReqArg2(argv[0], "--replica");
return -1; goto end_parse_command;
} }
arguments->replica = atoi(argv[++i]); arguments->replica = atoi(argv[++i]);
} else { } else {
errorUnrecognized(argv[0], argv[i]); errorUnrecognized(argv[0], argv[i]);
return -1; goto end_parse_command;
} }
if (arguments->replica > 3 || arguments->replica < 1) { if (arguments->replica > 3 || arguments->replica < 1) {
...@@ -1150,7 +1149,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1150,7 +1149,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (arguments->method_of_delete > 3) { if (arguments->method_of_delete > 3) {
errorPrint("%s", errorPrint("%s",
"\n\t-D need a value (0~3) number following!\n"); "\n\t-D need a value (0~3) number following!\n");
return -1; goto end_parse_command;
} }
} else if ((strcmp(argv[i], "--version") == 0) || } else if ((strcmp(argv[i], "--version") == 0) ||
(strcmp(argv[i], "-V") == 0)) { (strcmp(argv[i], "-V") == 0)) {
...@@ -1191,7 +1190,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1191,7 +1190,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
fprintf(stderr, fprintf(stderr,
"Try `taosdemo --help' or `taosdemo --usage' for more " "Try `taosdemo --help' or `taosdemo --usage' for more "
"information.\n"); "information.\n");
return -1; goto end_parse_command;
} }
} }
...@@ -1204,7 +1203,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1204,7 +1203,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
if (0 == columnCount) { if (0 == columnCount) {
errorPrint("%s", "data type error!\n"); errorPrint("%s", "data type error!\n");
return -1; goto end_parse_command;
} }
g_args.columnCount = columnCount; g_args.columnCount = columnCount;
...@@ -1257,7 +1256,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1257,7 +1256,7 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
default: default:
errorPrint("get error data type : %s\n", g_args.dataType[c]); errorPrint("get error data type : %s\n", g_args.dataType[c]);
return -1; goto end_parse_command;
} }
} }
...@@ -1323,7 +1322,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) { ...@@ -1323,7 +1322,10 @@ int parse_args(int argc, char *argv[], SArguments *arguments) {
prompt(); prompt();
} }
return 0; code = 0;
end_parse_command:
tmfree(g_dupstr);
return code;
} }
void setParaFromArg() { void setParaFromArg() {
char type[20]; char type[20];
...@@ -1548,12 +1550,15 @@ void *queryStableAggrFunc(void *sarg) { ...@@ -1548,12 +1550,15 @@ void *queryStableAggrFunc(void *sarg) {
TAOS * taos = pThreadInfo->taos; TAOS * taos = pThreadInfo->taos;
setThreadName("queryStableAggrFunc"); setThreadName("queryStableAggrFunc");
char *command = calloc(1, BUFFER_SIZE); char *command = calloc(1, BUFFER_SIZE);
assert(command); if (NULL == command) {
errorPrint("failed to allocate %d size memory\n", BUFFER_SIZE);
return NULL;
}
FILE *fp = fopen(pThreadInfo->filePath, "a"); FILE *fp = fopen(pThreadInfo->filePath, "a");
if (NULL == fp) { if (NULL == fp) {
printf("fopen %s fail, reason:%s.\n", pThreadInfo->filePath, errorPrint("fopen %s fail, reason:%s.\n", pThreadInfo->filePath,
strerror(errno)); strerror(errno));
free(command); free(command);
return NULL; return NULL;
} }
...@@ -1656,7 +1661,10 @@ void *queryNtableAggrFunc(void *sarg) { ...@@ -1656,7 +1661,10 @@ void *queryNtableAggrFunc(void *sarg) {
TAOS * taos = pThreadInfo->taos; TAOS * taos = pThreadInfo->taos;
setThreadName("queryNtableAggrFunc"); setThreadName("queryNtableAggrFunc");
char *command = calloc(1, BUFFER_SIZE); char *command = calloc(1, BUFFER_SIZE);
assert(command); if (NULL == command) {
errorPrint("failed to allocate %d size memory\n", BUFFER_SIZE);
return NULL;
}
uint64_t startTime = pThreadInfo->start_time; uint64_t startTime = pThreadInfo->start_time;
char * tb_prefix = pThreadInfo->tb_prefix; char * tb_prefix = pThreadInfo->tb_prefix;
......
...@@ -16,10 +16,8 @@ ...@@ -16,10 +16,8 @@
#include "demoData.h" #include "demoData.h"
#include "demo.h" #include "demo.h"
char *g_sampleDataBuf = NULL; char * g_sampleDataBuf = NULL;
#if STMT_BIND_PARAM_BATCH == 1 char * g_sampleBindBatchArray = NULL;
char *g_sampleBindBatchArray = NULL;
#endif
int32_t * g_randint = NULL; int32_t * g_randint = NULL;
uint32_t *g_randuint = NULL; uint32_t *g_randuint = NULL;
int64_t * g_randbigint = NULL; int64_t * g_randbigint = NULL;
...@@ -267,47 +265,128 @@ double rand_double() { ...@@ -267,47 +265,128 @@ double rand_double() {
return g_randdouble[cursor]; return g_randdouble[cursor];
} }
void init_rand_data() { int init_rand_data() {
int32_t code = -1;
g_randint_buff = calloc(1, INT_BUFF_LEN * g_args.prepared_rand); g_randint_buff = calloc(1, INT_BUFF_LEN * g_args.prepared_rand);
assert(g_randint_buff); if (NULL == g_randint_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
INT_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_rand_voltage_buff = calloc(1, INT_BUFF_LEN * g_args.prepared_rand); g_rand_voltage_buff = calloc(1, INT_BUFF_LEN * g_args.prepared_rand);
assert(g_rand_voltage_buff); if (NULL == g_randint_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
INT_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randbigint_buff = calloc(1, BIGINT_BUFF_LEN * g_args.prepared_rand); g_randbigint_buff = calloc(1, BIGINT_BUFF_LEN * g_args.prepared_rand);
assert(g_randbigint_buff); if (NULL == g_randbigint_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
BIGINT_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randsmallint_buff = calloc(1, SMALLINT_BUFF_LEN * g_args.prepared_rand); g_randsmallint_buff = calloc(1, SMALLINT_BUFF_LEN * g_args.prepared_rand);
assert(g_randsmallint_buff); if (NULL == g_randsmallint_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
SMALLINT_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randtinyint_buff = calloc(1, TINYINT_BUFF_LEN * g_args.prepared_rand); g_randtinyint_buff = calloc(1, TINYINT_BUFF_LEN * g_args.prepared_rand);
assert(g_randtinyint_buff); if (NULL == g_randtinyint_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
TINYINT_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randbool_buff = calloc(1, BOOL_BUFF_LEN * g_args.prepared_rand); g_randbool_buff = calloc(1, BOOL_BUFF_LEN * g_args.prepared_rand);
assert(g_randbool_buff); if (NULL == g_randbool_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
BOOL_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randfloat_buff = calloc(1, FLOAT_BUFF_LEN * g_args.prepared_rand); g_randfloat_buff = calloc(1, FLOAT_BUFF_LEN * g_args.prepared_rand);
assert(g_randfloat_buff); if (NULL == g_randfloat_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
FLOAT_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_rand_current_buff = calloc(1, FLOAT_BUFF_LEN * g_args.prepared_rand); g_rand_current_buff = calloc(1, FLOAT_BUFF_LEN * g_args.prepared_rand);
assert(g_rand_current_buff); if (NULL == g_rand_current_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
FLOAT_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_rand_phase_buff = calloc(1, FLOAT_BUFF_LEN * g_args.prepared_rand); g_rand_phase_buff = calloc(1, FLOAT_BUFF_LEN * g_args.prepared_rand);
assert(g_rand_phase_buff); if (NULL == g_rand_phase_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
FLOAT_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randdouble_buff = calloc(1, DOUBLE_BUFF_LEN * g_args.prepared_rand); g_randdouble_buff = calloc(1, DOUBLE_BUFF_LEN * g_args.prepared_rand);
assert(g_randdouble_buff); if (NULL == g_randdouble_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
DOUBLE_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randuint_buff = calloc(1, INT_BUFF_LEN * g_args.prepared_rand); g_randuint_buff = calloc(1, INT_BUFF_LEN * g_args.prepared_rand);
assert(g_randuint_buff); if (NULL == g_randuint_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
INT_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randutinyint_buff = calloc(1, TINYINT_BUFF_LEN * g_args.prepared_rand); g_randutinyint_buff = calloc(1, TINYINT_BUFF_LEN * g_args.prepared_rand);
assert(g_randutinyint_buff); if (NULL == g_randutinyint_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
TINYINT_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randusmallint_buff = calloc(1, SMALLINT_BUFF_LEN * g_args.prepared_rand); g_randusmallint_buff = calloc(1, SMALLINT_BUFF_LEN * g_args.prepared_rand);
assert(g_randusmallint_buff); if (NULL == g_randusmallint_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
SMALLINT_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randubigint_buff = calloc(1, BIGINT_BUFF_LEN * g_args.prepared_rand); g_randubigint_buff = calloc(1, BIGINT_BUFF_LEN * g_args.prepared_rand);
assert(g_randubigint_buff); if (NULL == g_randubigint_buff) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
BIGINT_BUFF_LEN * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randint = calloc(1, sizeof(int32_t) * g_args.prepared_rand); g_randint = calloc(1, sizeof(int32_t) * g_args.prepared_rand);
assert(g_randint); if (NULL == g_randint) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
sizeof(int32_t) * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randuint = calloc(1, sizeof(uint32_t) * g_args.prepared_rand); g_randuint = calloc(1, sizeof(uint32_t) * g_args.prepared_rand);
assert(g_randuint); if (NULL == g_randuint) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
sizeof(uint32_t) * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randbigint = calloc(1, sizeof(int64_t) * g_args.prepared_rand); g_randbigint = calloc(1, sizeof(int64_t) * g_args.prepared_rand);
assert(g_randbigint); if (NULL == g_randbigint) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
sizeof(int64_t) * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randubigint = calloc(1, sizeof(uint64_t) * g_args.prepared_rand); g_randubigint = calloc(1, sizeof(uint64_t) * g_args.prepared_rand);
assert(g_randubigint); if (NULL == g_randubigint) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
sizeof(uint64_t) * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randfloat = calloc(1, sizeof(float) * g_args.prepared_rand); g_randfloat = calloc(1, sizeof(float) * g_args.prepared_rand);
assert(g_randfloat); if (NULL == g_randfloat) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
sizeof(float) * g_args.prepared_rand);
goto end_init_rand_data;
}
g_randdouble = calloc(1, sizeof(double) * g_args.prepared_rand); g_randdouble = calloc(1, sizeof(double) * g_args.prepared_rand);
assert(g_randdouble); if (NULL == g_randdouble) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
sizeof(double) * g_args.prepared_rand);
goto end_init_rand_data;
}
for (int i = 0; i < g_args.prepared_rand; i++) { for (int i = 0; i < g_args.prepared_rand; i++) {
g_randint[i] = (int)(taosRandom() % RAND_MAX - (RAND_MAX >> 1)); g_randint[i] = (int)(taosRandom() % RAND_MAX - (RAND_MAX >> 1));
...@@ -350,4 +429,7 @@ void init_rand_data() { ...@@ -350,4 +429,7 @@ void init_rand_data() {
(taosRandom() % 2 > 0.5 ? 1 : -1); (taosRandom() % 2 > 0.5 ? 1 : -1);
sprintf(g_randdouble_buff + i * DOUBLE_BUFF_LEN, "%f", g_randdouble[i]); sprintf(g_randdouble_buff + i * DOUBLE_BUFF_LEN, "%f", g_randdouble[i]);
} }
code = 0;
end_init_rand_data:
return code;
} }
\ No newline at end of file
...@@ -42,8 +42,11 @@ static int generateTagValuesForStb(SSuperTable *stbInfo, int64_t tableSeq, ...@@ -42,8 +42,11 @@ static int generateTagValuesForStb(SSuperTable *stbInfo, int64_t tableSeq,
} }
int32_t tagBufLen = stbInfo->tags[i].dataLen + 1; int32_t tagBufLen = stbInfo->tags[i].dataLen + 1;
char * buf = (char *)calloc(tagBufLen, 1); char * buf = (char *)calloc(1, tagBufLen);
assert(buf); if (NULL == buf) {
errorPrint("failed to allocate %d size memory\n", tagBufLen);
return -1;
}
generateBinaryNCharTagValues(tableSeq, tagBufLen, buf); generateBinaryNCharTagValues(tableSeq, tagBufLen, buf);
dataLen += snprintf(tagsValBuf + dataLen, dataLen += snprintf(tagsValBuf + dataLen,
TSDB_MAX_SQL_LEN - dataLen, "\'%s\',", buf); TSDB_MAX_SQL_LEN - dataLen, "\'%s\',", buf);
...@@ -865,7 +868,12 @@ int createDatabasesAndStables(char *command) { ...@@ -865,7 +868,12 @@ int createDatabasesAndStables(char *command) {
if ((ret != 0) || (g_Dbs.db[i].drop)) { if ((ret != 0) || (g_Dbs.db[i].drop)) {
char *cmd = calloc(1, BUFFER_SIZE); char *cmd = calloc(1, BUFFER_SIZE);
assert(cmd); if (NULL == cmd) {
errorPrint("failed to allocate %d size memory\n",
BUFFER_SIZE);
return -1;
}
ret = createSuperTable(taos, g_Dbs.db[i].dbName, ret = createSuperTable(taos, g_Dbs.db[i].dbName,
&g_Dbs.db[i].superTbls[j], cmd); &g_Dbs.db[i].superTbls[j], cmd);
tmfree(cmd); tmfree(cmd);
...@@ -904,8 +912,11 @@ static void *createTable(void *sarg) { ...@@ -904,8 +912,11 @@ static void *createTable(void *sarg) {
int buff_len = BUFFER_SIZE; int buff_len = BUFFER_SIZE;
pThreadInfo->buffer = calloc(buff_len, 1); pThreadInfo->buffer = calloc(1, buff_len);
assert(pThreadInfo->buffer); if (NULL == pThreadInfo->buffer) {
errorPrint("failed to allocate %d size memory\n", buff_len);
return NULL;
}
int len = 0; int len = 0;
int batchNum = 0; int batchNum = 0;
...@@ -940,7 +951,12 @@ static void *createTable(void *sarg) { ...@@ -940,7 +951,12 @@ static void *createTable(void *sarg) {
} }
char *tagsValBuf = (char *)calloc(TSDB_MAX_SQL_LEN + 1, 1); char *tagsValBuf = (char *)calloc(TSDB_MAX_SQL_LEN + 1, 1);
assert(tagsValBuf); if (NULL == tagsValBuf) {
errorPrint("failed to allocate %d size memory\n",
TSDB_MAX_SQL_LEN + 1);
return NULL;
}
if (0 == stbInfo->tagSource) { if (0 == stbInfo->tagSource) {
if (generateTagValuesForStb(stbInfo, i, tagsValBuf)) { if (generateTagValuesForStb(stbInfo, i, tagsValBuf)) {
tmfree(tagsValBuf); tmfree(tagsValBuf);
...@@ -1005,11 +1021,19 @@ static void *createTable(void *sarg) { ...@@ -1005,11 +1021,19 @@ static void *createTable(void *sarg) {
int startMultiThreadCreateChildTable(char *cols, int threads, int startMultiThreadCreateChildTable(char *cols, int threads,
uint64_t tableFrom, int64_t ntables, uint64_t tableFrom, int64_t ntables,
char *db_name, SSuperTable *stbInfo) { char *db_name, SSuperTable *stbInfo) {
pthread_t * pids = calloc(1, threads * sizeof(pthread_t)); pthread_t *pids = calloc(1, threads * sizeof(pthread_t));
if (NULL == pids) {
errorPrint("failed to allocate %" PRIu64 " size memory\n",
threads * sizeof(pthread_t));
return -1;
}
threadInfo *infos = calloc(1, threads * sizeof(threadInfo)); threadInfo *infos = calloc(1, threads * sizeof(threadInfo));
if (NULL == infos) {
assert(pids); errorPrint("failed to allocate %" PRIu64 " size memory\n",
assert(infos); threads * sizeof(threadInfo));
tmfree(pids);
return -1;
}
if (threads < 1) { if (threads < 1) {
threads = 1; threads = 1;
...@@ -1274,9 +1298,6 @@ static int generateSampleFromCsvForStb(SSuperTable *stbInfo) { ...@@ -1274,9 +1298,6 @@ static int generateSampleFromCsvForStb(SSuperTable *stbInfo) {
stbInfo->sampleFile, strerror(errno)); stbInfo->sampleFile, strerror(errno));
return -1; return -1;
} }
assert(stbInfo->sampleDataBuf);
memset(stbInfo->sampleDataBuf, 0, MAX_SAMPLES * stbInfo->lenOfOneRow);
while (1) { while (1) {
readLen = tgetline(&line, &n, fp); readLen = tgetline(&line, &n, fp);
if (-1 == readLen) { if (-1 == readLen) {
...@@ -1346,7 +1367,6 @@ void postFreeResource() { ...@@ -1346,7 +1367,6 @@ void postFreeResource() {
g_Dbs.db[i].superTbls[j].sampleDataBuf = NULL; g_Dbs.db[i].superTbls[j].sampleDataBuf = NULL;
} }
#if STMT_BIND_PARAM_BATCH == 1
for (int c = 0; c < g_Dbs.db[i].superTbls[j].columnCount; c++) { for (int c = 0; c < g_Dbs.db[i].superTbls[j].columnCount; c++) {
if (g_Dbs.db[i].superTbls[j].sampleBindBatchArray) { if (g_Dbs.db[i].superTbls[j].sampleBindBatchArray) {
tmfree((char *)((uintptr_t) * tmfree((char *)((uintptr_t) *
...@@ -1357,7 +1377,7 @@ void postFreeResource() { ...@@ -1357,7 +1377,7 @@ void postFreeResource() {
} }
} }
tmfree(g_Dbs.db[i].superTbls[j].sampleBindBatchArray); tmfree(g_Dbs.db[i].superTbls[j].sampleBindBatchArray);
#endif
if (0 != g_Dbs.db[i].superTbls[j].tagDataBuf) { if (0 != g_Dbs.db[i].superTbls[j].tagDataBuf) {
tmfree(g_Dbs.db[i].superTbls[j].tagDataBuf); tmfree(g_Dbs.db[i].superTbls[j].tagDataBuf);
g_Dbs.db[i].superTbls[j].tagDataBuf = NULL; g_Dbs.db[i].superTbls[j].tagDataBuf = NULL;
...@@ -1382,7 +1402,6 @@ void postFreeResource() { ...@@ -1382,7 +1402,6 @@ void postFreeResource() {
tmfree(g_sampleDataBuf); tmfree(g_sampleDataBuf);
#if STMT_BIND_PARAM_BATCH == 1
for (int l = 0; l < g_args.columnCount; l++) { for (int l = 0; l < g_args.columnCount; l++) {
if (g_sampleBindBatchArray) { if (g_sampleBindBatchArray) {
tmfree((char *)((uintptr_t) * (uintptr_t *)(g_sampleBindBatchArray + tmfree((char *)((uintptr_t) * (uintptr_t *)(g_sampleBindBatchArray +
...@@ -1390,8 +1409,6 @@ void postFreeResource() { ...@@ -1390,8 +1409,6 @@ void postFreeResource() {
} }
} }
tmfree(g_sampleBindBatchArray); tmfree(g_sampleBindBatchArray);
#endif
} }
static int getRowDataFromSample(char *dataBuf, int64_t maxLen, static int getRowDataFromSample(char *dataBuf, int64_t maxLen,
...@@ -1629,8 +1646,13 @@ static int64_t generateData(char *recBuf, char *data_type, int64_t timestamp, ...@@ -1629,8 +1646,13 @@ static int64_t generateData(char *recBuf, char *data_type, int64_t timestamp,
case TSDB_DATA_TYPE_BINARY: case TSDB_DATA_TYPE_BINARY:
case TSDB_DATA_TYPE_NCHAR: case TSDB_DATA_TYPE_NCHAR:
s = malloc(lenOfBinary + 1); s = calloc(1, lenOfBinary + 1);
assert(s); if (NULL == s) {
errorPrint("failed to allocate %d size memory\n",
lenOfBinary + 1);
return -1;
}
rand_string(s, lenOfBinary); rand_string(s, lenOfBinary);
pstr += sprintf(pstr, ",\"%s\"", s); pstr += sprintf(pstr, ",\"%s\"", s);
free(s); free(s);
...@@ -1657,11 +1679,12 @@ static int64_t generateData(char *recBuf, char *data_type, int64_t timestamp, ...@@ -1657,11 +1679,12 @@ static int64_t generateData(char *recBuf, char *data_type, int64_t timestamp,
default: default:
errorPrint("Unknown data type %d\n", data_type[i]); errorPrint("Unknown data type %d\n", data_type[i]);
exit(EXIT_FAILURE); return -1;
} }
if (strlen(recBuf) > MAX_DATA_SIZE) { if (strlen(recBuf) > MAX_DATA_SIZE) {
ERROR_EXIT("column length too long, abort"); errorPrint("%s", "column length too long, abort\n");
return -1;
} }
} }
...@@ -1677,8 +1700,11 @@ static int generateSampleFromRand(char *sampleDataBuf, uint64_t lenOfOneRow, ...@@ -1677,8 +1700,11 @@ static int generateSampleFromRand(char *sampleDataBuf, uint64_t lenOfOneRow,
char data[MAX_DATA_SIZE]; char data[MAX_DATA_SIZE];
memset(data, 0, MAX_DATA_SIZE); memset(data, 0, MAX_DATA_SIZE);
char *buff = malloc(lenOfOneRow); char *buff = calloc(lenOfOneRow, 1);
assert(buff); if (NULL == buff) {
errorPrint("failed to allocate %" PRIu64 " size memory\n", lenOfOneRow);
return -1;
}
for (int i = 0; i < MAX_SAMPLES; i++) { for (int i = 0; i < MAX_SAMPLES; i++) {
uint64_t pos = 0; uint64_t pos = 0;
...@@ -1797,14 +1823,22 @@ static int generateSampleFromRandForStb(SSuperTable *stbInfo) { ...@@ -1797,14 +1823,22 @@ static int generateSampleFromRandForStb(SSuperTable *stbInfo) {
static int prepareSampleForNtb() { static int prepareSampleForNtb() {
g_sampleDataBuf = calloc(g_args.lenOfOneRow * MAX_SAMPLES, 1); g_sampleDataBuf = calloc(g_args.lenOfOneRow * MAX_SAMPLES, 1);
assert(g_sampleDataBuf); if (NULL == g_sampleDataBuf) {
errorPrint("failed to allocate %" PRIu64 " size memory\n",
g_args.lenOfOneRow * MAX_SAMPLES);
return -1;
}
return generateSampleFromRandForNtb(); return generateSampleFromRandForNtb();
} }
static int prepareSampleForStb(SSuperTable *stbInfo) { static int prepareSampleForStb(SSuperTable *stbInfo) {
stbInfo->sampleDataBuf = calloc(stbInfo->lenOfOneRow * MAX_SAMPLES, 1); stbInfo->sampleDataBuf = calloc(stbInfo->lenOfOneRow * MAX_SAMPLES, 1);
assert(stbInfo->sampleDataBuf); if (NULL == stbInfo->sampleDataBuf) {
errorPrint("failed to allocate %" PRIu64 " size memory\n",
stbInfo->lenOfOneRow * MAX_SAMPLES);
return -1;
}
int ret; int ret;
if (0 == strncasecmp(stbInfo->dataSource, "sample", strlen("sample"))) { if (0 == strncasecmp(stbInfo->dataSource, "sample", strlen("sample"))) {
...@@ -2102,7 +2136,12 @@ static int generateStbSQLHead(SSuperTable *stbInfo, char *tableName, ...@@ -2102,7 +2136,12 @@ static int generateStbSQLHead(SSuperTable *stbInfo, char *tableName,
if (AUTO_CREATE_SUBTBL == stbInfo->autoCreateTable) { if (AUTO_CREATE_SUBTBL == stbInfo->autoCreateTable) {
char *tagsValBuf = (char *)calloc(TSDB_MAX_SQL_LEN + 1, 1); char *tagsValBuf = (char *)calloc(TSDB_MAX_SQL_LEN + 1, 1);
assert(tagsValBuf); if (NULL == tagsValBuf) {
errorPrint("failed to allocate %d size memory\n",
TSDB_MAX_SQL_LEN + 1);
return -1;
}
if (0 == stbInfo->tagSource) { if (0 == stbInfo->tagSource) {
if (generateTagValuesForStb(stbInfo, tableSeq, tagsValBuf)) { if (generateTagValuesForStb(stbInfo, tableSeq, tagsValBuf)) {
tmfree(tagsValBuf); tmfree(tagsValBuf);
...@@ -2140,7 +2179,6 @@ static int32_t generateStbInterlaceData(threadInfo *pThreadInfo, ...@@ -2140,7 +2179,6 @@ static int32_t generateStbInterlaceData(threadInfo *pThreadInfo,
uint64_t tableSeq, char *buffer, uint64_t tableSeq, char *buffer,
int64_t insertRows, int64_t startTime, int64_t insertRows, int64_t startTime,
uint64_t *pRemainderBufLen) { uint64_t *pRemainderBufLen) {
assert(buffer);
char *pstr = buffer; char *pstr = buffer;
SSuperTable *stbInfo = pThreadInfo->stbInfo; SSuperTable *stbInfo = pThreadInfo->stbInfo;
...@@ -2194,7 +2232,6 @@ static int64_t generateInterlaceDataWithoutStb(char *tableName, uint32_t batch, ...@@ -2194,7 +2232,6 @@ static int64_t generateInterlaceDataWithoutStb(char *tableName, uint32_t batch,
char *buffer, int64_t insertRows, char *buffer, int64_t insertRows,
int64_t startTime, int64_t startTime,
uint64_t *pRemainderBufLen) { uint64_t *pRemainderBufLen) {
assert(buffer);
char *pstr = buffer; char *pstr = buffer;
int headLen = int headLen =
...@@ -2293,9 +2330,7 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2293,9 +2330,7 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
break; break;
case TSDB_DATA_TYPE_INT: case TSDB_DATA_TYPE_INT:
bind_int = malloc(sizeof(int32_t)); bind_int = calloc(1, sizeof(int32_t));
assert(bind_int);
if (value) { if (value) {
*bind_int = atoi(value); *bind_int = atoi(value);
} else { } else {
...@@ -2310,7 +2345,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2310,7 +2345,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
case TSDB_DATA_TYPE_UINT: case TSDB_DATA_TYPE_UINT:
bind_uint = malloc(sizeof(uint32_t)); bind_uint = malloc(sizeof(uint32_t));
assert(bind_uint);
if (value) { if (value) {
*bind_uint = atoi(value); *bind_uint = atoi(value);
...@@ -2326,7 +2360,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2326,7 +2360,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
case TSDB_DATA_TYPE_BIGINT: case TSDB_DATA_TYPE_BIGINT:
bind_bigint = malloc(sizeof(int64_t)); bind_bigint = malloc(sizeof(int64_t));
assert(bind_bigint);
if (value) { if (value) {
*bind_bigint = atoll(value); *bind_bigint = atoll(value);
...@@ -2342,7 +2375,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2342,7 +2375,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
case TSDB_DATA_TYPE_UBIGINT: case TSDB_DATA_TYPE_UBIGINT:
bind_ubigint = malloc(sizeof(uint64_t)); bind_ubigint = malloc(sizeof(uint64_t));
assert(bind_ubigint);
if (value) { if (value) {
*bind_ubigint = atoll(value); *bind_ubigint = atoll(value);
...@@ -2358,7 +2390,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2358,7 +2390,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
case TSDB_DATA_TYPE_FLOAT: case TSDB_DATA_TYPE_FLOAT:
bind_float = malloc(sizeof(float)); bind_float = malloc(sizeof(float));
assert(bind_float);
if (value) { if (value) {
*bind_float = (float)atof(value); *bind_float = (float)atof(value);
...@@ -2374,7 +2405,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2374,7 +2405,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
case TSDB_DATA_TYPE_DOUBLE: case TSDB_DATA_TYPE_DOUBLE:
bind_double = malloc(sizeof(double)); bind_double = malloc(sizeof(double));
assert(bind_double);
if (value) { if (value) {
*bind_double = atof(value); *bind_double = atof(value);
...@@ -2390,7 +2420,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2390,7 +2420,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
case TSDB_DATA_TYPE_SMALLINT: case TSDB_DATA_TYPE_SMALLINT:
bind_smallint = malloc(sizeof(int16_t)); bind_smallint = malloc(sizeof(int16_t));
assert(bind_smallint);
if (value) { if (value) {
*bind_smallint = (int16_t)atoi(value); *bind_smallint = (int16_t)atoi(value);
...@@ -2406,7 +2435,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2406,7 +2435,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
case TSDB_DATA_TYPE_USMALLINT: case TSDB_DATA_TYPE_USMALLINT:
bind_usmallint = malloc(sizeof(uint16_t)); bind_usmallint = malloc(sizeof(uint16_t));
assert(bind_usmallint);
if (value) { if (value) {
*bind_usmallint = (uint16_t)atoi(value); *bind_usmallint = (uint16_t)atoi(value);
...@@ -2422,7 +2450,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2422,7 +2450,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
case TSDB_DATA_TYPE_TINYINT: case TSDB_DATA_TYPE_TINYINT:
bind_tinyint = malloc(sizeof(int8_t)); bind_tinyint = malloc(sizeof(int8_t));
assert(bind_tinyint);
if (value) { if (value) {
*bind_tinyint = (int8_t)atoi(value); *bind_tinyint = (int8_t)atoi(value);
...@@ -2438,7 +2465,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2438,7 +2465,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
case TSDB_DATA_TYPE_UTINYINT: case TSDB_DATA_TYPE_UTINYINT:
bind_utinyint = malloc(sizeof(uint8_t)); bind_utinyint = malloc(sizeof(uint8_t));
assert(bind_utinyint);
if (value) { if (value) {
*bind_utinyint = (int8_t)atoi(value); *bind_utinyint = (int8_t)atoi(value);
...@@ -2454,7 +2480,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2454,7 +2480,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
case TSDB_DATA_TYPE_BOOL: case TSDB_DATA_TYPE_BOOL:
bind_bool = malloc(sizeof(int8_t)); bind_bool = malloc(sizeof(int8_t));
assert(bind_bool);
if (value) { if (value) {
if (strncasecmp(value, "true", 4)) { if (strncasecmp(value, "true", 4)) {
...@@ -2474,7 +2499,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2474,7 +2499,6 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
case TSDB_DATA_TYPE_TIMESTAMP: case TSDB_DATA_TYPE_TIMESTAMP:
bind_ts2 = malloc(sizeof(int64_t)); bind_ts2 = malloc(sizeof(int64_t));
assert(bind_ts2);
if (value) { if (value) {
if (strchr(value, ':') && strchr(value, '-')) { if (strchr(value, ':') && strchr(value, '-')) {
...@@ -2518,571 +2542,141 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type, ...@@ -2518,571 +2542,141 @@ static int32_t prepareStmtBindArrayByType(TAOS_BIND *bind, char data_type,
return 0; return 0;
} }
static int32_t prepareStmtBindArrayByTypeForRand(TAOS_BIND *bind, static int32_t prepareStmtWithoutStb(threadInfo *pThreadInfo, char *tableName,
char data_type, uint32_t batch, int64_t insertRows,
int32_t dataLen, int64_t recordFrom, int64_t startTime) {
int32_t timePrec, char **ptr, TAOS_STMT *stmt = pThreadInfo->stmt;
char *value) { int ret = taos_stmt_set_tbname(stmt, tableName);
int32_t * bind_int; if (ret != 0) {
uint32_t *bind_uint; errorPrint(
int64_t * bind_bigint; "failed to execute taos_stmt_set_tbname(%s). return 0x%x. reason: "
uint64_t *bind_ubigint; "%s\n",
float * bind_float; tableName, ret, taos_stmt_errstr(stmt));
double * bind_double; return ret;
int16_t * bind_smallint; }
uint16_t *bind_usmallint;
int8_t * bind_tinyint;
uint8_t * bind_utinyint;
int8_t * bind_bool;
int64_t * bind_ts2;
switch (data_type) { char *data_type = g_args.data_type;
case TSDB_DATA_TYPE_BINARY:
if (dataLen > TSDB_MAX_BINARY_LEN) { char *bindArray = malloc(sizeof(TAOS_BIND) * (g_args.columnCount + 1));
errorPrint("binary length overflow, max size:%u\n", if (bindArray == NULL) {
(uint32_t)TSDB_MAX_BINARY_LEN); errorPrint("Failed to allocate %d bind params\n",
return -1; (g_args.columnCount + 1));
} return -1;
char *bind_binary = (char *)*ptr; }
bind->buffer_type = TSDB_DATA_TYPE_BINARY; int32_t k = 0;
if (value) { for (k = 0; k < batch;) {
strncpy(bind_binary, value, strlen(value)); /* columnCount + 1 (ts) */
bind->buffer_length = strlen(bind_binary);
} else {
rand_string(bind_binary, dataLen);
bind->buffer_length = dataLen;
}
bind->length = &bind->buffer_length; TAOS_BIND *bind = (TAOS_BIND *)(bindArray + 0);
bind->buffer = bind_binary;
bind->is_null = NULL;
*ptr += bind->buffer_length; int64_t *bind_ts = pThreadInfo->bind_ts;
break;
case TSDB_DATA_TYPE_NCHAR: bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
if (dataLen > TSDB_MAX_BINARY_LEN) {
errorPrint("nchar length overflow, max size: %u\n",
(uint32_t)TSDB_MAX_BINARY_LEN);
return -1;
}
char *bind_nchar = (char *)*ptr;
bind->buffer_type = TSDB_DATA_TYPE_NCHAR; if (g_args.disorderRatio) {
if (value) { *bind_ts = startTime + getTSRandTail(g_args.timestamp_step, k,
strncpy(bind_nchar, value, strlen(value)); g_args.disorderRatio,
} else { g_args.disorderRange);
rand_string(bind_nchar, dataLen); } else {
} *bind_ts = startTime + g_args.timestamp_step * k;
}
bind->buffer_length = sizeof(int64_t);
bind->buffer = bind_ts;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
bind->buffer_length = strlen(bind_nchar); for (int i = 0; i < g_args.columnCount; i++) {
bind->buffer = bind_nchar; bind = (TAOS_BIND *)((char *)bindArray +
bind->length = &bind->buffer_length; (sizeof(TAOS_BIND) * (i + 1)));
bind->is_null = NULL; if (-1 ==
prepareStmtBindArrayByType(bind, data_type[i], g_args.binwidth,
pThreadInfo->time_precision, NULL)) {
free(bindArray);
return -1;
}
}
if (taos_stmt_bind_param(stmt, (TAOS_BIND *)bindArray)) {
errorPrint("taos_stmt_bind_param() failed! reason: %s\n",
taos_stmt_errstr(stmt));
break;
}
// if msg > 3MB, break
if (taos_stmt_add_batch(stmt)) {
errorPrint("taos_stmt_add_batch() failed! reason: %s\n",
taos_stmt_errstr(stmt));
break;
}
*ptr += bind->buffer_length; k++;
recordFrom++;
if (recordFrom >= insertRows) {
break; break;
}
}
case TSDB_DATA_TYPE_INT: free(bindArray);
bind_int = (int32_t *)*ptr; return k;
}
if (value) { static int32_t prepareStbStmtBindTag(char *bindArray, SSuperTable *stbInfo,
*bind_int = atoi(value); char *tagsVal, int32_t timePrec) {
} else { TAOS_BIND *tag;
*bind_int = rand_int();
}
bind->buffer_type = TSDB_DATA_TYPE_INT;
bind->buffer_length = sizeof(int32_t);
bind->buffer = bind_int;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
*ptr += bind->buffer_length; for (int t = 0; t < stbInfo->tagCount; t++) {
break; tag = (TAOS_BIND *)((char *)bindArray + (sizeof(TAOS_BIND) * t));
if (prepareStmtBindArrayByType(tag, stbInfo->tags[t].data_type,
stbInfo->tags[t].dataLen, timePrec,
NULL)) {
return -1;
}
}
case TSDB_DATA_TYPE_UINT: return 0;
bind_uint = (uint32_t *)*ptr; }
if (value) { static int execStbBindParamBatch(threadInfo *pThreadInfo, char *tableName,
*bind_uint = atoi(value); int64_t tableSeq, uint32_t batch,
} else { uint64_t insertRows, uint64_t recordFrom,
*bind_uint = rand_int(); int64_t startTime, int64_t *pSamplePos) {
} TAOS_STMT *stmt = pThreadInfo->stmt;
bind->buffer_type = TSDB_DATA_TYPE_UINT;
bind->buffer_length = sizeof(uint32_t);
bind->buffer = bind_uint;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
*ptr += bind->buffer_length; SSuperTable *stbInfo = pThreadInfo->stbInfo;
break;
case TSDB_DATA_TYPE_BIGINT: uint32_t columnCount = pThreadInfo->stbInfo->columnCount;
bind_bigint = (int64_t *)*ptr;
if (value) { uint32_t thisBatch = MAX_SAMPLES - (*pSamplePos);
*bind_bigint = atoll(value);
} else {
*bind_bigint = rand_bigint();
}
bind->buffer_type = TSDB_DATA_TYPE_BIGINT;
bind->buffer_length = sizeof(int64_t);
bind->buffer = bind_bigint;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
*ptr += bind->buffer_length; if (thisBatch > batch) {
break; thisBatch = batch;
}
verbosePrint("%s() LN%d, batch=%d pos=%" PRId64 " thisBatch=%d\n", __func__,
__LINE__, batch, *pSamplePos, thisBatch);
case TSDB_DATA_TYPE_UBIGINT: memset(pThreadInfo->bindParams, 0,
bind_ubigint = (uint64_t *)*ptr; (sizeof(TAOS_MULTI_BIND) * (columnCount + 1)));
memset(pThreadInfo->is_null, 0, thisBatch);
if (value) { for (int c = 0; c < columnCount + 1; c++) {
*bind_ubigint = atoll(value); TAOS_MULTI_BIND *param =
} else { (TAOS_MULTI_BIND *)(pThreadInfo->bindParams +
*bind_ubigint = rand_bigint(); sizeof(TAOS_MULTI_BIND) * c);
}
bind->buffer_type = TSDB_DATA_TYPE_UBIGINT;
bind->buffer_length = sizeof(uint64_t);
bind->buffer = bind_ubigint;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
*ptr += bind->buffer_length; char data_type;
break;
case TSDB_DATA_TYPE_FLOAT: if (c == 0) {
bind_float = (float *)*ptr; data_type = TSDB_DATA_TYPE_TIMESTAMP;
param->buffer_length = sizeof(int64_t);
param->buffer = pThreadInfo->bind_ts_array;
if (value) { } else {
*bind_float = (float)atof(value); data_type = stbInfo->columns[c - 1].data_type;
} else {
*bind_float = rand_float();
}
bind->buffer_type = TSDB_DATA_TYPE_FLOAT;
bind->buffer_length = sizeof(float);
bind->buffer = bind_float;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
*ptr += bind->buffer_length; char *tmpP;
break;
case TSDB_DATA_TYPE_DOUBLE: switch (data_type) {
bind_double = (double *)*ptr; case TSDB_DATA_TYPE_BINARY:
param->buffer_length = stbInfo->columns[c - 1].dataLen;
if (value) {
*bind_double = atof(value);
} else {
*bind_double = rand_double();
}
bind->buffer_type = TSDB_DATA_TYPE_DOUBLE;
bind->buffer_length = sizeof(double);
bind->buffer = bind_double;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
*ptr += bind->buffer_length;
break;
case TSDB_DATA_TYPE_SMALLINT:
bind_smallint = (int16_t *)*ptr;
if (value) {
*bind_smallint = (int16_t)atoi(value);
} else {
*bind_smallint = rand_smallint();
}
bind->buffer_type = TSDB_DATA_TYPE_SMALLINT;
bind->buffer_length = sizeof(int16_t);
bind->buffer = bind_smallint;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
*ptr += bind->buffer_length;
break;
case TSDB_DATA_TYPE_USMALLINT:
bind_usmallint = (uint16_t *)*ptr;
if (value) {
*bind_usmallint = (uint16_t)atoi(value);
} else {
*bind_usmallint = rand_smallint();
}
bind->buffer_type = TSDB_DATA_TYPE_USMALLINT;
bind->buffer_length = sizeof(uint16_t);
bind->buffer = bind_usmallint;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
*ptr += bind->buffer_length;
break;
case TSDB_DATA_TYPE_TINYINT:
bind_tinyint = (int8_t *)*ptr;
if (value) {
*bind_tinyint = (int8_t)atoi(value);
} else {
*bind_tinyint = rand_tinyint();
}
bind->buffer_type = TSDB_DATA_TYPE_TINYINT;
bind->buffer_length = sizeof(int8_t);
bind->buffer = bind_tinyint;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
*ptr += bind->buffer_length;
break;
case TSDB_DATA_TYPE_UTINYINT:
bind_utinyint = (uint8_t *)*ptr;
if (value) {
*bind_utinyint = (uint8_t)atoi(value);
} else {
*bind_utinyint = rand_tinyint();
}
bind->buffer_type = TSDB_DATA_TYPE_UTINYINT;
bind->buffer_length = sizeof(uint8_t);
bind->buffer = bind_utinyint;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
*ptr += bind->buffer_length;
break;
case TSDB_DATA_TYPE_BOOL:
bind_bool = (int8_t *)*ptr;
if (value) {
if (strncasecmp(value, "true", 4)) {
*bind_bool = true;
} else {
*bind_bool = false;
}
} else {
*bind_bool = rand_bool();
}
bind->buffer_type = TSDB_DATA_TYPE_BOOL;
bind->buffer_length = sizeof(int8_t);
bind->buffer = bind_bool;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
*ptr += bind->buffer_length;
break;
case TSDB_DATA_TYPE_TIMESTAMP:
bind_ts2 = (int64_t *)*ptr;
if (value) {
if (strchr(value, ':') && strchr(value, '-')) {
int i = 0;
while (value[i] != '\0') {
if (value[i] == '\"' || value[i] == '\'') {
value[i] = ' ';
}
i++;
}
int64_t tmpEpoch;
if (TSDB_CODE_SUCCESS != taosParseTime(value, &tmpEpoch,
strlen(value),
timePrec, 0)) {
errorPrint("Input %s, time format error!\n", value);
return -1;
}
*bind_ts2 = tmpEpoch;
} else {
*bind_ts2 = atoll(value);
}
} else {
*bind_ts2 = rand_bigint();
}
bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
bind->buffer_length = sizeof(int64_t);
bind->buffer = bind_ts2;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
*ptr += bind->buffer_length;
break;
default:
errorPrint("No support data type: %d\n", data_type);
return -1;
}
return 0;
}
static int32_t prepareStmtWithoutStb(threadInfo *pThreadInfo, char *tableName,
uint32_t batch, int64_t insertRows,
int64_t recordFrom, int64_t startTime) {
TAOS_STMT *stmt = pThreadInfo->stmt;
int ret = taos_stmt_set_tbname(stmt, tableName);
if (ret != 0) {
errorPrint(
"failed to execute taos_stmt_set_tbname(%s). return 0x%x. reason: "
"%s\n",
tableName, ret, taos_stmt_errstr(stmt));
return ret;
}
char *data_type = g_args.data_type;
char *bindArray = malloc(sizeof(TAOS_BIND) * (g_args.columnCount + 1));
if (bindArray == NULL) {
errorPrint("Failed to allocate %d bind params\n",
(g_args.columnCount + 1));
return -1;
}
int32_t k = 0;
for (k = 0; k < batch;) {
/* columnCount + 1 (ts) */
TAOS_BIND *bind = (TAOS_BIND *)(bindArray + 0);
int64_t *bind_ts = pThreadInfo->bind_ts;
bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
if (g_args.disorderRatio) {
*bind_ts = startTime + getTSRandTail(g_args.timestamp_step, k,
g_args.disorderRatio,
g_args.disorderRange);
} else {
*bind_ts = startTime + g_args.timestamp_step * k;
}
bind->buffer_length = sizeof(int64_t);
bind->buffer = bind_ts;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
for (int i = 0; i < g_args.columnCount; i++) {
bind = (TAOS_BIND *)((char *)bindArray +
(sizeof(TAOS_BIND) * (i + 1)));
if (-1 ==
prepareStmtBindArrayByType(bind, data_type[i], g_args.binwidth,
pThreadInfo->time_precision, NULL)) {
free(bindArray);
return -1;
}
}
if (taos_stmt_bind_param(stmt, (TAOS_BIND *)bindArray)) {
errorPrint("taos_stmt_bind_param() failed! reason: %s\n",
taos_stmt_errstr(stmt));
break;
}
// if msg > 3MB, break
if (taos_stmt_add_batch(stmt)) {
errorPrint("taos_stmt_add_batch() failed! reason: %s\n",
taos_stmt_errstr(stmt));
break;
}
k++;
recordFrom++;
if (recordFrom >= insertRows) {
break;
}
}
free(bindArray);
return k;
}
static int32_t prepareStbStmtBindTag(char *bindArray, SSuperTable *stbInfo,
char *tagsVal, int32_t timePrec) {
TAOS_BIND *tag;
for (int t = 0; t < stbInfo->tagCount; t++) {
tag = (TAOS_BIND *)((char *)bindArray + (sizeof(TAOS_BIND) * t));
if (prepareStmtBindArrayByType(tag, stbInfo->tags[t].data_type,
stbInfo->tags[t].dataLen, timePrec,
NULL)) {
return -1;
}
}
return 0;
}
static int32_t prepareStbStmtBindRand(int64_t *ts, char *bindArray,
SSuperTable *stbInfo, int64_t startTime,
int32_t recSeq, int32_t timePrec) {
char data[MAX_DATA_SIZE];
memset(data, 0, MAX_DATA_SIZE);
char *ptr = data;
TAOS_BIND *bind;
for (int i = 0; i < stbInfo->columnCount + 1; i++) {
bind = (TAOS_BIND *)((char *)bindArray + (sizeof(TAOS_BIND) * i));
if (i == 0) {
int64_t *bind_ts = ts;
bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
if (stbInfo->disorderRatio) {
*bind_ts =
startTime + getTSRandTail(stbInfo->timeStampStep, recSeq,
stbInfo->disorderRatio,
stbInfo->disorderRange);
} else {
*bind_ts = startTime + stbInfo->timeStampStep * recSeq;
}
bind->buffer_length = sizeof(int64_t);
bind->buffer = bind_ts;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
ptr += bind->buffer_length;
} else if (-1 == prepareStmtBindArrayByTypeForRand(
bind, stbInfo->columns[i - 1].data_type,
stbInfo->columns[i - 1].dataLen, timePrec, &ptr,
NULL)) {
return -1;
}
}
return 0;
}
UNUSED_FUNC static int32_t prepareStbStmtRand(
threadInfo *pThreadInfo, char *tableName, int64_t tableSeq, uint32_t batch,
uint64_t insertRows, uint64_t recordFrom, int64_t startTime) {
SSuperTable *stbInfo = pThreadInfo->stbInfo;
TAOS_STMT * stmt = pThreadInfo->stmt;
char *tagsValBuf = (char *)calloc(TSDB_MAX_SQL_LEN + 1, 1);
assert(tagsValBuf);
char *tagsArray = calloc(1, sizeof(TAOS_BIND) * stbInfo->tagCount);
assert(tagsArray);
char *bindArray = calloc(1, sizeof(TAOS_BIND) * (stbInfo->columnCount + 1));
assert(bindArray);
if (AUTO_CREATE_SUBTBL == stbInfo->autoCreateTable) {
if (0 == stbInfo->tagSource) {
if (generateTagValuesForStb(stbInfo, tableSeq, tagsValBuf)) {
tmfree(tagsValBuf);
return -1;
}
} else {
snprintf(
tagsValBuf, TSDB_MAX_SQL_LEN, "(%s)",
stbInfo->tagDataBuf + stbInfo->lenOfTagOfOneRow *
(tableSeq % stbInfo->tagSampleCount));
}
if (prepareStbStmtBindTag(
tagsArray, stbInfo, tagsValBuf, pThreadInfo->time_precision
/* is tag */)) {
tmfree(tagsValBuf);
tmfree(tagsArray);
return -1;
}
tmfree(tagsValBuf);
tmfree(tagsArray);
if (taos_stmt_set_tbname_tags(stmt, tableName,
(TAOS_BIND *)tagsArray)) {
errorPrint("taos_stmt_set_tbname_tags() failed! reason: %s\n",
taos_stmt_errstr(stmt));
return -1;
}
} else {
if (taos_stmt_set_tbname(stmt, tableName)) {
errorPrint("taos_stmt_set_tbname() failed! reason: %s\n",
taos_stmt_errstr(stmt));
return -1;
}
}
uint32_t k;
for (k = 0; k < batch;) {
/* columnCount + 1 (ts) */
if (prepareStbStmtBindRand(pThreadInfo->bind_ts, bindArray, stbInfo,
startTime, k, pThreadInfo->time_precision)) {
tmfree(bindArray);
return -1;
}
if (taos_stmt_bind_param(stmt, (TAOS_BIND *)bindArray)) {
errorPrint("taos_stmt_bind_param() failed! reason: %s\n",
taos_stmt_errstr(stmt));
tmfree(bindArray);
return -1;
}
// if msg > 3MB, break
if (taos_stmt_add_batch(stmt)) {
errorPrint("taos_stmt_add_batch() failed! reason: %s\n",
taos_stmt_errstr(stmt));
tmfree(bindArray);
return -1;
}
k++;
recordFrom++;
if (recordFrom >= insertRows) {
break;
}
}
tmfree(bindArray);
return k;
}
#if STMT_BIND_PARAM_BATCH == 1
static int execStbBindParamBatch(threadInfo *pThreadInfo, char *tableName,
int64_t tableSeq, uint32_t batch,
uint64_t insertRows, uint64_t recordFrom,
int64_t startTime, int64_t *pSamplePos) {
TAOS_STMT *stmt = pThreadInfo->stmt;
SSuperTable *stbInfo = pThreadInfo->stbInfo;
assert(stbInfo);
uint32_t columnCount = pThreadInfo->stbInfo->columnCount;
uint32_t thisBatch = MAX_SAMPLES - (*pSamplePos);
if (thisBatch > batch) {
thisBatch = batch;
}
verbosePrint("%s() LN%d, batch=%d pos=%" PRId64 " thisBatch=%d\n", __func__,
__LINE__, batch, *pSamplePos, thisBatch);
memset(pThreadInfo->bindParams, 0,
(sizeof(TAOS_MULTI_BIND) * (columnCount + 1)));
memset(pThreadInfo->is_null, 0, thisBatch);
for (int c = 0; c < columnCount + 1; c++) {
TAOS_MULTI_BIND *param =
(TAOS_MULTI_BIND *)(pThreadInfo->bindParams +
sizeof(TAOS_MULTI_BIND) * c);
char data_type;
if (c == 0) {
data_type = TSDB_DATA_TYPE_TIMESTAMP;
param->buffer_length = sizeof(int64_t);
param->buffer = pThreadInfo->bind_ts_array;
} else {
data_type = stbInfo->columns[c - 1].data_type;
char *tmpP;
switch (data_type) {
case TSDB_DATA_TYPE_BINARY:
param->buffer_length = stbInfo->columns[c - 1].dataLen;
tmpP = tmpP =
(char *)((uintptr_t) * (char *)((uintptr_t) *
...@@ -3216,8 +2810,12 @@ static int execStbBindParamBatch(threadInfo *pThreadInfo, char *tableName, ...@@ -3216,8 +2810,12 @@ static int execStbBindParamBatch(threadInfo *pThreadInfo, char *tableName,
} }
param->buffer_type = data_type; param->buffer_type = data_type;
param->length = malloc(sizeof(int32_t) * thisBatch); param->length = calloc(1, sizeof(int32_t) * thisBatch);
assert(param->length); if (param->length) {
errorPrint("failed to allocate %" PRIu64 " size memory\n",
sizeof(int32_t) * thisBatch);
return -1;
}
for (int b = 0; b < thisBatch; b++) { for (int b = 0; b < thisBatch; b++) {
if (param->buffer_type == TSDB_DATA_TYPE_NCHAR) { if (param->buffer_type == TSDB_DATA_TYPE_NCHAR) {
...@@ -3296,7 +2894,6 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) { ...@@ -3296,7 +2894,6 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) {
g_sampleBindBatchArray = calloc(1, sizeof(uintptr_t *) * columnCount); g_sampleBindBatchArray = calloc(1, sizeof(uintptr_t *) * columnCount);
sampleBindBatchArray = g_sampleBindBatchArray; sampleBindBatchArray = g_sampleBindBatchArray;
} }
assert(sampleBindBatchArray);
for (int c = 0; c < columnCount; c++) { for (int c = 0; c < columnCount; c++) {
char data_type = char data_type =
...@@ -3308,7 +2905,6 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) { ...@@ -3308,7 +2905,6 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) {
case TSDB_DATA_TYPE_INT: case TSDB_DATA_TYPE_INT:
case TSDB_DATA_TYPE_UINT: case TSDB_DATA_TYPE_UINT:
tmpP = calloc(1, sizeof(int32_t) * MAX_SAMPLES); tmpP = calloc(1, sizeof(int32_t) * MAX_SAMPLES);
assert(tmpP);
*(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) = *(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) =
(uintptr_t)tmpP; (uintptr_t)tmpP;
break; break;
...@@ -3316,7 +2912,6 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) { ...@@ -3316,7 +2912,6 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) {
case TSDB_DATA_TYPE_TINYINT: case TSDB_DATA_TYPE_TINYINT:
case TSDB_DATA_TYPE_UTINYINT: case TSDB_DATA_TYPE_UTINYINT:
tmpP = calloc(1, sizeof(char) * MAX_SAMPLES); tmpP = calloc(1, sizeof(char) * MAX_SAMPLES);
assert(tmpP);
*(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) = *(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) =
(uintptr_t)tmpP; (uintptr_t)tmpP;
break; break;
...@@ -3324,7 +2919,6 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) { ...@@ -3324,7 +2919,6 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) {
case TSDB_DATA_TYPE_SMALLINT: case TSDB_DATA_TYPE_SMALLINT:
case TSDB_DATA_TYPE_USMALLINT: case TSDB_DATA_TYPE_USMALLINT:
tmpP = calloc(1, sizeof(int16_t) * MAX_SAMPLES); tmpP = calloc(1, sizeof(int16_t) * MAX_SAMPLES);
assert(tmpP);
*(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) = *(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) =
(uintptr_t)tmpP; (uintptr_t)tmpP;
break; break;
...@@ -3332,28 +2926,24 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) { ...@@ -3332,28 +2926,24 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) {
case TSDB_DATA_TYPE_BIGINT: case TSDB_DATA_TYPE_BIGINT:
case TSDB_DATA_TYPE_UBIGINT: case TSDB_DATA_TYPE_UBIGINT:
tmpP = calloc(1, sizeof(int64_t) * MAX_SAMPLES); tmpP = calloc(1, sizeof(int64_t) * MAX_SAMPLES);
assert(tmpP);
*(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) = *(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) =
(uintptr_t)tmpP; (uintptr_t)tmpP;
break; break;
case TSDB_DATA_TYPE_BOOL: case TSDB_DATA_TYPE_BOOL:
tmpP = calloc(1, sizeof(char) * MAX_SAMPLES); tmpP = calloc(1, sizeof(char) * MAX_SAMPLES);
assert(tmpP);
*(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) = *(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) =
(uintptr_t)tmpP; (uintptr_t)tmpP;
break; break;
case TSDB_DATA_TYPE_FLOAT: case TSDB_DATA_TYPE_FLOAT:
tmpP = calloc(1, sizeof(float) * MAX_SAMPLES); tmpP = calloc(1, sizeof(float) * MAX_SAMPLES);
assert(tmpP);
*(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) = *(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) =
(uintptr_t)tmpP; (uintptr_t)tmpP;
break; break;
case TSDB_DATA_TYPE_DOUBLE: case TSDB_DATA_TYPE_DOUBLE:
tmpP = calloc(1, sizeof(double) * MAX_SAMPLES); tmpP = calloc(1, sizeof(double) * MAX_SAMPLES);
assert(tmpP);
*(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) = *(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) =
(uintptr_t)tmpP; (uintptr_t)tmpP;
break; break;
...@@ -3364,14 +2954,12 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) { ...@@ -3364,14 +2954,12 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) {
1, MAX_SAMPLES * (((stbInfo) ? stbInfo->columns[c].dataLen 1, MAX_SAMPLES * (((stbInfo) ? stbInfo->columns[c].dataLen
: g_args.binwidth) + : g_args.binwidth) +
1)); 1));
assert(tmpP);
*(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) = *(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) =
(uintptr_t)tmpP; (uintptr_t)tmpP;
break; break;
case TSDB_DATA_TYPE_TIMESTAMP: case TSDB_DATA_TYPE_TIMESTAMP:
tmpP = calloc(1, sizeof(int64_t) * MAX_SAMPLES); tmpP = calloc(1, sizeof(int64_t) * MAX_SAMPLES);
assert(tmpP);
*(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) = *(uintptr_t *)(sampleBindBatchArray + sizeof(uintptr_t *) * c) =
(uintptr_t)tmpP; (uintptr_t)tmpP;
break; break;
...@@ -3404,7 +2992,10 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) { ...@@ -3404,7 +2992,10 @@ static int parseSamplefileToStmtBatch(SSuperTable *stbInfo) {
} }
char *tmpStr = calloc(1, index + 1); char *tmpStr = calloc(1, index + 1);
assert(tmpStr); if (NULL == tmpStr) {
errorPrint("failed to allocate %d size memory\n", index + 1);
return -1;
}
strncpy(tmpStr, restStr, index); strncpy(tmpStr, restStr, index);
cursor += index + 1; // skip ',' too cursor += index + 1; // skip ',' too
...@@ -3497,183 +3088,43 @@ static int parseSampleToStmtBatchForThread(threadInfo * pThreadInfo, ...@@ -3497,183 +3088,43 @@ static int parseSampleToStmtBatchForThread(threadInfo * pThreadInfo,
uint32_t columnCount = uint32_t columnCount =
(stbInfo) ? stbInfo->columnCount : g_args.columnCount; (stbInfo) ? stbInfo->columnCount : g_args.columnCount;
pThreadInfo->bind_ts_array = malloc(sizeof(int64_t) * batch); pThreadInfo->bind_ts_array = calloc(1, sizeof(int64_t) * batch);
assert(pThreadInfo->bind_ts_array); if (NULL == pThreadInfo->bind_ts_array) {
errorPrint("failed to allocate %" PRIu64 " size memory\n",
sizeof(int64_t) * batch);
return -1;
}
pThreadInfo->bindParams = pThreadInfo->bindParams =
malloc(sizeof(TAOS_MULTI_BIND) * (columnCount + 1)); calloc(1, sizeof(TAOS_MULTI_BIND) * (columnCount + 1));
assert(pThreadInfo->bindParams); if (NULL == pThreadInfo->bindParams) {
errorPrint("failed to allocate %" PRIu64 " size memory\n",
pThreadInfo->is_null = malloc(batch); sizeof(TAOS_MULTI_BIND) * (columnCount + 1));
assert(pThreadInfo->is_null); return -1;
return 0;
}
static int parseStbSampleToStmtBatchForThread(threadInfo * pThreadInfo,
SSuperTable *stbInfo,
uint32_t timePrec,
uint32_t batch) {
return parseSampleToStmtBatchForThread(pThreadInfo, stbInfo, timePrec,
batch);
}
static int parseNtbSampleToStmtBatchForThread(threadInfo *pThreadInfo,
uint32_t timePrec,
uint32_t batch) {
return parseSampleToStmtBatchForThread(pThreadInfo, NULL, timePrec, batch);
}
#else
static int parseSampleToStmt(threadInfo *pThreadInfo, SSuperTable *stbInfo,
uint32_t timePrec) {
pThreadInfo->sampleBindArray =
(char *)calloc(1, sizeof(char *) * MAX_SAMPLES);
assert(pThreadInfo->sampleBindArray);
int32_t columnCount = (stbInfo) ? stbInfo->columnCount : g_args.columnCount;
char *sampleDataBuf = (stbInfo) ? stbInfo->sampleDataBuf : g_sampleDataBuf;
int64_t lenOfOneRow = (stbInfo) ? stbInfo->lenOfOneRow : g_args.lenOfOneRow;
for (int i = 0; i < MAX_SAMPLES; i++) {
char *bindArray = calloc(1, sizeof(TAOS_BIND) * (columnCount + 1));
assert(bindArray);
TAOS_BIND *bind;
int cursor = 0;
for (int c = 0; c < columnCount + 1; c++) {
bind = (TAOS_BIND *)((char *)bindArray + (sizeof(TAOS_BIND) * c));
if (c == 0) {
bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
bind->buffer_length = sizeof(int64_t);
bind->buffer = NULL; // bind_ts;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
} else {
char data_type = (stbInfo) ? stbInfo->columns[c - 1].data_type
: g_args.data_type[c - 1];
int32_t dataLen = (stbInfo) ? stbInfo->columns[c - 1].dataLen
: g_args.binwidth;
char * restStr = sampleDataBuf + lenOfOneRow * i + cursor;
int lengthOfRest = strlen(restStr);
int index = 0;
for (index = 0; index < lengthOfRest; index++) {
if (restStr[index] == ',') {
break;
}
}
char *bindBuffer = calloc(1, index + 1);
assert(bindBuffer);
strncpy(bindBuffer, restStr, index);
cursor += index + 1; // skip ',' too
if (-1 == prepareStmtBindArrayByType(bind, data_type, dataLen,
timePrec, bindBuffer)) {
free(bindBuffer);
free(bindArray);
return -1;
}
free(bindBuffer);
}
}
*((uintptr_t *)(pThreadInfo->sampleBindArray + (sizeof(char *)) * i)) =
(uintptr_t)bindArray;
} }
return 0; pThreadInfo->is_null = calloc(1, batch);
} if (NULL == pThreadInfo->is_null) {
errorPrint("failed to allocate %d size memory\n", batch);
static int parseStbSampleToStmt(threadInfo *pThreadInfo, SSuperTable *stbInfo, return -1;
uint32_t timePrec) {
return parseSampleToStmt(pThreadInfo, stbInfo, timePrec);
}
static int parseNtbSampleToStmt(threadInfo *pThreadInfo, uint32_t timePrec) {
return parseSampleToStmt(pThreadInfo, NULL, timePrec);
}
static int32_t prepareStbStmtBindStartTime(char *tableName, int64_t *ts,
char * bindArray,
SSuperTable *stbInfo,
int64_t startTime, int32_t recSeq) {
TAOS_BIND *bind;
bind = (TAOS_BIND *)bindArray;
int64_t *bind_ts = ts;
bind->buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
if (stbInfo->disorderRatio) {
*bind_ts = startTime + getTSRandTail(stbInfo->timeStampStep, recSeq,
stbInfo->disorderRatio,
stbInfo->disorderRange);
} else {
*bind_ts = startTime + stbInfo->timeStampStep * recSeq;
} }
verbosePrint("%s() LN%d, tableName: %s, bind_ts=%" PRId64 "\n", __func__,
__LINE__, tableName, *bind_ts);
bind->buffer_length = sizeof(int64_t);
bind->buffer = bind_ts;
bind->length = &bind->buffer_length;
bind->is_null = NULL;
return 0; return 0;
} }
static uint32_t execBindParam(threadInfo *pThreadInfo, char *tableName, static int parseStbSampleToStmtBatchForThread(threadInfo * pThreadInfo,
int64_t tableSeq, uint32_t batch, SSuperTable *stbInfo,
uint64_t insertRows, uint64_t recordFrom, uint32_t timePrec,
int64_t startTime, int64_t *pSamplePos) { uint32_t batch) {
int ret; return parseSampleToStmtBatchForThread(pThreadInfo, stbInfo, timePrec,
SSuperTable *stbInfo = pThreadInfo->stbInfo; batch);
TAOS_STMT * stmt = pThreadInfo->stmt; }
uint32_t k; static int parseNtbSampleToStmtBatchForThread(threadInfo *pThreadInfo,
for (k = 0; k < batch;) { uint32_t timePrec,
char *bindArray = uint32_t batch) {
(char *)(*((uintptr_t *)(pThreadInfo->sampleBindArray + return parseSampleToStmtBatchForThread(pThreadInfo, NULL, timePrec, batch);
(sizeof(char *)) * (*pSamplePos))));
/* columnCount + 1 (ts) */
if (-1 == prepareStbStmtBindStartTime(tableName, pThreadInfo->bind_ts,
bindArray, stbInfo, startTime, k
/* is column */)) {
return -1;
}
if (taos_stmt_bind_param(stmt, (TAOS_BIND *)bindArray)) {
errorPrint("taos_stmt_bind_param() failed! reason: %s\n",
taos_stmt_errstr(stmt));
return -1;
}
// if msg > 3MB, break
if (taos_stmt_add_batch(stmt)) {
errorPrint("taos_stmt_add_batch() failed! reason: %s\n",
taos_stmt_errstr(stmt));
return -1;
}
k++;
recordFrom++;
(*pSamplePos)++;
if ((*pSamplePos) == MAX_SAMPLES) {
*pSamplePos = 0;
}
if (recordFrom >= insertRows) {
break;
}
}
return k;
} }
#endif
int32_t prepareStbStmt(threadInfo *pThreadInfo, char *tableName, int32_t prepareStbStmt(threadInfo *pThreadInfo, char *tableName,
int64_t tableSeq, uint32_t batch, uint64_t insertRows, int64_t tableSeq, uint32_t batch, uint64_t insertRows,
...@@ -3682,10 +3133,14 @@ int32_t prepareStbStmt(threadInfo *pThreadInfo, char *tableName, ...@@ -3682,10 +3133,14 @@ int32_t prepareStbStmt(threadInfo *pThreadInfo, char *tableName,
SSuperTable *stbInfo = pThreadInfo->stbInfo; SSuperTable *stbInfo = pThreadInfo->stbInfo;
TAOS_STMT * stmt = pThreadInfo->stmt; TAOS_STMT * stmt = pThreadInfo->stmt;
char *tagsValBuf = (char *)calloc(TSDB_MAX_SQL_LEN + 1, 1);
assert(tagsValBuf);
char *tagsArray = calloc(1, sizeof(TAOS_BIND) * stbInfo->tagCount); char *tagsArray = calloc(1, sizeof(TAOS_BIND) * stbInfo->tagCount);
assert(tagsArray); if (NULL == tagsArray) {
errorPrint("failed to allocate %" PRIu64 " size memory\n",
sizeof(TAOS_BIND) * stbInfo->tagCount);
return -1;
}
char *tagsValBuf = (char *)calloc(TSDB_MAX_SQL_LEN + 1, 1);
if (AUTO_CREATE_SUBTBL == stbInfo->autoCreateTable) { if (AUTO_CREATE_SUBTBL == stbInfo->autoCreateTable) {
if (0 == stbInfo->tagSource) { if (0 == stbInfo->tagSource) {
if (generateTagValuesForStb(stbInfo, tableSeq, tagsValBuf)) { if (generateTagValuesForStb(stbInfo, tableSeq, tagsValBuf)) {
...@@ -3722,13 +3177,8 @@ int32_t prepareStbStmt(threadInfo *pThreadInfo, char *tableName, ...@@ -3722,13 +3177,8 @@ int32_t prepareStbStmt(threadInfo *pThreadInfo, char *tableName,
} }
} }
#if STMT_BIND_PARAM_BATCH == 1
return execStbBindParamBatch(pThreadInfo, tableName, tableSeq, batch, return execStbBindParamBatch(pThreadInfo, tableName, tableSeq, batch,
insertRows, recordFrom, startTime, pSamplePos); insertRows, recordFrom, startTime, pSamplePos);
#else
return execBindParam(pThreadInfo, tableName, tableSeq, batch, insertRows,
recordFrom, startTime, pSamplePos);
#endif
} }
int32_t generateStbProgressiveData(SSuperTable *stbInfo, char *tableName, int32_t generateStbProgressiveData(SSuperTable *stbInfo, char *tableName,
...@@ -3736,7 +3186,6 @@ int32_t generateStbProgressiveData(SSuperTable *stbInfo, char *tableName, ...@@ -3736,7 +3186,6 @@ int32_t generateStbProgressiveData(SSuperTable *stbInfo, char *tableName,
int64_t insertRows, uint64_t recordFrom, int64_t insertRows, uint64_t recordFrom,
int64_t startTime, int64_t *pSamplePos, int64_t startTime, int64_t *pSamplePos,
int64_t *pRemainderBufLen) { int64_t *pRemainderBufLen) {
assert(buffer != NULL);
char *pstr = buffer; char *pstr = buffer;
memset(pstr, 0, *pRemainderBufLen); memset(pstr, 0, *pRemainderBufLen);
...@@ -3757,13 +3206,13 @@ int32_t generateStbProgressiveData(SSuperTable *stbInfo, char *tableName, ...@@ -3757,13 +3206,13 @@ int32_t generateStbProgressiveData(SSuperTable *stbInfo, char *tableName,
startTime, pSamplePos, &dataLen); startTime, pSamplePos, &dataLen);
} }
int32_t generateProgressiveDataWithoutStb( int32_t generateProgressiveDataWithoutStb(char *tableName,
char *tableName,
/* int64_t tableSeq, */ threadInfo *pThreadInfo, char *buffer,
threadInfo *pThreadInfo, char *buffer, int64_t insertRows, int64_t insertRows,
uint64_t recordFrom, int64_t startTime, /*int64_t *pSamplePos, */ uint64_t recordFrom,
int64_t *pRemainderBufLen) { int64_t startTime,
assert(buffer != NULL); int64_t *pRemainderBufLen) {
char *pstr = buffer; char *pstr = buffer;
memset(buffer, 0, *pRemainderBufLen); memset(buffer, 0, *pRemainderBufLen);
...@@ -3784,7 +3233,6 @@ int32_t generateProgressiveDataWithoutStb( ...@@ -3784,7 +3233,6 @@ int32_t generateProgressiveDataWithoutStb(
/*pSamplePos, */ &dataLen); /*pSamplePos, */ &dataLen);
} }
#if STMT_BIND_PARAM_BATCH == 1
// stmt sync write interlace data // stmt sync write interlace data
static void *syncWriteInterlaceStmtBatch(threadInfo *pThreadInfo, static void *syncWriteInterlaceStmtBatch(threadInfo *pThreadInfo,
uint32_t interlaceRows) { uint32_t interlaceRows) {
...@@ -3992,229 +3440,6 @@ free_of_interlace_stmt: ...@@ -3992,229 +3440,6 @@ free_of_interlace_stmt:
printStatPerThread(pThreadInfo); printStatPerThread(pThreadInfo);
return NULL; return NULL;
} }
#else
// stmt sync write interlace data
static void *syncWriteInterlaceStmt(threadInfo *pThreadInfo,
uint32_t interlaceRows) {
debugPrint("[%d] %s() LN%d: ### stmt interlace write\n",
pThreadInfo->threadID, __func__, __LINE__);
int64_t insertRows;
uint64_t maxSqlLen;
int64_t timeStampStep;
uint64_t insert_interval;
SSuperTable *stbInfo = pThreadInfo->stbInfo;
if (stbInfo) {
insertRows = stbInfo->insertRows;
maxSqlLen = stbInfo->maxSqlLen;
timeStampStep = stbInfo->timeStampStep;
insert_interval = stbInfo->insertInterval;
} else {
insertRows = g_args.insertRows;
maxSqlLen = g_args.max_sql_len;
timeStampStep = g_args.timestamp_step;
insert_interval = g_args.insert_interval;
}
debugPrint("[%d] %s() LN%d: start_table_from=%" PRIu64 " ntables=%" PRId64
" insertRows=%" PRIu64 "\n",
pThreadInfo->threadID, __func__, __LINE__,
pThreadInfo->start_table_from, pThreadInfo->ntables, insertRows);
uint32_t batchPerTbl = interlaceRows;
uint32_t batchPerTblTimes;
if (interlaceRows > g_args.reqPerReq) interlaceRows = g_args.reqPerReq;
if ((interlaceRows > 0) && (pThreadInfo->ntables > 1)) {
batchPerTblTimes = g_args.reqPerReq / interlaceRows;
} else {
batchPerTblTimes = 1;
}
pThreadInfo->totalInsertRows = 0;
pThreadInfo->totalAffectedRows = 0;
uint64_t st = 0;
uint64_t et = UINT64_MAX;
uint64_t lastPrintTime = taosGetTimestampMs();
uint64_t startTs = taosGetTimestampMs();
uint64_t endTs;
uint64_t tableSeq = pThreadInfo->start_table_from;
int64_t startTime = pThreadInfo->start_time;
uint64_t generatedRecPerTbl = 0;
bool flagSleep = true;
uint64_t sleepTimeTotal = 0;
int percentComplete = 0;
int64_t totalRows = insertRows * pThreadInfo->ntables;
while (pThreadInfo->totalInsertRows < pThreadInfo->ntables * insertRows) {
if ((flagSleep) && (insert_interval)) {
st = taosGetTimestampMs();
flagSleep = false;
}
uint32_t recOfBatch = 0;
int32_t generated;
for (uint64_t i = 0; i < batchPerTblTimes; i++) {
char tableName[TSDB_TABLE_NAME_LEN];
getTableName(tableName, pThreadInfo, tableSeq);
if (0 == strlen(tableName)) {
errorPrint("[%d] %s() LN%d, getTableName return null\n",
pThreadInfo->threadID, __func__, __LINE__);
return NULL;
}
debugPrint(
"[%d] %s() LN%d, tableName:%s, batch:%d startTime:%" PRId64
"\n",
pThreadInfo->threadID, __func__, __LINE__, tableName,
batchPerTbl, startTime);
if (stbInfo) {
generated = prepareStbStmt(
pThreadInfo, tableName, tableSeq, batchPerTbl, insertRows,
0, startTime, &(pThreadInfo->samplePos));
} else {
generated =
prepareStmtWithoutStb(pThreadInfo, tableName, batchPerTbl,
insertRows, i, startTime);
}
debugPrint("[%d] %s() LN%d, generated records is %d\n",
pThreadInfo->threadID, __func__, __LINE__, generated);
if (generated < 0) {
errorPrint("[%d] %s() LN%d, generated records is %d\n",
pThreadInfo->threadID, __func__, __LINE__,
generated);
goto free_of_interlace_stmt;
} else if (generated == 0) {
break;
}
tableSeq++;
recOfBatch += batchPerTbl;
pThreadInfo->totalInsertRows += batchPerTbl;
verbosePrint("[%d] %s() LN%d batchPerTbl=%d recOfBatch=%d\n",
pThreadInfo->threadID, __func__, __LINE__, batchPerTbl,
recOfBatch);
if (tableSeq ==
pThreadInfo->start_table_from + pThreadInfo->ntables) {
// turn to first table
tableSeq = pThreadInfo->start_table_from;
generatedRecPerTbl += batchPerTbl;
startTime = pThreadInfo->start_time +
generatedRecPerTbl * timeStampStep;
flagSleep = true;
if (generatedRecPerTbl >= insertRows) break;
int64_t remainRows = insertRows - generatedRecPerTbl;
if ((remainRows > 0) && (batchPerTbl > remainRows))
batchPerTbl = remainRows;
if (pThreadInfo->ntables * batchPerTbl < g_args.reqPerReq)
break;
}
verbosePrint("[%d] %s() LN%d generatedRecPerTbl=%" PRId64
" insertRows=%" PRId64 "\n",
pThreadInfo->threadID, __func__, __LINE__,
generatedRecPerTbl, insertRows);
if ((g_args.reqPerReq - recOfBatch) < batchPerTbl) break;
}
verbosePrint("[%d] %s() LN%d recOfBatch=%d totalInsertRows=%" PRIu64
"\n",
pThreadInfo->threadID, __func__, __LINE__, recOfBatch,
pThreadInfo->totalInsertRows);
startTs = taosGetTimestampUs();
if (recOfBatch == 0) {
errorPrint("[%d] %s() LN%d Failed to insert records of batch %d\n",
pThreadInfo->threadID, __func__, __LINE__, batchPerTbl);
if (batchPerTbl > 0) {
errorPrint(
"\tIf the batch is %d, the length of the SQL to insert a "
"row must be less then %" PRId64 "\n",
batchPerTbl, maxSqlLen / batchPerTbl);
}
goto free_of_interlace_stmt;
}
int64_t affectedRows = execInsert(pThreadInfo, recOfBatch);
endTs = taosGetTimestampUs();
uint64_t delay = endTs - startTs;
performancePrint("%s() LN%d, insert execution time is %10.2f ms\n",
__func__, __LINE__, delay / 1000.0);
verbosePrint("[%d] %s() LN%d affectedRows=%" PRId64 "\n",
pThreadInfo->threadID, __func__, __LINE__, affectedRows);
if (delay > pThreadInfo->maxDelay) pThreadInfo->maxDelay = delay;
if (delay < pThreadInfo->minDelay) pThreadInfo->minDelay = delay;
pThreadInfo->cntDelay++;
pThreadInfo->totalDelay += delay;
if (recOfBatch != affectedRows) {
errorPrint(
"[%d] %s() LN%d execInsert insert %d, affected rows: %" PRId64
"\n\n",
pThreadInfo->threadID, __func__, __LINE__, recOfBatch,
affectedRows);
goto free_of_interlace_stmt;
}
pThreadInfo->totalAffectedRows += affectedRows;
int currentPercent = pThreadInfo->totalAffectedRows * 100 / totalRows;
if (currentPercent > percentComplete) {
printf("[%d]:%d%%\n", pThreadInfo->threadID, currentPercent);
percentComplete = currentPercent;
}
int64_t currentPrintTime = taosGetTimestampMs();
if (currentPrintTime - lastPrintTime > 30 * 1000) {
printf("thread[%d] has currently inserted rows: %" PRIu64
", affected rows: %" PRIu64 "\n",
pThreadInfo->threadID, pThreadInfo->totalInsertRows,
pThreadInfo->totalAffectedRows);
lastPrintTime = currentPrintTime;
}
if ((insert_interval) && flagSleep) {
et = taosGetTimestampMs();
if (insert_interval > (et - st)) {
uint64_t sleepTime = insert_interval - (et - st);
performancePrint("%s() LN%d sleep: %" PRId64
" ms for insert interval\n",
__func__, __LINE__, sleepTime);
taosMsleep(sleepTime); // ms
sleepTimeTotal += insert_interval;
}
}
}
if (percentComplete < 100)
printf("[%d]:%d%%\n", pThreadInfo->threadID, percentComplete);
free_of_interlace_stmt:
printStatPerThread(pThreadInfo);
return NULL;
}
#endif
void *syncWriteInterlace(threadInfo *pThreadInfo, uint32_t interlaceRows) { void *syncWriteInterlace(threadInfo *pThreadInfo, uint32_t interlaceRows) {
debugPrint("[%d] %s() LN%d: ### interlace write\n", pThreadInfo->threadID, debugPrint("[%d] %s() LN%d: ### interlace write\n", pThreadInfo->threadID,
...@@ -4270,7 +3495,10 @@ void *syncWriteInterlace(threadInfo *pThreadInfo, uint32_t interlaceRows) { ...@@ -4270,7 +3495,10 @@ void *syncWriteInterlace(threadInfo *pThreadInfo, uint32_t interlaceRows) {
} }
#endif #endif
pThreadInfo->buffer = calloc(maxSqlLen, 1); pThreadInfo->buffer = calloc(maxSqlLen, 1);
assert(pThreadInfo->buffer); if (NULL == pThreadInfo->buffer) {
errorPrint("failed to allocate %" PRIu64 " size memory\n", maxSqlLen);
return NULL;
}
pThreadInfo->totalInsertRows = 0; pThreadInfo->totalInsertRows = 0;
pThreadInfo->totalAffectedRows = 0; pThreadInfo->totalAffectedRows = 0;
...@@ -4778,11 +4006,7 @@ void *syncWrite(void *sarg) { ...@@ -4778,11 +4006,7 @@ void *syncWrite(void *sarg) {
// interlace mode // interlace mode
if (stbInfo) { if (stbInfo) {
if (STMT_IFACE == stbInfo->iface) { if (STMT_IFACE == stbInfo->iface) {
#if STMT_BIND_PARAM_BATCH == 1
return syncWriteInterlaceStmtBatch(pThreadInfo, interlaceRows); return syncWriteInterlaceStmtBatch(pThreadInfo, interlaceRows);
#else
return syncWriteInterlaceStmt(pThreadInfo, interlaceRows);
#endif
} else { } else {
return syncWriteInterlace(pThreadInfo, interlaceRows); return syncWriteInterlace(pThreadInfo, interlaceRows);
} }
...@@ -4998,7 +4222,11 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision, ...@@ -4998,7 +4222,11 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision,
stbInfo->childTblName = stbInfo->childTblName =
(char *)calloc(1, limit * TSDB_TABLE_NAME_LEN); (char *)calloc(1, limit * TSDB_TABLE_NAME_LEN);
assert(stbInfo->childTblName); if (NULL == stbInfo->childTblName) {
errorPrint("failed to allocate %" PRId64 " size memory\n",
limit * TSDB_TABLE_NAME_LEN);
return -1;
}
int64_t childTblCount; int64_t childTblCount;
getChildNameOfSuperTableWithLimitAndOffset( getChildNameOfSuperTableWithLimitAndOffset(
...@@ -5043,7 +4271,6 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision, ...@@ -5043,7 +4271,6 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision,
char *stmtBuffer = calloc(1, BUFFER_SIZE); char *stmtBuffer = calloc(1, BUFFER_SIZE);
assert(stmtBuffer); assert(stmtBuffer);
#if STMT_BIND_PARAM_BATCH == 1
uint32_t interlaceRows = 0; uint32_t interlaceRows = 0;
uint32_t batch; uint32_t batch;
...@@ -5062,8 +4289,6 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision, ...@@ -5062,8 +4289,6 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision,
: g_args.reqPerReq; : g_args.reqPerReq;
} }
#endif
if ((g_args.iface == STMT_IFACE) || if ((g_args.iface == STMT_IFACE) ||
((stbInfo) && (stbInfo->iface == STMT_IFACE))) { ((stbInfo) && (stbInfo->iface == STMT_IFACE))) {
char *pstr = stmtBuffer; char *pstr = stmtBuffer;
...@@ -5087,9 +4312,7 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision, ...@@ -5087,9 +4312,7 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision,
pstr += sprintf(pstr, ")"); pstr += sprintf(pstr, ")");
debugPrint("%s() LN%d, stmtBuffer: %s", __func__, __LINE__, stmtBuffer); debugPrint("%s() LN%d, stmtBuffer: %s", __func__, __LINE__, stmtBuffer);
#if STMT_BIND_PARAM_BATCH == 1
parseSamplefileToStmtBatch(stbInfo); parseSamplefileToStmtBatch(stbInfo);
#endif
} }
for (int i = 0; i < threads; i++) { for (int i = 0; i < threads; i++) {
...@@ -5140,19 +4363,12 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision, ...@@ -5140,19 +4363,12 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision,
pThreadInfo->bind_ts = malloc(sizeof(int64_t)); pThreadInfo->bind_ts = malloc(sizeof(int64_t));
if (stbInfo) { if (stbInfo) {
#if STMT_BIND_PARAM_BATCH == 1
parseStbSampleToStmtBatchForThread(pThreadInfo, stbInfo, parseStbSampleToStmtBatchForThread(pThreadInfo, stbInfo,
timePrec, batch); timePrec, batch);
#else
parseStbSampleToStmt(pThreadInfo, stbInfo, timePrec);
#endif
} else { } else {
#if STMT_BIND_PARAM_BATCH == 1
parseNtbSampleToStmtBatchForThread(pThreadInfo, timePrec, parseNtbSampleToStmtBatchForThread(pThreadInfo, timePrec,
batch); batch);
#else
parseNtbSampleToStmt(pThreadInfo, timePrec);
#endif
} }
} }
} else { } else {
...@@ -5237,7 +4453,7 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision, ...@@ -5237,7 +4453,7 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision,
} }
tmfree((char *)pThreadInfo->bind_ts); tmfree((char *)pThreadInfo->bind_ts);
#if STMT_BIND_PARAM_BATCH == 1
tmfree((char *)pThreadInfo->bind_ts_array); tmfree((char *)pThreadInfo->bind_ts_array);
tmfree(pThreadInfo->bindParams); tmfree(pThreadInfo->bindParams);
tmfree(pThreadInfo->is_null); tmfree(pThreadInfo->is_null);
...@@ -5250,25 +4466,6 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision, ...@@ -5250,25 +4466,6 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision,
close(pThreadInfo->sockfd); close(pThreadInfo->sockfd);
#endif #endif
} }
#else
if (pThreadInfo->sampleBindArray) {
for (int k = 0; k < MAX_SAMPLES; k++) {
uintptr_t *tmp =
(uintptr_t *)(*(uintptr_t *)(pThreadInfo->sampleBindArray +
sizeof(uintptr_t *) * k));
int columnCount = (pThreadInfo->stbInfo)
? pThreadInfo->stbInfo->columnCount
: g_args.columnCount;
for (int c = 1; c < columnCount + 1; c++) {
TAOS_BIND *bind =
(TAOS_BIND *)((char *)tmp + (sizeof(TAOS_BIND) * c));
if (bind) tmfree(bind->buffer);
}
tmfree((char *)tmp);
}
tmfree(pThreadInfo->sampleBindArray);
}
#endif
debugPrint("%s() LN%d, [%d] totalInsert=%" PRIu64 debugPrint("%s() LN%d, [%d] totalInsert=%" PRIu64
" totalAffected=%" PRIu64 "\n", " totalAffected=%" PRIu64 "\n",
...@@ -5356,16 +4553,16 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision, ...@@ -5356,16 +4553,16 @@ int startMultiThreadInsertData(int threads, char *db_name, char *precision,
} }
int insertTestProcess() { int insertTestProcess() {
int32_t code = printfInsertMeta(); int32_t code = -1;
if (code) { if (printfInsertMeta()) {
return code; goto end_insert_process;
} }
debugPrint("%d result file: %s\n", __LINE__, g_Dbs.resultFile); debugPrint("%d result file: %s\n", __LINE__, g_Dbs.resultFile);
g_fpOfInsertResult = fopen(g_Dbs.resultFile, "a"); g_fpOfInsertResult = fopen(g_Dbs.resultFile, "a");
if (NULL == g_fpOfInsertResult) { if (NULL == g_fpOfInsertResult) {
errorPrint("failed to open %s for save result\n", g_Dbs.resultFile); errorPrint("failed to open %s for save result\n", g_Dbs.resultFile);
return -1; goto end_insert_process;
} }
if (g_fpOfInsertResult) { if (g_fpOfInsertResult) {
...@@ -5374,11 +4571,16 @@ int insertTestProcess() { ...@@ -5374,11 +4571,16 @@ int insertTestProcess() {
prompt(); prompt();
init_rand_data(); if (init_rand_data()) {
goto end_insert_process;
}
// create database and super tables // create database and super tables
char *cmdBuffer = calloc(1, BUFFER_SIZE); char *cmdBuffer = calloc(1, BUFFER_SIZE);
assert(cmdBuffer); if (NULL == cmdBuffer) {
errorPrint("failed to allocate %d size memory\n", BUFFER_SIZE);
goto end_insert_process;
}
if (createDatabasesAndStables(cmdBuffer)) { if (createDatabasesAndStables(cmdBuffer)) {
goto end_insert_process; goto end_insert_process;
} }
...@@ -5424,6 +4626,7 @@ int insertTestProcess() { ...@@ -5424,6 +4626,7 @@ int insertTestProcess() {
} }
} }
} }
code = 0;
end_insert_process: end_insert_process:
tmfree(cmdBuffer); tmfree(cmdBuffer);
return code; return code;
......
...@@ -95,8 +95,6 @@ int main(int argc, char *argv[]) { ...@@ -95,8 +95,6 @@ int main(int argc, char *argv[]) {
} else { } else {
testCmdLine(); testCmdLine();
} }
if (g_dupstr) free(g_dupstr);
} }
postFreeResource(); postFreeResource();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册