/* test should run with valgrind */ static int test_conc118(MYSQL *mysql) { int rc; mysql->reconnect= 1; mysql->options.unused_1= 1; rc= mysql_kill(mysql, mysql_thread_id(mysql)); sleep(2); rc= mysql_query(mysql, "SET @a:=1"); check_mysql_rc(rc, mysql); FAIL_IF(mysql->options.unused_1 != 1, "options got lost"); rc= mysql_kill(mysql, mysql_thread_id(mysql)); sleep(2); mysql->host= "foo"; rc= mysql_query(mysql, "SET @a:=1"); FAIL_IF(!rc, "error expected"); mysql->host= hostname; rc= mysql_query(mysql, "SET @a:=1"); check_mysql_rc(rc, mysql); return OK; }
/* test should run with valgrind */ static int test_conc118(MYSQL *mysql) { int rc; my_bool reconnect= 1; mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect); mysql->options.unused_1= 1; rc= mysql_kill(mysql, mysql_thread_id(mysql)); sleep(2); mysql_ping(mysql); rc= mysql_query(mysql, "SET @a:=1"); check_mysql_rc(rc, mysql); FAIL_IF(mysql->options.unused_1 != 1, "options got lost"); rc= mysql_kill(mysql, mysql_thread_id(mysql)); sleep(2); mysql_ping(mysql); rc= mysql_query(mysql, "SET @a:=1"); check_mysql_rc(rc, mysql); return OK; }
/* kill(pid) */ static VALUE my_kill(VALUE obj, VALUE pid) { int p = NUM2INT(pid); MYSQL* m = GetHandler(obj); if (mysql_kill(m, p) != 0) mysql_raise(m); return obj; }
nsresult mozSqlConnectionMysql::CancelExec() { unsigned long id = mysql_thread_id(mConnection); mysql_kill(mConnection, id); if (mysql_errno(mConnection)) { mErrorMessage.Assign(NS_ConvertUTF8toUTF16(mysql_error(mConnection))); return NS_ERROR_FAILURE; } mysql_ping(mConnection); return NS_OK; }
static PyObject* wsql_connection_kill(wsql_connection *self, PyObject *args) { unsigned long pid; int r; if (!PyArg_ParseTuple(args, "k:kill", &pid)) return NULL; CHECK_CONNECTION(self, NULL); Py_BEGIN_ALLOW_THREADS r = mysql_kill(&(self->connection), pid); Py_END_ALLOW_THREADS if (r) return wsql_raise_error(self); Py_RETURN_NONE; }
static int test_reconnect(MYSQL *mysql) { my_bool my_true= TRUE; MYSQL *mysql1; int rc; my_bool reconnect; mysql1= mysql_init(NULL); FAIL_IF(!mysql1, "not enough memory"); mysql_get_option(mysql1, MYSQL_OPT_RECONNECT, &reconnect); FAIL_UNLESS(reconnect == 0, "reconnect != 0"); rc= mysql_options(mysql1, MYSQL_OPT_RECONNECT, &my_true); check_mysql_rc(rc, mysql1); mysql_get_option(mysql1, MYSQL_OPT_RECONNECT, &reconnect); FAIL_UNLESS(reconnect == 1, "reconnect != 1"); if (!(mysql_real_connect(mysql1, hostname, username, password, schema, port, socketname, 0))) { diag("connection failed"); mysql_close(mysql); return FAIL; } mysql_get_option(mysql1, MYSQL_OPT_RECONNECT, &reconnect); FAIL_UNLESS(reconnect == 1, "reconnect != 1"); diag("Thread_id before kill: %lu", mysql_thread_id(mysql1)); mysql_kill(mysql, mysql_thread_id(mysql1)); sleep(4); mysql_ping(mysql1); rc= mysql_query(mysql1, "SELECT 1 FROM DUAL LIMIT 0"); check_mysql_rc(rc, mysql1); diag("Thread_id after kill: %lu", mysql_thread_id(mysql1)); mysql_get_option(mysql1, MYSQL_OPT_RECONNECT, &reconnect); FAIL_UNLESS(reconnect == 1, "reconnect != 1"); mysql_close(mysql1); return OK; }
static int test_conc75(MYSQL *my) { int rc; MYSQL *mysql; int i; my_bool reconnect= 1; mysql= mysql_init(NULL); mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect); mysql_real_connect(mysql, hostname, username, password, schema, port, socketname, 0| CLIENT_MULTI_RESULTS | CLIENT_REMEMBER_OPTIONS); rc= mysql_query(mysql, "DROP TABLE IF EXISTS a"); check_mysql_rc(rc, mysql); rc= mysql_query(mysql, "CREATE TABLE a (a varchar(200))"); check_mysql_rc(rc, mysql); rc= mysql_set_character_set(mysql, "utf8"); check_mysql_rc(rc, mysql); for (i=0; i < 10; i++) { ulong thread_id= mysql_thread_id(mysql); /* force reconnect */ mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect); diag("killing connection"); mysql_kill(my, thread_id); sleep(2); mysql_ping(mysql); rc= mysql_query(mysql, "load data local infile './nonexistingfile.csv' into table a (`a`)"); FAIL_IF(!test(mysql->options.client_flag | CLIENT_LOCAL_FILES), "client_flags not correct"); diag("thread1: %d %d", thread_id, mysql_thread_id(mysql)); FAIL_IF(thread_id == mysql_thread_id(mysql), "new thread id expected"); //diag("cs: %s", mysql->charset->csname); //FAIL_IF(strcmp(mysql->charset->csname, "utf8"), "wrong character set"); } mysql_close(mysql); return OK; }
static JSVAL kill(JSARGS args) { HandleScope scope; MYSQL *handle = (MYSQL *) args[0]->IntegerValue(); return scope.Close(Integer::New(mysql_kill(handle, args[1]->IntegerValue()))); }
int CDatabase_Connection::kill(unsigned long pid) { return mysql_kill(&my, pid); }