Merge pull request #6326 from taosdata/hotfix/TD-4462
[TD-4462]support bind multiple tables
This commit is contained in:
commit
cd05557f40
|
@ -48,6 +48,7 @@ typedef struct SMultiTbStmt {
|
|||
bool nameSet;
|
||||
bool tagSet;
|
||||
uint64_t currentUid;
|
||||
char *sqlstr;
|
||||
uint32_t tbNum;
|
||||
SStrToken tbname;
|
||||
SStrToken stbname;
|
||||
|
@ -1291,6 +1292,7 @@ int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
|
|||
}
|
||||
|
||||
pStmt->mtb.values = sToken;
|
||||
|
||||
}
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
|
@ -1373,7 +1375,12 @@ int stmtGenInsertStatement(SSqlObj* pSql, STscStmt* pStmt, const char* name, TAO
|
|||
break;
|
||||
}
|
||||
|
||||
free(pSql->sqlstr);
|
||||
if (pStmt->mtb.sqlstr == NULL) {
|
||||
pStmt->mtb.sqlstr = pSql->sqlstr;
|
||||
} else {
|
||||
tfree(pSql->sqlstr);
|
||||
}
|
||||
|
||||
pSql->sqlstr = str;
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
|
@ -1561,7 +1568,6 @@ int taos_stmt_set_tbname_tags(TAOS_STMT* stmt, const char* name, TAOS_BIND* tags
|
|||
}
|
||||
|
||||
pStmt->mtb.nameSet = true;
|
||||
pStmt->mtb.tagSet = true;
|
||||
|
||||
tscDebug("0x%"PRIx64" SQL: %s", pSql->self, pSql->sqlstr);
|
||||
|
||||
|
@ -1634,6 +1640,7 @@ int taos_stmt_close(TAOS_STMT* stmt) {
|
|||
taosHashCleanup(pStmt->pSql->cmd.insertParam.pTableBlockHashList);
|
||||
pStmt->pSql->cmd.insertParam.pTableBlockHashList = NULL;
|
||||
taosArrayDestroy(pStmt->mtb.tags);
|
||||
tfree(pStmt->mtb.sqlstr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1450,6 +1450,47 @@ static void prepareV_long(TAOS *taos, int schemaCase, int tableNum, int lenO
|
|||
}
|
||||
|
||||
|
||||
static void prepareVcolumn_autoCreateTbl(TAOS *taos, int schemaCase, int tableNum, int lenOfBinaryDef, char* dbName) {
|
||||
TAOS_RES *result;
|
||||
int code;
|
||||
char sqlstr[1024] = {0};
|
||||
sprintf(sqlstr, "drop database if exists %s;", dbName);
|
||||
result = taos_query(taos, sqlstr);
|
||||
taos_free_result(result);
|
||||
|
||||
sprintf(sqlstr, "create database %s;", dbName);
|
||||
result = taos_query(taos, sqlstr);
|
||||
code = taos_errno(result);
|
||||
if (code != 0) {
|
||||
printf("failed to create database, reason:%s\n", taos_errstr(result));
|
||||
taos_free_result(result);
|
||||
return;
|
||||
}
|
||||
taos_free_result(result);
|
||||
|
||||
sprintf(sqlstr, "use %s;", dbName);
|
||||
result = taos_query(taos, sqlstr);
|
||||
taos_free_result(result);
|
||||
|
||||
// create table
|
||||
char buf[1024] = {0};
|
||||
//if (bigsize) {
|
||||
sprintf(buf, "create stable stb1 (ts timestamp, b bool, v1 tinyint, v2 smallint, v4 int, v8 bigint, f4 float, f8 double, br binary(%d), nr nchar(%d), ts2 timestamp)"
|
||||
" tags(id1 int, id2 bool, id3 tinyint, id4 smallint, id5 bigint, id6 float, id7 double, id8 binary(%d), id9 nchar(%d))", lenOfBinaryDef, lenOfBinaryDef, lenOfBinaryDef, lenOfBinaryDef) ;
|
||||
//} else {
|
||||
// sprintf(buf, "create stable stb1 (ts timestamp, b int) tags(id1 int, id2 bool, id3 tinyint, id4 smallint, id5 bigint, id6 float, id7 double, id8 binary(40), id9 nchar(40))") ;
|
||||
//}
|
||||
|
||||
result = taos_query(taos, buf);
|
||||
code = taos_errno(result);
|
||||
if (code != 0) {
|
||||
printf("failed to create table, reason:%s\n", taos_errstr(result));
|
||||
taos_free_result(result);
|
||||
return;
|
||||
}
|
||||
taos_free_result(result);
|
||||
}
|
||||
|
||||
|
||||
static void prepareVcolumn(TAOS *taos, int schemaCase, int tableNum, int lenOfBinaryDef, char* dbName) {
|
||||
TAOS_RES *result;
|
||||
|
@ -3159,12 +3200,872 @@ static void SpecifyColumnBatchCase(TAOS *taos) {
|
|||
|
||||
}
|
||||
|
||||
|
||||
/*=======================*/
|
||||
/*
|
||||
test scene: insert into tb1 (ts,f1) values (?,?)
|
||||
*/
|
||||
static int stmt_specifyCol_bind_case_001_autoCreateTbl(TAOS_STMT *stmt, int tableNum, int rowsOfPerColum, int bingNum, int lenOfBinaryDef, int lenOfBinaryAct, int columnNum) {
|
||||
sampleValue* v = (sampleValue *)calloc(1, sizeof(sampleValue));
|
||||
|
||||
int totalRowsPerTbl = rowsOfPerColum * bingNum;
|
||||
|
||||
v->ts = (int64_t *)malloc(sizeof(int64_t) * (size_t)(totalRowsPerTbl * tableNum));
|
||||
v->br = (char *)malloc(sizeof(int64_t) * (size_t)(totalRowsPerTbl * lenOfBinaryDef));
|
||||
v->nr = (char *)malloc(sizeof(int64_t) * (size_t)(totalRowsPerTbl * lenOfBinaryDef));
|
||||
|
||||
int *lb = (int *)malloc(MAX_ROWS_OF_PER_COLUMN * sizeof(int));
|
||||
|
||||
TAOS_BIND *tags = calloc(1, sizeof(TAOS_BIND) * 9 * 1);
|
||||
TAOS_MULTI_BIND *params = calloc(1, sizeof(TAOS_MULTI_BIND) * (size_t)(bingNum * columnNum * (tableNum+1) * rowsOfPerColum));
|
||||
char* is_null = malloc(sizeof(char) * MAX_ROWS_OF_PER_COLUMN);
|
||||
char* no_null = malloc(sizeof(char) * MAX_ROWS_OF_PER_COLUMN);
|
||||
int one_not_null = 0;
|
||||
|
||||
int64_t tts = 1591060628000;
|
||||
|
||||
for (int i = 0; i < rowsOfPerColum; ++i) {
|
||||
lb[i] = lenOfBinaryAct;
|
||||
no_null[i] = 0;
|
||||
is_null[i] = (i % 10 == 2) ? 1 : 0;
|
||||
v->b[i] = (int8_t)(i % 2);
|
||||
v->v1[i] = (int8_t)((i+1) % 2);
|
||||
v->v2[i] = (int16_t)i;
|
||||
v->v4[i] = (int32_t)(i+1);
|
||||
v->v8[i] = (int64_t)(i+2);
|
||||
v->f4[i] = (float)(i+3);
|
||||
v->f8[i] = (double)(i+4);
|
||||
char tbuf[MAX_BINARY_DEF_LEN];
|
||||
memset(tbuf, 0, MAX_BINARY_DEF_LEN);
|
||||
sprintf(tbuf, "binary-%d-0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", i%10);
|
||||
memcpy(v->br + i*lenOfBinaryDef, tbuf, (size_t)lenOfBinaryAct);
|
||||
memset(tbuf, 0, MAX_BINARY_DEF_LEN);
|
||||
sprintf(tbuf, "nchar-%d-0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", i%10);
|
||||
memcpy(v->nr + i*lenOfBinaryDef, tbuf, (size_t)lenOfBinaryAct);
|
||||
v->ts2[i] = tts + i;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
for (int j = 0; j < bingNum * tableNum; j++) {
|
||||
params[i+0].buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
|
||||
params[i+0].buffer_length = sizeof(int64_t);
|
||||
params[i+0].buffer = &v->ts[j*rowsOfPerColum];
|
||||
params[i+0].length = NULL;
|
||||
params[i+0].is_null = no_null;
|
||||
params[i+0].num = rowsOfPerColum;
|
||||
|
||||
params[i+1].buffer_type = TSDB_DATA_TYPE_BOOL;
|
||||
params[i+1].buffer_length = sizeof(int8_t);
|
||||
params[i+1].buffer = v->b;
|
||||
params[i+1].length = NULL;
|
||||
params[i+1].is_null = is_null;
|
||||
params[i+1].num = rowsOfPerColum;
|
||||
|
||||
params[i+2].buffer_type = TSDB_DATA_TYPE_INT;
|
||||
params[i+2].buffer_length = sizeof(int32_t);
|
||||
params[i+2].buffer = v->v4;
|
||||
params[i+2].length = NULL;
|
||||
params[i+2].is_null = is_null;
|
||||
params[i+2].num = rowsOfPerColum;
|
||||
|
||||
params[i+3].buffer_type = TSDB_DATA_TYPE_FLOAT;
|
||||
params[i+3].buffer_length = sizeof(float);
|
||||
params[i+3].buffer = v->f4;
|
||||
params[i+3].length = NULL;
|
||||
params[i+3].is_null = is_null;
|
||||
params[i+3].num = rowsOfPerColum;
|
||||
|
||||
params[i+4].buffer_type = TSDB_DATA_TYPE_BINARY;
|
||||
params[i+4].buffer_length = (uintptr_t)lenOfBinaryDef;
|
||||
params[i+4].buffer = v->br;
|
||||
params[i+4].length = lb;
|
||||
params[i+4].is_null = is_null;
|
||||
params[i+4].num = rowsOfPerColum;
|
||||
|
||||
i+=columnNum;
|
||||
}
|
||||
|
||||
//int64_t tts = 1591060628000;
|
||||
for (int i = 0; i < totalRowsPerTbl * tableNum; ++i) {
|
||||
v->ts[i] = tts + i;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 1; ++i) {
|
||||
tags[i+0].buffer_type = TSDB_DATA_TYPE_INT;
|
||||
tags[i+0].buffer = v->v4;
|
||||
tags[i+0].is_null = &one_not_null;
|
||||
tags[i+0].length = NULL;
|
||||
|
||||
tags[i+1].buffer_type = TSDB_DATA_TYPE_BOOL;
|
||||
tags[i+1].buffer = v->b;
|
||||
tags[i+1].is_null = &one_not_null;
|
||||
tags[i+1].length = NULL;
|
||||
|
||||
tags[i+2].buffer_type = TSDB_DATA_TYPE_TINYINT;
|
||||
tags[i+2].buffer = v->v1;
|
||||
tags[i+2].is_null = &one_not_null;
|
||||
tags[i+2].length = NULL;
|
||||
|
||||
tags[i+3].buffer_type = TSDB_DATA_TYPE_SMALLINT;
|
||||
tags[i+3].buffer = v->v2;
|
||||
tags[i+3].is_null = &one_not_null;
|
||||
tags[i+3].length = NULL;
|
||||
|
||||
tags[i+4].buffer_type = TSDB_DATA_TYPE_BIGINT;
|
||||
tags[i+4].buffer = v->v8;
|
||||
tags[i+4].is_null = &one_not_null;
|
||||
tags[i+4].length = NULL;
|
||||
|
||||
tags[i+5].buffer_type = TSDB_DATA_TYPE_FLOAT;
|
||||
tags[i+5].buffer = v->f4;
|
||||
tags[i+5].is_null = &one_not_null;
|
||||
tags[i+5].length = NULL;
|
||||
|
||||
tags[i+6].buffer_type = TSDB_DATA_TYPE_DOUBLE;
|
||||
tags[i+6].buffer = v->f8;
|
||||
tags[i+6].is_null = &one_not_null;
|
||||
tags[i+6].length = NULL;
|
||||
|
||||
tags[i+7].buffer_type = TSDB_DATA_TYPE_BINARY;
|
||||
tags[i+7].buffer = v->br;
|
||||
tags[i+7].is_null = &one_not_null;
|
||||
tags[i+7].length = (uintptr_t *)lb;
|
||||
|
||||
tags[i+8].buffer_type = TSDB_DATA_TYPE_NCHAR;
|
||||
tags[i+8].buffer = v->nr;
|
||||
tags[i+8].is_null = &one_not_null;
|
||||
tags[i+8].length = (uintptr_t *)lb;
|
||||
}
|
||||
|
||||
|
||||
unsigned long long starttime = getCurrentTime();
|
||||
|
||||
// create table m%d (ts timestamp, b bool, v1 tinyint, v2 smallint, v4 int, v8 bigint, f4 float, f8 double, br binary(%d), nr nchar(%d), ts2 timestamp)
|
||||
//char *sql = "insert into ? (ts,b,v4,f4,br) using stb1 tags (?,?,?,?,?,?,?,?,?) values(?,?,?,?,?)";
|
||||
char *sql = "insert into ? using stb1 tags (?,?,?,?,?,?,?,?,?) (ts,b,v4,f4,br) values(?,?,?,?,?)";
|
||||
|
||||
int code = taos_stmt_prepare(stmt, sql, 0);
|
||||
if (code != 0){
|
||||
printf("failed to execute taos_stmt_prepare. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
|
||||
int id = 0;
|
||||
for (int l = 0; l < bingNum; l++) {
|
||||
for (int zz = 0; zz < tableNum; zz++) {
|
||||
char buf[32];
|
||||
sprintf(buf, "m%d", zz);
|
||||
code = taos_stmt_set_tbname_tags(stmt, buf, tags);
|
||||
if (code != 0){
|
||||
printf("failed to execute taos_stmt_set_tbname. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (int col=0; col < columnNum; ++col) {
|
||||
code = taos_stmt_bind_single_param_batch(stmt, params + id, col);
|
||||
if (code != 0){
|
||||
printf("failed to execute taos_stmt_bind_single_param_batch. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
id++;
|
||||
}
|
||||
|
||||
code = taos_stmt_add_batch(stmt);
|
||||
if (code != 0) {
|
||||
printf("failed to execute taos_stmt_add_batch. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
code = taos_stmt_execute(stmt);
|
||||
if (code != 0) {
|
||||
printf("failed to execute taos_stmt_execute. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned long long endtime = getCurrentTime();
|
||||
unsigned long long totalRows = (uint32_t)(totalRowsPerTbl * tableNum);
|
||||
printf("insert total %d records, used %u seconds, avg:%u useconds per record\n", totalRows, (endtime-starttime)/1000000UL, (endtime-starttime)/totalRows);
|
||||
|
||||
free(v->ts);
|
||||
free(v->br);
|
||||
free(v->nr);
|
||||
free(v);
|
||||
free(lb);
|
||||
free(params);
|
||||
free(tags);
|
||||
free(is_null);
|
||||
free(no_null);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int stmt_specifyCol_bind_case_002_autoCreateTbl(TAOS_STMT *stmt, int tableNum, int rowsOfPerColum, int bingNum, int lenOfBinaryDef, int lenOfBinaryAct, int columnNum) {
|
||||
sampleValue* v = (sampleValue *)calloc(1, sizeof(sampleValue));
|
||||
|
||||
int totalRowsPerTbl = rowsOfPerColum * bingNum;
|
||||
|
||||
v->ts = (int64_t *)malloc(sizeof(int64_t) * (size_t)(totalRowsPerTbl * tableNum));
|
||||
v->br = (char *)malloc(sizeof(int64_t) * (size_t)(totalRowsPerTbl * lenOfBinaryDef));
|
||||
v->nr = (char *)malloc(sizeof(int64_t) * (size_t)(totalRowsPerTbl * lenOfBinaryDef));
|
||||
|
||||
int *lb = (int *)malloc(MAX_ROWS_OF_PER_COLUMN * sizeof(int));
|
||||
|
||||
TAOS_BIND *tags = calloc(1, sizeof(TAOS_BIND) * 9 * 1);
|
||||
TAOS_MULTI_BIND *params = calloc(1, sizeof(TAOS_MULTI_BIND) * (size_t)(bingNum * columnNum * (tableNum+1) * rowsOfPerColum));
|
||||
char* is_null = malloc(sizeof(char) * MAX_ROWS_OF_PER_COLUMN);
|
||||
char* no_null = malloc(sizeof(char) * MAX_ROWS_OF_PER_COLUMN);
|
||||
int one_not_null = 0;
|
||||
|
||||
int64_t tts = 1591060628000;
|
||||
|
||||
for (int i = 0; i < rowsOfPerColum; ++i) {
|
||||
lb[i] = lenOfBinaryAct;
|
||||
no_null[i] = 0;
|
||||
is_null[i] = (i % 10 == 2) ? 1 : 0;
|
||||
v->b[i] = (int8_t)(i % 2);
|
||||
v->v1[i] = (int8_t)((i+1) % 2);
|
||||
v->v2[i] = (int16_t)i;
|
||||
v->v4[i] = (int32_t)(i+1);
|
||||
v->v8[i] = (int64_t)(i+2);
|
||||
v->f4[i] = (float)(i+3);
|
||||
v->f8[i] = (double)(i+4);
|
||||
char tbuf[MAX_BINARY_DEF_LEN];
|
||||
memset(tbuf, 0, MAX_BINARY_DEF_LEN);
|
||||
sprintf(tbuf, "binary-%d-0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", i%10);
|
||||
memcpy(v->br + i*lenOfBinaryDef, tbuf, (size_t)lenOfBinaryAct);
|
||||
memset(tbuf, 0, MAX_BINARY_DEF_LEN);
|
||||
sprintf(tbuf, "nchar-%d-0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", i%10);
|
||||
memcpy(v->nr + i*lenOfBinaryDef, tbuf, (size_t)lenOfBinaryAct);
|
||||
v->ts2[i] = tts + i;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
for (int j = 0; j < bingNum * tableNum; j++) {
|
||||
params[i+0].buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
|
||||
params[i+0].buffer_length = sizeof(int64_t);
|
||||
params[i+0].buffer = &v->ts[j*rowsOfPerColum];
|
||||
params[i+0].length = NULL;
|
||||
params[i+0].is_null = no_null;
|
||||
params[i+0].num = rowsOfPerColum;
|
||||
|
||||
params[i+1].buffer_type = TSDB_DATA_TYPE_BOOL;
|
||||
params[i+1].buffer_length = sizeof(int8_t);
|
||||
params[i+1].buffer = v->b;
|
||||
params[i+1].length = NULL;
|
||||
params[i+1].is_null = is_null;
|
||||
params[i+1].num = rowsOfPerColum;
|
||||
|
||||
params[i+2].buffer_type = TSDB_DATA_TYPE_INT;
|
||||
params[i+2].buffer_length = sizeof(int32_t);
|
||||
params[i+2].buffer = v->v4;
|
||||
params[i+2].length = NULL;
|
||||
params[i+2].is_null = is_null;
|
||||
params[i+2].num = rowsOfPerColum;
|
||||
|
||||
params[i+3].buffer_type = TSDB_DATA_TYPE_FLOAT;
|
||||
params[i+3].buffer_length = sizeof(float);
|
||||
params[i+3].buffer = v->f4;
|
||||
params[i+3].length = NULL;
|
||||
params[i+3].is_null = is_null;
|
||||
params[i+3].num = rowsOfPerColum;
|
||||
|
||||
params[i+4].buffer_type = TSDB_DATA_TYPE_BINARY;
|
||||
params[i+4].buffer_length = (uintptr_t)lenOfBinaryDef;
|
||||
params[i+4].buffer = v->br;
|
||||
params[i+4].length = lb;
|
||||
params[i+4].is_null = is_null;
|
||||
params[i+4].num = rowsOfPerColum;
|
||||
|
||||
i+=columnNum;
|
||||
}
|
||||
|
||||
//int64_t tts = 1591060628000;
|
||||
for (int i = 0; i < totalRowsPerTbl * tableNum; ++i) {
|
||||
v->ts[i] = tts + i;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 1; ++i) {
|
||||
tags[i+0].buffer_type = TSDB_DATA_TYPE_INT;
|
||||
tags[i+0].buffer = v->v4;
|
||||
tags[i+0].is_null = &one_not_null;
|
||||
tags[i+0].length = NULL;
|
||||
|
||||
tags[i+1].buffer_type = TSDB_DATA_TYPE_BOOL;
|
||||
tags[i+1].buffer = v->b;
|
||||
tags[i+1].is_null = &one_not_null;
|
||||
tags[i+1].length = NULL;
|
||||
|
||||
tags[i+2].buffer_type = TSDB_DATA_TYPE_TINYINT;
|
||||
tags[i+2].buffer = v->v1;
|
||||
tags[i+2].is_null = &one_not_null;
|
||||
tags[i+2].length = NULL;
|
||||
|
||||
tags[i+3].buffer_type = TSDB_DATA_TYPE_SMALLINT;
|
||||
tags[i+3].buffer = v->v2;
|
||||
tags[i+3].is_null = &one_not_null;
|
||||
tags[i+3].length = NULL;
|
||||
|
||||
tags[i+4].buffer_type = TSDB_DATA_TYPE_BIGINT;
|
||||
tags[i+4].buffer = v->v8;
|
||||
tags[i+4].is_null = &one_not_null;
|
||||
tags[i+4].length = NULL;
|
||||
|
||||
tags[i+5].buffer_type = TSDB_DATA_TYPE_FLOAT;
|
||||
tags[i+5].buffer = v->f4;
|
||||
tags[i+5].is_null = &one_not_null;
|
||||
tags[i+5].length = NULL;
|
||||
|
||||
tags[i+6].buffer_type = TSDB_DATA_TYPE_DOUBLE;
|
||||
tags[i+6].buffer = v->f8;
|
||||
tags[i+6].is_null = &one_not_null;
|
||||
tags[i+6].length = NULL;
|
||||
|
||||
tags[i+7].buffer_type = TSDB_DATA_TYPE_BINARY;
|
||||
tags[i+7].buffer = v->br;
|
||||
tags[i+7].is_null = &one_not_null;
|
||||
tags[i+7].length = (uintptr_t *)lb;
|
||||
|
||||
tags[i+8].buffer_type = TSDB_DATA_TYPE_NCHAR;
|
||||
tags[i+8].buffer = v->nr;
|
||||
tags[i+8].is_null = &one_not_null;
|
||||
tags[i+8].length = (uintptr_t *)lb;
|
||||
}
|
||||
|
||||
|
||||
unsigned long long starttime = getCurrentTime();
|
||||
|
||||
// create table m%d (ts timestamp, b bool, v1 tinyint, v2 smallint, v4 int, v8 bigint, f4 float, f8 double, br binary(%d), nr nchar(%d), ts2 timestamp)
|
||||
//char *sql = "insert into ? (ts,b,v4,f4,br) using stb1 tags (?,?,?,?,?,?,?,?,?) values(?,?,?,?,?)";
|
||||
char *sql = "insert into ? using stb1 tags (?,?,?,?,?,?,?,?,?) (ts,b,v4,f4,br) values(?,?,?,?,?)";
|
||||
|
||||
int code = taos_stmt_prepare(stmt, sql, 0);
|
||||
if (code != 0){
|
||||
printf("failed to execute taos_stmt_prepare. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
|
||||
int id = 0;
|
||||
for (int l = 0; l < bingNum; l++) {
|
||||
for (int zz = 0; zz < tableNum; zz++) {
|
||||
char buf[32];
|
||||
sprintf(buf, "m%d", zz);
|
||||
code = taos_stmt_set_tbname_tags(stmt, buf, tags);
|
||||
if (code != 0){
|
||||
printf("failed to execute taos_stmt_set_tbname. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (int col=0; col < columnNum; ++col) {
|
||||
code = taos_stmt_bind_single_param_batch(stmt, params + id, col);
|
||||
if (code != 0){
|
||||
printf("failed to execute taos_stmt_bind_single_param_batch. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
id++;
|
||||
}
|
||||
|
||||
code = taos_stmt_add_batch(stmt);
|
||||
if (code != 0) {
|
||||
printf("failed to execute taos_stmt_add_batch. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
code = taos_stmt_execute(stmt);
|
||||
if (code != 0) {
|
||||
printf("failed to execute taos_stmt_execute. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned long long endtime = getCurrentTime();
|
||||
unsigned long long totalRows = (uint32_t)(totalRowsPerTbl * tableNum);
|
||||
printf("insert total %d records, used %u seconds, avg:%u useconds per record\n", totalRows, (endtime-starttime)/1000000UL, (endtime-starttime)/totalRows);
|
||||
|
||||
free(v->ts);
|
||||
free(v->br);
|
||||
free(v->nr);
|
||||
free(v);
|
||||
free(lb);
|
||||
free(params);
|
||||
free(tags);
|
||||
free(is_null);
|
||||
free(no_null);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int stmt_specifyCol_bind_case_003_autoCreateTbl(TAOS_STMT *stmt, int tableNum, int rowsOfPerColum, int bingNum, int lenOfBinaryDef, int lenOfBinaryAct, int columnNum) {
|
||||
sampleValue* v = (sampleValue *)calloc(1, sizeof(sampleValue));
|
||||
|
||||
int totalRowsPerTbl = rowsOfPerColum * bingNum;
|
||||
|
||||
v->ts = (int64_t *)malloc(sizeof(int64_t) * (size_t)(totalRowsPerTbl * tableNum));
|
||||
v->br = (char *)malloc(sizeof(int64_t) * (size_t)(totalRowsPerTbl * lenOfBinaryDef));
|
||||
v->nr = (char *)malloc(sizeof(int64_t) * (size_t)(totalRowsPerTbl * lenOfBinaryDef));
|
||||
|
||||
int *lb = (int *)malloc(MAX_ROWS_OF_PER_COLUMN * sizeof(int));
|
||||
|
||||
TAOS_BIND *tags = calloc(1, sizeof(TAOS_BIND) * 9 * 1);
|
||||
TAOS_MULTI_BIND *params = calloc(1, sizeof(TAOS_MULTI_BIND) * (size_t)(bingNum * columnNum * (tableNum+1) * rowsOfPerColum));
|
||||
char* is_null = malloc(sizeof(char) * MAX_ROWS_OF_PER_COLUMN);
|
||||
char* no_null = malloc(sizeof(char) * MAX_ROWS_OF_PER_COLUMN);
|
||||
int one_not_null = 0;
|
||||
|
||||
int64_t tts = 1591060628000;
|
||||
|
||||
for (int i = 0; i < rowsOfPerColum; ++i) {
|
||||
lb[i] = lenOfBinaryAct;
|
||||
no_null[i] = 0;
|
||||
is_null[i] = (i % 10 == 2) ? 1 : 0;
|
||||
v->b[i] = (int8_t)(i % 2);
|
||||
v->v1[i] = (int8_t)((i+1) % 2);
|
||||
v->v2[i] = (int16_t)i;
|
||||
v->v4[i] = (int32_t)(i+1);
|
||||
v->v8[i] = (int64_t)(i+2);
|
||||
v->f4[i] = (float)(i+3);
|
||||
v->f8[i] = (double)(i+4);
|
||||
char tbuf[MAX_BINARY_DEF_LEN];
|
||||
memset(tbuf, 0, MAX_BINARY_DEF_LEN);
|
||||
sprintf(tbuf, "binary-%d-0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", i%10);
|
||||
memcpy(v->br + i*lenOfBinaryDef, tbuf, (size_t)lenOfBinaryAct);
|
||||
memset(tbuf, 0, MAX_BINARY_DEF_LEN);
|
||||
sprintf(tbuf, "nchar-%d-0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", i%10);
|
||||
memcpy(v->nr + i*lenOfBinaryDef, tbuf, (size_t)lenOfBinaryAct);
|
||||
v->ts2[i] = tts + i;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
for (int j = 0; j < bingNum * tableNum; j++) {
|
||||
params[i+0].buffer_type = TSDB_DATA_TYPE_TIMESTAMP;
|
||||
params[i+0].buffer_length = sizeof(int64_t);
|
||||
params[i+0].buffer = &v->ts[j*rowsOfPerColum];
|
||||
params[i+0].length = NULL;
|
||||
params[i+0].is_null = no_null;
|
||||
params[i+0].num = rowsOfPerColum;
|
||||
|
||||
params[i+1].buffer_type = TSDB_DATA_TYPE_BOOL;
|
||||
params[i+1].buffer_length = sizeof(int8_t);
|
||||
params[i+1].buffer = v->b;
|
||||
params[i+1].length = NULL;
|
||||
params[i+1].is_null = is_null;
|
||||
params[i+1].num = rowsOfPerColum;
|
||||
|
||||
params[i+2].buffer_type = TSDB_DATA_TYPE_INT;
|
||||
params[i+2].buffer_length = sizeof(int32_t);
|
||||
params[i+2].buffer = v->v4;
|
||||
params[i+2].length = NULL;
|
||||
params[i+2].is_null = is_null;
|
||||
params[i+2].num = rowsOfPerColum;
|
||||
|
||||
params[i+3].buffer_type = TSDB_DATA_TYPE_FLOAT;
|
||||
params[i+3].buffer_length = sizeof(float);
|
||||
params[i+3].buffer = v->f4;
|
||||
params[i+3].length = NULL;
|
||||
params[i+3].is_null = is_null;
|
||||
params[i+3].num = rowsOfPerColum;
|
||||
|
||||
params[i+4].buffer_type = TSDB_DATA_TYPE_BINARY;
|
||||
params[i+4].buffer_length = (uintptr_t)lenOfBinaryDef;
|
||||
params[i+4].buffer = v->br;
|
||||
params[i+4].length = lb;
|
||||
params[i+4].is_null = is_null;
|
||||
params[i+4].num = rowsOfPerColum;
|
||||
|
||||
i+=columnNum;
|
||||
}
|
||||
|
||||
//int64_t tts = 1591060628000;
|
||||
for (int i = 0; i < totalRowsPerTbl * tableNum; ++i) {
|
||||
v->ts[i] = tts + i;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 1; ++i) {
|
||||
tags[i+0].buffer_type = TSDB_DATA_TYPE_INT;
|
||||
tags[i+0].buffer = v->v4;
|
||||
tags[i+0].is_null = &one_not_null;
|
||||
tags[i+0].length = NULL;
|
||||
|
||||
tags[i+1].buffer_type = TSDB_DATA_TYPE_BOOL;
|
||||
tags[i+1].buffer = v->b;
|
||||
tags[i+1].is_null = &one_not_null;
|
||||
tags[i+1].length = NULL;
|
||||
|
||||
tags[i+2].buffer_type = TSDB_DATA_TYPE_TINYINT;
|
||||
tags[i+2].buffer = v->v1;
|
||||
tags[i+2].is_null = &one_not_null;
|
||||
tags[i+2].length = NULL;
|
||||
|
||||
tags[i+3].buffer_type = TSDB_DATA_TYPE_SMALLINT;
|
||||
tags[i+3].buffer = v->v2;
|
||||
tags[i+3].is_null = &one_not_null;
|
||||
tags[i+3].length = NULL;
|
||||
|
||||
tags[i+4].buffer_type = TSDB_DATA_TYPE_BIGINT;
|
||||
tags[i+4].buffer = v->v8;
|
||||
tags[i+4].is_null = &one_not_null;
|
||||
tags[i+4].length = NULL;
|
||||
|
||||
tags[i+5].buffer_type = TSDB_DATA_TYPE_FLOAT;
|
||||
tags[i+5].buffer = v->f4;
|
||||
tags[i+5].is_null = &one_not_null;
|
||||
tags[i+5].length = NULL;
|
||||
|
||||
tags[i+6].buffer_type = TSDB_DATA_TYPE_DOUBLE;
|
||||
tags[i+6].buffer = v->f8;
|
||||
tags[i+6].is_null = &one_not_null;
|
||||
tags[i+6].length = NULL;
|
||||
|
||||
tags[i+7].buffer_type = TSDB_DATA_TYPE_BINARY;
|
||||
tags[i+7].buffer = v->br;
|
||||
tags[i+7].is_null = &one_not_null;
|
||||
tags[i+7].length = (uintptr_t *)lb;
|
||||
|
||||
tags[i+8].buffer_type = TSDB_DATA_TYPE_NCHAR;
|
||||
tags[i+8].buffer = v->nr;
|
||||
tags[i+8].is_null = &one_not_null;
|
||||
tags[i+8].length = (uintptr_t *)lb;
|
||||
}
|
||||
|
||||
|
||||
unsigned long long starttime = getCurrentTime();
|
||||
|
||||
// create table m%d (ts timestamp, b bool, v1 tinyint, v2 smallint, v4 int, v8 bigint, f4 float, f8 double, br binary(%d), nr nchar(%d), ts2 timestamp)
|
||||
//char *sql = "insert into ? (ts,b,v4,f4,br) using stb1 tags (?,?,?,?,?,?,?,?,?) values(?,?,?,?,?)";
|
||||
char *sql = "insert into ? using stb1 tags (33,?,99,?,?,?,?,?,?) (ts,b,v4,f4,br) values(?,?,?,?,?)";
|
||||
|
||||
int code = taos_stmt_prepare(stmt, sql, 0);
|
||||
if (code != 0){
|
||||
printf("failed to execute taos_stmt_prepare. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
|
||||
int id = 0;
|
||||
for (int l = 0; l < bingNum; l++) {
|
||||
for (int zz = 0; zz < tableNum; zz++) {
|
||||
char buf[32];
|
||||
sprintf(buf, "m%d", zz);
|
||||
code = taos_stmt_set_tbname_tags(stmt, buf, tags);
|
||||
if (code != 0){
|
||||
printf("failed to execute taos_stmt_set_tbname. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (int col=0; col < columnNum; ++col) {
|
||||
code = taos_stmt_bind_single_param_batch(stmt, params + id, col);
|
||||
if (code != 0){
|
||||
printf("failed to execute taos_stmt_bind_single_param_batch. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
id++;
|
||||
}
|
||||
|
||||
code = taos_stmt_add_batch(stmt);
|
||||
if (code != 0) {
|
||||
printf("failed to execute taos_stmt_add_batch. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
code = taos_stmt_execute(stmt);
|
||||
if (code != 0) {
|
||||
printf("failed to execute taos_stmt_execute. code:0x%x[%s]\n", code, tstrerror(code));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned long long endtime = getCurrentTime();
|
||||
unsigned long long totalRows = (uint32_t)(totalRowsPerTbl * tableNum);
|
||||
printf("insert total %d records, used %u seconds, avg:%u useconds per record\n", totalRows, (endtime-starttime)/1000000UL, (endtime-starttime)/totalRows);
|
||||
|
||||
free(v->ts);
|
||||
free(v->br);
|
||||
free(v->nr);
|
||||
free(v);
|
||||
free(lb);
|
||||
free(params);
|
||||
free(tags);
|
||||
free(is_null);
|
||||
free(no_null);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void SpecifyColumnBatchCase_autoCreateTbl(TAOS *taos) {
|
||||
TAOS_STMT *stmt = NULL;
|
||||
|
||||
int tableNum;
|
||||
int lenOfBinaryDef;
|
||||
int rowsOfPerColum;
|
||||
int bingNum;
|
||||
int lenOfBinaryAct;
|
||||
int columnNum;
|
||||
|
||||
int totalRowsPerTbl;
|
||||
|
||||
//=======================================================================//
|
||||
//=============================== single table ==========================//
|
||||
//========== case 1: ======================//
|
||||
#if 0
|
||||
{
|
||||
stmt = taos_stmt_init(taos);
|
||||
|
||||
tableNum = 1;
|
||||
rowsOfPerColum = 1;
|
||||
bingNum = 1;
|
||||
lenOfBinaryDef = 40;
|
||||
lenOfBinaryAct = 8;
|
||||
columnNum = 5;
|
||||
|
||||
prepareVcolumn_autoCreateTbl(taos, 1, tableNum, lenOfBinaryDef, "db1");
|
||||
stmt_specifyCol_bind_case_001_autoCreateTbl(stmt, tableNum, rowsOfPerColum, bingNum, lenOfBinaryDef, lenOfBinaryAct, columnNum);
|
||||
|
||||
totalRowsPerTbl = rowsOfPerColum * bingNum;
|
||||
checkResult(taos, "m0", 0, totalRowsPerTbl);
|
||||
taos_stmt_close(stmt);
|
||||
printf("case 1 check result end\n\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
//========== case 2: ======================//
|
||||
#if 0
|
||||
{
|
||||
stmt = taos_stmt_init(taos);
|
||||
|
||||
tableNum = 1;
|
||||
rowsOfPerColum = 5;
|
||||
bingNum = 1;
|
||||
lenOfBinaryDef = 1000;
|
||||
lenOfBinaryAct = 15;
|
||||
columnNum = 5;
|
||||
|
||||
prepareVcolumn_autoCreateTbl(taos, 1, tableNum, lenOfBinaryDef, "db2");
|
||||
stmt_specifyCol_bind_case_001_autoCreateTbl(stmt, tableNum, rowsOfPerColum, bingNum, lenOfBinaryDef, lenOfBinaryAct, columnNum);
|
||||
|
||||
totalRowsPerTbl = rowsOfPerColum * bingNum;
|
||||
checkResult(taos, "m0", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m1", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m2", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m3", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m4", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m5", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m6", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m7", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m8", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m9", 0, totalRowsPerTbl);
|
||||
taos_stmt_close(stmt);
|
||||
printf("case 2 check result end\n\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
//========== case 2-1: ======================//
|
||||
#if 0
|
||||
{
|
||||
stmt = taos_stmt_init(taos);
|
||||
|
||||
tableNum = 1;
|
||||
rowsOfPerColum = 32767;
|
||||
bingNum = 1;
|
||||
lenOfBinaryDef = 1000;
|
||||
lenOfBinaryAct = 15;
|
||||
columnNum = 5;
|
||||
|
||||
prepareVcolumn_autoCreateTbl(taos, 1, tableNum, lenOfBinaryDef, "db2_1");
|
||||
stmt_specifyCol_bind_case_001_autoCreateTbl(stmt, tableNum, rowsOfPerColum, bingNum, lenOfBinaryDef, lenOfBinaryAct, columnNum);
|
||||
|
||||
totalRowsPerTbl = rowsOfPerColum * bingNum;
|
||||
checkResult(taos, "m0", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m1", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m2", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m3", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m4", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m5", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m6", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m7", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m8", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m9", 0, totalRowsPerTbl);
|
||||
taos_stmt_close(stmt);
|
||||
printf("case 2-1 check result end\n\n");
|
||||
}
|
||||
#endif
|
||||
//========== case 2-2: ======================//
|
||||
#if 0
|
||||
{
|
||||
printf("====case 2-2 error test start\n");
|
||||
stmt = taos_stmt_init(taos);
|
||||
|
||||
tableNum = 1;
|
||||
rowsOfPerColum = 32768;
|
||||
bingNum = 1;
|
||||
lenOfBinaryDef = 1000;
|
||||
lenOfBinaryAct = 15;
|
||||
columnNum = 5;
|
||||
|
||||
prepareVcolumn_autoCreateTbl(taos, 1, tableNum, lenOfBinaryDef, "db2_2");
|
||||
stmt_specifyCol_bind_case_001_autoCreateTbl(stmt, tableNum, rowsOfPerColum, bingNum, lenOfBinaryDef, lenOfBinaryAct, columnNum);
|
||||
|
||||
totalRowsPerTbl = rowsOfPerColum * bingNum;
|
||||
checkResult(taos, "m0", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m1", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m2", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m3", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m4", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m5", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m6", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m7", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m8", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m9", 0, totalRowsPerTbl);
|
||||
taos_stmt_close(stmt);
|
||||
printf("====case 2-2 check result end\n\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
//========== case 3: ======================//
|
||||
#if 0
|
||||
{
|
||||
stmt = taos_stmt_init(taos);
|
||||
|
||||
tableNum = 1;
|
||||
rowsOfPerColum = 1;
|
||||
bingNum = 5;
|
||||
lenOfBinaryDef = 1000;
|
||||
lenOfBinaryAct = 20;
|
||||
columnNum = 5;
|
||||
|
||||
prepareVcolumn_autoCreateTbl(taos, 1, tableNum, lenOfBinaryDef, "db3");
|
||||
stmt_specifyCol_bind_case_001_autoCreateTbl(stmt, tableNum, rowsOfPerColum, bingNum, lenOfBinaryDef, lenOfBinaryAct, columnNum);
|
||||
|
||||
totalRowsPerTbl = rowsOfPerColum * bingNum;
|
||||
checkResult(taos, "m0", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m1", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m2", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m3", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m4", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m5", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m6", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m7", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m8", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m9", 0, totalRowsPerTbl);
|
||||
taos_stmt_close(stmt);
|
||||
printf("case 3 check result end\n\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
//========== case 4: ======================//
|
||||
#if 0
|
||||
{
|
||||
stmt = taos_stmt_init(taos);
|
||||
|
||||
tableNum = 1;
|
||||
rowsOfPerColum = 5;
|
||||
bingNum = 5;
|
||||
lenOfBinaryDef = 1000;
|
||||
lenOfBinaryAct = 33;
|
||||
columnNum = 5;
|
||||
|
||||
prepareVcolumn_autoCreateTbl(taos, 1, tableNum, lenOfBinaryDef, "db4");
|
||||
stmt_specifyCol_bind_case_001_autoCreateTbl(stmt, tableNum, rowsOfPerColum, bingNum, lenOfBinaryDef, lenOfBinaryAct, columnNum);
|
||||
|
||||
totalRowsPerTbl = rowsOfPerColum * bingNum;
|
||||
checkResult(taos, "m0", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m1", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m2", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m3", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m4", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m5", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m6", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m7", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m8", 0, totalRowsPerTbl);
|
||||
//checkResult(taos, "m9", 0, totalRowsPerTbl);
|
||||
taos_stmt_close(stmt);
|
||||
printf("case 4 check result end\n\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
//=======================================================================//
|
||||
//=============================== multi-rows to single table ==========================//
|
||||
//========== case 5: ======================//
|
||||
#if 0
|
||||
{
|
||||
stmt = taos_stmt_init(taos);
|
||||
|
||||
tableNum = 1;
|
||||
rowsOfPerColum = 23740;
|
||||
bingNum = 1;
|
||||
lenOfBinaryDef = 40;
|
||||
lenOfBinaryAct = 8;
|
||||
columnNum = 5;
|
||||
|
||||
prepareVcolumn_autoCreateTbl(taos, 1, tableNum, lenOfBinaryDef, "db5");
|
||||
stmt_specifyCol_bind_case_001_autoCreateTbl(stmt, tableNum, rowsOfPerColum, bingNum, lenOfBinaryDef, lenOfBinaryAct, columnNum);
|
||||
|
||||
totalRowsPerTbl = rowsOfPerColum * bingNum;
|
||||
checkResult(taos, "m0", 0, totalRowsPerTbl);
|
||||
taos_stmt_close(stmt);
|
||||
printf("case 5 check result end\n\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
// ============== error test: 1.multi table, 2.specify some tags
|
||||
//========== case 6: ======================//
|
||||
#if 1
|
||||
{
|
||||
stmt = taos_stmt_init(taos);
|
||||
|
||||
tableNum = 2;
|
||||
rowsOfPerColum = 5;
|
||||
bingNum = 1;
|
||||
lenOfBinaryDef = 40;
|
||||
lenOfBinaryAct = 8;
|
||||
columnNum = 5;
|
||||
|
||||
prepareVcolumn_autoCreateTbl(taos, 1, tableNum, lenOfBinaryDef, "db6");
|
||||
stmt_specifyCol_bind_case_002_autoCreateTbl(stmt, tableNum, rowsOfPerColum, bingNum, lenOfBinaryDef, lenOfBinaryAct, columnNum);
|
||||
|
||||
totalRowsPerTbl = rowsOfPerColum * bingNum;
|
||||
checkResult(taos, "m0", 0, totalRowsPerTbl);
|
||||
checkResult(taos, "m1", 0, totalRowsPerTbl);
|
||||
taos_stmt_close(stmt);
|
||||
printf("case 6 check result end\n\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
//========== case 7: ======================//
|
||||
#if 0
|
||||
{
|
||||
stmt = taos_stmt_init(taos);
|
||||
|
||||
tableNum = 1;
|
||||
rowsOfPerColum = 23740;
|
||||
bingNum = 1;
|
||||
lenOfBinaryDef = 40;
|
||||
lenOfBinaryAct = 8;
|
||||
columnNum = 1;
|
||||
|
||||
prepareVcolumn_autoCreateTbl(taos, 1, tableNum, lenOfBinaryDef, "db6");
|
||||
stmt_specifyCol_bind_case_003_autoCreateTbl(stmt, tableNum, rowsOfPerColum, bingNum, lenOfBinaryDef, lenOfBinaryAct, columnNum);
|
||||
|
||||
totalRowsPerTbl = rowsOfPerColum * bingNum;
|
||||
checkResult(taos, "m0", 0, totalRowsPerTbl);
|
||||
taos_stmt_close(stmt);
|
||||
printf("case 7 check result end\n\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
return ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
TAOS *taos;
|
||||
char host[32] = "127.0.0.1";
|
||||
char* serverIp = NULL;
|
||||
int threadNum = 1;
|
||||
//int threadNum = 1;
|
||||
|
||||
// connect to server
|
||||
if (argc == 1) {
|
||||
|
@ -3173,10 +4074,10 @@ int main(int argc, char *argv[])
|
|||
serverIp = argv[1];
|
||||
} else if (argc == 3) {
|
||||
serverIp = argv[1];
|
||||
threadNum = atoi(argv[2]);
|
||||
//threadNum = atoi(argv[2]);
|
||||
} else if (argc == 4) {
|
||||
serverIp = argv[1];
|
||||
threadNum = atoi(argv[2]);
|
||||
//threadNum = atoi(argv[2]);
|
||||
g_runTimes = atoi(argv[3]);
|
||||
}
|
||||
|
||||
|
@ -3219,12 +4120,12 @@ int main(int argc, char *argv[])
|
|||
if (taos == NULL) {
|
||||
printf("failed to connect to TDengine, reason:%s\n", taos_errstr(taos));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
runCase(taos);
|
||||
runCase_long(taos);
|
||||
SpecifyColumnBatchCase(taos);
|
||||
|
||||
//runCase(taos);
|
||||
//runCase_long(taos);
|
||||
//SpecifyColumnBatchCase(taos);
|
||||
SpecifyColumnBatchCase_autoCreateTbl(taos);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue