Class | Sequel::MySQL::Database |
In: |
lib/sequel_core/adapters/mysql.rb
|
Parent: | Sequel::Database |
Connect to the database. In addition to the usual database options, the following options have effect:
# File lib/sequel_core/adapters/mysql.rb, line 57 57: def connect(server) 58: opts = server_opts(server) 59: conn = Mysql.init 60: conn.options(Mysql::OPT_LOCAL_INFILE, "client") 61: conn.real_connect( 62: opts[:host] || 'localhost', 63: opts[:user], 64: opts[:password], 65: opts[:database], 66: opts[:port], 67: opts[:socket], 68: Mysql::CLIENT_MULTI_RESULTS + 69: Mysql::CLIENT_MULTI_STATEMENTS + 70: Mysql::CLIENT_COMPRESS 71: ) 72: conn.query_with_result = false 73: if encoding = opts[:encoding] || opts[:charset] 74: conn.query("set character_set_connection = '#{encoding}'") 75: conn.query("set character_set_client = '#{encoding}'") 76: conn.query("set character_set_database = '#{encoding}'") 77: conn.query("set character_set_server = '#{encoding}'") 78: conn.query("set character_set_results = '#{encoding}'") 79: end 80: conn.meta_eval{attr_accessor :prepared_statements} 81: conn.prepared_statements = {} 82: conn.reconnect = true 83: conn 84: end
Returns instance of Sequel::MySQL::Dataset with the given options.
# File lib/sequel_core/adapters/mysql.rb, line 87 87: def dataset(opts = nil) 88: MySQL::Dataset.new(self, opts) 89: end
Executes the given SQL using an available connection, yielding the connection if the block is given.
# File lib/sequel_core/adapters/mysql.rb, line 93 93: def execute(sql, opts={}, &block) 94: return call_sproc(sql, opts, &block) if opts[:sproc] 95: return execute_prepared_statement(sql, opts, &block) if Symbol === sql 96: begin 97: synchronize(opts[:server]){|conn| _execute(conn, sql, opts, &block)} 98: rescue Mysql::Error => e 99: raise_error(e) 100: end 101: end
Support single level transactions on MySQL.
# File lib/sequel_core/adapters/mysql.rb, line 109 109: def transaction(server=nil) 110: synchronize(server) do |conn| 111: return yield(conn) if @transactions.include?(Thread.current) 112: log_info(begin_transaction_sql) 113: conn.query(begin_transaction_sql) 114: begin 115: @transactions << Thread.current 116: yield(conn) 117: rescue ::Exception => e 118: log_info(rollback_transaction_sql) 119: conn.query(rollback_transaction_sql) 120: transaction_error(e, Mysql::Error) 121: ensure 122: unless e 123: log_info(commit_transaction_sql) 124: conn.query(commit_transaction_sql) 125: end 126: @transactions.delete(Thread.current) 127: end 128: end 129: end