Method: Shiba::Explain::MysqlExplain#transform_json

Defined in:
lib/shiba/explain/mysql_explain.rb

#transform_json(json, res = [], extra = {}) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/shiba/explain/mysql_explain.rb', line 28

def transform_json(json, res = [], extra = {})
  rows = []

  if (ordering = json['ordering_operation'])
    index_walk = (ordering['using_filesort'] == false)
    return transform_json(json['ordering_operation'], res, { "index_walk" => index_walk } )
  elsif json['duplicates_removal']
    return transform_json(json['duplicates_removal'], res, extra)
  elsif json['grouping_operation']
    return transform_json(json['grouping_operation'], res, extra)
  elsif !json['nested_loop'] && !json['table']
    return [{'Extra' => json['message']}]
  elsif json['nested_loop']
    json['nested_loop'].map do |nested|
      transform_json(nested, res, extra)
    end
  elsif json['table']
    res << transform_table(json['table'], extra)
  end
  res
end