Sha256: 823c9829f80db2cd151dc686f7ef26e8b98cae045b961446094afb7b8c82d2ce

Contents?: true

Size: 1.75 KB

Versions: 16

Compression:

Stored size: 1.75 KB

Contents

require 'ddtrace/ext/sql'
require 'ddtrace/ext/app_types'

module Datadog
  module Contrib
    module Mysql2
      # Mysql2::Client patch module
      module Client
        module_function

        def included(base)
          if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.0.0')
            base.class_eval do
              alias_method :aliased_query, :query
              remove_method :query
              include InstanceMethods
            end
          else
            base.send(:prepend, InstanceMethods)
          end
        end

        # Mysql2::Client patch 1.9.3 instance methods
        module InstanceMethodsCompatibility
          def query(*args)
            aliased_query(*args)
          end
        end

        # Mysql2::Client patch instance methods
        module InstanceMethods
          if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.0.0')
            include InstanceMethodsCompatibility
          end

          def query(sql, options = {})
            datadog_pin.tracer.trace('mysql2.query') do |span|
              span.resource = sql
              span.service = datadog_pin.service
              span.span_type = Datadog::Ext::SQL::TYPE
              span.set_tag('mysql2.db.name', query_options[:database])
              span.set_tag('out.host', query_options[:host])
              span.set_tag('out.port', query_options[:port])
              super(sql, options)
            end
          end

          def datadog_pin
            @datadog_pin ||= Datadog::Pin.new(
              Datadog.configuration[:mysql2][:service_name],
              app: 'mysql2',
              app_type: Datadog::Ext::AppTypes::DB,
              tracer: Datadog.configuration[:mysql2][:tracer]
            )
          end
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
ddtrace-0.16.1 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.15.0.internaltracinfeature1 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.16.0 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.14.2.disableprotocolversion4 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.15.0 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.14.2.withoutpriorityparsing1 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.14.2 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.14.1 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.15.0.beta1 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.14.0 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.14.0.rc1 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.13.2 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.14.0.beta2 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.14.0.beta1 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.13.1 lib/ddtrace/contrib/mysql2/client.rb
ddtrace-0.13.0 lib/ddtrace/contrib/mysql2/client.rb