pgmove 0.1.1 → 0.1.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
  SHA1:
3
- metadata.gz: d4bdb34270ae8240009139e9b9055e2ce337a478
4
- data.tar.gz: a609d0f8e4bebe8b4ef7a6cd4f58274fad5e4de5
3
+ metadata.gz: 0058ca9cae26f102cb737c5bbddfa5fc1cd2303e
4
+ data.tar.gz: 4ee6d28a48f312ec2e8fb08b2361c274c79bbb8d
5
5
  SHA512:
6
- metadata.gz: dff8542bf01414b391894c9e48829010844ca753876f7070fc2a99797ea81546372cd7fcce60ff24fdbbddbebe38a1bd6578816781aaf41a3445b0fa23786978
7
- data.tar.gz: 51ca86ce8e726d30ee58440e9d7a6054c7bf4f298a1473f8110fc364cb09c10234deca6c3feab58469969d6626e9561e9ec86ec92db430967a1dc264d02d0bb7
6
+ metadata.gz: 6cab6cabfc2672a336aa23589a6b472b6db9373d8024bdad62ab9f951266cda728c459a4f85106a464cc7c7e8f7470b645bff170c0750232165aaaa45bc41115
7
+ data.tar.gz: eab66862325c672359c553fb3b28de88f98c6c8bad49c7d3a376b84ee3a895aa62e3cf80d17d16615fd6f1acc155f03c7051bef99dc884fac9640fbaccd31caf
@@ -74,8 +74,11 @@ module Pgmove
74
74
  end
75
75
 
76
76
  def finalize
77
- stop
78
- reset_src
77
+ @src_db.disable do |conn|
78
+ sleep 5
79
+ stop
80
+ remove_bucardo conn
81
+ end
79
82
  @dest_db.finalize
80
83
  end
81
84
 
@@ -100,9 +103,14 @@ module Pgmove
100
103
  end
101
104
 
102
105
  def reset_src
103
- system! %(psql "#{@src_db.conn_str}" -c 'DROP schema if exists bucardo cascade')
104
- system! %(psql "#{@src_db.conn_str}" -c 'DROP database IF EXISTS bucardo')
105
- system! %(psql "#{@src_db.conn_str}" -c 'drop role IF EXISTS bucardo')
106
+ @src_db.pg_conn { |conn| remove_bucardo conn }
107
+ end
108
+
109
+ def remove_bucardo(conn)
110
+ logger.bullet "removing bucardo"
111
+ conn.exec "DROP schema if exists bucardo cascade"
112
+ conn.exec "DROP database IF EXISTS bucardo"
113
+ conn.exec "drop role IF EXISTS bucardo"
106
114
  end
107
115
 
108
116
  def install
data/lib/pgmove/db.rb CHANGED
@@ -30,6 +30,29 @@ module Pgmove
30
30
  psql_raw "-f #{path}"
31
31
  end
32
32
 
33
+ def disable
34
+ new_name = "#{@name}_pgmove_disabled"
35
+ disable_sql = "update pg_database set datallowconn = false where datname = '#{@name}'"
36
+ stop_activity_sql = <<~SQL
37
+ select pg_terminate_backend(pid) from pg_stat_activity
38
+ where datname = '#{@name}'
39
+ AND COALESCE(application_name, '') NOT LIKE 'bucardo%'
40
+ AND COALESCE(application_name, '') NOT LIKE 'pgmove'
41
+ SQL
42
+ rename_sql = "ALTER DATABASE #{@name} RENAME to #{new_name}"
43
+ dbconn = pg_conn
44
+ pg_conn("postgres") do |conn|
45
+ logger.bullet "sql: #{disable_sql}"
46
+ conn.exec disable_sql
47
+ logger.bullet "sql: #{stop_activity_sql}"
48
+ conn.exec stop_activity_sql
49
+ yield dbconn
50
+ dbconn.close
51
+ logger.bullet "sql: #{rename_sql}"
52
+ conn.exec rename_sql
53
+ end
54
+ end
55
+
33
56
  def finalize
34
57
  psql "ALTER DATABASE #{@name} RENAME to #{@final_name}", db: "postgres"
35
58
  end
@@ -80,13 +103,15 @@ module Pgmove
80
103
  end
81
104
  end
82
105
 
83
- def pg_conn
106
+ def pg_conn(db = nil)
107
+ db ||= @name
84
108
  conn = PG::Connection.open(
85
- :dbname => @name,
86
- :user => @user,
87
- :password => @pass,
88
- :host => @host,
89
- :port => @port
109
+ dbname: db,
110
+ user: @user,
111
+ password: @pass,
112
+ host: @host,
113
+ port: @port,
114
+ application_name: "pgmove"
90
115
  )
91
116
  if block_given?
92
117
  yield conn
@@ -1,3 +1,3 @@
1
1
  module Pgmove
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pgmove
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neeraj
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-23 00:00:00.000000000 Z
11
+ date: 2016-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg