File tree Expand file tree Collapse file tree
backend/src/osspckgs/migrations Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ DO $$
2+ BEGIN
3+ IF NOT EXISTS (
4+ SELECT 1 FROM pg_publication WHERE pubname = ' sequin_pub'
5+ ) THEN
6+ CREATE PUBLICATION sequin_pub
7+ FOR TABLE
8+ packages,
9+ versions,
10+ package_dependencies,
11+ package_maintainers,
12+ package_repos,
13+ maintainers,
14+ repos,
15+ repo_scorecard_checks,
16+ advisories,
17+ advisory_packages,
18+ advisory_affected_ranges
19+ WITH (publish_via_partition_root = true);
20+ END IF;
21+ END$$;
22+
23+ ALTER TABLE public .packages REPLICA IDENTITY FULL;
24+ ALTER TABLE public .versions REPLICA IDENTITY FULL;
25+ ALTER TABLE public .package_dependencies REPLICA IDENTITY FULL;
26+ ALTER TABLE public .package_maintainers REPLICA IDENTITY FULL;
27+ ALTER TABLE public .package_repos REPLICA IDENTITY FULL;
28+ ALTER TABLE public .maintainers REPLICA IDENTITY FULL;
29+ ALTER TABLE public .repos REPLICA IDENTITY FULL;
30+ ALTER TABLE public .repo_scorecard_checks REPLICA IDENTITY FULL;
31+ ALTER TABLE public .advisories REPLICA IDENTITY FULL;
32+ ALTER TABLE public .advisory_packages REPLICA IDENTITY FULL;
33+ ALTER TABLE public .advisory_affected_ranges REPLICA IDENTITY FULL;
34+
35+ -- versions (32) and package_dependencies (64) are hash-partitioned. REPLICA
36+ -- IDENTITY on the partitioned root does not cascade; set it on every leaf.
37+ DO $$
38+ DECLARE
39+ parent_table text ;
40+ partition_oid regclass;
41+ BEGIN
42+ FOREACH parent_table IN ARRAY ARRAY[' public.versions' , ' public.package_dependencies' ]
43+ LOOP
44+ FOR partition_oid IN
45+ SELECT inhrelid::regclass
46+ FROM pg_inherits
47+ WHERE inhparent = parent_table::regclass
48+ LOOP
49+ EXECUTE format(' ALTER TABLE %s REPLICA IDENTITY FULL' , partition_oid);
50+ END LOOP;
51+ END LOOP;
52+ END$$;
You can’t perform that action at this time.
0 commit comments