]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-11310 drop tmp columns on CE_QUEUE and CE_ACTIVITY
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Mon, 1 Oct 2018 16:26:32 +0000 (18:26 +0200)
committersonartech <sonartech@sonarsource.com>
Wed, 10 Oct 2018 07:23:00 +0000 (09:23 +0200)
and make columns not nullable

server/sonar-db-core/src/main/resources/org/sonar/db/version/schema-h2.ddl
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DbVersion74.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DropTmpColumnsToCeActivity.java [new file with mode: 0644]
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/DropTmpComponentUuidColumnsToCeQueue.java [new file with mode: 0644]
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/MakeCeActivityLastKeyColumnsNotNullable.java [new file with mode: 0644]
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v74/DbVersion74Test.java

index b7fa9b36bc775a274118b5d503c20a68dbf99769..a792c2be6b11818637b878211d6b9f591eff7923 100644 (file)
@@ -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" (
index 85b37533ee7c41accc37333f0981ad38202fcb35..90ce65253b47e02acb158847873cfe173dc1cc42 100644 (file)
@@ -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 (file)
index 0000000..0db3c75
--- /dev/null
@@ -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 (file)
index 0000000..21f67a4
--- /dev/null
@@ -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 (file)
index 0000000..4480207
--- /dev/null
@@ -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());
+  }
+}
index 5064842d84d1a8fbed238e3084c85535238205bf..d60e9a69c4eea5541b20a639209a4932f0776a27 100644 (file)
@@ -35,6 +35,6 @@ public class DbVersion74Test {
 
   @Test
   public void verify_migration_count() {
-    verifyMigrationCount(underTest, 18);
+    verifyMigrationCount(underTest, 21);
   }
 }