class Baza::Driver::Mysql::UnbufferedResult
This class controls the unbuffered result for the normal MySQL-driver.
Public Class Methods
new(conn, opts, result)
click to toggle source
Constructor. This should not be called manually.
# File lib/baza/driver/mysql/unbuffered_result.rb, line 4 def initialize(conn, opts, result) @conn = conn @result = result if !opts.key?(:result) || opts[:result] == "hash" @as_hash = true elsif opts[:result] == "array" @as_hash = false else raise "Unknown type of result: '#{opts[:result]}'." end end
Public Instance Methods
each() { |row| ... }
click to toggle source
Loops over every single result yielding it.
# File lib/baza/driver/mysql/unbuffered_result.rb, line 52 def each loop do row = fetch if row yield row else break end end end
fetch()
click to toggle source
Returns a single result.
# File lib/baza/driver/mysql/unbuffered_result.rb, line 18 def fetch if @enum begin ret = @enum.next rescue StopIteration @enum = nil @res = nil end end if !ret && !@res && !@enum begin @res = @conn.use_result @enum = @res.to_enum ret = @enum.next rescue Mysql::Error # Reset it to run non-unbuffered again and then return false. @conn.query_with_result = true return false rescue StopIteration sleep 0.1 retry end end if @as_hash load_keys unless @keys return Hash[*@keys.zip(ret).flatten] else return ret end end
Private Instance Methods
load_keys()
click to toggle source
Lods the keys for the object.
# File lib/baza/driver/mysql/unbuffered_result.rb, line 67 def load_keys @keys = [] keys = @res.fetch_fields keys.each do |key| @keys << key.name.to_sym end end