Module: AppPerfRpm::Instruments::Sequel

Included in:
SequelDatabase, SequelDataset
Defined in:
lib/app_perf_rpm/instruments/sequel.rb

Instance Method Summary collapse

Instance Method Details

#parse_opts(sql, opts) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/app_perf_rpm/instruments/sequel.rb', line 9

def parse_opts(sql, opts)
  if ::Sequel::VERSION < '3.41.0' && !(self.class.to_s =~ /Dataset$/)
    db_opts = @opts
  elsif @pool
    db_opts = @pool.db.opts
  else
    db_opts = @db.opts
  end

  if ::Sequel::VERSION > '4.36.0' && !sql.is_a?(String)
    # In 4.37.0, sql was converted to a prepared statement object
    sql = sql.prepared_sql unless sql.is_a?(Symbol)
  end

  {
    "name" => opts[:type],
    "query" => sanitize_sql(sql),
    "database" => db_opts[:database],
    "host" => db_opts[:host],
    "adapter" => db_opts[:adapter]
  }
end

#sanitize_sql(sql) ⇒ Object



4
5
6
7
# File 'lib/app_perf_rpm/instruments/sequel.rb', line 4

def sanitize_sql(sql)
  regexp = Regexp.new('(\'[\s\S][^\']*\'|\d*\.\d+|\d+|NULL)', Regexp::IGNORECASE)
  sql.to_s.gsub(regexp, '?')
end