diff --git a/openbis/source/sql/postgresql/091/function-091.sql b/openbis/source/sql/postgresql/091/function-091.sql index a6c4f33ac2989e4530ead550765dddc835fe3726..cf5a9e79a370007e782fd442cadbb73403d89e08 100644 --- a/openbis/source/sql/postgresql/091/function-091.sql +++ b/openbis/source/sql/postgresql/091/function-091.sql @@ -668,6 +668,9 @@ CREATE OR REPLACE RULE data_deleted_delete AS CREATE OR REPLACE RULE material_properties_update AS ON UPDATE TO material_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) + OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) + OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) DO ALSO INSERT INTO material_properties_history ( ID, @@ -694,6 +697,9 @@ CREATE OR REPLACE RULE material_properties_update AS CREATE OR REPLACE RULE material_properties_delete AS ON DELETE TO material_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND (OLD.VALUE IS NOT NULL + OR OLD.CVTE_ID IS NOT NULL + OR OLD.MATE_PROP_ID IS NOT NULL) DO ALSO INSERT INTO material_properties_history ( ID, @@ -722,6 +728,9 @@ CREATE OR REPLACE RULE material_properties_delete AS CREATE OR REPLACE RULE experiment_properties_update AS ON UPDATE TO experiment_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) + OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) + OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) DO ALSO INSERT INTO experiment_properties_history ( ID, @@ -748,6 +757,9 @@ CREATE OR REPLACE RULE experiment_properties_update AS CREATE OR REPLACE RULE experiment_properties_delete AS ON DELETE TO experiment_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND (OLD.VALUE IS NOT NULL + OR OLD.CVTE_ID IS NOT NULL + OR OLD.MATE_PROP_ID IS NOT NULL) DO ALSO INSERT INTO experiment_properties_history ( ID, @@ -776,6 +788,9 @@ CREATE OR REPLACE RULE experiment_properties_delete AS CREATE OR REPLACE RULE sample_properties_update AS ON UPDATE TO sample_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) + OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) + OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) DO ALSO INSERT INTO sample_properties_history ( ID, @@ -802,6 +817,9 @@ CREATE OR REPLACE RULE sample_properties_update AS CREATE OR REPLACE RULE sample_properties_delete AS ON DELETE TO sample_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND (OLD.VALUE IS NOT NULL + OR OLD.CVTE_ID IS NOT NULL + OR OLD.MATE_PROP_ID IS NOT NULL) DO ALSO INSERT INTO sample_properties_history ( ID, @@ -830,6 +848,9 @@ CREATE OR REPLACE RULE sample_properties_delete AS CREATE OR REPLACE RULE data_set_properties_update AS ON UPDATE TO data_set_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) + OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) + OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) DO ALSO INSERT INTO data_set_properties_history ( ID, @@ -856,6 +877,9 @@ CREATE OR REPLACE RULE data_set_properties_update AS CREATE OR REPLACE RULE data_set_properties_delete AS ON DELETE TO data_set_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND (OLD.VALUE IS NOT NULL + OR OLD.CVTE_ID IS NOT NULL + OR OLD.MATE_PROP_ID IS NOT NULL) DO ALSO INSERT INTO data_set_properties_history ( ID, diff --git a/openbis/source/sql/postgresql/migration/migration-090-091.sql b/openbis/source/sql/postgresql/migration/migration-090-091.sql index 3d20724483e5007d53c8d1a6123714674e5cb716..f635c26ec70ea7a7fb1ae23cb840afd5be630d01 100644 --- a/openbis/source/sql/postgresql/migration/migration-090-091.sql +++ b/openbis/source/sql/postgresql/migration/migration-090-091.sql @@ -75,6 +75,9 @@ ALTER TABLE material_properties_history ALTER COLUMN valid_from_timestamp SET NO CREATE OR REPLACE RULE material_properties_update AS ON UPDATE TO material_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) + OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) + OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) DO ALSO INSERT INTO material_properties_history ( ID, @@ -101,6 +104,9 @@ CREATE OR REPLACE RULE material_properties_update AS CREATE OR REPLACE RULE material_properties_delete AS ON DELETE TO material_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND (OLD.VALUE IS NOT NULL + OR OLD.CVTE_ID IS NOT NULL + OR OLD.MATE_PROP_ID IS NOT NULL) DO ALSO INSERT INTO material_properties_history ( ID, @@ -129,6 +135,9 @@ CREATE OR REPLACE RULE material_properties_delete AS CREATE OR REPLACE RULE experiment_properties_update AS ON UPDATE TO experiment_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) + OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) + OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) DO ALSO INSERT INTO experiment_properties_history ( ID, @@ -155,6 +164,9 @@ CREATE OR REPLACE RULE experiment_properties_update AS CREATE OR REPLACE RULE experiment_properties_delete AS ON DELETE TO experiment_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND (OLD.VALUE IS NOT NULL + OR OLD.CVTE_ID IS NOT NULL + OR OLD.MATE_PROP_ID IS NOT NULL) DO ALSO INSERT INTO experiment_properties_history ( ID, @@ -183,6 +195,9 @@ CREATE OR REPLACE RULE experiment_properties_delete AS CREATE OR REPLACE RULE sample_properties_update AS ON UPDATE TO sample_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) + OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) + OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) DO ALSO INSERT INTO sample_properties_history ( ID, @@ -209,6 +224,9 @@ CREATE OR REPLACE RULE sample_properties_update AS CREATE OR REPLACE RULE sample_properties_delete AS ON DELETE TO sample_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND (OLD.VALUE IS NOT NULL + OR OLD.CVTE_ID IS NOT NULL + OR OLD.MATE_PROP_ID IS NOT NULL) DO ALSO INSERT INTO sample_properties_history ( ID, @@ -237,6 +255,9 @@ CREATE OR REPLACE RULE sample_properties_delete AS CREATE OR REPLACE RULE data_set_properties_update AS ON UPDATE TO data_set_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) + OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) + OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) DO ALSO INSERT INTO data_set_properties_history ( ID, @@ -263,6 +284,9 @@ CREATE OR REPLACE RULE data_set_properties_update AS CREATE OR REPLACE RULE data_set_properties_delete AS ON DELETE TO data_set_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND (OLD.VALUE IS NOT NULL + OR OLD.CVTE_ID IS NOT NULL + OR OLD.MATE_PROP_ID IS NOT NULL) DO ALSO INSERT INTO data_set_properties_history ( ID, diff --git a/openbis/sourceTest/sql/postgresql/091/finish-091.sql b/openbis/sourceTest/sql/postgresql/091/finish-091.sql index 2b3e88e648f9b7ecd80f7b65b4feef2638800210..59fc8e3589cf2d1eed0e2c8e5060a7969ca6b3bd 100644 --- a/openbis/sourceTest/sql/postgresql/091/finish-091.sql +++ b/openbis/sourceTest/sql/postgresql/091/finish-091.sql @@ -306,6 +306,9 @@ CREATE RULE data_insert AS ON INSERT TO data DO INSTEAD INSERT INTO data_all (id CREATE RULE data_set_properties_update AS ON UPDATE TO data_set_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) + OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) + OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) DO ALSO INSERT INTO data_set_properties_history ( ID, @@ -331,6 +334,9 @@ CREATE RULE data_set_properties_update AS CREATE RULE data_set_properties_delete AS ON DELETE TO data_set_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND (OLD.VALUE IS NOT NULL + OR OLD.CVTE_ID IS NOT NULL + OR OLD.MATE_PROP_ID IS NOT NULL) DO ALSO INSERT INTO data_set_properties_history ( ID, @@ -361,6 +367,9 @@ CREATE RULE experiment_insert AS ON INSERT TO experiments DO INSTEAD INSERT INTO CREATE RULE experiment_properties_update AS ON UPDATE TO experiment_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) + OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) + OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) DO ALSO INSERT INTO experiment_properties_history ( ID, @@ -386,6 +395,9 @@ CREATE RULE experiment_properties_update AS CREATE RULE experiment_properties_delete AS ON DELETE TO experiment_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND (OLD.VALUE IS NOT NULL + OR OLD.CVTE_ID IS NOT NULL + OR OLD.MATE_PROP_ID IS NOT NULL) DO ALSO INSERT INTO experiment_properties_history ( ID, @@ -414,6 +426,9 @@ CREATE RULE experiments_deleted_update AS ON UPDATE TO experiments_deleted DO IN CREATE RULE material_properties_update AS ON UPDATE TO material_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) + OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) + OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) DO ALSO INSERT INTO material_properties_history ( ID, @@ -439,6 +454,9 @@ CREATE RULE material_properties_update AS CREATE RULE material_properties_delete AS ON DELETE TO material_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND (OLD.VALUE IS NOT NULL + OR OLD.CVTE_ID IS NOT NULL + OR OLD.MATE_PROP_ID IS NOT NULL) DO ALSO INSERT INTO material_properties_history ( ID, @@ -468,6 +486,9 @@ CREATE RULE sample_insert AS ON INSERT TO samples DO INSTEAD INSERT INTO samples CREATE RULE sample_properties_update AS ON UPDATE TO sample_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) + OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) + OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) DO ALSO INSERT INTO sample_properties_history ( ID, @@ -493,6 +514,9 @@ CREATE RULE sample_properties_update AS CREATE RULE sample_properties_delete AS ON DELETE TO sample_properties WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' + AND (OLD.VALUE IS NOT NULL + OR OLD.CVTE_ID IS NOT NULL + OR OLD.MATE_PROP_ID IS NOT NULL) DO ALSO INSERT INTO sample_properties_history ( ID,