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