Module: Sequel::ActiveRecordConnection::Mysql2

Defined in:
lib/sequel/extensions/activerecord_connection/mysql2.rb

Instance Method Summary collapse

Instance Method Details

#execute(sql, opts = OPTS) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/sequel/extensions/activerecord_connection/mysql2.rb', line 4

def execute(sql, opts=OPTS)
  original_query_options = activerecord_raw_connection.query_options.dup

  activerecord_raw_connection.query_options.merge!(
    as:             :hash,
    symbolize_keys: true,
    cache_rows:     false,
  )

  result = activerecord_connection.execute(sql)

  if opts[:type] == :select
    if block_given?
      yield result
    else
      result
    end
  elsif block_given?
    yield activerecord_raw_connection
  end
rescue ActiveRecord::StatementInvalid => exception
  if exception.cause.is_a?(::Mysql2::Error)
    raise_error(exception.cause)
  else
    raise
  end
ensure
  activerecord_raw_connection.query_options.replace(original_query_options)
end