
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.
28 lines
772 B
Ruby
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
|