diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2018-09-05 18:18:37 +0200 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2018-09-24 20:20:58 +0200 |
commit | 326b30334f0f5c0bb6a9565a3f6b367695bb1087 (patch) | |
tree | 599c94cef6baed36d326e7f4570fac0d728f7295 /server/sonar-db-migration/src | |
parent | 6b71b52fde2bc496ee84c87b79a4a186e8f78774 (diff) | |
download | sonarqube-326b30334f0f5c0bb6a9565a3f6b367695bb1087.tar.gz sonarqube-326b30334f0f5c0bb6a9565a3f6b367695bb1087.zip |
SONAR-11209 Add ad hoc columns in RULES_METADATA
Diffstat (limited to 'server/sonar-db-migration/src')
5 files changed, 140 insertions, 1 deletions
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/AddAdHocColumnsInInRulesMetadata.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/AddAdHocColumnsInInRulesMetadata.java new file mode 100644 index 00000000000..a9893294c3b --- /dev/null +++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/AddAdHocColumnsInInRulesMetadata.java @@ -0,0 +1,62 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program 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. + * + * 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 + * 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. + */ +package org.sonar.server.platform.db.migration.version.v74; + +import java.sql.SQLException; +import org.sonar.db.Database; +import org.sonar.server.platform.db.migration.SupportsBlueGreen; +import org.sonar.server.platform.db.migration.sql.AddColumnsBuilder; +import org.sonar.server.platform.db.migration.step.DdlChange; + +import static org.sonar.server.platform.db.migration.def.ClobColumnDef.newClobColumnDefBuilder; +import static org.sonar.server.platform.db.migration.def.TinyIntColumnDef.newTinyIntColumnDefBuilder; +import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.newVarcharColumnDefBuilder; + +@SupportsBlueGreen +public class AddAdHocColumnsInInRulesMetadata extends DdlChange { + + public AddAdHocColumnsInInRulesMetadata(Database db) { + super(db); + } + + @Override + public void execute(Context context) throws SQLException { + context.execute(new AddColumnsBuilder(getDialect(), "rules_metadata") + .addColumn(newVarcharColumnDefBuilder() + .setColumnName("ad_hoc_name") + .setLimit(200) + .setIsNullable(true) + .build()) + .addColumn(newClobColumnDefBuilder() + .setColumnName("ad_hoc_description") + .setIsNullable(true) + .build()) + .addColumn(newVarcharColumnDefBuilder() + .setColumnName("ad_hoc_severity") + .setIsNullable(true) + .setLimit(10) + .build()) + .addColumn(newTinyIntColumnDefBuilder() + .setColumnName("ad_hoc_type") + .setIsNullable(true) + .build()) + .build()); + } +} diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DbVersion74.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DbVersion74.java index 569a5ac2e7c..4d45e1d0765 100644 --- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DbVersion74.java +++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DbVersion74.java @@ -31,6 +31,7 @@ public class DbVersion74 implements DbVersion { .add(2301, "Add IS_ADHOC column to RULES table", AddIsAdHocToRules.class) .add(2302, "Populate IS_AD_HOC in RULES", PopulateIsAdHocOnRules.class) .add(2303, "Set IS_EXTERNAL and IS_AD_HOC not nullable in RULES", SetIsExternalAndIsAdHocNotNullableInRules.class) + .add(2304, "Add ad hoc related columns in RULES_METADATA", AddAdHocColumnsInInRulesMetadata.class) ; } } diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v74/AddAdHocColumnsInInRulesMetadataTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v74/AddAdHocColumnsInInRulesMetadataTest.java new file mode 100644 index 00000000000..3acb7280e6b --- /dev/null +++ b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v74/AddAdHocColumnsInInRulesMetadataTest.java @@ -0,0 +1,60 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program 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. + * + * 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 + * 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. + */ +package org.sonar.server.platform.db.migration.version.v74; + +import java.sql.SQLException; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.sonar.db.CoreDbTester; + +import static java.sql.Types.CLOB; +import static java.sql.Types.TINYINT; +import static java.sql.Types.VARCHAR; + +public class AddAdHocColumnsInInRulesMetadataTest { + @Rule + public final CoreDbTester db = CoreDbTester.createForSchema(AddAdHocColumnsInInRulesMetadataTest.class, "rules_metadata.sql"); + + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + private AddAdHocColumnsInInRulesMetadata underTest = new AddAdHocColumnsInInRulesMetadata(db.database()); + + @Test + public void columns_are_updated() throws SQLException { + underTest.execute(); + + db.assertColumnDefinition("rules_metadata", "ad_hoc_name", VARCHAR, 200, true); + db.assertColumnDefinition("rules_metadata", "ad_hoc_description", CLOB, null, true); + db.assertColumnDefinition("rules_metadata", "ad_hoc_severity", VARCHAR, 10, true); + db.assertColumnDefinition("rules_metadata", "ad_hoc_type", TINYINT, null, true); + } + + @Test + public void migration_is_not_reentrant() throws SQLException { + underTest.execute(); + + expectedException.expect(IllegalStateException.class); + + underTest.execute(); + } + +} diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v74/DbVersion74Test.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v74/DbVersion74Test.java index 28062983699..28dc704bf77 100644 --- a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v74/DbVersion74Test.java +++ b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v74/DbVersion74Test.java @@ -35,6 +35,6 @@ public class DbVersion74Test { @Test public void verify_migration_count() { - verifyMigrationCount(underTest, 4); + verifyMigrationCount(underTest, 5); } } diff --git a/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v74/AddAdHocColumnsInInRulesMetadataTest/rules_metadata.sql b/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v74/AddAdHocColumnsInInRulesMetadataTest/rules_metadata.sql new file mode 100644 index 00000000000..1b344c861a4 --- /dev/null +++ b/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v74/AddAdHocColumnsInInRulesMetadataTest/rules_metadata.sql @@ -0,0 +1,16 @@ +CREATE TABLE "RULES_METADATA" ( + "RULE_ID" INTEGER NOT NULL, + "ORGANIZATION_UUID" VARCHAR(40) NOT NULL, + "NOTE_DATA" CLOB, + "NOTE_USER_UUID" VARCHAR(255), + "NOTE_CREATED_AT" BIGINT, + "NOTE_UPDATED_AT" BIGINT, + "REMEDIATION_FUNCTION" VARCHAR(20), + "REMEDIATION_GAP_MULT" VARCHAR(20), + "REMEDIATION_BASE_EFFORT" VARCHAR(20), + "TAGS" VARCHAR(4000), + "CREATED_AT" BIGINT NOT NULL, + "UPDATED_AT" BIGINT NOT NULL, + + CONSTRAINT "PK_RULES_METADATA" PRIMARY KEY ("RULE_ID", "ORGANIZATION_UUID") +);
\ No newline at end of file |