ruby-pg-extras 5.4.0 → 5.4.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: 7ddb04fe6f72f45595c16a533c58ef34fc59dc551ab78e131f0cec1ca4a56d3b
4
- data.tar.gz: d8763349854102e5bfd2174461f7d3c43de7c74526dba14d1982c68705f59055
3
+ metadata.gz: d0c2a3e53db33c3f6e1acdbd46a93640425038e3db8d97297c641474a1f35831
4
+ data.tar.gz: 48849139f119982d36f4ac886522158687c43453c17a37c466dc81e886bb2528
5
5
  SHA512:
6
- metadata.gz: 2b33851aaed74e98903aee07d92bf4a048300f7e99bec1e7cb541c14a7669cbdf2bd8c5d784d922f276c3c287d6cf7bb65df16a7788e2b58fdcd20ca1c3a4ec4
7
- data.tar.gz: '085b52d651b6dbf60a5a44129416fccc8801e7be6c321fb0ac9083667902bdd7025a52a2e7dc20e6756f3062492820342f1aabbcf1bfe8be9b5c43bf0362d6a2'
6
+ metadata.gz: dfe571164b5544efbd220d6be208352900c67bfbb0af288b6411863002781a55caf74406e07b22ce3b80ea06895e714a8f9abf8cbea9e734c3dadda9cfcc72e9
7
+ data.tar.gz: 04d3a6b2444f0b31a17d9017e5e290591f336d65e72f150d1585f20dbfce551c3b26ac92330c810b0b6a9fdd9d4d5bc0c2748ca082ed0a26dcb387826280c47c
@@ -12,45 +12,52 @@ jobs:
12
12
  strategy:
13
13
  fail-fast: false
14
14
  matrix:
15
- ruby-version: ['3.2', '3.1', '3.0', '2.7', '2.6']
15
+ ruby-version: ['3.3', '3.2', '3.1', '3.0', '2.7', '2.6']
16
16
  steps:
17
- - uses: actions/checkout@v3
18
- - name: Run PostgreSQL 11
17
+ - uses: actions/checkout@v4
18
+ - name: Run PostgreSQL 12
19
19
  run: |
20
20
  docker run --env POSTGRES_USER=postgres \
21
21
  --env POSTGRES_DB=ruby-pg-extras-test \
22
22
  --env POSTGRES_PASSWORD=secret \
23
- -d -p 5432:5432 postgres:11.18-alpine \
23
+ -d -p 5432:5432 postgres:12.20-alpine \
24
24
  postgres -c shared_preload_libraries=pg_stat_statements
25
- - name: Run PostgreSQL 12
25
+ - name: Run PostgreSQL 13
26
26
  run: |
27
27
  docker run --env POSTGRES_USER=postgres \
28
28
  --env POSTGRES_DB=ruby-pg-extras-test \
29
29
  --env POSTGRES_PASSWORD=secret \
30
- -d -p 5433:5432 postgres:12.13-alpine \
30
+ -d -p 5433:5432 postgres:13.16-alpine \
31
31
  postgres -c shared_preload_libraries=pg_stat_statements
32
- - name: Run PostgreSQL 13
32
+ - name: Run PostgreSQL 14
33
33
  run: |
34
34
  docker run --env POSTGRES_USER=postgres \
35
35
  --env POSTGRES_DB=ruby-pg-extras-test \
36
36
  --env POSTGRES_PASSWORD=secret \
37
- -d -p 5434:5432 postgres:13.9-alpine \
37
+ -d -p 5434:5432 postgres:14.13-alpine \
38
38
  postgres -c shared_preload_libraries=pg_stat_statements
39
- - name: Run PostgreSQL 14
39
+ - name: Run PostgreSQL 15
40
40
  run: |
41
41
  docker run --env POSTGRES_USER=postgres \
42
42
  --env POSTGRES_DB=ruby-pg-extras-test \
43
43
  --env POSTGRES_PASSWORD=secret \
44
- -d -p 5435:5432 postgres:14.6-alpine \
44
+ -d -p 5435:5432 postgres:15.8-alpine \
45
45
  postgres -c shared_preload_libraries=pg_stat_statements
46
- - name: Run PostgreSQL 15
46
+ - name: Run PostgreSQL 16
47
+ run: |
48
+ docker run --env POSTGRES_USER=postgres \
49
+ --env POSTGRES_DB=ruby-pg-extras-test \
50
+ --env POSTGRES_PASSWORD=secret \
51
+ -d -p 5436:5432 postgres:16.4-alpine \
52
+ postgres -c shared_preload_libraries=pg_stat_statements
53
+ - name: Run PostgreSQL 17
47
54
  run: |
48
55
  docker run --env POSTGRES_USER=postgres \
49
56
  --env POSTGRES_DB=ruby-pg-extras-test \
50
57
  --env POSTGRES_PASSWORD=secret \
51
- -d -p 5436:5432 postgres:15.1-alpine \
58
+ -d -p 5437:5432 postgres:17.0-alpine \
52
59
  postgres -c shared_preload_libraries=pg_stat_statements
53
- sleep 15
60
+ sleep 5
54
61
  - name: Set up Ruby ${{ matrix.ruby-version }}
55
62
  uses: ruby/setup-ruby@v1
56
63
  with:
@@ -63,65 +70,35 @@ jobs:
63
70
  sudo apt install libpq-dev
64
71
  bundle config set --local path 'vendor/bundle'
65
72
  bundle install
66
- sleep 10
67
- - name: Run tests for PG 11
68
- env:
69
- PG_VERSION: 11
70
- POSTGRES_HOST: localhost
71
- POSTGRES_USER: postgres
72
- POSTGRES_DB: ruby-pg-extras-test
73
- POSTGRES_PASSWORD: secret
74
- DATABASE_URL: postgresql://postgres:secret@localhost:5432/ruby-pg-extras-test
75
- run: |
76
- bundle exec rspec spec/
77
- - name: Run tests for PG 11
78
- env:
79
- PG_VERSION: 11
80
- POSTGRES_HOST: localhost
81
- POSTGRES_USER: postgres
82
- POSTGRES_DB: ruby-pg-extras-test
83
- POSTGRES_PASSWORD: secret
84
- DATABASE_URL: postgresql://postgres:secret@localhost:5432/ruby-pg-extras-test
85
- run: |
86
- bundle exec rspec spec/
73
+ sleep 5
87
74
  - name: Run tests for PG 12
88
75
  env:
89
76
  PG_VERSION: 12
90
- POSTGRES_HOST: localhost
91
- POSTGRES_USER: postgres
92
- POSTGRES_DB: ruby-pg-extras-test
93
- POSTGRES_PASSWORD: secret
94
- DATABASE_URL: postgresql://postgres:secret@localhost:5433/ruby-pg-extras-test
95
77
  run: |
96
78
  bundle exec rspec spec/
97
79
  - name: Run tests for PG 13
98
80
  env:
99
81
  PG_VERSION: 13
100
- POSTGRES_HOST: localhost
101
- POSTGRES_USER: postgres
102
- POSTGRES_DB: ruby-pg-extras-test
103
- POSTGRES_PASSWORD: secret
104
- DATABASE_URL: postgresql://postgres:secret@localhost:5434/ruby-pg-extras-test
105
82
  run: |
106
83
  bundle exec rspec spec/
107
84
  - name: Run tests for PG 14
108
85
  env:
109
86
  PG_VERSION: 14
110
- POSTGRES_HOST: localhost
111
- POSTGRES_USER: postgres
112
- POSTGRES_DB: ruby-pg-extras-test
113
- POSTGRES_PASSWORD: secret
114
- DATABASE_URL: postgresql://postgres:secret@localhost:5435/ruby-pg-extras-test
115
87
  run: |
116
88
  bundle exec rspec spec/
117
89
  - name: Run tests for PG 15
118
90
  env:
119
91
  PG_VERSION: 15
120
- POSTGRES_HOST: localhost
121
- POSTGRES_USER: postgres
122
- POSTGRES_DB: ruby-pg-extras-test
123
- POSTGRES_PASSWORD: secret
124
- DATABASE_URL: postgresql://postgres:secret@localhost:5436/ruby-pg-extras-test
92
+ run: |
93
+ bundle exec rspec spec/
94
+ - name: Run tests for PG 16
95
+ env:
96
+ PG_VERSION: 16
97
+ run: |
98
+ bundle exec rspec spec/
99
+ - name: Run tests for PG 17
100
+ env:
101
+ PG_VERSION: 17
125
102
  run: |
126
103
  bundle exec rspec spec/
127
104
 
data/Rakefile CHANGED
@@ -5,5 +5,5 @@ RSpec::Core::RakeTask.new(:spec)
5
5
 
6
6
  desc "Test all PG versions"
7
7
  task :test_all do
8
- system("PG_VERSION=11 bundle exec rspec spec/ && PG_VERSION=12 bundle exec rspec spec/ && PG_VERSION=13 bundle exec rspec spec/ && PG_VERSION=14 bundle exec rspec spec/")
8
+ system("PG_VERSION=12 bundle exec rspec spec/ && PG_VERSION=13 bundle exec rspec spec/ && PG_VERSION=14 bundle exec rspec spec/ && PG_VERSION=15 bundle exec rspec spec/ && PG_VERSION=16 bundle exec rspec spec/ && PG_VERSION=17 bundle exec rspec spec/")
9
9
  end
@@ -1,8 +1,6 @@
1
- version: '3'
2
-
3
1
  services:
4
- postgres11:
5
- image: postgres:11.16-alpine
2
+ postgres12:
3
+ image: postgres:12.20-alpine
6
4
  command: postgres -c shared_preload_libraries=pg_stat_statements
7
5
  environment:
8
6
  POSTGRES_USER: postgres
@@ -10,8 +8,8 @@ services:
10
8
  POSTGRES_PASSWORD: secret
11
9
  ports:
12
10
  - '5432:5432'
13
- postgres12:
14
- image: postgres:12.11-alpine
11
+ postgres13:
12
+ image: postgres:13.16-alpine
15
13
  command: postgres -c shared_preload_libraries=pg_stat_statements
16
14
  environment:
17
15
  POSTGRES_USER: postgres
@@ -19,8 +17,8 @@ services:
19
17
  POSTGRES_PASSWORD: secret
20
18
  ports:
21
19
  - '5433:5432'
22
- postgres13:
23
- image: postgres:13.7-alpine
20
+ postgres14:
21
+ image: postgres:14.13-alpine
24
22
  command: postgres -c shared_preload_libraries=pg_stat_statements
25
23
  environment:
26
24
  POSTGRES_USER: postgres
@@ -28,8 +26,8 @@ services:
28
26
  POSTGRES_PASSWORD: secret
29
27
  ports:
30
28
  - '5434:5432'
31
- postgres14:
32
- image: postgres:14.3-alpine
29
+ postgres15:
30
+ image: postgres:15.8-alpine
33
31
  command: postgres -c shared_preload_libraries=pg_stat_statements
34
32
  environment:
35
33
  POSTGRES_USER: postgres
@@ -37,3 +35,22 @@ services:
37
35
  POSTGRES_PASSWORD: secret
38
36
  ports:
39
37
  - '5435:5432'
38
+ postgres16:
39
+ image: postgres:16.4-alpine
40
+ command: postgres -c shared_preload_libraries=pg_stat_statements
41
+ environment:
42
+ POSTGRES_USER: postgres
43
+ POSTGRES_DB: ruby-pg-extras-test
44
+ POSTGRES_PASSWORD: secret
45
+ ports:
46
+ - '5436:5432'
47
+ postgres17:
48
+ image: postgres:17.0-alpine
49
+ command: postgres -c shared_preload_libraries=pg_stat_statements
50
+ environment:
51
+ POSTGRES_USER: postgres
52
+ POSTGRES_DB: ruby-pg-extras-test
53
+ POSTGRES_PASSWORD: secret
54
+ ports:
55
+ - '5437:5432'
56
+
@@ -14,6 +14,7 @@ require "ruby_pg_extras/table_info_print"
14
14
  module RubyPgExtras
15
15
  @@database_url = nil
16
16
  NEW_PG_STAT_STATEMENTS = "1.8"
17
+ PG_STAT_STATEMENTS_17 = "1.11"
17
18
 
18
19
  QUERIES = %i(
19
20
  add_extensions bloat blocking cache_hit db_settings
@@ -32,11 +33,13 @@ module RubyPgExtras
32
33
  DEFAULT_ARGS = Hash.new({}).merge({
33
34
  calls: { limit: 10 },
34
35
  calls_legacy: { limit: 10 },
36
+ calls_17: { limit: 10 },
35
37
  long_running_queries: { threshold: "500 milliseconds" },
36
38
  locks: { limit: 20 },
37
39
  blocking: { limit: 20 },
38
40
  outliers: { limit: 10 },
39
41
  outliers_legacy: { limit: 10 },
42
+ outliers_17: { limit: 10 },
40
43
  buffercache_stats: { limit: 10 },
41
44
  buffercache_usage: { limit: 20 },
42
45
  unused_indexes: { max_scans: 50, schema: DEFAULT_SCHEMA },
@@ -70,6 +73,8 @@ module RubyPgExtras
70
73
  if pg_stat_statements_ver != nil
71
74
  if Gem::Version.new(pg_stat_statements_ver) < Gem::Version.new(NEW_PG_STAT_STATEMENTS)
72
75
  query_name = "#{query_name}_legacy".to_sym
76
+ elsif Gem::Version.new(pg_stat_statements_ver) >= Gem::Version.new(PG_STAT_STATEMENTS_17)
77
+ query_name = "#{query_name}_17".to_sym
73
78
  end
74
79
  end
75
80
  end
@@ -0,0 +1,9 @@
1
+ /* Queries that have highest frequency of execution */
2
+
3
+ SELECT query AS qry,
4
+ interval '1 millisecond' * total_exec_time AS exec_time,
5
+ to_char((total_exec_time/sum(total_exec_time) OVER()) * 100, 'FM90D0') || '%%' AS prop_exec_time,
6
+ to_char(calls, 'FM999G999G990') AS ncalls,
7
+ interval '1 millisecond' * (shared_blk_read_time + shared_blk_write_time) AS sync_io_time
8
+ FROM pg_stat_statements WHERE userid = (SELECT usesysid FROM pg_user WHERE usename = current_user LIMIT 1)
9
+ ORDER BY calls DESC LIMIT %{limit};
@@ -0,0 +1,10 @@
1
+ /* Queries that have longest execution time in aggregate */
2
+
3
+ SELECT interval '1 millisecond' * total_exec_time AS total_exec_time,
4
+ to_char((total_exec_time/sum(total_exec_time) OVER()) * 100, 'FM90D0') || '%%' AS prop_exec_time,
5
+ to_char(calls, 'FM999G999G999G990') AS ncalls,
6
+ interval '1 millisecond' * (shared_blk_read_time + shared_blk_write_time) AS sync_io_time,
7
+ query AS query
8
+ FROM pg_stat_statements WHERE userid = (SELECT usesysid FROM pg_user WHERE usename = current_user LIMIT 1)
9
+ ORDER BY total_exec_time DESC
10
+ LIMIT %{limit};
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyPgExtras
4
- VERSION = "5.4.0"
4
+ VERSION = "5.4.2"
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -6,14 +6,18 @@ require_relative "../lib/ruby-pg-extras"
6
6
 
7
7
  pg_version = ENV["PG_VERSION"]
8
8
 
9
- port = if pg_version == "11"
9
+ port = if pg_version == "12"
10
10
  "5432"
11
- elsif pg_version == "12"
12
- "5433"
13
11
  elsif pg_version == "13"
14
- "5434"
12
+ "5433"
15
13
  elsif pg_version == "14"
14
+ "5434"
15
+ elsif pg_version == "15"
16
16
  "5435"
17
+ elsif pg_version == "16"
18
+ "5436"
19
+ elsif pg_version == "17"
20
+ "5437"
17
21
  else
18
22
  "5432"
19
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-pg-extras
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.4.0
4
+ version: 5.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - pawurb
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-19 00:00:00.000000000 Z
11
+ date: 2024-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -109,6 +109,7 @@ files:
109
109
  - lib/ruby_pg_extras/queries/buffercache_usage.sql
110
110
  - lib/ruby_pg_extras/queries/cache_hit.sql
111
111
  - lib/ruby_pg_extras/queries/calls.sql
112
+ - lib/ruby_pg_extras/queries/calls_17.sql
112
113
  - lib/ruby_pg_extras/queries/calls_legacy.sql
113
114
  - lib/ruby_pg_extras/queries/connections.sql
114
115
  - lib/ruby_pg_extras/queries/db_settings.sql
@@ -126,6 +127,7 @@ files:
126
127
  - lib/ruby_pg_extras/queries/mandelbrot.sql
127
128
  - lib/ruby_pg_extras/queries/null_indexes.sql
128
129
  - lib/ruby_pg_extras/queries/outliers.sql
130
+ - lib/ruby_pg_extras/queries/outliers_17.sql
129
131
  - lib/ruby_pg_extras/queries/outliers_legacy.sql
130
132
  - lib/ruby_pg_extras/queries/pg_stat_statements_reset.sql
131
133
  - lib/ruby_pg_extras/queries/records_rank.sql