add test
This commit is contained in:
parent
7025be999b
commit
2f67ebbd50
|
@ -1543,4 +1543,111 @@ TEST(stmt2Case, errcode) {
|
|||
code = taos_stmt_prepare(stmt, sql, 0);
|
||||
checkError(stmt, code);
|
||||
}
|
||||
|
||||
void stmtAsyncBindCb(void* param, TAOS_RES* pRes, int code) {
|
||||
if (code != TSDB_CODE_SUCCESS) {
|
||||
taos_errstr(pRes);
|
||||
}
|
||||
ASSERT_EQ(code, TSDB_CODE_SUCCESS);
|
||||
return;
|
||||
}
|
||||
|
||||
TEST(stmt2Case, async_order) {
|
||||
int CTB_NUMS = 3;
|
||||
int ROW_NUMS = 3;
|
||||
int CYC_NUMS = 3;
|
||||
|
||||
TAOS* taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
||||
TAOS_STMT2_OPTION option = {0, true, true, stmtAsyncQueryCb, NULL};
|
||||
char* sql = "insert into ? values(?,?)";
|
||||
|
||||
do_query(taos, "drop database if exists stmt2_testdb_15");
|
||||
do_query(taos, "create database IF NOT EXISTS stmt2_testdb_15");
|
||||
do_query(taos, "create stable stmt2_testdb_15.stb (ts timestamp, b binary(10)) tags(t1 int, t2 binary(10))");
|
||||
do_query(taos, "use stmt2_testdb_15");
|
||||
|
||||
TAOS_STMT2* stmt = taos_stmt2_init(taos, &option);
|
||||
ASSERT_NE(stmt, nullptr);
|
||||
int code = taos_stmt2_prepare(stmt, sql, 0);
|
||||
checkError(stmt, code);
|
||||
int total_affected = 0;
|
||||
|
||||
// tbname
|
||||
char** tbs = (char**)taosMemoryMalloc(CTB_NUMS * sizeof(char*));
|
||||
for (int i = 0; i < CTB_NUMS; i++) {
|
||||
tbs[i] = (char*)taosMemoryMalloc(sizeof(char) * 20);
|
||||
sprintf(tbs[i], "ctb_%d", i);
|
||||
char* tmp = (char*)taosMemoryMalloc(sizeof(char) * 100);
|
||||
sprintf(tmp, "create table stmt2_testdb_15.%s using stmt2_testdb_15.stb tags(0, 'after')", tbs[i]);
|
||||
do_query(taos, tmp);
|
||||
}
|
||||
|
||||
// case 1 : bind_a->exec_a->bind_a->exec_a->...
|
||||
for (int r = 0; r < CYC_NUMS; r++) {
|
||||
// col params
|
||||
int64_t** ts = (int64_t**)taosMemoryMalloc(CTB_NUMS * sizeof(int64_t*));
|
||||
char** b = (char**)taosMemoryMalloc(CTB_NUMS * sizeof(char*));
|
||||
int* ts_len = (int*)taosMemoryMalloc(ROW_NUMS * sizeof(int));
|
||||
int* b_len = (int*)taosMemoryMalloc(ROW_NUMS * sizeof(int));
|
||||
for (int i = 0; i < ROW_NUMS; i++) {
|
||||
ts_len[i] = sizeof(int64_t);
|
||||
b_len[i] = 1;
|
||||
}
|
||||
for (int i = 0; i < CTB_NUMS; i++) {
|
||||
ts[i] = (int64_t*)taosMemoryMalloc(ROW_NUMS * sizeof(int64_t));
|
||||
b[i] = (char*)taosMemoryMalloc(ROW_NUMS * sizeof(char));
|
||||
for (int j = 0; j < ROW_NUMS; j++) {
|
||||
ts[i][j] = 1591060628000 + r * 100000 + j;
|
||||
b[i][j] = 'a' + j;
|
||||
}
|
||||
}
|
||||
|
||||
// bind params
|
||||
TAOS_STMT2_BIND** paramv = (TAOS_STMT2_BIND**)taosMemoryMalloc(CTB_NUMS * sizeof(TAOS_STMT2_BIND*));
|
||||
|
||||
for (int i = 0; i < CTB_NUMS; i++) {
|
||||
// create col params
|
||||
paramv[i] = (TAOS_STMT2_BIND*)taosMemoryMalloc(2 * sizeof(TAOS_STMT2_BIND));
|
||||
paramv[i][0] = {TSDB_DATA_TYPE_TIMESTAMP, &ts[i][0], &ts_len[0], NULL, ROW_NUMS};
|
||||
paramv[i][1] = {TSDB_DATA_TYPE_BINARY, &b[i][0], &b_len[0], NULL, ROW_NUMS};
|
||||
}
|
||||
// bind
|
||||
TAOS_STMT2_BINDV bindv = {CTB_NUMS, tbs, NULL, paramv};
|
||||
// code = taos_stmt2_bind_param_a(stmt, &bindv, -1, stmtAsyncBindCb, NULL);
|
||||
code = taos_stmt2_bind_param(stmt, &bindv, -1);
|
||||
|
||||
checkError(stmt, code);
|
||||
|
||||
// exec
|
||||
int affected = 0;
|
||||
code = taos_stmt2_exec(stmt, &affected);
|
||||
total_affected += affected;
|
||||
checkError(stmt, code);
|
||||
|
||||
for (int i = 0; i < CTB_NUMS; i++) {
|
||||
taosMemoryFree(paramv[i]);
|
||||
taosMemoryFree(ts[i]);
|
||||
taosMemoryFree(b[i]);
|
||||
}
|
||||
taosMemoryFree(ts);
|
||||
taosMemoryFree(b);
|
||||
taosMemoryFree(ts_len);
|
||||
taosMemoryFree(b_len);
|
||||
taosMemoryFree(paramv);
|
||||
}
|
||||
ASSERT_EQ(total_affected, CYC_NUMS * ROW_NUMS * CTB_NUMS);
|
||||
|
||||
// case 2 : bind_a->bind_a->bind_a->exec_a->...
|
||||
// case 3 : bind->exec_a->bind->exec_a->...
|
||||
// case 4 : bind_a->exec->bind_a->exec->...
|
||||
// case 5 : bind_a->close
|
||||
// case 6 : exec_a->close
|
||||
|
||||
for (int i = 0; i < CTB_NUMS; i++) {
|
||||
taosMemoryFree(tbs[i]);
|
||||
}
|
||||
taosMemoryFree(tbs);
|
||||
|
||||
taos_stmt2_close(stmt);
|
||||
}
|
||||
#pragma GCC diagnostic pop
|
||||
|
|
Loading…
Reference in New Issue