Class: ArJdbc::MySQL::ExplainSupport::ExplainPrettyPrinter

Inherits:
Object
  • Object
show all
Defined in:
lib/arjdbc/mysql/explain_support.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#pp(result, elapsed) ⇒ Object

Pretty prints the result of a EXPLAIN in a way that resembles the output of the MySQL shell:

----————--------——----------------———---------——-------————-+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | ----————--------——----------------———---------——-------————-+ | 1 | SIMPLE | users | const | PRIMARY | PRIMARY | 4 | const | 1 | | | 1 | SIMPLE | posts | ALL | NULL | NULL | NULL | NULL | 1 | Using where | ----————--------——----------------———---------——-------————-+ 2 rows in set (0.00 sec)

This is an exercise in Ruby hyperrealism :).



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/arjdbc/mysql/explain_support.rb', line 32

def pp(result, elapsed)
  widths = compute_column_widths(result)
  separator = build_separator(widths)

  pp = []

  pp << separator
  pp << build_cells(result.columns, widths)
  pp << separator

  result.rows.each do |row|
    pp << build_cells(row, widths)
  end

  pp << separator
  pp << build_footer(result.rows.length, elapsed)

  pp.join("\n") + "\n"
end