Sha256: b9f9dcd0924faa62474af74512b78b4061f800cff3a7d7cf168745371a0d631f

Contents?: true

Size: 930 Bytes

Versions: 8

Compression:

Stored size: 930 Bytes

Contents

module ActiveRecord
  module ConnectionAdapters
    module Sqlserver
      module CoreExt
        class ExplainSubscriber
          def call(*args)
            if queries = Thread.current[:available_queries_for_explain]
              payload = args.last
              queries << payload.values_at(:sql, :binds) unless ignore_sqlserver_payload?(payload)
            end
          end

          IGNORED_PAYLOADS = %w(SCHEMA EXPLAIN CACHE)
          SQLSERVER_EXPLAINED_SQLS = /(select|update|delete|insert)/i

          # Need to modify the regex for the TSQL generated by this adapter so we can explain the proper sql statements
          def ignore_sqlserver_payload?(payload)
            payload[:exception] || IGNORED_PAYLOADS.include?(payload[:name]) || payload[:sql] !~ SQLSERVER_EXPLAINED_SQLS
          end

          ActiveSupport::Notifications.subscribe("sql.active_record", new)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
activerecord-sqlserver-adapter-3.2.18 lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb
activerecord-sqlserver-adapter-3.2.17 lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb
activerecord-sqlserver-adapter-3.2.16 lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb
activerecord-sqlserver-adapter-3.2.15 lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb
activerecord-sqlserver-adapter-3.2.14 lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb
activerecord-sqlserver-adapter-3.2.13 lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb
activerecord-sqlserver-adapter-3.2.12 lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb
activerecord-sqlserver-adapter-3.2.11 lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb