Browse Source

SONAR-17839 DB migrations dropping columns should always check if there are constraints to be deleted in MS SQL

tags/9.9.0.65466
Duarte Meneses 1 year ago
parent
commit
35e6d99c2a

+ 3
- 0
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropMsSQLDefaultConstraintsBuilder.java View File

@@ -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;

+ 6
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/step/DropColumnChange.java View File

@@ -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());
}


+ 0
- 51
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/step/DropColumnWithConstraint.java View File

@@ -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());
}

}

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v91/DropUserManagedColumnFromMetricsTable.java View File

@@ -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";

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v96/DropSonarlintAdSeenColumnInUsersTable.java View File

@@ -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";

+ 1
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v98/DropProjectMeasureVariationColumn.java View File

@@ -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";


Loading…
Cancel
Save