From a628a11712c998acc6790229f10a47ffd416c457 Mon Sep 17 00:00:00 2001
From: felmer <franz-josef.elmer@id.ethz.ch>
Date: Tue, 29 Sep 2020 07:13:24 +0200
Subject: [PATCH] SSDM-10274: migration scripts fixed by switching
 *_frozen_check_on_change_property triggers off before calculating
 tsvector_document and switching on after.

---
 .../sql/postgresql/migration/migration-179-180.sql   | 12 ++++++++++++
 .../sql/postgresql/migration/migration-181-182.sql   | 12 ++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/openbis/source/sql/postgresql/migration/migration-179-180.sql b/openbis/source/sql/postgresql/migration/migration-179-180.sql
index 7733df3ec0d..8c009ca88aa 100644
--- a/openbis/source/sql/postgresql/migration/migration-179-180.sql
+++ b/openbis/source/sql/postgresql/migration/migration-179-180.sql
@@ -114,7 +114,11 @@ CREATE TRIGGER sample_properties_tsvector_document BEFORE INSERT OR UPDATE
     ON sample_properties FOR EACH ROW EXECUTE PROCEDURE
     properties_tsvector_document_trigger();
 
+DROP TRIGGER IF EXISTS SAMPLE_FROZEN_CHECK_ON_CHANGE_PROPERTY ON SAMPLE_PROPERTIES;
 UPDATE sample_properties SET value = value;
+CREATE TRIGGER SAMPLE_FROZEN_CHECK_ON_CHANGE_PROPERTY BEFORE UPDATE ON SAMPLE_PROPERTIES
+    FOR EACH ROW WHEN (OLD.SAMP_FROZEN AND NEW.SAMP_FROZEN)
+    EXECUTE PROCEDURE RAISE_EXCEPTION_FROZEN_SAMPLE('PROPERTY');
 
 ALTER TABLE sample_properties
     ALTER COLUMN tsvector_document SET NOT NULL;
@@ -163,7 +167,11 @@ CREATE TRIGGER experiment_properties_tsvector_document BEFORE INSERT OR UPDATE
     ON experiment_properties FOR EACH ROW EXECUTE PROCEDURE
     properties_tsvector_document_trigger();
 
+DROP TRIGGER IF EXISTS EXPERIMENT_FROZEN_CHECK_ON_CHANGE_PROPERTY ON EXPERIMENT_PROPERTIES;
 UPDATE experiment_properties SET value = value;
+CREATE TRIGGER EXPERIMENT_FROZEN_CHECK_ON_CHANGE_PROPERTY BEFORE UPDATE ON EXPERIMENT_PROPERTIES
+    FOR EACH ROW WHEN (OLD.EXPE_FROZEN AND NEW.EXPE_FROZEN)
+    EXECUTE PROCEDURE RAISE_EXCEPTION_FROZEN_EXPERIMENT('PROPERTY');
 
 ALTER TABLE experiment_properties
     ALTER COLUMN tsvector_document SET NOT NULL;
@@ -210,7 +218,11 @@ CREATE TRIGGER data_set_properties_tsvector_document BEFORE INSERT OR UPDATE
     ON data_set_properties FOR EACH ROW EXECUTE PROCEDURE
     properties_tsvector_document_trigger();
 
+DROP TRIGGER IF EXISTS DATA_SET_FROZEN_CHECK_ON_CHANGE_PROPERTY ON DATA_SET_PROPERTIES;
 UPDATE data_set_properties SET value = value;
+CREATE TRIGGER DATA_SET_FROZEN_CHECK_ON_CHANGE_PROPERTY BEFORE UPDATE ON DATA_SET_PROPERTIES
+    FOR EACH ROW WHEN (OLD.DASE_FROZEN AND NEW.DASE_FROZEN)
+    EXECUTE PROCEDURE RAISE_EXCEPTION_FROZEN_DATA_SET('PROPERTY');
 
 ALTER TABLE data_set_properties
     ALTER COLUMN tsvector_document SET NOT NULL;
diff --git a/openbis/source/sql/postgresql/migration/migration-181-182.sql b/openbis/source/sql/postgresql/migration/migration-181-182.sql
index 3a13c9ca6f9..467469841de 100644
--- a/openbis/source/sql/postgresql/migration/migration-181-182.sql
+++ b/openbis/source/sql/postgresql/migration/migration-181-182.sql
@@ -63,7 +63,11 @@ CREATE TRIGGER sample_properties_tsvector_document BEFORE INSERT OR UPDATE
     ON sample_properties FOR EACH ROW EXECUTE PROCEDURE
     properties_tsvector_document_trigger();
 
+DROP TRIGGER IF EXISTS SAMPLE_FROZEN_CHECK_ON_CHANGE_PROPERTY ON SAMPLE_PROPERTIES;
 UPDATE sample_properties SET value = value;
+CREATE TRIGGER SAMPLE_FROZEN_CHECK_ON_CHANGE_PROPERTY BEFORE UPDATE ON SAMPLE_PROPERTIES
+    FOR EACH ROW WHEN (OLD.SAMP_FROZEN AND NEW.SAMP_FROZEN)
+    EXECUTE PROCEDURE RAISE_EXCEPTION_FROZEN_SAMPLE('PROPERTY');
 
 -- ALTER TABLE sample_properties
 --     ALTER COLUMN tsvector_document SET NOT NULL;
@@ -72,13 +76,21 @@ CREATE TRIGGER experiment_properties_tsvector_document BEFORE INSERT OR UPDATE
     ON experiment_properties FOR EACH ROW EXECUTE PROCEDURE
     properties_tsvector_document_trigger();
 
+DROP TRIGGER IF EXISTS EXPERIMENT_FROZEN_CHECK_ON_CHANGE_PROPERTY ON EXPERIMENT_PROPERTIES;
 UPDATE experiment_properties SET value = value;
+CREATE TRIGGER EXPERIMENT_FROZEN_CHECK_ON_CHANGE_PROPERTY BEFORE UPDATE ON EXPERIMENT_PROPERTIES
+    FOR EACH ROW WHEN (OLD.EXPE_FROZEN AND NEW.EXPE_FROZEN)
+    EXECUTE PROCEDURE RAISE_EXCEPTION_FROZEN_EXPERIMENT('PROPERTY');
 
 CREATE TRIGGER data_set_properties_tsvector_document BEFORE INSERT OR UPDATE
     ON data_set_properties FOR EACH ROW EXECUTE PROCEDURE
     properties_tsvector_document_trigger();
 
+DROP TRIGGER IF EXISTS DATA_SET_FROZEN_CHECK_ON_CHANGE_PROPERTY ON DATA_SET_PROPERTIES;
 UPDATE data_set_properties SET value = value;
+CREATE TRIGGER DATA_SET_FROZEN_CHECK_ON_CHANGE_PROPERTY BEFORE UPDATE ON DATA_SET_PROPERTIES
+    FOR EACH ROW WHEN (OLD.DASE_FROZEN AND NEW.DASE_FROZEN)
+    EXECUTE PROCEDURE RAISE_EXCEPTION_FROZEN_DATA_SET('PROPERTY');
 
 CREATE TRIGGER material_properties_tsvector_document BEFORE INSERT OR UPDATE
     ON material_properties FOR EACH ROW EXECUTE PROCEDURE
-- 
GitLab