postgres_ext 1.0.0 → 2.0.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/Gemfile +1 -1
- data/README.md +6 -47
- data/lib/postgres_ext/active_record/relation/predicate_builder.rb +36 -55
- data/lib/postgres_ext/active_record/relation/query_methods.rb +0 -14
- data/lib/postgres_ext/active_record.rb +0 -3
- data/lib/postgres_ext/version.rb +1 -1
- data/postgres_ext.gemspec +6 -5
- data/spec/arel/arel_spec.rb +0 -1
- data/spec/dummy/app/models/person.rb +0 -1
- data/spec/dummy/config/application.rb +0 -3
- data/spec/dummy/config/environments/development.rb +2 -7
- data/spec/dummy/config/environments/production.rb +1 -0
- data/spec/dummy/config/environments/test.rb +1 -5
- data/spec/dummy/db/migrate/20120501163758_create_people.rb +3 -3
- data/spec/dummy/db/schema.rb +15 -12
- data/spec/queries/sanity_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -2
- metadata +21 -105
- data/docs/indexes.md +0 -28
- data/docs/migrations.md +0 -92
- data/docs/type_casting.md +0 -70
- data/lib/postgres_ext/active_record/connection_adapters/postgres_adapter.rb +0 -537
- data/lib/postgres_ext/active_record/connection_adapters.rb +0 -1
- data/lib/postgres_ext/active_record/sanitization.rb +0 -30
- data/lib/postgres_ext/active_record/schema_dumper.rb +0 -157
- data/spec/columns/array_spec.rb +0 -119
- data/spec/columns/inet_spec.rb +0 -25
- data/spec/columns/ranges/daterange_spec.rb +0 -37
- data/spec/columns/ranges/int4range_spec.rb +0 -38
- data/spec/columns/ranges/int8range_spec.rb +0 -38
- data/spec/columns/ranges/numrange_spec.rb +0 -37
- data/spec/columns/ranges/tsrange_spec.rb +0 -37
- data/spec/migrations/active_record_migration_spec.rb +0 -29
- data/spec/migrations/array_spec.rb +0 -214
- data/spec/migrations/cidr_spec.rb +0 -26
- data/spec/migrations/citext_spec.rb +0 -32
- data/spec/migrations/ean13_spec.rb +0 -27
- data/spec/migrations/index_spec.rb +0 -67
- data/spec/migrations/inet_spec.rb +0 -26
- data/spec/migrations/macaddr_spec.rb +0 -26
- data/spec/migrations/ranges/daterange_spec.rb +0 -27
- data/spec/migrations/ranges/int4range_spec.rb +0 -27
- data/spec/migrations/ranges/int8range_spec.rb +0 -27
- data/spec/migrations/ranges/numrange_spec.rb +0 -27
- data/spec/migrations/ranges/tsrange_spec.rb +0 -27
- data/spec/migrations/ranges/tstzrange_spec.rb +0 -27
- data/spec/migrations/uuid_spec.rb +0 -26
- data/spec/models/array_spec.rb +0 -285
- data/spec/models/ean13_spec.rb +0 -57
- data/spec/models/inet_spec.rb +0 -88
- data/spec/models/ranges/daterange_spec.rb +0 -88
- data/spec/models/ranges/int4range_spec.rb +0 -85
- data/spec/models/ranges/int8range_spec.rb +0 -85
- data/spec/models/ranges/numrange_spec.rb +0 -85
- data/spec/models/ranges/tsrange_spec.rb +0 -89
- data/spec/models/ranges/tstzrange_spec.rb +0 -89
- data/spec/schema_dumper/array_spec.rb +0 -17
- data/spec/schema_dumper/cidr_spec.rb +0 -17
- data/spec/schema_dumper/citext_spec.rb +0 -17
- data/spec/schema_dumper/ean13_spec.rb +0 -17
- data/spec/schema_dumper/extension_spec.rb +0 -14
- data/spec/schema_dumper/index_spec.rb +0 -46
- data/spec/schema_dumper/inet_spec.rb +0 -17
- data/spec/schema_dumper/macaddr_spec.rb +0 -17
- data/spec/schema_dumper/ranges/daterange_spec.rb +0 -18
- data/spec/schema_dumper/ranges/int4range_spec.rb +0 -18
- data/spec/schema_dumper/ranges/int8range_spec.rb +0 -18
- data/spec/schema_dumper/ranges/numrange_spec.rb +0 -18
- data/spec/schema_dumper/ranges/tsrange_spec.rb +0 -18
- data/spec/schema_dumper/ranges/tstzrange_spec.rb +0 -17
- data/spec/schema_dumper/uuid_spec.rb +0 -17
@@ -1,214 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Array migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
|
6
|
-
context 'New Table' do
|
7
|
-
after { connection.drop_table :data_types }
|
8
|
-
describe 'Create table methods' do
|
9
|
-
it 'creates an array column' do
|
10
|
-
lambda do
|
11
|
-
connection.create_table :data_types do |t|
|
12
|
-
t.cidr :array_1, :array => true
|
13
|
-
t.cidr :array_2, :array_3, :array => true
|
14
|
-
t.column :array_4, :cidr, :array => true
|
15
|
-
end
|
16
|
-
end.should_not raise_exception
|
17
|
-
|
18
|
-
columns = connection.columns(:data_types)
|
19
|
-
|
20
|
-
array_1 = columns.detect { |c| c.name == 'array_1'}
|
21
|
-
array_2 = columns.detect { |c| c.name == 'array_2'}
|
22
|
-
array_3 = columns.detect { |c| c.name == 'array_3'}
|
23
|
-
array_4 = columns.detect { |c| c.name == 'array_4'}
|
24
|
-
|
25
|
-
array_1.sql_type.should eq 'cidr[]'
|
26
|
-
array_2.sql_type.should eq 'cidr[]'
|
27
|
-
array_3.sql_type.should eq 'cidr[]'
|
28
|
-
array_4.sql_type.should eq 'cidr[]'
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context 'Existing Table' do
|
34
|
-
before { connection.create_table :data_types }
|
35
|
-
after { connection.drop_table :data_types }
|
36
|
-
describe 'Add Column' do
|
37
|
-
context 'no default' do
|
38
|
-
it 'creates an array column' do
|
39
|
-
lambda do
|
40
|
-
connection.add_column :data_types, :array_5, :cidr, :array => true
|
41
|
-
end.should_not raise_exception
|
42
|
-
|
43
|
-
columns = connection.columns(:data_types)
|
44
|
-
|
45
|
-
array_5 = columns.detect { |c| c.name == 'array_5'}
|
46
|
-
array_5.sql_type.should eq 'cidr[]'
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
context 'with default' do
|
51
|
-
it 'creates an array column' do
|
52
|
-
lambda do
|
53
|
-
connection.add_column :data_types, :array_6, :integer, :array => true, :default => []
|
54
|
-
end.should_not raise_exception
|
55
|
-
|
56
|
-
columns = connection.columns(:data_types)
|
57
|
-
|
58
|
-
array_6 = columns.detect { |c| c.name == 'array_6'}
|
59
|
-
array_6.sql_type.should eq 'integer[]'
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
describe 'Change table methods' do
|
66
|
-
it 'creates an array column' do
|
67
|
-
lambda do
|
68
|
-
connection.change_table :data_types do |t|
|
69
|
-
t.column :array_6, :cidr, :array => true
|
70
|
-
t.cidr :array_7, :array => true
|
71
|
-
end
|
72
|
-
end.should_not raise_exception
|
73
|
-
|
74
|
-
columns = connection.columns(:data_types)
|
75
|
-
|
76
|
-
array_6 = columns.detect { |c| c.name == 'array_6'}
|
77
|
-
array_7 = columns.detect { |c| c.name == 'array_7'}
|
78
|
-
|
79
|
-
array_6.sql_type.should eq 'cidr[]'
|
80
|
-
array_7.sql_type.should eq 'cidr[]'
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
context 'Change Column' do
|
86
|
-
describe 'Change with column existing as array' do
|
87
|
-
after { connection.drop_table :data_types }
|
88
|
-
it 'updates the column definitions' do
|
89
|
-
lambda do
|
90
|
-
connection.create_table :data_types do |t|
|
91
|
-
t.integer :array_1, :array => true, :default => []
|
92
|
-
end
|
93
|
-
|
94
|
-
connection.change_column :data_types, :array_1, :integer, :array => true, :default => [], :null => false
|
95
|
-
end.should_not raise_exception
|
96
|
-
|
97
|
-
columns = connection.columns(:data_types)
|
98
|
-
|
99
|
-
array_1 = columns.detect { |c| c.name == 'array_1'}
|
100
|
-
array_1.sql_type.should eq 'integer[]'
|
101
|
-
array_1.default.should eq []
|
102
|
-
array_1.null.should be_false
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
describe 'Change string column to array' do
|
107
|
-
after { connection.drop_table :data_types }
|
108
|
-
it 'updates the column definitions' do
|
109
|
-
lambda do
|
110
|
-
connection.create_table :data_types do |t|
|
111
|
-
t.string :string_1
|
112
|
-
end
|
113
|
-
|
114
|
-
connection.exec_query "INSERT INTO data_types (string_1) VALUES ('some,values,here')"
|
115
|
-
connection.change_column :data_types, :string_1, :string, :array => true, :default => [], :null => false
|
116
|
-
end.should_not raise_exception
|
117
|
-
|
118
|
-
columns = connection.columns(:data_types)
|
119
|
-
|
120
|
-
string_1 = columns.detect { |c| c.name == 'string_1'}
|
121
|
-
string_1.sql_type.should eq 'character varying(255)[]'
|
122
|
-
string_1.default.should eq []
|
123
|
-
string_1.null.should be_false
|
124
|
-
|
125
|
-
new_string_value = connection.exec_query "SELECT array_length(string_1, 1) FROM data_types LIMIT 1"
|
126
|
-
if RUBY_PLATFORM =~ /java/
|
127
|
-
new_string_value.first['array_length'].should eq 3
|
128
|
-
else
|
129
|
-
new_string_value.rows.first.should == ['3']
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
describe 'Change text column to array' do
|
135
|
-
after { connection.drop_table :data_types }
|
136
|
-
it 'updates the column definitions' do
|
137
|
-
lambda do
|
138
|
-
connection.create_table :data_types do |t|
|
139
|
-
t.text :text_1
|
140
|
-
end
|
141
|
-
|
142
|
-
connection.exec_query "INSERT INTO data_types (text_1) VALUES ('some,values,here')"
|
143
|
-
connection.change_column :data_types, :text_1, :text, :array => true, :default => [], :null => false
|
144
|
-
end.should_not raise_exception
|
145
|
-
|
146
|
-
columns = connection.columns(:data_types)
|
147
|
-
|
148
|
-
text_1 = columns.detect { |c| c.name == 'text_1'}
|
149
|
-
text_1.sql_type.should eq 'text[]'
|
150
|
-
text_1.default.should eq []
|
151
|
-
text_1.null.should be_false
|
152
|
-
|
153
|
-
new_text_value = connection.exec_query "SELECT array_length(text_1, 1) FROM data_types LIMIT 1"
|
154
|
-
if RUBY_PLATFORM =~ /java/
|
155
|
-
new_text_value.first['array_length'].should eq 3
|
156
|
-
else
|
157
|
-
new_text_value.rows.first.should eq ['3']
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
context 'Default Values' do
|
164
|
-
describe 'String defaults' do
|
165
|
-
after { connection.drop_table :default_strings }
|
166
|
-
it 'creates array column with proper defaults' do
|
167
|
-
lambda do
|
168
|
-
connection.create_table :default_strings do |t|
|
169
|
-
t.string :names_1, :array => true, :default => []
|
170
|
-
t.string :names_2, :array => true, :default => '{}'
|
171
|
-
t.string :names_3, :array => true, :default => ['something']
|
172
|
-
t.string :names_4, :array => true, :default => '{something}'
|
173
|
-
end
|
174
|
-
end.should_not raise_exception
|
175
|
-
columns = connection.columns(:default_strings)
|
176
|
-
|
177
|
-
names_1 = columns.detect { |c| c.name == 'names_1' }
|
178
|
-
names_2 = columns.detect { |c| c.name == 'names_2' }
|
179
|
-
names_3 = columns.detect { |c| c.name == 'names_3' }
|
180
|
-
names_4 = columns.detect { |c| c.name == 'names_4' }
|
181
|
-
|
182
|
-
names_1.default.should eq []
|
183
|
-
names_2.default.should eq []
|
184
|
-
names_3.default.should eq ['something']
|
185
|
-
names_4.default.should eq ['something']
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
describe 'Integer defaults' do
|
190
|
-
after { connection.drop_table :default_integers }
|
191
|
-
it 'creates array column with proper defaults' do
|
192
|
-
lambda do
|
193
|
-
connection.create_table :default_integers do |t|
|
194
|
-
t.integer :numbers_1, :array => true, :default => []
|
195
|
-
t.integer :numbers_2, :array => true, :default => '{}'
|
196
|
-
t.integer :numbers_3, :array => true, :default => [3]
|
197
|
-
t.integer :numbers_4, :array => true, :default => '{4}'
|
198
|
-
end
|
199
|
-
end.should_not raise_exception
|
200
|
-
columns = connection.columns(:default_integers)
|
201
|
-
|
202
|
-
numbers_1 = columns.detect { |c| c.name == 'numbers_1' }
|
203
|
-
numbers_2 = columns.detect { |c| c.name == 'numbers_2' }
|
204
|
-
numbers_3 = columns.detect { |c| c.name == 'numbers_3' }
|
205
|
-
numbers_4 = columns.detect { |c| c.name == 'numbers_4' }
|
206
|
-
|
207
|
-
numbers_1.default.should eq []
|
208
|
-
numbers_2.default.should eq []
|
209
|
-
numbers_3.default.should eq [3]
|
210
|
-
numbers_4.default.should eq [4]
|
211
|
-
end
|
212
|
-
end
|
213
|
-
end
|
214
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'CIDR migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
after { connection.drop_table :data_types }
|
6
|
-
it 'creates an cidr column' do
|
7
|
-
lambda do
|
8
|
-
connection.create_table :data_types do |t|
|
9
|
-
t.cidr :cidr_1
|
10
|
-
t.cidr :cidr_2, :cidr_3
|
11
|
-
t.column :cidr_4, :cidr
|
12
|
-
end
|
13
|
-
end.should_not raise_exception
|
14
|
-
|
15
|
-
columns = connection.columns(:data_types)
|
16
|
-
cidr_1 = columns.detect { |c| c.name == 'cidr_1'}
|
17
|
-
cidr_2 = columns.detect { |c| c.name == 'cidr_2'}
|
18
|
-
cidr_3 = columns.detect { |c| c.name == 'cidr_3'}
|
19
|
-
cidr_4 = columns.detect { |c| c.name == 'cidr_4'}
|
20
|
-
|
21
|
-
cidr_1.sql_type.should eq 'cidr'
|
22
|
-
cidr_2.sql_type.should eq 'cidr'
|
23
|
-
cidr_3.sql_type.should eq 'cidr'
|
24
|
-
cidr_4.sql_type.should eq 'cidr'
|
25
|
-
end
|
26
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'CITEXT migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
before(:all) { ActiveRecord::Base.connection.add_extension('citext') if ActiveRecord::Base.connection.supports_extensions? }
|
6
|
-
after { connection.drop_table :data_types }
|
7
|
-
it 'creates an citext column' do
|
8
|
-
lambda do
|
9
|
-
connection.create_table :data_types do |t|
|
10
|
-
t.citext :citext_1
|
11
|
-
t.citext :citext_2, :citext_3
|
12
|
-
t.column :citext_4, :citext
|
13
|
-
t.text :citext_5
|
14
|
-
end
|
15
|
-
|
16
|
-
connection.change_column :data_types, :citext_5, :citext
|
17
|
-
end.should_not raise_exception
|
18
|
-
|
19
|
-
columns = connection.columns(:data_types)
|
20
|
-
citext_1 = columns.detect { |c| c.name == 'citext_1'}
|
21
|
-
citext_2 = columns.detect { |c| c.name == 'citext_2'}
|
22
|
-
citext_3 = columns.detect { |c| c.name == 'citext_3'}
|
23
|
-
citext_4 = columns.detect { |c| c.name == 'citext_4'}
|
24
|
-
citext_5 = columns.detect { |c| c.name == 'citext_5'}
|
25
|
-
|
26
|
-
citext_1.sql_type.should eq 'citext'
|
27
|
-
citext_2.sql_type.should eq 'citext'
|
28
|
-
citext_3.sql_type.should eq 'citext'
|
29
|
-
citext_4.sql_type.should eq 'citext'
|
30
|
-
citext_5.sql_type.should eq 'citext'
|
31
|
-
end
|
32
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'ean13 migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
before(:all) { ActiveRecord::Base.connection.add_extension('isn') if ActiveRecord::Base.connection.supports_extensions? }
|
6
|
-
after { connection.drop_table :data_types }
|
7
|
-
it 'creates an ean13 column' do
|
8
|
-
lambda do
|
9
|
-
connection.create_table :data_types do |t|
|
10
|
-
t.ean13 :ean13_1
|
11
|
-
t.ean13 :ean13_2, :ean13_3
|
12
|
-
t.column :ean13_4, :ean13
|
13
|
-
end
|
14
|
-
end.should_not raise_exception
|
15
|
-
|
16
|
-
columns = connection.columns(:data_types)
|
17
|
-
ean13_1 = columns.detect { |c| c.name == 'ean13_1'}
|
18
|
-
ean13_2 = columns.detect { |c| c.name == 'ean13_2'}
|
19
|
-
ean13_3 = columns.detect { |c| c.name == 'ean13_3'}
|
20
|
-
ean13_4 = columns.detect { |c| c.name == 'ean13_4'}
|
21
|
-
|
22
|
-
ean13_1.sql_type.should eq 'ean13'
|
23
|
-
ean13_2.sql_type.should eq 'ean13'
|
24
|
-
ean13_3.sql_type.should eq 'ean13'
|
25
|
-
ean13_4.sql_type.should eq 'ean13'
|
26
|
-
end
|
27
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Index migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
let!(:stream) { StringIO.new }
|
6
|
-
before do
|
7
|
-
ActiveRecord::Base.logger = ActiveSupport::TaggedLogging.new(Logger.new stream)
|
8
|
-
end
|
9
|
-
|
10
|
-
after do
|
11
|
-
[:tag_ids, :lucky_number, :biography].each do |column|
|
12
|
-
begin
|
13
|
-
connection.remove_index :people, column
|
14
|
-
rescue ArgumentError
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'creates special index' do
|
20
|
-
lambda do
|
21
|
-
connection.add_index(:people, :tag_ids, :using => :gin)
|
22
|
-
end.should_not raise_exception
|
23
|
-
|
24
|
-
indexes = connection.indexes(:people)
|
25
|
-
index_1 = indexes.detect { |c| c.columns.map(&:to_s) == ['tag_ids']}
|
26
|
-
|
27
|
-
index_1.using.should eq :gin
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'creates indexes with where clauses' do
|
31
|
-
lambda do
|
32
|
-
connection.add_index(:people, :lucky_number, :where => '(lucky_number > 50)')
|
33
|
-
end.should_not raise_exception
|
34
|
-
|
35
|
-
indexes = connection.indexes(:people)
|
36
|
-
index_2 = indexes.detect { |c| c.columns.map(&:to_s) == ['lucky_number']}
|
37
|
-
|
38
|
-
index_2.where.should match /lucky_number > 50/
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'creates index concurrently' do
|
42
|
-
lambda do
|
43
|
-
connection.add_index(:people, :lucky_number, :algorithm => :concurrently)
|
44
|
-
end.should_not raise_exception
|
45
|
-
|
46
|
-
output = stream.string
|
47
|
-
output.should match /CREATE INDEX CONCURRENTLY "index_people_on_lucky_number" ON "people"\(\"lucky_number\" \)/
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'rejects bad algorithm arguments' do
|
51
|
-
lambda do
|
52
|
-
connection.add_index(:people, :lucky_number, :algorithm => :conurrently)
|
53
|
-
end.should raise_exception
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'creates indexes with operator classes', :if => ActiveRecord::Base.connection.supports_extensions? do
|
57
|
-
lambda do
|
58
|
-
connection.add_index(:people, :biography, :using => :gin, :index_opclass => :gin_trgm_ops)
|
59
|
-
end.should_not raise_exception
|
60
|
-
|
61
|
-
indexes = connection.indexes(:people)
|
62
|
-
index_3 = indexes.detect { |c| c.columns.map(&:to_s) == ['biography']}
|
63
|
-
|
64
|
-
index_3.using.should eq :gin
|
65
|
-
index_3.index_opclass.should eq :gin_trgm_ops
|
66
|
-
end
|
67
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'INET migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
after { connection.drop_table :data_types }
|
6
|
-
it 'creates an inet column' do
|
7
|
-
lambda do
|
8
|
-
connection.create_table :data_types do |t|
|
9
|
-
t.inet :ip_1
|
10
|
-
t.inet :ip_2, :ip_3
|
11
|
-
t.column :ip_4, :inet
|
12
|
-
end
|
13
|
-
end.should_not raise_exception
|
14
|
-
|
15
|
-
columns = connection.columns(:data_types)
|
16
|
-
ip_1 = columns.detect { |c| c.name == 'ip_1'}
|
17
|
-
ip_2 = columns.detect { |c| c.name == 'ip_2'}
|
18
|
-
ip_3 = columns.detect { |c| c.name == 'ip_3'}
|
19
|
-
ip_4 = columns.detect { |c| c.name == 'ip_4'}
|
20
|
-
|
21
|
-
ip_1.sql_type.should eq 'inet'
|
22
|
-
ip_2.sql_type.should eq 'inet'
|
23
|
-
ip_3.sql_type.should eq 'inet'
|
24
|
-
ip_4.sql_type.should eq 'inet'
|
25
|
-
end
|
26
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'MACADDR migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
after { connection.drop_table :data_types }
|
6
|
-
it 'creates an macaddr column' do
|
7
|
-
lambda do
|
8
|
-
connection.create_table :data_types do |t|
|
9
|
-
t.macaddr :macaddr_1
|
10
|
-
t.macaddr :macaddr_2, :macaddr_3
|
11
|
-
t.column :macaddr_4, :macaddr
|
12
|
-
end
|
13
|
-
end.should_not raise_exception
|
14
|
-
|
15
|
-
columns = connection.columns(:data_types)
|
16
|
-
macaddr_1 = columns.detect { |c| c.name == 'macaddr_1'}
|
17
|
-
macaddr_2 = columns.detect { |c| c.name == 'macaddr_2'}
|
18
|
-
macaddr_3 = columns.detect { |c| c.name == 'macaddr_3'}
|
19
|
-
macaddr_4 = columns.detect { |c| c.name == 'macaddr_4'}
|
20
|
-
|
21
|
-
macaddr_1.sql_type.should eq 'macaddr'
|
22
|
-
macaddr_2.sql_type.should eq 'macaddr'
|
23
|
-
macaddr_3.sql_type.should eq 'macaddr'
|
24
|
-
macaddr_4.sql_type.should eq 'macaddr'
|
25
|
-
end
|
26
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'daterange migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
after { connection.drop_table :data_types }
|
6
|
-
|
7
|
-
it 'creates an daterange column' do
|
8
|
-
lambda do
|
9
|
-
connection.create_table :data_types do |t|
|
10
|
-
t.daterange :date_range_1
|
11
|
-
t.daterange :date_range_2, :date_range_3
|
12
|
-
t.column :date_range_4, :daterange
|
13
|
-
end
|
14
|
-
end.should_not raise_exception
|
15
|
-
|
16
|
-
columns = connection.columns(:data_types)
|
17
|
-
date_range_1 = columns.detect { |c| c.name == 'date_range_1'}
|
18
|
-
date_range_2 = columns.detect { |c| c.name == 'date_range_2'}
|
19
|
-
date_range_3 = columns.detect { |c| c.name == 'date_range_3'}
|
20
|
-
date_range_4 = columns.detect { |c| c.name == 'date_range_4'}
|
21
|
-
|
22
|
-
date_range_1.sql_type.should eq 'daterange'
|
23
|
-
date_range_2.sql_type.should eq 'daterange'
|
24
|
-
date_range_3.sql_type.should eq 'daterange'
|
25
|
-
date_range_4.sql_type.should eq 'daterange'
|
26
|
-
end
|
27
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'int4range migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
after { connection.drop_table :data_types }
|
6
|
-
|
7
|
-
it 'creates an numrange column' do
|
8
|
-
lambda do
|
9
|
-
connection.create_table :data_types do |t|
|
10
|
-
t.int4range :range_1
|
11
|
-
t.int4range :range_2, :range_3
|
12
|
-
t.column :range_4, :int4range
|
13
|
-
end
|
14
|
-
end.should_not raise_exception
|
15
|
-
|
16
|
-
columns = connection.columns(:data_types)
|
17
|
-
range_1 = columns.detect { |c| c.name == 'range_1'}
|
18
|
-
range_2 = columns.detect { |c| c.name == 'range_2'}
|
19
|
-
range_3 = columns.detect { |c| c.name == 'range_3'}
|
20
|
-
range_4 = columns.detect { |c| c.name == 'range_4'}
|
21
|
-
|
22
|
-
range_1.sql_type.should eq 'int4range'
|
23
|
-
range_2.sql_type.should eq 'int4range'
|
24
|
-
range_3.sql_type.should eq 'int4range'
|
25
|
-
range_4.sql_type.should eq 'int4range'
|
26
|
-
end
|
27
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'int8range migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
after { connection.drop_table :data_types }
|
6
|
-
|
7
|
-
it 'creates an numrange column' do
|
8
|
-
lambda do
|
9
|
-
connection.create_table :data_types do |t|
|
10
|
-
t.int8range :range_1
|
11
|
-
t.int8range :range_2, :range_3
|
12
|
-
t.column :range_4, :int8range
|
13
|
-
end
|
14
|
-
end.should_not raise_exception
|
15
|
-
|
16
|
-
columns = connection.columns(:data_types)
|
17
|
-
range_1 = columns.detect { |c| c.name == 'range_1'}
|
18
|
-
range_2 = columns.detect { |c| c.name == 'range_2'}
|
19
|
-
range_3 = columns.detect { |c| c.name == 'range_3'}
|
20
|
-
range_4 = columns.detect { |c| c.name == 'range_4'}
|
21
|
-
|
22
|
-
range_1.sql_type.should eq 'int8range'
|
23
|
-
range_2.sql_type.should eq 'int8range'
|
24
|
-
range_3.sql_type.should eq 'int8range'
|
25
|
-
range_4.sql_type.should eq 'int8range'
|
26
|
-
end
|
27
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'numrange migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
after { connection.drop_table :data_types }
|
6
|
-
|
7
|
-
it 'creates an numrange column' do
|
8
|
-
lambda do
|
9
|
-
connection.create_table :data_types do |t|
|
10
|
-
t.numrange :num_range_1
|
11
|
-
t.numrange :num_range_2, :num_range_3
|
12
|
-
t.column :num_range_4, :numrange
|
13
|
-
end
|
14
|
-
end.should_not raise_exception
|
15
|
-
|
16
|
-
columns = connection.columns(:data_types)
|
17
|
-
num_range_1 = columns.detect { |c| c.name == 'num_range_1'}
|
18
|
-
num_range_2 = columns.detect { |c| c.name == 'num_range_2'}
|
19
|
-
num_range_3 = columns.detect { |c| c.name == 'num_range_3'}
|
20
|
-
num_range_4 = columns.detect { |c| c.name == 'num_range_4'}
|
21
|
-
|
22
|
-
num_range_1.sql_type.should eq 'numrange'
|
23
|
-
num_range_2.sql_type.should eq 'numrange'
|
24
|
-
num_range_3.sql_type.should eq 'numrange'
|
25
|
-
num_range_4.sql_type.should eq 'numrange'
|
26
|
-
end
|
27
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'tsrange migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
after { connection.drop_table :data_types }
|
6
|
-
|
7
|
-
it 'creates an tsrange column' do
|
8
|
-
lambda do
|
9
|
-
connection.create_table :data_types do |t|
|
10
|
-
t.tsrange :ts_range_1
|
11
|
-
t.tsrange :ts_range_2, :ts_range_3
|
12
|
-
t.column :ts_range_4, :tsrange
|
13
|
-
end
|
14
|
-
end.should_not raise_exception
|
15
|
-
|
16
|
-
columns = connection.columns(:data_types)
|
17
|
-
ts_range_1 = columns.detect { |c| c.name == 'ts_range_1'}
|
18
|
-
ts_range_2 = columns.detect { |c| c.name == 'ts_range_2'}
|
19
|
-
ts_range_3 = columns.detect { |c| c.name == 'ts_range_3'}
|
20
|
-
ts_range_4 = columns.detect { |c| c.name == 'ts_range_4'}
|
21
|
-
|
22
|
-
ts_range_1.sql_type.should eq 'tsrange'
|
23
|
-
ts_range_2.sql_type.should eq 'tsrange'
|
24
|
-
ts_range_3.sql_type.should eq 'tsrange'
|
25
|
-
ts_range_4.sql_type.should eq 'tsrange'
|
26
|
-
end
|
27
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'tstzrange migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
after { connection.drop_table :data_types }
|
6
|
-
|
7
|
-
it 'creates an tstzrange column' do
|
8
|
-
lambda do
|
9
|
-
connection.create_table :data_types do |t|
|
10
|
-
t.tstzrange :tstz_range_1
|
11
|
-
t.tstzrange :tstz_range_2, :tstz_range_3
|
12
|
-
t.column :tstz_range_4, :tstzrange
|
13
|
-
end
|
14
|
-
end.should_not raise_exception
|
15
|
-
|
16
|
-
columns = connection.columns(:data_types)
|
17
|
-
tstz_range_1 = columns.detect { |c| c.name == 'tstz_range_1'}
|
18
|
-
tstz_range_2 = columns.detect { |c| c.name == 'tstz_range_2'}
|
19
|
-
tstz_range_3 = columns.detect { |c| c.name == 'tstz_range_3'}
|
20
|
-
tstz_range_4 = columns.detect { |c| c.name == 'tstz_range_4'}
|
21
|
-
|
22
|
-
tstz_range_1.sql_type.should eq 'tstzrange'
|
23
|
-
tstz_range_2.sql_type.should eq 'tstzrange'
|
24
|
-
tstz_range_3.sql_type.should eq 'tstzrange'
|
25
|
-
tstz_range_4.sql_type.should eq 'tstzrange'
|
26
|
-
end
|
27
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'UUID migrations' do
|
4
|
-
let!(:connection) { ActiveRecord::Base.connection }
|
5
|
-
after { connection.drop_table :data_types }
|
6
|
-
it 'creates an uuid column' do
|
7
|
-
lambda do
|
8
|
-
connection.create_table :data_types do |t|
|
9
|
-
t.uuid :uuid_1
|
10
|
-
t.uuid :uuid_2, :uuid_3
|
11
|
-
t.column :uuid_4, :uuid
|
12
|
-
end
|
13
|
-
end.should_not raise_exception
|
14
|
-
|
15
|
-
columns = connection.columns(:data_types)
|
16
|
-
uuid_1 = columns.detect { |c| c.name == 'uuid_1'}
|
17
|
-
uuid_2 = columns.detect { |c| c.name == 'uuid_2'}
|
18
|
-
uuid_3 = columns.detect { |c| c.name == 'uuid_3'}
|
19
|
-
uuid_4 = columns.detect { |c| c.name == 'uuid_4'}
|
20
|
-
|
21
|
-
uuid_1.sql_type.should eq 'uuid'
|
22
|
-
uuid_2.sql_type.should eq 'uuid'
|
23
|
-
uuid_3.sql_type.should eq 'uuid'
|
24
|
-
uuid_4.sql_type.should eq 'uuid'
|
25
|
-
end
|
26
|
-
end
|