diff --git a/db/migrate/20120202190701_remove_public_share_visibilities.rb b/db/migrate/20120202190701_remove_public_share_visibilities.rb index a884c8825..ca8ea4b37 100644 --- a/db/migrate/20120202190701_remove_public_share_visibilities.rb +++ b/db/migrate/20120202190701_remove_public_share_visibilities.rb @@ -23,15 +23,27 @@ class RemovePublicShareVisibilities < ActiveRecord::Migration end while index < shareable_size + 100 do - sql = <<-SQL - DELETE - FROM share_visibilities AS sv - USING #{table_name} as p - WHERE sv.shareable_id = p.id - AND sv.shareable_type = '#{type}' - AND p.public IS TRUE - AND p.id < #{index}; - SQL + if postgres? + sql = <<-SQL + DELETE + FROM share_visibilities AS sv + USING #{table_name} as p + WHERE sv.shareable_id = p.id + AND sv.shareable_type = '#{type}' + AND p.public IS TRUE + AND p.id < #{index}; + SQL + else + sql = <<-SQL + DELETE sv + FROM share_visibilities AS sv + INNER JOIN #{table_name} + ON sv.shareable_id = #{table_name}.id + WHERE sv.shareable_type = "#{type}" + AND #{table_name}.public IS TRUE + AND #{table_name}.id < #{index}; + SQL + end puts "deleted public share vis up to #{index} of #{type}" ActiveRecord::Base.connection.execute(sql)