Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
p.s. сильно не пинать
for (auto it = v.begin(); it != v.end(); ++it)
delete *it;
for_each (v.begin(), v.end(), [&](MYSQL* ptr){ if (ptr) delete ptr;});
v.clear();
for (auto it : v)
{
if (*it) delete *it;
}
/*
Send the query and return so we can do something else.
Needs to be followed by mysql_read_query_result() when we want to
finish processing it.
*/
int STDCALL mysql_send_query(MYSQL* mysql, const char* query, ulong length)
{
DBUG_ENTER(“mysql_send_query”);
DBUG_RETURN(simple_command(mysql, COM_QUERY, (uchar*) query, length, 1));
}
…
my_bool STDCALL mysql_read_query_result(MYSQL *mysql)
{
return (*mysql->methods->read_query_result)(mysql);
}
- mysql_connect() is blocking only
- mysql_send_query() doesn’t seem to handle EAGAIN (send buffer is full)
- I don’t know if mysql_use_result() can be return EAGAIN easily
data[0].sql = «select sleep(3)»;
data[1].sql = «SELECT `crc` FROM hidden_contacts LIMIT 5»;
$ ./test test.c:110 connected m->net.fd = 3
test.c:110 connected m->net.fd = 4
call timer cb…
send query 'select sleep(3)'
send query 'SELECT `crc` FROM hidden_contacts LIMIT 5'
sent queryes
start watcher id=1
a result for m->net.fd = 4
sql_p2_cb
3272202
6444339
6877213
7407359
7672453
free stor result id=1
start watcher id=0
a result for m->net.fd = 3
sql_p1_cb
query is Ok res=0
free stor result id=0
Асинхронные запросы к MySQL на API (libmysqlclient)