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.
This commit is contained in:
Tom Hughes 2009-05-27 15:25:28 +00:00
parent 044febd3aa
commit 9bc483ad98
2 changed files with 4 additions and 4 deletions

View file

@ -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

View file

@ -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),