Class: Nquery::DataSources::MysqlAdapter

Inherits:
PostgresqlAdapter show all
Defined in:
lib/nquery/data_sources/mysql_adapter.rb

Instance Method Summary collapse

Methods inherited from PostgresqlAdapter

#columns, #tables

Methods inherited from Adapter

#columns, for, #initialize, #tables

Constructor Details

This class inherits a constructor from Nquery::DataSources::Adapter

Instance Method Details

#execute_readonly(statement, timeout: 15, row_limit: 10_000) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/nquery/data_sources/mysql_adapter.rb', line 6

def execute_readonly(statement, timeout: 15, row_limit: 10_000)
  with_connection do |conn|
    rows = []
    columns = []
    duration = Benchmark.realtime do
      conn.transaction do
        conn.execute("SET SESSION TRANSACTION READ ONLY")
        result = conn.exec_query("#{statement.strip.sub(/;\s*\z/, '')} LIMIT #{row_limit.to_i}")
        columns = result.columns
        rows = result.rows
        raise ActiveRecord::Rollback
      end
    end
    { columns: columns, rows: rows, row_count: rows.size, duration_ms: (duration * 1000).round }
  end
end