Class: Dblint::Checks::MissingIndex

Inherits:
Base
  • Object
show all
Defined in:
lib/dblint/checks/missing_index.rb

Defined Under Namespace

Classes: Error

Instance Method Summary collapse

Methods inherited from Base

#check_name, #config, #find_main_app_caller, #ignored?

Instance Method Details

#statement_finished(_name, _id, _payload) ⇒ Object



16
17
18
# File 'lib/dblint/checks/missing_index.rb', line 16

def statement_finished(_name, _id, _payload)
  # Ignored
end

#statement_started(_name, _id, payload) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/dblint/checks/missing_index.rb', line 6

def statement_started(_name, _id, payload)
  return if payload[:sql].include?(';')
  return unless payload[:sql].starts_with?('SELECT')

  ActiveRecord::Base.connection.execute 'SET enable_seqscan = off', 'DBLINT'
  plan = explain(payload)
  raise_on_seqscan(plan[0]['Plan'], payload)
  ActiveRecord::Base.connection.execute 'SET enable_seqscan = on', 'DBLINT'
end