activerecord-postgresql-extensions 0.2.2 → 0.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 +15 -0
- data/.gitignore +4 -0
- data/Gemfile +1 -0
- data/Guardfile +3 -3
- data/MIT-LICENSE +1 -1
- data/README.rdoc +10 -3
- data/lib/active_record/postgresql_extensions/adapter_extensions.rb +100 -60
- data/lib/active_record/postgresql_extensions/constraints.rb +13 -17
- data/lib/active_record/postgresql_extensions/event_triggers.rb +129 -0
- data/lib/active_record/postgresql_extensions/extensions.rb +14 -15
- data/lib/active_record/postgresql_extensions/features.rb +80 -41
- data/lib/active_record/postgresql_extensions/functions.rb +1 -1
- data/lib/active_record/postgresql_extensions/geometry.rb +6 -8
- data/lib/active_record/postgresql_extensions/indexes.rb +19 -11
- data/lib/active_record/postgresql_extensions/languages.rb +1 -1
- data/lib/active_record/postgresql_extensions/materialized_views.rb +272 -0
- data/lib/active_record/postgresql_extensions/permissions.rb +60 -22
- data/lib/active_record/postgresql_extensions/roles.rb +18 -7
- data/lib/active_record/postgresql_extensions/rules.rb +5 -0
- data/lib/active_record/postgresql_extensions/schemas.rb +39 -3
- data/lib/active_record/postgresql_extensions/sequences.rb +6 -3
- data/lib/active_record/postgresql_extensions/tables.rb +47 -19
- data/lib/active_record/postgresql_extensions/tablespaces.rb +1 -1
- data/lib/active_record/postgresql_extensions/text_search.rb +3 -3
- data/lib/active_record/postgresql_extensions/triggers.rb +3 -3
- data/lib/active_record/postgresql_extensions/types.rb +104 -1
- data/lib/active_record/postgresql_extensions/utils.rb +35 -13
- data/lib/active_record/postgresql_extensions/vacuum.rb +1 -1
- data/lib/active_record/postgresql_extensions/version.rb +1 -1
- data/lib/active_record/postgresql_extensions/views.rb +137 -6
- data/lib/activerecord-postgresql-extensions.rb +13 -11
- data/test/{adapter_tests.rb → adapter_extensions_tests.rb} +96 -3
- data/test/constraints_tests.rb +216 -104
- data/test/event_triggers_tests.rb +109 -0
- data/test/extensions_tests.rb +47 -39
- data/test/functions_tests.rb +47 -38
- data/test/geometry_tests.rb +268 -135
- data/test/{index_tests.rb → indexes_tests.rb} +16 -16
- data/test/languages_tests.rb +26 -9
- data/test/materialized_views_tests.rb +174 -0
- data/test/permissions_tests.rb +159 -45
- data/test/roles_tests.rb +17 -7
- data/test/rules_tests.rb +14 -6
- data/test/schemas_tests.rb +35 -9
- data/test/sequences_tests.rb +9 -11
- data/test/tables_tests.rb +132 -42
- data/test/tablespace_tests.rb +21 -15
- data/test/test_helper.rb +56 -10
- data/test/text_search_tests.rb +42 -44
- data/test/trigger_tests.rb +1 -3
- data/test/types_tests.rb +95 -0
- data/test/vacuum_tests.rb +1 -3
- data/test/views_tests.rb +203 -0
- metadata +22 -16
data/test/vacuum_tests.rb
CHANGED
@@ -2,9 +2,7 @@
|
|
2
2
|
$: << File.dirname(__FILE__)
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
|
-
class VacuumTests <
|
6
|
-
include PostgreSQLExtensionsTestHelper
|
7
|
-
|
5
|
+
class VacuumTests < PostgreSQLExtensionsTestCase
|
8
6
|
def test_vacuum
|
9
7
|
ARBC.vacuum
|
10
8
|
ARBC.vacuum(:full => true, :freeze => true, :verbose => true, :analyze => true)
|
data/test/views_tests.rb
ADDED
@@ -0,0 +1,203 @@
|
|
1
|
+
|
2
|
+
$: << File.dirname(__FILE__)
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class ViewsTests < PostgreSQLExtensionsTestCase
|
6
|
+
def test_create_view
|
7
|
+
Mig.create_view("foos_view", "SELECT * FROM foos")
|
8
|
+
Mig.create_view("foos_view", "SELECT * FROM foos", :replace => true)
|
9
|
+
Mig.create_view("foos_view", "SELECT * FROM foos", :temporary => true)
|
10
|
+
Mig.create_view("foos_view", "SELECT * FROM foos", :columns => %w{ hello world })
|
11
|
+
ARBC.create_view(
|
12
|
+
{ :baz => "foos_view" },
|
13
|
+
"SELECT * FROM foos"
|
14
|
+
)
|
15
|
+
|
16
|
+
assert_equal([
|
17
|
+
%{CREATE VIEW "foos_view" AS SELECT * FROM foos;},
|
18
|
+
%{CREATE OR REPLACE VIEW "foos_view" AS SELECT * FROM foos;},
|
19
|
+
%{CREATE TEMPORARY VIEW "foos_view" AS SELECT * FROM foos;},
|
20
|
+
%{CREATE VIEW "foos_view" ("hello", "world") AS SELECT * FROM foos;},
|
21
|
+
%{CREATE VIEW "baz"."foos_view" AS SELECT * FROM foos;}
|
22
|
+
], statements)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_create_view_with_recursive
|
26
|
+
skip unless ActiveRecord::PostgreSQLExtensions::Features.view_recursive?
|
27
|
+
|
28
|
+
Mig.create_view("foos_view", "SELECT * FROM foos", :recursive => true)
|
29
|
+
|
30
|
+
assert_equal([
|
31
|
+
%{CREATE RECURSIVE VIEW "foos_view" AS SELECT * FROM foos;}
|
32
|
+
], statements)
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_drop_view
|
36
|
+
Mig.drop_view(:foos_view)
|
37
|
+
Mig.drop_view(:foos_view, :if_exists => true)
|
38
|
+
Mig.drop_view(:foos_view, :cascade => true)
|
39
|
+
|
40
|
+
assert_equal([
|
41
|
+
%{DROP VIEW "foos_view";},
|
42
|
+
%{DROP VIEW IF EXISTS "foos_view";},
|
43
|
+
%{DROP VIEW "foos_view" CASCADE;}
|
44
|
+
], statements)
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_rename_view
|
48
|
+
Mig.rename_view(:foos_view, :bars_view)
|
49
|
+
ARBC.rename_view({ :baz => :foos_view }, :bars_view)
|
50
|
+
|
51
|
+
ARBC.with_schema(:blort) do
|
52
|
+
Mig.rename_view(:foos_view, :bars_view)
|
53
|
+
end
|
54
|
+
|
55
|
+
assert_equal([
|
56
|
+
%{ALTER VIEW "foos_view" RENAME TO "bars_view";},
|
57
|
+
%{ALTER VIEW "baz"."foos_view" RENAME TO "bars_view";},
|
58
|
+
%{ALTER VIEW "blort"."foos_view" RENAME TO "bars_view";}
|
59
|
+
], statements)
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_alter_view_owner
|
63
|
+
Mig.alter_view_owner(:foos, :joe)
|
64
|
+
|
65
|
+
assert_equal([
|
66
|
+
%{ALTER VIEW "foos" OWNER TO "joe";}
|
67
|
+
], statements)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_alter_view_schema
|
71
|
+
Mig.alter_view_schema(:foos, :bar)
|
72
|
+
|
73
|
+
assert_equal([
|
74
|
+
%{ALTER VIEW "foos" SET SCHEMA "bar";}
|
75
|
+
], statements)
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_if_exists
|
79
|
+
tester = proc {
|
80
|
+
Mig.rename_view(:foos_view, :bars_view, :if_exists => true)
|
81
|
+
}
|
82
|
+
|
83
|
+
if ActiveRecord::PostgreSQLExtensions::Features.view_if_exists?
|
84
|
+
tester.call
|
85
|
+
|
86
|
+
assert_equal([
|
87
|
+
%{ALTER VIEW IF EXISTS "foos_view" RENAME TO "bars_view";}
|
88
|
+
], statements)
|
89
|
+
else
|
90
|
+
assert_raises(ActiveRecord::PostgreSQLExtensions::FeatureNotSupportedError) do
|
91
|
+
tester.call
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_create_view_with_options
|
97
|
+
tester = proc {
|
98
|
+
Mig.create_view("foos_view", "SELECT * FROM foos",
|
99
|
+
:with_options => "security_barrier = true"
|
100
|
+
)
|
101
|
+
|
102
|
+
Mig.create_view("foos_view", "SELECT * FROM foos",
|
103
|
+
:with_options => {
|
104
|
+
:security_barrier => true
|
105
|
+
}
|
106
|
+
)
|
107
|
+
}
|
108
|
+
|
109
|
+
if ActiveRecord::PostgreSQLExtensions::Features.view_set_options?
|
110
|
+
tester.call
|
111
|
+
|
112
|
+
assert_equal([
|
113
|
+
%{CREATE VIEW "foos_view" WITH (security_barrier = true) AS SELECT * FROM foos;},
|
114
|
+
%{CREATE VIEW "foos_view" WITH ("security_barrier" = 't') AS SELECT * FROM foos;}
|
115
|
+
], statements)
|
116
|
+
else
|
117
|
+
assert_raises(ActiveRecord::PostgreSQLExtensions::FeatureNotSupportedError) do
|
118
|
+
tester.call
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_alter_view_set_options
|
124
|
+
tester = proc {
|
125
|
+
Mig.alter_view_set_options(:foos_view, 'security_barrier = true')
|
126
|
+
Mig.alter_view_set_options(:foos_view, {
|
127
|
+
:security_barrier => true
|
128
|
+
})
|
129
|
+
}
|
130
|
+
|
131
|
+
if ActiveRecord::PostgreSQLExtensions::Features.view_if_exists?
|
132
|
+
tester.call
|
133
|
+
|
134
|
+
assert_equal([
|
135
|
+
%{ALTER VIEW "foos_view" SET (security_barrier = true);},
|
136
|
+
%{ALTER VIEW "foos_view" SET ("security_barrier" = 't');}
|
137
|
+
], statements)
|
138
|
+
else
|
139
|
+
assert_raises(ActiveRecord::PostgreSQLExtensions::FeatureNotSupportedError) do
|
140
|
+
tester.call
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_alter_view_reset_options
|
146
|
+
tester = proc {
|
147
|
+
Mig.alter_view_reset_options(:foos_view, :security_barrier)
|
148
|
+
Mig.alter_view_reset_options(:foos_view, :security_barrier, :foos)
|
149
|
+
}
|
150
|
+
|
151
|
+
if ActiveRecord::PostgreSQLExtensions::Features.view_if_exists?
|
152
|
+
tester.call
|
153
|
+
|
154
|
+
assert_equal([
|
155
|
+
%{ALTER VIEW "foos_view" RESET ("security_barrier");},
|
156
|
+
%{ALTER VIEW "foos_view" RESET ("security_barrier", "foos");}
|
157
|
+
], statements)
|
158
|
+
else
|
159
|
+
assert_raises(ActiveRecord::PostgreSQLExtensions::FeatureNotSupportedError) do
|
160
|
+
tester.call
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
def test_alter_view_set_column_default
|
166
|
+
tester = proc {
|
167
|
+
Mig.alter_view_set_column_default(:foos_view, :bar, 20)
|
168
|
+
Mig.alter_view_set_column_default(:foos_view, :bar, '100 + foo')
|
169
|
+
}
|
170
|
+
|
171
|
+
if ActiveRecord::PostgreSQLExtensions::Features.view_if_exists?
|
172
|
+
tester.call
|
173
|
+
|
174
|
+
assert_equal([
|
175
|
+
%{ALTER VIEW "foos_view" ALTER COLUMN "bar" SET DEFAULT 20;},
|
176
|
+
%{ALTER VIEW "foos_view" ALTER COLUMN "bar" SET DEFAULT 100 + foo;}
|
177
|
+
], statements)
|
178
|
+
else
|
179
|
+
assert_raises(ActiveRecord::PostgreSQLExtensions::FeatureNotSupportedError) do
|
180
|
+
tester.call
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
def test_alter_view_drop_column_default
|
186
|
+
tester = proc {
|
187
|
+
Mig.alter_view_drop_column_default(:foos_view, :bar)
|
188
|
+
}
|
189
|
+
|
190
|
+
if ActiveRecord::PostgreSQLExtensions::Features.view_if_exists?
|
191
|
+
tester.call
|
192
|
+
|
193
|
+
assert_equal([
|
194
|
+
%{ALTER VIEW "foos_view" ALTER COLUMN "bar" DROP DEFAULT;}
|
195
|
+
], statements)
|
196
|
+
else
|
197
|
+
assert_raises(ActiveRecord::PostgreSQLExtensions::FeatureNotSupportedError) do
|
198
|
+
tester.call
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
metadata
CHANGED
@@ -1,32 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-postgresql-extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.2.2
|
4
|
+
version: 0.3.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- J Smith
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-10-04 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
type: :runtime
|
15
|
+
prerelease: false
|
16
|
+
name: activerecord
|
15
17
|
version_requirements: !ruby/object:Gem::Requirement
|
16
18
|
requirements:
|
17
19
|
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '2.3'
|
20
|
-
none: false
|
21
|
-
name: activerecord
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
22
|
requirement: !ruby/object:Gem::Requirement
|
25
23
|
requirements:
|
26
24
|
- - ! '>='
|
27
25
|
- !ruby/object:Gem::Version
|
28
26
|
version: '2.3'
|
29
|
-
none: false
|
30
27
|
description: A whole bunch of extensions the ActiveRecord PostgreSQL adapter.
|
31
28
|
email: code@zoocasa.com
|
32
29
|
executables: []
|
@@ -43,6 +40,7 @@ files:
|
|
43
40
|
- activerecord-postgresql-extensions.gemspec
|
44
41
|
- lib/active_record/postgresql_extensions/adapter_extensions.rb
|
45
42
|
- lib/active_record/postgresql_extensions/constraints.rb
|
43
|
+
- lib/active_record/postgresql_extensions/event_triggers.rb
|
46
44
|
- lib/active_record/postgresql_extensions/extensions.rb
|
47
45
|
- lib/active_record/postgresql_extensions/features.rb
|
48
46
|
- lib/active_record/postgresql_extensions/foreign_key_associations.rb
|
@@ -50,6 +48,7 @@ files:
|
|
50
48
|
- lib/active_record/postgresql_extensions/geometry.rb
|
51
49
|
- lib/active_record/postgresql_extensions/indexes.rb
|
52
50
|
- lib/active_record/postgresql_extensions/languages.rb
|
51
|
+
- lib/active_record/postgresql_extensions/materialized_views.rb
|
53
52
|
- lib/active_record/postgresql_extensions/permissions.rb
|
54
53
|
- lib/active_record/postgresql_extensions/postgis.rb
|
55
54
|
- lib/active_record/postgresql_extensions/roles.rb
|
@@ -66,14 +65,16 @@ files:
|
|
66
65
|
- lib/active_record/postgresql_extensions/version.rb
|
67
66
|
- lib/active_record/postgresql_extensions/views.rb
|
68
67
|
- lib/activerecord-postgresql-extensions.rb
|
69
|
-
- test/
|
68
|
+
- test/adapter_extensions_tests.rb
|
70
69
|
- test/constraints_tests.rb
|
71
70
|
- test/database.yml
|
71
|
+
- test/event_triggers_tests.rb
|
72
72
|
- test/extensions_tests.rb
|
73
73
|
- test/functions_tests.rb
|
74
74
|
- test/geometry_tests.rb
|
75
|
-
- test/
|
75
|
+
- test/indexes_tests.rb
|
76
76
|
- test/languages_tests.rb
|
77
|
+
- test/materialized_views_tests.rb
|
77
78
|
- test/permissions_tests.rb
|
78
79
|
- test/roles_tests.rb
|
79
80
|
- test/rules_tests.rb
|
@@ -84,9 +85,12 @@ files:
|
|
84
85
|
- test/test_helper.rb
|
85
86
|
- test/text_search_tests.rb
|
86
87
|
- test/trigger_tests.rb
|
88
|
+
- test/types_tests.rb
|
87
89
|
- test/vacuum_tests.rb
|
90
|
+
- test/views_tests.rb
|
88
91
|
homepage: http://github.com/zoocasa/activerecord-postgresql-extensions
|
89
92
|
licenses: []
|
93
|
+
metadata: {}
|
90
94
|
post_install_message:
|
91
95
|
rdoc_options: []
|
92
96
|
require_paths:
|
@@ -96,28 +100,28 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
100
|
- - ! '>='
|
97
101
|
- !ruby/object:Gem::Version
|
98
102
|
version: '0'
|
99
|
-
none: false
|
100
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
104
|
requirements:
|
102
105
|
- - ! '>='
|
103
106
|
- !ruby/object:Gem::Version
|
104
107
|
version: '0'
|
105
|
-
none: false
|
106
108
|
requirements: []
|
107
109
|
rubyforge_project:
|
108
|
-
rubygems_version: 1.
|
110
|
+
rubygems_version: 2.1.5
|
109
111
|
signing_key:
|
110
|
-
specification_version:
|
112
|
+
specification_version: 4
|
111
113
|
summary: A whole bunch of extensions the ActiveRecord PostgreSQL adapter.
|
112
114
|
test_files:
|
113
|
-
- test/
|
115
|
+
- test/adapter_extensions_tests.rb
|
114
116
|
- test/constraints_tests.rb
|
115
117
|
- test/database.yml
|
118
|
+
- test/event_triggers_tests.rb
|
116
119
|
- test/extensions_tests.rb
|
117
120
|
- test/functions_tests.rb
|
118
121
|
- test/geometry_tests.rb
|
119
|
-
- test/
|
122
|
+
- test/indexes_tests.rb
|
120
123
|
- test/languages_tests.rb
|
124
|
+
- test/materialized_views_tests.rb
|
121
125
|
- test/permissions_tests.rb
|
122
126
|
- test/roles_tests.rb
|
123
127
|
- test/rules_tests.rb
|
@@ -128,4 +132,6 @@ test_files:
|
|
128
132
|
- test/test_helper.rb
|
129
133
|
- test/text_search_tests.rb
|
130
134
|
- test/trigger_tests.rb
|
135
|
+
- test/types_tests.rb
|
131
136
|
- test/vacuum_tests.rb
|
137
|
+
- test/views_tests.rb
|