activerecord-pg-extensions 0.6.0 → 0.7.1
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d50633abe33747fede3503dad765972ffd7abd47f6aa3da2e955981820aff2ee
|
|
4
|
+
data.tar.gz: ea51e816b3bb0c969e5ee2a6626206e9bd8b429ad4589caac620eaa3ca7d31b6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fa97981e3721d0cc3d90697254cf89cd21666976ddeacc2e774112d3d02d0f74eaaf30fef33532965b2d8243e6f2ca2806f548d404987677cd02ba7192dbcb9f
|
|
7
|
+
data.tar.gz: 93243bece3aceba1d70646dc7a34b5b8902d6673029b31788aee0beb836b00573cc50c142501ccd4842097276ddfb217eea3ce0d9209ea4eedc48cbecba73654
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ActiveRecord
|
|
4
|
+
module PGExtensions
|
|
5
|
+
# adds support for reverting migration methods added by this gem
|
|
6
|
+
module CommandRecorder
|
|
7
|
+
def rename_constraint(table_name, old_name, new_name, **options)
|
|
8
|
+
record(:rename_constraint, [table_name, old_name, new_name, options])
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def invert_rename_constraint(args)
|
|
12
|
+
table_name, old_name, new_name, options = args
|
|
13
|
+
options ||= {}
|
|
14
|
+
# flag the trailing hash as keyword arguments so it's replayed as
|
|
15
|
+
# `rename_constraint(..., if_exists:)` rather than a positional hash
|
|
16
|
+
[:rename_constraint, [table_name, new_name, old_name, Hash.ruby2_keywords_hash(options)]]
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -27,6 +27,17 @@ module ActiveRecord
|
|
|
27
27
|
set_constraints(:immediate, *constraints)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
+
# renames a constraint on a table
|
|
31
|
+
# see https://www.postgresql.org/docs/current/sql-altertable.html
|
|
32
|
+
def rename_constraint(table_name, old_name, new_name, if_exists: false)
|
|
33
|
+
return if if_exists && !constraint_exists?(table_name, name: old_name)
|
|
34
|
+
|
|
35
|
+
execute(<<~SQL.squish)
|
|
36
|
+
ALTER TABLE #{quote_table_name(table_name)}
|
|
37
|
+
RENAME CONSTRAINT #{quote_column_name(old_name)} TO #{quote_column_name(new_name)}
|
|
38
|
+
SQL
|
|
39
|
+
end
|
|
40
|
+
|
|
30
41
|
# see https://www.postgresql.org/docs/current/sql-altertable.html#SQL-CREATETABLE-REPLICA-IDENTITY
|
|
31
42
|
def set_replica_identity(table, identity = :default)
|
|
32
43
|
identity_clause = case identity
|
|
@@ -57,7 +68,7 @@ module ActiveRecord
|
|
|
57
68
|
raise ArgumentError, "Cannot change schema and upgrade to a particular version in a single statement"
|
|
58
69
|
end
|
|
59
70
|
|
|
60
|
-
sql =
|
|
71
|
+
sql = "ALTER EXTENSION #{extension}"
|
|
61
72
|
sql << " UPDATE" if version
|
|
62
73
|
sql << " TO #{quote(version)}" if version && version != true
|
|
63
74
|
sql << " SET SCHEMA #{schema}" if schema
|
|
@@ -285,6 +296,19 @@ module ActiveRecord
|
|
|
285
296
|
super
|
|
286
297
|
end
|
|
287
298
|
|
|
299
|
+
def constraint_exists?(table_name, name:)
|
|
300
|
+
scope = quoted_scope(name)
|
|
301
|
+
table = quoted_scope(table_name)
|
|
302
|
+
select_value(<<~SQL, "SCHEMA") == 1
|
|
303
|
+
SELECT 1 FROM pg_constraint
|
|
304
|
+
INNER JOIN pg_class ON pg_class.oid = pg_constraint.conrelid
|
|
305
|
+
INNER JOIN pg_namespace ON pg_namespace.oid = pg_constraint.connamespace
|
|
306
|
+
WHERE pg_constraint.conname = #{scope[:name]}
|
|
307
|
+
AND pg_class.relname = #{table[:name]}
|
|
308
|
+
AND pg_namespace.nspname = #{scope[:schema]}
|
|
309
|
+
SQL
|
|
310
|
+
end
|
|
311
|
+
|
|
288
312
|
def pre_pg10_wal_function_name(func)
|
|
289
313
|
return func if postgresql_version >= 100_000
|
|
290
314
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "rails
|
|
3
|
+
require "rails"
|
|
4
4
|
|
|
5
5
|
module ActiveRecord
|
|
6
6
|
module PGExtensions
|
|
@@ -10,9 +10,11 @@ module ActiveRecord
|
|
|
10
10
|
ActiveSupport.on_load(:active_record) do
|
|
11
11
|
require "active_record/pg_extensions/errors"
|
|
12
12
|
require "active_record/pg_extensions/postgresql_adapter"
|
|
13
|
+
require "active_record/pg_extensions/command_recorder"
|
|
13
14
|
require "active_record/pg_extensions/transaction"
|
|
14
15
|
|
|
15
16
|
::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(PostgreSQLAdapter)
|
|
17
|
+
::ActiveRecord::Migration::CommandRecorder.include(CommandRecorder)
|
|
16
18
|
::ActiveRecord::ConnectionAdapters::NullTransaction.prepend(NullTransaction)
|
|
17
19
|
::ActiveRecord::ConnectionAdapters::Transaction.prepend(Transaction)
|
|
18
20
|
# if they've already require 'all', then inject now
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: activerecord-pg-extensions
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Cody Cutrer
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: activerecord
|
|
@@ -16,138 +15,40 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '7.
|
|
18
|
+
version: '7.2'
|
|
20
19
|
- - "<"
|
|
21
20
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '8.
|
|
21
|
+
version: '8.2'
|
|
23
22
|
type: :runtime
|
|
24
23
|
prerelease: false
|
|
25
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
25
|
requirements:
|
|
27
26
|
- - ">="
|
|
28
27
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: '7.
|
|
28
|
+
version: '7.2'
|
|
30
29
|
- - "<"
|
|
31
30
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '8.
|
|
31
|
+
version: '8.2'
|
|
33
32
|
- !ruby/object:Gem::Dependency
|
|
34
33
|
name: railties
|
|
35
34
|
requirement: !ruby/object:Gem::Requirement
|
|
36
35
|
requirements:
|
|
37
36
|
- - ">="
|
|
38
37
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '7.
|
|
38
|
+
version: '7.2'
|
|
40
39
|
- - "<"
|
|
41
40
|
- !ruby/object:Gem::Version
|
|
42
|
-
version: '8.
|
|
41
|
+
version: '8.2'
|
|
43
42
|
type: :runtime
|
|
44
43
|
prerelease: false
|
|
45
44
|
version_requirements: !ruby/object:Gem::Requirement
|
|
46
45
|
requirements:
|
|
47
46
|
- - ">="
|
|
48
47
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: '7.
|
|
48
|
+
version: '7.2'
|
|
50
49
|
- - "<"
|
|
51
50
|
- !ruby/object:Gem::Version
|
|
52
|
-
version: '8.
|
|
53
|
-
- !ruby/object:Gem::Dependency
|
|
54
|
-
name: debug
|
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
|
56
|
-
requirements:
|
|
57
|
-
- - "~>"
|
|
58
|
-
- !ruby/object:Gem::Version
|
|
59
|
-
version: '1.8'
|
|
60
|
-
type: :development
|
|
61
|
-
prerelease: false
|
|
62
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
63
|
-
requirements:
|
|
64
|
-
- - "~>"
|
|
65
|
-
- !ruby/object:Gem::Version
|
|
66
|
-
version: '1.8'
|
|
67
|
-
- !ruby/object:Gem::Dependency
|
|
68
|
-
name: pg
|
|
69
|
-
requirement: !ruby/object:Gem::Requirement
|
|
70
|
-
requirements:
|
|
71
|
-
- - "~>"
|
|
72
|
-
- !ruby/object:Gem::Version
|
|
73
|
-
version: '1.2'
|
|
74
|
-
type: :development
|
|
75
|
-
prerelease: false
|
|
76
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
77
|
-
requirements:
|
|
78
|
-
- - "~>"
|
|
79
|
-
- !ruby/object:Gem::Version
|
|
80
|
-
version: '1.2'
|
|
81
|
-
- !ruby/object:Gem::Dependency
|
|
82
|
-
name: rake
|
|
83
|
-
requirement: !ruby/object:Gem::Requirement
|
|
84
|
-
requirements:
|
|
85
|
-
- - "~>"
|
|
86
|
-
- !ruby/object:Gem::Version
|
|
87
|
-
version: '13.0'
|
|
88
|
-
type: :development
|
|
89
|
-
prerelease: false
|
|
90
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
91
|
-
requirements:
|
|
92
|
-
- - "~>"
|
|
93
|
-
- !ruby/object:Gem::Version
|
|
94
|
-
version: '13.0'
|
|
95
|
-
- !ruby/object:Gem::Dependency
|
|
96
|
-
name: rspec
|
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
|
98
|
-
requirements:
|
|
99
|
-
- - "~>"
|
|
100
|
-
- !ruby/object:Gem::Version
|
|
101
|
-
version: '3.0'
|
|
102
|
-
type: :development
|
|
103
|
-
prerelease: false
|
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
-
requirements:
|
|
106
|
-
- - "~>"
|
|
107
|
-
- !ruby/object:Gem::Version
|
|
108
|
-
version: '3.0'
|
|
109
|
-
- !ruby/object:Gem::Dependency
|
|
110
|
-
name: rubocop-inst
|
|
111
|
-
requirement: !ruby/object:Gem::Requirement
|
|
112
|
-
requirements:
|
|
113
|
-
- - "~>"
|
|
114
|
-
- !ruby/object:Gem::Version
|
|
115
|
-
version: '1'
|
|
116
|
-
type: :development
|
|
117
|
-
prerelease: false
|
|
118
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
119
|
-
requirements:
|
|
120
|
-
- - "~>"
|
|
121
|
-
- !ruby/object:Gem::Version
|
|
122
|
-
version: '1'
|
|
123
|
-
- !ruby/object:Gem::Dependency
|
|
124
|
-
name: rubocop-rake
|
|
125
|
-
requirement: !ruby/object:Gem::Requirement
|
|
126
|
-
requirements:
|
|
127
|
-
- - "~>"
|
|
128
|
-
- !ruby/object:Gem::Version
|
|
129
|
-
version: '0.5'
|
|
130
|
-
type: :development
|
|
131
|
-
prerelease: false
|
|
132
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
133
|
-
requirements:
|
|
134
|
-
- - "~>"
|
|
135
|
-
- !ruby/object:Gem::Version
|
|
136
|
-
version: '0.5'
|
|
137
|
-
- !ruby/object:Gem::Dependency
|
|
138
|
-
name: rubocop-rspec
|
|
139
|
-
requirement: !ruby/object:Gem::Requirement
|
|
140
|
-
requirements:
|
|
141
|
-
- - "~>"
|
|
142
|
-
- !ruby/object:Gem::Version
|
|
143
|
-
version: '2.3'
|
|
144
|
-
type: :development
|
|
145
|
-
prerelease: false
|
|
146
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
147
|
-
requirements:
|
|
148
|
-
- - "~>"
|
|
149
|
-
- !ruby/object:Gem::Version
|
|
150
|
-
version: '2.3'
|
|
51
|
+
version: '8.2'
|
|
151
52
|
description: Several extensions to ActiveRecord's PostgreSQLAdapter.
|
|
152
53
|
email:
|
|
153
54
|
- cody@instructure.com
|
|
@@ -160,6 +61,7 @@ files:
|
|
|
160
61
|
- README.md
|
|
161
62
|
- lib/active_record/pg_extensions.rb
|
|
162
63
|
- lib/active_record/pg_extensions/all.rb
|
|
64
|
+
- lib/active_record/pg_extensions/command_recorder.rb
|
|
163
65
|
- lib/active_record/pg_extensions/errors.rb
|
|
164
66
|
- lib/active_record/pg_extensions/extension.rb
|
|
165
67
|
- lib/active_record/pg_extensions/pessimistic_migrations.rb
|
|
@@ -174,7 +76,6 @@ licenses:
|
|
|
174
76
|
metadata:
|
|
175
77
|
changelog_uri: https://github.com/instructure/activerecord-pg-extensions/blob/main/CHANGELOG.md
|
|
176
78
|
rubygems_mfa_required: 'true'
|
|
177
|
-
post_install_message:
|
|
178
79
|
rdoc_options: []
|
|
179
80
|
require_paths:
|
|
180
81
|
- lib
|
|
@@ -182,15 +83,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
182
83
|
requirements:
|
|
183
84
|
- - ">="
|
|
184
85
|
- !ruby/object:Gem::Version
|
|
185
|
-
version: '
|
|
86
|
+
version: '3.3'
|
|
186
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
187
88
|
requirements:
|
|
188
89
|
- - ">="
|
|
189
90
|
- !ruby/object:Gem::Version
|
|
190
91
|
version: '0'
|
|
191
92
|
requirements: []
|
|
192
|
-
rubygems_version:
|
|
193
|
-
signing_key:
|
|
93
|
+
rubygems_version: 4.0.16
|
|
194
94
|
specification_version: 4
|
|
195
95
|
summary: Several extensions to ActiveRecord's PostgreSQLAdapter.
|
|
196
96
|
test_files: []
|