Guest User

Untitled

a guest
Jul 21st, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. static MYSQL_RES* cCommand_execute_async(VALUE self, MYSQL* db, VALUE query) {
  2. int socket_fd;
  3. int retval;
  4. fd_set rset;
  5. struct timeval start;
  6. char* str = RSTRING_PTR(query);
  7. int len = RSTRING_LEN(query);
  8.  
  9. VALUE connection = rb_iv_get(self, "@connection");
  10.  
  11. if(mysql_ping(db) && mysql_errno(db) == CR_SERVER_GONE_ERROR) {
  12. CHECK_AND_RAISE(mysql_errno(db), "Mysql server has gone away. \
  13. Please report this issue to the Datamapper project. \
  14. Specify your at least your MySQL version when filing a ticket");
  15. }
  16. retval = mysql_send_query(db, str, len);
  17.  
  18. CHECK_AND_RAISE(retval, str);
  19. gettimeofday(&start, NULL);
  20.  
  21. socket_fd = db->net.fd;
  22.  
  23. for(;;) {
  24. FD_ZERO(&rset);
  25. FD_SET(socket_fd, &rset);
  26.  
  27. retval = rb_thread_select(socket_fd + 1, &rset, NULL, NULL, NULL);
  28.  
  29. if (retval < 0) {
  30. rb_sys_fail(0);
  31. }
  32.  
  33. if (retval == 0) {
  34. continue;
  35. }
  36.  
  37. if (db->status == MYSQL_STATUS_READY) {
  38. break;
  39. }
  40. }
  41.  
  42. retval = mysql_read_query_result(db);
  43. CHECK_AND_RAISE(retval, str);
  44.  
  45. data_objects_debug(query, &start);
  46.  
  47. return mysql_store_result(db);
  48. }
Add Comment
Please, Sign In to add comment