pg_online_schema_change 0.7.2 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d9b2ebcfd1944ac2ddba65466ca474751637d6fdb2db7abcf3a5d587e716c617
4
- data.tar.gz: 3a6ac8b49967e9483f75359006097865de640c3ce414dad5bd0e07e766d4a3c3
3
+ metadata.gz: 70f01145ab63bcb06e4aea9e79b8dc5ac1bf5cc37749964589d2dc940214d8c4
4
+ data.tar.gz: 52f2b7e5fe1b793f1f8a414972d282a41661eb0045b65d095b65b4c9ab2d6a2a
5
5
  SHA512:
6
- metadata.gz: a0a7d0bf9bf030859d6b7cb36b1d69770d3af9c7721c5e5042732887959bc1664e1c8bd4f09f076cdafcb1b272a57f49ddf1fbb5d86aad60a4b0b81d79378804
7
- data.tar.gz: bb12999f436c8d93591c17b97f5f508d7234355ef25780834565a8222da4c43dd3dfd52450210007bc3f0a32cd0231958a3e7645af538d1af67cc3e620582f14
6
+ metadata.gz: d4d0c36d71d4aa8020063c63bba2358ffd2d088ad9da21ce3419a8916acbd74c80dfefd5a134423e708ef6b72f444dcbf0ebfd6ba4ff26956d562c258a94fbcc
7
+ data.tar.gz: c73369d1a69a0824474d5a930411b2f2eee0e7ac61986fb7b8df47d84e010da2cb35fec6e054e5e8986e6877f1992f256b420404a41f1cdd85620f8f1b9a3bb1
data/.rubocop.yml CHANGED
@@ -24,7 +24,7 @@ Layout/SpaceAroundEqualsInParameterDefault:
24
24
 
25
25
  Metrics/AbcSize:
26
26
  Enabled: true
27
- Max: 40
27
+ Max: 45
28
28
  Exclude:
29
29
  - "spec/**/*"
30
30
 
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2022-03-13 19:35:49 UTC using RuboCop version 1.23.0.
3
+ # on 2022-09-24 14:22:44 UTC using RuboCop version 1.23.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -9,7 +9,7 @@
9
9
  # Offense count: 2
10
10
  # Configuration parameters: CountComments, CountAsOne.
11
11
  Metrics/ClassLength:
12
- Max: 250
12
+ Max: 266
13
13
 
14
14
  # Offense count: 2
15
15
  # Configuration parameters: IgnoredMethods.
@@ -26,7 +26,7 @@ Packaging/GemspecGit:
26
26
  Exclude:
27
27
  - 'pg_online_schema_change.gemspec'
28
28
 
29
- # Offense count: 67
29
+ # Offense count: 68
30
30
  # Configuration parameters: CountAsOne.
31
31
  RSpec/ExampleLength:
32
32
  Max: 55
data/CHANGELOG.md CHANGED
@@ -1,4 +1,8 @@
1
1
 
2
+ ## [0.7.2] - 2022-09-17
3
+ * Update primary key sequence on shadow table https://github.com/shayonj/pg-osc/pull/72
4
+ - Thanks to @brycethornton for the report
5
+
2
6
  ## [0.7.1] - 2022-03-13
3
7
  * Bump pg to `1.3.4` https://github.com/shayonj/pg-osc/commit/d086c19d4f273dc960491cbedf9e0602d812896b
4
8
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pg_online_schema_change (0.7.2)
4
+ pg_online_schema_change (0.7.3)
5
5
  ougai (~> 2.0.0)
6
6
  pg (~> 1.3.2)
7
7
  pg_query (~> 2.1.3)
data/README.md CHANGED
@@ -260,6 +260,16 @@ rvm use 3.0.0
260
260
 
261
261
  To install this gem onto your local machine, run `bundle exec rake install`.
262
262
 
263
+ ### Local testing
264
+ ```
265
+ docker compose up
266
+
267
+ pgbench --initialize -s 10 --foreign-keys --host localhost -U jamesbond -d postgres
268
+ pgbench -T 60000 -c 5 --host localhost -U jamesbond -d postgres
269
+
270
+ bundle exec bin/pg-online-schema-change perform -a 'ALTER TABLE pgbench_accounts ALTER COLUMN aid TYPE BIGINT' -d "postgres" -h "localhost" -u "jamesbond" -w "password"
271
+ ```
272
+
263
273
  ## Releasing
264
274
 
265
275
  - Bump version in `version.rb`
@@ -238,7 +238,10 @@ module PgOnlineSchemaChange
238
238
  rows = Replay.rows_to_play(opened)
239
239
  Replay.play!(rows, opened)
240
240
 
241
+ query_for_primary_key_refresh = Query.query_for_primary_key_refresh(shadow_table, primary_key, client.table, opened)
242
+
241
243
  sql = <<~SQL
244
+ #{query_for_primary_key_refresh};
242
245
  ALTER TABLE #{client.table} RENAME to #{old_primary_table};
243
246
  ALTER TABLE #{shadow_table} RENAME to #{client.table};
244
247
  #{referential_foreign_key_statements}
@@ -319,6 +319,28 @@ module PgOnlineSchemaChange
319
319
  FROM ONLY #{client.table}
320
320
  SQL
321
321
  end
322
+
323
+ def primary_key_sequence(shadow_table, primary_key, opened)
324
+ query = <<~SQL
325
+ SELECT pg_get_serial_sequence(\'#{shadow_table}\', \'#{primary_key}\') as sequence_name
326
+ SQL
327
+
328
+ result = run(client.connection, query, opened)
329
+
330
+ result.map do |row|
331
+ row["sequence_name"]
332
+ end&.first
333
+ end
334
+
335
+ def query_for_primary_key_refresh(shadow_table, primary_key, table, opened)
336
+ sequence_name = primary_key_sequence(shadow_table, primary_key, opened)
337
+
338
+ return "" if sequence_name.nil?
339
+
340
+ <<~SQL
341
+ SELECT setval((select pg_get_serial_sequence(\'#{shadow_table}\', \'#{primary_key}\')), (SELECT max(#{primary_key}) FROM #{table})+1);
342
+ SQL
343
+ end
322
344
  end
323
345
  end
324
346
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PgOnlineSchemaChange
4
- VERSION = "0.7.2"
4
+ VERSION = "0.7.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_online_schema_change
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shayon Mukherjee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-17 00:00:00.000000000 Z
11
+ date: 2022-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ougai