From b7fb648be56f846c25b70716f713805a9adb4653 Mon Sep 17 00:00:00 2001 From: Fabrice Bellingard Date: Fri, 6 Jul 2012 14:30:10 +0200 Subject: [PATCH] SONAR-1608 Add index on projects.root_id for better performances => when renaming project keys on large databases. --- .../core/persistence/DatabaseVersion.java | 2 +- .../org/sonar/core/persistence/rows-h2.sql | 1 + .../project/prepare_key_bulk_update.html.erb | 2 +- .../321_add_index_on_resource_root_id.rb | 34 +++++++++++++++++++ .../main/webapp/WEB-INF/db/migrate/README.txt | 4 +-- 5 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 sonar-server/src/main/webapp/WEB-INF/db/migrate/321_add_index_on_resource_root_id.rb diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java index dfe7480a619..494807f1988 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java @@ -35,7 +35,7 @@ import java.util.List; */ public class DatabaseVersion implements BatchComponent, ServerComponent { - public static final int LAST_VERSION = 320; + public static final int LAST_VERSION = 321; public static enum Status { UP_TO_DATE, REQUIRES_UPGRADE, REQUIRES_DOWNGRADE, FRESH_INSTALL diff --git a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql index 804f1f830a0..913e1ff6d9c 100644 --- a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql +++ b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql @@ -158,6 +158,7 @@ INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('304'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('305'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('306'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('320'); +INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('321'); 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', '2011-09-26 22:27:48.0', '2011-09-26 22:27:48.0', null, null); ALTER TABLE USERS ALTER COLUMN ID RESTART WITH 2; diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/project/prepare_key_bulk_update.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/project/prepare_key_bulk_update.html.erb index e7cf3b3bd68..ae8efb98ee0 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/project/prepare_key_bulk_update.html.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/project/prepare_key_bulk_update.html.erb @@ -45,7 +45,7 @@
<%= submit_tag message('update_key.rename'), :id => 'bulk_update_button', :class => 'action' -%> - <%= message('cancel') -%> +  <%= message('cancel') -%> <% end %> <% else %> diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/321_add_index_on_resource_root_id.rb b/sonar-server/src/main/webapp/WEB-INF/db/migrate/321_add_index_on_resource_root_id.rb new file mode 100644 index 00000000000..01397f4ccaf --- /dev/null +++ b/sonar-server/src/main/webapp/WEB-INF/db/migrate/321_add_index_on_resource_root_id.rb @@ -0,0 +1,34 @@ +# +# Sonar, open source software quality management tool. +# Copyright (C) 2008-2012 SonarSource +# mailto:contact AT sonarsource DOT com +# +# Sonar 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. +# +# Sonar 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 Sonar; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 +# + +# +# Sonar 3.2 +# +class AddIndexOnResourceRootId < ActiveRecord::Migration + + def self.up + begin + add_index 'projects', 'root_id', :name => 'projects_root_id' + rescue + # Ignore, already exists + end + end + +end diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/README.txt b/sonar-server/src/main/webapp/WEB-INF/db/migrate/README.txt index 906efdf97d2..dcc2a5250ec 100644 --- a/sonar-server/src/main/webapp/WEB-INF/db/migrate/README.txt +++ b/sonar-server/src/main/webapp/WEB-INF/db/migrate/README.txt @@ -2,8 +2,8 @@ HOW TO ADD A MIGRATION * Jump some versions when adding the first Ruby on Rails migration of a new sonar version. For example if sonar 2.10 is 193, then sonar 2.11 should start at 200. * Complete the DDL files for Derby : - + sonar-core/src/main/resources/org/sonar/core/persistence/schema-derby.ddl - + sonar-core/src/main/resources/org/sonar/core/persistence/rows-derby.sql : + + sonar-core/src/main/resources/org/sonar/core/persistence/schema-h2.ddl + + sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql : - add "INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('')" * Update the migration id defined in sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java * If a table is added or removed, then edit sonar-core/src/main/java/org/sonar/core/persistence/DatabaseUtils.java -- 2.39.5