]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6925 add missing index on ce_activity.is_last_key 674/head
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Thu, 3 Dec 2015 14:25:09 +0000 (15:25 +0100)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Fri, 4 Dec 2015 10:03:30 +0000 (11:03 +0100)
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1003_add_index_on_ce_activity_is_last_key.rb [new file with mode: 0644]
sonar-db/src/main/java/org/sonar/db/version/DatabaseVersion.java
sonar-db/src/main/resources/org/sonar/db/version/rows-h2.sql
sonar-db/src/main/resources/org/sonar/db/version/schema-h2.ddl
sonar-db/src/test/java/org/sonar/db/ce/CeActivityDaoTest.java

diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1003_add_index_on_ce_activity_is_last_key.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1003_add_index_on_ce_activity_is_last_key.rb
new file mode 100644 (file)
index 0000000..7470311
--- /dev/null
@@ -0,0 +1,32 @@
+#
+# SonarQube, open source software quality management tool.
+# Copyright (C) 2008-2014 SonarSource
+# mailto:contact AT sonarsource DOT com
+#
+# SonarQube 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.
+#
+# SonarQube 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.
+#
+
+#
+# SonarQube 5.3
+#
+class AddIndexOnCeActivityIsLastKey < ActiveRecord::Migration
+
+  def self.up
+    add_index :ce_activity, :is_last_key, :name => 'ce_activity_islastkey'
+  end
+
+end
+
+
index 2faa9191b04d2774cf49b9e926eec2ed702ffe56..a9180d4e9c86e45d72b51b713861a46ec869d283 100644 (file)
@@ -29,7 +29,7 @@ import org.sonar.db.MyBatis;
 
 public class DatabaseVersion {
 
-  public static final int LAST_VERSION = 1002;
+  public static final int LAST_VERSION = 1003;
 
   /**
    * The minimum supported version which can be upgraded. Lower
index 4f97c05b4d5bf604f23778be658e429aff6ae5d0..0b770f42727fc2f55292db833764b104d463f692 100644 (file)
@@ -363,6 +363,7 @@ INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('941');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('1000');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('1001');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('1002');
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('1003');
 
 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', '1418215735482', '1418215735482', null, null);
 ALTER TABLE USERS ALTER COLUMN ID RESTART WITH 2;
index 97655698ec45a67ccd85e170b029c4fb7390580c..d71d0d7399d7705a1a3f5d1c4cd008e74770eff1 100644 (file)
@@ -710,3 +710,5 @@ CREATE INDEX "CE_ACTIVITY_COMPONENT_UUID" ON "CE_ACTIVITY" ("COMPONENT_UUID");
 CREATE UNIQUE INDEX "USER_TOKENS_TOKEN_HASH" ON "USER_TOKENS" ("TOKEN_HASH");
 
 CREATE UNIQUE INDEX "USER_TOKENS_LOGIN_NAME" ON "USER_TOKENS" ("LOGIN", "NAME");
+
+CREATE INDEX "CE_ACTIVITY_ISLASTKEY" ON "CE_ACTIVITY" ("IS_LAST_KEY");
index 564f413c29a9dfa5e24b1812096d3ab771b229d0..8b94ef241bd2cacc460611c30e728100180d5194 100644 (file)
@@ -73,11 +73,18 @@ public class CeActivityDaoTest {
     insert("TASK_2", REPORT, "PROJECT_2", CeActivityDto.Status.SUCCESS);
     assertThat(underTest.selectByUuid(db.getSession(), "TASK_2").get().getIsLast()).isTrue();
 
-    // two tasks on PROJECT_1, the more recent one is TASK_3
+    // two tasks on PROJECT_1, the most recent one is TASK_3
     insert("TASK_3", REPORT, "PROJECT_1", CeActivityDto.Status.FAILED);
     assertThat(underTest.selectByUuid(db.getSession(), "TASK_1").get().getIsLast()).isFalse();
     assertThat(underTest.selectByUuid(db.getSession(), "TASK_2").get().getIsLast()).isTrue();
     assertThat(underTest.selectByUuid(db.getSession(), "TASK_3").get().getIsLast()).isTrue();
+
+    // inserting a cancelled task does not change the last task
+    insert("TASK_4", REPORT, "PROJECT_1", CeActivityDto.Status.CANCELED);
+    assertThat(underTest.selectByUuid(db.getSession(), "TASK_1").get().getIsLast()).isFalse();
+    assertThat(underTest.selectByUuid(db.getSession(), "TASK_2").get().getIsLast()).isTrue();
+    assertThat(underTest.selectByUuid(db.getSession(), "TASK_3").get().getIsLast()).isTrue();
+    assertThat(underTest.selectByUuid(db.getSession(), "TASK_4").get().getIsLast()).isFalse();
   }
 
   @Test