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