// test program for mysql // // cc test.c -l odbc // #include #include "string.h" #include "odbctap.h" DECLARE_TEST(t_connection_lost) { SQLINTEGER num; SQLCHAR szData[20]; ok_sql(hstmt, "DROP TABLE IF EXISTS t_connection_lost"); ok_sql(hstmt, "CREATE TABLE t_connection_lost (a INT, b VARCHAR(30))"); ok_stmt(hstmt, SQLPrepare(hstmt, (SQLCHAR *)"INSERT INTO t_connection_lost VALUES (?,?)", SQL_NTS)); ok_stmt(hstmt, SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &num, 0, NULL)); ok_stmt(hstmt, SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, szData, sizeof(szData), NULL)); for (num= 1; num <= 1000; num++) { sprintf((char *)szData, "MySQL%d", (int)num); ok_stmt(hstmt, SQLExecute(hstmt)); } ok_stmt(hstmt, SQLFreeStmt(hstmt, SQL_RESET_PARAMS)); system("/bin/systemctl restart mysql.service"); ok_stmt(hstmt, SQLFreeStmt(hstmt, SQL_CLOSE)); ok_stmt(hstmt, SQLPrepare(hstmt, (SQLCHAR *)"INSERT INTO t_connection_lost VALUES (?,?)", SQL_NTS)); ok_stmt(hstmt, SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &num, 0, NULL)); ok_stmt(hstmt, SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, szData, sizeof(szData), NULL)); for (num= 1; num <= 1000; num++) { sprintf((char *)szData, "MySQL%d", (int)num); ok_stmt(hstmt, SQLExecute(hstmt)); } ok_stmt(hstmt, SQLFreeStmt(hstmt, SQL_RESET_PARAMS)); ok_sql(hstmt, "SELECT * FROM t_connection_lost"); is_num(myrowcount(hstmt), 2000); ok_stmt(hstmt, SQLFreeStmt(hstmt, SQL_UNBIND)); ok_stmt(hstmt, SQLFreeStmt(hstmt, SQL_CLOSE)); ok_sql(hstmt, "DROP TABLE IF EXISTS t_connection_lost"); return OK; } BEGIN_TESTS ADD_TEST(t_connection_lost) END_TESTS RUN_TESTS