import org.sonar.server.db.migrations.v51.RemovePermissionsOnModulesMigrationStep;
import org.sonar.server.db.migrations.v51.RenameComponentRelatedParamsInIssueFilters;
import org.sonar.server.db.migrations.v51.UpdateProjectsModuleUuidPath;
+import org.sonar.server.db.migrations.v52.AddDependenciesColumns;
import org.sonar.server.db.migrations.v52.AddDependenciesComponentUuidColumns;
import org.sonar.server.db.migrations.v52.DropDependenciesComponentColumns;
import org.sonar.server.db.migrations.v52.FeedDependenciesComponentUuids;
AddDependenciesComponentUuidColumns.class,
FeedDependenciesComponentUuids.class,
DropDependenciesComponentColumns.class,
- FeedFileSourcesDataType.class
+ FeedFileSourcesDataType.class,
+ AddDependenciesColumns.class
);
}
--- /dev/null
+/*
+ * 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.
+ */
+
+package org.sonar.server.db.migrations.v52;
+
+import org.sonar.core.persistence.Database;
+import org.sonar.server.db.migrations.AddColumnsBuilder;
+import org.sonar.server.db.migrations.DdlChange;
+
+import java.sql.SQLException;
+
+import static org.sonar.server.db.migrations.AddColumnsBuilder.ColumnDef.Type.BIG_INTEGER;
+import static org.sonar.server.db.migrations.AddColumnsBuilder.ColumnDef.Type.STRING;
+
+/**
+ * Add the following columns to the dependencies table :
+ * - from_parent_uuid
+ * - to_parent_uuid
+ * - root_project_snapshot_id
+ * - created_at
+ */
+public class AddDependenciesColumns extends DdlChange {
+
+ private final Database db;
+
+ public AddDependenciesColumns(Database db) {
+ super(db);
+ this.db = db;
+ }
+
+ @Override
+ public void execute(Context context) throws SQLException {
+ context.execute(generateSql());
+ }
+
+ private String generateSql() {
+ return new AddColumnsBuilder(db.getDialect(), "dependencies")
+ .addColumn(
+ new AddColumnsBuilder.ColumnDef()
+ .setName("from_parent_uuid")
+ .setType(STRING)
+ .setLimit(50)
+ .setNullable(true)
+ )
+ .addColumn(
+ new AddColumnsBuilder.ColumnDef()
+ .setName("to_parent_uuid")
+ .setType(STRING)
+ .setLimit(50)
+ .setNullable(true)
+ )
+ .addColumn(
+ new AddColumnsBuilder.ColumnDef()
+ .setName("root_project_snapshot_id")
+ .setType(BIG_INTEGER)
+ .setNullable(true)
+ )
+ .addColumn(
+ new AddColumnsBuilder.ColumnDef()
+ .setName("created_at")
+ .setType(BIG_INTEGER)
+ .setNullable(true)
+ )
+ .build();
+ }
+
+}
--- /dev/null
+/*
+ * 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.
+ */
+
+package org.sonar.server.db.migrations.v52;
+
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.sonar.core.persistence.DbTester;
+
+import java.sql.Types;
+
+public class AddDependenciesColumnsTest {
+
+ @ClassRule
+ public static DbTester db = new DbTester().schema(AddDependenciesColumnsTest.class, "schema.sql");
+
+ AddDependenciesColumns migration;
+
+ @Before
+ public void setUp() throws Exception {
+ migration = new AddDependenciesColumns(db.database());
+ }
+
+ @Test
+ public void update_columns() throws Exception {
+ migration.execute();
+
+ db.assertColumnDefinition("dependencies", "from_parent_uuid", Types.VARCHAR, 50);
+ db.assertColumnDefinition("dependencies", "to_parent_uuid", Types.VARCHAR, 50);
+ db.assertColumnDefinition("dependencies", "created_at", Types.BIGINT, null);
+ }
+
+}
--- /dev/null
+CREATE TABLE "DEPENDENCIES" (
+ "ID" BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+ "FROM_SNAPSHOT_ID" INTEGER,
+ "FROM_COMPONENT_UUID" INTEGER,
+ "TO_SNAPSHOT_ID" INTEGER,
+ "TO_COMPONENT_UUID" INTEGER,
+ "DEP_USAGE" VARCHAR(30),
+ "DEP_WEIGHT" INTEGER,
+ "PROJECT_SNAPSHOT_ID" INTEGER,
+ "PARENT_DEPENDENCY_ID" BIGINT,
+ "FROM_SCOPE" VARCHAR(3),
+ "TO_SCOPE" VARCHAR(3)
+);
--- /dev/null
+#
+# 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.2
+# SONAR-6256
+#
+class AddDependenciesColumns < ActiveRecord::Migration
+
+ def self.up
+ execute_java_migration('org.sonar.server.db.migrations.v52.AddDependenciesColumns')
+ end
+
+end
*/
public class DatabaseVersion implements BatchComponent, ServerComponent {
- public static final int LAST_VERSION = 913;
+ public static final int LAST_VERSION = 914;
/**
* List of all the tables.n
INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('911');
INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('912');
INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('913');
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('914');
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;
"ID" BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
"FROM_SNAPSHOT_ID" INTEGER,
"FROM_COMPONENT_UUID" VARCHAR(50),
+ "FROM_PARENT_UUID" VARCHAR(50),
"TO_SNAPSHOT_ID" INTEGER,
"TO_COMPONENT_UUID" VARCHAR(50),
+ "TO_PARENT_UUID" VARCHAR(50),
"DEP_USAGE" VARCHAR(30),
"DEP_WEIGHT" INTEGER,
"PROJECT_SNAPSHOT_ID" INTEGER,
+ "ROOT_PROJECT_SNAPSHOT_ID" INTEGER,
"PARENT_DEPENDENCY_ID" BIGINT,
"FROM_SCOPE" VARCHAR(3),
- "TO_SCOPE" VARCHAR(3)
+ "TO_SCOPE" VARCHAR(3),
+ "CREATED_AT" BIGINT
);
CREATE TABLE "CHARACTERISTICS" (
person_id="[null]"
text_value="[null]" tendency="[null]" measure_date="[null]" project_id="[null]"
alert_status="[null]" description="[null]" measure_data="[null]"/>
- <dependencies id="1" from_component_uuid="A" from_snapshot_id="1" to_component_uuid="CC" to_snapshot_id="30"
- parent_dependency_id="[null]" project_snapshot_id="1"
- dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB"/>
+ <dependencies id="1" from_component_uuid="A" from_parent_uuid="P_A" from_snapshot_id="1" to_component_uuid="CC" to_parent_uuid="P_CC" to_snapshot_id="30"
+ parent_dependency_id="[null]" project_snapshot_id="1" root_project_snapshot_id="1"
+ dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB" created_at="1228222680000"/>
<events id="1" name="Version 1.0" component_uuid="1" snapshot_id="1" category="VERSION" description="[null]"
event_date="1228222680000" created_at="1228222680000" event_data="[null]"/>
<duplications_index id="1" project_snapshot_id="1" snapshot_id="1" hash="bb" index_in_file="0" start_line="0"
person_id="[null]"
text_value="[null]" tendency="[null]" measure_date="[null]" project_id="[null]"
alert_status="[null]" description="[null]" measure_data="[null]"/>
- <dependencies id="1" from_component_uuid="A" from_snapshot_id="1" to_component_uuid="CC" to_snapshot_id="30"
- parent_dependency_id="[null]" project_snapshot_id="1"
- dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB"/>
+ <dependencies id="1" from_component_uuid="A" from_parent_uuid="P_A" from_snapshot_id="1" to_component_uuid="CC" to_parent_uuid="P_CC" to_snapshot_id="30"
+ parent_dependency_id="[null]" project_snapshot_id="1" root_project_snapshot_id="1"
+ dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB" created_at="1228222680000"/>
<events id="1" name="Version 1.0" component_uuid="1" snapshot_id="1" category="VERSION" description="[null]"
event_date="1228222680000" created_at="1228222680000" event_data="[null]"/>
<duplications_index id="1" project_snapshot_id="1" snapshot_id="1" hash="bb" index_in_file="0" start_line="0"
person_id="[null]"
text_value="[null]" tendency="[null]" measure_date="[null]" project_id="[null]"
alert_status="[null]" description="[null]" measure_data="[null]"/>
- <dependencies id="2" from_component_uuid="AA" from_snapshot_id="10" to_component_uuid="E" to_snapshot_id="5"
- parent_dependency_id="[null]" project_snapshot_id="5"
- dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB"/>
- <dependencies id="3" from_component_uuid="C" from_snapshot_id="5" to_component_uuid="CCC" to_snapshot_id="300"
- parent_dependency_id="[null]" project_snapshot_id="5"
- dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB"/>
+ <dependencies id="2" from_component_uuid="AA" from_parent_uuid="P_AA" from_snapshot_id="10" to_component_uuid="E" to_parent_uuid="P_EE" to_snapshot_id="5"
+ parent_dependency_id="[null]" project_snapshot_id="5" root_project_snapshot_id="5"
+ dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB" created_at="1228222680000"/>
+ <dependencies id="3" from_component_uuid="C" from_parent_uuid="P_C" from_snapshot_id="5" to_component_uuid="CCC" to_parent_uuid="P_CCC" to_snapshot_id="300"
+ parent_dependency_id="[null]" project_snapshot_id="5" root_project_snapshot_id="5"
+ dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB" created_at="1228222680000"/>
<events id="2" name="Version 1.0" component_uuid="5" snapshot_id="5" category="VERSION" description="[null]"
event_date="1228222680000" created_at="1228222680000" event_data="[null]"/>
<duplications_index id="2" project_snapshot_id="5" snapshot_id="5" hash="bb" index_in_file="0" start_line="0"
text_value="[null]" tendency="[null]" measure_date="[null]" alert_status="[null]"
description="[null]" measure_data="[null]"/>
- <!--<dependencies id="1" from_resource_id="1" from_component_uuid="A" from_snapshot_id="1" to_resource_id="2" to_component_uuid="B" to_snapshot_id="2"-->
- <!--parent_dependency_id="[null]" project_snapshot_id="[null]"-->
- <!--dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB"/>-->
+ <!--<dependencies id="1" from_component_uuid="A" from_parent_uuid="P_A" from_snapshot_id="1" to_component_uuid="B" to_parent_uuid="P_B" to_snapshot_id="2"-->
+ <!--parent_dependency_id="[null]" project_snapshot_id="[null]" root_project_snapshot_id="[null]"-->
+ <!--dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB" created_at="1228222680000"/>-->
- <!--<dependencies id="2" from_resource_id="3" from_component_uuid="C" from_snapshot_id="3" to_resource_id="1" to_component_uuid="A" to_snapshot_id="1"-->
- <!--parent_dependency_id="[null]" project_snapshot_id="2"-->
- <!--dep_usage="USES" dep_weight="1" from_scope="LIB" to_scope="PRJ"/>-->
+ <!--<dependencies id="2" from_component_uuid="C" from_parent_uuid="P_C" from_snapshot_id="3" to_component_uuid="A" to_parent_uuid="P_A" to_snapshot_id="1"-->
+ <!--parent_dependency_id="[null]" project_snapshot_id="2" root_project_snapshot_id="1"-->
+ <!--dep_usage="USES" dep_weight="1" from_scope="LIB" to_scope="PRJ" created_at="1228222680000"/>-->
<events id="1" component_uuid="1" snapshot_id="1"
category="VERSION" description="[null]" name="Version 1.0" event_date="1228222680000"
text_value="[null]" tendency="[null]" measure_date="[null]" alert_status="[null]"
description="[null]" measure_data="[null]"/>
- <dependencies id="3" from_component_uuid="CC" from_snapshot_id="33" to_component_uuid="DD" to_snapshot_id="44"
- parent_dependency_id="[null]" project_snapshot_id="[null]"
- dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB"/>
+ <dependencies id="3" from_component_uuid="CC" from_parent_uuid="P_CC" from_snapshot_id="33" to_component_uuid="DD" to_parent_uuid="P_DD" to_snapshot_id="44"
+ parent_dependency_id="[null]" project_snapshot_id="[null]" root_project_snapshot_id="[null]"
+ dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB" created_at="1228222680000"/>
- <dependencies id="4" from_component_uuid="EE" from_snapshot_id="55" to_component_uuid="FF" to_snapshot_id="66"
- parent_dependency_id="[null]" project_snapshot_id="2"
- dep_usage="USES" dep_weight="1" from_scope="LIB" to_scope="PRJ"/>
+ <dependencies id="4" from_component_uuid="EE" from_parent_uuid="P_EE" from_snapshot_id="55" to_component_uuid="FF" to_parent_uuid="P_FF" to_snapshot_id="66"
+ parent_dependency_id="[null]" project_snapshot_id="2" root_project_snapshot_id="1"
+ dep_usage="USES" dep_weight="1" from_scope="LIB" to_scope="PRJ" created_at="1228222680000"/>
<events id="2" component_uuid="2" snapshot_id="2"
category="VERSION" description="[null]" name="Version 1.0" event_date="1228222680000"
tendency="[null]" measure_date="[null]" alert_status="[null]" description="[null]"
measure_data="[null]"/>
- <dependencies id="1" from_component_uuid="A" from_snapshot_id="1" to_component_uuid="B" to_snapshot_id="2"
- parent_dependency_id="[null]" project_snapshot_id="[null]"
- dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB"/>
+ <dependencies id="1" from_component_uuid="A" from_parent_uuid="P_A" from_snapshot_id="1" to_component_uuid="B" to_parent_uuid="P_B" to_snapshot_id="2"
+ parent_dependency_id="[null]" project_snapshot_id="[null]" root_project_snapshot_id="[null]"
+ dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB" created_at="1228222680000"/>
- <dependencies id="2" from_component_uuid="C" from_snapshot_id="3" to_component_uuid="A" to_snapshot_id="1"
- parent_dependency_id="[null]" project_snapshot_id="2"
- dep_usage="USES" dep_weight="1" from_scope="LIB" to_scope="PRJ"/>
+ <dependencies id="2" from_component_uuid="C" from_parent_uuid="P_C" from_snapshot_id="3" to_component_uuid="A" to_parent_uuid="P_A" to_snapshot_id="1"
+ parent_dependency_id="[null]" project_snapshot_id="2" root_project_snapshot_id="1"
+ dep_usage="USES" dep_weight="1" from_scope="LIB" to_scope="PRJ" created_at="1228222680000"/>
<events id="1" component_uuid="1" snapshot_id="1"
category="VERSION" description="[null]" name="Version 1.0" event_date="1228222680000"
text_value="[null]" tendency="[null]" measure_date="[null]" alert_status="[null]"
description="[null]" measure_data="[null]"/>
- <dependencies id="3" from_component_uuid="CC" from_snapshot_id="33" to_component_uuid="DD" to_snapshot_id="44"
- parent_dependency_id="[null]" project_snapshot_id="[null]"
- dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB"/>
+ <dependencies id="3" from_component_uuid="CC" from_parent_uuid="P_CC" from_snapshot_id="33" to_component_uuid="DD" to_parent_uuid="P_DD" to_snapshot_id="44"
+ parent_dependency_id="[null]" project_snapshot_id="[null]" root_project_snapshot_id="[null]"
+ dep_usage="USES" dep_weight="1" from_scope="PRJ" to_scope="LIB" created_at="1228222680000"/>
- <dependencies id="4" from_component_uuid="EE" from_snapshot_id="55" to_component_uuid="FF" to_snapshot_id="66"
- parent_dependency_id="[null]" project_snapshot_id="2"
- dep_usage="USES" dep_weight="1" from_scope="LIB" to_scope="PRJ"/>
+ <dependencies id="4" from_component_uuid="EE" from_parent_uuid="P_EE" from_snapshot_id="55" to_component_uuid="FF" to_parent_uuid="P_FF" to_snapshot_id="66"
+ parent_dependency_id="[null]" project_snapshot_id="2" root_project_snapshot_id="1"
+ dep_usage="USES" dep_weight="1" from_scope="LIB" to_scope="PRJ" created_at="1228222680000"/>
<events id="2" component_uuid="2" snapshot_id="2"
category="VERSION" description="[null]" name="Version 1.0" event_date="1228222680000"