fast_change_table 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ __fast\_change\_table__ 1.3.0
2
+
3
+ * adding bulk alter support
4
+
5
+
1
6
  __fast\_change\_table__ 1.2.0
2
7
 
3
8
  * updating for Rails 3 compatibility
data/Gemfile.lock CHANGED
@@ -1,21 +1,21 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fast_change_table (1.1.3)
4
+ fast_change_table (1.3.0)
5
5
  activerecord (>= 2.3)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- activemodel (3.2.0)
11
- activesupport (= 3.2.0)
10
+ activemodel (3.2.1)
11
+ activesupport (= 3.2.1)
12
12
  builder (~> 3.0.0)
13
- activerecord (3.2.0)
14
- activemodel (= 3.2.0)
15
- activesupport (= 3.2.0)
13
+ activerecord (3.2.1)
14
+ activemodel (= 3.2.1)
15
+ activesupport (= 3.2.1)
16
16
  arel (~> 3.0.0)
17
17
  tzinfo (~> 0.3.29)
18
- activesupport (3.2.0)
18
+ activesupport (3.2.1)
19
19
  i18n (~> 0.6)
20
20
  multi_json (~> 1.0)
21
21
  arel (3.0.0)
data/README.md CHANGED
@@ -4,7 +4,7 @@ Use fast\_change\_table instead of change_table in your migrations on large tabl
4
4
 
5
5
  __Known issues:__
6
6
 
7
- * Currently fast\_change\_table does not supported in Rails 3 reversible migration method.
7
+ * Currently fast\_change\_table transformations do not support Rails 3 reversible migration method.
8
8
 
9
9
 
10
10
  __Usage:__
@@ -12,7 +12,9 @@ __Usage:__
12
12
  uses ordinary change_table syntax but adds two options
13
13
 
14
14
  * "replace\_keys" to remove all indexes; new indexes will be specified
15
- - "disable\_keys" to remove indexes and apply them after data load; this is a tremendous performance enhancement for a dbms with fast index creation; it is active by default. set it to false to prevent its use
15
+ - "disable\_keys" to remove indexes and apply them after data load; this is a tremendous performance enhancement for a dbms with fast index creation; it is active by default. set it to false to prevent its usage
16
+
17
+ the bulk option is set by default set it to false to prevent its usage.
16
18
 
17
19
  __Example:__
18
20
 
@@ -7,7 +7,7 @@ module FastChangeTable
7
7
  rename_table(table_name, old_table_name)
8
8
  begin
9
9
  create_table_like(old_table_name, table_name, options)
10
- renamed_columns = change_table_with_remaps(table_name, &block)
10
+ renamed_columns = change_table_with_remaps(table_name, options, &block)
11
11
  index_list = options[:disable_keys] == false ? [] : disable_indexes(table_name)
12
12
  #prepare the columns names for the insert statements
13
13
  copy_table(old_table_name, table_name, renamed_columns)
@@ -21,9 +21,17 @@ module FastChangeTable
21
21
  end
22
22
  end
23
23
 
24
- def change_table_with_remaps(table_name)
25
- t = ActiveRecord::ConnectionAdapters::Table.new(table_name, self)
26
- yield t
24
+ def change_table_with_remaps(table_name, options = {})
25
+ options.reverse_merge!(:bulk => true)
26
+ if respond_to?('supports_bulk_alter?') && supports_bulk_alter? && options[:bulk]
27
+ recorder = ActiveRecord::Migration::CommandRecorder.new(self)
28
+ t = ActiveRecord::ConnectionAdapters::Table.new(table_name, recorder)
29
+ yield t
30
+ bulk_change_table(table_name, recorder.commands)
31
+ else
32
+ t = ActiveRecord::ConnectionAdapters::Table.new(table_name, self)
33
+ yield t
34
+ end
27
35
  return t.renamed_columns
28
36
  end
29
37
 
@@ -1,3 +1,3 @@
1
1
  module FastChangeTable
2
- VERSION = "1.2.0"
2
+ VERSION = "1.3.0"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast_change_table
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 2
8
+ - 3
9
9
  - 0
10
- version: 1.2.0
10
+ version: 1.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Grady Griffin
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-05 00:00:00 Z
18
+ date: 2012-02-07 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: activerecord