class MySQL
Constants
- MYSQL_FIELD_TYPE
Public Class Methods
new(host,user,password,dbase)
click to toggle source
Calls superclass method
# File lib/DrbDB/MyMultiSQL/mysql-ruby.rb, line 36 def initialize(host,user,password,dbase) # options(Mysql::CLIENT_INTERACTIVE,1) @host=host @user=user @password=password @dbase=dbase options(Mysql::OPT_CONNECT_TIMEOUT,1) options(Mysql::OPT_READ_TIMEOUT,10) options(Mysql::OPT_WRITE_TIMEOUT,10) einfo("Mysql Client version #{client_info()}") begin super(@host,@user,@password,@dbase) rescue MysqlError => err eerror("connecting: #{err.error}") end end
Public Instance Methods
fetch_hash(res,with_table=false)
click to toggle source
# File lib/DrbDB/MyMultiSQL/mysql-ruby.rb, line 83 def fetch_hash(res,with_table=false) data=Array.new while row=res.fetch_hash(with_table) do data.push(row) end unless res.nil? return data end
fields(sql)
click to toggle source
# File lib/DrbDB/MyMultiSQL/mysql-ruby.rb, line 91 def fields(sql) fields=Array.new if ret=query(sql) ret.fetch_fields.sort{|a,b|"#{a.table}.#{a.name}" <=> "#{b.table}.#{b.name}"}.each{|field| a={"name"=>"#{field.table}.#{field.name}","type"=>MYSQL_FIELD_TYPE[field.type], "length"=>field.length} a["decimals"]=field.decimals if field.is_num? fields.push(a) a=nil } end fields end
query(sql)
click to toggle source
Calls superclass method
# File lib/DrbDB/MyMultiSQL/mysql-ruby.rb, line 62 def query(sql) return nil if sql.nil? or sql.length ==0 begin res=super(sql) rescue MysqlError => err case err.errno when 2006, 2013 einfo("connection dropped: retrying") reconnect retry when 1062 #duplicate res=-1 else eerror("#{err.error} in\n#{sql}") raise "#{err.error}\n#{sql}\n" end end return res end
reconnect()
click to toggle source
# File lib/DrbDB/MyMultiSQL/mysql-ruby.rb, line 54 def reconnect begin real_connect(@host,@user,@password,@dbase) rescue MysqlError => err ewarn("reconnecting: #{err.error}") end end
rows(sql,with_table=false)
click to toggle source
# File lib/DrbDB/MyMultiSQL/mysql-ruby.rb, line 104 def rows(sql,with_table=false) if res=query(sql) fetch_hash(res,with_table) end end
to_s()
click to toggle source
# File lib/DrbDB/MyMultiSQL/mysql-ruby.rb, line 110 def to_s "mysql(#{@dbase})" end