diff options
author | Patrick Steinhardt <psteinhardt@gitlab.com> | 2022-02-03 11:36:59 +0300 |
---|---|---|
committer | Patrick Steinhardt <psteinhardt@gitlab.com> | 2022-02-03 11:36:59 +0300 |
commit | a76fe89ac67beb77493fdb506fc23213ab4cc32a (patch) | |
tree | 9a03c9b7a97e0c3fa0d55f24c19145c50b651714 | |
parent | 2634a6d7077cd68a3f141ed5560162b6e696e9c9 (diff) | |
parent | f7d0bd088a94a0da5c49f5fa64b7f03f4c112c31 (diff) |
Merge branch 'sh-optimize-repository-id-migration-14-4' into '14-4-stable'14-4-stable
Optimize link repository ID migration (14.4)
See merge request gitlab-org/gitaly!4244
-rw-r--r-- | internal/praefect/datastore/migrations/20210906145021_link_repository_id.go | 38 |
1 files changed, 10 insertions, 28 deletions
diff --git a/internal/praefect/datastore/migrations/20210906145021_link_repository_id.go b/internal/praefect/datastore/migrations/20210906145021_link_repository_id.go index 8ee84d968..39060d230 100644 --- a/internal/praefect/datastore/migrations/20210906145021_link_repository_id.go +++ b/internal/praefect/datastore/migrations/20210906145021_link_repository_id.go @@ -6,40 +6,22 @@ func init() { m := &migrate.Migration{ Id: "20210906145021_link_repository_id", Up: []string{ - `-- +migrate StatementBegin -DO $BODY$ - DECLARE - count_val integer DEFAULT 0; - BEGIN - LOOP - WITH updated_rows AS ( - UPDATE storage_repositories - SET repository_id = sub.repository_id - FROM ( - SELECT storage_repositories.virtual_storage, storage_repositories.storage, storage_repositories.relative_path, repositories.repository_id - FROM storage_repositories JOIN repositories USING (virtual_storage, relative_path) - WHERE storage_repositories.repository_id IS NULL - LIMIT 14 - ) AS sub - WHERE storage_repositories.virtual_storage = sub.virtual_storage - AND storage_repositories.storage = sub.storage - AND storage_repositories.relative_path = sub.relative_path - RETURNING storage_repositories.repository_id - ) - SELECT COUNT(*) INTO count_val FROM updated_rows; - EXIT WHEN count_val = 0; - END LOOP; - END -$BODY$ -LANGUAGE plpgsql --- +migrate StatementEnd`, + "ALTER TABLE storage_repositories DISABLE TRIGGER notify_on_update", + ` +UPDATE storage_repositories +SET repository_id = repositories.repository_id +FROM repositories +WHERE storage_repositories.virtual_storage = repositories.virtual_storage +AND storage_repositories.relative_path = repositories.relative_path + `, ` UPDATE repository_assignments SET repository_id = repositories.repository_id FROM repositories WHERE repository_assignments.virtual_storage = repositories.virtual_storage AND repository_assignments.relative_path = repositories.relative_path - `, + `, + "ALTER TABLE storage_repositories ENABLE TRIGGER notify_on_update", }, Down: []string{}, } |