Module: SqlSafetyNet::ConnectionAdapter::MysqlAdapter

Defined in:
lib/sql_safety_net/connection_adapter/mysql_adapter.rb

Overview

Logic for analyzing MySQL query plans.

Instance Method Summary collapse

Instance Method Details

#analyze_query(sql, name, *args) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/sql_safety_net/connection_adapter/mysql_adapter.rb', line 5

def analyze_query(sql, name, *args)
  if select_statement?(sql)
    query_plan = select_without_sql_safety_net("EXPLAIN #{sql}", "EXPLAIN", *args)
    query_plan_flags = analyze_query_plan(query_plan)
    unless query_plan_flags.empty?
      @logger.debug("Flagged query plan #{name} (#{query_plan_flags.join(', ')}): #{query_plan.inspect}") if @logger
      return {:query_plan => query_plan, :flags => query_plan_flags}
    end
  end
end