module Sequel::MySQL::MysqlMysql2::DatabaseMethods
Constants
- MYSQL_DATABASE_DISCONNECT_ERRORS
Error messages for mysql and mysql2 that indicate the current connection should be disconnected
Public Instance Methods
call_sproc(name, opts=OPTS, &block)
click to toggle source
Support stored procedures on MySQL
# File lib/sequel/adapters/utils/mysql_mysql2.rb, line 23 def call_sproc(name, opts=OPTS, &block) args = opts[:args] || [] execute("CALL #{name}#{args.empty? ? '()' : literal(args)}", opts.merge(:sproc=>false), &block) end
execute(sql, opts=OPTS, &block)
click to toggle source
Executes the given SQL using an available connection, yielding the connection if the block is given.
# File lib/sequel/adapters/utils/mysql_mysql2.rb, line 30 def execute(sql, opts=OPTS, &block) if opts[:sproc] call_sproc(sql, opts, &block) elsif sql.is_a?(Symbol) execute_prepared_statement(sql, opts, &block) else synchronize(opts[:server]){|conn| _execute(conn, sql, opts, &block)} end end
Private Instance Methods
add_prepared_statements_cache(conn)
click to toggle source
# File lib/sequel/adapters/utils/mysql_mysql2.rb, line 42 def add_prepared_statements_cache(conn) class << conn attr_accessor :prepared_statements end conn.prepared_statements = {} end
database_specific_error_class(exception, opts)
click to toggle source
Stupid MySQL doesn't use SQLState error codes correctly, mapping all constraint violations to 23000 even though it recognizes different types.
Calls superclass method
# File lib/sequel/adapters/utils/mysql_mysql2.rb, line 52 def database_specific_error_class(exception, opts) case exception.errno when 1048 NotNullConstraintViolation when 1062 UniqueConstraintViolation when 1451, 1452 ForeignKeyConstraintViolation else super end end