ridgepole 0.6.6 → 0.7.0.alpha
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/.travis.yml +2 -7
- data/Appraisals +4 -5
- data/README.md +3 -0
- data/gemfiles/activerecord_5.0.gemfile +1 -1
- data/gemfiles/{activerecord_4.2.gemfile → activerecord_5.1.gemfile} +1 -2
- data/lib/ridgepole.rb +1 -0
- data/lib/ridgepole/client.rb +1 -3
- data/lib/ridgepole/connection_adapters.rb +11 -0
- data/lib/ridgepole/delta.rb +5 -0
- data/lib/ridgepole/diff.rb +5 -10
- data/lib/ridgepole/dsl_parser/context.rb +1 -4
- data/lib/ridgepole/dumper.rb +0 -11
- data/lib/ridgepole/schema_statements_ext.rb +1 -1
- data/lib/ridgepole/version.rb +1 -1
- data/ridgepole.gemspec +2 -2
- data/ridgepole.iml +9 -0
- data/spec/erb_helper.rb +25 -15
- data/spec/mysql/bigint_pk/bigint_pk_spec.rb +15 -15
- data/spec/mysql/bigint_pk/int_pk_spec.rb +45 -0
- data/spec/mysql/cli/config_spec.rb +7 -7
- data/spec/mysql/cli/ridgepole_spec.rb +20 -20
- data/spec/mysql/collation/collation_spec.rb +40 -41
- data/spec/mysql/comment/comment_spec.rb +19 -19
- data/spec/mysql/default_lambda/default_lambda_spec.rb +3 -3
- data/spec/mysql/diff/diff2_spec.rb +8 -5
- data/spec/mysql/diff/diff_spec.rb +8 -5
- data/spec/mysql/dump/dump_class_method_spec.rb +18 -68
- data/spec/mysql/dump/dump_some_tables_spec.rb +10 -30
- data/spec/mysql/dump/dump_spec.rb +21 -54
- data/spec/mysql/dump/dump_without_table_options_spec.rb +8 -35
- data/spec/mysql/fk/migrate_change_fk_spec.rb +8 -8
- data/spec/mysql/fk/migrate_create_fk_spec.rb +21 -35
- data/spec/mysql/fk/migrate_drop_fk_spec.rb +16 -30
- data/spec/mysql/migrate/migrate_add_column2_spec.rb +3 -5
- data/spec/mysql/migrate/migrate_add_column_order_spec.rb +21 -39
- data/spec/mysql/migrate/migrate_change_column5_spec.rb +8 -8
- data/spec/mysql/migrate/migrate_change_column6_spec.rb +18 -18
- data/spec/mysql/migrate/migrate_change_column_default_spec.rb +23 -16
- data/spec/mysql/migrate/migrate_change_column_spec.rb +34 -34
- data/spec/mysql/migrate/migrate_change_index3_spec.rb +19 -9
- data/spec/mysql/migrate/migrate_create_index_spec.rb +32 -32
- data/spec/mysql/migrate/migrate_create_table_spec.rb +0 -9
- data/spec/mysql/migrate/migrate_drop_index_spec.rb +32 -32
- data/spec/mysql/migrate/migrate_drop_table_spec.rb +30 -30
- data/spec/mysql/migrate/migrate_execute_spec.rb +68 -81
- data/spec/mysql/migrate/migrate_merge_mode_spec.rb +1 -3
- data/spec/mysql/migrate/migrate_noop_spec.rb +34 -61
- data/spec/mysql/migrate/migrate_rename_table_spec.rb +3 -24
- data/spec/mysql/migrate/migrate_same_spec.rb +12 -45
- data/spec/mysql/migrate/migrate_with_ignore_tables_spec.rb +6 -6
- data/spec/mysql/migrate/migrate_with_tables_spec.rb +2 -2
- data/spec/mysql/migrate/migrate_with_verbose_log_spec.rb +1 -6
- data/spec/mysql/migrate_/migrate_drop_index_with_alter_spec.rb +10 -10
- data/spec/mysql/text_blob_types/text_blob_types_spec.rb +3 -3
- data/spec/mysql/~default_name_fk/migrate_change_fk_spec.rb +6 -6
- data/spec/mysql/~default_name_fk/migrate_create_fk_spec.rb +10 -10
- data/spec/mysql/~default_name_fk/migrate_drop_fk_spec.rb +6 -6
- data/spec/postgresql/diff/diff_spec.rb +6 -0
- data/spec/postgresql/dump/dump_spec.rb +9 -33
- data/spec/postgresql/migrate/migrate_add_expression_index_spec.rb +3 -3
- data/spec/postgresql/migrate/migrate_bigint_spec.rb +10 -26
- data/spec/postgresql/migrate/migrate_create_table_spec.rb +0 -9
- data/spec/postgresql/migrate/migrate_create_table_with_default_proc_spec.rb +1 -1
- data/spec/postgresql/migrate/migrate_drop_column_with_index_spec.rb +2 -2
- data/spec/postgresql/migrate/migrate_drop_expression_index_spec.rb +7 -7
- data/spec/postgresql/migrate/migrate_drop_index_spec.rb +4 -4
- data/spec/postgresql/migrate/migrate_drop_table_spec.rb +3 -3
- data/spec/postgresql/migrate/migrate_ext_cols_spec.rb +0 -3
- data/spec/postgresql/migrate/migrate_same_spec.rb +9 -33
- data/spec/spec_condition.rb +15 -6
- data/spec/spec_helper.rb +2 -15
- metadata +14 -10
@@ -1,27 +1,14 @@
|
|
1
1
|
describe 'Ridgepole::Client#diff -> migrate' do
|
2
|
-
let(:template_variables) {
|
3
|
-
opts = {
|
4
|
-
sql_int_type: 'int(11)',
|
5
|
-
test_schema: TEST_SCHEMA,
|
6
|
-
}
|
7
|
-
|
8
|
-
if condition(:mysql_awesome_enabled)
|
9
|
-
opts[:sql_int_type] = 'int(10) unsigned'
|
10
|
-
end
|
11
|
-
|
12
|
-
opts
|
13
|
-
}
|
14
|
-
|
15
2
|
context 'when execute' do
|
16
3
|
let(:dsl) {
|
17
|
-
erbh(<<-EOS
|
18
|
-
create_table "authors", <%= i
|
19
|
-
t.string "name",
|
4
|
+
erbh(<<-EOS)
|
5
|
+
create_table "authors", <%= i cond(5.1, id: :integer) + {force: :cascade} %> do |t|
|
6
|
+
t.string "name", null: false
|
20
7
|
end
|
21
8
|
|
22
|
-
create_table "books", <%= i
|
23
|
-
t.string "title",
|
24
|
-
t.integer "author_id",
|
9
|
+
create_table "books", <%= i cond(5.1, id: :integer) + {force: :cascad} %>e do |t|
|
10
|
+
t.string "title", null: false
|
11
|
+
t.integer "author_id", null: false
|
25
12
|
end
|
26
13
|
|
27
14
|
<%= add_index "books", ["author_id"], name: "idx_author_id", using: :btree %>
|
@@ -29,20 +16,20 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
29
16
|
}
|
30
17
|
|
31
18
|
let(:dsl_with_execute) {
|
32
|
-
erbh(<<-EOS
|
33
|
-
create_table "authors", force: :cascade do |t|
|
19
|
+
erbh(<<-EOS)
|
20
|
+
create_table "authors", <%= i cond(5.1, id: :integer) + {force: :cascade} %> do |t|
|
34
21
|
t.string "name", null: false
|
35
22
|
end
|
36
23
|
|
37
|
-
create_table "books", force: :
|
24
|
+
create_table "books", <%= i cond(5.1, id: :integer) + {force: :cascad} %>e do |t|
|
38
25
|
t.string "title", null: false
|
39
|
-
t.integer "author_id",
|
26
|
+
t.integer "author_id", null: false
|
40
27
|
end
|
41
28
|
|
42
29
|
<%= add_index "books", ["author_id"], name: "idx_author_id", using: :btree %>
|
43
30
|
|
44
31
|
execute("ALTER TABLE books ADD CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors (id)") do |c|
|
45
|
-
c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '<%=
|
32
|
+
c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '<%= TEST_SCHEMA %>' AND CONSTRAINT_NAME = 'fk_author' LIMIT 1").each.length.zero?
|
46
33
|
end
|
47
34
|
EOS
|
48
35
|
}
|
@@ -55,13 +42,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
55
42
|
expect(delta.differ?).to be_truthy
|
56
43
|
expect(subject.dump).to match_fuzzy dsl
|
57
44
|
|
58
|
-
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS
|
45
|
+
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS)
|
59
46
|
CREATE TABLE `books` (
|
60
|
-
`id`
|
47
|
+
`id` int(11) NOT NULL AUTO_INCREMENT,
|
61
48
|
`title` varchar(255) NOT NULL,
|
62
|
-
`author_id`
|
49
|
+
`author_id` int(11) NOT NULL,
|
63
50
|
PRIMARY KEY (`id`),
|
64
|
-
KEY `idx_author_id` (`author_id`) USING BTREE
|
51
|
+
KEY `idx_author_id` (`author_id`) <%= cond(5.0, 'USING BTREE') %>
|
65
52
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
66
53
|
EOS
|
67
54
|
|
@@ -71,13 +58,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
71
58
|
add_foreign_key "books", "authors", name: "fk_author"
|
72
59
|
EOS
|
73
60
|
|
74
|
-
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS
|
61
|
+
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS)
|
75
62
|
CREATE TABLE `books` (
|
76
|
-
`id`
|
63
|
+
`id` int(11) NOT NULL AUTO_INCREMENT,
|
77
64
|
`title` varchar(255) NOT NULL,
|
78
|
-
`author_id`
|
65
|
+
`author_id` int(11) NOT NULL,
|
79
66
|
PRIMARY KEY (`id`),
|
80
|
-
KEY `idx_author_id` (`author_id`) USING BTREE
|
67
|
+
KEY `idx_author_id` (`author_id`) <%= cond(5.0, 'USING BTREE') %>,
|
81
68
|
CONSTRAINT `fk_author` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`)
|
82
69
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
83
70
|
EOS
|
@@ -86,14 +73,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
86
73
|
|
87
74
|
context 'when not execute' do
|
88
75
|
let(:dsl) {
|
89
|
-
erbh(<<-EOS
|
90
|
-
create_table "authors", force: :cascade do |t|
|
91
|
-
t.string "name",
|
76
|
+
erbh(<<-EOS)
|
77
|
+
create_table "authors", <%= i cond(5.1, id: :integer) + {force: :cascade} %> do |t|
|
78
|
+
t.string "name", null: false
|
92
79
|
end
|
93
80
|
|
94
|
-
create_table "books", force: :
|
95
|
-
t.string "title",
|
96
|
-
t.integer "author_id",
|
81
|
+
create_table "books", <%= i cond(5.1, id: :integer) + {force: :cascad} %>e do |t|
|
82
|
+
t.string "title", null: false
|
83
|
+
t.integer "author_id", null: false
|
97
84
|
end
|
98
85
|
|
99
86
|
<%= add_index "books", ["author_id"], name: "idx_author_id", using: :btree %>
|
@@ -102,20 +89,20 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
102
89
|
}
|
103
90
|
|
104
91
|
let(:dsl_with_execute) {
|
105
|
-
erbh(<<-EOS
|
106
|
-
create_table "authors", force: :cascade do |t|
|
92
|
+
erbh(<<-EOS)
|
93
|
+
create_table "authors", <%= i cond(5.1, id: :integer) + {force: :cascade} %> do |t|
|
107
94
|
t.string "name", null: false
|
108
95
|
end
|
109
96
|
|
110
|
-
create_table "books", force: :
|
97
|
+
create_table "books", <%= i cond(5.1, id: :integer) + {force: :cascad} %>e do |t|
|
111
98
|
t.string "title", null: false
|
112
|
-
t.integer "author_id",
|
99
|
+
t.integer "author_id", null: false
|
113
100
|
end
|
114
101
|
|
115
102
|
<%= add_index "books", ["author_id"], name: "idx_author_id", using: :btree %>
|
116
103
|
|
117
104
|
execute("ALTER TABLE books ADD CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors (id)") do |c|
|
118
|
-
c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '<%=
|
105
|
+
c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '<%= TEST_SCHEMA %>' AND CONSTRAINT_NAME = 'fk_author' LIMIT 1").each.length.zero?
|
119
106
|
end
|
120
107
|
|
121
108
|
add_foreign_key "books", "authors", name: "fk_author"
|
@@ -130,13 +117,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
130
117
|
expect(delta.differ?).to be_truthy
|
131
118
|
expect(subject.dump).to match_fuzzy dsl
|
132
119
|
|
133
|
-
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS
|
120
|
+
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS)
|
134
121
|
CREATE TABLE `books` (
|
135
122
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
136
123
|
`title` varchar(255) NOT NULL,
|
137
124
|
`author_id` int(11) NOT NULL,
|
138
125
|
PRIMARY KEY (`id`),
|
139
|
-
KEY `idx_author_id` (`author_id`) USING BTREE
|
126
|
+
KEY `idx_author_id` (`author_id`) <%= cond(5.0, 'USING BTREE') %>,
|
140
127
|
CONSTRAINT `fk_author` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`)
|
141
128
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
142
129
|
EOS
|
@@ -145,13 +132,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
145
132
|
expect(migrated).to be_falsey
|
146
133
|
expect(subject.dump).to match_fuzzy dsl
|
147
134
|
|
148
|
-
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS
|
135
|
+
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS)
|
149
136
|
CREATE TABLE `books` (
|
150
137
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
151
138
|
`title` varchar(255) NOT NULL,
|
152
139
|
`author_id` int(11) NOT NULL,
|
153
140
|
PRIMARY KEY (`id`),
|
154
|
-
KEY `idx_author_id` (`author_id`) USING BTREE
|
141
|
+
KEY `idx_author_id` (`author_id`) <%= cond(5.0, 'USING BTREE') %>,
|
155
142
|
CONSTRAINT `fk_author` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`)
|
156
143
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
157
144
|
EOS
|
@@ -160,14 +147,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
160
147
|
|
161
148
|
context 'when execute (noop)' do
|
162
149
|
let(:dsl) {
|
163
|
-
erbh(<<-EOS
|
164
|
-
create_table "authors", <%= i
|
165
|
-
t.string "name",
|
150
|
+
erbh(<<-EOS)
|
151
|
+
create_table "authors", <%= i cond(5.1, id: :integer) + {force: :cascade} %> do |t|
|
152
|
+
t.string "name", null: false
|
166
153
|
end
|
167
154
|
|
168
|
-
create_table "books", <%= i
|
169
|
-
t.string "title",
|
170
|
-
t.integer "author_id",
|
155
|
+
create_table "books", <%= i cond(5.1, id: :integer) + {force: :cascad} %>e do |t|
|
156
|
+
t.string "title", null: false
|
157
|
+
t.integer "author_id", null: false
|
171
158
|
end
|
172
159
|
|
173
160
|
<%= add_index "books", ["author_id"], name: "idx_author_id", using: :btree %>
|
@@ -175,20 +162,20 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
175
162
|
}
|
176
163
|
|
177
164
|
let(:dsl_with_execute) {
|
178
|
-
erbh(<<-EOS
|
179
|
-
create_table "authors", force: :cascade do |t|
|
165
|
+
erbh(<<-EOS)
|
166
|
+
create_table "authors", <%= i cond(5.1, id: :integer) + {force: :cascade} %> do |t|
|
180
167
|
t.string "name", null: false
|
181
168
|
end
|
182
169
|
|
183
|
-
create_table "books", force: :
|
170
|
+
create_table "books", <%= i cond(5.1, id: :integer) + {force: :cascad} %>e do |t|
|
184
171
|
t.string "title", null: false
|
185
|
-
t.integer "author_id",
|
172
|
+
t.integer "author_id", null: false
|
186
173
|
end
|
187
174
|
|
188
175
|
<%= add_index "books", ["author_id"], name: "idx_author_id", using: :btree %>
|
189
176
|
|
190
177
|
execute("ALTER TABLE books ADD CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors (id)") do |c|
|
191
|
-
c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '<%=
|
178
|
+
c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '<%= TEST_SCHEMA %>' AND CONSTRAINT_NAME = 'fk_author' LIMIT 1").each.length.zero?
|
192
179
|
end
|
193
180
|
EOS
|
194
181
|
}
|
@@ -201,13 +188,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
201
188
|
expect(delta.differ?).to be_truthy
|
202
189
|
expect(subject.dump).to match_fuzzy dsl
|
203
190
|
|
204
|
-
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS
|
191
|
+
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS)
|
205
192
|
CREATE TABLE `books` (
|
206
|
-
`id`
|
193
|
+
`id` int(11) NOT NULL AUTO_INCREMENT,
|
207
194
|
`title` varchar(255) NOT NULL,
|
208
|
-
`author_id`
|
195
|
+
`author_id` int(11) NOT NULL,
|
209
196
|
PRIMARY KEY (`id`),
|
210
|
-
KEY `idx_author_id` (`author_id`) USING BTREE
|
197
|
+
KEY `idx_author_id` (`author_id`) <%= cond(5.0, 'USING BTREE') %>
|
211
198
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
212
199
|
EOS
|
213
200
|
|
@@ -217,13 +204,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
217
204
|
|
218
205
|
expect(sql).to match_fuzzy "ALTER TABLE books ADD CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors (id)"
|
219
206
|
|
220
|
-
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS
|
207
|
+
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS)
|
221
208
|
CREATE TABLE `books` (
|
222
|
-
`id`
|
209
|
+
`id` int(11) NOT NULL AUTO_INCREMENT,
|
223
210
|
`title` varchar(255) NOT NULL,
|
224
|
-
`author_id`
|
211
|
+
`author_id` int(11) NOT NULL,
|
225
212
|
PRIMARY KEY (`id`),
|
226
|
-
KEY `idx_author_id` (`author_id`) USING BTREE
|
213
|
+
KEY `idx_author_id` (`author_id`) <%= cond(5.0, 'USING BTREE') %>
|
227
214
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
228
215
|
EOS
|
229
216
|
}
|
@@ -231,14 +218,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
231
218
|
|
232
219
|
context 'when not execute (noop)' do
|
233
220
|
let(:dsl) {
|
234
|
-
erbh(<<-EOS
|
235
|
-
create_table "authors", force: :cascade do |t|
|
236
|
-
t.string "name",
|
221
|
+
erbh(<<-EOS)
|
222
|
+
create_table "authors", <%= i cond(5.1, id: :integer) + {force: :cascade} %> do |t|
|
223
|
+
t.string "name", null: false
|
237
224
|
end
|
238
225
|
|
239
|
-
create_table "books", force: :
|
240
|
-
t.string "title",
|
241
|
-
t.integer "author_id",
|
226
|
+
create_table "books", <%= i cond(5.1, id: :integer) + {force: :cascad} %>e do |t|
|
227
|
+
t.string "title", null: false
|
228
|
+
t.integer "author_id", null: false
|
242
229
|
end
|
243
230
|
|
244
231
|
<%= add_index "books", ["author_id"], name: "idx_author_id", using: :btree %>
|
@@ -247,20 +234,20 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
247
234
|
}
|
248
235
|
|
249
236
|
let(:dsl_with_execute) {
|
250
|
-
erbh(<<-EOS
|
251
|
-
create_table "authors", force: :cascade do |t|
|
237
|
+
erbh(<<-EOS)
|
238
|
+
create_table "authors", <%= i cond(5.1, id: :integer) + {force: :cascade} %> do |t|
|
252
239
|
t.string "name", null: false
|
253
240
|
end
|
254
241
|
|
255
|
-
create_table "books", force: :
|
242
|
+
create_table "books", <%= i cond(5.1, id: :integer) + {force: :cascad} %>e do |t|
|
256
243
|
t.string "title", null: false
|
257
|
-
t.integer "author_id",
|
244
|
+
t.integer "author_id", null: false
|
258
245
|
end
|
259
246
|
|
260
247
|
<%= add_index "books", ["author_id"], name: "idx_author_id", using: :btree %>
|
261
248
|
|
262
249
|
execute("ALTER TABLE books ADD CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors (id)") do |c|
|
263
|
-
c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '<%=
|
250
|
+
c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '<%= TEST_SCHEMA %>' AND CONSTRAINT_NAME = 'fk_author' LIMIT 1").each.length.zero?
|
264
251
|
end
|
265
252
|
|
266
253
|
add_foreign_key "books", "authors", name: "fk_author"
|
@@ -275,13 +262,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
275
262
|
expect(delta.differ?).to be_truthy
|
276
263
|
expect(subject.dump).to match_fuzzy dsl
|
277
264
|
|
278
|
-
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS
|
265
|
+
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS)
|
279
266
|
CREATE TABLE `books` (
|
280
267
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
281
268
|
`title` varchar(255) NOT NULL,
|
282
269
|
`author_id` int(11) NOT NULL,
|
283
270
|
PRIMARY KEY (`id`),
|
284
|
-
KEY `idx_author_id` (`author_id`) USING BTREE
|
271
|
+
KEY `idx_author_id` (`author_id`) <%= cond(5.0, 'USING BTREE') %>,
|
285
272
|
CONSTRAINT `fk_author` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`)
|
286
273
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
287
274
|
EOS
|
@@ -292,13 +279,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
292
279
|
|
293
280
|
expect(sql).to match_fuzzy ""
|
294
281
|
|
295
|
-
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS
|
282
|
+
expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS)
|
296
283
|
CREATE TABLE `books` (
|
297
284
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
298
285
|
`title` varchar(255) NOT NULL,
|
299
286
|
`author_id` int(11) NOT NULL,
|
300
287
|
PRIMARY KEY (`id`),
|
301
|
-
KEY `idx_author_id` (`author_id`) USING BTREE
|
288
|
+
KEY `idx_author_id` (`author_id`) <%= cond(5.0, 'USING BTREE') %>,
|
302
289
|
CONSTRAINT `fk_author` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`)
|
303
290
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
304
291
|
EOS
|
@@ -1,31 +1,4 @@
|
|
1
1
|
describe 'Ridgepole::Client#diff -> migrate' do
|
2
|
-
let(:template_variables) {
|
3
|
-
opts = {
|
4
|
-
sql_int_pk_type: 'int(11) auto_increment PRIMARY KEY',
|
5
|
-
sql_int_type: 'int(11)',
|
6
|
-
sql_uint_type: 'int(11)',
|
7
|
-
}
|
8
|
-
|
9
|
-
if condition(:mysql_awesome_enabled)
|
10
|
-
opts.merge!(
|
11
|
-
sql_int_pk_type: 'int PRIMARY KEY AUTO_INCREMENT',
|
12
|
-
sql_int_type: 'int',
|
13
|
-
sql_uint_type: 'int unsigned'
|
14
|
-
)
|
15
|
-
end
|
16
|
-
|
17
|
-
if condition(:activerecord_5)
|
18
|
-
opts.merge!(
|
19
|
-
sql_int_pk_type: 'int AUTO_INCREMENT PRIMARY KEY',
|
20
|
-
sql_int_type: 'int',
|
21
|
-
sql_uint_type: 'int unsigned',
|
22
|
-
using_btree: 'USING btree'
|
23
|
-
)
|
24
|
-
end
|
25
|
-
|
26
|
-
opts
|
27
|
-
}
|
28
|
-
|
29
2
|
context 'when no operation' do
|
30
3
|
let(:actual_dsl) { '' }
|
31
4
|
let(:expected_dsl) {
|
@@ -106,23 +79,23 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
106
79
|
expect(migrated).to be_truthy
|
107
80
|
expect(subject.dump).to match_fuzzy actual_dsl
|
108
81
|
|
109
|
-
expect(sql).to match_fuzzy erbh(<<-EOS
|
110
|
-
CREATE TABLE `clubs` (`id` <%=
|
82
|
+
expect(sql).to match_fuzzy erbh(<<-EOS)
|
83
|
+
CREATE TABLE `clubs` (`id` <%= cond(5.1, 'bigint NOT NULL', 'int') %> AUTO_INCREMENT PRIMARY KEY, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
|
111
84
|
CREATE UNIQUE INDEX `idx_name` USING btree ON `clubs` (`name`)
|
112
|
-
CREATE TABLE `departments` (`dept_no` <%=
|
85
|
+
CREATE TABLE `departments` (`dept_no` <%= cond(5.1, 'bigint NOT NULL', 'int') %> AUTO_INCREMENT PRIMARY KEY, `dept_name` varchar(40) NOT NULL) ENGINE=InnoDB
|
113
86
|
CREATE UNIQUE INDEX `dept_name` USING btree ON `departments` (`dept_name`)
|
114
|
-
CREATE TABLE `dept_emp` (`emp_no`
|
87
|
+
CREATE TABLE `dept_emp` (`emp_no` int NOT NULL, `dept_no` varchar(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
115
88
|
CREATE INDEX `dept_no` USING btree ON `dept_emp` (`dept_no`)
|
116
89
|
CREATE INDEX `emp_no` USING btree ON `dept_emp` (`emp_no`)
|
117
|
-
CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no`
|
90
|
+
CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no` int NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
118
91
|
CREATE INDEX `dept_no` USING btree ON `dept_manager` (`dept_no`)
|
119
92
|
CREATE INDEX `emp_no` USING btree ON `dept_manager` (`emp_no`)
|
120
|
-
CREATE TABLE `employee_clubs` (`id` <%=
|
93
|
+
CREATE TABLE `employee_clubs` (`id` <%= cond(5.1, 'bigint NOT NULL', 'int') %> AUTO_INCREMENT PRIMARY KEY, `emp_no` int unsigned NOT NULL, `club_id` int unsigned NOT NULL) ENGINE=InnoDB
|
121
94
|
CREATE INDEX `idx_emp_no_club_id` USING btree ON `employee_clubs` (`emp_no`, `club_id`)
|
122
|
-
CREATE TABLE `employees` (`emp_no` <%=
|
123
|
-
CREATE TABLE `salaries` (`emp_no`
|
95
|
+
CREATE TABLE `employees` (`emp_no` <%= cond(5.1, 'bigint NOT NULL', 'int') %> AUTO_INCREMENT PRIMARY KEY, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` varchar(1) NOT NULL, `hire_date` date NOT NULL) ENGINE=InnoDB
|
96
|
+
CREATE TABLE `salaries` (`emp_no` int NOT NULL, `salary` int NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
124
97
|
CREATE INDEX `emp_no` USING btree ON `salaries` (`emp_no`)
|
125
|
-
CREATE TABLE `titles` (`emp_no`
|
98
|
+
CREATE TABLE `titles` (`emp_no` int NOT NULL, `title` varchar(50) NOT NULL, `from_date` date NOT NULL, `to_date` date) ENGINE=InnoDB
|
126
99
|
CREATE INDEX `emp_no` USING btree ON `titles` (`emp_no`)
|
127
100
|
EOS
|
128
101
|
}
|
@@ -135,22 +108,22 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
135
108
|
expect(subject.dump).to match_fuzzy actual_dsl
|
136
109
|
|
137
110
|
# XXX:
|
138
|
-
expect(sql.gsub('`', '')).to match_fuzzy erbh(<<-EOS
|
139
|
-
CREATE TABLE `clubs` (`id` <%=
|
140
|
-
ALTER TABLE `clubs` ADD UNIQUE INDEX `idx_name`
|
141
|
-
CREATE TABLE `departments` (`dept_no` <%=
|
142
|
-
ALTER TABLE `departments` ADD UNIQUE INDEX `dept_name`
|
143
|
-
CREATE TABLE `dept_emp` (`emp_no`
|
144
|
-
ALTER TABLE `dept_emp` ADD INDEX `dept_no`
|
145
|
-
CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no`
|
146
|
-
ALTER TABLE `dept_manager` ADD INDEX `dept_no`
|
147
|
-
CREATE TABLE `employee_clubs` (`id` <%=
|
148
|
-
ALTER TABLE `employee_clubs` ADD INDEX `idx_emp_no_club_id`
|
149
|
-
CREATE TABLE `employees` (`emp_no` <%=
|
150
|
-
CREATE TABLE `salaries` (`emp_no`
|
151
|
-
ALTER TABLE `salaries` ADD INDEX `emp_no`
|
152
|
-
CREATE TABLE `titles` (`emp_no`
|
153
|
-
ALTER TABLE `titles` ADD INDEX `emp_no`
|
111
|
+
expect(sql.gsub('`', '')).to match_fuzzy erbh(<<-EOS).gsub('`', '')
|
112
|
+
CREATE TABLE `clubs` (`id` <%= cond(5.1, 'bigint NOT NULL', 'int') %> AUTO_INCREMENT PRIMARY KEY, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
|
113
|
+
ALTER TABLE `clubs` ADD UNIQUE INDEX `idx_name` USING btree (`name`)
|
114
|
+
CREATE TABLE `departments` (`dept_no` <%= cond(5.1, 'bigint NOT NULL', 'int') %> AUTO_INCREMENT PRIMARY KEY, `dept_name` varchar(40) NOT NULL) ENGINE=InnoDB
|
115
|
+
ALTER TABLE `departments` ADD UNIQUE INDEX `dept_name` USING btree (`dept_name`)
|
116
|
+
CREATE TABLE `dept_emp` (`emp_no` int NOT NULL, `dept_no` varchar(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
117
|
+
ALTER TABLE `dept_emp` ADD INDEX `dept_no` USING btree (`dept_no`), ADD INDEX `emp_no` USING btree (`emp_no`)
|
118
|
+
CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no` int NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
119
|
+
ALTER TABLE `dept_manager` ADD INDEX `dept_no` USING btree (`dept_no`), ADD INDEX `emp_no` USING btree (`emp_no`)
|
120
|
+
CREATE TABLE `employee_clubs` (`id` <%= cond(5.1, 'bigint NOT NULL', 'int') %> AUTO_INCREMENT PRIMARY KEY, `emp_no` int unsigned NOT NULL, `club_id` int unsigned NOT NULL) ENGINE=InnoDB
|
121
|
+
ALTER TABLE `employee_clubs` ADD INDEX `idx_emp_no_club_id` USING btree (`emp_no`, `club_id`)
|
122
|
+
CREATE TABLE `employees` (`emp_no` <%= cond(5.1, 'bigint NOT NULL', 'int') %> AUTO_INCREMENT PRIMARY KEY, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` varchar(1) NOT NULL, `hire_date` date NOT NULL) ENGINE=InnoDB
|
123
|
+
CREATE TABLE `salaries` (`emp_no` int NOT NULL, `salary` int NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
124
|
+
ALTER TABLE `salaries` ADD INDEX `emp_no` USING btree (`emp_no`)
|
125
|
+
CREATE TABLE `titles` (`emp_no` int NOT NULL, `title` varchar(50) NOT NULL, `from_date` date NOT NULL, `to_date` date) ENGINE=InnoDB
|
126
|
+
ALTER TABLE `titles` ADD INDEX `emp_no` USING btree (`emp_no`)
|
154
127
|
EOS
|
155
128
|
}
|
156
129
|
end
|
@@ -235,23 +208,23 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
235
208
|
expect(migrated).to be_truthy
|
236
209
|
expect(subject.dump).to match_fuzzy actual_dsl
|
237
210
|
|
238
|
-
expect(sql).to match_fuzzy erbh(<<-EOS
|
239
|
-
CREATE TABLE `clubs` (`id` <%=
|
211
|
+
expect(sql).to match_fuzzy erbh(<<-EOS)
|
212
|
+
CREATE TABLE `clubs` (`id` <%= cond(5.1, 'bigint NOT NULL', 'int') %> AUTO_INCREMENT PRIMARY KEY, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
|
240
213
|
CREATE UNIQUE INDEX `idx_name` USING btree ON `clubs` (`name`)
|
241
|
-
CREATE TABLE `departments` (`dept_no` <%=
|
214
|
+
CREATE TABLE `departments` (`dept_no` <%= cond(5.1, 'bigint NOT NULL', 'int') %> AUTO_INCREMENT PRIMARY KEY, `dept_name` varchar(40) NOT NULL) ENGINE=InnoDB
|
242
215
|
CREATE UNIQUE INDEX `dept_name` USING btree ON `departments` (`dept_name`)
|
243
|
-
CREATE TABLE `dept_emp` (`emp_no`
|
216
|
+
CREATE TABLE `dept_emp` (`emp_no` int NOT NULL, `dept_no` varchar(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
244
217
|
CREATE INDEX `dept_no` USING btree ON `dept_emp` (`dept_no`)
|
245
218
|
CREATE INDEX `emp_no` USING btree ON `dept_emp` (`emp_no`)
|
246
|
-
CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no`
|
219
|
+
CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no` int NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
247
220
|
CREATE INDEX `dept_no` USING btree ON `dept_manager` (`dept_no`)
|
248
221
|
CREATE INDEX `emp_no` USING btree ON `dept_manager` (`emp_no`)
|
249
|
-
CREATE TABLE `employee_clubs` (`id` <%=
|
222
|
+
CREATE TABLE `employee_clubs` (`id` <%= cond(5.1, 'bigint NOT NULL', 'int') %> AUTO_INCREMENT PRIMARY KEY, `emp_no` int unsigned NOT NULL, `club_id` int unsigned NOT NULL) ENGINE=InnoDB
|
250
223
|
CREATE INDEX `idx_emp_no_club_id` USING btree ON `employee_clubs` (`emp_no`, `club_id`)
|
251
|
-
CREATE TABLE `employees` (`emp_no` <%=
|
252
|
-
CREATE TABLE `salaries` (`emp_no`
|
224
|
+
CREATE TABLE `employees` (`emp_no` <%= cond(5.1, 'bigint NOT NULL', 'int') %> AUTO_INCREMENT PRIMARY KEY, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` varchar(1) NOT NULL, `hire_date` date NOT NULL) ENGINE=InnoDB
|
225
|
+
CREATE TABLE `salaries` (`emp_no` int NOT NULL, `salary` int NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
253
226
|
CREATE INDEX `emp_no` USING btree ON `salaries` (`emp_no`)
|
254
|
-
CREATE TABLE `titles` (`emp_no`
|
227
|
+
CREATE TABLE `titles` (`emp_no` int NOT NULL, `title` varchar(50) NOT NULL, `from_date` date NOT NULL, `to_date` date) ENGINE=InnoDB
|
255
228
|
CREATE INDEX `emp_no` USING btree ON `titles` (`emp_no`)
|
256
229
|
EOS
|
257
230
|
}
|