]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-14541 Migration 4207 fails if the PK constraint name is unexpected
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Tue, 2 Mar 2021 21:29:55 +0000 (15:29 -0600)
committersonartech <sonartech@sonarsource.com>
Mon, 8 Mar 2021 20:07:54 +0000 (20:07 +0000)
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v87/DropOrgMembersTable.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v87/DropOrgMembersTableTest.java

index 5865f1b81093be2e10ef9dbec134215d658ce352..64e704b60f3d8e28c1783aa9550054e78c4b6191 100644 (file)
 package org.sonar.server.platform.db.migration.version.v87;
 
 import java.sql.SQLException;
+import java.util.Arrays;
 import org.sonar.db.Database;
-import org.sonar.server.platform.db.migration.sql.DropConstraintBuilder;
 import org.sonar.server.platform.db.migration.sql.DropIndexBuilder;
+import org.sonar.server.platform.db.migration.sql.DropPrimaryKeySqlGenerator;
 import org.sonar.server.platform.db.migration.sql.DropTableBuilder;
 import org.sonar.server.platform.db.migration.step.DdlChange;
 
 public class DropOrgMembersTable extends DdlChange {
   private static final String TABLE_NAME = "organization_members";
+  private final DropPrimaryKeySqlGenerator dropPrimaryKeySqlGenerator;
 
-  public DropOrgMembersTable(Database db) {
+  public DropOrgMembersTable(Database db, DropPrimaryKeySqlGenerator dropPrimaryKeySqlGenerator) {
     super(db);
+    this.dropPrimaryKeySqlGenerator = dropPrimaryKeySqlGenerator;
   }
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new DropConstraintBuilder(getDialect()).setTable(TABLE_NAME).setName("pk_organization_members").build());
+    context.execute(dropPrimaryKeySqlGenerator.generate(TABLE_NAME, Arrays.asList("user_uuid", "organization_uuid"), false));
     context.execute(new DropIndexBuilder(getDialect()).setTable(TABLE_NAME).setName("org_members_user_uuid").build());
     context.execute(new DropTableBuilder(getDialect(), TABLE_NAME).build());
   }
index 282d628e489e95927063d55796fc820d840ca0c9..2da0bcf4621c1fc171a77c400207e52ae41166a4 100644 (file)
@@ -23,18 +23,21 @@ import java.sql.SQLException;
 import org.junit.Rule;
 import org.junit.Test;
 import org.sonar.db.CoreDbTester;
+import org.sonar.server.platform.db.migration.sql.DbPrimaryKeyConstraintFinder;
+import org.sonar.server.platform.db.migration.sql.DropPrimaryKeySqlGenerator;
 import org.sonar.server.platform.db.migration.step.MigrationStep;
 
 public class DropOrgMembersTableTest {
   @Rule
-  public CoreDbTester dbTester = CoreDbTester.createForSchema(DropOrgMembersTableTest.class, "schema.sql");
+  public CoreDbTester db = CoreDbTester.createForSchema(DropOrgMembersTableTest.class, "schema.sql");
+  private final DropPrimaryKeySqlGenerator dropPrimaryKeySqlGenerator = new DropPrimaryKeySqlGenerator(db.database(), new DbPrimaryKeyConstraintFinder(db.database()));
 
-  private final MigrationStep underTest = new DropOrgMembersTable(dbTester.database());
+  private final MigrationStep underTest = new DropOrgMembersTable(db.database(), dropPrimaryKeySqlGenerator);
 
   @Test
   public void table_is_dropped() throws SQLException {
-    dbTester.assertTableExists("organization_members");
+    db.assertTableExists("organization_members");
     underTest.execute();
-    dbTester.assertTableDoesNotExist("organization_members");
+    db.assertTableDoesNotExist("organization_members");
   }
 }