Class: OneApm::Collector::SlowSql

Inherits:
Object
  • Object
show all
Defined in:
lib/one_apm/collector/containers/sql_sampler.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sql, metric_name, config, duration, backtrace = nil, &explainer) ⇒ SlowSql

Returns a new instance of SlowSql.



221
222
223
224
225
226
227
228
229
# File 'lib/one_apm/collector/containers/sql_sampler.rb', line 221

def initialize(sql, metric_name, config, duration, backtrace=nil,
               &explainer)
  @sql = sql
  @metric_name = metric_name
  @config = config
  @duration = duration
  @backtrace = backtrace
  @explainer = explainer
end

Instance Attribute Details

#backtraceObject (readonly)

Returns the value of attribute backtrace.



219
220
221
# File 'lib/one_apm/collector/containers/sql_sampler.rb', line 219

def backtrace
  @backtrace
end

#durationObject (readonly)

Returns the value of attribute duration.



218
219
220
# File 'lib/one_apm/collector/containers/sql_sampler.rb', line 218

def duration
  @duration
end

#metric_nameObject (readonly)

Returns the value of attribute metric_name.



217
218
219
# File 'lib/one_apm/collector/containers/sql_sampler.rb', line 217

def metric_name
  @metric_name
end

#sqlObject (readonly)

Returns the value of attribute sql.



216
217
218
# File 'lib/one_apm/collector/containers/sql_sampler.rb', line 216

def sql
  @sql
end

Instance Method Details

#explainObject



240
241
242
243
244
# File 'lib/one_apm/collector/containers/sql_sampler.rb', line 240

def explain
  if @config && @explainer
    OneApm::Agent::Database.explain_sql(@sql, @config, &@explainer)
  end
end

#normalizeObject



235
236
237
238
# File 'lib/one_apm/collector/containers/sql_sampler.rb', line 235

def normalize
  OneApm::Agent::Database::Obfuscator.instance \
    .default_sql_obfuscator(@sql).gsub(/\?\s*\,\s*/, '').gsub(/\s/, '')
end

#obfuscateObject



231
232
233
# File 'lib/one_apm/collector/containers/sql_sampler.rb', line 231

def obfuscate
  OneApm::Agent::Database.obfuscate_sql(@sql)
end

#prepare_to_sendObject

We can’t serialize the explainer, so clear it before we transmit



247
248
249
# File 'lib/one_apm/collector/containers/sql_sampler.rb', line 247

def prepare_to_send
  @explainer = nil
end