pgtk 0.28.1 → 0.29.0
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 +4 -4
- data/Gemfile.lock +2 -2
- data/lib/pgtk/liquibase_task.rb +21 -0
- data/lib/pgtk/stash.rb +10 -7
- data/lib/pgtk/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: d009986ef367b868cc530dde2ba4984390fd9489fc61e39a0ea280494e57b327
|
|
4
|
+
data.tar.gz: bae12eef5b8477fd361ffb2167ffadd823f65f488fa15cf7828f216fa496a87e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a28a8ba102a0f7b19341ac639c2860ae92048c672781e89ce195768f418fdfaf2fc4e2d56e723a270e1af954a8482a141acad4644290bd1e0677cc6d2829d0b0
|
|
7
|
+
data.tar.gz: 9a75b7c6631915d6e9e066da596ed630dd73ebb1df0ca343510adc3b7dbc749b70b1be42fa5d96227c8fdd0ca7397a826da4026526cb0ee9b1c7fa0923090141
|
data/Gemfile.lock
CHANGED
|
@@ -105,7 +105,7 @@ GEM
|
|
|
105
105
|
threads (0.5.0)
|
|
106
106
|
backtrace (~> 0)
|
|
107
107
|
concurrent-ruby (~> 1.0)
|
|
108
|
-
timeout (0.
|
|
108
|
+
timeout (0.5.0)
|
|
109
109
|
unicode-display_width (3.2.0)
|
|
110
110
|
unicode-emoji (~> 4.1)
|
|
111
111
|
unicode-emoji (4.1.0)
|
|
@@ -114,7 +114,7 @@ GEM
|
|
|
114
114
|
nokogiri (~> 1.10)
|
|
115
115
|
rainbow (~> 3.0)
|
|
116
116
|
slop (~> 4.4)
|
|
117
|
-
yard (0.9.
|
|
117
|
+
yard (0.9.38)
|
|
118
118
|
|
|
119
119
|
PLATFORMS
|
|
120
120
|
arm64-darwin-22
|
data/lib/pgtk/liquibase_task.rb
CHANGED
|
@@ -28,6 +28,10 @@ class Pgtk::LiquibaseTask < Rake::TaskLib
|
|
|
28
28
|
# @return [String, Array<String>]
|
|
29
29
|
attr_accessor :yaml
|
|
30
30
|
|
|
31
|
+
# Path to PG entire SQL schema file, which will be dumped and overwritten after all migrations
|
|
32
|
+
# @return [String]
|
|
33
|
+
attr_accessor :schema
|
|
34
|
+
|
|
31
35
|
# Whether to suppress output
|
|
32
36
|
# @return [Boolean]
|
|
33
37
|
attr_accessor :quiet
|
|
@@ -120,5 +124,22 @@ class Pgtk::LiquibaseTask < Rake::TaskLib
|
|
|
120
124
|
]
|
|
121
125
|
)
|
|
122
126
|
end
|
|
127
|
+
return unless @schema
|
|
128
|
+
@schema = File.expand_path(@schema)
|
|
129
|
+
Dir.chdir(File.dirname(@schema)) do
|
|
130
|
+
qbash(
|
|
131
|
+
[
|
|
132
|
+
'pg_dump',
|
|
133
|
+
"-h #{Shellwords.escape(yml.dig('pgsql', 'host'))}",
|
|
134
|
+
"-p #{Shellwords.escape(yml.dig('pgsql', 'port'))}",
|
|
135
|
+
"-U #{Shellwords.escape(yml.dig('pgsql', 'user'))}",
|
|
136
|
+
"-d #{Shellwords.escape(yml.dig('pgsql', 'dbname'))}",
|
|
137
|
+
'-n public',
|
|
138
|
+
'--schema-only',
|
|
139
|
+
"-f #{Shellwords.escape(@schema)}"
|
|
140
|
+
],
|
|
141
|
+
env: { 'PGPASSWORD' => Shellwords.escape(password) }
|
|
142
|
+
)
|
|
143
|
+
end
|
|
123
144
|
end
|
|
124
145
|
end
|
data/lib/pgtk/stash.rb
CHANGED
|
@@ -212,7 +212,7 @@ class Pgtk::Stash
|
|
|
212
212
|
if ret.nil? || @stash.dig(:queries, pure, key, :stale)
|
|
213
213
|
ret = @pool.exec(pure, params, result)
|
|
214
214
|
unless pure.include?(' NOW() ')
|
|
215
|
-
tables = pure.scan(/(?<=^|\s)(?:FROM|JOIN) ([a-z_]+)(?=\s
|
|
215
|
+
tables = pure.scan(/(?<=^|\s)(?:FROM|JOIN) ([a-z_]+)(?=\s|;|$)/).map(&:first).uniq
|
|
216
216
|
raise "No tables at #{pure.inspect}" if tables.empty?
|
|
217
217
|
@entrance.with_write_lock do
|
|
218
218
|
tables.each do |t|
|
|
@@ -303,13 +303,16 @@ class Pgtk::Stash
|
|
|
303
303
|
return unless @refill_interval
|
|
304
304
|
Concurrent::TimerTask.execute(execution_interval: @refill_interval, executor: @tpool) do
|
|
305
305
|
qq =
|
|
306
|
-
@
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
306
|
+
@entrance.with_write_lock do
|
|
307
|
+
@stash[:queries]
|
|
308
|
+
.map { |k, v| [k, v.values.sum { |vv| vv[:popularity] }, v.values.any? { |vv| vv[:stale] }] }
|
|
309
|
+
end
|
|
310
|
+
qq =
|
|
311
|
+
qq.select { _1[2] }
|
|
312
|
+
.sort_by { -_1[1] }
|
|
313
|
+
.map { _1[0] }
|
|
311
314
|
qq.each do |q|
|
|
312
|
-
@stash[:queries][q].
|
|
315
|
+
@entrance.with_write_lock { @stash[:queries][q].keys }.each do |k|
|
|
313
316
|
next unless @stash[:queries][q][k][:stale]
|
|
314
317
|
next if @stash[:queries][q][k][:stale] > Time.now - @refill_delay
|
|
315
318
|
next if @tpool.queue_length >= @max_queue_length
|
data/lib/pgtk/version.rb
CHANGED