query_reviewer 0.1.8 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 374e1e04da1ecd76345bc0d2d5fa27b271353d82
|
4
|
+
data.tar.gz: fba57820f216e24ee0e761cbfe7288b3009114c2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 01928b657a61a7d6e01f6a8540299c706d2a3484faff16936b473e0262f8e7d264a70873990d65e0d01faa3be01486268ce9eafc2c2db56aff1209ea262b5a0f
|
7
|
+
data.tar.gz: 333bb606fafad2f1bf5db506335e1f364437d426ec64d2f6ee4ac97396eae838b7705ead69be8cbb1caba57468bc00fc5e4208f56f3bf5739d816d690921fb71
|
data/README.md
CHANGED
@@ -11,8 +11,8 @@ QueryReviewer is an advanced SQL query analyzer. It accomplishes the following
|
|
11
11
|
|
12
12
|
## Use This Fork ##
|
13
13
|
|
14
|
-
I use this utility for most of my MySQL-backed Rails projects. Still the best out there in my opinion for analyzing and understanding your generated SQL queries.
|
15
|
-
I forked the original [query_reviewer](https://github.com/dsboulder/query_reviewer) and applied a collection of patches that have been made since the plugin was created.
|
14
|
+
I use this utility for most of my MySQL-backed Rails projects. Still the best out there in my opinion for analyzing and understanding your generated SQL queries.
|
15
|
+
I forked the original [query_reviewer](https://github.com/dsboulder/query_reviewer) and applied a collection of patches that have been made since the plugin was created.
|
16
16
|
A list of the biggest additions below:
|
17
17
|
|
18
18
|
* Snazzed up the README into markdown for better readability
|
@@ -24,8 +24,8 @@ A list of the biggest additions below:
|
|
24
24
|
* Fixes for deprecation warnings and for 1.9 compatiblity
|
25
25
|
* Converts templates to more modern foo.html.erb naming
|
26
26
|
|
27
|
-
As of August 2011, This has become the "official" version to use. David has deprecated the [original repo](https://github.com/dsboulder/query_reviewer) and recommends that people looking for this utility use this fork instead.
|
28
|
-
This fork compiles a variety of patches that were made since that time along with additional work to support compatibility with 1.9 and Rails 3.
|
27
|
+
As of August 2011, This has become the "official" version to use. David has deprecated the [original repo](https://github.com/dsboulder/query_reviewer) and recommends that people looking for this utility use this fork instead.
|
28
|
+
This fork compiles a variety of patches that were made since that time along with additional work to support compatibility with 1.9 and Rails 3.
|
29
29
|
**Also:** If anyone else creates generally useful enhancements to this utility please start by forking this and then issue me a pull request.
|
30
30
|
|
31
31
|
**Note:** This plugin should work for Rails 2.X and Rails 3. If you run into issues, please file a bug report or send a pull request. I consider this new fork to be a group effort
|
@@ -33,7 +33,7 @@ so if you want to be added as a contributor to help maintain this, please let me
|
|
33
33
|
|
34
34
|
## Database Limitations ##
|
35
35
|
|
36
|
-
As of right now, this plugin supports analyzing queries **only for MySQL**. I consider this the primary **limitation** of this gem.
|
36
|
+
As of right now, this plugin supports analyzing queries **only for MySQL**. I consider this the primary **limitation** of this gem.
|
37
37
|
I am now using PostgreSQL for a number of my projects and the "EXPLAIN" output is totally different. Several people have started a PostgreSQL adapter for
|
38
38
|
this plugin, but none that are mature enough to include here.
|
39
39
|
|
@@ -49,7 +49,12 @@ All you have to do is install it into your Rails 2 or 3 project.
|
|
49
49
|
Right now if you use bundler, simply add this to your Gemfile:
|
50
50
|
|
51
51
|
# Gemfile
|
52
|
-
gem "query_reviewer"
|
52
|
+
gem "query_reviewer"
|
53
|
+
|
54
|
+
or to use the latest from github:
|
55
|
+
|
56
|
+
# Gemfile
|
57
|
+
gem "query_reviewer", :github => "nesquena/query_reviewer"
|
53
58
|
|
54
59
|
If you are not using bundler, you might want to [start using it](http://gembundler.com/rails23.html). You can also install this as a plugin:
|
55
60
|
|
@@ -129,8 +134,7 @@ Know of a better alternative? Let me know!
|
|
129
134
|
|
130
135
|
## Acknowledgements ##
|
131
136
|
|
132
|
-
Created by Kongregate & David Stevenson.
|
133
|
-
|
134
|
-
Also, ajvargo for helping with some fixes.
|
137
|
+
Created by Kongregate & David Stevenson. Refactorings and maintenance done by Nathan Esquenazi.
|
138
|
+
Also [@ajvargo](http://github.com/ajvargo) helped with several fixes.
|
135
139
|
|
136
140
|
Copyright (c) 2007-2008 Kongregate & David Stevenson, released under the MIT license
|
data/Rakefile
CHANGED
@@ -17,11 +17,14 @@ module QueryReviewer
|
|
17
17
|
result
|
18
18
|
end
|
19
19
|
|
20
|
-
def insert_with_review(
|
20
|
+
def insert_with_review(arel, name = nil, pk = nil, id_value = nil, sequence_name = nil, binds = [])
|
21
|
+
bind_params = binds.clone
|
22
|
+
|
21
23
|
t1 = Time.now
|
22
|
-
result = insert_without_review(
|
24
|
+
result = insert_without_review(arel, name, pk, id_value, sequence_name, binds)
|
23
25
|
t2 = Time.now
|
24
26
|
|
27
|
+
sql = to_sql(arel, bind_params)
|
25
28
|
create_or_add_query_to_query_reviewer!(sql, nil, t2 - t1, nil, "INSERT")
|
26
29
|
|
27
30
|
result
|
@@ -34,7 +34,7 @@ module QueryReviewer
|
|
34
34
|
def analyze_key!
|
35
35
|
if self.key == "const"
|
36
36
|
praise "Way to go!"
|
37
|
-
elsif self.key.blank? && !self.extra.include?("select tables optimized away")
|
37
|
+
elsif self.key.blank? && !self.extra.include?("select tables optimized away") && !self.extra.include?("impossible where noticed after reading const tables")
|
38
38
|
warn :severity => 6, :field => "key", :desc => "No index was used here. In this case, that meant scanning #{self.rows} rows."
|
39
39
|
end
|
40
40
|
end
|
@@ -23,7 +23,7 @@ module QueryReviewer
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def add(sql, duration, profile)
|
26
|
-
|
26
|
+
sqls << sql
|
27
27
|
durations << duration
|
28
28
|
profiles << profile
|
29
29
|
end
|
@@ -65,7 +65,7 @@ module QueryReviewer
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def table
|
68
|
-
@subqueries.first.table
|
68
|
+
@subqueries.first.try(:table)
|
69
69
|
end
|
70
70
|
|
71
71
|
def analyze!
|
@@ -12,12 +12,15 @@
|
|
12
12
|
<%= query_with_warning.count %> identical queries
|
13
13
|
</b>
|
14
14
|
<% end %>
|
15
|
-
<i>Table <%= (query_with_warning.warnings.detect {|w| !w.table.blank? } || query_with_warning.warnings.last).table %>:</i>
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
15
|
+
<i>Table <%= (query_with_warning.warnings.detect {|w| !w.table.blank? } || query_with_warning.warnings.last).table.presence || 'unknown'%>:</i>
|
16
|
+
<% query_with_warning.warnings.sort{|a,b| a.severity <=> b.severity}.reverse.each_with_index do |warn, index| %>
|
17
|
+
<span style = "color: <%= severity_color warn.severity%>;" title="<%= warn.desc%>"><%= warn.problem %></span><%= ", " if index < query_with_warning.warnings.length - 1 %>
|
18
|
+
<% end %>
|
19
|
+
<% if query_with_warning.warnings.any?{|w|w.desc.present?} %>
|
20
|
+
<a href = "#" onclick="query_review_toggle('warning_<%= query_with_warning.id %>_desc')" title="show/hide warning message">MSG</a>
|
21
|
+
<% end %>
|
22
|
+
<a href = "#" onclick="query_review_toggle('warning_<%= query_with_warning.id %>_sql')" title="show/hide sql">SQL</a>
|
23
|
+
|
21
24
|
<% if query_with_warning.select? %>
|
22
25
|
<a href="#" onclick="query_review_toggle('warning_<%= query_with_warning.id %>_explain')" title="show/hide explain output">EXPLN</a>
|
23
26
|
<% end %>
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: query_reviewer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- dsboulder, nesquena
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-09-16 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: Runs explain before each select query and displays results in an overlayed
|
15
14
|
div
|
@@ -52,27 +51,27 @@ files:
|
|
52
51
|
homepage: https://github.com/nesquena/query_reviewer
|
53
52
|
licenses:
|
54
53
|
- MIT
|
54
|
+
metadata: {}
|
55
55
|
post_install_message:
|
56
56
|
rdoc_options: []
|
57
57
|
require_paths:
|
58
58
|
- lib
|
59
59
|
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
60
|
requirements:
|
62
|
-
- -
|
61
|
+
- - '>='
|
63
62
|
- !ruby/object:Gem::Version
|
64
63
|
version: '0'
|
65
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
65
|
requirements:
|
68
|
-
- -
|
66
|
+
- - '>='
|
69
67
|
- !ruby/object:Gem::Version
|
70
68
|
version: '0'
|
71
69
|
requirements: []
|
72
70
|
rubyforge_project:
|
73
|
-
rubygems_version:
|
71
|
+
rubygems_version: 2.0.6
|
74
72
|
signing_key:
|
75
|
-
specification_version:
|
73
|
+
specification_version: 4
|
76
74
|
summary: Runs explain before each select query and displays results in an overlayed
|
77
75
|
div
|
78
76
|
test_files: []
|
77
|
+
has_rdoc:
|