X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/0f91ad89663fbadca007b1c4dce03f9a76ad0e5f..fc9046ce6fcb3b4c4962285737767ea094b4cb00:/db/migrate/006_tile_nodes.rb diff --git a/db/migrate/006_tile_nodes.rb b/db/migrate/006_tile_nodes.rb index 9624a0136..f3a1edbb2 100644 --- a/db/migrate/006_tile_nodes.rb +++ b/db/migrate/006_tile_nodes.rb @@ -1,13 +1,26 @@ class TileNodes < ActiveRecord::Migration - def self.upgrade_table(from_table, to_table) - 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)) - FROM #{from_table} - END_SQL + def self.upgrade_table(from_table, to_table, model) + begin + 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)) + FROM #{from_table} + END_SQL + rescue ActiveRecord::StatementInvalid => ex + 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, 0 + FROM #{from_table} + END_SQL + + model.find(:all).each do |n| + n.save! + end + end end def self.downgrade_table(from_table, to_table) @@ -23,7 +36,7 @@ class TileNodes < ActiveRecord::Migration rename_table "current_nodes", "current_nodes_v5" create_table "current_nodes", innodb_table do |t| - t.column "id", :bigint, :limit => 64, :null => false + t.column "id", :bigint_pk_64, :null => false t.column "latitude", :integer, :null => false t.column "longitude", :integer, :null => false t.column "user_id", :bigint, :limit => 20, :null => false @@ -33,15 +46,13 @@ class TileNodes < ActiveRecord::Migration t.column "tile", :integer, :null => false end - add_primary_key "current_nodes", ["id"] add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx" add_index "current_nodes", ["tile"], :name => "current_nodes_tile_idx" - change_column "current_nodes", "id", :bigint, :limit => 64, :null => false, :options => "AUTO_INCREMENT" change_column "current_nodes", "tile", :integer, :null => false, :unsigned => true - upgrade_table "current_nodes_v5", "current_nodes" - + upgrade_table "current_nodes_v5", "current_nodes", Node + drop_table "current_nodes_v5" rename_table "nodes", "nodes_v5" @@ -63,7 +74,7 @@ class TileNodes < ActiveRecord::Migration change_column "nodes", "tile", :integer, :null => false, :unsigned => true - upgrade_table "nodes_v5", "nodes" + upgrade_table "nodes_v5", "nodes", OldNode drop_table "nodes_v5" end @@ -72,7 +83,7 @@ class TileNodes < ActiveRecord::Migration rename_table "current_nodes", "current_nodes_v6" create_table "current_nodes", innodb_table do |t| - t.column "id", :bigint, :limit => 64, :null => false + t.column "id", :bigint_pk_64, :null => false t.column "latitude", :double, :null => false t.column "longitude", :double, :null => false t.column "user_id", :bigint, :limit => 20, :null => false @@ -81,12 +92,9 @@ class TileNodes < ActiveRecord::Migration t.column "timestamp", :datetime, :null => false end - add_primary_key "current_nodes", ["id"] add_index "current_nodes", ["latitude", "longitude"], :name => "current_nodes_lat_lon_idx" add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx" - change_column "current_nodes", "id", :bigint, :limit => 64, :null => false, :options => "AUTO_INCREMENT" - downgrade_table "current_nodes_v6", "current_nodes" drop_table "current_nodes_v6"