X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/1ac9ea1f06e66cac4ef2557b95660fdcfa2fd176..ef7f3d800cbdd49b692df10d312e5fd880e2e938:/db/migrate/008_remove_segments.rb diff --git a/db/migrate/008_remove_segments.rb b/db/migrate/008_remove_segments.rb index 8c049b62a..2820f82f8 100644 --- a/db/migrate/008_remove_segments.rb +++ b/db/migrate/008_remove_segments.rb @@ -1,49 +1,49 @@ -require 'lib/migrate' +require 'migrate' class RemoveSegments < ActiveRecord::Migration def self.up have_segs = select_value("SELECT count(*) FROM current_segments").to_i != 0 if have_segs - prefix = File.join Dir.tmpdir, "008_remove_segments.#{$$}." + prefix = File.join Dir.tmpdir, "008_remove_segments.#{$PROCESS_ID}." cmd = "db/migrate/008_remove_segments_helper" src = "#{cmd}.cc" - if not File.exists? cmd or File.mtime(cmd) < File.mtime(src) then - system 'c++ -O3 -Wall `mysql_config --cflags --libs` ' + - "#{src} -o #{cmd}" or fail + if !File.exist?(cmd) || File.mtime(cmd) < File.mtime(src) + system('c++ -O3 -Wall `mysql_config --cflags --libs` ' + + "#{src} -o #{cmd}") || fail end - conn_opts = ActiveRecord::Base.connection. - instance_eval { @connection_options } - args = conn_opts.map { |arg| arg.to_s } + [prefix] + conn_opts = ActiveRecord::Base.connection + .instance_eval { @connection_options } + args = conn_opts.map(&:to_s) + [prefix] fail "#{cmd} failed" unless system cmd, *args - tempfiles = ['ways', 'way_nodes', 'way_tags', - 'relations', 'relation_members', 'relation_tags']. - map { |base| prefix + base } + tempfiles = %w(ways way_nodes way_tags relations relation_members relation_tags) + .map { |base| prefix + base } ways, way_nodes, way_tags, - relations, relation_members, relation_tags = tempfiles + relations, relation_members, relation_tags = tempfiles end drop_table :segments drop_table :way_segments - create_table :way_nodes, myisam_table do |t| - t.column :id, :bigint, :limit => 64, :null => false - t.column :node_id, :bigint, :limit => 64, :null => false - t.column :version, :bigint, :limit => 20, :null => false - t.column :sequence_id, :bigint, :limit => 11, :null => false + create_table :way_nodes, :id => false do |t| + t.column :id, :bigint, :null => false + t.column :node_id, :bigint, :null => false + t.column :version, :bigint, :null => false + t.column :sequence_id, :bigint, :null => false end add_primary_key :way_nodes, [:id, :version, :sequence_id] drop_table :current_segments drop_table :current_way_segments - create_table :current_way_nodes, innodb_table do |t| - t.column :id, :bigint, :limit => 64, :null => false - t.column :node_id, :bigint, :limit => 64, :null => false - t.column :sequence_id, :bigint, :limit => 11, :null => false + create_table :current_way_nodes, :id => false do |t| + t.column :id, :bigint, :null => false + t.column :node_id, :bigint, :null => false + t.column :sequence_id, :bigint, :null => false end add_primary_key :current_way_nodes, [:id, :sequence_id] + add_index :current_way_nodes, [:node_id], :name => "current_way_nodes_node_idx" execute "TRUNCATE way_tags" execute "TRUNCATE ways" @@ -65,9 +65,6 @@ class RemoveSegments < ActiveRecord::Migration execute "INSERT INTO current_way_tags SELECT id, k, v FROM way_tags" end - # and then readd the index - add_index :current_way_nodes, [:node_id], :name => "current_way_nodes_node_idx" - if have_segs execute "LOAD DATA INFILE '#{relations}' INTO TABLE relations #{csvopts} (id, user_id, timestamp) SET visible = 1, version = 1" execute "LOAD DATA INFILE '#{relation_members}' INTO TABLE relation_members #{csvopts} (id, member_type, member_id, member_role) SET version = 1" @@ -84,6 +81,6 @@ class RemoveSegments < ActiveRecord::Migration end def self.down - raise IrreversibleMigration.new + fail ActiveRecord::IrreversibleMigration end end