fast_change_table 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -1,7 +1,6 @@
1
1
  Use fast_change_table instead of change_table in your migrations on large tables of data. Uses a duplication pattern to speed things up.
2
2
 
3
3
  # Known issues
4
- - Probably only works with MySQL
5
4
  - Not tested
6
5
 
7
6
  uses ordinary change_table syntax but adds two options
@@ -26,4 +25,15 @@ fast_add_indexes(table, &block)
26
25
  fast_add_indexes :sometable do |t|
27
26
  t.index :some_column
28
27
  t.index [:some_other_column, :column_three], :name => "a_multicolumn_index"
29
- end
28
+ end
29
+
30
+ copy_table(from_table, to_table, remaps = [])
31
+ copies rows from one table into another. this probably only works with Mysql.
32
+ by default copies data from column of from_table to to_table of same name.
33
+ will not copy data where there is no corresponding column.
34
+ the remaps argument can be supplied to tell copy table how to handle unmatched columns or override this behavior
35
+ examples
36
+
37
+ copy_table(old_users_without_email_hash, new_table, ['MD5(email)', 'email_hash'])
38
+
39
+ copy_table(old_users_without_total, new_table, ['sum(payments)', 'total_payments'])
@@ -1,3 +1,3 @@
1
1
  module FastChangeTable
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -1,16 +1,6 @@
1
1
  module ActiveRecord
2
2
  module ConnectionAdapters #:nodoc:
3
3
 
4
- class MysqlAdapter < AbstractAdapter
5
- def tables_without_views(name = nil) #:nodoc:
6
- tables = []
7
- result = execute("SHOW FULL TABLES WHERE Table_type = 'BASE TABLE'", name)
8
- result.each { |field| tables << field[0] }
9
- result.free
10
- tables
11
- end
12
- end
13
-
14
4
  module SchemaStatements
15
5
  def change_table_with_remaps(table_name)
16
6
  t = Table.new(table_name, self)
@@ -104,17 +94,11 @@ module FastChangeTable
104
94
  to_columns_to_s = to_columns.join(', ')
105
95
  execute "INSERT INTO #{to}(#{to_columns_to_s}) SELECT #{from_columns_to_s} FROM #{from}"
106
96
  end
107
-
108
- def create_table(table_name, options = {})
109
- rtn = super
110
- execute "alter table `#{table_name}` row_format=dynamic" if connection.adapter_name =~ /^mysql/i
111
- rtn
112
- end
113
97
 
114
98
  def table_schema_code(table)
115
99
  dumper = ActiveRecord::SchemaDumper.send(:new, connection)
116
100
  stream = StringIO.new
117
- dumper.table(table.to_s,stream)
101
+ dumper.send(:table, table.to_s, stream)
118
102
  stream.rewind
119
103
  code = stream.read
120
104
  end
@@ -122,33 +106,20 @@ module FastChangeTable
122
106
  #removes all the indexes
123
107
  def disable_indexes(table)
124
108
  list = connection.indexes(table)
125
- if connection.adapter_name =~ /^mysql/i
126
- sql = list.collect { |i| "DROP INDEX #{i.name}"}.join(', ')
127
- execute "ALTER TABLE #{table} #{sql}"
128
- else
129
- list.each do |i|
130
- remove_index table, :name => i.name
131
- end
132
- end
109
+ list.each do |i|
110
+ remove_index table, :name => i.name
111
+ end
133
112
  list
134
113
  end
135
114
 
136
115
  #
137
116
  def enable_indexes(table, list)
138
- if connection.adapter_name =~ /^mysql/i
139
- sql = list.collect do |i|
140
- cols = i.columns.collect {|c| i.lengths ? "`#{c}`(#{i.lengths[c]})" : "`#{c}`"}.join(',')
141
- "ADD #{'UNIQUE ' if i.unique}INDEX #{i.name} (#{cols})"
142
- end.join(', ')
143
- execute "ALTER TABLE #{table} #{sql}"
144
- else
145
- list.each do |i|
146
- options = {}
147
- options[:name] = i.name if i.name
148
- options[:length] = i.lengths if i.lengths
149
- options[:unique] = i.unique if i.unique
150
- add_index table, i.columns, options
151
- end
117
+ list.each do |i|
118
+ options = {}
119
+ options[:name] = i.name if i.name
120
+ options[:length] = i.lengths if i.lengths
121
+ options[:unique] = i.unique if i.unique
122
+ add_index table, i.columns, options
152
123
  end
153
124
  true
154
125
  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: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Grady Griffin
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-01-09 00:00:00 -05:00
19
- default_executable:
18
+ date: 2012-01-23 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: activerecord
@@ -52,7 +51,6 @@ files:
52
51
  - lib/fast_change_table.rb
53
52
  - lib/fast_change_table/version.rb
54
53
  - test/fast_change_table_test.rb
55
- has_rdoc: true
56
54
  homepage: https://github.com/moxie/fast_change_table
57
55
  licenses: []
58
56
 
@@ -82,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
80
  requirements: []
83
81
 
84
82
  rubyforge_project: fast_change_table
85
- rubygems_version: 1.5.3
83
+ rubygems_version: 1.8.15
86
84
  signing_key:
87
85
  specification_version: 3
88
86
  summary: Faster table changes