Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static MYSQL_RES* cCommand_execute_async(VALUE self, MYSQL* db, VALUE query) {
- int socket_fd;
- int retval;
- fd_set rset;
- struct timeval start;
- char* str = RSTRING_PTR(query);
- int len = RSTRING_LEN(query);
- VALUE connection = rb_iv_get(self, "@connection");
- if(mysql_ping(db) && mysql_errno(db) == CR_SERVER_GONE_ERROR) {
- CHECK_AND_RAISE(mysql_errno(db), "Mysql server has gone away. \
- Please report this issue to the Datamapper project. \
- Specify your at least your MySQL version when filing a ticket");
- }
- retval = mysql_send_query(db, str, len);
- CHECK_AND_RAISE(retval, str);
- gettimeofday(&start, NULL);
- socket_fd = db->net.fd;
- for(;;) {
- FD_ZERO(&rset);
- FD_SET(socket_fd, &rset);
- retval = rb_thread_select(socket_fd + 1, &rset, NULL, NULL, NULL);
- if (retval < 0) {
- rb_sys_fail(0);
- }
- if (retval == 0) {
- continue;
- }
- if (db->status == MYSQL_STATUS_READY) {
- break;
- }
- }
- retval = mysql_read_query_result(db);
- CHECK_AND_RAISE(retval, str);
- data_objects_debug(query, &start);
- return mysql_store_result(db);
- }
Add Comment
Please, Sign In to add comment