mirror of
https://github.com/block/buzz.git
synced 2026-10-31 06:21:34 +00:00
Repair CI schema partition setup
Co-authored-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co> Signed-off-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co>
This commit is contained in:
parent
9edfd33fac
commit
82a8b6a945
137
scripts/attach-schema-partitions.sql
Normal file
137
scripts/attach-schema-partitions.sql
Normal file
@@ -0,0 +1,137 @@
|
||||
-- Attach partition child tables after pgschema apply.
|
||||
--
|
||||
-- pgschema currently emits existing partition children as standalone CREATE TABLE
|
||||
-- statements when applying schema/schema.sql in CI. The tables exist, but they
|
||||
-- are not attached to their partitioned parents, so inserts into events or
|
||||
-- delivery_log fail with "no partition of relation ... found for row". Keep this
|
||||
-- idempotent: raw psql/schema.sql already attaches these partitions, while
|
||||
-- pgschema-created schemas need this repair step.
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'events'::regclass
|
||||
AND inhrelid = 'events_p_past'::regclass
|
||||
) THEN
|
||||
ALTER TABLE events ATTACH PARTITION events_p_past
|
||||
FOR VALUES FROM (MINVALUE) TO ('2026-01-01');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'events'::regclass
|
||||
AND inhrelid = 'events_p2026_01'::regclass
|
||||
) THEN
|
||||
ALTER TABLE events ATTACH PARTITION events_p2026_01
|
||||
FOR VALUES FROM ('2026-01-01') TO ('2026-02-01');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'events'::regclass
|
||||
AND inhrelid = 'events_p2026_02'::regclass
|
||||
) THEN
|
||||
ALTER TABLE events ATTACH PARTITION events_p2026_02
|
||||
FOR VALUES FROM ('2026-02-01') TO ('2026-03-01');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'events'::regclass
|
||||
AND inhrelid = 'events_p2026_03'::regclass
|
||||
) THEN
|
||||
ALTER TABLE events ATTACH PARTITION events_p2026_03
|
||||
FOR VALUES FROM ('2026-03-01') TO ('2026-04-01');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'events'::regclass
|
||||
AND inhrelid = 'events_p2026_04'::regclass
|
||||
) THEN
|
||||
ALTER TABLE events ATTACH PARTITION events_p2026_04
|
||||
FOR VALUES FROM ('2026-04-01') TO ('2026-05-01');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'events'::regclass
|
||||
AND inhrelid = 'events_p2026_05'::regclass
|
||||
) THEN
|
||||
ALTER TABLE events ATTACH PARTITION events_p2026_05
|
||||
FOR VALUES FROM ('2026-05-01') TO ('2026-06-01');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'events'::regclass
|
||||
AND inhrelid = 'events_p2026_06'::regclass
|
||||
) THEN
|
||||
ALTER TABLE events ATTACH PARTITION events_p2026_06
|
||||
FOR VALUES FROM ('2026-06-01') TO ('2026-07-01');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'events'::regclass
|
||||
AND inhrelid = 'events_p_future'::regclass
|
||||
) THEN
|
||||
ALTER TABLE events ATTACH PARTITION events_p_future
|
||||
FOR VALUES FROM ('2026-07-01') TO (MAXVALUE);
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'delivery_log'::regclass
|
||||
AND inhrelid = 'delivery_log_p_past'::regclass
|
||||
) THEN
|
||||
ALTER TABLE delivery_log ATTACH PARTITION delivery_log_p_past
|
||||
FOR VALUES FROM (MINVALUE) TO ('2026-03-01');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'delivery_log'::regclass
|
||||
AND inhrelid = 'delivery_log_p2026_03'::regclass
|
||||
) THEN
|
||||
ALTER TABLE delivery_log ATTACH PARTITION delivery_log_p2026_03
|
||||
FOR VALUES FROM ('2026-03-01') TO ('2026-04-01');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'delivery_log'::regclass
|
||||
AND inhrelid = 'delivery_log_p2026_04'::regclass
|
||||
) THEN
|
||||
ALTER TABLE delivery_log ATTACH PARTITION delivery_log_p2026_04
|
||||
FOR VALUES FROM ('2026-04-01') TO ('2026-05-01');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'delivery_log'::regclass
|
||||
AND inhrelid = 'delivery_log_p2026_05'::regclass
|
||||
) THEN
|
||||
ALTER TABLE delivery_log ATTACH PARTITION delivery_log_p2026_05
|
||||
FOR VALUES FROM ('2026-05-01') TO ('2026-06-01');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'delivery_log'::regclass
|
||||
AND inhrelid = 'delivery_log_p2026_06'::regclass
|
||||
) THEN
|
||||
ALTER TABLE delivery_log ATTACH PARTITION delivery_log_p2026_06
|
||||
FOR VALUES FROM ('2026-06-01') TO ('2026-07-01');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_inherits
|
||||
WHERE inhparent = 'delivery_log'::regclass
|
||||
AND inhrelid = 'delivery_log_p_future'::regclass
|
||||
) THEN
|
||||
ALTER TABLE delivery_log ATTACH PARTITION delivery_log_p_future
|
||||
FOR VALUES FROM ('2026-07-01') TO (MAXVALUE);
|
||||
END IF;
|
||||
END $$;
|
||||
Reference in New Issue
Block a user