X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/fc9046ce6fcb3b4c4962285737767ea094b4cb00..3d906fe8c6303c00e399ce2dfecc3471959fbe6e:/db/migrate/006_tile_nodes.rb diff --git a/db/migrate/006_tile_nodes.rb b/db/migrate/006_tile_nodes.rb index f3a1edbb2..4f40a5f39 100644 --- a/db/migrate/006_tile_nodes.rb +++ b/db/migrate/006_tile_nodes.rb @@ -1,15 +1,17 @@ +require 'lib/migrate' + class TileNodes < ActiveRecord::Migration def self.upgrade_table(from_table, to_table, model) - begin + if ENV["USE_DB_FUNCTIONS"] execute <<-END_SQL INSERT INTO #{to_table} (id, latitude, longitude, user_id, visible, tags, timestamp, tile) SELECT id, ROUND(latitude * 10000000), ROUND(longitude * 10000000), user_id, visible, tags, timestamp, - tile_for_point(CAST(ROUND(latitude * 10000000) AS UNSIGNED), - CAST(ROUND(longitude * 10000000) AS UNSIGNED)) + tile_for_point(CAST(ROUND(latitude * 10000000) AS INTEGER), + CAST(ROUND(longitude * 10000000) AS INTEGER)) FROM #{from_table} END_SQL - rescue ActiveRecord::StatementInvalid => ex + else execute <<-END_SQL INSERT INTO #{to_table} (id, latitude, longitude, user_id, visible, tags, timestamp, tile) SELECT id, ROUND(latitude * 10000000), ROUND(longitude * 10000000), @@ -33,6 +35,8 @@ class TileNodes < ActiveRecord::Migration end def self.up + remove_index "current_nodes", :name => "current_nodes_timestamp_idx" + rename_table "current_nodes", "current_nodes_v5" create_table "current_nodes", innodb_table do |t| @@ -49,12 +53,14 @@ class TileNodes < ActiveRecord::Migration add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx" add_index "current_nodes", ["tile"], :name => "current_nodes_tile_idx" - change_column "current_nodes", "tile", :integer, :null => false, :unsigned => true + change_column "current_nodes", "tile", :four_byte_unsigned upgrade_table "current_nodes_v5", "current_nodes", Node drop_table "current_nodes_v5" + remove_index "nodes", :name=> "nodes_uid_idx" + remove_index "nodes", :name=> "nodes_timestamp_idx" rename_table "nodes", "nodes_v5" create_table "nodes", myisam_table do |t| @@ -72,7 +78,7 @@ class TileNodes < ActiveRecord::Migration add_index "nodes", ["timestamp"], :name => "nodes_timestamp_idx" add_index "nodes", ["tile"], :name => "nodes_tile_idx" - change_column "nodes", "tile", :integer, :null => false, :unsigned => true + change_column "nodes", "tile", :four_byte_unsigned upgrade_table "nodes_v5", "nodes", OldNode