1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# frozen_string_literal: true
class RemoveTemporaryContainerRepositoryIndexes < Gitlab::Database::Migration[2.1]
INDEX_CONTAINER_REPOS_ON_NON_MIGRATED = 'tmp_index_container_repos_on_non_migrated'
INDEX_CONTAINER_REPOSITORIES_ON_ID_MIGRATION_STATE = 'tmp_index_container_repositories_on_id_migration_state'
INDEX_MIGRATED_CONTAINER_REGISTRIES = 'tmp_index_migrated_container_registries'
INDEX_CONTAINER_REPOS_ON_IMPORT_STARTED_AT_WHEN_IMPORTING = 'idx_container_repos_on_import_started_at_when_importing'
INDEX_CONTAINER_REPOS_ON_MIGRATION_STATE_MIGRATION_PLAN_CREATED =
'idx_container_repos_on_migration_state_migration_plan_created'
INDEX_CONTAINER_REPOS_ON_PRE_IMPORT_DONE_AT_WHEN_PRE_IMPORT_DONE =
'idx_container_repos_on_pre_import_done_at_when_pre_import_done'
INDEX_CONTAINER_REPOS_ON_PRE_IMPORT_STARTED_AT_WHEN_PRE_IMPORTING =
'idx_container_repos_on_pre_import_started_at_when_pre_importing'
INDEX_CONTAINER_REPOSITORIES_ON_GREATEST_COMPLETED_AT = 'index_container_repositories_on_greatest_completed_at'
INDEX_CONTAINER_REPOSITORIES_ON_MIGRATION_STATE_IMPORT_DONE_AT =
'index_container_repositories_on_migration_state_import_done_at'
disable_ddl_transaction!
def up
remove_concurrent_index_by_name :container_repositories, INDEX_CONTAINER_REPOS_ON_NON_MIGRATED
remove_concurrent_index_by_name :container_repositories, INDEX_CONTAINER_REPOSITORIES_ON_ID_MIGRATION_STATE
remove_concurrent_index_by_name :container_repositories, INDEX_MIGRATED_CONTAINER_REGISTRIES
remove_concurrent_index_by_name :container_repositories, INDEX_CONTAINER_REPOS_ON_IMPORT_STARTED_AT_WHEN_IMPORTING
remove_concurrent_index_by_name :container_repositories,
INDEX_CONTAINER_REPOS_ON_MIGRATION_STATE_MIGRATION_PLAN_CREATED
remove_concurrent_index_by_name :container_repositories,
INDEX_CONTAINER_REPOS_ON_PRE_IMPORT_DONE_AT_WHEN_PRE_IMPORT_DONE
remove_concurrent_index_by_name :container_repositories,
INDEX_CONTAINER_REPOS_ON_PRE_IMPORT_STARTED_AT_WHEN_PRE_IMPORTING
remove_concurrent_index_by_name :container_repositories, INDEX_CONTAINER_REPOSITORIES_ON_GREATEST_COMPLETED_AT
remove_concurrent_index_by_name :container_repositories,
INDEX_CONTAINER_REPOSITORIES_ON_MIGRATION_STATE_IMPORT_DONE_AT
end
def down
add_concurrent_index :container_repositories,
[:project_id, :id],
name: INDEX_CONTAINER_REPOS_ON_NON_MIGRATED,
where: "migration_state != 'import_done'"
add_concurrent_index :container_repositories,
[:id, :migration_state],
name: INDEX_CONTAINER_REPOSITORIES_ON_ID_MIGRATION_STATE
add_concurrent_index :container_repositories,
[:project_id],
name: INDEX_MIGRATED_CONTAINER_REGISTRIES,
where: "migration_state = 'import_done' OR created_at >= '2022-01-23'"
add_concurrent_index :container_repositories,
[:migration_import_started_at],
name: INDEX_CONTAINER_REPOS_ON_IMPORT_STARTED_AT_WHEN_IMPORTING,
where: "migration_state = 'importing'::text"
add_concurrent_index :container_repositories,
[:migration_state, :migration_plan, :created_at],
name: INDEX_CONTAINER_REPOS_ON_MIGRATION_STATE_MIGRATION_PLAN_CREATED
add_concurrent_index :container_repositories,
[:migration_pre_import_done_at],
name: INDEX_CONTAINER_REPOS_ON_PRE_IMPORT_DONE_AT_WHEN_PRE_IMPORT_DONE,
where: "migration_state = 'pre_import_done'::text"
add_concurrent_index :container_repositories,
[:migration_pre_import_started_at],
name: INDEX_CONTAINER_REPOS_ON_PRE_IMPORT_STARTED_AT_WHEN_PRE_IMPORTING,
where: "migration_state = 'pre_importing'::text"
execute(
<<-SQL
CREATE INDEX CONCURRENTLY #{INDEX_CONTAINER_REPOSITORIES_ON_GREATEST_COMPLETED_AT} ON container_repositories
USING btree (GREATEST(migration_pre_import_done_at, migration_import_done_at, migration_aborted_at, migration_skipped_at))
WHERE (migration_state = ANY (ARRAY['import_done'::text, 'pre_import_done'::text, 'import_aborted'::text, 'import_skipped'::text]));
SQL
)
add_concurrent_index :container_repositories,
[:migration_state, :migration_import_done_at],
name: INDEX_CONTAINER_REPOSITORIES_ON_MIGRATION_STATE_IMPORT_DONE_AT
end
end
|