35 lines
925 B
PL/PgSQL
35 lines
925 B
PL/PgSQL
-- Manual rollback for migration 011.
|
|
-- Refuses once equal bytes have been registered under multiple object identities.
|
|
|
|
BEGIN;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF current_database() <> 'booking_test' THEN
|
|
RAISE EXCEPTION
|
|
'ARR artifact identity rollback is allowed only in booking_test';
|
|
END IF;
|
|
IF to_regclass('ingestion.artifacts_kind_hash_idx') IS NULL THEN
|
|
RAISE EXCEPTION
|
|
'ARR artifact identity migration is not applied';
|
|
END IF;
|
|
IF EXISTS (
|
|
SELECT 1
|
|
FROM ingestion.artifacts
|
|
GROUP BY artifact_kind, sha256
|
|
HAVING count(*) > 1
|
|
) THEN
|
|
RAISE EXCEPTION
|
|
'refusing rollback: repeated artifact content exists across storage identities';
|
|
END IF;
|
|
END;
|
|
$$;
|
|
|
|
DROP INDEX ingestion.artifacts_kind_hash_idx;
|
|
|
|
ALTER TABLE ingestion.artifacts
|
|
ADD CONSTRAINT artifacts_kind_hash_unique
|
|
UNIQUE (artifact_kind, sha256);
|
|
|
|
COMMIT;
|