pg_saurus 4.0.2 → 4.3.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 +4 -4
- data/lib/core_ext/active_record/connection_adapters/postgresql/schema_statements.rb +3 -2
- data/lib/pg_saurus/connection_adapters/postgresql_adapter/extension_methods.rb +1 -2
- data/lib/pg_saurus/connection_adapters/postgresql_adapter/function_methods.rb +3 -2
- data/lib/pg_saurus/connection_adapters/postgresql_adapter/trigger_methods.rb +2 -2
- data/lib/pg_saurus/engine.rb +10 -0
- data/lib/pg_saurus/schema_dumper/extension_methods.rb +2 -2
- data/lib/pg_saurus/version.rb +1 -1
- metadata +21 -10
- data/bin/rails +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0658a18dcaee8fd3acbe9334daf053e0a22568157b53d1b182add67970dd799
|
4
|
+
data.tar.gz: 87468b4dca614127ebdea002e67d92e610c3d0057ede82dc4d6a18dd90d60c18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9305018ca8cf965346683abcf7296a3459f2d81d9887829c75f3eb26aa3a0f5341af4c58b0c0459e9fb679481bf3c778f94ba981c8676d0c52dfe36d84f1802
|
7
|
+
data.tar.gz: 41a869cf2aa17cde12b29f684ec39c9d89862c11c9dd1f909d39cbaa3ae29163f634d1ec5070d27c60bb7cc4281ba0e1b30da8bffb81b09538a847260d2463a2
|
@@ -29,7 +29,7 @@ module ActiveRecord
|
|
29
29
|
WHERE schemaname = ANY (ARRAY['public'])
|
30
30
|
SQL
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
# Returns an array of indexes for the given table.
|
34
34
|
#
|
35
35
|
# == Patch 1:
|
@@ -173,6 +173,7 @@ module ActiveRecord
|
|
173
173
|
statements << index_options if index_options.present?
|
174
174
|
|
175
175
|
sql = statements.join(' ')
|
176
|
+
|
176
177
|
execute(sql)
|
177
178
|
end
|
178
179
|
|
@@ -250,7 +251,7 @@ module ActiveRecord
|
|
250
251
|
column_name, operator_name = split_column_name(name)
|
251
252
|
|
252
253
|
result_name = if column_name =~ FUNCTIONAL_INDEX_REGEXP
|
253
|
-
_name =
|
254
|
+
_name = column_name.gsub(/\b#{$3}\b/, quote_column_name($3))
|
254
255
|
_name += " #{operator_name}"
|
255
256
|
_name
|
256
257
|
else
|
@@ -112,8 +112,7 @@ module PgSaurus::ConnectionAdapters::PostgreSQLAdapter::ExtensionMethods
|
|
112
112
|
# @return [Hash{String => Hash{Symbol => String}}] A list of loaded extensions with their options
|
113
113
|
def pg_extensions
|
114
114
|
# Check postgresql version to not break on Postgresql < 9.1 during schema dump
|
115
|
-
|
116
|
-
return {} unless pg_version_str =~ /^PostgreSQL (\d+\.\d+.\d+)/ && ($1 >= '9.1')
|
115
|
+
return {} if (::PgSaurus::Engine.pg_server_version <=> [9, 1]) < 0
|
117
116
|
|
118
117
|
sql = <<-SQL
|
119
118
|
SELECT pge.extname AS ext_name, pgn.nspname AS schema_name, pge.extversion AS ext_version
|
@@ -11,12 +11,13 @@ module PgSaurus::ConnectionAdapters::PostgreSQLAdapter::FunctionMethods
|
|
11
11
|
|
12
12
|
# Return a list of defined DB functions. Ignore function definitions that can't be parsed.
|
13
13
|
def functions
|
14
|
+
pg_major = ::PgSaurus::Engine.pg_server_version[0]
|
14
15
|
res = select_all <<-SQL
|
15
16
|
SELECT n.nspname AS "Schema",
|
16
17
|
p.proname AS "Name",
|
17
18
|
pg_catalog.pg_get_function_result(p.oid) AS "Returning",
|
18
19
|
CASE
|
19
|
-
WHEN p.proiswindow
|
20
|
+
WHEN #{pg_major >= 11 ? "p.prokind = 'w'" : "p.proiswindow"} THEN 'window'
|
20
21
|
WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN 'trigger'
|
21
22
|
ELSE 'normal'
|
22
23
|
END AS "Type",
|
@@ -26,7 +27,7 @@ module PgSaurus::ConnectionAdapters::PostgreSQLAdapter::FunctionMethods
|
|
26
27
|
WHERE pg_catalog.pg_function_is_visible(p.oid)
|
27
28
|
AND n.nspname <> 'pg_catalog'
|
28
29
|
AND n.nspname <> 'information_schema'
|
29
|
-
AND p.proisagg <> TRUE
|
30
|
+
AND #{pg_major >= 11 ? "p.prokind <> 'a'" : "p.proisagg <> TRUE"}
|
30
31
|
ORDER BY 1, 2, 3, 4;
|
31
32
|
SQL
|
32
33
|
res.inject([]) do |buffer, row|
|
@@ -95,7 +95,7 @@ module PgSaurus::ConnectionAdapters::PostgreSQLAdapter::TriggerMethods
|
|
95
95
|
|
96
96
|
# Parse the condition from the trigger definition.
|
97
97
|
def parse_condition(trigger_definition)
|
98
|
-
trigger_definition[/WHEN[\s](.*?)[\s]EXECUTE[\s]PROCEDURE/m, 1]
|
98
|
+
trigger_definition[/WHEN[\s](.*?)[\s]EXECUTE[\s](FUNCTION|PROCEDURE)/m, 1]
|
99
99
|
end
|
100
100
|
private :parse_condition
|
101
101
|
|
@@ -107,7 +107,7 @@ module PgSaurus::ConnectionAdapters::PostgreSQLAdapter::TriggerMethods
|
|
107
107
|
|
108
108
|
# Parse the procedure name from the trigger definition.
|
109
109
|
def parse_proc_name(trigger_definition)
|
110
|
-
trigger_definition[/EXECUTE[\s]PROCEDURE[\s](.*?)$/m,
|
110
|
+
trigger_definition[/EXECUTE[\s](FUNCTION|PROCEDURE)[\s](.*?)$/m, 2]
|
111
111
|
end
|
112
112
|
private :parse_proc_name
|
113
113
|
|
data/lib/pg_saurus/engine.rb
CHANGED
@@ -2,6 +2,16 @@ module PgSaurus
|
|
2
2
|
# :nodoc:
|
3
3
|
class Engine < Rails::Engine
|
4
4
|
|
5
|
+
# Postgres server version.
|
6
|
+
#
|
7
|
+
# @return [Array<Integer>]
|
8
|
+
def self.pg_server_version
|
9
|
+
@pg_server_version ||=
|
10
|
+
::ActiveRecord::Base.connection.
|
11
|
+
select_value('SHOW SERVER_VERSION').
|
12
|
+
split('.')[0..1].map(&:to_i)
|
13
|
+
end
|
14
|
+
|
5
15
|
initializer "pg_saurus" do
|
6
16
|
ActiveSupport.on_load(:active_record) do
|
7
17
|
# load monkey patches
|
@@ -15,8 +15,8 @@ module PgSaurus::SchemaDumper::ExtensionMethods
|
|
15
15
|
extensions = @connection.pg_extensions
|
16
16
|
commands = extensions.map do |extension_name, options|
|
17
17
|
result = [%Q|create_extension "#{extension_name}"|]
|
18
|
-
result << %Q
|
19
|
-
result << %Q
|
18
|
+
result << %Q|schema_name: "#{options[:schema_name]}"| unless options[:schema_name] == 'public'
|
19
|
+
result << %Q|version: "#{options[:version]}"|
|
20
20
|
result.join(', ')
|
21
21
|
end
|
22
22
|
|
data/lib/pg_saurus/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_saurus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Potapov Sergey
|
@@ -10,10 +10,10 @@ authors:
|
|
10
10
|
- Matt Dressel
|
11
11
|
- Bruce Burdick
|
12
12
|
- HornsAndHooves
|
13
|
-
autorequire:
|
13
|
+
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date:
|
16
|
+
date: 2021-09-22 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: pg
|
@@ -29,6 +29,20 @@ dependencies:
|
|
29
29
|
- - ">="
|
30
30
|
- !ruby/object:Gem::Version
|
31
31
|
version: '0'
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: psych
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - "~>"
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '3'
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
requirements:
|
43
|
+
- - "~>"
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '3'
|
32
46
|
- !ruby/object:Gem::Dependency
|
33
47
|
name: railties
|
34
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -205,14 +219,12 @@ email:
|
|
205
219
|
- cryo28@gmail.com
|
206
220
|
- matt.dressel@gmail.com
|
207
221
|
- rubygems.org@bruceburdick.com
|
208
|
-
executables:
|
209
|
-
- rails
|
222
|
+
executables: []
|
210
223
|
extensions: []
|
211
224
|
extra_rdoc_files:
|
212
225
|
- README.markdown
|
213
226
|
files:
|
214
227
|
- README.markdown
|
215
|
-
- bin/rails
|
216
228
|
- lib/colorized_text.rb
|
217
229
|
- lib/core_ext/active_record/connection_adapters/postgresql/column.rb
|
218
230
|
- lib/core_ext/active_record/connection_adapters/postgresql/schema_statements.rb
|
@@ -272,7 +284,7 @@ homepage: https://github.com/HornsAndHooves/pg_saurus
|
|
272
284
|
licenses:
|
273
285
|
- MIT
|
274
286
|
metadata: {}
|
275
|
-
post_install_message:
|
287
|
+
post_install_message:
|
276
288
|
rdoc_options: []
|
277
289
|
require_paths:
|
278
290
|
- lib
|
@@ -287,9 +299,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
287
299
|
- !ruby/object:Gem::Version
|
288
300
|
version: '0'
|
289
301
|
requirements: []
|
290
|
-
|
291
|
-
|
292
|
-
signing_key:
|
302
|
+
rubygems_version: 3.0.9
|
303
|
+
signing_key:
|
293
304
|
specification_version: 4
|
294
305
|
summary: ActiveRecord extensions for PostgreSQL.
|
295
306
|
test_files: []
|
data/bin/rails
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# This command will automatically be run when you run "rails" with Rails gems
|
3
|
-
# installed from the root of your application.
|
4
|
-
|
5
|
-
ENGINE_ROOT = File.expand_path('..', __dir__)
|
6
|
-
ENGINE_PATH = File.expand_path('../lib/pg_saurus/engine', __dir__)
|
7
|
-
APP_PATH = File.expand_path('../test/dummy/config/application', __dir__)
|
8
|
-
|
9
|
-
# Set up gems listed in the Gemfile.
|
10
|
-
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
|
11
|
-
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
|
12
|
-
|
13
|
-
require 'rails/all'
|
14
|
-
require 'rails/engine/commands'
|