From 63826f294da3bdd732c96a40b266f13157b0ad83 Mon Sep 17 00:00:00 2001 From: Olivier 'reivilibre Date: Mon, 1 Dec 2025 12:45:19 +0000 Subject: [PATCH] Reapply "Add 'IF NOT EXISTS' to all 'CREATE INDEX CONCURRENTLY' statements to avoid deadlocks (#5297)" (#5299) This reverts commit 6abe9ac5e26dbc99f62aeef3087821eea067bc2c, reversing changes made to 1de9148f533d368ec440959ca8807e76ab06485c. --- .../20250410000000_idx_compat_access_tokens_session_fk.sql | 2 +- .../20250410000001_idx_compat_refresh_tokens_session_fk.sql | 2 +- ...250410000002_idx_compat_refresh_tokens_access_token_fk.sql | 2 +- .../migrations/20250410000003_idx_compat_sessions_user_fk.sql | 2 +- .../20250410000004_idx_compat_sessions_user_session_fk.sql | 2 +- .../20250410000006_idx_compat_sso_logins_session_fk.sql | 2 +- .../20250410000007_idx_oauth2_access_tokens_session_fk.sql | 2 +- ...50410000008_idx_oauth2_authorization_grants_session_fk.sql | 2 +- ...250410000009_idx_oauth2_authorization_grants_client_fk.sql | 2 +- .../20250410000010_idx_oauth2_consents_client_fk.sql | 2 +- .../migrations/20250410000011_idx_oauth2_consents_user_fk.sql | 2 +- ...20250410000012_idx_oauth2_device_code_grants_client_fk.sql | 2 +- ...0250410000013_idx_oauth2_device_code_grants_session_fk.sql | 2 +- ...10000014_idx_oauth2_device_code_grants_user_session_fk.sql | 2 +- .../20250410000015_idx_oauth2_refresh_tokens_session_fk.sql | 2 +- ...250410000016_idx_oauth2_refresh_tokens_access_token_fk.sql | 2 +- ...000017_idx_oauth2_refresh_tokens_next_refresh_token_fk.sql | 2 +- .../20250410000018_idx_oauth2_sessions_user_session_fk.sql | 2 +- .../20250410000019_idx_oauth2_sessions_client_fk.sql | 2 +- .../migrations/20250410000020_idx_oauth2_sessions_user_fk.sql | 2 +- .../20250410000022_idx_queue_jobs_started_by_fk.sql | 2 +- .../20250410000023_idx_queue_jobs_next_attempt_fk.sql | 2 +- .../20250410000024_idx_queue_jobs_schedule_name_fk.sql | 2 +- ..._idx_upstream_oauth_authorization_sessions_provider_fk.sql | 2 +- ...0026_idx_upstream_oauth_authorization_sessions_link_fk.sql | 2 +- .../20250410000027_idx_upstream_oauth_links_provider_fk.sql | 2 +- .../20250410000028_idx_upstream_oauth_links_user_fk.sql | 2 +- ..._idx_user_email_authentication_codes_authentication_fk.sql | 2 +- ...0000030_idx_user_email_authentications_user_session_fk.sql | 2 +- ...31_idx_user_email_authentications_user_registration_fk.sql | 2 +- .../migrations/20250410000032_idx_user_emails_user_fk.sql | 2 +- .../migrations/20250410000033_idx_user_emails_email_idx.sql | 2 +- .../migrations/20250410000034_idx_user_passwords_user_fk.sql | 2 +- .../20250410000035_idx_user_recovery_tickets_session_fk.sql | 2 +- ...20250410000036_idx_user_recovery_tickets_user_email_fk.sql | 2 +- ...0000037_idx_user_registrations_email_authentication_fk.sql | 2 +- ...00038_idx_user_session_authentications_user_session_fk.sql | 2 +- ...0039_idx_user_session_authentications_user_password_fk.sql | 2 +- ...user_session_authentications_upstream_oauth_session_fk.sql | 2 +- .../migrations/20250410000041_idx_user_sessions_user_fk.sql | 2 +- .../migrations/20250410000043_idx_user_terms_user_fk.sql | 2 +- .../migrations/20250410000044_idx_users_primary_email_fk.sql | 2 +- .../20250410000045_idx_user_recovery_tickets_ticket_idx.sql | 2 +- .../migrations/20250410121612_users_lower_username_idx.sql | 2 +- .../migrations/20250602212101_idx_user_registration_token.sql | 4 ++-- .../migrations/20250708155857_idx_user_emails_lower_email.sql | 2 +- .../migrations/20250915092635_users_username_trgm_idx.sql | 2 +- ...127145951_user_registration_upstream_oauth_session_idx.sql | 2 +- 48 files changed, 49 insertions(+), 49 deletions(-) diff --git a/crates/storage-pg/migrations/20250410000000_idx_compat_access_tokens_session_fk.sql b/crates/storage-pg/migrations/20250410000000_idx_compat_access_tokens_session_fk.sql index 777118233..880488b54 100644 --- a/crates/storage-pg/migrations/20250410000000_idx_compat_access_tokens_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000000_idx_compat_access_tokens_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS compat_access_tokens_session_fk ON compat_access_tokens (compat_session_id); diff --git a/crates/storage-pg/migrations/20250410000001_idx_compat_refresh_tokens_session_fk.sql b/crates/storage-pg/migrations/20250410000001_idx_compat_refresh_tokens_session_fk.sql index d0e99ad9b..806a9f1e1 100644 --- a/crates/storage-pg/migrations/20250410000001_idx_compat_refresh_tokens_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000001_idx_compat_refresh_tokens_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS compat_refresh_tokens_session_fk ON compat_refresh_tokens (compat_session_id); diff --git a/crates/storage-pg/migrations/20250410000002_idx_compat_refresh_tokens_access_token_fk.sql b/crates/storage-pg/migrations/20250410000002_idx_compat_refresh_tokens_access_token_fk.sql index 133b00072..399f3731f 100644 --- a/crates/storage-pg/migrations/20250410000002_idx_compat_refresh_tokens_access_token_fk.sql +++ b/crates/storage-pg/migrations/20250410000002_idx_compat_refresh_tokens_access_token_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS compat_refresh_tokens_access_token_fk ON compat_refresh_tokens (compat_access_token_id); diff --git a/crates/storage-pg/migrations/20250410000003_idx_compat_sessions_user_fk.sql b/crates/storage-pg/migrations/20250410000003_idx_compat_sessions_user_fk.sql index 3234fc8ca..1b038c53f 100644 --- a/crates/storage-pg/migrations/20250410000003_idx_compat_sessions_user_fk.sql +++ b/crates/storage-pg/migrations/20250410000003_idx_compat_sessions_user_fk.sql @@ -7,7 +7,7 @@ -- Including the `last_active_at` column lets us effeciently filter in-memory -- for those sessions without fetching the rows, and without including it in the -- index btree -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS compat_sessions_user_fk ON compat_sessions (user_id) INCLUDE (last_active_at); diff --git a/crates/storage-pg/migrations/20250410000004_idx_compat_sessions_user_session_fk.sql b/crates/storage-pg/migrations/20250410000004_idx_compat_sessions_user_session_fk.sql index 4b35f9960..52633ad0b 100644 --- a/crates/storage-pg/migrations/20250410000004_idx_compat_sessions_user_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000004_idx_compat_sessions_user_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS compat_sessions_user_session_fk ON compat_sessions (user_session_id); diff --git a/crates/storage-pg/migrations/20250410000006_idx_compat_sso_logins_session_fk.sql b/crates/storage-pg/migrations/20250410000006_idx_compat_sso_logins_session_fk.sql index e88224e66..da209e586 100644 --- a/crates/storage-pg/migrations/20250410000006_idx_compat_sso_logins_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000006_idx_compat_sso_logins_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS compat_sso_logins_session_fk ON compat_sso_logins (compat_session_id); diff --git a/crates/storage-pg/migrations/20250410000007_idx_oauth2_access_tokens_session_fk.sql b/crates/storage-pg/migrations/20250410000007_idx_oauth2_access_tokens_session_fk.sql index 7495af2a3..fd44fb6c4 100644 --- a/crates/storage-pg/migrations/20250410000007_idx_oauth2_access_tokens_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000007_idx_oauth2_access_tokens_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_access_tokens_session_fk ON oauth2_access_tokens (oauth2_session_id); diff --git a/crates/storage-pg/migrations/20250410000008_idx_oauth2_authorization_grants_session_fk.sql b/crates/storage-pg/migrations/20250410000008_idx_oauth2_authorization_grants_session_fk.sql index dac57bf91..4a32010f2 100644 --- a/crates/storage-pg/migrations/20250410000008_idx_oauth2_authorization_grants_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000008_idx_oauth2_authorization_grants_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_authorization_grants_session_fk ON oauth2_authorization_grants (oauth2_session_id); diff --git a/crates/storage-pg/migrations/20250410000009_idx_oauth2_authorization_grants_client_fk.sql b/crates/storage-pg/migrations/20250410000009_idx_oauth2_authorization_grants_client_fk.sql index fd5d30344..945d751db 100644 --- a/crates/storage-pg/migrations/20250410000009_idx_oauth2_authorization_grants_client_fk.sql +++ b/crates/storage-pg/migrations/20250410000009_idx_oauth2_authorization_grants_client_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_authorization_grants_client_fk ON oauth2_authorization_grants (oauth2_client_id); diff --git a/crates/storage-pg/migrations/20250410000010_idx_oauth2_consents_client_fk.sql b/crates/storage-pg/migrations/20250410000010_idx_oauth2_consents_client_fk.sql index ae8e0b5dd..b0928ef5e 100644 --- a/crates/storage-pg/migrations/20250410000010_idx_oauth2_consents_client_fk.sql +++ b/crates/storage-pg/migrations/20250410000010_idx_oauth2_consents_client_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_consents_client_fk ON oauth2_consents (oauth2_client_id); diff --git a/crates/storage-pg/migrations/20250410000011_idx_oauth2_consents_user_fk.sql b/crates/storage-pg/migrations/20250410000011_idx_oauth2_consents_user_fk.sql index c9226b7d6..89751503b 100644 --- a/crates/storage-pg/migrations/20250410000011_idx_oauth2_consents_user_fk.sql +++ b/crates/storage-pg/migrations/20250410000011_idx_oauth2_consents_user_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_consents_user_fk ON oauth2_consents (user_id); diff --git a/crates/storage-pg/migrations/20250410000012_idx_oauth2_device_code_grants_client_fk.sql b/crates/storage-pg/migrations/20250410000012_idx_oauth2_device_code_grants_client_fk.sql index a9981fe4b..3f97117f7 100644 --- a/crates/storage-pg/migrations/20250410000012_idx_oauth2_device_code_grants_client_fk.sql +++ b/crates/storage-pg/migrations/20250410000012_idx_oauth2_device_code_grants_client_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_device_code_grants_client_fk ON oauth2_device_code_grant (oauth2_client_id); diff --git a/crates/storage-pg/migrations/20250410000013_idx_oauth2_device_code_grants_session_fk.sql b/crates/storage-pg/migrations/20250410000013_idx_oauth2_device_code_grants_session_fk.sql index be8f685d1..7400dcd5d 100644 --- a/crates/storage-pg/migrations/20250410000013_idx_oauth2_device_code_grants_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000013_idx_oauth2_device_code_grants_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_device_code_grants_session_fk ON oauth2_device_code_grant (oauth2_session_id); diff --git a/crates/storage-pg/migrations/20250410000014_idx_oauth2_device_code_grants_user_session_fk.sql b/crates/storage-pg/migrations/20250410000014_idx_oauth2_device_code_grants_user_session_fk.sql index f3f6613d7..8b07a4366 100644 --- a/crates/storage-pg/migrations/20250410000014_idx_oauth2_device_code_grants_user_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000014_idx_oauth2_device_code_grants_user_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_device_code_grants_user_session_fk ON oauth2_device_code_grant (user_session_id); diff --git a/crates/storage-pg/migrations/20250410000015_idx_oauth2_refresh_tokens_session_fk.sql b/crates/storage-pg/migrations/20250410000015_idx_oauth2_refresh_tokens_session_fk.sql index 897d247c8..7da896268 100644 --- a/crates/storage-pg/migrations/20250410000015_idx_oauth2_refresh_tokens_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000015_idx_oauth2_refresh_tokens_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_refresh_tokens_session_fk ON oauth2_refresh_tokens (oauth2_session_id); diff --git a/crates/storage-pg/migrations/20250410000016_idx_oauth2_refresh_tokens_access_token_fk.sql b/crates/storage-pg/migrations/20250410000016_idx_oauth2_refresh_tokens_access_token_fk.sql index 5d391e6a5..f6059d223 100644 --- a/crates/storage-pg/migrations/20250410000016_idx_oauth2_refresh_tokens_access_token_fk.sql +++ b/crates/storage-pg/migrations/20250410000016_idx_oauth2_refresh_tokens_access_token_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_refresh_tokens_access_token_fk ON oauth2_refresh_tokens (oauth2_access_token_id); diff --git a/crates/storage-pg/migrations/20250410000017_idx_oauth2_refresh_tokens_next_refresh_token_fk.sql b/crates/storage-pg/migrations/20250410000017_idx_oauth2_refresh_tokens_next_refresh_token_fk.sql index f593f1d28..40fd117cc 100644 --- a/crates/storage-pg/migrations/20250410000017_idx_oauth2_refresh_tokens_next_refresh_token_fk.sql +++ b/crates/storage-pg/migrations/20250410000017_idx_oauth2_refresh_tokens_next_refresh_token_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_refresh_tokens_next_refresh_token_fk ON oauth2_refresh_tokens (next_oauth2_refresh_token_id); diff --git a/crates/storage-pg/migrations/20250410000018_idx_oauth2_sessions_user_session_fk.sql b/crates/storage-pg/migrations/20250410000018_idx_oauth2_sessions_user_session_fk.sql index 44d6d0e3c..b2639e714 100644 --- a/crates/storage-pg/migrations/20250410000018_idx_oauth2_sessions_user_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000018_idx_oauth2_sessions_user_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_sessions_user_session_fk ON oauth2_sessions (user_session_id); diff --git a/crates/storage-pg/migrations/20250410000019_idx_oauth2_sessions_client_fk.sql b/crates/storage-pg/migrations/20250410000019_idx_oauth2_sessions_client_fk.sql index ad868a310..341d2dea1 100644 --- a/crates/storage-pg/migrations/20250410000019_idx_oauth2_sessions_client_fk.sql +++ b/crates/storage-pg/migrations/20250410000019_idx_oauth2_sessions_client_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_sessions_client_fk ON oauth2_sessions (oauth2_client_id); diff --git a/crates/storage-pg/migrations/20250410000020_idx_oauth2_sessions_user_fk.sql b/crates/storage-pg/migrations/20250410000020_idx_oauth2_sessions_user_fk.sql index b47bb00a8..d7b5f52af 100644 --- a/crates/storage-pg/migrations/20250410000020_idx_oauth2_sessions_user_fk.sql +++ b/crates/storage-pg/migrations/20250410000020_idx_oauth2_sessions_user_fk.sql @@ -7,7 +7,7 @@ -- Including the `last_active_at` column lets us effeciently filter in-memory -- for those sessions without fetching the rows, and without including it in the -- index btree -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS oauth2_sessions_user_fk ON oauth2_sessions (user_id) INCLUDE (last_active_at); diff --git a/crates/storage-pg/migrations/20250410000022_idx_queue_jobs_started_by_fk.sql b/crates/storage-pg/migrations/20250410000022_idx_queue_jobs_started_by_fk.sql index 38bb79ede..272785332 100644 --- a/crates/storage-pg/migrations/20250410000022_idx_queue_jobs_started_by_fk.sql +++ b/crates/storage-pg/migrations/20250410000022_idx_queue_jobs_started_by_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS queue_jobs_started_by_fk ON queue_jobs (started_by); diff --git a/crates/storage-pg/migrations/20250410000023_idx_queue_jobs_next_attempt_fk.sql b/crates/storage-pg/migrations/20250410000023_idx_queue_jobs_next_attempt_fk.sql index ea611f76e..9824557e1 100644 --- a/crates/storage-pg/migrations/20250410000023_idx_queue_jobs_next_attempt_fk.sql +++ b/crates/storage-pg/migrations/20250410000023_idx_queue_jobs_next_attempt_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS queue_jobs_next_attempt_fk ON queue_jobs (next_attempt_id); diff --git a/crates/storage-pg/migrations/20250410000024_idx_queue_jobs_schedule_name_fk.sql b/crates/storage-pg/migrations/20250410000024_idx_queue_jobs_schedule_name_fk.sql index 02b2bfaea..4c70fea50 100644 --- a/crates/storage-pg/migrations/20250410000024_idx_queue_jobs_schedule_name_fk.sql +++ b/crates/storage-pg/migrations/20250410000024_idx_queue_jobs_schedule_name_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS queue_jobs_schedule_name_fk ON queue_jobs (schedule_name); diff --git a/crates/storage-pg/migrations/20250410000025_idx_upstream_oauth_authorization_sessions_provider_fk.sql b/crates/storage-pg/migrations/20250410000025_idx_upstream_oauth_authorization_sessions_provider_fk.sql index f5e388613..b86b1e0ee 100644 --- a/crates/storage-pg/migrations/20250410000025_idx_upstream_oauth_authorization_sessions_provider_fk.sql +++ b/crates/storage-pg/migrations/20250410000025_idx_upstream_oauth_authorization_sessions_provider_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS upstream_oauth_authorization_sessions_provider_fk ON upstream_oauth_authorization_sessions (upstream_oauth_provider_id); diff --git a/crates/storage-pg/migrations/20250410000026_idx_upstream_oauth_authorization_sessions_link_fk.sql b/crates/storage-pg/migrations/20250410000026_idx_upstream_oauth_authorization_sessions_link_fk.sql index aa08e7fa1..1b296090a 100644 --- a/crates/storage-pg/migrations/20250410000026_idx_upstream_oauth_authorization_sessions_link_fk.sql +++ b/crates/storage-pg/migrations/20250410000026_idx_upstream_oauth_authorization_sessions_link_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS upstream_oauth_authorization_sessions_link_fk ON upstream_oauth_authorization_sessions (upstream_oauth_link_id); diff --git a/crates/storage-pg/migrations/20250410000027_idx_upstream_oauth_links_provider_fk.sql b/crates/storage-pg/migrations/20250410000027_idx_upstream_oauth_links_provider_fk.sql index 9f6a9301f..55dd22612 100644 --- a/crates/storage-pg/migrations/20250410000027_idx_upstream_oauth_links_provider_fk.sql +++ b/crates/storage-pg/migrations/20250410000027_idx_upstream_oauth_links_provider_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS upstream_oauth_links_provider_fk ON upstream_oauth_links (upstream_oauth_provider_id); diff --git a/crates/storage-pg/migrations/20250410000028_idx_upstream_oauth_links_user_fk.sql b/crates/storage-pg/migrations/20250410000028_idx_upstream_oauth_links_user_fk.sql index af7791f18..21ba23e40 100644 --- a/crates/storage-pg/migrations/20250410000028_idx_upstream_oauth_links_user_fk.sql +++ b/crates/storage-pg/migrations/20250410000028_idx_upstream_oauth_links_user_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS upstream_oauth_links_user_fk ON upstream_oauth_links (user_id); diff --git a/crates/storage-pg/migrations/20250410000029_idx_user_email_authentication_codes_authentication_fk.sql b/crates/storage-pg/migrations/20250410000029_idx_user_email_authentication_codes_authentication_fk.sql index 889fac2ab..591409632 100644 --- a/crates/storage-pg/migrations/20250410000029_idx_user_email_authentication_codes_authentication_fk.sql +++ b/crates/storage-pg/migrations/20250410000029_idx_user_email_authentication_codes_authentication_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_email_authentication_codes_authentication_fk ON user_email_authentication_codes (user_email_authentication_id); diff --git a/crates/storage-pg/migrations/20250410000030_idx_user_email_authentications_user_session_fk.sql b/crates/storage-pg/migrations/20250410000030_idx_user_email_authentications_user_session_fk.sql index 3a6284f67..bd1558b7d 100644 --- a/crates/storage-pg/migrations/20250410000030_idx_user_email_authentications_user_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000030_idx_user_email_authentications_user_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_email_authentications_user_session_fk ON user_email_authentications (user_session_id); diff --git a/crates/storage-pg/migrations/20250410000031_idx_user_email_authentications_user_registration_fk.sql b/crates/storage-pg/migrations/20250410000031_idx_user_email_authentications_user_registration_fk.sql index 9ad343ac9..7f233f7c3 100644 --- a/crates/storage-pg/migrations/20250410000031_idx_user_email_authentications_user_registration_fk.sql +++ b/crates/storage-pg/migrations/20250410000031_idx_user_email_authentications_user_registration_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_email_authentications_user_registration_fk ON user_email_authentications (user_registration_id); diff --git a/crates/storage-pg/migrations/20250410000032_idx_user_emails_user_fk.sql b/crates/storage-pg/migrations/20250410000032_idx_user_emails_user_fk.sql index f66117d43..c4834c714 100644 --- a/crates/storage-pg/migrations/20250410000032_idx_user_emails_user_fk.sql +++ b/crates/storage-pg/migrations/20250410000032_idx_user_emails_user_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_emails_user_fk ON user_emails (user_id); diff --git a/crates/storage-pg/migrations/20250410000033_idx_user_emails_email_idx.sql b/crates/storage-pg/migrations/20250410000033_idx_user_emails_email_idx.sql index e75e1e028..b0f2ec4ac 100644 --- a/crates/storage-pg/migrations/20250410000033_idx_user_emails_email_idx.sql +++ b/crates/storage-pg/migrations/20250410000033_idx_user_emails_email_idx.sql @@ -5,6 +5,6 @@ -- Please see LICENSE in the repository root for full details. -- This isn't a foreign key, but we really need that to be indexed -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_emails_email_idx ON user_emails (email); diff --git a/crates/storage-pg/migrations/20250410000034_idx_user_passwords_user_fk.sql b/crates/storage-pg/migrations/20250410000034_idx_user_passwords_user_fk.sql index cfc1a9df7..334fb878a 100644 --- a/crates/storage-pg/migrations/20250410000034_idx_user_passwords_user_fk.sql +++ b/crates/storage-pg/migrations/20250410000034_idx_user_passwords_user_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_passwords_user_fk ON user_passwords (user_id); diff --git a/crates/storage-pg/migrations/20250410000035_idx_user_recovery_tickets_session_fk.sql b/crates/storage-pg/migrations/20250410000035_idx_user_recovery_tickets_session_fk.sql index 22537f6a1..6cda37194 100644 --- a/crates/storage-pg/migrations/20250410000035_idx_user_recovery_tickets_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000035_idx_user_recovery_tickets_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_recovery_tickets_session_fk ON user_recovery_tickets (user_recovery_session_id); diff --git a/crates/storage-pg/migrations/20250410000036_idx_user_recovery_tickets_user_email_fk.sql b/crates/storage-pg/migrations/20250410000036_idx_user_recovery_tickets_user_email_fk.sql index 81bee0605..e6561ade5 100644 --- a/crates/storage-pg/migrations/20250410000036_idx_user_recovery_tickets_user_email_fk.sql +++ b/crates/storage-pg/migrations/20250410000036_idx_user_recovery_tickets_user_email_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_recovery_tickets_user_email_fk ON user_recovery_tickets (user_email_id); diff --git a/crates/storage-pg/migrations/20250410000037_idx_user_registrations_email_authentication_fk.sql b/crates/storage-pg/migrations/20250410000037_idx_user_registrations_email_authentication_fk.sql index 3385114d1..95a9ec128 100644 --- a/crates/storage-pg/migrations/20250410000037_idx_user_registrations_email_authentication_fk.sql +++ b/crates/storage-pg/migrations/20250410000037_idx_user_registrations_email_authentication_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_registrations_email_authentication_fk ON user_registrations (email_authentication_id); diff --git a/crates/storage-pg/migrations/20250410000038_idx_user_session_authentications_user_session_fk.sql b/crates/storage-pg/migrations/20250410000038_idx_user_session_authentications_user_session_fk.sql index e71abc0a6..ee78dbd73 100644 --- a/crates/storage-pg/migrations/20250410000038_idx_user_session_authentications_user_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000038_idx_user_session_authentications_user_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_session_authentications_user_session_fk ON user_session_authentications (user_session_id); diff --git a/crates/storage-pg/migrations/20250410000039_idx_user_session_authentications_user_password_fk.sql b/crates/storage-pg/migrations/20250410000039_idx_user_session_authentications_user_password_fk.sql index c6e262d0e..450a0672a 100644 --- a/crates/storage-pg/migrations/20250410000039_idx_user_session_authentications_user_password_fk.sql +++ b/crates/storage-pg/migrations/20250410000039_idx_user_session_authentications_user_password_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_session_authentications_user_password_fk ON user_session_authentications (user_password_id); diff --git a/crates/storage-pg/migrations/20250410000040_idx_user_session_authentications_upstream_oauth_session_fk.sql b/crates/storage-pg/migrations/20250410000040_idx_user_session_authentications_upstream_oauth_session_fk.sql index 98f5728ad..c021595d7 100644 --- a/crates/storage-pg/migrations/20250410000040_idx_user_session_authentications_upstream_oauth_session_fk.sql +++ b/crates/storage-pg/migrations/20250410000040_idx_user_session_authentications_upstream_oauth_session_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_session_authentications_upstream_oauth_session_fk ON user_session_authentications (upstream_oauth_authorization_session_id); diff --git a/crates/storage-pg/migrations/20250410000041_idx_user_sessions_user_fk.sql b/crates/storage-pg/migrations/20250410000041_idx_user_sessions_user_fk.sql index e2b83345c..443216bd9 100644 --- a/crates/storage-pg/migrations/20250410000041_idx_user_sessions_user_fk.sql +++ b/crates/storage-pg/migrations/20250410000041_idx_user_sessions_user_fk.sql @@ -7,7 +7,7 @@ -- Including the `last_active_at` column lets us effeciently filter in-memory -- for those sessions without fetching the rows, and without including it in the -- index btree -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_sessions_user_fk ON user_sessions (user_id) INCLUDE (last_active_at); diff --git a/crates/storage-pg/migrations/20250410000043_idx_user_terms_user_fk.sql b/crates/storage-pg/migrations/20250410000043_idx_user_terms_user_fk.sql index f95b63a72..f885b557d 100644 --- a/crates/storage-pg/migrations/20250410000043_idx_user_terms_user_fk.sql +++ b/crates/storage-pg/migrations/20250410000043_idx_user_terms_user_fk.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_terms_user_fk ON user_terms (user_id); diff --git a/crates/storage-pg/migrations/20250410000044_idx_users_primary_email_fk.sql b/crates/storage-pg/migrations/20250410000044_idx_users_primary_email_fk.sql index 57ae2d0d0..0a6318efa 100644 --- a/crates/storage-pg/migrations/20250410000044_idx_users_primary_email_fk.sql +++ b/crates/storage-pg/migrations/20250410000044_idx_users_primary_email_fk.sql @@ -6,6 +6,6 @@ -- We don't use this column anymore, but… it will still tank the performance on -- deletions of user_emails if we don't have it -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS users_primary_email_fk ON users (primary_user_email_id); diff --git a/crates/storage-pg/migrations/20250410000045_idx_user_recovery_tickets_ticket_idx.sql b/crates/storage-pg/migrations/20250410000045_idx_user_recovery_tickets_ticket_idx.sql index 3030078f9..648b42fa6 100644 --- a/crates/storage-pg/migrations/20250410000045_idx_user_recovery_tickets_ticket_idx.sql +++ b/crates/storage-pg/migrations/20250410000045_idx_user_recovery_tickets_ticket_idx.sql @@ -5,6 +5,6 @@ -- Please see LICENSE in the repository root for full details. -- This isn't a foreign key, but we really need that to be indexed -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_recovery_tickets_ticket_idx ON user_recovery_tickets (ticket); diff --git a/crates/storage-pg/migrations/20250410121612_users_lower_username_idx.sql b/crates/storage-pg/migrations/20250410121612_users_lower_username_idx.sql index 625e07e1b..0225f6a72 100644 --- a/crates/storage-pg/migrations/20250410121612_users_lower_username_idx.sql +++ b/crates/storage-pg/migrations/20250410121612_users_lower_username_idx.sql @@ -6,5 +6,5 @@ -- Create an index on the username column, lower-cased, so that we can lookup -- usernames in a case-insensitive manner. -CREATE INDEX CONCURRENTLY users_lower_username_idx +CREATE INDEX CONCURRENTLY IF NOT EXISTS users_lower_username_idx ON users (LOWER(username)); diff --git a/crates/storage-pg/migrations/20250602212101_idx_user_registration_token.sql b/crates/storage-pg/migrations/20250602212101_idx_user_registration_token.sql index a25d6358a..957b453bf 100644 --- a/crates/storage-pg/migrations/20250602212101_idx_user_registration_token.sql +++ b/crates/storage-pg/migrations/20250602212101_idx_user_registration_token.sql @@ -4,6 +4,6 @@ -- SPDX-License-Identifier: AGPL-3.0-only -- Please see LICENSE in the repository root for full details. -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_registrations_user_registration_token_id_fk - ON user_registrations (user_registration_token_id); \ No newline at end of file + ON user_registrations (user_registration_token_id); diff --git a/crates/storage-pg/migrations/20250708155857_idx_user_emails_lower_email.sql b/crates/storage-pg/migrations/20250708155857_idx_user_emails_lower_email.sql index 06b3dde6a..1b4f9afe7 100644 --- a/crates/storage-pg/migrations/20250708155857_idx_user_emails_lower_email.sql +++ b/crates/storage-pg/migrations/20250708155857_idx_user_emails_lower_email.sql @@ -6,6 +6,6 @@ -- When we're looking up an email address, we want to be able to do a case-insensitive -- lookup, so we index the email address lowercase and request it like that -CREATE INDEX CONCURRENTLY +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_emails_lower_email_idx ON user_emails (LOWER(email)); diff --git a/crates/storage-pg/migrations/20250915092635_users_username_trgm_idx.sql b/crates/storage-pg/migrations/20250915092635_users_username_trgm_idx.sql index 5f007d750..3e2cd4dca 100644 --- a/crates/storage-pg/migrations/20250915092635_users_username_trgm_idx.sql +++ b/crates/storage-pg/migrations/20250915092635_users_username_trgm_idx.sql @@ -6,5 +6,5 @@ -- This adds an index on the username field for ILIKE '%search%' operations, -- enabling fuzzy searches of usernames -CREATE INDEX CONCURRENTLY users_username_trgm_idx +CREATE INDEX CONCURRENTLY IF NOT EXISTS users_username_trgm_idx ON users USING gin(username gin_trgm_ops); diff --git a/crates/storage-pg/migrations/20251127145951_user_registration_upstream_oauth_session_idx.sql b/crates/storage-pg/migrations/20251127145951_user_registration_upstream_oauth_session_idx.sql index b9890ffad..665a2ff18 100644 --- a/crates/storage-pg/migrations/20251127145951_user_registration_upstream_oauth_session_idx.sql +++ b/crates/storage-pg/migrations/20251127145951_user_registration_upstream_oauth_session_idx.sql @@ -5,5 +5,5 @@ -- Please see LICENSE in the repository root for full details. -- Index on the new foreign key added by the previous migration -CREATE INDEX CONCURRENTLY user_registrations_upstream_oauth_session_id_idx +CREATE INDEX CONCURRENTLY IF NOT EXISTS user_registrations_upstream_oauth_session_id_idx ON user_registrations (upstream_oauth_authorization_session_id);