module BaselineRedRpm::Instruments::Sequel

Public Instance Methods

parse_opts(sql, opts) click to toggle source
# File lib/baseline_red_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) click to toggle source
# File lib/baseline_red_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