Methods
Public Instance
Attributes
conversion_procs | [R] |
Hash of conversion procs for the current database |
convert_invalid_date_time | [R] |
By default, |
convert_tinyint_to_bool | [R] |
Whether to convert tinyint columns to bool for the current database |
Public Instance methods
Connect to the database. In addition to the usual database options, the following options have effect:
:auto_is_null |
Set to true to use |
:charset |
Same as :encoding (:encoding takes precendence) |
:compress |
Set to false to not compress results from the server |
:config_default_group |
The default group to read from the in the |
:config_local_infile |
If provided, sets the Mysql::OPT_LOCAL_INFILE option on the connection with the given value. |
:connect_timeout |
Set the timeout in seconds before a connection attempt is abandoned. |
:encoding |
Set all the related character sets for this connection (connection, client, database, server, and results). |
:read_timeout |
Set the timeout in seconds for reading back results to a query. |
:socket |
Use a unix socket file instead of connecting via TCP/IP. |
:timeout |
Set the timeout in seconds before the server will disconnect this connection (a.k.a @@wait_timeout). |
# File lib/sequel/adapters/mysql.rb 87 def connect(server) 88 opts = server_opts(server) 89 90 if !RUBY_MYSQL_3 91 conn = Mysql.init 92 conn.options(Mysql::READ_DEFAULT_GROUP, opts[:config_default_group] || "client") 93 conn.options(Mysql::OPT_LOCAL_INFILE, opts[:config_local_infile]) if opts.has_key?(:config_local_infile) 94 if encoding = opts[:encoding] || opts[:charset] 95 # Set encoding before connecting so that the mysql driver knows what 96 # encoding we want to use, but this can be overridden by READ_DEFAULT_GROUP. 97 conn.options(Mysql::SET_CHARSET_NAME, encoding) 98 end 99 if read_timeout = opts[:read_timeout] and defined? Mysql::OPT_READ_TIMEOUT 100 conn.options(Mysql::OPT_READ_TIMEOUT, read_timeout) 101 end 102 if connect_timeout = opts[:connect_timeout] and defined? Mysql::OPT_CONNECT_TIMEOUT 103 conn.options(Mysql::OPT_CONNECT_TIMEOUT, connect_timeout) 104 end 105 else 106 # ruby-mysql 3+ API 107 conn = Adapter.new 108 # no support for default group 109 conn.local_infile = opts[:config_local_infile] if opts.has_key?(:config_local_infile) 110 if encoding = opts[:encoding] || opts[:charset] 111 conn.charset = encoding 112 end 113 if read_timeout = opts[:read_timeout] 114 conn.read_timeout = read_timeout 115 end 116 if connect_timeout = opts[:connect_timeout] 117 conn.connect_timeout = connect_timeout 118 end 119 opts[:compress] = false 120 end 121 122 conn.ssl_set(opts[:sslkey], opts[:sslcert], opts[:sslca], opts[:sslcapath], opts[:sslcipher]) if opts[:sslca] || opts[:sslkey] 123 conn.real_connect( 124 opts[:host] || 'localhost', 125 opts[:user], 126 opts[:password], 127 opts[:database], 128 (opts[:port].to_i if opts[:port]), 129 opts[:socket], 130 Mysql::CLIENT_MULTI_RESULTS + 131 Mysql::CLIENT_MULTI_STATEMENTS + 132 (opts[:compress] == false ? 0 : Mysql::CLIENT_COMPRESS) 133 ) 134 sqls = mysql_connection_setting_sqls 135 136 # Set encoding a slightly different way after connecting, 137 # in case the READ_DEFAULT_GROUP overrode the provided encoding. 138 # Doesn't work across implicit reconnects, but Sequel doesn't turn on 139 # that feature. 140 sqls.unshift("SET NAMES #{literal(encoding.to_s)}") if encoding 141 142 sqls.each{|sql| log_connection_yield(sql, conn){conn.query(sql)}} 143 144 add_prepared_statements_cache(conn) 145 conn 146 end
Modify the type translators for the date, time, and timestamp types depending on the value given.
# File lib/sequel/adapters/mysql.rb 156 def convert_invalid_date_time=(v) 157 m0 = ::Sequel.method(:string_to_time) 158 @conversion_procs[11] = (v != false) ? lambda{|val| convert_date_time(val, &m0)} : m0 159 m1 = ::Sequel.method(:string_to_date) 160 m = (v != false) ? lambda{|val| convert_date_time(val, &m1)} : m1 161 [10, 14].each{|i| @conversion_procs[i] = m} 162 m2 = method(:to_application_timestamp) 163 m = (v != false) ? lambda{|val| convert_date_time(val, &m2)} : m2 164 [7, 12].each{|i| @conversion_procs[i] = m} 165 @convert_invalid_date_time = v 166 end
Modify the type translator used for the tinyint type based on the value given.
# File lib/sequel/adapters/mysql.rb 170 def convert_tinyint_to_bool=(v) 171 @conversion_procs[1] = v ? TYPE_TRANSLATOR_BOOLEAN : TYPE_TRANSLATOR_INTEGER 172 @convert_tinyint_to_bool = v 173 end
# File lib/sequel/adapters/mysql.rb 148 def disconnect_connection(c) 149 c.close 150 rescue Mysql::Error 151 nil 152 end
# File lib/sequel/adapters/mysql.rb 175 def execute_dui(sql, opts=OPTS) 176 execute(sql, opts){|c| return affected_rows(c)} 177 end
# File lib/sequel/adapters/mysql.rb 179 def execute_insert(sql, opts=OPTS) 180 execute(sql, opts){|c| return c.insert_id} 181 end
# File lib/sequel/adapters/mysql.rb 183 def freeze 184 server_version 185 @conversion_procs.freeze 186 super 187 end