From cac97c5269e00ea7249f31932350b7df5d80d041 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Fri, 5 Jul 2013 16:08:51 +0200 Subject: [PATCH] SONAR-4449 Add migration to update issues that are still linked to removed action plans --- .../core/persistence/DatabaseVersion.java | 62 +------------------ .../org/sonar/core/persistence/rows-h2.sql | 1 + .../406_update_issues_action_plan_key.rb | 38 ++++++++++++ 3 files changed, 40 insertions(+), 61 deletions(-) create mode 100644 sonar-server/src/main/webapp/WEB-INF/db/migrate/406_update_issues_action_plan_key.rb diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java index e77f001bd6b..d5af9be02d2 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java @@ -20,7 +20,6 @@ package org.sonar.core.persistence; import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.ImmutableList; import org.apache.ibatis.session.SqlSession; import org.sonar.api.BatchComponent; import org.sonar.api.ServerComponent; @@ -33,71 +32,12 @@ import java.util.List; */ public class DatabaseVersion implements BatchComponent, ServerComponent { - public static final int LAST_VERSION = 417; + public static final int LAST_VERSION = 406; public static enum Status { UP_TO_DATE, REQUIRES_UPGRADE, REQUIRES_DOWNGRADE, FRESH_INSTALL } - /** - * List of all the tables. - * This list is hardcoded because we didn't succeed in using java.sql.DatabaseMetaData#getTables() in the same way - * for all the supported databases, particularly due to Oracle results. - */ - public static final List TABLES = ImmutableList.of( - "action_plans", - "active_dashboards", - "active_rules", - "active_rule_changes", - "active_rule_parameters", - "active_rule_param_changes", - "alerts", - "authors", - "characteristics", - "characteristic_edges", - "characteristic_properties", - "dashboards", - "dependencies", - "duplications_index", - "events", - "graphs", - "groups", - "groups_users", - "group_roles", - "issues", - "issue_changes", - "issue_filters", - "issue_filter_favourites", - "loaded_templates", - "manual_measures", - "measure_data", - "measure_filters", - "measure_filter_favourites", - "metrics", - "notifications", - "permission_templates", - "perm_templates_users", - "perm_templates_groups", - "projects", - "project_links", - "project_measures", - "properties", - "quality_models", - "resource_index", - "rules", - "rules_parameters", - "rules_profiles", - "semaphores", - "schema_migrations", - "snapshots", - "snapshot_sources", - "snapshot_data", - "users", - "user_roles", - "widgets", - "widget_properties" - ); - private MyBatis mybatis; public DatabaseVersion(MyBatis mybatis) { diff --git a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql index c1ee5787569..4589151fd6b 100644 --- a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql +++ b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql @@ -172,6 +172,7 @@ INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('402'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('403'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('404'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('405'); +INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('406'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('410'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('411'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('412'); diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/406_update_issues_action_plan_key.rb b/sonar-server/src/main/webapp/WEB-INF/db/migrate/406_update_issues_action_plan_key.rb new file mode 100644 index 00000000000..5f1b2559ae8 --- /dev/null +++ b/sonar-server/src/main/webapp/WEB-INF/db/migrate/406_update_issues_action_plan_key.rb @@ -0,0 +1,38 @@ +# +# Sonar, entreprise quality control tool. +# Copyright (C) 2008-2013 SonarSource +# mailto:contact AT sonarsource DOT com +# +# SonarQube is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 3 of the License, or (at your option) any later version. +# +# SonarQube 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# + +# +# Sonar 3.6.1 +# +# SONAR-4449 +# +class UpdateIssuesActionPlanKey < ActiveRecord::Migration + + class Issue < ActiveRecord::Base + end + + # Update issues that are still linked to removed action plans + def self.up + Issue.reset_column_information + Issue.update_all({:action_plan_key => nil}, "action_plan_key is not null AND not exists (select * from action_plans ap where ap.kee = action_plan_key)") + end + +end + -- 2.39.5