-- Copyright [1999-2015] Wellcome Trust Sanger Institute and the EMBL-European Bioinformatics Institute -- Copyright [2016-2021] EMBL-European Bioinformatics Institute -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. -- --------------------------------------------------------------------------------------------------- SET @expected_version = 83; -- make MySQL stop immediately after it encounters division by zero: SET SESSION sql_mode='TRADITIONAL'; -- warn that we detected the schema version mismatch: SELECT CONCAT( 'The patch only applies to schema version ', @expected_version, ', but the current schema version is ', meta_value, ', so skipping the rest.') AS '' FROM hive_meta WHERE meta_key='hive_sql_schema_version' AND meta_value<>@expected_version; -- cause division by zero only if current version differs from the expected one: INSERT INTO hive_meta (meta_key, meta_value) SELECT 'this_should_never_be_inserted', 1 FROM hive_meta WHERE NOT 1/(meta_key<>'hive_sql_schema_version' OR meta_value=@expected_version); SELECT CONCAT( 'The patch seems to be compatible with schema version ', @expected_version, ', applying the patch...') AS ''; -- Now undo the change so that we could patch potentially non-TRADITIONAL schema: SET SESSION sql_mode=''; -- ---------------------------------- ------------------------------------------------- ALTER TABLE analysis_stats ADD COLUMN is_excluded SMALLINT NOT NULL DEFAULT 0 AFTER sync_lock; ALTER TABLE log_message ADD COLUMN message_class ENUM('INFO', 'PIPELINE_CAUTION', 'PIPELINE_ERROR', 'WORKER_CAUTION', 'WORKER_ERROR') NOT NULL DEFAULT 'INFO' AFTER is_error; UPDATE log_message SET message_class = 'PIPELINE_ERROR' WHERE is_error = 1; ALTER TABLE log_message DROP COLUMN is_error; CREATE OR REPLACE VIEW msg AS SELECT a.analysis_id, a.logic_name, m.* FROM log_message m LEFT JOIN role USING (role_id) LEFT JOIN analysis_base a USING (analysis_id); ALTER TABLE analysis_stats_monitor ADD COLUMN is_excluded SMALLINT NOT NULL DEFAULT 0 AFTER sync_lock; -- ---------------------------------- ------------------------------------------------- -- increase the schema version by one: UPDATE hive_meta SET meta_value=meta_value+1 WHERE meta_key='hive_sql_schema_version'; INSERT INTO hive_meta (meta_key, meta_value) SELECT CONCAT("patched_to_", meta_value), CURRENT_TIMESTAMP FROM hive_meta WHERE meta_key = "hive_sql_schema_version";