aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDuarte Meneses <duarte.meneses@sonarsource.com>2023-01-02 15:41:22 -0600
committersonartech <sonartech@sonarsource.com>2023-01-03 20:03:04 +0000
commit35e6d99c2a9e0426f5800f4087e02ca383224c6b (patch)
tree0a8f3774db7016c33f3e47cab33b48847590ed23
parent6a62f6c3931bb7e99f41b99b4c43f24d882bc0d0 (diff)
downloadsonarqube-35e6d99c2a9e0426f5800f4087e02ca383224c6b.tar.gz
sonarqube-35e6d99c2a9e0426f5800f4087e02ca383224c6b.zip
SONAR-17839 DB migrations dropping columns should always check if there are constraints to be deleted in MS SQL
-rw-r--r--server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropMsSQLDefaultConstraintsBuilder.java3
-rw-r--r--server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/step/DropColumnChange.java7
-rw-r--r--server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/step/DropColumnWithConstraint.java51
-rw-r--r--server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v91/DropUserManagedColumnFromMetricsTable.java4
-rw-r--r--server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v96/DropSonarlintAdSeenColumnInUsersTable.java4
-rw-r--r--server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/DropProjectMeasureVariationColumn.java3
6 files changed, 14 insertions, 58 deletions
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropMsSQLDefaultConstraintsBuilder.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropMsSQLDefaultConstraintsBuilder.java
index 9d6707e279e..95b082ac35e 100644
--- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropMsSQLDefaultConstraintsBuilder.java
+++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropMsSQLDefaultConstraintsBuilder.java
@@ -33,6 +33,9 @@ import org.sonar.db.dialect.MsSql;
import static java.lang.String.format;
+/**
+ * See SONAR-13948. Some columns created in SQ < 5.6 were created with the default command which generated constraints on MS SQL server.
+ */
public class DropMsSQLDefaultConstraintsBuilder {
private final Database db;
private String tableName;
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/step/DropColumnChange.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/step/DropColumnChange.java
index 0c67dafde37..49d542efb22 100644
--- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/step/DropColumnChange.java
+++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/step/DropColumnChange.java
@@ -22,7 +22,9 @@ package org.sonar.server.platform.db.migration.step;
import java.sql.SQLException;
import org.sonar.db.Database;
import org.sonar.db.DatabaseUtils;
+import org.sonar.db.dialect.MsSql;
import org.sonar.server.platform.db.migration.sql.DropColumnsBuilder;
+import org.sonar.server.platform.db.migration.sql.DropMsSQLDefaultConstraintsBuilder;
public abstract class DropColumnChange extends DdlChange {
@@ -36,11 +38,14 @@ public abstract class DropColumnChange extends DdlChange {
}
@Override
- public void execute(DdlChange.Context context) throws SQLException {
+ public void execute(Context context) throws SQLException {
if (!checkIfUseManagedColumnExists()) {
return;
}
+ if (MsSql.ID.equals(getDatabase().getDialect().getId())) {
+ context.execute(new DropMsSQLDefaultConstraintsBuilder(getDatabase()).setTable(tableName).setColumns(columnName).build());
+ }
context.execute(new DropColumnsBuilder(getDatabase().getDialect(), tableName, columnName).build());
}
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/step/DropColumnWithConstraint.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/step/DropColumnWithConstraint.java
deleted file mode 100644
index bfa55a33d2e..00000000000
--- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/step/DropColumnWithConstraint.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2023 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program 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.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.server.platform.db.migration.step;
-
-import java.sql.SQLException;
-import org.sonar.db.Database;
-import org.sonar.db.dialect.MsSql;
-import org.sonar.server.platform.db.migration.sql.DropColumnsBuilder;
-import org.sonar.server.platform.db.migration.sql.DropMsSQLDefaultConstraintsBuilder;
-
-public class DropColumnWithConstraint extends DropColumnChange {
-
- private final String tableName;
- private final String column;
-
- public DropColumnWithConstraint(Database db, String tableName, String column) {
- super(db, tableName, column);
- this.tableName = tableName;
- this.column = column;
- }
-
- @Override
- public void execute(Context context) throws SQLException {
- if (!checkIfUseManagedColumnExists()) {
- return;
- }
-
- if (MsSql.ID.equals(getDatabase().getDialect().getId())) {
- context.execute(new DropMsSQLDefaultConstraintsBuilder(getDatabase()).setTable(tableName).setColumns(column).build());
- }
- context.execute(new DropColumnsBuilder(getDatabase().getDialect(), tableName, column).build());
- }
-
-}
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v91/DropUserManagedColumnFromMetricsTable.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v91/DropUserManagedColumnFromMetricsTable.java
index bed5b870acb..16f249d2e87 100644
--- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v91/DropUserManagedColumnFromMetricsTable.java
+++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v91/DropUserManagedColumnFromMetricsTable.java
@@ -20,9 +20,9 @@
package org.sonar.server.platform.db.migration.version.v91;
import org.sonar.db.Database;
-import org.sonar.server.platform.db.migration.step.DropColumnWithConstraint;
+import org.sonar.server.platform.db.migration.step.DropColumnChange;
-public class DropUserManagedColumnFromMetricsTable extends DropColumnWithConstraint {
+public class DropUserManagedColumnFromMetricsTable extends DropColumnChange {
private static final String TABLE_NAME = "metrics";
private static final String COLUMN = "user_managed";
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v96/DropSonarlintAdSeenColumnInUsersTable.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v96/DropSonarlintAdSeenColumnInUsersTable.java
index 73ef8abbe0a..38c92f8796f 100644
--- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v96/DropSonarlintAdSeenColumnInUsersTable.java
+++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v96/DropSonarlintAdSeenColumnInUsersTable.java
@@ -20,9 +20,9 @@
package org.sonar.server.platform.db.migration.version.v96;
import org.sonar.db.Database;
-import org.sonar.server.platform.db.migration.step.DropColumnWithConstraint;
+import org.sonar.server.platform.db.migration.step.DropColumnChange;
-public class DropSonarlintAdSeenColumnInUsersTable extends DropColumnWithConstraint {
+public class DropSonarlintAdSeenColumnInUsersTable extends DropColumnChange {
private static final String TABLE_NAME = "users";
private static final String COLUMN = "sonarlint_ad_seen";
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/DropProjectMeasureVariationColumn.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/DropProjectMeasureVariationColumn.java
index 9d0bbe1df8f..b48d8131fb1 100644
--- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/DropProjectMeasureVariationColumn.java
+++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/DropProjectMeasureVariationColumn.java
@@ -21,9 +21,8 @@ package org.sonar.server.platform.db.migration.version.v98;
import org.sonar.db.Database;
import org.sonar.server.platform.db.migration.step.DropColumnChange;
-import org.sonar.server.platform.db.migration.step.DropColumnWithConstraint;
-public class DropProjectMeasureVariationColumn extends DropColumnWithConstraint {
+public class DropProjectMeasureVariationColumn extends DropColumnChange {
public static final String TABLE_NAME = "project_measures";
public static final String COLUMN_NAME = "variation_value_1";