require 'mysql'

class Mysql
  
  alias_method :c_async_query, :async_query

  def async_query(sql, timeout = nil)
    puts "** Blocking ? #{blocking?().inspect}" if ENV['MYSQL_BLOCKING_STATUS'] == '1'
    return c_async_query(sql, timeout) if ENV['MYSQL_C_ASYNC_QUERY'] == '1'
    send_query(sql)
    select [ (@sockets ||= {})[socket] ||= IO.new(socket) ], nil, nil, nil
    get_result
  end
  
end

class Mysql::Result
  def all_hashes
    rows = []
    each_hash { |row| rows << row }
    rows
  end
end