mysql_casual_explain 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +18 -2
- data/Gemfile.lock +1 -1
- data/lib/mysql_casual_explain/pretty_printer.rb +26 -18
- data/lib/mysql_casual_explain/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aefb7d12a90cb72542348ae0e2d632d3f6567e128853aca59b281cb9ea146d56
|
4
|
+
data.tar.gz: 62bd776a8bdedf0addf0d4fd44c66896062f74db69acc9199aa0a01901f0b0a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b8a4aa7f5a8336a783d6f873a6c0a772024ee2189b3594b3a8a9e8ea91ab4e579371177c66e56ab96c01b25d0677c8b2b6b4e5659cf5ebe65cc3a513765bb41c
|
7
|
+
data.tar.gz: 19f6e05617376147e97a34fa6b6b1895c7d1f171cae460c33c7c3a4a977f84b6674dc3251b7a8128e3769ac848906014a7583c0ee391678b9fd4a5322d67ce18
|
data/.travis.yml
CHANGED
@@ -2,5 +2,21 @@
|
|
2
2
|
language: ruby
|
3
3
|
cache: bundler
|
4
4
|
rvm:
|
5
|
-
- 2.
|
6
|
-
|
5
|
+
- 2.5.8
|
6
|
+
- 2.6.6
|
7
|
+
- 2.7.1
|
8
|
+
gemfile:
|
9
|
+
- gemfiles/ar52.gemfile
|
10
|
+
- gemfiles/ar60.gemfile
|
11
|
+
services:
|
12
|
+
- mysql
|
13
|
+
env:
|
14
|
+
- DATABASE_URL=mysql2://travis@localhost/sakila
|
15
|
+
before_install:
|
16
|
+
- gem install bundler -v 2.1.2
|
17
|
+
- curl -sSfL https://downloads.mysql.com/docs/sakila-db.tar.gz -o - | tar zxf -
|
18
|
+
- cd sakila-db
|
19
|
+
- mysql < sakila-schema.sql
|
20
|
+
- mysql < sakila-data.sql
|
21
|
+
script:
|
22
|
+
- bundle exec rake
|
data/Gemfile.lock
CHANGED
@@ -2,32 +2,40 @@
|
|
2
2
|
|
3
3
|
module MysqlCasualExplain
|
4
4
|
module PrettyPrinter
|
5
|
-
COLUMNS = %i[
|
6
|
-
id
|
7
|
-
select_type
|
8
|
-
table
|
9
|
-
type
|
10
|
-
possible_keys
|
11
|
-
key
|
12
|
-
key_len
|
13
|
-
ref
|
14
|
-
rows
|
15
|
-
extra
|
16
|
-
].freeze
|
17
|
-
|
18
5
|
BOLD = ActiveSupport::LogSubscriber::BOLD
|
19
6
|
RED = ActiveSupport::LogSubscriber::RED
|
20
7
|
CLEAR = ActiveSupport::LogSubscriber::CLEAR
|
21
8
|
|
22
|
-
def
|
23
|
-
|
24
|
-
|
9
|
+
def pp(result, elapsed)
|
10
|
+
widths = compute_column_widths(result)
|
11
|
+
separator = build_separator(widths)
|
12
|
+
|
13
|
+
pp = []
|
14
|
+
|
15
|
+
pp << separator
|
16
|
+
pp << build_cells(result.columns, result.columns, widths)
|
17
|
+
pp << separator
|
18
|
+
|
19
|
+
result.rows.each do |row|
|
20
|
+
pp << build_cells(result.columns, row, widths)
|
21
|
+
end
|
22
|
+
|
23
|
+
pp << separator
|
24
|
+
pp << build_footer(result.rows.length, elapsed)
|
25
|
+
|
26
|
+
pp.join("\n") + "\n"
|
25
27
|
end
|
26
28
|
|
27
29
|
private
|
28
30
|
|
29
|
-
def
|
30
|
-
|
31
|
+
def build_cells(columns, items, widths)
|
32
|
+
items, widths = _colorize_items(columns, items, widths) if items.first != 'id'
|
33
|
+
super(items, widths)
|
34
|
+
end
|
35
|
+
|
36
|
+
def _colorize_items(columns, items, widths)
|
37
|
+
columns = columns.map(&:downcase).map(&:to_sym)
|
38
|
+
item_by_column = columns.zip(items).to_h
|
31
39
|
warnings_by_column = MysqlCasualExplain.warnings_by_column
|
32
40
|
|
33
41
|
new_items = []
|