mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02: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
@@ -382,6 +382,8 @@ jobs:
|
||||
PGDATABASE: buzz
|
||||
run: |
|
||||
./bin/pgschema apply --file schema/schema.sql --auto-approve
|
||||
docker exec -i -e PGPASSWORD=buzz_dev buzz-postgres \
|
||||
psql -U buzz -d buzz -v ON_ERROR_STOP=1 < scripts/attach-schema-partitions.sql
|
||||
docker exec -e PGPASSWORD=buzz_dev buzz-postgres \
|
||||
psql -U buzz -d buzz -qtA -c "
|
||||
INSERT INTO communities (id, host)
|
||||
@@ -513,6 +515,8 @@ jobs:
|
||||
PGDATABASE: buzz
|
||||
run: |
|
||||
./bin/pgschema apply --file schema/schema.sql --auto-approve
|
||||
docker exec -i -e PGPASSWORD=buzz_dev buzz-postgres \
|
||||
psql -U buzz -d buzz -v ON_ERROR_STOP=1 < scripts/attach-schema-partitions.sql
|
||||
docker exec -e PGPASSWORD=buzz_dev buzz-postgres \
|
||||
psql -U buzz -d buzz -qtA -c "
|
||||
INSERT INTO communities (id, host)
|
||||
|
||||
+8
-1
@@ -203,7 +203,14 @@ CREATE TABLE events (
|
||||
-- community-leading btree filters BitmapAnd-ed with the GIN probe, so the
|
||||
-- GIN index itself stays the minimal `GIN (search_tsv)` (Max's caveat:
|
||||
-- avoid btree_gin unless EXPLAIN proves it buys something).
|
||||
search_tsv TSVECTOR GENERATED ALWAYS AS (to_tsvector('simple', content)) STORED,
|
||||
-- Privacy: encrypted/private routing wrappers must never be discoverable
|
||||
-- through NIP-50 full-text search. NULL tsvector never matches `@@`.
|
||||
-- Keep in sync with migrations/0001_initial_schema.sql.
|
||||
search_tsv TSVECTOR GENERATED ALWAYS AS (
|
||||
CASE WHEN kind IN (1059, 30300, 30622) THEN NULL::tsvector
|
||||
ELSE to_tsvector('simple', content)
|
||||
END
|
||||
) STORED,
|
||||
sig BYTEA NOT NULL,
|
||||
received_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
channel_id UUID,
|
||||
|
||||
@@ -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 $$;
|
||||
@@ -90,6 +90,8 @@ export PGPASSWORD=buzz_dev
|
||||
export PGDATABASE=buzz
|
||||
|
||||
./bin/pgschema apply --file schema/schema.sql --auto-approve
|
||||
docker exec -i -e PGPASSWORD="${PGPASSWORD}" buzz-postgres \
|
||||
psql -U "${PGUSER}" -d "${PGDATABASE}" -v ON_ERROR_STOP=1 < scripts/attach-schema-partitions.sql
|
||||
ok "Schema applied"
|
||||
|
||||
# ── Seed the deployment community ────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user