From c7ea2f00209fe9ff676ffe3ab56f32d749299c14 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Mon, 28 Nov 2011 16:34:11 +0100 Subject: [PATCH] SONAR-1974 RULE_FAILURES.SNAPSHOT_ID must be nullable --- .../org/sonar/jpa/entity/SchemaMigration.java | 2 +- .../org/sonar/persistence/rows-derby.sql | 1 + .../org/sonar/persistence/schema-derby.ddl | 2 +- .../api/database/model/RuleFailureModel.java | 2 +- .../232_nullable_rule_failures_snapshot_id.rb | 41 +++++++++++++++++++ 5 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 sonar-server/src/main/webapp/WEB-INF/db/migrate/232_nullable_rule_failures_snapshot_id.rb diff --git a/sonar-core/src/main/java/org/sonar/jpa/entity/SchemaMigration.java b/sonar-core/src/main/java/org/sonar/jpa/entity/SchemaMigration.java index 023a71496c3..6cfd8d15f21 100644 --- a/sonar-core/src/main/java/org/sonar/jpa/entity/SchemaMigration.java +++ b/sonar-core/src/main/java/org/sonar/jpa/entity/SchemaMigration.java @@ -42,7 +42,7 @@ public class SchemaMigration { - complete the Derby DDL file used for unit tests : sonar-testing-harness/src/main/resources/org/sonar/test/persistence/sonar-test.ddl */ - public static final int LAST_VERSION = 231; + public static final int LAST_VERSION = 232; public final static String TABLE_NAME = "schema_migrations"; diff --git a/sonar-core/src/main/resources/org/sonar/persistence/rows-derby.sql b/sonar-core/src/main/resources/org/sonar/persistence/rows-derby.sql index 8f29cef7727..b9b04e14ea6 100644 --- a/sonar-core/src/main/resources/org/sonar/persistence/rows-derby.sql +++ b/sonar-core/src/main/resources/org/sonar/persistence/rows-derby.sql @@ -166,6 +166,7 @@ INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('221'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('222'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('230'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('231'); +INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('232'); INSERT INTO USERS(ID, LOGIN, NAME, EMAIL, CRYPTED_PASSWORD, SALT, CREATED_AT, UPDATED_AT, REMEMBER_TOKEN, REMEMBER_TOKEN_EXPIRES_AT) VALUES (1, 'admin', 'Administrator', '', 'a373a0e667abb2604c1fd571eb4ad47fe8cc0878', '48bc4b0d93179b5103fd3885ea9119498e9d161b', '2011-09-26 22:27:48.0', '2011-09-26 22:27:48.0', null, null); ALTER TABLE USERS ALTER COLUMN ID RESTART WITH 2; diff --git a/sonar-core/src/main/resources/org/sonar/persistence/schema-derby.ddl b/sonar-core/src/main/resources/org/sonar/persistence/schema-derby.ddl index 0c5a9267935..ccf59909a5a 100644 --- a/sonar-core/src/main/resources/org/sonar/persistence/schema-derby.ddl +++ b/sonar-core/src/main/resources/org/sonar/persistence/schema-derby.ddl @@ -421,7 +421,7 @@ CREATE TABLE "DASHBOARDS" ( CREATE TABLE "RULE_FAILURES" ( "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), - "SNAPSHOT_ID" INTEGER NOT NULL, + "SNAPSHOT_ID" INTEGER, "RULE_ID" INTEGER NOT NULL, "FAILURE_LEVEL" INTEGER NOT NULL, "MESSAGE" VARCHAR(4000), diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/database/model/RuleFailureModel.java b/sonar-plugin-api/src/main/java/org/sonar/api/database/model/RuleFailureModel.java index 133735e4bad..a3455a630fa 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/database/model/RuleFailureModel.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/database/model/RuleFailureModel.java @@ -35,7 +35,7 @@ public class RuleFailureModel extends BaseIdentifiable { public static final int MESSAGE_COLUMN_SIZE = 4000; - @Column(name = "snapshot_id") + @Column(name = "snapshot_id", nullable = true) protected Integer snapshotId; @Column(name = "rule_id", updatable = false, nullable = false) diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/232_nullable_rule_failures_snapshot_id.rb b/sonar-server/src/main/webapp/WEB-INF/db/migrate/232_nullable_rule_failures_snapshot_id.rb new file mode 100644 index 00000000000..7f69636a4c7 --- /dev/null +++ b/sonar-server/src/main/webapp/WEB-INF/db/migrate/232_nullable_rule_failures_snapshot_id.rb @@ -0,0 +1,41 @@ +# +# Sonar, entreprise quality control tool. +# Copyright (C) 2008-2011 SonarSource +# mailto:contact AT sonarsource DOT com +# +# Sonar 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. +# +# Sonar 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 Sonar; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 +# + +# +# Sonar 2.13 +# http://jira.codehaus.org/browse/SONAR-1974 +# +class NullableRuleFailuresSnapshotId < ActiveRecord::Migration + + def self.up + dialect = ActiveRecord::Base.configurations[ENV['RAILS_ENV']]["dialect"] + + if dialect == 'sqlserver' + remove_index 'rule_failures', 'snapshot_id', :name => 'rule_failure_snapshot_id' + end + + change_column 'rule_failures', 'snapshot_id', :integer, :null => true + + if dialect == 'sqlserver' + add_index 'rule_failures', 'snapshot_id', :name => 'rule_failure_snapshot_id' + end + end + +end -- 2.39.5