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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 15ef00bc464354f5067a8346303914924549a69127dd7d089511b432ceb61cb5
4
- data.tar.gz: f0714a56d3d31bdc90f6a8b24bd871b4ac2256dabe32be94191afb92e2034f74
3
+ metadata.gz: d009986ef367b868cc530dde2ba4984390fd9489fc61e39a0ea280494e57b327
4
+ data.tar.gz: bae12eef5b8477fd361ffb2167ffadd823f65f488fa15cf7828f216fa496a87e
5
5
  SHA512:
6
- metadata.gz: 186a1581c002df615bef9ddecf615140ee0cfe4abd328f7ea841b891d09ffbb3f08ae058eb534abcb4c7002fd2b903d082e4b1d5a577b4f9d615a3b8ee8bd35d
7
- data.tar.gz: efa556d86eea1b11834d8c19f3620abcc17d3567d3db0d9452d20c4cdd56ad59db13b38ecded753f86ca14f2d36fc95e7e2f67d43386246071ff3d65675bede0
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.4.4)
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.37)
117
+ yard (0.9.38)
118
118
 
119
119
  PLATFORMS
120
120
  arm64-darwin-22
@@ -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|$)/).map(&:first).uniq
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
- @stash[:queries]
307
- .map { |k, v| [k, v.values.sum { |vv| vv[:popularity] }, v.values.any? { |vv| vv[:stale] }] }
308
- .select { _1[2] }
309
- .sort_by { -_1[1] }
310
- .map { |a| a[0] }
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].each_key do |k|
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
@@ -11,5 +11,5 @@ require_relative '../pgtk'
11
11
  # License:: MIT
12
12
  module Pgtk
13
13
  # Current version of the library.
14
- VERSION = '0.28.1'
14
+ VERSION = '0.29.0'
15
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pgtk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.1
4
+ version: 0.29.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko