]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-18850 remove usage of main branch project UUID from purge
authorLéo Geoffroy <leo.geoffroy@sonarsource.com>
Thu, 30 Mar 2023 15:36:01 +0000 (17:36 +0200)
committersonartech <sonartech@sonarsource.com>
Tue, 4 Apr 2023 20:03:16 +0000 (20:03 +0000)
server/sonar-db-dao/src/it/java/org/sonar/db/purge/PurgeCommandsIT.java
server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java
server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java
server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml

index 8c3a909e2ee4a52bcb913a6a37bc78acd90ff23e..0a147e4c53ac04323e40777f0437a87dd8c12979 100644 (file)
@@ -152,7 +152,7 @@ public class PurgeCommandsIT {
 
   @Test
   @UseDataProvider("projects")
-  public void deleteComponentsByMainBranchProjectUuid_deletes_all_branches_of_a_project(ComponentDto project) {
+  public void deleteNonMainBranchComponentsByProjectUuid_shouldDeletesAllBranchesOfAProjectExceptMainBranch(ComponentDto project) {
     dbTester.components().insertComponent(project);
     ComponentDto branch = dbTester.components().insertProjectBranch(project);
     Stream.of(project, branch).forEach(prj -> {
@@ -163,7 +163,7 @@ public class PurgeCommandsIT {
       dbTester.components().insertComponent(newFileDto(directory2));
     });
 
-    underTest.deleteComponentsByMainBranchProjectUuid(project.uuid());
+    underTest.deleteNonMainBranchComponentsByProjectUuid(project.uuid());
 
     assertThat(countComponentOfRoot(project)).isEqualTo(6);
     assertThat(countComponentOfRoot(branch)).isZero();
index 37f8c42743cac9a36d07a1c87d0ff61d50a8463e..614043369e4c736756f045d70715799ef9ce320e 100644 (file)
@@ -267,9 +267,9 @@ class PurgeCommands {
     profiler.stop();
   }
 
-  void deleteComponentsByMainBranchProjectUuid(String uuid) {
-    profiler.start("deleteComponentsByMainBranchProjectUuid (projects)");
-    purgeMapper.deleteComponentsByMainBranchProjectUuid(uuid);
+  void deleteNonMainBranchComponentsByProjectUuid(String uuid) {
+    profiler.start("deleteNonMainBranchComponentsByProjectUuid (projects)");
+    purgeMapper.deleteNonMainBranchComponentsByProjectUuid(uuid);
     session.commit();
     profiler.stop();
   }
index f4c7fc9a610bee65334e8588d9c286d4984854c6..96bd8b20616f0ec33d16db11c7181603b96179ef 100644 (file)
@@ -240,7 +240,7 @@ public class PurgeDao implements Dao {
     commands.deleteApplicationProjectsByProject(rootUuid);
     commands.deleteProjectInPortfolios(rootUuid);
     commands.deleteComponents(rootUuid);
-    commands.deleteComponentsByMainBranchProjectUuid(rootUuid);
+    commands.deleteNonMainBranchComponentsByProjectUuid(rootUuid);
     commands.deleteProjectBadgeToken(rootUuid);
     commands.deleteProject(rootUuid);
     commands.deleteUserDismissedMessages(rootUuid);
index d0baa30919665481826663a3355aa84403f68700..f76ceaabd2f9d5022098274ab1362ff94bee4380 100644 (file)
@@ -68,7 +68,7 @@ public interface PurgeMapper {
 
   void deleteComponentsByBranchUuid(@Param("rootUuid") String rootUuid);
 
-  void deleteComponentsByMainBranchProjectUuid(@Param("uuid") String uuid);
+  void deleteNonMainBranchComponentsByProjectUuid(@Param("uuid") String uuid);
 
   void deleteProjectsByProjectUuid(@Param("projectUuid") String projectUuid);
 
index 6e93cafe2a498533b984d0bfe0c894fe0e40af1d..f554a8e5e9902d5ca1615c62c265fd20f1f7c3a3 100644 (file)
     where
       branch_uuid = #{rootUuid,jdbcType=VARCHAR}
   </delete>
-
-    <delete id="deleteComponentsByMainBranchProjectUuid" parameterType="map">
+  <delete id="deleteNonMainBranchComponentsByProjectUuid" parameterType="map">
     delete from components
     where
-      main_branch_project_uuid = #{uuid,jdbcType=VARCHAR}
+      branch_uuid IN (SELECT pb.uuid from project_branches pb
+                      where
+                        pb.is_main = ${_false} and pb.project_uuid = #{uuid,jdbcType=VARCHAR})
   </delete>
 
   <delete id="deleteProjectsByProjectUuid" parameterType="map">