-- 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 \set ON_ERROR_STOP on -- warn that we detected the schema version mismatch: SELECT ('The patch only applies to schema version ' || CAST(:expected_version AS VARCHAR) || ', but the current schema version is ' || meta_value || ', so skipping the rest.') as incompatible_msg FROM hive_meta WHERE meta_key='hive_sql_schema_version' AND meta_value!=CAST(:expected_version AS VARCHAR); -- 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 1 != 1/CAST( (meta_key!='hive_sql_schema_version' OR meta_value=CAST(:expected_version AS VARCHAR)) AS INTEGER ); SELECT ('The patch seems to be compatible with schema version ' || CAST(:expected_version AS VARCHAR) || ', applying the patch...') AS compatible_msg; -- ---------------------------------- ------------------------------------------------- ALTER TABLE analysis_stats ADD COLUMN is_excluded SMALLINT NOT NULL DEFAULT 0; CREATE TYPE msg_class AS ENUM ('INFO', 'PIPELINE_CAUTION', 'PIPELINE_ERROR', 'WORKER_CAUTION', 'WORKER_ERROR'); ALTER TABLE log_message ADD COLUMN message_class msg_class NOT NULL DEFAULT 'INFO'; UPDATE log_message SET message_class = 'PIPELINE_ERROR' WHERE is_error = 1; DROP VIEW msg; 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; -- ---------------------------------- ------------------------------------------------- -- increase the schema version by one: UPDATE hive_meta SET meta_value= (CAST(meta_value AS INTEGER) + 1) WHERE meta_key='hive_sql_schema_version'; INSERT INTO hive_meta (meta_key, meta_value) SELECT 'patched_to_' || meta_value, CURRENT_TIMESTAMP FROM hive_meta WHERE meta_key = 'hive_sql_schema_version';