Handle differences in interval constant formatting.

This commit is contained in:
Tom Hughes 2009-04-16 20:47:18 +00:00
parent bb7c4f93e2
commit a4de927a28
2 changed files with 10 additions and 2 deletions

View file

@ -7,8 +7,8 @@ class AddEndTimeToChangesets < ActiveRecord::Migration
# it appears that execute will only accept string arguments, so
# this is an ugly, ugly hack to get some sort of mysql/postgres
# independence. now i have to go wash my brain with bleach.
execute("update changesets set closed_at=(now()-'1 hour') where open=(1=0)")
execute("update changesets set closed_at=(now()+'1 hour') where open=(1=1)")
execute("update changesets set closed_at=(now()-#{interval_constant('1 hour')}) where open=(1=0)")
execute("update changesets set closed_at=(now()+#{interval_constant('1 hour')}) where open=(1=1)")
# remove the open column as it is unnecessary now and denormalises
# the table.

View file

@ -98,6 +98,10 @@ module ActiveRecord
def alter_primary_key(table_name, new_columns)
execute("alter table #{table_name} drop primary key, add primary key (#{new_columns.join(',')})")
end
def interval_constant(interval)
"'#{interval}'"
end
end
class PostgreSQLAdapter
@ -150,6 +154,10 @@ module ActiveRecord
def alter_primary_key(table_name, new_columns)
execute "alter table #{table_name} drop constraint #{table_name}_pkey; alter table #{table_name} add primary key (#{new_columns.join(',')})"
end
def interval_constant(interval)
"'#{interval}'::interval"
end
end
end
end