@@ -0,0 +1,23 @@
|
||||
-- Corrective migration: preserve the already applied 001-004 files.
|
||||
BEGIN;
|
||||
SET LOCAL lock_timeout = '10s';
|
||||
SELECT pg_advisory_xact_lock(hashtextextended('mne:005_compatibility_guards',0));
|
||||
DO $guard$
|
||||
BEGIN
|
||||
IF to_regclass('mne.compatibility_controls') IS NULL THEN
|
||||
RAISE EXCEPTION '004 compatibility migration is required';
|
||||
END IF;
|
||||
IF EXISTS(SELECT 1 FROM mne.compatibility_controls WHERE capability='canonical_read' AND (enabled OR percentage<>0)) THEN
|
||||
RAISE EXCEPTION 'Canonical control is not disabled; explicit reconciliation required';
|
||||
END IF;
|
||||
IF EXISTS(SELECT 1 FROM pg_constraint WHERE conrelid='mne.compatibility_controls'::regclass AND conname='ck_mne_005_canonical_disabled') THEN
|
||||
IF (SELECT pg_get_constraintdef(oid) FROM pg_constraint WHERE conrelid='mne.compatibility_controls'::regclass AND conname='ck_mne_005_canonical_disabled')
|
||||
<> $$CHECK (((capability <> 'canonical_read'::text) OR ((NOT enabled) AND (percentage = 0))))$$ THEN
|
||||
RAISE EXCEPTION 'Unexpected canonical control constraint';
|
||||
END IF;
|
||||
ELSE
|
||||
ALTER TABLE mne.compatibility_controls ADD CONSTRAINT ck_mne_005_canonical_disabled
|
||||
CHECK (capability <> 'canonical_read' OR (NOT enabled AND percentage=0));
|
||||
END IF;
|
||||
END $guard$;
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user