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 +4 -4
- data/.rubocop.yml +1 -1
- data/.rubocop_todo.yml +3 -3
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/README.md +10 -0
- data/lib/pg_online_schema_change/orchestrate.rb +3 -0
- data/lib/pg_online_schema_change/query.rb +22 -0
- data/lib/pg_online_schema_change/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70f01145ab63bcb06e4aea9e79b8dc5ac1bf5cc37749964589d2dc940214d8c4
|
4
|
+
data.tar.gz: 52f2b7e5fe1b793f1f8a414972d282a41661eb0045b65d095b65b4c9ab2d6a2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4d0c36d71d4aa8020063c63bba2358ffd2d088ad9da21ce3419a8916acbd74c80dfefd5a134423e708ef6b72f444dcbf0ebfd6ba4ff26956d562c258a94fbcc
|
7
|
+
data.tar.gz: c73369d1a69a0824474d5a930411b2f2eee0e7ac61986fb7b8df47d84e010da2cb35fec6e054e5e8986e6877f1992f256b420404a41f1cdd85620f8f1b9a3bb1
|
data/.rubocop.yml
CHANGED
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-
|
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:
|
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:
|
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
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
|
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.
|
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-
|
11
|
+
date: 2022-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ougai
|