pg_peek 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a951340c3e9646421236103bcb724d4f0c9522ff6d3075ffcbd0761655b11c09
|
|
4
|
+
data.tar.gz: 7b4250c28bf560fd7ecdc5e7ff6f39347503665fb1a141b149d49c453351ae7f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 54bba164da3cafd7a66fd65acee918133664855ac35cd6a1c3d5a7b9cdac37a477afe10059c40b54ad9da9a6f321c8007df2e7d61fe45a4cf0cf77c5531fe69f
|
|
7
|
+
data.tar.gz: 82587be44678e71eaea3ba1bf5fed2dc8ef0e39e057a0838edbc38a3e75aa4847ff2669f66b80956a79cc2a9b53518764bd2898861270f497d235175930f9009
|
|
@@ -398,7 +398,7 @@ footer.status button:hover { color: var(--fg); }
|
|
|
398
398
|
|
|
399
399
|
.vitals { margin: 0 0 1rem; }
|
|
400
400
|
.vitals span + span::before { content: " · "; color: var(--line); }
|
|
401
|
-
a.provisional { color: color-mix(in srgb, var(--warn) 70%, var(--dim)); }
|
|
401
|
+
a.provisional, a.outdated { color: color-mix(in srgb, var(--warn) 70%, var(--dim)); }
|
|
402
402
|
|
|
403
403
|
.panels {
|
|
404
404
|
display: grid;
|
|
@@ -128,7 +128,7 @@ class PgPeek::PgStatStatements
|
|
|
128
128
|
return unless usable?
|
|
129
129
|
|
|
130
130
|
query = PgPeek::QueryLoader.load("pg_stat_statements/outliers",
|
|
131
|
-
pg_version:
|
|
131
|
+
pg_version: query_pg_version,
|
|
132
132
|
limit: PgPeek.config.outliers_limit)
|
|
133
133
|
result = connection.execute(query)
|
|
134
134
|
result.to_a
|
|
@@ -147,7 +147,7 @@ class PgPeek::PgStatStatements
|
|
|
147
147
|
return unless usable?
|
|
148
148
|
|
|
149
149
|
query = PgPeek::QueryLoader.load("pg_stat_statements/endpoints",
|
|
150
|
-
pg_version:
|
|
150
|
+
pg_version: query_pg_version,
|
|
151
151
|
limit: PgPeek.config.outliers_limit)
|
|
152
152
|
connection.execute(query).to_a
|
|
153
153
|
end
|
|
@@ -156,7 +156,7 @@ class PgPeek::PgStatStatements
|
|
|
156
156
|
return unless usable?
|
|
157
157
|
|
|
158
158
|
query = PgPeek::QueryLoader.load("pg_stat_statements/jobs",
|
|
159
|
-
pg_version:
|
|
159
|
+
pg_version: query_pg_version)
|
|
160
160
|
result = connection.execute(query)
|
|
161
161
|
result.to_a
|
|
162
162
|
end
|
|
@@ -170,7 +170,7 @@ class PgPeek::PgStatStatements
|
|
|
170
170
|
pattern = "%job='#{encoded_job}'%"
|
|
171
171
|
|
|
172
172
|
query = PgPeek::QueryLoader.load("pg_stat_statements/outliers_by_job",
|
|
173
|
-
pg_version:
|
|
173
|
+
pg_version: query_pg_version,
|
|
174
174
|
job_pattern: connection.quote(pattern),
|
|
175
175
|
limit: PgPeek.config.outliers_limit)
|
|
176
176
|
result = connection.execute(query)
|
|
@@ -186,7 +186,7 @@ class PgPeek::PgStatStatements
|
|
|
186
186
|
controller, action = endpoint.split("#", 2).map { |part| ERB::Util.url_encode(part) }
|
|
187
187
|
|
|
188
188
|
query = PgPeek::QueryLoader.load("pg_stat_statements/outliers_by_endpoint",
|
|
189
|
-
pg_version:
|
|
189
|
+
pg_version: query_pg_version,
|
|
190
190
|
controller: connection.quote(controller),
|
|
191
191
|
action: connection.quote(action),
|
|
192
192
|
limit: PgPeek.config.outliers_limit)
|
|
@@ -195,6 +195,18 @@ class PgPeek::PgStatStatements
|
|
|
195
195
|
|
|
196
196
|
private
|
|
197
197
|
|
|
198
|
+
# The view's columns follow the extension, not the server: 1.11, shipped with
|
|
199
|
+
# PostgreSQL 17, renamed blk_read_time to shared_blk_read_time. A server
|
|
200
|
+
# upgraded without ALTER EXTENSION ... UPDATE keeps the old columns, so it
|
|
201
|
+
# has to be read with the PostgreSQL 16 queries.
|
|
202
|
+
def query_pg_version
|
|
203
|
+
if Gem::Version.new(installed_version) < Gem::Version.new("1.11")
|
|
204
|
+
[ database.major_version, 16 ].min
|
|
205
|
+
else
|
|
206
|
+
database.major_version
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
|
|
198
210
|
# pg_stat_statements_info() raises PG::ObjectNotInPrerequisiteState unless
|
|
199
211
|
# the module was loaded at server start, and is readable by any role.
|
|
200
212
|
def module_loaded?
|
|
@@ -3,7 +3,13 @@
|
|
|
3
3
|
<p class="vitals dim">
|
|
4
4
|
<span>postgres <%= @database.version %></span>
|
|
5
5
|
<% if @pg_stat_statements.usable? %>
|
|
6
|
-
<span>pg_stat_statements <%= @pg_stat_statements.installed_version
|
|
6
|
+
<span>pg_stat_statements <%= @pg_stat_statements.installed_version %>
|
|
7
|
+
<% if @pg_stat_statements.outdated? %>
|
|
8
|
+
(<%= link_to "#{@pg_stat_statements.default_version} available",
|
|
9
|
+
database_pg_stat_statements_path(@database, anchor: "settings"),
|
|
10
|
+
class: "outdated", title: "ALTER EXTENSION pg_stat_statements UPDATE" %>)
|
|
11
|
+
<% end %>
|
|
12
|
+
</span>
|
|
7
13
|
<span><%= stats_since_link(@database, @stats_reset_at) %></span>
|
|
8
14
|
<span><%= pluralize(number_with_delimiter(@pg_stat_statements.statement_count), "statement") %></span>
|
|
9
15
|
<% end %>
|
data/lib/pg_peek/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pg_peek
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tomasz Mazur
|
|
@@ -197,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
197
197
|
- !ruby/object:Gem::Version
|
|
198
198
|
version: '0'
|
|
199
199
|
requirements: []
|
|
200
|
-
rubygems_version:
|
|
200
|
+
rubygems_version: 3.6.9
|
|
201
201
|
specification_version: 4
|
|
202
202
|
summary: PostgreSQL query performance monitoring for Rails applications
|
|
203
203
|
test_files: []
|