class ElasticAPM::Normalizers::ActiveRecord::SqlNormalizer

@api private

def cached_adapter_name(adapter_name)

def cached_adapter_name(adapter_name)
  return UNKNOWN if adapter_name.nil? || adapter_name.empty?
  @adapters[adapter_name] ||
    (@adapters[adapter_name] = adapter_name.downcase)
rescue StandardError
  nil
end

def initialize(*args)

def initialize(*args)
  super
  @summarizer = Sql.summarizer
  @adapters = {}
end

def normalize(_transaction, _name, payload)

def normalize(_transaction, _name, payload)
  return :skip if SKIP_NAMES.include?(payload[:name])
  name = summarize(payload[:sql]) || payload[:name]
  subtype = subtype_for(payload)
  context =
    Span::Context.new(
      db: { statement: payload[:sql], type: 'sql' },
      destination: { name: subtype, resource: subtype, type: TYPE }
    )
  [name, TYPE, subtype, ACTION, context]
end

def subtype_for(payload)

def subtype_for(payload)
  cached_adapter_name(
    payload[:connection]&.adapter_name ||
      ::ActiveRecord::Base.connection_config[:adapter]
  )
end

def summarize(sql)

def summarize(sql)
  @summarizer.summarize(sql)
end