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

20210906145021_link_repository_id.go « migrations « datastore « praefect « internal - gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 8ee84d968995d29e22857cf6f6567d8b3a8cb425 (plain)
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
package migrations

import migrate "github.com/rubenv/sql-migrate"

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`,
			`
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
			`,
		},
		Down: []string{},
	}

	allMigrations = append(allMigrations, m)
}