pg_power 1.6.3 → 1.6.4
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/pg_power/connection_adapters/abstract_adapter.rb +1 -1
- data/lib/pg_power/connection_adapters/abstract_adapter/comment_methods.rb +2 -2
- data/lib/pg_power/connection_adapters/abstract_adapter/foreigner_methods.rb +1 -1
- data/lib/pg_power/connection_adapters/abstract_adapter/index_methods.rb +2 -2
- data/lib/pg_power/connection_adapters/abstract_adapter/schema_methods.rb +5 -5
- data/lib/pg_power/connection_adapters/postgresql_adapter.rb +5 -1
- data/lib/pg_power/connection_adapters/postgresql_adapter/foreigner_methods.rb +25 -19
- data/lib/pg_power/connection_adapters/postgresql_adapter/schema_methods.rb +22 -0
- data/lib/pg_power/connection_adapters/table.rb +2 -2
- data/lib/pg_power/connection_adapters/table/comment_methods.rb +7 -7
- data/lib/pg_power/connection_adapters/table/foreigner_methods.rb +2 -2
- data/lib/pg_power/create_index_concurrently.rb +7 -5
- data/lib/pg_power/migration/command_recorder.rb +1 -1
- data/lib/pg_power/migration/command_recorder/comment_methods.rb +1 -1
- data/lib/pg_power/migration/command_recorder/extension_methods.rb +2 -2
- data/lib/pg_power/migration/command_recorder/foreigner_methods.rb +1 -1
- data/lib/pg_power/migration/command_recorder/schema_methods.rb +1 -1
- data/lib/pg_power/migration/command_recorder/view_methods.rb +17 -10
- data/lib/pg_power/schema_dumper/comment_methods.rb +3 -3
- data/lib/pg_power/schema_dumper/extension_methods.rb +4 -3
- data/lib/pg_power/schema_dumper/foreigner_methods.rb +3 -4
- data/lib/pg_power/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba398c2e068fec17d58c4785188309ae33248b95
|
4
|
+
data.tar.gz: f4b9bd5557f8875600e8c33bdc40f41dfffa88bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 329c679047292bfbec8ccf5f8303be6fb7da481e08fb1cc1537ac1c3d9e4216234eebd9915455cea8ee238bc3cb8912f65a9bfea20c915f90a93e1e4ab9fba17
|
7
|
+
data.tar.gz: 589bf58b9678b12788d684ccdf7d4749231a708b58f5f2567f028f360337d8901f6a791be076e42e91c6f8cc13f49b108a618430fcf4ea1217006cf8d88bdc05
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Extends
|
1
|
+
# Extends ActiveRecord::ConnectionAdapters::AbstractAdapter with
|
2
2
|
# empty methods for comments feature.
|
3
3
|
module PgPower::ConnectionAdapters::AbstractAdapter::CommentMethods
|
4
4
|
def supports_comments?
|
@@ -57,7 +57,7 @@ module PgPower::ConnectionAdapters::AbstractAdapter::CommentMethods
|
|
57
57
|
# ====== Removing comment from the npa column of table phone_numbers
|
58
58
|
# remove_column_comment :phone_numbers, :npa
|
59
59
|
def remove_column_comment(table_name, column_name)
|
60
|
-
|
60
|
+
|
61
61
|
end
|
62
62
|
|
63
63
|
# Removes any comment from the given columns of a given table.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Extends
|
1
|
+
# Extends ActiveRecord::ConnectionAdapters::AbstractAdapter with
|
2
2
|
# empty methods for foreign keys feature.
|
3
3
|
module PgPower::ConnectionAdapters::AbstractAdapter::ForeignerMethods
|
4
4
|
def supports_foreign_keys?
|
@@ -1,18 +1,18 @@
|
|
1
|
-
# Extends
|
2
|
-
# with methods for multi
|
1
|
+
# Extends ActiveRecord::ConnectionAdapters::AbstractAdapter
|
2
|
+
# with methods for multi-schema support.
|
3
3
|
module PgPower::ConnectionAdapters::AbstractAdapter::SchemaMethods
|
4
4
|
|
5
|
-
#
|
5
|
+
# Provide :schema option to +create_table+ method.
|
6
6
|
def create_table_with_schema_option(table_name, options = {}, &block)
|
7
7
|
schema_name = options.delete(:schema)
|
8
8
|
table_name = "#{schema_name}.#{table_name}" if schema_name
|
9
9
|
create_table_without_schema_option(table_name, options, &block)
|
10
10
|
end
|
11
11
|
|
12
|
-
#
|
12
|
+
# Provide :schema option to +drop_table+ method.
|
13
13
|
def drop_table_with_schema_option(table_name, options = {})
|
14
14
|
schema_name = options.delete(:schema)
|
15
15
|
table_name = "#{schema_name}.#{table_name}" if schema_name
|
16
16
|
drop_table_without_schema_option(table_name, options)
|
17
17
|
end
|
18
|
-
end
|
18
|
+
end
|
@@ -5,7 +5,7 @@ module PgPower::ConnectionAdapters::PostgreSQLAdapter
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
# TODO: Looks like explicit path specification can be omitted -- aignatyev 20120904
|
8
|
-
autoload :ExtensionMethods,
|
8
|
+
autoload :ExtensionMethods, 'pg_power/connection_adapters/postgresql_adapter/extension_methods'
|
9
9
|
autoload :SchemaMethods, 'pg_power/connection_adapters/postgresql_adapter/schema_methods'
|
10
10
|
autoload :CommentMethods, 'pg_power/connection_adapters/postgresql_adapter/comment_methods'
|
11
11
|
autoload :ForeignerMethods, 'pg_power/connection_adapters/postgresql_adapter/foreigner_methods'
|
@@ -20,4 +20,8 @@ module PgPower::ConnectionAdapters::PostgreSQLAdapter
|
|
20
20
|
include IndexMethods
|
21
21
|
include TranslateException
|
22
22
|
include ViewMethods
|
23
|
+
|
24
|
+
included do
|
25
|
+
alias_method_chain :tables, :non_public_schema_tables
|
26
|
+
end
|
23
27
|
end
|
@@ -6,7 +6,7 @@ module PgPower # :nodoc:
|
|
6
6
|
true
|
7
7
|
end
|
8
8
|
|
9
|
-
#
|
9
|
+
# Fetch information about foreign keys related to the passed table.
|
10
10
|
# @param [String, Symbol] table_name name of table (e.g. "users", "music.bands")
|
11
11
|
# @return [Foreigner::ConnectionAdapters::ForeignKeyDefinition]
|
12
12
|
def foreign_keys(table_name)
|
@@ -20,12 +20,12 @@ module PgPower # :nodoc:
|
|
20
20
|
c.conname AS name ,
|
21
21
|
c.confdeltype AS dependency
|
22
22
|
FROM pg_constraint c
|
23
|
-
JOIN pg_class t1
|
24
|
-
JOIN pg_class t2
|
25
|
-
JOIN pg_attribute a1
|
26
|
-
JOIN pg_attribute a2
|
27
|
-
JOIN pg_namespace t3
|
28
|
-
JOIN pg_namespace nsp ON nsp.oid
|
23
|
+
JOIN pg_class t1 ON c.conrelid = t1.oid
|
24
|
+
JOIN pg_class t2 ON c.confrelid = t2.oid
|
25
|
+
JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
|
26
|
+
JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
|
27
|
+
JOIN pg_namespace t3 ON c.connamespace = t3.oid
|
28
|
+
JOIN pg_namespace nsp ON nsp.oid = t2.relnamespace
|
29
29
|
WHERE c.contype = 'f'
|
30
30
|
AND t1.relname = '#{relation}'
|
31
31
|
AND t3.nspname = #{quoted_schema}
|
@@ -45,9 +45,10 @@ module PgPower # :nodoc:
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
#
|
49
|
-
#
|
50
|
-
# NOTE:
|
48
|
+
# Drop table and optionally disable triggers.
|
49
|
+
# Changes adapted from https://github.com/matthuhiggins/foreigner/blob/e72ab9c454c156056d3f037d55e3359cd972af32/lib/foreigner/connection_adapters/sql2003.rb
|
50
|
+
# NOTE: Disabling referential integrity requires superuser access in postgres.
|
51
|
+
# Default AR behavior is just to drop_table.
|
51
52
|
#
|
52
53
|
# == Options:
|
53
54
|
# * :force - force disabling of referential integrity
|
@@ -62,7 +63,7 @@ module PgPower # :nodoc:
|
|
62
63
|
end
|
63
64
|
end
|
64
65
|
|
65
|
-
#
|
66
|
+
# Add foreign key.
|
66
67
|
#
|
67
68
|
# Ensures that an index is created for the foreign key, unless :exclude_index is true.
|
68
69
|
#
|
@@ -113,7 +114,7 @@ module PgPower # :nodoc:
|
|
113
114
|
end
|
114
115
|
end
|
115
116
|
|
116
|
-
#
|
117
|
+
# Return the SQL code fragment to add the foreign key based on the table names and options.
|
117
118
|
def add_foreign_key_sql(from_table, to_table, options = {})
|
118
119
|
foreign_key_name = foreign_key_name(from_table, options[:column], options)
|
119
120
|
primary_key = options[:primary_key] || "id"
|
@@ -133,7 +134,7 @@ module PgPower # :nodoc:
|
|
133
134
|
# TODO Determine if we can refactor the method signature
|
134
135
|
# remove_foreign_key(from_table, to_table_or_options_hash, options={}) => remove_foreign_key(from_table, to_table, options={})
|
135
136
|
#
|
136
|
-
#
|
137
|
+
# Remove the foreign key.
|
137
138
|
# @param [String, Symbol] from_table
|
138
139
|
# @param [String, Hash] to_table_or_options_hash
|
139
140
|
#
|
@@ -162,17 +163,17 @@ module PgPower # :nodoc:
|
|
162
163
|
remove_index(from_table, column) unless options[:exclude_index] || !index_exists?(from_table, column)
|
163
164
|
end
|
164
165
|
|
165
|
-
#
|
166
|
+
# Return the SQL code fragment to remove foreign key based on table name and options.
|
166
167
|
def remove_foreign_key_sql(foreign_key_name)
|
167
168
|
"DROP CONSTRAINT #{quote_column_name(foreign_key_name)}"
|
168
169
|
end
|
169
170
|
|
170
|
-
#
|
171
|
+
# Build the foreign key column id from the referenced table.
|
171
172
|
def id_column_name_from_table_name(table)
|
172
173
|
"#{table.to_s.split('.').last.singularize}_id"
|
173
174
|
end
|
174
175
|
|
175
|
-
#
|
176
|
+
# Extract the foreign key column id from the foreign key metadata.
|
176
177
|
# @param [String, Symbol] from_table
|
177
178
|
# @param [String] foreign_key_name
|
178
179
|
def id_column_name_from_foreign_key_metadata(from_table, foreign_key_name)
|
@@ -182,7 +183,7 @@ module PgPower # :nodoc:
|
|
182
183
|
end
|
183
184
|
private :id_column_name_from_foreign_key_metadata
|
184
185
|
|
185
|
-
#
|
186
|
+
# Build default name for constraint.
|
186
187
|
def foreign_key_name(table, column, options = {})
|
187
188
|
if options[:name]
|
188
189
|
options[:name]
|
@@ -193,10 +194,15 @@ module PgPower # :nodoc:
|
|
193
194
|
end
|
194
195
|
private :foreign_key_name
|
195
196
|
|
197
|
+
# Get the SQL code fragment that represents dependency for a constraint.
|
198
|
+
#
|
199
|
+
# @param dependency [Symbol] :nullify, :delete or :restrict
|
200
|
+
#
|
201
|
+
# @return [String]
|
196
202
|
def dependency_sql(dependency)
|
197
203
|
case dependency
|
198
|
-
when :nullify
|
199
|
-
when :delete
|
204
|
+
when :nullify then "ON DELETE SET NULL"
|
205
|
+
when :delete then "ON DELETE CASCADE"
|
200
206
|
when :restrict then "ON DELETE RESTRICT"
|
201
207
|
else ""
|
202
208
|
end
|
@@ -19,4 +19,26 @@ module PgPower::ConnectionAdapters::PostgreSQLAdapter::SchemaMethods
|
|
19
19
|
def move_table_to_schema(table, schema)
|
20
20
|
::PgPower::Tools.move_table_to_schema(table, schema)
|
21
21
|
end
|
22
|
+
|
23
|
+
# Make method +tables+ return tables not only from public schema.
|
24
|
+
#
|
25
|
+
# @note
|
26
|
+
# Tables from public schema have no "public." prefix. It's done for
|
27
|
+
# compatibility with other libraries that relies on a table name.
|
28
|
+
# Tables from other schemas has appropriate prefix with schema name.
|
29
|
+
# See: https://github.com/TMXCredit/pg_power/pull/42
|
30
|
+
#
|
31
|
+
# @return [Array<String>] table names
|
32
|
+
def tables_with_non_public_schema_tables(*args)
|
33
|
+
public_tables = tables_without_non_public_schema_tables(*args)
|
34
|
+
|
35
|
+
non_public_tables =
|
36
|
+
query(<<-SQL, 'SCHEMA').map { |row| row[0] }
|
37
|
+
SELECT schemaname || '.' || tablename AS table
|
38
|
+
FROM pg_tables
|
39
|
+
WHERE schemaname NOT IN ('pg_catalog', 'information_schema', 'public')
|
40
|
+
SQL
|
41
|
+
|
42
|
+
public_tables + non_public_tables
|
43
|
+
end
|
22
44
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Provides methods to extend
|
1
|
+
# Provides methods to extend ActiveRecord::ConnectionAdapters::Table
|
2
2
|
# to support pg_power features.
|
3
3
|
module PgPower::ConnectionAdapters::Table
|
4
4
|
extend ActiveSupport::Autoload
|
@@ -10,7 +10,7 @@ module PgPower::ConnectionAdapters::Table
|
|
10
10
|
include CommentMethods
|
11
11
|
include ForeignerMethods
|
12
12
|
|
13
|
-
|
13
|
+
|
14
14
|
included do
|
15
15
|
alias_method_chain :references, :foreign_keys
|
16
16
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
# Provides methods to extend
|
1
|
+
# Provides methods to extend ActiveRecord::ConnectionAdapters::Table
|
2
2
|
# to support comments feature.
|
3
3
|
module PgPower::ConnectionAdapters::Table::CommentMethods
|
4
|
-
#
|
4
|
+
# Set the comment on the table.
|
5
5
|
#
|
6
6
|
# ===== Example
|
7
7
|
# ====== Set comment on table
|
@@ -10,7 +10,7 @@ module PgPower::ConnectionAdapters::Table::CommentMethods
|
|
10
10
|
@base.set_table_comment(@table_name, comment)
|
11
11
|
end
|
12
12
|
|
13
|
-
#
|
13
|
+
# Remove any comment from the table.
|
14
14
|
#
|
15
15
|
# ===== Example
|
16
16
|
# ====== Remove table comment
|
@@ -19,7 +19,7 @@ module PgPower::ConnectionAdapters::Table::CommentMethods
|
|
19
19
|
@base.remove_table_comment(@table_name)
|
20
20
|
end
|
21
21
|
|
22
|
-
#
|
22
|
+
# Set the comment for a given column.
|
23
23
|
#
|
24
24
|
# ===== Example
|
25
25
|
# ====== Set comment on the npa column
|
@@ -28,7 +28,7 @@ module PgPower::ConnectionAdapters::Table::CommentMethods
|
|
28
28
|
@base.set_column_comment(@table_name, column_name, comment)
|
29
29
|
end
|
30
30
|
|
31
|
-
#
|
31
|
+
# Set comments on multiple columns. 'comments' is a hash of column_name => comment pairs.
|
32
32
|
#
|
33
33
|
# ===== Example
|
34
34
|
# ====== Setting comments on the columns of the phone_numbers table
|
@@ -38,7 +38,7 @@ module PgPower::ConnectionAdapters::Table::CommentMethods
|
|
38
38
|
@base.set_column_comments(@table_name, comments)
|
39
39
|
end
|
40
40
|
|
41
|
-
#
|
41
|
+
# Remove any comment for a given column.
|
42
42
|
#
|
43
43
|
# ===== Example
|
44
44
|
# ====== Remove comment from the npa column
|
@@ -47,7 +47,7 @@ module PgPower::ConnectionAdapters::Table::CommentMethods
|
|
47
47
|
@base.remove_column_comment(@table_name, column_name)
|
48
48
|
end
|
49
49
|
|
50
|
-
#
|
50
|
+
# Remove any comments from the given columns.
|
51
51
|
#
|
52
52
|
# ===== Example
|
53
53
|
# ====== Remove comment from the npa and nxx columns
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Provides methods to extend
|
1
|
+
# Provides methods to extend ActiveRecord::ConnectionAdapters::Table
|
2
2
|
# to support foreign keys feature.
|
3
3
|
module PgPower::ConnectionAdapters::Table::ForeignerMethods
|
4
4
|
# Adds a new foreign key to the table. +to_table+ can be a single Symbol, or
|
@@ -40,7 +40,7 @@ module PgPower::ConnectionAdapters::Table::ForeignerMethods
|
|
40
40
|
def references_with_foreign_keys(*args)
|
41
41
|
options = args.extract_options!
|
42
42
|
|
43
|
-
if
|
43
|
+
if options.delete(:foreign_key)
|
44
44
|
p ActiveSupport::Deprecation.send(:deprecation_message, caller,
|
45
45
|
":foreign_key in t.references is deprecated. " \
|
46
46
|
"Use t.foreign_key instead")
|
@@ -56,7 +56,7 @@ module PgPower::CreateIndexConcurrently
|
|
56
56
|
private :postponed_queries, :postponed_queries=
|
57
57
|
|
58
58
|
|
59
|
-
#
|
59
|
+
# Add a new index to the table. +column_name+ can be a single Symbol, or
|
60
60
|
# an Array of Symbols.
|
61
61
|
#
|
62
62
|
# @param [Symbol, String] table_name
|
@@ -86,7 +86,7 @@ module PgPower::CreateIndexConcurrently
|
|
86
86
|
nil
|
87
87
|
end
|
88
88
|
|
89
|
-
#
|
89
|
+
# Add a foreign key.
|
90
90
|
#
|
91
91
|
# == Options:
|
92
92
|
# * :column
|
@@ -140,7 +140,7 @@ module PgPower::CreateIndexConcurrently
|
|
140
140
|
self
|
141
141
|
end
|
142
142
|
|
143
|
-
# Clean postponed queries
|
143
|
+
# Clean postponed queries queue.
|
144
144
|
#
|
145
145
|
# @return [::PgPower::CreateIndexConcurrently::Migration] migration
|
146
146
|
def clear_queue
|
@@ -165,19 +165,20 @@ module PgPower::CreateIndexConcurrently
|
|
165
165
|
private :enque
|
166
166
|
end
|
167
167
|
|
168
|
-
# Allows
|
168
|
+
# Allows `process_postponed_queries` to be called on MigrationProxy instances.
|
169
169
|
# So, (see ::PgPower::CreateIndexConcurrently::Migrator) could run index
|
170
170
|
# creation concurrently.
|
171
171
|
#
|
172
172
|
# Default delegation in (see ActiveRecord::MigrationProxy) allows to call
|
173
173
|
# only several methods.
|
174
174
|
module MigrationProxy
|
175
|
+
# :nodoc:
|
175
176
|
def self.included(klass)
|
176
177
|
klass.delegate :process_postponed_queries, :to => :migration
|
177
178
|
end
|
178
179
|
end
|
179
180
|
|
180
|
-
#
|
181
|
+
# Run postponed index creation for each migration.
|
181
182
|
#
|
182
183
|
# This module included into (see ::ActiveRecord::Migrator) class to make possible
|
183
184
|
# to execute queries for postponed index creation after closing migration's
|
@@ -188,6 +189,7 @@ module PgPower::CreateIndexConcurrently
|
|
188
189
|
module Migrator
|
189
190
|
extend ActiveSupport::Concern
|
190
191
|
|
192
|
+
# :nodoc:
|
191
193
|
def self.included(klass)
|
192
194
|
klass.alias_method_chain :ddl_transaction, :postponed_queries
|
193
195
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Provides methods to extend
|
1
|
+
# Provides methods to extend ActiveRecord::Migration::CommandRecorder to
|
2
2
|
# support extensions feature.
|
3
3
|
module PgPower::Migration::CommandRecorder::ExtensionMethods
|
4
4
|
# :nodoc:
|
@@ -22,4 +22,4 @@ module PgPower::Migration::CommandRecorder::ExtensionMethods
|
|
22
22
|
extension_name = args.first
|
23
23
|
[:create_extension, [extension_name]]
|
24
24
|
end
|
25
|
-
end
|
25
|
+
end
|
@@ -1,24 +1,31 @@
|
|
1
|
-
# Provides methods to extend
|
1
|
+
# Provides methods to extend ActiveRecord::Migration::CommandRecorder to
|
2
2
|
# support view feature.
|
3
3
|
module PgPower::Migration::CommandRecorder::ViewMethods
|
4
|
-
|
5
|
-
#
|
6
|
-
# @param [
|
7
|
-
#
|
4
|
+
# Create a PostgreSQL view.
|
5
|
+
#
|
6
|
+
# @param args [Array] view_name and view_definition
|
7
|
+
#
|
8
|
+
# @return [view]
|
8
9
|
def create_view(*args)
|
9
10
|
record(:create_view, args)
|
10
11
|
end
|
11
12
|
|
12
|
-
#
|
13
|
-
#
|
13
|
+
# Drop a view in the DB.
|
14
|
+
#
|
15
|
+
# @param args [Array] first argument is view_name
|
16
|
+
#
|
17
|
+
# @return [void]
|
14
18
|
def drop_view(*args)
|
15
19
|
record(:drop_view, args)
|
16
20
|
end
|
17
21
|
|
18
|
-
#
|
19
|
-
#
|
22
|
+
# Invert the creation of a view in the DB.
|
23
|
+
#
|
24
|
+
# @param args [Array] first argument is supposed to be name of view
|
25
|
+
#
|
26
|
+
# @return [void]
|
20
27
|
def invert_create_view(args)
|
21
28
|
[:drop_view, [args.first]]
|
22
29
|
end
|
23
|
-
|
30
|
+
|
24
31
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Extends ActiveRecord::SchemaDumper class to dump comments on tables and columns.
|
2
2
|
module PgPower::SchemaDumper::CommentMethods
|
3
|
-
#
|
3
|
+
# Hook ActiveRecord::SchemaDumper#table method to dump comments on
|
4
4
|
# table and columns.
|
5
5
|
def tables_with_comments(stream)
|
6
6
|
tables_without_comments(stream)
|
@@ -25,7 +25,7 @@ module PgPower::SchemaDumper::CommentMethods
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
#
|
28
|
+
# Find all comments related to passed table and write appropriate
|
29
29
|
# statements to stream.
|
30
30
|
def dump_comments(table_name, stream)
|
31
31
|
unless (comments = @connection.comments(table_name)).empty?
|
@@ -46,7 +46,7 @@ module PgPower::SchemaDumper::CommentMethods
|
|
46
46
|
end
|
47
47
|
private :dump_comments
|
48
48
|
|
49
|
-
# Escape
|
49
|
+
# Escape single quotes from comments.
|
50
50
|
def format_comment(comment)
|
51
51
|
comment.gsub(/'/, "\\\\'")
|
52
52
|
end
|
@@ -1,13 +1,14 @@
|
|
1
1
|
# Extends ActiveRecord::SchemaDumper class to dump comments on tables and columns.
|
2
2
|
module PgPower::SchemaDumper::ExtensionMethods
|
3
|
-
#
|
3
|
+
# Hook ActiveRecord::SchemaDumper#header method to dump extensions in all
|
4
|
+
# schemas except for pg_catalog.
|
4
5
|
def header_with_extensions(stream)
|
5
6
|
header_without_extensions(stream)
|
6
7
|
dump_extensions(stream)
|
7
8
|
stream
|
8
9
|
end
|
9
10
|
|
10
|
-
# Dump current database extensions recreation commands to the given stream
|
11
|
+
# Dump current database extensions recreation commands to the given stream.
|
11
12
|
#
|
12
13
|
# @param [#puts] stream Stream to write to
|
13
14
|
def dump_extensions(stream)
|
@@ -25,4 +26,4 @@ module PgPower::SchemaDumper::ExtensionMethods
|
|
25
26
|
|
26
27
|
stream.puts
|
27
28
|
end
|
28
|
-
end
|
29
|
+
end
|
@@ -1,12 +1,11 @@
|
|
1
|
-
# Provides methods to extend
|
1
|
+
# Provides methods to extend ActiveRecord::SchemaDumper to dump
|
2
2
|
# foreign keys.
|
3
3
|
module PgPower::SchemaDumper::ForeignerMethods
|
4
|
-
# Hooks
|
4
|
+
# Hooks ActiveRecord::SchemaDumper#table method to dump foreign keys.
|
5
5
|
def tables_with_foreign_keys(stream)
|
6
6
|
tables_without_foreign_keys(stream)
|
7
7
|
|
8
8
|
table_names = @connection.tables.sort
|
9
|
-
table_names += get_non_public_schema_table_names.sort
|
10
9
|
|
11
10
|
table_names.sort.each do |table|
|
12
11
|
next if ['schema_migrations', ignore_tables].flatten.any? do |ignored|
|
@@ -22,7 +21,7 @@ module PgPower::SchemaDumper::ForeignerMethods
|
|
22
21
|
end
|
23
22
|
|
24
23
|
|
25
|
-
#
|
24
|
+
# Find all foreign keys on passed table and writes appropriate
|
26
25
|
# statements to stream.
|
27
26
|
def foreign_keys(table_name, stream)
|
28
27
|
if (foreign_keys = @connection.foreign_keys(table_name)).any?
|
data/lib/pg_power/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_power
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Potapov Sergey
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2014-01-
|
15
|
+
date: 2014-01-16 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: pg
|
@@ -175,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
175
|
version: '0'
|
176
176
|
requirements: []
|
177
177
|
rubyforge_project:
|
178
|
-
rubygems_version: 2.
|
178
|
+
rubygems_version: 2.1.11
|
179
179
|
signing_key:
|
180
180
|
specification_version: 4
|
181
181
|
summary: ActiveRecord extensions for PostgreSQL.
|