Methods
Public Instance
Constants
AFFECTED_ROWS_RE | = | /Rows matched:\s+(\d+)\s+Changed:\s+\d+\s+Warnings:\s+\d+/.freeze |
Regular expression used for getting accurate number of rows matched by an update statement. |
Attributes
conversion_procs | [R] |
Hash of conversion procs for the current database |
convert_invalid_date_time | [R] |
By default, Sequel raises an exception if in invalid date or time is used. However, if this is set to nil or :nil, the adapter treats dates like 0000-00-00 and times like 838:00:00 as nil values. If set to :string, it returns the strings as is. |
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 MySQL default behavior of having a filter for an autoincrement column equals NULL to return the last inserted row.
-
: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 MySQL config file.
-
: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, line 83 def connect(server) opts = server_opts(server) conn = Mysql.init conn.options(Mysql::READ_DEFAULT_GROUP, opts[:config_default_group] || "client") conn.options(Mysql::OPT_LOCAL_INFILE, opts[:config_local_infile]) if opts.has_key?(:config_local_infile) conn.ssl_set(opts[:sslkey], opts[:sslcert], opts[:sslca], opts[:sslcapath], opts[:sslcipher]) if opts[:sslca] || opts[:sslkey] if encoding = opts[:encoding] || opts[:charset] # Set encoding before connecting so that the mysql driver knows what # encoding we want to use, but this can be overridden by READ_DEFAULT_GROUP. conn.options(Mysql::SET_CHARSET_NAME, encoding) end if read_timeout = opts[:read_timeout] and defined? Mysql::OPT_READ_TIMEOUT conn.options(Mysql::OPT_READ_TIMEOUT, read_timeout) end if connect_timeout = opts[:connect_timeout] and defined? Mysql::OPT_CONNECT_TIMEOUT conn.options(Mysql::OPT_CONNECT_TIMEOUT, connect_timeout) end conn.real_connect( opts[:host] || 'localhost', opts[:user], opts[:password], opts[:database], (opts[:port].to_i if opts[:port]), opts[:socket], Mysql::CLIENT_MULTI_RESULTS + Mysql::CLIENT_MULTI_STATEMENTS + (opts[:compress] == false ? 0 : Mysql::CLIENT_COMPRESS) ) sqls = mysql_connection_setting_sqls # Set encoding a slightly different way after connecting, # in case the READ_DEFAULT_GROUP overrode the provided encoding. # Doesn't work across implicit reconnects, but Sequel doesn't turn on # that feature. sqls.unshift("SET NAMES #{literal(encoding.to_s)}") if encoding sqls.each{|sql| log_yield(sql){conn.query(sql)}} add_prepared_statements_cache(conn) conn end
Modify the type translators for the date, time, and timestamp types depending on the value given.
# File lib/sequel/adapters/mysql.rb, line 134 def convert_invalid_date_time=(v) m0 = ::Sequel.method(:string_to_time) @conversion_procs[11] = (v != false) ? lambda{|v| convert_date_time(v, &m0)} : m0 m1 = ::Sequel.method(:string_to_date) m = (v != false) ? lambda{|v| convert_date_time(v, &m1)} : m1 [10, 14].each{|i| @conversion_procs[i] = m} m2 = method(:to_application_timestamp) m = (v != false) ? lambda{|v| convert_date_time(v, &m2)} : m2 [7, 12].each{|i| @conversion_procs[i] = m} @convert_invalid_date_time = v end
Modify the type translator used for the tinyint type based on the value given.
# File lib/sequel/adapters/mysql.rb, line 148 def convert_tinyint_to_bool=(v) @conversion_procs[1] = TYPE_TRANSLATOR.method(v ? :boolean : :integer) @convert_tinyint_to_bool = v end
Closes given database connection.
# File lib/sequel/adapters/mysql.rb, line 126 def disconnect_connection(c) c.close rescue Mysql::Error nil end
Return the number of matched rows when executing a delete/update statement.
# File lib/sequel/adapters/mysql.rb, line 154 def execute_dui(sql, opts=OPTS) execute(sql, opts){|c| return affected_rows(c)} end
Return the last inserted id when executing an insert statement.
# File lib/sequel/adapters/mysql.rb, line 159 def execute_insert(sql, opts=OPTS) execute(sql, opts){|c| return c.insert_id} end
Return the version of the MySQL server two which we are connecting.
# File lib/sequel/adapters/mysql.rb, line 164 def server_version(server=nil) @server_version ||= (synchronize(server){|conn| conn.server_version if conn.respond_to?(:server_version)} || super) end