diff options
author | Toon Claes <toon@gitlab.com> | 2021-10-07 10:54:53 +0300 |
---|---|---|
committer | Toon Claes <toon@gitlab.com> | 2021-10-07 10:54:53 +0300 |
commit | efb14ad0a5a0b23ebd96d3216c07c135258fd24e (patch) | |
tree | 293a57a2327a28354311023bfbcca70ee99b5421 | |
parent | df7dadcc3f74276a7176234d4b1475299f46c05c (diff) | |
parent | e7a8c92b8f98337945cad16905aabf64f9c1aae1 (diff) |
Merge branch 'ps-fix-migration' into 'master'
sql-migrate: Update storage_repositories table
Closes #3806
See merge request gitlab-org/gitaly!3927
-rw-r--r-- | internal/praefect/datastore/migrations/20210906145021_link_repository_id.go | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/internal/praefect/datastore/migrations/20210906145021_link_repository_id.go b/internal/praefect/datastore/migrations/20210906145021_link_repository_id.go index 08c9663bd..15deb0fe2 100644 --- a/internal/praefect/datastore/migrations/20210906145021_link_repository_id.go +++ b/internal/praefect/datastore/migrations/20210906145021_link_repository_id.go @@ -6,13 +6,32 @@ func init() { m := &migrate.Migration{ Id: "20210906145021_link_repository_id", Up: []string{ - ` -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 - `, + `-- +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.relative_path, repositories.repository_id + FROM storage_repositories JOIN repositories USING (virtual_storage, relative_path) + WHERE storage_repositories.repository_id IS NULL + LIMIT 150 + ) AS sub + WHERE storage_repositories.virtual_storage = sub.virtual_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`, ` UPDATE repository_assignments SET repository_id = repositories.repository_id |