Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToon Claes <toon@gitlab.com>2021-10-07 10:54:53 +0300
committerToon Claes <toon@gitlab.com>2021-10-07 10:54:53 +0300
commitefb14ad0a5a0b23ebd96d3216c07c135258fd24e (patch)
tree293a57a2327a28354311023bfbcca70ee99b5421
parentdf7dadcc3f74276a7176234d4b1475299f46c05c (diff)
parente7a8c92b8f98337945cad16905aabf64f9c1aae1 (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.go33
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