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.
This commit is contained in:
Sebastian Serth
2022-12-06 23:43:06 +01:00
parent bc5baed05e
commit 6bfda8e552
4 changed files with 33 additions and 1 deletions

View File

@ -0,0 +1,27 @@
# 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