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: abc82aa27c9e7fcebbe27a38cc17ff102ae578afdd11d0be75908874ee5058e8
4
- data.tar.gz: 7bc328de015861d67c0250ad0373c4639fe1a45c15426c084939d56409b74d5a
3
+ metadata.gz: a951340c3e9646421236103bcb724d4f0c9522ff6d3075ffcbd0761655b11c09
4
+ data.tar.gz: 7b4250c28bf560fd7ecdc5e7ff6f39347503665fb1a141b149d49c453351ae7f
5
5
  SHA512:
6
- metadata.gz: 72349c589551ec7dd8b5875f1ccbd579a7bbeaba94588fd29251cec72f041f4610077963efdfdd47683f7741469f9ac0cc7f912453770698e5e68e346ea1a7a3
7
- data.tar.gz: 8c336b095487533a4862016ee4ffd1d332f3dad19f2134a03716375df017809fa123b1cfa37c286a0d833efeffbc4104c126c2df5a50ae74dce5b7e9eb6ee5d3
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: database.major_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: database.major_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: database.major_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: database.major_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: database.major_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 %></span>
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 %>
@@ -37,7 +37,7 @@
37
37
  <% end %>
38
38
  </section>
39
39
 
40
- <section>
40
+ <section id="settings">
41
41
  <h2>settings</h2>
42
42
  <table>
43
43
  <tbody>
@@ -1,3 +1,3 @@
1
1
  module PgPeek
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
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.1
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: 4.0.21
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: []