Skip to content

Commit 005a440

Browse files
authored
feat: sequin backfill indexes (#4386)
Signed-off-by: anilb <epipav@gmail.com>
1 parent 5a50a56 commit 005a440

1 file changed

Lines changed: 253 additions & 0 deletions

File tree

Lines changed: 253 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,253 @@
1+
CREATE INDEX IF NOT EXISTS versions_last_synced_at_id_package_id_idx
2+
ON ONLY versions (last_synced_at, id, package_id);
3+
4+
DO $$
5+
DECLARE idx text;
6+
BEGIN
7+
FOR idx IN
8+
SELECT c.relname FROM pg_index i JOIN pg_class c ON c.oid = i.indexrelid
9+
WHERE NOT i.indisvalid AND c.relname ~ '^versions_p[0-9]+_last_synced_at_id_package_id_idx$'
10+
LOOP
11+
EXECUTE format('DROP INDEX IF EXISTS %I', idx);
12+
END LOOP;
13+
END$$;
14+
15+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p0_last_synced_at_id_package_id_idx
16+
ON versions_p0 (last_synced_at, id, package_id);
17+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p1_last_synced_at_id_package_id_idx
18+
ON versions_p1 (last_synced_at, id, package_id);
19+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p2_last_synced_at_id_package_id_idx
20+
ON versions_p2 (last_synced_at, id, package_id);
21+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p3_last_synced_at_id_package_id_idx
22+
ON versions_p3 (last_synced_at, id, package_id);
23+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p4_last_synced_at_id_package_id_idx
24+
ON versions_p4 (last_synced_at, id, package_id);
25+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p5_last_synced_at_id_package_id_idx
26+
ON versions_p5 (last_synced_at, id, package_id);
27+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p6_last_synced_at_id_package_id_idx
28+
ON versions_p6 (last_synced_at, id, package_id);
29+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p7_last_synced_at_id_package_id_idx
30+
ON versions_p7 (last_synced_at, id, package_id);
31+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p8_last_synced_at_id_package_id_idx
32+
ON versions_p8 (last_synced_at, id, package_id);
33+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p9_last_synced_at_id_package_id_idx
34+
ON versions_p9 (last_synced_at, id, package_id);
35+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p10_last_synced_at_id_package_id_idx
36+
ON versions_p10 (last_synced_at, id, package_id);
37+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p11_last_synced_at_id_package_id_idx
38+
ON versions_p11 (last_synced_at, id, package_id);
39+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p12_last_synced_at_id_package_id_idx
40+
ON versions_p12 (last_synced_at, id, package_id);
41+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p13_last_synced_at_id_package_id_idx
42+
ON versions_p13 (last_synced_at, id, package_id);
43+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p14_last_synced_at_id_package_id_idx
44+
ON versions_p14 (last_synced_at, id, package_id);
45+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p15_last_synced_at_id_package_id_idx
46+
ON versions_p15 (last_synced_at, id, package_id);
47+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p16_last_synced_at_id_package_id_idx
48+
ON versions_p16 (last_synced_at, id, package_id);
49+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p17_last_synced_at_id_package_id_idx
50+
ON versions_p17 (last_synced_at, id, package_id);
51+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p18_last_synced_at_id_package_id_idx
52+
ON versions_p18 (last_synced_at, id, package_id);
53+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p19_last_synced_at_id_package_id_idx
54+
ON versions_p19 (last_synced_at, id, package_id);
55+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p20_last_synced_at_id_package_id_idx
56+
ON versions_p20 (last_synced_at, id, package_id);
57+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p21_last_synced_at_id_package_id_idx
58+
ON versions_p21 (last_synced_at, id, package_id);
59+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p22_last_synced_at_id_package_id_idx
60+
ON versions_p22 (last_synced_at, id, package_id);
61+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p23_last_synced_at_id_package_id_idx
62+
ON versions_p23 (last_synced_at, id, package_id);
63+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p24_last_synced_at_id_package_id_idx
64+
ON versions_p24 (last_synced_at, id, package_id);
65+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p25_last_synced_at_id_package_id_idx
66+
ON versions_p25 (last_synced_at, id, package_id);
67+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p26_last_synced_at_id_package_id_idx
68+
ON versions_p26 (last_synced_at, id, package_id);
69+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p27_last_synced_at_id_package_id_idx
70+
ON versions_p27 (last_synced_at, id, package_id);
71+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p28_last_synced_at_id_package_id_idx
72+
ON versions_p28 (last_synced_at, id, package_id);
73+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p29_last_synced_at_id_package_id_idx
74+
ON versions_p29 (last_synced_at, id, package_id);
75+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p30_last_synced_at_id_package_id_idx
76+
ON versions_p30 (last_synced_at, id, package_id);
77+
CREATE INDEX CONCURRENTLY IF NOT EXISTS versions_p31_last_synced_at_id_package_id_idx
78+
ON versions_p31 (last_synced_at, id, package_id);
79+
80+
DO $$
81+
DECLARE part text;
82+
BEGIN
83+
FOR part IN
84+
SELECT c.relname FROM pg_inherits i JOIN pg_class c ON c.oid = i.inhrelid
85+
WHERE i.inhparent = 'versions'::regclass
86+
LOOP
87+
IF NOT EXISTS (
88+
SELECT 1 FROM pg_inherits
89+
WHERE inhrelid = (part || '_last_synced_at_id_package_id_idx')::regclass
90+
) THEN
91+
EXECUTE format('ALTER INDEX versions_last_synced_at_id_package_id_idx ATTACH PARTITION %I', part || '_last_synced_at_id_package_id_idx');
92+
END IF;
93+
END LOOP;
94+
END$$;
95+
96+
CREATE INDEX IF NOT EXISTS package_dependencies_updated_at_id_depends_on_id_idx
97+
ON ONLY package_dependencies (updated_at, id, depends_on_id);
98+
99+
DO $$
100+
DECLARE idx text;
101+
BEGIN
102+
FOR idx IN
103+
SELECT c.relname FROM pg_index i JOIN pg_class c ON c.oid = i.indexrelid
104+
WHERE NOT i.indisvalid AND c.relname ~ '^package_dependencies_p[0-9]+_updated_at_id_depends_on_id_idx$'
105+
LOOP
106+
EXECUTE format('DROP INDEX IF EXISTS %I', idx);
107+
END LOOP;
108+
END$$;
109+
110+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p0_updated_at_id_depends_on_id_idx
111+
ON package_dependencies_p0 (updated_at, id, depends_on_id);
112+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p1_updated_at_id_depends_on_id_idx
113+
ON package_dependencies_p1 (updated_at, id, depends_on_id);
114+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p2_updated_at_id_depends_on_id_idx
115+
ON package_dependencies_p2 (updated_at, id, depends_on_id);
116+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p3_updated_at_id_depends_on_id_idx
117+
ON package_dependencies_p3 (updated_at, id, depends_on_id);
118+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p4_updated_at_id_depends_on_id_idx
119+
ON package_dependencies_p4 (updated_at, id, depends_on_id);
120+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p5_updated_at_id_depends_on_id_idx
121+
ON package_dependencies_p5 (updated_at, id, depends_on_id);
122+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p6_updated_at_id_depends_on_id_idx
123+
ON package_dependencies_p6 (updated_at, id, depends_on_id);
124+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p7_updated_at_id_depends_on_id_idx
125+
ON package_dependencies_p7 (updated_at, id, depends_on_id);
126+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p8_updated_at_id_depends_on_id_idx
127+
ON package_dependencies_p8 (updated_at, id, depends_on_id);
128+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p9_updated_at_id_depends_on_id_idx
129+
ON package_dependencies_p9 (updated_at, id, depends_on_id);
130+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p10_updated_at_id_depends_on_id_idx
131+
ON package_dependencies_p10 (updated_at, id, depends_on_id);
132+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p11_updated_at_id_depends_on_id_idx
133+
ON package_dependencies_p11 (updated_at, id, depends_on_id);
134+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p12_updated_at_id_depends_on_id_idx
135+
ON package_dependencies_p12 (updated_at, id, depends_on_id);
136+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p13_updated_at_id_depends_on_id_idx
137+
ON package_dependencies_p13 (updated_at, id, depends_on_id);
138+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p14_updated_at_id_depends_on_id_idx
139+
ON package_dependencies_p14 (updated_at, id, depends_on_id);
140+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p15_updated_at_id_depends_on_id_idx
141+
ON package_dependencies_p15 (updated_at, id, depends_on_id);
142+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p16_updated_at_id_depends_on_id_idx
143+
ON package_dependencies_p16 (updated_at, id, depends_on_id);
144+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p17_updated_at_id_depends_on_id_idx
145+
ON package_dependencies_p17 (updated_at, id, depends_on_id);
146+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p18_updated_at_id_depends_on_id_idx
147+
ON package_dependencies_p18 (updated_at, id, depends_on_id);
148+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p19_updated_at_id_depends_on_id_idx
149+
ON package_dependencies_p19 (updated_at, id, depends_on_id);
150+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p20_updated_at_id_depends_on_id_idx
151+
ON package_dependencies_p20 (updated_at, id, depends_on_id);
152+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p21_updated_at_id_depends_on_id_idx
153+
ON package_dependencies_p21 (updated_at, id, depends_on_id);
154+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p22_updated_at_id_depends_on_id_idx
155+
ON package_dependencies_p22 (updated_at, id, depends_on_id);
156+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p23_updated_at_id_depends_on_id_idx
157+
ON package_dependencies_p23 (updated_at, id, depends_on_id);
158+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p24_updated_at_id_depends_on_id_idx
159+
ON package_dependencies_p24 (updated_at, id, depends_on_id);
160+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p25_updated_at_id_depends_on_id_idx
161+
ON package_dependencies_p25 (updated_at, id, depends_on_id);
162+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p26_updated_at_id_depends_on_id_idx
163+
ON package_dependencies_p26 (updated_at, id, depends_on_id);
164+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p27_updated_at_id_depends_on_id_idx
165+
ON package_dependencies_p27 (updated_at, id, depends_on_id);
166+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p28_updated_at_id_depends_on_id_idx
167+
ON package_dependencies_p28 (updated_at, id, depends_on_id);
168+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p29_updated_at_id_depends_on_id_idx
169+
ON package_dependencies_p29 (updated_at, id, depends_on_id);
170+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p30_updated_at_id_depends_on_id_idx
171+
ON package_dependencies_p30 (updated_at, id, depends_on_id);
172+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p31_updated_at_id_depends_on_id_idx
173+
ON package_dependencies_p31 (updated_at, id, depends_on_id);
174+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p32_updated_at_id_depends_on_id_idx
175+
ON package_dependencies_p32 (updated_at, id, depends_on_id);
176+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p33_updated_at_id_depends_on_id_idx
177+
ON package_dependencies_p33 (updated_at, id, depends_on_id);
178+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p34_updated_at_id_depends_on_id_idx
179+
ON package_dependencies_p34 (updated_at, id, depends_on_id);
180+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p35_updated_at_id_depends_on_id_idx
181+
ON package_dependencies_p35 (updated_at, id, depends_on_id);
182+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p36_updated_at_id_depends_on_id_idx
183+
ON package_dependencies_p36 (updated_at, id, depends_on_id);
184+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p37_updated_at_id_depends_on_id_idx
185+
ON package_dependencies_p37 (updated_at, id, depends_on_id);
186+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p38_updated_at_id_depends_on_id_idx
187+
ON package_dependencies_p38 (updated_at, id, depends_on_id);
188+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p39_updated_at_id_depends_on_id_idx
189+
ON package_dependencies_p39 (updated_at, id, depends_on_id);
190+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p40_updated_at_id_depends_on_id_idx
191+
ON package_dependencies_p40 (updated_at, id, depends_on_id);
192+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p41_updated_at_id_depends_on_id_idx
193+
ON package_dependencies_p41 (updated_at, id, depends_on_id);
194+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p42_updated_at_id_depends_on_id_idx
195+
ON package_dependencies_p42 (updated_at, id, depends_on_id);
196+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p43_updated_at_id_depends_on_id_idx
197+
ON package_dependencies_p43 (updated_at, id, depends_on_id);
198+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p44_updated_at_id_depends_on_id_idx
199+
ON package_dependencies_p44 (updated_at, id, depends_on_id);
200+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p45_updated_at_id_depends_on_id_idx
201+
ON package_dependencies_p45 (updated_at, id, depends_on_id);
202+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p46_updated_at_id_depends_on_id_idx
203+
ON package_dependencies_p46 (updated_at, id, depends_on_id);
204+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p47_updated_at_id_depends_on_id_idx
205+
ON package_dependencies_p47 (updated_at, id, depends_on_id);
206+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p48_updated_at_id_depends_on_id_idx
207+
ON package_dependencies_p48 (updated_at, id, depends_on_id);
208+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p49_updated_at_id_depends_on_id_idx
209+
ON package_dependencies_p49 (updated_at, id, depends_on_id);
210+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p50_updated_at_id_depends_on_id_idx
211+
ON package_dependencies_p50 (updated_at, id, depends_on_id);
212+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p51_updated_at_id_depends_on_id_idx
213+
ON package_dependencies_p51 (updated_at, id, depends_on_id);
214+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p52_updated_at_id_depends_on_id_idx
215+
ON package_dependencies_p52 (updated_at, id, depends_on_id);
216+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p53_updated_at_id_depends_on_id_idx
217+
ON package_dependencies_p53 (updated_at, id, depends_on_id);
218+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p54_updated_at_id_depends_on_id_idx
219+
ON package_dependencies_p54 (updated_at, id, depends_on_id);
220+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p55_updated_at_id_depends_on_id_idx
221+
ON package_dependencies_p55 (updated_at, id, depends_on_id);
222+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p56_updated_at_id_depends_on_id_idx
223+
ON package_dependencies_p56 (updated_at, id, depends_on_id);
224+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p57_updated_at_id_depends_on_id_idx
225+
ON package_dependencies_p57 (updated_at, id, depends_on_id);
226+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p58_updated_at_id_depends_on_id_idx
227+
ON package_dependencies_p58 (updated_at, id, depends_on_id);
228+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p59_updated_at_id_depends_on_id_idx
229+
ON package_dependencies_p59 (updated_at, id, depends_on_id);
230+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p60_updated_at_id_depends_on_id_idx
231+
ON package_dependencies_p60 (updated_at, id, depends_on_id);
232+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p61_updated_at_id_depends_on_id_idx
233+
ON package_dependencies_p61 (updated_at, id, depends_on_id);
234+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p62_updated_at_id_depends_on_id_idx
235+
ON package_dependencies_p62 (updated_at, id, depends_on_id);
236+
CREATE INDEX CONCURRENTLY IF NOT EXISTS package_dependencies_p63_updated_at_id_depends_on_id_idx
237+
ON package_dependencies_p63 (updated_at, id, depends_on_id);
238+
239+
DO $$
240+
DECLARE part text;
241+
BEGIN
242+
FOR part IN
243+
SELECT c.relname FROM pg_inherits i JOIN pg_class c ON c.oid = i.inhrelid
244+
WHERE i.inhparent = 'package_dependencies'::regclass
245+
LOOP
246+
IF NOT EXISTS (
247+
SELECT 1 FROM pg_inherits
248+
WHERE inhrelid = (part || '_updated_at_id_depends_on_id_idx')::regclass
249+
) THEN
250+
EXECUTE format('ALTER INDEX package_dependencies_updated_at_id_depends_on_id_idx ATTACH PARTITION %I', part || '_updated_at_id_depends_on_id_idx');
251+
END IF;
252+
END LOOP;
253+
END$$;

0 commit comments

Comments
 (0)