Files
codeocean/db/migrate/20221206221333_set_database_interval_style.rb
Sebastian Serth 6bfda8e552 Migrate default intervalstyle in database
By switching the `intervalstyle`, we assume to fix CODEOCEAN-FT. It is caused by by PgBouncer providing different database connections to Rails that might behave differently.
2022-12-06 23:43:23 +01:00

28 lines
772 B
Ruby

# frozen_string_literal: true
class SetDatabaseIntervalStyle < ActiveRecord::Migration[7.0]
# We set the intervalstyle to ISO 8601 for the current database.
# Without this change, a transaction-based PgBouncer might cause
# issues with when switching between different sessions (e.g., by
# returning intervals in the default intervalstyle).
def change
connection = ActiveRecord::Base.connection
dbname = connection.current_database
reversible do |dir|
dir.up do
execute <<~SQL.squish
ALTER DATABASE "#{dbname}" SET intervalstyle = 'iso_8601';
SQL
end
dir.down do
execute <<~SQL.squish
ALTER DATABASE "#{dbname}" SET intervalstyle = 'postgres';
SQL
end
end
end
end