pg-logical_replication 1.0.0 → 1.1.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
- SHA1:
3
- metadata.gz: 995a68b802609a1681e2329f88b1dc0e1cea9148
4
- data.tar.gz: cb8c1d5435ca90c6c50a30d09a4afcc141f07d3a
2
+ SHA256:
3
+ metadata.gz: e75500586b542cd04f68c0dbb33f8196ac3eb142eed9c4ce91a4629634620d8c
4
+ data.tar.gz: 29f7f99ce968ffb4365a1a062d4d976c23f0291a374cd0e9ac80531150951c64
5
5
  SHA512:
6
- metadata.gz: d2f847732697fd297746cc19fa10a2733de22a020be2b165eacaa258c30cfaa39857ca0a0467860e77ee4f672ea4599b3508aa5883f22c4704ee417371171efb
7
- data.tar.gz: 52c714f97cd3ccb81be3a6725fa52a49229b8ef43e96ff21691519fb27f9e41904603d8bba7005df6bb933b945d9230f5136d9c90cc7d1ccfaef29d44e34e25f
6
+ metadata.gz: 678bc7a4e39cf77600e04571a32a36c0f252da079dc68bcaae928b0cb589387da049d22b31384f110e6a713e90e53a91ba034224959aeabdcc1c1eff45db6eab
7
+ data.tar.gz: 67065974b3328afd258ca3cd82415470a91f1320e92f2e18657f8ac77ab56e095c2f63d8e1f9b81570f43f2170e0b403820f7ddad1fc742bf41487f00104c452
data/.codeclimate.yml CHANGED
@@ -1,4 +1,3 @@
1
- ---
2
1
  version: '2'
3
2
  checks:
4
3
  argument-count:
@@ -20,11 +19,16 @@ checks:
20
19
  enabled: false
21
20
  prepare:
22
21
  fetch:
23
- - url: https://raw.githubusercontent.com/ManageIQ/guides/master/.rubocop_base.yml
22
+ - url: https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/.rubocop_base.yml
24
23
  path: ".rubocop_base.yml"
25
- - url: https://raw.githubusercontent.com/ManageIQ/guides/master/.rubocop_cc_base.yml
24
+ - url: https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/.rubocop_cc_base.yml
26
25
  path: ".rubocop_cc_base.yml"
26
+ - url: https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/styles/base.yml
27
+ path: styles/base.yml
28
+ - url: https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/styles/cc_base.yml
29
+ path: styles/cc_base.yml
27
30
  plugins:
28
31
  rubocop:
29
32
  enabled: true
30
33
  config: ".rubocop_cc.yml"
34
+ channel: rubocop-0-82
data/.rubocop.yml CHANGED
@@ -1,3 +1,4 @@
1
1
  inherit_from:
2
- - https://raw.githubusercontent.com/ManageIQ/guides/master/.rubocop_base.yml
3
- - .rubocop_local.yml
2
+ - ".rubocop_local.yml"
3
+ inherit_gem:
4
+ manageiq-style: ".rubocop_base.yml"
data/.rubocop_cc.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  inherit_from:
2
- - .rubocop_base.yml
3
- - .rubocop_cc_base.yml
4
- - .rubocop_local.yml
2
+ - ".rubocop_base.yml"
3
+ - ".rubocop_cc_base.yml"
4
+ - ".rubocop_local.yml"
data/.travis.yml CHANGED
@@ -1,10 +1,10 @@
1
1
  ---
2
- dist: xenial
3
2
  language: ruby
4
3
  cache: bundler
5
4
  rvm:
6
- - 2.4.5
7
- - 2.5.3
5
+ - 3.0.1
6
+ - 2.7.3
7
+ - 2.6.7
8
8
  before_install:
9
9
  - 'echo ''gem: --no-ri --no-rdoc --no-document'' > ~/.gemrc'
10
10
  - gem install bundler
data/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project adheres to [Semantic Versioning](https://semver.org/).
5
5
 
6
+ ## [Unreleased]
7
+
8
+ ## [1.1.0] - 2021-06-29
9
+ ### Added
10
+ - Support providing the db name to the subscriber? method [[#7](https://github.com/ManageIQ/pg-logical_replication/pull/7)]
11
+ - Add create replication slot [[#8](https://github.com/ManageIQ/pg-logical_replication/pull/8)]
12
+
13
+ ### Changed
14
+ - Cache type maps for queries/results [[#6](https://github.com/ManageIQ/pg-logical_replication/pull/6)]
15
+
6
16
  ## [1.0.0] - 2019-05-08
7
17
 
8
- [Unreleased]: https://github.com/ManageIQ/pg-logical_replication/compare/v1.0.0...master
18
+ [Unreleased]: https://github.com/ManageIQ/pg-logical_replication/compare/v1.1.0...master
19
+ [1.1.0]: https://github.com/ManageIQ/pg-logical_replication/compare/v1.0.0...v1.1.0
20
+ [1.0.0]: https://github.com/ManageIQ/pg-logical_replication/tree/v1.0.0
data/CODEOWNERS ADDED
@@ -0,0 +1,2 @@
1
+ * @jrafanie
2
+ * @Fryguy
@@ -6,6 +6,14 @@ module PG
6
6
  attr_reader :connection
7
7
  attr_reader :command_builder
8
8
 
9
+ def self.type_map_for_queries(connection)
10
+ @type_map_for_queries ||= PG::BasicTypeMapForQueries.new(connection)
11
+ end
12
+
13
+ def self.type_map_for_results(connection)
14
+ @type_map_for_results ||= PG::BasicTypeMapForResults.new(connection)
15
+ end
16
+
9
17
  # @param connection [PG::Connection] Database Connection
10
18
  def initialize(connection)
11
19
  @connection = connection
@@ -68,6 +76,20 @@ module PG
68
76
  typed_exec("DROP SUBSCRIPTION#{" IF EXISTS" if ifexists} #{connection.quote_ident(name)}")
69
77
  end
70
78
 
79
+ # Creates a logical replication slot
80
+ #
81
+ # @param name [String] logical replication slot name
82
+ def create_logical_replication_slot(name)
83
+ typed_exec("SELECT pg_create_logical_replication_slot(#{connection.escape_literal(name)}, 'pgoutput')")
84
+ end
85
+
86
+ # Drops the physical or logical replication slot. Note, you must be on the same database a logical slot was created.
87
+ #
88
+ # @param name [String] replication slot name
89
+ def drop_replication_slot(name)
90
+ typed_exec("SELECT pg_drop_replication_slot(#{connection.escape_literal(name)})")
91
+ end
92
+
71
93
  # Updates a subscription connection string
72
94
  #
73
95
  # @param name [String] subscription name
@@ -195,8 +217,24 @@ module PG
195
217
  # Returns if this database is subscribing to any publications
196
218
  #
197
219
  # @return [Boolean] true if there are any subscriptions, false otherwise
198
- def subscriber?
199
- subscriptions.any?
220
+ def subscriber?(dbname = nil)
221
+ subscriptions(dbname).any?
222
+ end
223
+
224
+ # Lists the current replication slots
225
+ #
226
+ # @return [Array<String>] replication slots
227
+ def replication_slots
228
+ typed_exec(<<-SQL)
229
+ SELECT
230
+ slot_name::TEXT,
231
+ plugin::TEXT,
232
+ slot_type::TEXT,
233
+ database::TEXT,
234
+ temporary,
235
+ active
236
+ FROM pg_replication_slots
237
+ SQL
200
238
  end
201
239
 
202
240
  # Lists the current publications
@@ -313,8 +351,8 @@ module PG
313
351
  end
314
352
 
315
353
  def typed_exec(sql, *params)
316
- result = connection.async_exec(sql, params, nil, PG::BasicTypeMapForQueries.new(connection))
317
- result.map_types!(PG::BasicTypeMapForResults.new(connection))
354
+ result = connection.async_exec(sql, params, nil, self.class.type_map_for_queries(connection))
355
+ result.map_types!(self.class.type_map_for_results(connection))
318
356
  end
319
357
  end
320
358
  end
@@ -1,5 +1,5 @@
1
1
  module PG
2
2
  module LogicalReplication
3
- VERSION = "1.0.0".freeze
3
+ VERSION = "1.1.0".freeze
4
4
  end
5
5
  end
@@ -23,8 +23,8 @@ This gem provides a class with methods which map directly to the PostgreSQL DSL
23
23
 
24
24
  spec.add_dependency "pg"
25
25
 
26
- spec.add_development_dependency "rake", "~> 10.0"
27
- spec.add_development_dependency "rspec", "~> 3.0"
28
- spec.add_development_dependency "rubocop", "~> 0.52"
26
+ spec.add_development_dependency "manageiq-style"
27
+ spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "rspec", "~> 3.0"
29
29
  spec.add_development_dependency "simplecov"
30
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg-logical_replication
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Carboni
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-08 00:00:00.000000000 Z
11
+ date: 2021-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -25,47 +25,47 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: manageiq-style
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '10.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '10.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rubocop
56
+ name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.52'
61
+ version: '3.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.52'
68
+ version: '3.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -83,7 +83,7 @@ dependencies:
83
83
  description: 'This gem provides a class with methods which map directly to the PostgreSQL
84
84
  DSL for logical replication configuration
85
85
 
86
- '
86
+ '
87
87
  email:
88
88
  - ncarboni@redhat.com
89
89
  executables: []
@@ -98,6 +98,7 @@ files:
98
98
  - ".rubocop_local.yml"
99
99
  - ".travis.yml"
100
100
  - CHANGELOG.md
101
+ - CODEOWNERS
101
102
  - Gemfile
102
103
  - LICENSE.txt
103
104
  - README.md
@@ -113,7 +114,7 @@ homepage: https://github.com/ManageIQ/pg-logical_replication
113
114
  licenses:
114
115
  - Apache-2.0
115
116
  metadata: {}
116
- post_install_message:
117
+ post_install_message:
117
118
  rdoc_options: []
118
119
  require_paths:
119
120
  - lib
@@ -128,9 +129,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
129
  - !ruby/object:Gem::Version
129
130
  version: '0'
130
131
  requirements: []
131
- rubyforge_project:
132
- rubygems_version: 2.6.14
133
- signing_key:
132
+ rubygems_version: 3.1.4
133
+ signing_key:
134
134
  specification_version: 4
135
135
  summary: A ruby gem for configuring and using postgresql logical replication
136
136
  test_files: []