From 9bc483ad98e45ac3496494663e0f198438d9af04 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 27 May 2009 15:25:28 +0000 Subject: [PATCH 1/1] Only use the db functions for migrations if USE_DB_FUNCTIONS is set in the environment. This could possibly be revisited when we move to rails 2.3 by using a nested transaction to try the function without causing the surrounding transaction to abort. --- db/migrate/005_tile_tracepoints.rb | 4 ++-- db/migrate/006_tile_nodes.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/db/migrate/005_tile_tracepoints.rb b/db/migrate/005_tile_tracepoints.rb index 9f17461b1..a4ac5f51a 100644 --- a/db/migrate/005_tile_tracepoints.rb +++ b/db/migrate/005_tile_tracepoints.rb @@ -6,9 +6,9 @@ class TileTracepoints < ActiveRecord::Migration add_index "gps_points", ["tile"], :name => "points_tile_idx" remove_index "gps_points", :name => "points_idx" - begin + if ENV["USE_DB_FUNCTIONS"] Tracepoint.update_all("latitude = latitude * 10, longitude = longitude * 10, tile = tile_for_point(latitude * 10, longitude * 10)") - rescue ActiveRecord::StatementInvalid => ex + else Tracepoint.find(:all).each do |tp| tp.latitude = tp.latitude * 10 tp.longitude = tp.longitude * 10 diff --git a/db/migrate/006_tile_nodes.rb b/db/migrate/006_tile_nodes.rb index 51b2502d7..4f40a5f39 100644 --- a/db/migrate/006_tile_nodes.rb +++ b/db/migrate/006_tile_nodes.rb @@ -2,7 +2,7 @@ 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), @@ -11,7 +11,7 @@ class TileNodes < ActiveRecord::Migration 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), -- 2.43.2