#!/bin/bash # # ** header v3.0 # This file is a part of the CaosDB Project. # # Copyright (C) 2018 Research Group Biomedical Physics, # Max-Planck-Institute for Dynamics and Self-Organization Göttingen # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. # # ** end header # # adds a property_id column to name_overrides and desc_overrides. # Update mysql schema to version v2.0.5 NEW_VERSION="v2.0.5" OLD_VERSION="v2.0.4" if [ -z "$UTILSPATH" ]; then UTILSPATH="../utils" fi . $UTILSPATH/patch_header.sh $* check_version $OLD_VERSION function create_new_table { mysql_execute 'CREATE TABLE name_overrides2 ( domain_id INT UNSIGNED, entity_id INT UNSIGNED, property_id INT UNSIGNED, name VARCHAR(255), INDEX `name_ov_dom_ent_idx` (domain_id,entity_id), FOREIGN KEY `name_ov_forkey_dom` (`domain_id`) REFERENCES `entities` (`id`), FOREIGN KEY `name_ov_forkey_ent` (`entity_id`) REFERENCES `entities` (`id`), FOREIGN KEY `name_ov_forkey_pro` (`property_id`) REFERENCES `entities` (`id`) ) ENGINE=InnoDB; ' mysql_execute 'CREATE TABLE desc_overrides2 ( domain_id INT UNSIGNED, entity_id INT UNSIGNED, property_id INT UNSIGNED, description TEXT, INDEX `desc_ov_dom_ent_idx` (domain_id,entity_id), FOREIGN KEY `desc_ov_forkey_dom` (`domain_id`) REFERENCES `entities` (`id`), FOREIGN KEY `desc_ov_forkey_ent` (`entity_id`) REFERENCES `entities` (`id`), FOREIGN KEY `desc_ov_forkey_pro` (`property_id`) REFERENCES `entities` (`id`) ) ENGINE=InnoDB; ' } function copy_old { mysql_execute 'INSERT INTO name_overrides2 (domain_id, entity_id, property_id, name) SELECT 0, domain_id, entity_id, name FROM name_overrides;' mysql_execute 'INSERT INTO desc_overrides2 (domain_id, entity_id, property_id, description) SELECT 0, domain_id, entity_id, description FROM desc_overrides;' mysql_execute 'UPDATE name_overrides2,reference_data SET name_overrides2.domain_id=reference_data.domain_id WHERE name_overrides2.entity_id=reference_data.entity_id and name_overrides2.property_id=reference_data.value and status="REPLACEMENT" and reference_data.domain_id!=0;' mysql_execute 'UPDATE desc_overrides2,reference_data SET desc_overrides2.domain_id=reference_data.domain_id WHERE desc_overrides2.entity_id=reference_data.entity_id and desc_overrides2.property_id=reference_data.value and status="REPLACEMENT" and reference_data.domain_id!=0;' } function delete_rename { mysql_execute 'DROP TABLE name_overrides;' mysql_execute 'DROP TABLE desc_overrides;' mysql_execute 'ALTER TABLE name_overrides2 RENAME name_overrides;' mysql_execute 'ALTER TABLE desc_overrides2 RENAME desc_overrides;' } function set_idx { mysql_execute 'ALTER TABLE name_overrides ADD UNIQUE KEY `name_ov_ukey` (domain_id,entity_id,property_id);' mysql_execute 'ALTER TABLE desc_overrides ADD UNIQUE KEY `desc_ov_ukey` (domain_id,entity_id,property_id);' } create_new_table copy_old delete_rename set_idx update_version $NEW_VERSION success