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



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

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

  {
    "db.type" => opts[:type],
    "db.statement" => sanitize_sql(sql),
    "db.instance" => db_opts[:database],
    "db.user" => db_opts[:user],
    "db.vendor" => db_opts[:adapter],
    "peer.address" => db_opts[:host],
    "peer.port" => db_opts[:port]
  }
end

#sanitize_sql(sql) ⇒ Object



6
7
8
9
# File 'lib/app_perf_rpm/instruments/sequel.rb', line 6

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