]> git.openstreetmap.org Git - rails.git/commitdiff
Only use the db functions for migrations if USE_DB_FUNCTIONS is set
authorTom Hughes <tom@compton.nu>
Wed, 27 May 2009 15:25:28 +0000 (15:25 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 27 May 2009 15:25:28 +0000 (15:25 +0000)
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
db/migrate/006_tile_nodes.rb

index 9f17461b17bd25bc0a88f53b71d8e9f6bae2fe05..a4ac5f51a7cde11834cf7918f01d265e2af26b3e 100644 (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
index 51b2502d7448d976fe3883dbbf123b9c709ef6be..4f40a5f398a2f7732d0db78a0f3bcf1f7aba5895 100644 (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),