]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7786 merge PROJECTS table clean migrations and do them earlier
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Mon, 11 Jul 2016 09:50:52 +0000 (11:50 +0200)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Mon, 11 Jul 2016 17:07:36 +0000 (19:07 +0200)
48 files changed:
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1221_add_uuid_columns_to_projects.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1221_clean_some_data_in_table_projects.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1222_add_uuid_columns_to_projects.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1222_populate_uuid_columns_of_projects.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1223_clean_orphan_rows_in_projects.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1223_populate_uuid_columns_of_projects.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1224_clean_orphan_rows_in_projects.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1224_drop_index_projects_uuid_from_projects.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1225_drop_index_projects_uuid_from_projects.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1225_make_uuid_columns_not_null_on_projects.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1226_make_uuid_columns_not_null_on_projects.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1226_recreate_index_projects_uuid_from_projects.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1227_drop_index_projects_root_id_from_projects.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1227_recreate_index_projects_uuid_from_projects.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1228_drop_id_columns_from_projects.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1228_drop_index_projects_root_id_from_projects.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1229_add_uuid_column_to_snapshots.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1229_drop_id_columns_from_projects.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1230_add_uuid_column_to_snapshots.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1230_populate_uuid_column_on_snapshots.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1231_make_uuid_column_not_null_on_snapshots.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1231_populate_uuid_column_on_snapshots.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1232_add_unique_index_on_uuid_of_snapshots.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1232_make_uuid_column_not_null_on_snapshots.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1233_add_analysis_uuid_column_to_ce_activity.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1233_add_unique_index_on_uuid_of_snapshots.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1234_add_analysis_uuid_column_to_ce_activity.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1234_populate_analysis_uuid_column_on_ce_activity.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1235_drop_snapshot_id_column_from_ce_activity.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1235_populate_analysis_uuid_column_on_ce_activity.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1236_add_component_uuid_and_analysis_uuid_to_duplications_index.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1236_drop_snapshot_id_column_from_ce_activity.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1237_add_component_uuid_and_analysis_uuid_to_duplications_index.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1237_populate_component_uuid_and_analysis_uuid_of_duplications_index.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1238_delete_orphan_duplications_index_rows_without_component_or_analysis.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1238_populate_component_uuid_and_analysis_uuid_of_duplications_index.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1239_delete_orphan_duplications_index_rows_without_component_or_analysis.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1239_make_component_uuid_and_analysis_uuid_not_null_on_duplications_index.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1240_make_component_uuid_and_analysis_uuid_not_null_on_duplications_index.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1255_fix_project_uuid_of_developer_projects.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1269_clean_usurper_root_components.rb [deleted file]
sonar-db/src/main/java/org/sonar/db/version/v60/CleanUsurperRootComponents.java
sonar-db/src/main/java/org/sonar/db/version/v60/FixProjectUuidOfDeveloperProjects.java
sonar-db/src/test/java/org/sonar/db/version/v60/CleanUsurperRootComponentsTest.java
sonar-db/src/test/java/org/sonar/db/version/v60/FixProjectUuidOfDeveloperProjectsTest.java
sonar-db/src/test/resources/org/sonar/db/version/v60/CleanUsurperRootComponentsTest/complete_schema.sql
sonar-db/src/test/resources/org/sonar/db/version/v60/FixProjectUuidOfDeveloperProjectsTest/in_progress_projects.sql [deleted file]
sonar-db/src/test/resources/org/sonar/db/version/v60/FixProjectUuidOfDeveloperProjectsTest/projects_5.6.sql [new file with mode: 0644]

diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1221_add_uuid_columns_to_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1221_add_uuid_columns_to_projects.rb
deleted file mode 100644 (file)
index 95fa983..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class AddUuidColumnsToProjects < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.AddUuidColumnsToProjects')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1221_clean_some_data_in_table_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1221_clean_some_data_in_table_projects.rb
new file mode 100644 (file)
index 0000000..092e147
--- /dev/null
@@ -0,0 +1,30 @@
+#
+# 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 6.0
+#
+class CleanSomeDataInTableProjects < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.FixProjectUuidOfDeveloperProjects')
+    execute_java_migration('org.sonar.db.version.v60.CleanUsurperRootComponents')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1222_add_uuid_columns_to_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1222_add_uuid_columns_to_projects.rb
new file mode 100644 (file)
index 0000000..95fa983
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class AddUuidColumnsToProjects < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.AddUuidColumnsToProjects')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1222_populate_uuid_columns_of_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1222_populate_uuid_columns_of_projects.rb
deleted file mode 100644 (file)
index b670911..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class PopulateUuidColumnsOfProjects < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.PopulateUuidColumnsOfProjects')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1223_clean_orphan_rows_in_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1223_clean_orphan_rows_in_projects.rb
deleted file mode 100644 (file)
index 0f06310..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class CleanOrphanRowsInProjects < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.CleanOrphanRowsInProjects')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1223_populate_uuid_columns_of_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1223_populate_uuid_columns_of_projects.rb
new file mode 100644 (file)
index 0000000..b670911
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class PopulateUuidColumnsOfProjects < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.PopulateUuidColumnsOfProjects')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1224_clean_orphan_rows_in_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1224_clean_orphan_rows_in_projects.rb
new file mode 100644 (file)
index 0000000..0f06310
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class CleanOrphanRowsInProjects < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.CleanOrphanRowsInProjects')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1224_drop_index_projects_uuid_from_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1224_drop_index_projects_uuid_from_projects.rb
deleted file mode 100644 (file)
index 6305a0d..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#
-# 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 6.0
-#
-class DropIndexProjectsUuidFromProjects < ActiveRecord::Migration
-
-  def self.up
-    begin
-      remove_index :projects, :name => 'projects_uuid'
-    rescue
-      #ignore
-    end
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1225_drop_index_projects_uuid_from_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1225_drop_index_projects_uuid_from_projects.rb
new file mode 100644 (file)
index 0000000..6305a0d
--- /dev/null
@@ -0,0 +1,34 @@
+
+#
+# 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 6.0
+#
+class DropIndexProjectsUuidFromProjects < ActiveRecord::Migration
+
+  def self.up
+    begin
+      remove_index :projects, :name => 'projects_uuid'
+    rescue
+      #ignore
+    end
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1225_make_uuid_columns_not_null_on_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1225_make_uuid_columns_not_null_on_projects.rb
deleted file mode 100644 (file)
index 2db8db3..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# 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 6.0
-#
-class MakeUuidColumnsNotNullOnProjects < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.MakeUuidColumnsNotNullOnProjects')
-
-    add_index :projects, :root_uuid, :name => 'projects_root_uuid'
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1226_make_uuid_columns_not_null_on_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1226_make_uuid_columns_not_null_on_projects.rb
new file mode 100644 (file)
index 0000000..2db8db3
--- /dev/null
@@ -0,0 +1,31 @@
+#
+# 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 6.0
+#
+class MakeUuidColumnsNotNullOnProjects < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.MakeUuidColumnsNotNullOnProjects')
+
+    add_index :projects, :root_uuid, :name => 'projects_root_uuid'
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1226_recreate_index_projects_uuid_from_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1226_recreate_index_projects_uuid_from_projects.rb
deleted file mode 100644 (file)
index f9f6fba..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#
-# 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 6.0
-#
-class RecreateIndexProjectsUuidFromProjects < ActiveRecord::Migration
-
-  def self.up
-    add_index :projects, :uuid, :name => 'projects_uuid'
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1227_drop_index_projects_root_id_from_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1227_drop_index_projects_root_id_from_projects.rb
deleted file mode 100644 (file)
index 038b01d..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# 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 6.0
-#
-class DropIndexProjectsRootIdFromProjects < ActiveRecord::Migration
-
-  def self.up
-    begin
-      remove_index :projects, :name => 'projects_root_id'
-    rescue
-      #ignore
-    end
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1227_recreate_index_projects_uuid_from_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1227_recreate_index_projects_uuid_from_projects.rb
new file mode 100644 (file)
index 0000000..f9f6fba
--- /dev/null
@@ -0,0 +1,30 @@
+
+#
+# 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 6.0
+#
+class RecreateIndexProjectsUuidFromProjects < ActiveRecord::Migration
+
+  def self.up
+    add_index :projects, :uuid, :name => 'projects_uuid'
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1228_drop_id_columns_from_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1228_drop_id_columns_from_projects.rb
deleted file mode 100644 (file)
index 6266cda..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class DropIdColumnsFromProjects < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.DropIdColumnsFromProjects')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1228_drop_index_projects_root_id_from_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1228_drop_index_projects_root_id_from_projects.rb
new file mode 100644 (file)
index 0000000..038b01d
--- /dev/null
@@ -0,0 +1,33 @@
+#
+# 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 6.0
+#
+class DropIndexProjectsRootIdFromProjects < ActiveRecord::Migration
+
+  def self.up
+    begin
+      remove_index :projects, :name => 'projects_root_id'
+    rescue
+      #ignore
+    end
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1229_add_uuid_column_to_snapshots.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1229_add_uuid_column_to_snapshots.rb
deleted file mode 100644 (file)
index 10d61c8..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class AddUuidColumnToSnapshots < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.AddUuidColumnToSnapshots')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1229_drop_id_columns_from_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1229_drop_id_columns_from_projects.rb
new file mode 100644 (file)
index 0000000..6266cda
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class DropIdColumnsFromProjects < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.DropIdColumnsFromProjects')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1230_add_uuid_column_to_snapshots.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1230_add_uuid_column_to_snapshots.rb
new file mode 100644 (file)
index 0000000..10d61c8
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class AddUuidColumnToSnapshots < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.AddUuidColumnToSnapshots')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1230_populate_uuid_column_on_snapshots.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1230_populate_uuid_column_on_snapshots.rb
deleted file mode 100644 (file)
index fe409fe..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class PopulateUuidColumnOnSnapshots < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.PopulateUuidColumnOnSnapshots')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1231_make_uuid_column_not_null_on_snapshots.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1231_make_uuid_column_not_null_on_snapshots.rb
deleted file mode 100644 (file)
index d7baeef..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class MakeUuidColumnNotNullOnSnapshots < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.MakeUuidColumnNotNullOnSnapshots')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1231_populate_uuid_column_on_snapshots.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1231_populate_uuid_column_on_snapshots.rb
new file mode 100644 (file)
index 0000000..fe409fe
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class PopulateUuidColumnOnSnapshots < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.PopulateUuidColumnOnSnapshots')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1232_add_unique_index_on_uuid_of_snapshots.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1232_add_unique_index_on_uuid_of_snapshots.rb
deleted file mode 100644 (file)
index 5a66c1d..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class AddUniqueIndexOnUuidOfSnapshots < ActiveRecord::Migration
-
-  def self.up
-    add_index :snapshots, :uuid, :name => 'analyses_uuid', :unique => true
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1232_make_uuid_column_not_null_on_snapshots.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1232_make_uuid_column_not_null_on_snapshots.rb
new file mode 100644 (file)
index 0000000..d7baeef
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class MakeUuidColumnNotNullOnSnapshots < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.MakeUuidColumnNotNullOnSnapshots')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1233_add_analysis_uuid_column_to_ce_activity.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1233_add_analysis_uuid_column_to_ce_activity.rb
deleted file mode 100644 (file)
index 8f25ffe..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class AddAnalysisUuidColumnToCeActivity < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.AddAnalysisUuidColumnToCeActivity')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1233_add_unique_index_on_uuid_of_snapshots.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1233_add_unique_index_on_uuid_of_snapshots.rb
new file mode 100644 (file)
index 0000000..5a66c1d
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class AddUniqueIndexOnUuidOfSnapshots < ActiveRecord::Migration
+
+  def self.up
+    add_index :snapshots, :uuid, :name => 'analyses_uuid', :unique => true
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1234_add_analysis_uuid_column_to_ce_activity.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1234_add_analysis_uuid_column_to_ce_activity.rb
new file mode 100644 (file)
index 0000000..8f25ffe
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class AddAnalysisUuidColumnToCeActivity < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.AddAnalysisUuidColumnToCeActivity')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1234_populate_analysis_uuid_column_on_ce_activity.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1234_populate_analysis_uuid_column_on_ce_activity.rb
deleted file mode 100644 (file)
index d2642bd..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class PopulateAnalysisUuidColumnOnCeActivity < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.PopulateAnalysisUuidColumnOnCeActivity')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1235_drop_snapshot_id_column_from_ce_activity.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1235_drop_snapshot_id_column_from_ce_activity.rb
deleted file mode 100644 (file)
index ff454ce..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class DropSnapshotIdColumnFromCeActivity < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.DropSnapshotIdColumnFromCeActivity')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1235_populate_analysis_uuid_column_on_ce_activity.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1235_populate_analysis_uuid_column_on_ce_activity.rb
new file mode 100644 (file)
index 0000000..d2642bd
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class PopulateAnalysisUuidColumnOnCeActivity < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.PopulateAnalysisUuidColumnOnCeActivity')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1236_add_component_uuid_and_analysis_uuid_to_duplications_index.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1236_add_component_uuid_and_analysis_uuid_to_duplications_index.rb
deleted file mode 100644 (file)
index 6cd915e..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class AddComponentUuidAndAnalysisUuidToDuplicationsIndex < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.AddComponentUuidAndAnalysisUuidColumnToDuplicationsIndex')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1236_drop_snapshot_id_column_from_ce_activity.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1236_drop_snapshot_id_column_from_ce_activity.rb
new file mode 100644 (file)
index 0000000..ff454ce
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class DropSnapshotIdColumnFromCeActivity < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.DropSnapshotIdColumnFromCeActivity')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1237_add_component_uuid_and_analysis_uuid_to_duplications_index.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1237_add_component_uuid_and_analysis_uuid_to_duplications_index.rb
new file mode 100644 (file)
index 0000000..6cd915e
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class AddComponentUuidAndAnalysisUuidToDuplicationsIndex < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.AddComponentUuidAndAnalysisUuidColumnToDuplicationsIndex')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1237_populate_component_uuid_and_analysis_uuid_of_duplications_index.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1237_populate_component_uuid_and_analysis_uuid_of_duplications_index.rb
deleted file mode 100644 (file)
index 4e30c48..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class PopulateComponentUuidAndAnalysisUuidOfDuplicationsIndex < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.PopulateComponentUuidAndAnalysisUuidOfDuplicationsIndex')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1238_delete_orphan_duplications_index_rows_without_component_or_analysis.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1238_delete_orphan_duplications_index_rows_without_component_or_analysis.rb
deleted file mode 100644 (file)
index a869ada..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class DeleteOrphanDuplicationsIndexRowsWithoutComponentOrAnalysis < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.DeleteOrphanDuplicationsIndexRowsWithoutComponentOrAnalysis')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1238_populate_component_uuid_and_analysis_uuid_of_duplications_index.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1238_populate_component_uuid_and_analysis_uuid_of_duplications_index.rb
new file mode 100644 (file)
index 0000000..4e30c48
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class PopulateComponentUuidAndAnalysisUuidOfDuplicationsIndex < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.PopulateComponentUuidAndAnalysisUuidOfDuplicationsIndex')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1239_delete_orphan_duplications_index_rows_without_component_or_analysis.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1239_delete_orphan_duplications_index_rows_without_component_or_analysis.rb
new file mode 100644 (file)
index 0000000..a869ada
--- /dev/null
@@ -0,0 +1,29 @@
+#
+# 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 6.0
+#
+class DeleteOrphanDuplicationsIndexRowsWithoutComponentOrAnalysis < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.DeleteOrphanDuplicationsIndexRowsWithoutComponentOrAnalysis')
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1239_make_component_uuid_and_analysis_uuid_not_null_on_duplications_index.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1239_make_component_uuid_and_analysis_uuid_not_null_on_duplications_index.rb
deleted file mode 100644 (file)
index ff6268c..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# 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 6.0
-#
-class MakeComponentUuidAndAnalysisUuidNotNullOnDuplicationsIndex < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.MakeComponentUuidAndAnalysisUuidNotNullOnDuplicationsIndex')
-
-    add_index :duplications_index, [:analysis_uuid, :component_uuid], :name => 'duplication_analysis_component'
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1240_make_component_uuid_and_analysis_uuid_not_null_on_duplications_index.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1240_make_component_uuid_and_analysis_uuid_not_null_on_duplications_index.rb
new file mode 100644 (file)
index 0000000..ff6268c
--- /dev/null
@@ -0,0 +1,31 @@
+#
+# 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 6.0
+#
+class MakeComponentUuidAndAnalysisUuidNotNullOnDuplicationsIndex < ActiveRecord::Migration
+
+  def self.up
+    execute_java_migration('org.sonar.db.version.v60.MakeComponentUuidAndAnalysisUuidNotNullOnDuplicationsIndex')
+
+    add_index :duplications_index, [:analysis_uuid, :component_uuid], :name => 'duplication_analysis_component'
+  end
+end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1255_fix_project_uuid_of_developer_projects.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1255_fix_project_uuid_of_developer_projects.rb
deleted file mode 100644 (file)
index 38cf8c1..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class FixProjectUuidOfDeveloperProjects < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.FixProjectUuidOfDeveloperProjects')
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1269_clean_usurper_root_components.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/1269_clean_usurper_root_components.rb
deleted file mode 100644 (file)
index f77ee05..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# 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 6.0
-#
-class CleanUsurperRootComponents < ActiveRecord::Migration
-
-  def self.up
-    execute_java_migration('org.sonar.db.version.v60.CleanUsurperRootComponents')
-  end
-end
index 742168e9945418685808cd52668b8725892ce535..b300d047f21272ebddda7abcd5970759be5ba9c3 100644 (file)
@@ -73,7 +73,7 @@ public class CleanUsurperRootComponents extends BaseDataChange {
       " p.scope = 'PRJ'" +
       " and p.qualifier in ('TRK', 'VW', 'DEV')" +
       " )");
-    massUpdate.update("delete from duplications_index where component_uuid=?");
+    massUpdate.update("delete from duplications_index where snapshot_id in (select id from snapshots where component_uuid=?)");
     massUpdate.update("delete from project_measures where component_uuid=?");
     massUpdate.update("delete from ce_activity where component_uuid=?");
     massUpdate.update("delete from events where component_uuid=?");
@@ -122,7 +122,7 @@ public class CleanUsurperRootComponents extends BaseDataChange {
   private void cleanSnapshotWithIncorrectRoot(Context context) throws SQLException {
     MassUpdate massUpdate = context.prepareMassUpdate();
     massUpdate.select("select" +
-      " sn.uuid,sn.id" +
+      " sn.id" +
       " from " +
       " projects p, snapshots sn" +
       " where" +
@@ -131,22 +131,19 @@ public class CleanUsurperRootComponents extends BaseDataChange {
       " p.scope = 'PRJ'" +
       " and p.qualifier in ('TRK', 'VW', 'DEV')" +
       " )");
-    massUpdate.update("DELETE from duplications_index WHERE analysis_uuid=?");
-    massUpdate.update("DELETE from project_measures WHERE analysis_uuid=?");
-    massUpdate.update("DELETE from ce_activity WHERE analysis_uuid=?");
-    massUpdate.update("DELETE from events WHERE analysis_uuid=?");
+    massUpdate.update("DELETE from ce_activity WHERE snapshot_id=?");
+    massUpdate.update("DELETE from events WHERE snapshot_id=?");
+    massUpdate.update("DELETE from project_measures WHERE snapshot_id=?");
+    massUpdate.update("DELETE from duplications_index WHERE project_snapshot_id=?");
     massUpdate.update("DELETE from snapshots WHERE id=?");
     massUpdate.rowPluralName("snapshots with incorrect root");
     massUpdate.execute((row, update, updateIndex) -> {
-      String analysisUuid = row.getString(1);
-      long snapshotId = row.getLong(2);
+      long snapshotId = row.getLong(1);
       switch (updateIndex) {
         case 0:
         case 1:
         case 2:
         case 3:
-          update.setString(1, analysisUuid);
-          return true;
         case 4:
           update.setLong(1, snapshotId);
           return true;
index 2952a9fa5ff486baac9cd99b4bcc02c1b0fc62d3..334e66d796ef5adda6319e42db7a3a6d61b95e16 100644 (file)
@@ -35,15 +35,18 @@ public class FixProjectUuidOfDeveloperProjects extends BaseDataChange {
   @Override
   public void execute(Context context) throws SQLException {
     MassUpdate massUpdate = context.prepareMassUpdate();
-    massUpdate.select("select distinct developer_uuid from projects where qualifier = 'DEV_PRJ' and project_uuid != developer_uuid");
-    massUpdate.update("update projects set project_uuid = developer_uuid where developer_uuid = ? and qualifier = 'DEV_PRJ' and project_uuid != developer_uuid");
-    massUpdate.rowPluralName("developers in project");
+    massUpdate.select("select distinct p.person_id,d.uuid from projects p, projects d where p.qualifier = 'DEV_PRJ' and p.project_uuid != d.uuid and d.id = p.person_id");
+    massUpdate.update("update projects set project_uuid = ? where person_id = ? and qualifier = 'DEV_PRJ' and project_uuid != ?");
+    massUpdate.rowPluralName("developers with incorrect project_uuid");
     massUpdate.execute(FixProjectUuidOfDeveloperProjects::handleComponent);
   }
 
   private static boolean handleComponent(Select.Row row, SqlStatement update) throws SQLException {
-    String developerUuid = row.getString(1);
+    long personId = row.getLong(1);
+    String developerUuid = row.getString(2);
     update.setString(1, developerUuid);
+    update.setLong(2, personId);
+    update.setString(3, developerUuid);
 
     return true;
   }
index 6e54187085f07bd4e701273c2bad38beaaaa5622..4a22d6a2f8a83e4a1c35088b0f48258c508af158 100644 (file)
@@ -62,7 +62,7 @@ public class CleanUsurperRootComponentsTest {
       insertComponent("sc3", "qu3"),
       insertComponent("sc4", "qu4")
     };
-    String[] snapshotUuids = {
+    Long[] snapshotIds = {
       insertSnapshot(componentUuids[0], "sc1", "qu1"),
       insertSnapshot(componentUuids[1], "sc2", "quW"),
       insertSnapshot(componentUuids[2], "scX", "qu3"),
@@ -71,10 +71,10 @@ public class CleanUsurperRootComponentsTest {
 
     underTest.execute();
 
-    assertSnapshot(snapshotUuids[0], "sc1", "qu1");
-    assertSnapshot(snapshotUuids[1], "sc2", "qu2");
-    assertSnapshot(snapshotUuids[2], "sc3", "qu3");
-    assertSnapshot(snapshotUuids[3], "sc4", "qu4");
+    assertSnapshot(snapshotIds[0], "sc1", "qu1");
+    assertSnapshot(snapshotIds[1], "sc2", "qu2");
+    assertSnapshot(snapshotIds[2], "sc3", "qu3");
+    assertSnapshot(snapshotIds[3], "sc4", "qu4");
   }
 
   @Test
@@ -101,13 +101,13 @@ public class CleanUsurperRootComponentsTest {
     long usurperId = 12L;
     String usurperUuid = "usurper_uuid";
     insertComponent(Scopes.PROJECT, Qualifiers.MODULE, usurperId, usurperUuid, usurperUuid);
-    insertDuplicationsIndex(usurperUuid);
-    insertProjectMeasures(usurperUuid, dontCare());
-    insertCeActivity(usurperUuid, dontCare());
-    insertEvent(usurperUuid, dontCare());
+    Long snapshotId = insertSnapshot(usurperUuid, usurperUuid);
+    insertDuplicationsIndex(snapshotId);
+    insertProjectMeasures(usurperUuid, dontCareLong());
+    insertCeActivity(usurperUuid, dontCareLong());
+    insertEvent(usurperUuid, dontCareLong());
     insertSnapshot(usurperUuid, dontCare());
     insertSnapshot(dontCare(), usurperUuid);
-    insertSnapshot(usurperUuid, usurperUuid);
     insertProjectLinks(usurperUuid);
     insertIssue(usurperUuid, null);
     insertIssue(null, usurperUuid);
@@ -142,7 +142,7 @@ public class CleanUsurperRootComponentsTest {
       insertComponent(Scopes.PROJECT, "DEV"),
       insertComponent(Scopes.PROJECT, "DEV_PRJ"),
     };
-    String[] snapshotUuids = {
+    Long[] snapshotIds = {
       insertSnapshot(dontCare(), componentUuids[0]),
       insertSnapshot(dontCare(), componentUuids[1]),
       insertSnapshot(dontCare(), componentUuids[2]),
@@ -156,16 +156,16 @@ public class CleanUsurperRootComponentsTest {
 
     underTest.execute();
 
-    assertUuidsInTableProjects("snapshots", snapshotUuids[0], snapshotUuids[4], snapshotUuids[7]);
+    assertIdsInTableProjects("snapshots", snapshotIds[0], snapshotIds[4], snapshotIds[7]);
   }
 
   @Test
   public void execute_deletes_children_tables_of_snapshots_when_root_of_snapshot_is_not_root() throws SQLException {
     String componentUuid = insertComponent(Scopes.FILE, Scopes.FILE);
-    String snapshotUuid = insertSnapshot(dontCare(), componentUuid);
-    insertProjectMeasures(dontCare(), snapshotUuid);
-    insertCeActivity(componentUuid, snapshotUuid);
-    insertEvent(componentUuid, snapshotUuid);
+    Long snapshotId = insertSnapshot(dontCare(), componentUuid);
+    insertProjectMeasures(dontCare(), snapshotId);
+    insertCeActivity(componentUuid, snapshotId);
+    insertEvent(componentUuid, snapshotId);
 
     underTest.execute();
 
@@ -174,11 +174,11 @@ public class CleanUsurperRootComponentsTest {
       .forEach(s -> assertThat(db.countRowsOfTable(s)).describedAs("table " + s).isEqualTo(0));
   }
 
-  private void insertDuplicationsIndex(String componentUuid) {
+  private void insertDuplicationsIndex(Long snapshotId) {
     db.executeInsert(
       "duplications_index",
-      "COMPONENT_UUID", componentUuid,
-      "ANALYSIS_UUID", dontCare(),
+      "PROJECT_SNAPSHOT_ID", valueOf(dontCareLong()),
+      "SNAPSHOT_ID", valueOf(snapshotId),
       "HASH", dontCare(),
       "INDEX_IN_FILE", valueOf(0),
       "START_LINE", valueOf(0),
@@ -186,22 +186,22 @@ public class CleanUsurperRootComponentsTest {
     db.commit();
   }
 
-  private void insertProjectMeasures(String componentUuid, String analysisUuid) {
+  private void insertProjectMeasures(String componentUuid, Long snapshotId) {
     db.executeInsert(
       "project_measures",
       "METRIC_ID", valueOf(123L),
       "COMPONENT_UUID", componentUuid,
-      "ANALYSIS_UUID", analysisUuid);
+      "SNAPSHOT_ID", valueOf(snapshotId));
     db.commit();
   }
 
-  private void insertCeActivity(String componentUuid, String analysisUuid) {
+  private void insertCeActivity(String componentUuid, Long snapshotId) {
     db.executeInsert(
       "ce_activity",
       "UUID", dontCare(),
       "TASK_TYPE", dontCare(),
       "COMPONENT_UUID", componentUuid,
-      "ANALYSIS_UUID", analysisUuid,
+      "SNAPSHOT_ID", valueOf(snapshotId),
       "STATUS", dontCare(),
       "IS_LAST", "true",
       "IS_LAST_KEY", dontCare(),
@@ -211,25 +211,25 @@ public class CleanUsurperRootComponentsTest {
     db.commit();
   }
 
-  private void insertEvent(String componentUuid, String analysisUuid) {
+  private void insertEvent(String componentUuid, Long snapshotId) {
     db.executeInsert(
       "events",
-      "ANALYSIS_UUID", analysisUuid,
+      "SNAPSHOT_ID", valueOf(snapshotId),
       "COMPONENT_UUID", componentUuid,
       "CREATED_AT", valueOf(122L),
       "EVENT_DATE", valueOf(123L));
     db.commit();
   }
 
-  private String insertSnapshot(String componentUuid, String rootComponentUuid) {
-    String uuid = "uuid_" + idGenerator++;
+  private Long insertSnapshot(String componentUuid, String rootComponentUuid) {
+    Long id = idGenerator++;
     db.executeInsert(
       "snapshots",
-      "UUID", uuid,
+      "ID", valueOf(id),
       "COMPONENT_UUID", componentUuid,
       "ROOT_COMPONENT_UUID", rootComponentUuid);
     db.commit();
-    return uuid;
+    return id;
   }
 
   private void insertProjectLinks(String componentUuid) {
@@ -311,39 +311,42 @@ public class CleanUsurperRootComponentsTest {
       "projects",
       "ID", valueOf(id),
       "UUID", uuid,
-      "ROOT_UUID", dontCare(),
       "PROJECT_UUID", projectUuid,
-      "UUID_PATH", dontCare(),
       "SCOPE", scope,
       "QUALIFIER", qualifier);
     db.commit();
     return uuid;
   }
 
-  private String insertSnapshot(String componentUuid, String scope, String qualifier) {
+  private Long insertSnapshot(String componentUuid, String scope, String qualifier) {
     long id = idGenerator++;
-    String uuid = "uuid_" + id;
 
     db.executeInsert(
       "snapshots",
-      "ID", valueOf(id),
-      "UUID", uuid,
+      "id", valueOf(id),
       "component_uuid", componentUuid,
       "root_component_uuid", dontCare(),
       "scope", scope,
       "qualifier", qualifier);
     db.commit();
-    return uuid;
+    return id;
   }
 
-  private void assertSnapshot(String snapshotUuid, String scope, String qualifier) {
-    List<Map<String, Object>> rows = db.select("select SCOPE, QUALIFIER from snapshots where UUID='" + snapshotUuid + "'");
+  private void assertSnapshot(Long snapshotId, String scope, String qualifier) {
+    List<Map<String, Object>> rows = db.select("select SCOPE, QUALIFIER from snapshots where ID=" + snapshotId);
     assertThat(rows).hasSize(1);
     Map<String, Object> row = rows.get(0);
     assertThat(row.get("SCOPE")).isEqualTo(scope);
     assertThat(row.get("QUALIFIER")).isEqualTo(qualifier);
   }
 
+  private void assertIdsInTableProjects(String tableName, Long... expected) {
+    assertThat(db.select("select id from " + tableName)
+      .stream()
+      .map(stringObjectMap -> (Long) stringObjectMap.entrySet().iterator().next().getValue()))
+        .containsOnly(expected);
+  }
+
   private void assertUuidsInTableProjects(String tableName, String... expected) {
     assertThat(db.select("select uuid from " + tableName)
       .stream()
@@ -356,4 +359,8 @@ public class CleanUsurperRootComponentsTest {
   private String dontCare() {
     return "DC_" + dontCareGenerator++;
   }
+
+  private Long dontCareLong() {
+    return dontCareGenerator++;
+  }
 }
index ea09dcc0838055e13bda1007b173fe975bdeedc9..bdb58a3ba3f0b81adc272121e53a075d6fafce5e 100644 (file)
@@ -27,6 +27,7 @@ import org.junit.Test;
 import org.sonar.api.utils.System2;
 import org.sonar.db.DbTester;
 
+import static java.lang.String.valueOf;
 import static org.assertj.core.api.Assertions.assertThat;
 
 public class FixProjectUuidOfDeveloperProjectsTest {
@@ -40,7 +41,7 @@ public class FixProjectUuidOfDeveloperProjectsTest {
 
   @Rule
   public DbTester db = DbTester.createForSchema(System2.INSTANCE, FixProjectUuidOfDeveloperProjectsTest.class,
-    "in_progress_projects.sql");
+    "projects_5.6.sql");
 
   private FixProjectUuidOfDeveloperProjects underTest = new FixProjectUuidOfDeveloperProjects(db.database());
 
@@ -84,9 +85,9 @@ public class FixProjectUuidOfDeveloperProjectsTest {
     insert(PROJECT_UUID, "TRK", null, PROJECT_UUID);
     insert(FILE_UUID, "FIL", null, PROJECT_UUID);
     // developer
-    insert(DEVELOPER_UUID, "DEV", DEVELOPER_UUID, DEVELOPER_UUID);
-    insert(DEV1_IN_PROJECT_UUID, "DEV_PRJ", DEVELOPER_UUID, /* not correct */PROJECT_UUID);
-    insert(DEV2_IN_PROJECT_UUID, "DEV_PRJ", DEVELOPER_UUID, /* not correct */PROJECT_UUID);
+    Long personId = insert(DEVELOPER_UUID, "DEV", null, DEVELOPER_UUID);
+    insert(DEV1_IN_PROJECT_UUID, "DEV_PRJ", personId, /* not correct */PROJECT_UUID);
+    insert(DEV2_IN_PROJECT_UUID, "DEV_PRJ", personId, /* not correct */PROJECT_UUID);
     db.commit();
   }
 
@@ -95,14 +96,17 @@ public class FixProjectUuidOfDeveloperProjectsTest {
     assertThat(rows.get("projectUuid")).isEqualTo(expectedProjectUuid);
   }
 
-  private String insert(String uuid, String qualifier, @Nullable String developerUuid, String projectUuid) {
+  private Long insert(String uuid, String qualifier, @Nullable Long personId, String projectUuid) {
     db.executeInsert(
       TABLE_PROJECTS,
       "UUID", uuid,
-      "DEVELOPER_UUID", developerUuid,
+      "PERSON_ID", personId == null ? null : valueOf(personId),
       "PROJECT_UUID", projectUuid,
-      "ROOT_UUID", "NOT_USED",
       "QUALIFIER", qualifier);
-    return uuid;
+    db.commit();
+    return db.select("select ID from projects where UUID='" + uuid + "'").stream()
+      .findFirst()
+      .map(f -> (Long) f.get("ID"))
+      .orElseThrow(() -> new IllegalStateException("NO ID??"));
   }
 }
index 3706047e5ab38e2640e5f42297a5a508d656873e..299da2925386de051523c29b6d16a4b0ecf4019a 100644 (file)
@@ -21,9 +21,7 @@ CREATE TABLE "RULES_PROFILES" (
   "RULES_UPDATED_AT" VARCHAR(100),
   "IS_DEFAULT" BOOLEAN NOT NULL DEFAULT FALSE,
   "CREATED_AT" TIMESTAMP,
-  "UPDATED_AT" TIMESTAMP,
-  "LAST_USED" BIGINT,
-  "USER_UPDATED_AT" BIGINT
+  "UPDATED_AT" TIMESTAMP
 );
 
 CREATE TABLE "PROJECT_QPROFILES" (
@@ -56,7 +54,6 @@ CREATE TABLE "GROUPS" (
 
 CREATE TABLE "SNAPSHOTS" (
   "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
-  "UUID" VARCHAR(50) NOT NULL,
   "CREATED_AT" BIGINT,
   "BUILD_DATE" BIGINT,
   "COMPONENT_UUID" VARCHAR(50) NOT NULL,
@@ -141,8 +138,8 @@ CREATE TABLE "WIDGET_PROPERTIES" (
 CREATE TABLE "EVENTS" (
   "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
   "NAME" VARCHAR(400),
-  "ANALYSIS_UUID" VARCHAR(50) NOT NULL,
   "COMPONENT_UUID" VARCHAR(50),
+  "SNAPSHOT_ID" INTEGER,
   "CATEGORY" VARCHAR(50),
   "EVENT_DATE" BIGINT NOT NULL,
   "CREATED_AT" BIGINT NOT NULL,
@@ -187,8 +184,8 @@ CREATE TABLE "PROJECT_LINKS" (
 
 CREATE TABLE "DUPLICATIONS_INDEX" (
   "ID" BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
-  "ANALYSIS_UUID" VARCHAR(50) NOT NULL,
-  "COMPONENT_UUID" VARCHAR(50) NOT NULL,
+  "PROJECT_SNAPSHOT_ID" INTEGER NOT NULL,
+  "SNAPSHOT_ID" INTEGER NOT NULL,
   "HASH" VARCHAR(50) NOT NULL,
   "INDEX_IN_FILE" INTEGER NOT NULL,
   "START_LINE" INTEGER NOT NULL,
@@ -200,7 +197,6 @@ CREATE TABLE "PROJECT_MEASURES" (
   "VALUE" DOUBLE,
   "METRIC_ID" INTEGER NOT NULL,
   "COMPONENT_UUID" VARCHAR(50) NOT NULL,
-  "ANALYSIS_UUID" VARCHAR(50) NOT NULL,
   "SNAPSHOT_ID" INTEGER,
   "TEXT_VALUE" VARCHAR(4000),
   "ALERT_STATUS" VARCHAR(5),
@@ -218,9 +214,8 @@ CREATE TABLE "PROJECT_MEASURES" (
 CREATE TABLE "PROJECTS" (
   "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
   "KEE" VARCHAR(400),
-  "UUID" VARCHAR(50) NOT NULL,
-  "UUID_PATH" VARCHAR(4000) NOT NULL,
-  "ROOT_UUID" VARCHAR(50) NOT NULL,
+  "ROOT_ID" INTEGER,
+  "UUID" VARCHAR(50),
   "PROJECT_UUID" VARCHAR(50),
   "MODULE_UUID" VARCHAR(50),
   "MODULE_UUID_PATH" VARCHAR(4000),
@@ -232,9 +227,9 @@ CREATE TABLE "PROJECTS" (
   "DEPRECATED_KEE" VARCHAR(400),
   "PATH" VARCHAR(2000),
   "LANGUAGE" VARCHAR(20),
-  "COPY_COMPONENT_UUID" VARCHAR(50),
+  "COPY_RESOURCE_ID" INTEGER,
   "LONG_NAME" VARCHAR(2000),
-  "DEVELOPER_UUID" VARCHAR(50),
+  "PERSON_ID" INTEGER,
   "CREATED_AT" TIMESTAMP,
   "AUTHORIZATION_UPDATED_AT" BIGINT
 );
@@ -478,7 +473,6 @@ CREATE TABLE "PERM_TEMPLATES_GROUPS" (
 CREATE TABLE "ACTIVITIES" (
   "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
   "LOG_KEY" VARCHAR(250),
-  "PROFILE_KEY" VARCHAR(255) NOT NULL,
   "CREATED_AT" TIMESTAMP,
   "USER_LOGIN" VARCHAR(255),
   "LOG_TYPE" VARCHAR(250),
@@ -518,7 +512,7 @@ CREATE TABLE "CE_ACTIVITY" (
   "UUID" VARCHAR(40) NOT NULL,
   "TASK_TYPE" VARCHAR(15) NOT NULL,
   "COMPONENT_UUID" VARCHAR(40) NULL,
-  "ANALYSIS_UUID" VARCHAR(50) NULL,
+  "SNAPSHOT_ID" INTEGER NULL,
   "STATUS" VARCHAR(15) NOT NULL,
   "IS_LAST" BOOLEAN NOT NULL,
   "IS_LAST_KEY" VARCHAR(55) NOT NULL,
@@ -553,7 +547,7 @@ CREATE INDEX "USER_ROLES_USER" ON "USER_ROLES" ("USER_ID");
 
 CREATE INDEX "DUPLICATIONS_INDEX_HASH" ON "DUPLICATIONS_INDEX" ("HASH");
 
-CREATE INDEX "DUPLICATION_ANALYSIS_COMPONENT" ON "DUPLICATIONS_INDEX" ("ANALYSIS_UUID", "COMPONENT_UUID");
+CREATE INDEX "DUPLICATIONS_INDEX_SID" ON "DUPLICATIONS_INDEX" ("SNAPSHOT_ID");
 
 CREATE INDEX "INDEX_GROUPS_USERS_ON_GROUP_ID" ON "GROUPS_USERS" ("GROUP_ID");
 
@@ -565,11 +559,9 @@ CREATE INDEX "MEASURES_SID_METRIC" ON "PROJECT_MEASURES" ("SNAPSHOT_ID", "METRIC
 
 CREATE INDEX "MEASURES_PERSON" ON "PROJECT_MEASURES" ("PERSON_ID");
 
-CREATE INDEX "MEASURES_COMPONENT_UUID" ON "PROJECT_MEASURES" ("COMPONENT_UUID");
-
 CREATE UNIQUE INDEX "METRICS_UNIQUE_NAME" ON "METRICS" ("NAME");
 
-CREATE INDEX "EVENTS_ANALYSIS" ON "EVENTS" ("ANALYSIS_UUID");
+CREATE INDEX "EVENTS_SNAPSHOT_ID" ON "EVENTS" ("SNAPSHOT_ID");
 
 CREATE INDEX "EVENTS_COMPONENT_UUID" ON "EVENTS" ("COMPONENT_UUID");
 
@@ -585,10 +577,6 @@ CREATE INDEX "SNAPSHOTS_PARENT" ON "SNAPSHOTS" ("PARENT_SNAPSHOT_ID");
 
 CREATE INDEX "SNAPSHOT_COMPONENT" ON "SNAPSHOTS" ("COMPONENT_UUID");
 
-CREATE UNIQUE INDEX "ANALYSES_UUID" ON "SNAPSHOTS" ("UUID");
-
-CREATE INDEX "SNAPSHOTS_ROOT_COMPONENT" ON "SNAPSHOTS" ("ROOT_COMPONENT_UUID");
-
 CREATE INDEX "RULES_PARAMETERS_RULE_ID" ON "RULES_PARAMETERS" ("RULE_ID");
 
 CREATE INDEX "ACTIVE_DASHBOARDS_DASHBOARDID" ON "ACTIVE_DASHBOARDS" ("DASHBOARD_ID");
@@ -605,7 +593,7 @@ CREATE INDEX "MANUAL_MEASURES_COMPONENT_UUID" ON "MANUAL_MEASURES" ("COMPONENT_U
 
 CREATE UNIQUE INDEX "PROJECTS_KEE" ON "PROJECTS" ("KEE");
 
-CREATE INDEX "PROJECTS_ROOT_UUID" ON "PROJECTS" ("ROOT_UUID");
+CREATE INDEX "PROJECTS_ROOT_ID" ON "PROJECTS" ("ROOT_ID");
 
 CREATE UNIQUE INDEX "PROJECTS_UUID" ON "PROJECTS" ("UUID");
 
@@ -653,6 +641,8 @@ CREATE UNIQUE INDEX "USERS_LOGIN" ON "USERS" ("LOGIN");
 
 CREATE INDEX "USERS_UPDATED_AT" ON "USERS" ("UPDATED_AT");
 
+CREATE INDEX "SNAPSHOTS_ROOT_COMPONENT" ON "SNAPSHOTS" ("ROOT_COMPONENT_UUID");
+
 CREATE UNIQUE INDEX "UNIQ_GROUP_ROLES" ON "GROUP_ROLES" ("GROUP_ID", "RESOURCE_ID", "ROLE");
 
 CREATE UNIQUE INDEX "RULES_REPO_KEY" ON "RULES" ("PLUGIN_NAME", "PLUGIN_RULE_KEY");
diff --git a/sonar-db/src/test/resources/org/sonar/db/version/v60/FixProjectUuidOfDeveloperProjectsTest/in_progress_projects.sql b/sonar-db/src/test/resources/org/sonar/db/version/v60/FixProjectUuidOfDeveloperProjectsTest/in_progress_projects.sql
deleted file mode 100644 (file)
index 760728a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-CREATE TABLE "PROJECTS" (
-  "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
-  "KEE" VARCHAR(400),
-  "UUID" VARCHAR(50) NOT NULL,
-  "ROOT_UUID" VARCHAR(50) NOT NULL,
-  "PROJECT_UUID" VARCHAR(50),
-  "MODULE_UUID" VARCHAR(50),
-  "MODULE_UUID_PATH" VARCHAR(4000),
-  "NAME" VARCHAR(2000),
-  "DESCRIPTION" VARCHAR(2000),
-  "ENABLED" BOOLEAN NOT NULL DEFAULT TRUE,
-  "SCOPE" VARCHAR(3),
-  "QUALIFIER" VARCHAR(10),
-  "DEPRECATED_KEE" VARCHAR(400),
-  "PATH" VARCHAR(2000),
-  "LANGUAGE" VARCHAR(20),
-  "COPY_COMPONENT_UUID" VARCHAR(50),
-  "LONG_NAME" VARCHAR(2000),
-  "DEVELOPER_UUID" VARCHAR(50),
-  "CREATED_AT" TIMESTAMP,
-  "AUTHORIZATION_UPDATED_AT" BIGINT
-);
diff --git a/sonar-db/src/test/resources/org/sonar/db/version/v60/FixProjectUuidOfDeveloperProjectsTest/projects_5.6.sql b/sonar-db/src/test/resources/org/sonar/db/version/v60/FixProjectUuidOfDeveloperProjectsTest/projects_5.6.sql
new file mode 100644 (file)
index 0000000..d051017
--- /dev/null
@@ -0,0 +1,23 @@
+CREATE TABLE "PROJECTS" (
+  "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
+  "KEE" VARCHAR(400),
+  "ROOT_ID" INTEGER,
+  "UUID" VARCHAR(50),
+  "PROJECT_UUID" VARCHAR(50),
+  "MODULE_UUID" VARCHAR(50),
+  "MODULE_UUID_PATH" VARCHAR(4000),
+  "NAME" VARCHAR(2000),
+  "DESCRIPTION" VARCHAR(2000),
+  "ENABLED" BOOLEAN NOT NULL DEFAULT TRUE,
+  "SCOPE" VARCHAR(3),
+  "QUALIFIER" VARCHAR(10),
+  "DEPRECATED_KEE" VARCHAR(400),
+  "PATH" VARCHAR(2000),
+  "LANGUAGE" VARCHAR(20),
+  "COPY_RESOURCE_ID" INTEGER,
+  "LONG_NAME" VARCHAR(2000),
+  "PERSON_ID" INTEGER,
+  "CREATED_AT" TIMESTAMP,
+  "AUTHORIZATION_UPDATED_AT" BIGINT
+);
+