From: Sébastien Lesaint Date: Mon, 1 Oct 2018 16:26:32 +0000 (+0200) Subject: SONAR-11310 drop tmp columns on CE_QUEUE and CE_ACTIVITY X-Git-Tag: 7.5~394 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=a1fa6643d0f43003dc3edce42961032774a7e3db;p=sonarqube.git SONAR-11310 drop tmp columns on CE_QUEUE and CE_ACTIVITY and make columns not nullable --- diff --git a/server/sonar-db-core/src/main/resources/org/sonar/db/version/schema-h2.ddl b/server/sonar-db-core/src/main/resources/org/sonar/db/version/schema-h2.ddl index b7fa9b36bc7..a792c2be6b1 100644 --- a/server/sonar-db-core/src/main/resources/org/sonar/db/version/schema-h2.ddl +++ b/server/sonar-db-core/src/main/resources/org/sonar/db/version/schema-h2.ddl @@ -670,8 +670,6 @@ CREATE TABLE "CE_QUEUE" ( "TASK_TYPE" VARCHAR(15) NOT NULL, "COMPONENT_UUID" VARCHAR(40) NULL, "MAIN_COMPONENT_UUID" VARCHAR(40) NULL, - "TMP_COMPONENT_UUID" VARCHAR(40) NULL, - "TMP_MAIN_COMPONENT_UUID" VARCHAR(40) NULL, "STATUS" VARCHAR(15) NOT NULL, "SUBMITTER_UUID" VARCHAR(255) NULL, "WORKER_UUID" VARCHAR(40) NULL, @@ -683,8 +681,6 @@ CREATE TABLE "CE_QUEUE" ( CREATE UNIQUE INDEX "CE_QUEUE_UUID" ON "CE_QUEUE" ("UUID"); CREATE INDEX "CE_QUEUE_COMPONENT" ON "CE_QUEUE" ("COMPONENT_UUID"); CREATE INDEX "CE_QUEUE_MAIN_COMPONENT" ON "CE_QUEUE" ("MAIN_COMPONENT_UUID"); -CREATE INDEX "CE_QUEUE_TMP_CPNT_UUID" ON "CE_QUEUE" ("TMP_COMPONENT_UUID"); -CREATE INDEX "CE_QUEUE_TMP_MAIN_CPNT_UUID" ON "CE_QUEUE" ("TMP_MAIN_COMPONENT_UUID"); CREATE INDEX "CE_QUEUE_STATUS" ON "CE_QUEUE" ("STATUS"); @@ -694,18 +690,12 @@ CREATE TABLE "CE_ACTIVITY" ( "TASK_TYPE" VARCHAR(15) NOT NULL, "COMPONENT_UUID" VARCHAR(40) NULL, "MAIN_COMPONENT_UUID" VARCHAR(40) NULL, - "TMP_COMPONENT_UUID" VARCHAR(40) NULL, - "TMP_MAIN_COMPONENT_UUID" VARCHAR(40) NULL, "ANALYSIS_UUID" VARCHAR(50) NULL, "STATUS" VARCHAR(15) NOT NULL, "IS_LAST" BOOLEAN, "IS_LAST_KEY" VARCHAR(55), "MAIN_IS_LAST" BOOLEAN, "MAIN_IS_LAST_KEY" VARCHAR(55), - "TMP_IS_LAST" BOOLEAN, - "TMP_IS_LAST_KEY" VARCHAR(55), - "TMP_MAIN_IS_LAST" BOOLEAN, - "TMP_MAIN_IS_LAST_KEY" VARCHAR(55), "SUBMITTER_UUID" VARCHAR(255) NULL, "WORKER_UUID" VARCHAR(40) NULL, "EXECUTION_COUNT" INTEGER NOT NULL, @@ -722,16 +712,10 @@ CREATE TABLE "CE_ACTIVITY" ( CREATE UNIQUE INDEX "CE_ACTIVITY_UUID" ON "CE_ACTIVITY" ("UUID"); CREATE INDEX "CE_ACTIVITY_COMPONENT" ON "CE_ACTIVITY" ("COMPONENT_UUID"); CREATE INDEX "CE_ACTIVITY_MAIN_COMPONENT" ON "CE_ACTIVITY" ("COMPONENT_UUID"); -CREATE INDEX "CE_ACTIVITY_COMPONENT_UUID" ON "CE_ACTIVITY" ("COMPONENT_UUID"); -CREATE INDEX "CE_ACTIVITY_TMP_CPNT_UUID" ON "CE_ACTIVITY" ("TMP_COMPONENT_UUID"); CREATE INDEX "CE_ACTIVITY_ISLAST_KEY" ON "CE_ACTIVITY" ("IS_LAST_KEY"); CREATE INDEX "CE_ACTIVITY_ISLAST" ON "CE_ACTIVITY" ("IS_LAST", "STATUS"); CREATE INDEX "CE_ACTIVITY_MAIN_ISLAST_KEY" ON "CE_ACTIVITY" ("MAIN_IS_LAST_KEY"); CREATE INDEX "CE_ACTIVITY_MAIN_ISLAST" ON "CE_ACTIVITY" ("MAIN_IS_LAST", "STATUS"); -CREATE INDEX "CE_ACTIVITY_T_ISLAST_KEY" ON "CE_ACTIVITY" ("TMP_IS_LAST_KEY"); -CREATE INDEX "CE_ACTIVITY_T_ISLAST" ON "CE_ACTIVITY" ("TMP_IS_LAST", "STATUS"); -CREATE INDEX "CE_ACTIVITY_T_MAIN_ISLAST_KEY" ON "CE_ACTIVITY" ("TMP_MAIN_IS_LAST_KEY"); -CREATE INDEX "CE_ACTIVITY_T_MAIN_ISLAST" ON "CE_ACTIVITY" ("TMP_MAIN_IS_LAST", "STATUS"); CREATE TABLE "CE_TASK_CHARACTERISTICS" ( 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 85b37533ee7..90ce65253b4 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 @@ -45,6 +45,9 @@ public class DbVersion74 implements DbVersion { .add(2315, "Populate CE_QUEUE.MAIN_COMPONENT_UUID 4/5", PopulateMainComponentUuidColumnsToCeQueue.class) .add(2316, "Populate CE_ACTIVITY.MAIN_COMPONENT_UUID 4/5", PopulateMainComponentUuidColumnsToCeActivity.class) .add(2317, "Populate CE_ACTIVITY.MAIN_LAST_KEY 4/6", PopulateLastKeyColumnsToCeActivity.class) + .add(2318, "Add CE_QUEUE.MAIN_COMPONENT_UUID 5/5", DropTmpComponentUuidColumnsToCeQueue.class) + .add(2319, "Add CE_ACTIVITY.MAIN_COMPONENT_UUID 5/5 + Add CE_ACTIVITY.MAIN_LAST_KEY 5/6", DropTmpColumnsToCeActivity.class) + .add(2320, "Add CE_ACTIVITY.MAIN_LAST_KEY 6/6", MakeCeActivityLastKeyColumnsNotNullable.class) ; } } diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DropTmpColumnsToCeActivity.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DropTmpColumnsToCeActivity.java new file mode 100644 index 00000000000..0db3c752dcd --- /dev/null +++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DropTmpColumnsToCeActivity.java @@ -0,0 +1,69 @@ +/* + * 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.DropColumnsBuilder; +import org.sonar.server.platform.db.migration.sql.DropIndexBuilder; +import org.sonar.server.platform.db.migration.step.DdlChange; + +@SupportsBlueGreen +public class DropTmpColumnsToCeActivity extends DdlChange { + private static final String TABLE_NAME = "ce_activity"; + + public DropTmpColumnsToCeActivity(Database db) { + super(db); + } + + @Override + public void execute(Context context) throws SQLException { + context.execute(new DropIndexBuilder(getDialect()) + .setTable(TABLE_NAME) + .setName("ce_activity_t_islast_key") + .build()); + context.execute(new DropIndexBuilder(getDialect()) + .setTable(TABLE_NAME) + .setName("ce_activity_t_islast") + .build()); + context.execute(new DropIndexBuilder(getDialect()) + .setTable(TABLE_NAME) + .setName("ce_activity_t_main_islast_key") + .build()); + context.execute(new DropIndexBuilder(getDialect()) + .setTable(TABLE_NAME) + .setName("ce_activity_t_main_islast") + .build()); + context.execute(new DropIndexBuilder(getDialect()) + .setTable(TABLE_NAME) + .setName("ce_activity_tmp_cpnt_uuid") + .build()); + context.execute(new DropIndexBuilder(getDialect()) + .setTable(TABLE_NAME) + .setName("ce_activity_tmp_main_cpnt_uuid") + .build()); + + context.execute(new DropColumnsBuilder(getDialect(), TABLE_NAME, + "tmp_is_last", "tmp_is_last_key", "tmp_main_is_last", "tmp_main_is_last_key", + "tmp_component_uuid", "tmp_main_component_uuid") + .build()); + } +} diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DropTmpComponentUuidColumnsToCeQueue.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DropTmpComponentUuidColumnsToCeQueue.java new file mode 100644 index 00000000000..21f67a4f9dd --- /dev/null +++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DropTmpComponentUuidColumnsToCeQueue.java @@ -0,0 +1,51 @@ +/* + * 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.DropColumnsBuilder; +import org.sonar.server.platform.db.migration.sql.DropIndexBuilder; +import org.sonar.server.platform.db.migration.step.DdlChange; + +@SupportsBlueGreen +public class DropTmpComponentUuidColumnsToCeQueue extends DdlChange { + private static final String TABLE_NAME = "ce_queue"; + + public DropTmpComponentUuidColumnsToCeQueue(Database db) { + super(db); + } + + @Override + public void execute(Context context) throws SQLException { + context.execute(new DropIndexBuilder(getDialect()) + .setTable(TABLE_NAME) + .setName("ce_queue_tmp_component_uuid") + .build()); + context.execute(new DropIndexBuilder(getDialect()) + .setTable(TABLE_NAME) + .setName("ce_queue_tmp_main_cmpt_uuid") + .build()); + + context.execute(new DropColumnsBuilder(getDialect(), TABLE_NAME, "tmp_component_uuid", "tmp_main_component_uuid") + .build()); + } +} diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/MakeCeActivityLastKeyColumnsNotNullable.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/MakeCeActivityLastKeyColumnsNotNullable.java new file mode 100644 index 00000000000..4480207c9e3 --- /dev/null +++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/MakeCeActivityLastKeyColumnsNotNullable.java @@ -0,0 +1,70 @@ +/* + * 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.def.BooleanColumnDef; +import org.sonar.server.platform.db.migration.def.VarcharColumnDef; +import org.sonar.server.platform.db.migration.sql.AlterColumnsBuilder; +import org.sonar.server.platform.db.migration.step.DdlChange; + +import static org.sonar.server.platform.db.migration.def.BooleanColumnDef.newBooleanColumnDefBuilder; +import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.UUID_SIZE; +import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.newVarcharColumnDefBuilder; + +@SupportsBlueGreen +public class MakeCeActivityLastKeyColumnsNotNullable extends DdlChange { + private static final String TABLE_NAME = "ce_activity"; + private static final int TASK_TYPE_COLUMN_SIZE = 15; + private static final BooleanColumnDef COLUMN_IS_LAST = newBooleanColumnDefBuilder() + .setColumnName("is_last") + .setIsNullable(false) + .build(); + private static final VarcharColumnDef COLUMN_IS_LAST_KEY = newVarcharColumnDefBuilder() + .setColumnName("is_last_key") + .setLimit(UUID_SIZE + TASK_TYPE_COLUMN_SIZE) + .setIsNullable(false) + .build(); + private static final BooleanColumnDef COLUMN_MAIN_IS_LAST = newBooleanColumnDefBuilder() + .setColumnName("main_is_last") + .setIsNullable(false) + .build(); + private static final VarcharColumnDef COLUMN_MAIN_IS_LAST_KEY = newVarcharColumnDefBuilder() + .setColumnName("main_is_last_key") + .setLimit(UUID_SIZE + TASK_TYPE_COLUMN_SIZE) + .setIsNullable(false) + .build(); + + public MakeCeActivityLastKeyColumnsNotNullable(Database db) { + super(db); + } + + @Override + public void execute(Context context) throws SQLException { + context.execute(new AlterColumnsBuilder(getDialect(), TABLE_NAME) + .updateColumn(COLUMN_IS_LAST) + .updateColumn(COLUMN_IS_LAST_KEY) + .updateColumn(COLUMN_MAIN_IS_LAST) + .updateColumn(COLUMN_MAIN_IS_LAST_KEY) + .build()); + } +} 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 5064842d84d..d60e9a69c4e 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, 18); + verifyMigrationCount(underTest, 21); } }