diff options
author | Lukasz Jarocki <lukasz.jarocki@sonarsource.com> | 2022-11-23 15:16:10 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2022-12-01 20:03:11 +0000 |
commit | 24d4519ea1b8a4426dd90e0bb80b2b09bd7a1c12 (patch) | |
tree | 43407e4c9983c83fe250ad65e0ea50b5e677c39d /server/sonar-db-migration | |
parent | 8f833f4b90d60e1a560e5d3ff3711482a3af67a5 (diff) | |
download | sonarqube-24d4519ea1b8a4426dd90e0bb80b2b09bd7a1c12.tar.gz sonarqube-24d4519ea1b8a4426dd90e0bb80b2b09bd7a1c12.zip |
SONAR-17592 adding column messageFormattings to issues table
Diffstat (limited to 'server/sonar-db-migration')
4 files changed, 132 insertions, 0 deletions
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/AddMessageFormattingsColumnToIssueTable.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/AddMessageFormattingsColumnToIssueTable.java new file mode 100644 index 00000000000..9bd7e5958bf --- /dev/null +++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/AddMessageFormattingsColumnToIssueTable.java @@ -0,0 +1,48 @@ +/* + * SonarQube + * Copyright (C) 2009-2022 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.v98; + +import java.sql.Connection; +import java.sql.SQLException; +import org.sonar.db.Database; +import org.sonar.db.DatabaseUtils; +import org.sonar.server.platform.db.migration.def.BlobColumnDef; +import org.sonar.server.platform.db.migration.sql.AddColumnsBuilder; +import org.sonar.server.platform.db.migration.step.DdlChange; + +public class AddMessageFormattingsColumnToIssueTable extends DdlChange { + private static final String TABLE_NAME = "issues"; + private static final String COLUMN_NAME = "message_formattings"; + + public AddMessageFormattingsColumnToIssueTable(Database db) { + super(db); + } + + @Override + public void execute(Context context) throws SQLException { + try (Connection c = getDatabase().getDataSource().getConnection()) { + if (!DatabaseUtils.tableColumnExists(c, TABLE_NAME, COLUMN_NAME)) { + context.execute(new AddColumnsBuilder(getDialect(), TABLE_NAME) + .addColumn(BlobColumnDef.newBlobColumnDefBuilder().setColumnName(COLUMN_NAME).setIsNullable(true).build()) + .build()); + } + } + } +} diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/DbVersion98.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/DbVersion98.java index ab5da5a55db..b06c1e7b0d8 100644 --- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/DbVersion98.java +++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/DbVersion98.java @@ -31,6 +31,7 @@ public class DbVersion98 implements DbVersion { .add(6702, "Move project measure variations to values", MoveProjectMeasureVariationToValue.class) .add(6703, "Drop project measure variation column", DropProjectMeasureVariationColumn.class) .add(6704, "Update sonar-users group description", UpsertSonarUsersDescription.class) + .add(6705, "Add message_formattings column to issue table", AddMessageFormattingsColumnToIssueTable.class) ; } } diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v98/AddMessageFormattingsColumnToIssueTableTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v98/AddMessageFormattingsColumnToIssueTableTest.java new file mode 100644 index 00000000000..a368a287790 --- /dev/null +++ b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v98/AddMessageFormattingsColumnToIssueTableTest.java @@ -0,0 +1,53 @@ +/* + * SonarQube + * Copyright (C) 2009-2022 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.v98; + +import java.sql.SQLException; +import java.sql.Types; +import org.junit.Rule; +import org.junit.Test; +import org.sonar.db.CoreDbTester; + +public class AddMessageFormattingsColumnToIssueTableTest { + private static final String TABLE_NAME = "issues"; + private static final String COLUMN_NAME = "message_formattings"; + + @Rule + public final CoreDbTester db = CoreDbTester.createForSchema(AddMessageFormattingsColumnToIssueTableTest.class, "schema.sql"); + + private final AddMessageFormattingsColumnToIssueTable underTest = new AddMessageFormattingsColumnToIssueTable(db.database()); + + @Test + public void migration_should_add_column() throws SQLException { + db.assertColumnDoesNotExist(TABLE_NAME, COLUMN_NAME); + underTest.execute(); + db.assertColumnDefinition(TABLE_NAME, COLUMN_NAME, Types.BLOB, null, true); + } + + @Test + public void migration_should_be_reentrant() throws SQLException { + db.assertColumnDoesNotExist(TABLE_NAME, COLUMN_NAME); + underTest.execute(); + // re-entrant + underTest.execute(); + db.assertColumnDefinition(TABLE_NAME, COLUMN_NAME, Types.BLOB, null, true); + } + +} diff --git a/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v98/AddMessageFormattingsColumnToIssueTableTest/schema.sql b/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v98/AddMessageFormattingsColumnToIssueTableTest/schema.sql new file mode 100644 index 00000000000..b03e42cfb63 --- /dev/null +++ b/server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v98/AddMessageFormattingsColumnToIssueTableTest/schema.sql @@ -0,0 +1,30 @@ +CREATE TABLE "ISSUES"( + "KEE" VARCHAR(50) NOT NULL, + "RULE_UUID" VARCHAR(40), + "SEVERITY" VARCHAR(10), + "MANUAL_SEVERITY" BOOLEAN NOT NULL, + "MESSAGE" VARCHAR(4000), + "LINE" INTEGER, + "GAP" DOUBLE, + "STATUS" VARCHAR(20), + "RESOLUTION" VARCHAR(20), + "CHECKSUM" VARCHAR(1000), + "REPORTER" VARCHAR(255), + "ASSIGNEE" VARCHAR(255), + "AUTHOR_LOGIN" VARCHAR(255), + "ACTION_PLAN_KEY" VARCHAR(50), + "ISSUE_ATTRIBUTES" VARCHAR(4000), + "EFFORT" INTEGER, + "CREATED_AT" BIGINT, + "UPDATED_AT" BIGINT, + "ISSUE_CREATION_DATE" BIGINT, + "ISSUE_UPDATE_DATE" BIGINT, + "ISSUE_CLOSE_DATE" BIGINT, + "TAGS" VARCHAR(4000), + "COMPONENT_UUID" VARCHAR(50), + "PROJECT_UUID" VARCHAR(50), + "LOCATIONS" BLOB, + "ISSUE_TYPE" TINYINT, + "FROM_HOTSPOT" BOOLEAN, + CONSTRAINT pk_issues PRIMARY KEY (KEE) +);
\ No newline at end of file |