pub const V1_TENANT_ACTIVATE_SQL: &str = "-- Activate tenant-aware constraints after an operator-owned backfill.\n--\n-- The backfill must assign the same validated TenantId to each event and its\n-- delivery before this script runs. The script refuses to guess a tenant and\n-- makes the v2 invariant durable before the new adapter is deployed.\n\nBEGIN;\n\nDO $$\nBEGIN\n IF EXISTS (SELECT 1 FROM dovecote_events WHERE tenant_id IS NULL)\n OR EXISTS (SELECT 1 FROM dovecote_deliveries WHERE tenant_id IS NULL) THEN\n RAISE EXCEPTION \'Dovecote tenant backfill is incomplete\';\n END IF;\n IF EXISTS (SELECT 1 FROM dovecote_events WHERE tenant_id = \'\')\n OR EXISTS (SELECT 1 FROM dovecote_deliveries WHERE tenant_id = \'\') THEN\n RAISE EXCEPTION \'Dovecote tenant backfill contains an empty tenant\';\n END IF;\n IF EXISTS (\n SELECT 1\n FROM dovecote_deliveries AS d\n LEFT JOIN dovecote_events AS e ON e.row_id = d.event_row_id\n WHERE e.row_id IS NULL OR d.tenant_id <> e.tenant_id\n ) THEN\n RAISE EXCEPTION \'Dovecote event and delivery tenants do not agree\';\n END IF;\nEND\n$$;\n\nALTER TABLE dovecote_events\n ALTER COLUMN tenant_id SET NOT NULL;\nALTER TABLE dovecote_deliveries\n ALTER COLUMN tenant_id SET NOT NULL;\n\nALTER TABLE dovecote_events\n ADD CONSTRAINT dovecote_events_tenant_size\n CHECK (octet_length(tenant_id) <= 255),\n ADD CONSTRAINT dovecote_events_tenant_nonempty\n CHECK (octet_length(tenant_id) > 0),\n ADD CONSTRAINT dovecote_events_tenant_row_unique\n UNIQUE (tenant_id, row_id);\n\nDROP INDEX IF EXISTS dovecote_events_source_event_id;\nCREATE UNIQUE INDEX dovecote_events_tenant_source_event_id\n ON dovecote_events (tenant_id COLLATE \"C\", source COLLATE \"C\", event_id COLLATE \"C\");\n\nALTER TABLE dovecote_deliveries\n DROP CONSTRAINT IF EXISTS dovecote_deliveries_event_fk;\nDROP INDEX IF EXISTS dovecote_deliveries_claimable;\nDROP INDEX IF EXISTS dovecote_deliveries_expired_claims;\n\nALTER TABLE dovecote_deliveries\n ADD CONSTRAINT dovecote_deliveries_tenant_size\n CHECK (octet_length(tenant_id) <= 255),\n ADD CONSTRAINT dovecote_deliveries_tenant_nonempty\n CHECK (octet_length(tenant_id) > 0),\n ADD CONSTRAINT dovecote_deliveries_event_fk\n FOREIGN KEY (tenant_id, event_row_id)\n REFERENCES dovecote_events (tenant_id, row_id)\n ON DELETE RESTRICT;\n\nCREATE INDEX dovecote_deliveries_claimable\n ON dovecote_deliveries (tenant_id COLLATE \"C\", state, available_at, event_row_id);\nCREATE INDEX dovecote_deliveries_expired_claims\n ON dovecote_deliveries (tenant_id COLLATE \"C\", state, claim_expires_at, event_row_id);\n\nALTER TABLE dovecote_schema\n DROP CONSTRAINT dovecote_schema_version_supported,\n ADD CONSTRAINT dovecote_schema_version_supported\n CHECK (schema_version = 2);\n\nUPDATE dovecote_schema\nSET schema_version = 2,\n minimum_crate_major = 0,\n minimum_crate_minor = 2,\n minimum_crate_patch = 0,\n rolling_compatible = FALSE;\n\nCOMMIT;\n";👎Deprecated since 0.2.1:
the published 0.2.0 artifact cannot complete; use V1_TENANT_ACTIVATE_V2_SQL
Expand description
SQL that validates an operator-owned backfill and activates version 2.