ridgepole 0.6.4.beta → 0.6.4.beta2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e1b4733e95ee314eccc6c975becee43463c4c1b0
4
- data.tar.gz: f71fb12dd5737106719cc32636ad2b1c5aba8e14
3
+ metadata.gz: 10801582c0052e986aa30e7b154351eeaa554f15
4
+ data.tar.gz: 1e65cf886879c7b82f5a43db621b0862a1dcec54
5
5
  SHA512:
6
- metadata.gz: fcfaa88a1d5932661259c69b9f8678938cc81c50656401e9fc8b568442833f1231e210c648e74f97eb0978160e9a933aecd8958daf08512e58fce696f40a9249
7
- data.tar.gz: fdfefdfcf6f4fe8723f4c24ab983a5d43e9d4c7bdf67d5c2ee3fc5d20984f3f1d6e1438a848ecb5d3e2deb3df22dd70cc27a19d5b11ccda93be915617f3d8c99
6
+ metadata.gz: 12bdbd42911da4a0a198649aaea81b5f96531f335b5fcabd27895cb455cf0def8eed4ee2d2d73cd2d9151449fe748d8b48e326c2e78687c18a8aec86a7cd2c0b
7
+ data.tar.gz: be1ce63bf98dc8251aac7143743a357b03154f2d82f24db0d6f5833c02a431a29a604dc91d78cfb93f7bb3e3df7e371eb8475480ee8142cfacc737af6af767e5
data/README.md CHANGED
@@ -44,6 +44,8 @@ It defines DB schema using [Rails DSL](http://guides.rubyonrails.org/migrations.
44
44
  * Disable `rename_table_indexes`
45
45
  * `>= 0.6.4`
46
46
  * Execute sql using external script ([pull#56](https://github.com/winebarrel/ridgepole/pull/56))
47
+ * Add `--mysql-use-alter` option
48
+ * Add `--alter-extra` option
47
49
 
48
50
  ## Installation
49
51
 
@@ -69,6 +71,7 @@ Usage: ridgepole [options]
69
71
  -f, --file FILE
70
72
  --dry-run
71
73
  --table-options OPTIONS
74
+ --alter-extra ALTER_SPEC
72
75
  --external-script SCRIPT
73
76
  --bulk-change
74
77
  --default-bool-limit LIMIT
@@ -89,6 +92,7 @@ Usage: ridgepole [options]
89
92
  -t, --tables TABLES
90
93
  --ignore-tables TABLES
91
94
  --enable-mysql-awesome
95
+ --mysql-use-alter
92
96
  --dump-without-table-options
93
97
  --index-removed-drop-column
94
98
  --enable-migration-comments
data/bin/ridgepole CHANGED
@@ -42,12 +42,15 @@ set_mode = proc do |m|
42
42
  mode = m
43
43
  end
44
44
 
45
- def noop_migrate(delta)
45
+ def noop_migrate(delta, options)
46
46
  unless delta.script.empty?
47
47
  puts delta.script + "\n\n"
48
48
  end
49
49
 
50
- migrated, out = delta.migrate(:noop => true)
50
+ migrated, out = delta.migrate(
51
+ :noop => true,
52
+ :alter_extra => options[:alter_extra]
53
+ )
51
54
 
52
55
  if migrated
53
56
  out.each_line do |line|
@@ -71,6 +74,7 @@ ARGV.options do |opt|
71
74
  opt.on('-f', '--file FILE') {|v| file = v }
72
75
  opt.on('', '--dry-run') { options[:dry_run] = true }
73
76
  opt.on('', '--table-options OPTIONS') {|v| options[:table_options] = v }
77
+ opt.on('', '--alter-extra ALTER_SPEC') {|v| options[:alter_extra] = v }
74
78
  opt.on('', '--external-script SCRIPT') {|v| options[:external_script] = v }
75
79
  opt.on('', '--bulk-change') {
76
80
  raise "Cannot use `bulk-change` in `merge`" if options[:merge]
@@ -106,6 +110,7 @@ ARGV.options do |opt|
106
110
  opt.on('-t', '--tables TABLES', Array) {|v| options[:tables] = v }
107
111
  opt.on('', '--ignore-tables TABLES', Array) {|v| options[:ignore_tables] = v.map {|i| Regexp.new(i) } }
108
112
  opt.on('', '--enable-mysql-awesome') { options[:enable_mysql_awesome] = true }
113
+ opt.on('', '--mysql-use-alter') { options[:mysql_use_alter] = true }
109
114
  opt.on('', '--dump-without-table-options') { options[:dump_without_table_options] = true }
110
115
  opt.on('', '--index-removed-drop-column') { options[:index_removed_drop_column] = true }
111
116
  opt.on('', '--enable-migration-comments') { options[:enable_migration_comments] = true }
@@ -196,11 +201,15 @@ begin
196
201
 
197
202
  if options[:dry_run]
198
203
  if differ
199
- differ = noop_migrate(delta)
204
+ differ = noop_migrate(delta, options)
200
205
  end
201
206
  else
202
207
  logger.verbose_info('# Update schema')
203
- differ, out = delta.migrate(:external_script => options[:external_script])
208
+
209
+ differ, out = delta.migrate(
210
+ :external_script => options[:external_script],
211
+ :alter_extra => options[:alter_extra]
212
+ )
204
213
  end
205
214
 
206
215
  unless differ
@@ -235,7 +244,7 @@ begin
235
244
  logger.info('No change')
236
245
  end
237
246
  elsif delta.differ?
238
- differ = noop_migrate(delta)
247
+ differ = noop_migrate(delta, options)
239
248
  exit_code = 1 if differ
240
249
  end
241
250
  end
@@ -25,6 +25,10 @@ class Ridgepole::Client
25
25
 
26
26
  require 'activerecord/mysql/awesome/base'
27
27
  end
28
+
29
+ if @options[:mysql_use_alter]
30
+ require 'ridgepole/ext/abstract_mysql_adapter'
31
+ end
28
32
  end
29
33
 
30
34
  def dump(&block)
@@ -63,8 +63,18 @@ class Ridgepole::Delta
63
63
  buf.puts sql if sql =~ /\A(CREATE|ALTER|DROP|RENAME)\b/i
64
64
  end
65
65
 
66
- Ridgepole::ExecuteExpander.without_operation(callback) do
67
- migrated = eval_script(script, options.merge(:out => buf))
66
+ eval_script_block = proc do
67
+ Ridgepole::ExecuteExpander.without_operation(callback) do
68
+ migrated = eval_script(script, options.merge(:out => buf))
69
+ end
70
+ end
71
+
72
+ if options[:alter_extra]
73
+ Ridgepole::ExecuteExpander.with_alter_extra(options[:alter_extra]) do
74
+ eval_script_block.call
75
+ end
76
+ else
77
+ eval_script_block.call
68
78
  end
69
79
 
70
80
  out = buf.string.strip
@@ -75,6 +85,10 @@ class Ridgepole::Delta
75
85
  Ridgepole::ExecuteExpander.with_script(options[:external_script], Ridgepole::Logger.instance) do
76
86
  migrated = eval_script(script, options)
77
87
  end
88
+ elsif options[:alter_extra]
89
+ Ridgepole::ExecuteExpander.with_alter_extra(options[:alter_extra]) do
90
+ migrated = eval_script(script, options)
91
+ end
78
92
  else
79
93
  migrated = eval_script(script, options)
80
94
  end
@@ -9,6 +9,7 @@ class Ridgepole::ExecuteExpander
9
9
  cattr_accessor :callback, :instance_writer => false, :instance_reader => false
10
10
  cattr_accessor :use_script, :instance_writer => false, :instance_reader => false
11
11
  cattr_accessor :sql_executer, :instance_writer => false, :instance_reader => false
12
+ cattr_accessor :alter_extra, :instance_writer => false, :instance_reader => false
12
13
 
13
14
  class << self
14
15
  def without_operation(callback = nil)
@@ -33,6 +34,15 @@ class Ridgepole::ExecuteExpander
33
34
  end
34
35
  end
35
36
 
37
+ def with_alter_extra(extra)
38
+ begin
39
+ self.alter_extra = extra
40
+ yield
41
+ ensure
42
+ self.alter_extra = nil
43
+ end
44
+ end
45
+
36
46
  def expand_execute(connection)
37
47
  return if connection.respond_to?(:execute_with_ext)
38
48
 
@@ -40,6 +50,7 @@ class Ridgepole::ExecuteExpander
40
50
  def execute_with_ext(sql, name = nil)
41
51
  if Ridgepole::ExecuteExpander.noop
42
52
  if (callback = Ridgepole::ExecuteExpander.callback)
53
+ sql = append_alter_extra(sql)
43
54
  callback.call(sql, name)
44
55
  end
45
56
 
@@ -56,14 +67,26 @@ class Ridgepole::ExecuteExpander
56
67
  if sql =~ /\A(SELECT|SHOW)\b/i
57
68
  execute_without_ext(sql, name)
58
69
  else
70
+ sql = append_alter_extra(sql)
59
71
  Ridgepole::ExecuteExpander.sql_executer.execute(sql)
60
72
  nil
61
73
  end
62
74
  else
75
+ sql = append_alter_extra(sql)
63
76
  execute_without_ext(sql, name)
64
77
  end
65
78
  end
66
79
  alias_method_chain :execute, :ext
80
+
81
+ private
82
+
83
+ def append_alter_extra(sql)
84
+ if Ridgepole::ExecuteExpander.alter_extra and sql =~ /\AALTER\b/i
85
+ sql = sql + ',' + Ridgepole::ExecuteExpander.alter_extra
86
+ end
87
+
88
+ sql
89
+ end
67
90
  end
68
91
  end
69
92
  end # of class methods
@@ -0,0 +1,16 @@
1
+ require 'active_record/connection_adapters/abstract_mysql_adapter'
2
+
3
+ class ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
4
+ def add_index_with_alter(table_name, column_name, options = {})
5
+ index_name, index_type, index_columns, index_options, index_algorithm, index_using = add_index_options(table_name, column_name, options)
6
+
7
+ # cannot specify index_algorithm
8
+ execute "ALTER TABLE #{quote_table_name(table_name)} ADD #{index_type} INDEX #{quote_column_name(index_name)} #{index_using} (#{index_columns})#{index_options}"
9
+ end
10
+ alias_method_chain :add_index, :alter
11
+
12
+ def remove_index_with_alter!(table_name, index_name)
13
+ execute "ALTER TABLE #{quote_table_name(table_name)} DROP INDEX #{quote_column_name(index_name)}"
14
+ end
15
+ alias_method_chain :remove_index!, :alter
16
+ end
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.6.4.beta'
2
+ VERSION = '0.6.4.beta2'
3
3
  end
@@ -17,6 +17,7 @@ describe 'ridgepole' do
17
17
  -f, --file FILE
18
18
  --dry-run
19
19
  --table-options OPTIONS
20
+ --alter-extra ALTER_SPEC
20
21
  --external-script SCRIPT
21
22
  --bulk-change
22
23
  --default-bool-limit LIMIT
@@ -37,6 +38,7 @@ describe 'ridgepole' do
37
38
  -t, --tables TABLES
38
39
  --ignore-tables TABLES
39
40
  --enable-mysql-awesome
41
+ --mysql-use-alter
40
42
  --dump-without-table-options
41
43
  --index-removed-drop-column
42
44
  --enable-migration-comments
@@ -0,0 +1,157 @@
1
+ unless postgresql?
2
+ describe 'Ridgepole::Client#diff -> migrate' do
3
+ context 'when add column' do
4
+ let(:actual_dsl) {
5
+ <<-RUBY
6
+ create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
7
+ t.string "name", limit: 255, default: "", null: false
8
+ end
9
+
10
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
11
+
12
+ create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
13
+ t.string "dept_name", limit: 40, null: false
14
+ end
15
+
16
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
17
+
18
+ create_table "dept_emp", id: false, force: :cascade do |t|
19
+ t.integer "emp_no", limit: 4, null: false
20
+ t.string "dept_no", limit: 4, null: false
21
+ t.date "from_date", null: false
22
+ t.date "to_date", null: false
23
+ end
24
+
25
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
26
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
27
+
28
+ create_table "dept_manager", id: false, force: :cascade do |t|
29
+ t.string "dept_no", limit: 4, null: false
30
+ t.integer "emp_no", limit: 4, null: false
31
+ t.date "from_date", null: false
32
+ t.date "to_date", null: false
33
+ end
34
+
35
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
36
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
37
+
38
+ create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
39
+ t.integer "emp_no", limit: 4, null: false
40
+ t.integer "club_id", limit: 4, null: false
41
+ end
42
+
43
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
44
+
45
+ create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
46
+ t.date "birth_date", null: false
47
+ t.string "first_name", limit: 14, null: false
48
+ t.string "last_name", limit: 16, null: false
49
+ t.string "gender", limit: 1, null: false
50
+ t.date "hire_date", null: false
51
+ end
52
+
53
+ create_table "salaries", id: false, force: :cascade do |t|
54
+ t.integer "emp_no", limit: 4, null: false
55
+ t.integer "salary", limit: 4, null: false
56
+ t.date "from_date", null: false
57
+ t.date "to_date", null: false
58
+ end
59
+
60
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
61
+
62
+ create_table "titles", id: false, force: :cascade do |t|
63
+ t.integer "emp_no", limit: 4, null: false
64
+ t.string "title", limit: 50, null: false
65
+ t.date "from_date", null: false
66
+ t.date "to_date"
67
+ end
68
+
69
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
+ RUBY
71
+ }
72
+
73
+ let(:expected_dsl) {
74
+ <<-RUBY
75
+ create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
76
+ t.string "name", limit: 255, default: "", null: false
77
+ end
78
+
79
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
80
+
81
+ create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
82
+ t.string "dept_name", limit: 40, null: false
83
+ end
84
+
85
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
86
+
87
+ create_table "dept_emp", id: false, force: :cascade do |t|
88
+ t.integer "emp_no", limit: 4, null: false
89
+ t.string "dept_no", limit: 4, null: false
90
+ t.date "from_date", null: false
91
+ t.date "to_date", null: false
92
+ end
93
+
94
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
95
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
96
+
97
+ create_table "dept_manager", id: false, force: :cascade do |t|
98
+ t.string "dept_no", limit: 4, null: false
99
+ t.integer "emp_no", limit: 4, null: false
100
+ t.date "from_date", null: false
101
+ t.date "to_date", null: false
102
+ end
103
+
104
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
105
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
106
+
107
+ create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
108
+ t.integer "emp_no", limit: 4, null: false
109
+ t.integer "club_id", limit: 4, null: false
110
+ t.string "any_col", limit: 255, null: false
111
+ end
112
+
113
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
114
+
115
+ create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
116
+ t.date "birth_date", null: false
117
+ t.string "first_name", limit: 14, null: false
118
+ t.string "last_name", limit: 16, null: false
119
+ t.string "gender", limit: 1, null: false
120
+ t.date "hire_date", null: false
121
+ t.integer "age", limit: 4, null: false
122
+ t.date "updated_at"
123
+ end
124
+
125
+ create_table "salaries", id: false, force: :cascade do |t|
126
+ t.integer "emp_no", limit: 4, null: false
127
+ t.integer "salary", limit: 4, null: false
128
+ t.date "from_date", null: false
129
+ t.date "to_date", null: false
130
+ end
131
+
132
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
133
+
134
+ create_table "titles", id: false, force: :cascade do |t|
135
+ t.integer "emp_no", limit: 4, null: false
136
+ t.string "title", limit: 50, null: false
137
+ t.date "from_date", null: false
138
+ t.date "to_date"
139
+ end
140
+
141
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
142
+ RUBY
143
+ }
144
+
145
+ before { subject.diff(actual_dsl).migrate }
146
+ subject { client }
147
+
148
+ it {
149
+ delta = subject.diff(expected_dsl)
150
+ expect(delta.differ?).to be_truthy
151
+ expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
152
+ delta.migrate(alter_extra: 'FORCE')
153
+ expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
154
+ }
155
+ end
156
+ end
157
+ end
@@ -0,0 +1,93 @@
1
+ unless postgresql?
2
+ describe 'Ridgepole::Client#diff -> migrate' do
3
+ context 'when create index' do
4
+ let(:dsl) {
5
+ <<-RUBY
6
+ create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
7
+ t.string "name", limit: 255, default: "", null: false
8
+ end
9
+
10
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
11
+
12
+ create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
13
+ t.string "dept_name", limit: 40, null: false
14
+ end
15
+
16
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
17
+
18
+ create_table "dept_emp", id: false, force: :cascade do |t|
19
+ t.integer "emp_no", limit: 4, null: false
20
+ t.string "dept_no", limit: 4, null: false
21
+ t.date "from_date", null: false
22
+ t.date "to_date", null: false
23
+ end
24
+
25
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
26
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
27
+
28
+ create_table "dept_manager", id: false, force: :cascade do |t|
29
+ t.string "dept_no", limit: 4, null: false
30
+ t.integer "emp_no", limit: 4, null: false
31
+ t.date "from_date", null: false
32
+ t.date "to_date", null: false
33
+ end
34
+
35
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
36
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
37
+
38
+ create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
39
+ t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
40
+ t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
41
+ end
42
+
43
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
44
+
45
+ create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
46
+ t.date "birth_date", null: false
47
+ t.string "first_name", limit: 14, null: false
48
+ t.string "last_name", limit: 16, null: false
49
+ t.string "gender", limit: 1, null: false
50
+ t.date "hire_date", null: false
51
+ end
52
+
53
+ create_table "salaries", id: false, force: :cascade do |t|
54
+ t.integer "emp_no", limit: 4, null: false
55
+ t.integer "salary", limit: 4, null: false
56
+ t.date "from_date", null: false
57
+ t.date "to_date", null: false
58
+ end
59
+
60
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
61
+
62
+ create_table "titles", id: false, force: :cascade do |t|
63
+ t.integer "emp_no", limit: 4, null: false
64
+ t.string "title", limit: 50, null: false
65
+ t.date "from_date", null: false
66
+ t.date "to_date"
67
+ end
68
+
69
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
+ RUBY
71
+ }
72
+
73
+ let(:actual_dsl) {
74
+ dsl.delete_add_index('clubs', ['name']).
75
+ delete_add_index('employee_clubs', ['emp_no', 'club_id']).
76
+ delete_add_index('titles', ['emp_no'])
77
+ }
78
+
79
+ let(:expected_dsl) { dsl }
80
+
81
+ before { subject.diff(actual_dsl).migrate }
82
+ subject { client(mysql_use_alter: true) }
83
+
84
+ it {
85
+ delta = subject.diff(expected_dsl)
86
+ expect(delta.differ?).to be_truthy
87
+ expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
88
+ delta.migrate
89
+ expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
90
+ }
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,93 @@
1
+ unless postgresql?
2
+ describe 'Ridgepole::Client#diff -> migrate' do
3
+ context 'when drop index' do
4
+ let(:dsl) {
5
+ <<-RUBY
6
+ create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
7
+ t.string "name", limit: 255, default: "", null: false
8
+ end
9
+
10
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
11
+
12
+ create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
13
+ t.string "dept_name", limit: 40, null: false
14
+ end
15
+
16
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
17
+
18
+ create_table "dept_emp", id: false, force: :cascade do |t|
19
+ t.integer "emp_no", limit: 4, null: false
20
+ t.string "dept_no", limit: 4, null: false
21
+ t.date "from_date", null: false
22
+ t.date "to_date", null: false
23
+ end
24
+
25
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
26
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
27
+
28
+ create_table "dept_manager", id: false, force: :cascade do |t|
29
+ t.string "dept_no", limit: 4, null: false
30
+ t.integer "emp_no", limit: 4, null: false
31
+ t.date "from_date", null: false
32
+ t.date "to_date", null: false
33
+ end
34
+
35
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
36
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
37
+
38
+ create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
39
+ t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
40
+ t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
41
+ end
42
+
43
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
44
+
45
+ create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
46
+ t.date "birth_date", null: false
47
+ t.string "first_name", limit: 14, null: false
48
+ t.string "last_name", limit: 16, null: false
49
+ t.string "gender", limit: 1, null: false
50
+ t.date "hire_date", null: false
51
+ end
52
+
53
+ create_table "salaries", id: false, force: :cascade do |t|
54
+ t.integer "emp_no", limit: 4, null: false
55
+ t.integer "salary", limit: 4, null: false
56
+ t.date "from_date", null: false
57
+ t.date "to_date", null: false
58
+ end
59
+
60
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
61
+
62
+ create_table "titles", id: false, force: :cascade do |t|
63
+ t.integer "emp_no", limit: 4, null: false
64
+ t.string "title", limit: 50, null: false
65
+ t.date "from_date", null: false
66
+ t.date "to_date"
67
+ end
68
+
69
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
+ RUBY
71
+ }
72
+
73
+ let(:actual_dsl) { dsl }
74
+
75
+ let(:expected_dsl) {
76
+ dsl.delete_add_index('clubs', ['name']).
77
+ delete_add_index('employee_clubs', ['emp_no', 'club_id']).
78
+ delete_add_index('titles', ['emp_no'])
79
+ }
80
+
81
+ before { subject.diff(actual_dsl).migrate }
82
+ subject { client(mysql_use_alter: true) }
83
+
84
+ it {
85
+ delta = subject.diff(expected_dsl)
86
+ expect(delta.differ?).to be_truthy
87
+ expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
88
+ delta.migrate
89
+ expect(subject.dump.each_line.select {|i| i !~ /\A\Z/ }.join).to eq expected_dsl.strip_heredoc.strip.each_line.select {|i| i !~ /\A\Z/ }.join
90
+ }
91
+ end
92
+ end
93
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ridgepole
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4.beta
4
+ version: 0.6.4.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
@@ -162,6 +162,7 @@ files:
162
162
  - lib/ridgepole/dsl_parser.rb
163
163
  - lib/ridgepole/dumper.rb
164
164
  - lib/ridgepole/execute_expander.rb
165
+ - lib/ridgepole/ext/abstract_mysql_adapter.rb
165
166
  - lib/ridgepole/ext/migration_comments.rb
166
167
  - lib/ridgepole/external_sql_executer.rb
167
168
  - lib/ridgepole/logger.rb
@@ -188,6 +189,7 @@ files:
188
189
  - spec/mysql/migrate/check_orphan_index_spec.rb
189
190
  - spec/mysql/migrate/migrate_add_column2_spec.rb
190
191
  - spec/mysql/migrate/migrate_add_column_spec.rb
192
+ - spec/mysql/migrate/migrate_add_column_with_alter_extra_spec.rb
191
193
  - spec/mysql/migrate/migrate_add_column_with_script_spec.rb
192
194
  - spec/mysql/migrate/migrate_change_column2_spec.rb
193
195
  - spec/mysql/migrate/migrate_change_column3_spec.rb
@@ -228,6 +230,8 @@ files:
228
230
  - spec/mysql/migrate/migrate_with_ignore_tables_spec.rb
229
231
  - spec/mysql/migrate/migrate_with_pre_post_query_spec.rb
230
232
  - spec/mysql/migrate/migrate_with_tables_spec.rb
233
+ - spec/mysql/migrate_/migrate_create_index_with_alter_spec.rb
234
+ - spec/mysql/migrate_/migrate_drop_index_with_alter_spec.rb
231
235
  - spec/mysql/ridgepole_test_database.sql
232
236
  - spec/mysql/ridgepole_test_tables.sql
233
237
  - spec/postgresql/diff/diff_spec.rb
@@ -295,6 +299,7 @@ test_files:
295
299
  - spec/mysql/migrate/check_orphan_index_spec.rb
296
300
  - spec/mysql/migrate/migrate_add_column2_spec.rb
297
301
  - spec/mysql/migrate/migrate_add_column_spec.rb
302
+ - spec/mysql/migrate/migrate_add_column_with_alter_extra_spec.rb
298
303
  - spec/mysql/migrate/migrate_add_column_with_script_spec.rb
299
304
  - spec/mysql/migrate/migrate_change_column2_spec.rb
300
305
  - spec/mysql/migrate/migrate_change_column3_spec.rb
@@ -335,6 +340,8 @@ test_files:
335
340
  - spec/mysql/migrate/migrate_with_ignore_tables_spec.rb
336
341
  - spec/mysql/migrate/migrate_with_pre_post_query_spec.rb
337
342
  - spec/mysql/migrate/migrate_with_tables_spec.rb
343
+ - spec/mysql/migrate_/migrate_create_index_with_alter_spec.rb
344
+ - spec/mysql/migrate_/migrate_drop_index_with_alter_spec.rb
338
345
  - spec/mysql/ridgepole_test_database.sql
339
346
  - spec/mysql/ridgepole_test_tables.sql
340
347
  - spec/postgresql/diff/diff_spec.rb