summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Jankowski <matt@jankowski.online>2023-10-26 16:35:15 -0400
committerGitHub <noreply@github.com>2023-10-26 20:35:15 +0000
commit4aa05d45fc45b797e0a3b7d40885ef89c2161a73 (patch)
treed750f5873ce2e40873b66bc121fe1d980225f65c
parent2d8f759a342813c48e00412d17ec2517ed9ef761 (diff)
Capture minimum postgres version 12 (#27528)
-rw-r--r--README.md2
-rw-r--r--config/initializers/strong_migrations.rb2
-rw-r--r--lib/mastodon/migration_helpers.rb63
3 files changed, 7 insertions, 60 deletions
diff --git a/README.md b/README.md
index ce9b5cfbdc1..62b04f0203d 100644
--- a/README.md
+++ b/README.md
@@ -67,7 +67,7 @@ Mastodon acts as an OAuth2 provider, so 3rd party apps can use the REST and Stre
### Requirements
-- **PostgreSQL** 9.5+
+- **PostgreSQL** 12+
- **Redis** 4+
- **Ruby** 2.7+
- **Node.js** 16+
diff --git a/config/initializers/strong_migrations.rb b/config/initializers/strong_migrations.rb
index 10b3805db24..4dcec1c2a29 100644
--- a/config/initializers/strong_migrations.rb
+++ b/config/initializers/strong_migrations.rb
@@ -1,4 +1,4 @@
# frozen_string_literal: true
StrongMigrations.start_after = 2017_09_24_022025
-StrongMigrations.target_version = 10
+StrongMigrations.target_version = 12
diff --git a/lib/mastodon/migration_helpers.rb b/lib/mastodon/migration_helpers.rb
index a92a8767ce3..7bc12988384 100644
--- a/lib/mastodon/migration_helpers.rb
+++ b/lib/mastodon/migration_helpers.rb
@@ -158,10 +158,8 @@ module Mastodon
'in the body of your migration class'
end
- if supports_drop_index_concurrently?
- options = options.merge({ algorithm: :concurrently })
- disable_statement_timeout
- end
+ options = options.merge({ algorithm: :concurrently })
+ disable_statement_timeout
remove_index(table_name, **options.merge({ column: column_name }))
end
@@ -182,28 +180,12 @@ module Mastodon
'in the body of your migration class'
end
- if supports_drop_index_concurrently?
- options = options.merge({ algorithm: :concurrently })
- disable_statement_timeout
- end
+ options = options.merge({ algorithm: :concurrently })
+ disable_statement_timeout
remove_index(table_name, **options.merge({ name: index_name }))
end
- # Only available on Postgresql >= 9.2
- def supports_drop_index_concurrently?
- version = select_one("SELECT current_setting('server_version_num') AS v")['v'].to_i
-
- version >= 90_200
- end
-
- # Only available on Postgresql >= 11
- def supports_add_column_with_default?
- version = select_one("SELECT current_setting('server_version_num') AS v")['v'].to_i
-
- version >= 110_000
- end
-
# Adds a foreign key with only minimal locking on the tables involved.
#
# This method only requires minimal locking when using PostgreSQL. When
@@ -420,42 +402,7 @@ module Mastodon
# This method can also take a block which is passed directly to the
# `update_column_in_batches` method.
def add_column_with_default(table, column, type, default:, limit: nil, allow_null: false, &block)
- if supports_add_column_with_default?
- add_column(table, column, type, default: default, limit: limit, null: allow_null)
- return
- end
-
- if transaction_open?
- raise 'add_column_with_default can not be run inside a transaction, ' \
- 'you can disable transactions by calling disable_ddl_transaction! ' \
- 'in the body of your migration class'
- end
-
- disable_statement_timeout
-
- transaction do
- if limit
- add_column(table, column, type, default: nil, limit: limit)
- else
- add_column(table, column, type, default: nil)
- end
-
- # Changing the default before the update ensures any newly inserted
- # rows already use the proper default value.
- change_column_default(table, column, default)
- end
-
- begin
- update_column_in_batches(table, column, default, &block)
-
- change_column_null(table, column, false) unless allow_null
- # We want to rescue _all_ exceptions here, even those that don't inherit
- # from StandardError.
- rescue Exception => error # rubocop: disable all
- remove_column(table, column)
-
- raise error
- end
+ add_column(table, column, type, default: default, limit: limit, null: allow_null)
end
# Renames a column without requiring downtime.