fix(migrations): keep auth identity and payment upgrades safe

This commit is contained in:
IanShaw027
2026-04-22 12:29:52 +08:00
parent be9df2bea7
commit 1ffebbb568
5 changed files with 278 additions and 80 deletions

View File

@@ -0,0 +1,14 @@
DO $$
BEGIN
IF EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'auth_identity_migration_reports'
AND column_name = 'report_type'
AND COALESCE(character_maximum_length, 0) < 80
) THEN
ALTER TABLE auth_identity_migration_reports
ALTER COLUMN report_type TYPE VARCHAR(80);
END IF;
END $$;

View File

@@ -0,0 +1,22 @@
DO $$
BEGIN
IF EXISTS (
SELECT 1
FROM pg_indexes
WHERE schemaname = 'public'
AND tablename = 'payment_orders'
AND indexname = 'paymentorder_out_trade_no_unique'
) THEN
IF EXISTS (
SELECT 1
FROM pg_indexes
WHERE schemaname = 'public'
AND tablename = 'payment_orders'
AND indexname = 'paymentorder_out_trade_no'
) THEN
EXECUTE 'DROP INDEX IF EXISTS paymentorder_out_trade_no';
END IF;
EXECUTE 'ALTER INDEX paymentorder_out_trade_no_unique RENAME TO paymentorder_out_trade_no';
END IF;
END $$;

View File

@@ -26,7 +26,14 @@ func TestMigration118DoesNotForceOverwriteAuthSourceGrantDefaults(t *testing.T)
require.True(t, strings.Contains(sql, "ON CONFLICT (key) DO NOTHING"))
}
func TestMigration109KeepsPublishedBackfillBodyAndDefersReportTypeWidening(t *testing.T) {
func TestAuthIdentityReportTypeWideningRunsBeforeLongReportWritersAndStillReconcilesAt121(t *testing.T) {
preflightContent, err := FS.ReadFile("108a_widen_auth_identity_migration_report_type.sql")
require.NoError(t, err)
preflightSQL := string(preflightContent)
require.Contains(t, preflightSQL, "ALTER TABLE auth_identity_migration_reports")
require.Contains(t, preflightSQL, "ALTER COLUMN report_type TYPE VARCHAR(80)")
content, err := FS.ReadFile("109_auth_identity_compat_backfill.sql")
require.NoError(t, err)
@@ -58,6 +65,13 @@ func TestMigration119DefersPaymentIndexRolloutToOnlineFollowup(t *testing.T) {
require.Contains(t, followupSQL, "CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS paymentorder_out_trade_no_unique")
require.Contains(t, followupSQL, "DROP INDEX CONCURRENTLY IF EXISTS paymentorder_out_trade_no")
require.Contains(t, followupSQL, "WHERE out_trade_no <> ''")
alignmentContent, err := FS.ReadFile("120a_align_payment_orders_out_trade_no_index_name.sql")
require.NoError(t, err)
alignmentSQL := string(alignmentContent)
require.Contains(t, alignmentSQL, "paymentorder_out_trade_no_unique")
require.Contains(t, alignmentSQL, "RENAME TO paymentorder_out_trade_no")
}
func TestMigration122ScrubsPendingOAuthCompletionTokensAtRest(t *testing.T) {