]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-12246 remove MySQL dialect
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Tue, 2 Jul 2019 21:12:14 +0000 (23:12 +0200)
committersonartech <sonartech@sonarsource.com>
Wed, 10 Jul 2019 06:36:52 +0000 (08:36 +0200)
141 files changed:
server/sonar-db-core/src/main/java/org/sonar/db/DefaultDatabase.java
server/sonar-db-core/src/main/java/org/sonar/db/dialect/AbstractDialect.java
server/sonar-db-core/src/main/java/org/sonar/db/dialect/Dialect.java
server/sonar-db-core/src/main/java/org/sonar/db/dialect/DialectUtils.java
server/sonar-db-core/src/main/java/org/sonar/db/dialect/MySql.java [deleted file]
server/sonar-db-core/src/test/java/org/sonar/db/DatabaseCommands.java
server/sonar-db-core/src/test/java/org/sonar/db/DdlUtilsTest.java
server/sonar-db-core/src/test/java/org/sonar/db/dialect/DialectUtilsTest.java
server/sonar-db-core/src/test/java/org/sonar/db/dialect/MsSqlTest.java
server/sonar-db-core/src/test/java/org/sonar/db/dialect/MySqlTest.java [deleted file]
server/sonar-db-core/src/test/java/org/sonar/db/dialect/OracleTest.java
server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java
server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentMapper.java
server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml
server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentDaoWithDuplicatedKeysTest.java [deleted file]
server/sonar-db-dao/src/test/resources/org/sonar/db/component/ComponentDaoWithDuplicatedKeysTest/schema.sql [deleted file]
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/charset/DatabaseCharsetChecker.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/charset/MysqlCharsetHandler.java [deleted file]
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/BlobColumnDef.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/BooleanColumnDef.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/ClobColumnDef.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/DecimalColumnDef.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/IntegerColumnDef.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/TimestampColumnDef.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/TinyIntColumnDef.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/AlterColumnsBuilder.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilder.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/CreateTableBuilder.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropColumnsBuilder.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropIndexBuilder.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropTableBuilder.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/RenameColumnsBuilder.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/RenameTableBuilder.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v56/CreateInitialSchema.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/AddIndexOnAnalysisUuidOfMeasures.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/AddIndexOnComponentUuidOfMeasures.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/AddUniqueIndexOnUuidOfSnapshots.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/CreatePermTemplatesCharacteristics.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/CreateTemporaryIndicesFor1211.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/MakeAnalysisUuidNotNullOnEvents.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/MakeComponentUuidAndAnalysisUuidNotNullOnDuplicationsIndex.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/MakeComponentUuidColumnsNotNullOnSnapshots.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/MakeUuidColumnsNotNullOnProjects.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/RecreateIndexProjectsUuidFromProjects.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v61/CreateTableProperties2.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v61/RenameTableProperties2ToProperties.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v62/CreateTableOrganizations.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v62/CreateTableWebhookDeliveries.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v62/IncludeOrganizationUuidInUniqueIndexOfGroupRoles.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v63/AddIndexOnOrganizationUuidOfProjects.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v63/DropTableResourceIndex.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v63/MakeIndexOnOrganizationsKeeUnique.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v63/MakeUuidNotNullOnEvents.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/AddIndexLoadedTemplatesType.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/AddIndexOnActiveRuleParameters.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/MakeProjectUuidNotNullable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/MakeQualityProfileKeyUnique.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/MakeQualityProfileOrganizationUuidAndKeyUnique.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/AddIndexOnEsQueueCreatedAt.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/AddIndexRulesProfileUuidOnQProfileChanges.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/CreateTableDefaultQProfiles.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/CreateTableOrgQProfiles.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/RecreateIndexEventsComponentUuid.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/RecreateIndexManualMeasuresComponentUuid.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/AddIndexOnProjectBranchesKey.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/CreateTableCeTaskCharacteristics.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/CreateTablePlugins.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/CreateTableQProfileEditGroups.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/CreateTableQProfileEditUsers.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v67/CreateTableAnalysisProperties.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/AddLiveMeasuresMetricIndex.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/AddSnapshotIsLastIndex.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/CreateOrgQualityGatesTable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/CreateTableLiveMeasures.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/DeletePersonMeasures.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/MakeUuidNotNullableOnQualityGates.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/CreateDeprecatedRuleKeysTable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/CreateWebhooksTable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/RenameTableProjectLinks2ToProjectLinks.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/ReplaceIndexInProjectBranches.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/AddUniqueIndexOnRulesParameters.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/AddUniqueIndexesOnUsers.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/CreateAlmAppInstallsTable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/CreateProjectMappingsTable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/MakeSomeColumnsOfUsersNotNullable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/PurgeDuplicateRulesParameters.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/PurgeOrphansForCE.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/RenameLoginToUserUuidOnTableUserTokens.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v73/AddIndexOnOrganizationMembers.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v73/CreateProjectAlmBindingsTable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v73/FixMissingQualityProfilesOnOrganizations.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/AddTmpColumnsToCeTable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/AddTmpLastKeyColumnsToCeActivity.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/CreateCeTaskMessage.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/FinalizeMainComponentUuidColumnsToCeTable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/FinalizeMainLastKeyColumnsToCeActivity.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v75/AddEventComponentChanges.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v75/AddUserExternalIdColumnInAlmAppInstall.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v75/CreateOrganizationsAlmBindingsTable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v76/AddUniqueIndexInUserPropertiesTable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v76/AddUniqueIndexOnExternalLoginInUsersTable.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v77/DropDataTypeFromFileSources.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v78/AddIndexToOrgQProfileParentUuid.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v78/CreateInternalComponentPropertiesTable.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/charset/DatabaseCharsetCheckerTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/charset/MysqlCharsetHandlerTest.java [deleted file]
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/def/BigIntegerColumnDefTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/def/BlobColumnDefTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/def/BooleanColumnDefTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/def/ClobColumnDefTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/def/DecimalColumnDefTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/def/IntegerColumnDefTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/def/TimestampColumnDefTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/def/TinyIntColumnDefTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/def/VarcharColumnDefTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/AddColumnsBuilderTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/AlterColumnsBuilderTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilderTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/CreateTableBuilderTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/DropColumnsBuilderTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/DropIndexBuilderTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/DropTableBuilderTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/RenameColumnsBuilderTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/RenameTableBuilderTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v60/DropIndexDuplicationsIndexSidFromDuplicationsIndexTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v60/DropIndexProjectsRootIdFromProjectsTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v60/DropIndexProjectsUuidFromProjectsTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v60/DropResourceIndexRidFromResourceIndexTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v60/DropSnapshotProjectIdFromSnapshotsTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v60/DropTemporaryIndicesOf1210Test.java
server/sonar-docs/src/pages/setup/install-server.md
server/sonar-main/src/main/java/org/sonar/application/config/JdbcSettings.java
server/sonar-main/src/test/java/org/sonar/application/config/ClusterSettingsLoopbackTest.java
server/sonar-main/src/test/java/org/sonar/application/config/ClusterSettingsTest.java
server/sonar-main/src/test/java/org/sonar/application/config/JdbcSettingsTest.java
server/sonar-server-common/src/test/java/org/sonar/server/platform/serverid/JdbcUrlSanitizerTest.java
server/sonar-server/src/main/java/org/sonar/server/component/ComponentUpdater.java
server/sonar-server/src/test/java/org/sonar/server/es/metadata/EsDbCompatibilityImplTest.java
server/sonar-server/src/test/java/org/sonar/server/platform/db/migration/AutoDbMigrationTest.java
server/sonar-server/src/test/java/org/sonar/server/ui/ws/GlobalActionTest.java

index 0349abf3a40bbb9935ef7b707f078c6b5d81553a..3c1b88ef24f7da51d698e91351050bc21eeef21e 100644 (file)
@@ -38,7 +38,6 @@ import org.sonar.api.utils.log.Logger;
 import org.sonar.api.utils.log.Loggers;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.DialectUtils;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.profiling.NullConnectionInterceptor;
 import org.sonar.db.profiling.ProfiledConnectionInterceptor;
 import org.sonar.db.profiling.ProfiledDataSource;
@@ -81,7 +80,6 @@ public class DefaultDatabase implements Database {
   @Override
   public void start() {
     initSettings();
-    failIfMySql();
     try {
       initDataSource();
       checkConnection();
@@ -98,21 +96,22 @@ public class DefaultDatabase implements Database {
     completeDefaultProperty(properties, JDBC_URL.getKey(), DEFAULT_URL);
     doCompleteProperties(properties);
 
-    dialect = DialectUtils.find(properties.getProperty(SONAR_JDBC_DIALECT), properties.getProperty(JDBC_URL.getKey()));
+    String jdbcUrl = properties.getProperty(JDBC_URL.getKey());
+    failIfMySql(jdbcUrl);
+    dialect = DialectUtils.find(properties.getProperty(SONAR_JDBC_DIALECT), jdbcUrl);
     properties.setProperty(SONAR_JDBC_DRIVER, dialect.getDefaultDriverClassName());
   }
 
-  private void failIfMySql() {
-    if (!MySql.ID.equals(dialect.getId())) {
-      return;
+  private static void failIfMySql(String jdbcUrl) {
+    if (StringUtils.startsWithIgnoreCase(jdbcUrl, "jdbc:mysql")) {
+      throw MessageException.of("\n" +
+        "#############################################################################################################\n" +
+        "#         End of Life of MySQL Support : SonarQube 7.9 and future versions do not support MySQL.            #\n" +
+        "#         Please migrate to a supported database. Get more details at                                       #\n" +
+        "#         https://community.sonarsource.com/t/end-of-life-of-mysql-support                                  #\n" +
+        "#         and https://github.com/SonarSource/mysql-migrator                                                 #\n" +
+        "#############################################################################################################\n");
     }
-    throw MessageException.of("\n" +
-      "#############################################################################################################\n" +
-      "#         End of Life of MySQL Support : SonarQube 7.9 and future versions do not support MySQL.            #\n" +
-      "#         Please migrate to a supported database. Get more details at                                       #\n" +
-      "#         https://community.sonarsource.com/t/end-of-life-of-mysql-support                                  #\n" +
-      "#         and https://github.com/SonarSource/mysql-migrator                                                 #\n" +
-      "#############################################################################################################\n");
   }
 
   private void initDataSource() throws Exception {
index 8836e59789fbfa9453eba37615acd0d3295705ea..410a70741e65ddf49465f494bb900f356f36257b 100644 (file)
@@ -77,16 +77,6 @@ abstract class AbstractDialect implements Dialect {
     return Collections.emptyList();
   }
 
-  @Override
-  public int getScrollDefaultFetchSize() {
-    return 200;
-  }
-
-  @Override
-  public int getScrollSingleRowFetchSize() {
-    return 1;
-  }
-
   @Override
   public boolean supportsUpsert() {
     return false;
index 49c1b2b1ad426110b5bdfe975584918524145381..b693d78d00113f6f14a4986e7d6aafd26ac1081a 100644 (file)
@@ -51,13 +51,9 @@ public interface Dialect {
   /**
    * Fetch size to be used when scrolling large result sets.
    */
-  int getScrollDefaultFetchSize();
-
-  /**
-   * Fetch size to scroll one row at a time. It sounds strange because obviously value is 1 in most cases,
-   * but it's different on MySQL...
-   */
-  int getScrollSingleRowFetchSize();
+  default int getScrollDefaultFetchSize() {
+    return 200;
+  }
 
   /**
    * Indicates whether DB migration can be perform on the DB vendor implementation associated with the current dialect.
index 7739ad836fde5516a1dedc394f1752e37ce78466..10d1e90a4d7b30d24458e7850e5d1aa911b71001 100644 (file)
@@ -29,7 +29,7 @@ import org.sonar.api.utils.MessageException;
 
 public final class DialectUtils {
 
-  private static final Set<Supplier<Dialect>> DIALECTS = ImmutableSet.of(H2::new, MySql::new, Oracle::new, PostgreSql::new, MsSql::new);
+  private static final Set<Supplier<Dialect>> DIALECTS = ImmutableSet.of(H2::new, Oracle::new, PostgreSql::new, MsSql::new);
 
   private DialectUtils() {
     // only static stuff
diff --git a/server/sonar-db-core/src/main/java/org/sonar/db/dialect/MySql.java b/server/sonar-db-core/src/main/java/org/sonar/db/dialect/MySql.java
deleted file mode 100644 (file)
index 08c5d88..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2019 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.db.dialect;
-
-import java.sql.DatabaseMetaData;
-import java.sql.SQLException;
-import org.apache.commons.lang.StringUtils;
-import org.sonar.api.utils.Version;
-
-public class MySql extends AbstractDialect {
-
-  public static final String ID = "mysql";
-  private static final Version MIN_SUPPORTED_VERSION = Version.create(5, 6, 0);
-
-  public MySql() {
-    super(ID, "com.mysql.jdbc.Driver", "true", "false", "SELECT 1");
-  }
-
-  @Override
-  public boolean matchesJdbcUrl(String jdbcConnectionURL) {
-    return StringUtils.startsWithIgnoreCase(jdbcConnectionURL, "jdbc:mysql:");
-  }
-
-  @Override
-  public int getScrollDefaultFetchSize() {
-    return Integer.MIN_VALUE;
-  }
-
-  @Override
-  public int getScrollSingleRowFetchSize() {
-    return Integer.MIN_VALUE;
-  }
-
-  @Override
-  public boolean supportsMigration() {
-    return true;
-  }
-
-  @Override
-  public String getSqlFromDual() {
-    return "from dual";
-  }
-
-  @Override
-  public void init(DatabaseMetaData metaData) throws SQLException {
-    checkDbVersion(metaData, MIN_SUPPORTED_VERSION);
-  }
-}
index 6cc886b710ceb9e483ff54095fb07a996f1108a2..17824d95bd49e21eb017a9a1532bba9491e581e0 100644 (file)
@@ -35,12 +35,10 @@ import org.dbunit.dataset.datatype.IDataTypeFactory;
 import org.dbunit.dataset.datatype.ToleratedDeltaMap;
 import org.dbunit.ext.h2.H2DataTypeFactory;
 import org.dbunit.ext.mssql.MsSqlDataTypeFactory;
-import org.dbunit.ext.mysql.MySqlDataTypeFactory;
 import org.dbunit.ext.oracle.Oracle10DataTypeFactory;
 import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 import org.sonar.db.version.SqTables;
@@ -74,7 +72,6 @@ public abstract class DatabaseCommands {
     DatabaseCommands command = ImmutableMap.of(
       org.sonar.db.dialect.H2.ID, H2,
       MsSql.ID, MSSQL,
-      MySql.ID, MYSQL,
       Oracle.ID, ORACLE,
       PostgreSql.ID, POSTGRESQL).get(dialect.getId());
 
@@ -132,17 +129,6 @@ public abstract class DatabaseCommands {
     }
   };
 
-  private static final DatabaseCommands MYSQL = new DatabaseCommands(new MySqlDataTypeFactory()) {
-    @Override
-    public void resetPrimaryKeys(DataSource dataSource) {
-    }
-
-    @Override
-    List<String> resetSequenceSql(String table, int minSequenceValue) {
-      return null;
-    }
-  };
-
   public void truncateDatabase(DataSource dataSource) throws SQLException {
     Connection connection = dataSource.getConnection();
     Statement statement = null;
index cd51a9e0e19dd04a450daabfec9d53b624c47021..4972d77be33ef4fdcfacdf79b2b4118ee22e8a0e 100644 (file)
@@ -39,7 +39,7 @@ public class DdlUtilsTest {
   @Test
   public void shouldSupportOnlyH2() {
     Assertions.assertThat(DdlUtils.supportsDialect("h2")).isTrue();
-    assertThat(DdlUtils.supportsDialect("mysql")).isFalse();
+    assertThat(DdlUtils.supportsDialect("postgresql")).isFalse();
     assertThat(DdlUtils.supportsDialect("oracle")).isFalse();
     assertThat(DdlUtils.supportsDialect("mssql")).isFalse();
   }
index 433071998d9e34e7dc9ee5a383cf990e9a154b3d..b6a1196da7761ac4e749cc6c44622e4a8d8c310a 100644 (file)
@@ -28,14 +28,14 @@ public class DialectUtilsTest {
 
   @Test
   public void testFindById() {
-    Dialect d = DialectUtils.find("mysql", null);
-    assertThat(d).isInstanceOf(MySql.class);
+    Dialect d = DialectUtils.find("postgresql", null);
+    assertThat(d).isInstanceOf(PostgreSql.class);
   }
 
   @Test
   public void testFindByJdbcUrl() {
-    Dialect d = DialectUtils.find(null, "jdbc:mysql:foo:bar");
-    assertThat(d).isInstanceOf(MySql.class);
+    Dialect d = DialectUtils.find(null, "jdbc:postgresql:foo:bar");
+    assertThat(d).isInstanceOf(PostgreSql.class);
   }
 
   @Test(expected = MessageException.class)
index fe7f8748859d48435a54eadc2d5f8b6f9efd8600..44620116ba20a5408283b5c714d58c2692386e1b 100644 (file)
@@ -43,7 +43,6 @@ public class MsSqlTest {
     assertThat(underTest.matchesJdbcUrl("jdbc:sqlserver://localhost:1433;databasename=sonar")).isTrue();
 
     assertThat(underTest.matchesJdbcUrl("jdbc:hsql:foo")).isFalse();
-    assertThat(underTest.matchesJdbcUrl("jdbc:mysql:foo")).isFalse();
   }
 
   @Test
diff --git a/server/sonar-db-core/src/test/java/org/sonar/db/dialect/MySqlTest.java b/server/sonar-db-core/src/test/java/org/sonar/db/dialect/MySqlTest.java
deleted file mode 100644 (file)
index 5982642..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2019 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.db.dialect;
-
-import java.sql.DatabaseMetaData;
-import java.sql.SQLException;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.mockito.Mockito;
-import org.sonar.api.utils.MessageException;
-import org.sonar.api.utils.log.LogTester;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class MySqlTest {
-
-  @Rule
-  public ExpectedException expectedException = ExpectedException.none();
-  @Rule
-  public LogTester logs = new LogTester();
-
-  private MySql underTest = new MySql();
-
-  @Test
-  public void matchesJdbcURL() {
-    assertThat(underTest.matchesJdbcUrl("jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8")).isTrue();
-    assertThat(underTest.matchesJdbcUrl("JDBC:MYSQL://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8")).isTrue();
-
-    assertThat(underTest.matchesJdbcUrl("jdbc:hsql:foo")).isFalse();
-    assertThat(underTest.matchesJdbcUrl("jdbc:oracle:foo")).isFalse();
-  }
-
-  @Test
-  public void testBooleanSqlValues() {
-    assertThat(underTest.getTrueSqlValue()).isEqualTo("true");
-    assertThat(underTest.getFalseSqlValue()).isEqualTo("false");
-  }
-
-  @Test
-  public void should_configure() {
-    assertThat(underTest.getId()).isEqualTo("mysql");
-    assertThat(underTest.getDefaultDriverClassName()).isEqualTo("com.mysql.jdbc.Driver");
-    assertThat(underTest.getValidationQuery()).isEqualTo("SELECT 1");
-  }
-
-  @Test
-  public void testFetchSizeForScrolling() {
-    assertThat(underTest.getScrollDefaultFetchSize()).isEqualTo(Integer.MIN_VALUE);
-    assertThat(underTest.getScrollSingleRowFetchSize()).isEqualTo(Integer.MIN_VALUE);
-  }
-
-  @Test
-  public void mysql_does_supportMigration() {
-    assertThat(underTest.supportsMigration()).isTrue();
-  }
-
-  @Test
-  public void getSqlFromDual() {
-    assertThat(underTest.getSqlFromDual()).isEqualTo("from dual");
-  }
-
-  @Test
-  public void init_throws_MessageException_if_mysql_5_5() throws Exception {
-    expectedException.expect(MessageException.class);
-    expectedException.expectMessage("Unsupported mysql version: 5.5. Minimal supported version is 5.6.");
-
-    DatabaseMetaData metadata = newMetadata(5, 5);
-    underTest.init(metadata);
-  }
-
-  @Test
-  public void init_does_not_fail_if_mysql_5_6() throws Exception {
-    DatabaseMetaData metadata = newMetadata(5, 6);
-    underTest.init(metadata);
-  }
-
-  @Test
-  public void supportsUpsert_returns_false() {
-    assertThat(underTest.supportsUpsert()).isFalse();
-  }
-
-  private DatabaseMetaData newMetadata(int dbMajorVersion, int dbMinorVersion) throws SQLException {
-    DatabaseMetaData metadata = mock(DatabaseMetaData.class, Mockito.RETURNS_DEEP_STUBS);
-    when(metadata.getDatabaseMajorVersion()).thenReturn(dbMajorVersion);
-    when(metadata.getDatabaseMinorVersion()).thenReturn(dbMinorVersion);
-    return metadata;
-  }
-}
index 60ef061987f14ebbc37dd45d25143ac639cb8ceb..cc1477bca0578f0ba016546c48f84d0191dfc1ce 100644 (file)
@@ -56,7 +56,6 @@ public class OracleTest {
   @Test
   public void testFetchSizeForScrolling() {
     assertThat(underTest.getScrollDefaultFetchSize()).isEqualTo(200);
-    assertThat(underTest.getScrollSingleRowFetchSize()).isEqualTo(1);
   }
 
   @Test
index 4ac08ada7a2b5489e81e7d4cf4a2f56340eba6b4..f449a0eeabf1a3493f8825783b8cc8713704d0fe 100644 (file)
@@ -318,14 +318,6 @@ public class MyBatis implements Startable {
     return newScrollingSelectStatement(session, sql, fetchSize);
   }
 
-  /**
-   * Create a PreparedStatement for SELECT requests with scrolling of results row by row (only one row
-   * in memory at a time)
-   */
-  public PreparedStatement newScrollingSingleRowSelectStatement(DbSession session, String sql) {
-    int fetchSize = database.getDialect().getScrollSingleRowFetchSize();
-    return newScrollingSelectStatement(session, sql, fetchSize);
-  }
 
   private static PreparedStatement newScrollingSelectStatement(DbSession session, String sql, int fetchSize) {
     try {
index 7914cec53e648dfe57ef1a3901b04b1fd30da1e3..b2dfcc5b2259a73f10546857ce8e4823f14b5efb 100644 (file)
@@ -226,10 +226,6 @@ public class ComponentDao implements Dao {
     return executeLargeInputs(allKeys, subKeys -> mapper(session).selectByKeysAndBranch(subKeys, pullRequestId));
   }
 
-  public List<ComponentDto> selectComponentsHavingSameKeyOrderedById(DbSession session, String key) {
-    return mapper(session).selectComponentsHavingSameKeyOrderedById(key);
-  }
-
   /**
    * List of ancestors, ordered from root to parent. The list is empty
    * if the component is a tree root. Disabled components are excluded by design
index b8045d385c47666458dbe5f438366b66e84550de..0d4a58ded6694240399262946202a12671672872 100644 (file)
@@ -142,8 +142,6 @@ public interface ComponentMapper {
 
   long countGhostProjects(@Param("organizationUuid") String organizationUuid, @Nullable @Param("query") String query);
 
-  List<ComponentDto> selectComponentsHavingSameKeyOrderedById(String key);
-
   List<ComponentDto> selectProjectsByNameQuery(@Param("nameQuery") @Nullable String nameQuery, @Param("includeModules") boolean includeModules);
 
   void scrollForIndexing(@Param("projectUuid") @Nullable String projectUuid, ResultHandler<ComponentDto> handler);
index ef48daaf913bf056b38ceb68e5b0626616726076..69623715619a799b9b8f72d3f40cb67405f545eb 100644 (file)
       and pb.branch_type='PULL_REQUEST'
   </select>
 
-  <select id="selectComponentsHavingSameKeyOrderedById" parameterType="String" resultType="Component">
-    select
-    <include refid="componentColumns"/>
-    from projects p
-    where p.kee=#{key,jdbcType=VARCHAR}
-    order BY p.id ASC
-  </select>
-
   <select id="selectById" parameterType="long" resultType="Component">
     SELECT
     <include refid="componentColumns"/>
diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentDaoWithDuplicatedKeysTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentDaoWithDuplicatedKeysTest.java
deleted file mode 100644 (file)
index c5b2f92..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2019 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.db.component;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.sonar.api.utils.System2;
-import org.sonar.db.DbClient;
-import org.sonar.db.DbSession;
-import org.sonar.db.DbTester;
-import org.sonar.db.organization.OrganizationDto;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * On H2, the index on PROJECTS.KEE is unique. In order to simulate the MySQL behaviour where the index is not unique,
- * we need to create a schema where there's no unique index on PROJECTS.KEE
- */
-
-public class ComponentDaoWithDuplicatedKeysTest {
-
-  private static final String PROJECT_KEY = "PROJECT_KEY";
-
-  @Rule
-  public DbTester db = DbTester.createForSchema(System2.INSTANCE, ComponentDaoWithDuplicatedKeysTest.class, "schema.sql");
-
-  private DbClient dbClient = db.getDbClient();
-  private DbSession dbSession = db.getSession();
-
-  private ComponentDao underTest = new ComponentDao();
-
-  @Test
-  public void select_components_having_same_key() {
-    OrganizationDto organizationDto = db.organizations().insert();
-    insertProject(ComponentTesting.newPrivateProjectDto(organizationDto).setDbKey(PROJECT_KEY));
-    insertProject(ComponentTesting.newPrivateProjectDto(organizationDto).setDbKey(PROJECT_KEY));
-    insertProject(ComponentTesting.newPrivateProjectDto(organizationDto).setDbKey(PROJECT_KEY));
-    insertProject(ComponentTesting.newPrivateProjectDto(organizationDto).setDbKey("ANOTHER_PROJECT_KEY"));
-
-    assertThat(underTest.selectComponentsHavingSameKeyOrderedById(db.getSession(), PROJECT_KEY)).hasSize(3);
-  }
-
-  @Test
-  public void return_nothing()  {
-    assertThat(underTest.selectComponentsHavingSameKeyOrderedById(db.getSession(), PROJECT_KEY)).isEmpty();
-  }
-
-  private ComponentDto insertProject(ComponentDto project) {
-    dbClient.componentDao().insert(dbSession, project);
-    dbSession.commit();
-    return project;
-  }
-}
diff --git a/server/sonar-db-dao/src/test/resources/org/sonar/db/component/ComponentDaoWithDuplicatedKeysTest/schema.sql b/server/sonar-db-dao/src/test/resources/org/sonar/db/component/ComponentDaoWithDuplicatedKeysTest/schema.sql
deleted file mode 100644 (file)
index e6316bd..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-CREATE TABLE "ORGANIZATIONS" (
-  "UUID" VARCHAR(40) NOT NULL PRIMARY KEY,
-  "KEE" VARCHAR(32) NOT NULL,
-  "NAME" VARCHAR(64) NOT NULL,
-  "DESCRIPTION" VARCHAR(256),
-  "URL" VARCHAR(256),
-  "AVATAR_URL" VARCHAR(256),
-  "NEW_PROJECT_PRIVATE" BOOLEAN,
-  "USER_ID" BIGINT,
-  "GUARDED" BOOLEAN NOT NULL,
-  "DEFAULT_QUALITY_GATE_UUID" VARCHAR(40) NOT NULL,
-  "SUBSCRIPTION" VARCHAR(40),
-  "CREATED_AT" BIGINT NOT NULL,
-  "UPDATED_AT" BIGINT NOT NULL
-);
-CREATE UNIQUE INDEX "PK_ORGANIZATIONS" ON "ORGANIZATIONS" ("UUID");
-CREATE UNIQUE INDEX "ORGANIZATION_KEY" ON "ORGANIZATIONS" ("KEE");
-
-CREATE TABLE "PROJECTS" (
-  "ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
-  "KEE" VARCHAR(400),
-  "ORGANIZATION_UUID" VARCHAR(40) NOT NULL,
-  "UUID" VARCHAR(50) NOT NULL,
-  "UUID_PATH" VARCHAR(1500) NOT NULL,
-  "ROOT_UUID" VARCHAR(50) NOT NULL,
-  "PROJECT_UUID" VARCHAR(50),
-  "MODULE_UUID" VARCHAR(50),
-  "MODULE_UUID_PATH" VARCHAR(1500),
-  "MAIN_BRANCH_PROJECT_UUID" VARCHAR(50),
-  "NAME" VARCHAR(2000),
-  "DESCRIPTION" VARCHAR(2000),
-  "PRIVATE" BOOLEAN NOT NULL,
-  "TAGS" VARCHAR(4000),
-  "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,
-  "B_CHANGED" BOOLEAN,
-  "B_COPY_COMPONENT_UUID" VARCHAR(50),
-  "B_DESCRIPTION" VARCHAR(2000),
-  "B_ENABLED" BOOLEAN,
-  "B_UUID_PATH" VARCHAR(1500),
-  "B_LANGUAGE" VARCHAR(20),
-  "B_LONG_NAME" VARCHAR(500),
-  "B_MODULE_UUID" VARCHAR(50),
-  "B_MODULE_UUID_PATH" VARCHAR(1500),
-  "B_NAME" VARCHAR(500),
-  "B_PATH" VARCHAR(2000),
-  "B_QUALIFIER" VARCHAR(10)
-);
-CREATE INDEX "PROJECTS_KEE" ON "PROJECTS" ("KEE");
-CREATE INDEX "PROJECTS_ROOT_UUID" ON "PROJECTS" ("ROOT_UUID");
-CREATE UNIQUE INDEX "PROJECTS_UUID" ON "PROJECTS" ("UUID");
-CREATE INDEX "PROJECTS_PROJECT_UUID" ON "PROJECTS" ("PROJECT_UUID");
-CREATE INDEX "PROJECTS_MODULE_UUID" ON "PROJECTS" ("MODULE_UUID");
-CREATE INDEX "PROJECTS_QUALIFIER" ON "PROJECTS" ("QUALIFIER");
index e3bf8ff5e10bd65dcdb86666f3bb12aea8ab8791..307fe9a7835255016ff353617fec885f33d365f3 100644 (file)
@@ -27,15 +27,14 @@ import org.sonar.db.Database;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
 /**
- * On fresh installations, checks that all db columns are UTF8. On all installations on MySQL or MSSQL,
+ * On fresh installations, checks that all db columns are UTF8. On MSSQL,
  * whatever fresh or upgrade, fixes case-insensitive columns by converting them to
  * case-sensitive.
- *
+ * <p>
  * See SONAR-6171 and SONAR-7549
  */
 public class DatabaseCharsetChecker {
@@ -79,8 +78,6 @@ public class DatabaseCharsetChecker {
         return new OracleCharsetHandler(sqlExecutor);
       case PostgreSql.ID:
         return new PostgresCharsetHandler(sqlExecutor, new PostgresMetadataReader(sqlExecutor));
-      case MySql.ID:
-        return new MysqlCharsetHandler(sqlExecutor);
       case MsSql.ID:
         return new MssqlCharsetHandler(sqlExecutor, new MssqlMetadataReader(sqlExecutor));
       default:
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/charset/MysqlCharsetHandler.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/charset/MysqlCharsetHandler.java
deleted file mode 100644 (file)
index 7daa934..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2019 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.charset;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.List;
-import java.util.stream.Collectors;
-import org.apache.commons.lang.StringUtils;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
-
-import static java.lang.String.format;
-import static org.apache.commons.lang.StringUtils.endsWithIgnoreCase;
-
-class MysqlCharsetHandler extends CharsetHandler {
-
-  private static final Logger LOGGER = Loggers.get(MysqlCharsetHandler.class);
-  private static final String TYPE_LONGTEXT = "longtext";
-
-  MysqlCharsetHandler(SqlExecutor selectExecutor) {
-    super(selectExecutor);
-  }
-
-  @Override
-  void handle(Connection connection, DatabaseCharsetChecker.State state) throws SQLException {
-    // all the VARCHAR columns have always been created with UTF8 charset on mysql
-    // (since SonarQube 2.12 to be precise). The default charset does not require
-    // to be UTF8. It is not used. No need to verify it.
-    // Still if a column has been accidentally created with a case-insensitive collation,
-    // then we can repair it by moving to the same case-sensitive collation. That should
-    // never occur.
-    if (state == DatabaseCharsetChecker.State.UPGRADE) {
-      repairCaseInsensitiveColumns(connection);
-    }
-  }
-
-  private void repairCaseInsensitiveColumns(Connection connection) throws SQLException {
-    // All VARCHAR columns are returned. No need to check database general collation.
-    // Example of row:
-    // issues | kee | utf8 | utf8_bin
-    List<ColumnDef> columns = getSqlExecutor().select(connection,
-      ColumnDef.SELECT_COLUMNS +
-        "FROM INFORMATION_SCHEMA.columns " +
-        "WHERE table_schema=database() and character_set_name is not null and collation_name is not null",
-      ColumnDef.ColumnDefRowConverter.INSTANCE);
-
-    List<ColumnDef> invalidColumns = columns.stream()
-      .filter(ColumnDef::isInSonarQubeTable)
-      .filter(column -> endsWithIgnoreCase(column.getCollation(), "_ci"))
-      .collect(Collectors.toList());
-    for (ColumnDef column : invalidColumns) {
-      repairCaseInsensitiveColumn(connection, column);
-    }
-  }
-
-  private void repairCaseInsensitiveColumn(Connection connection, ColumnDef column)
-    throws SQLException {
-    String csCollation = toCaseSensitive(column.getCollation());
-
-    String nullability = column.isNullable() ? "NULL" : "NOT NULL";
-    String type = column.getDataType().equalsIgnoreCase(TYPE_LONGTEXT) ? TYPE_LONGTEXT : format("%s(%d)", column.getDataType(), column.getSize());
-    String alterSql = format("ALTER TABLE %s MODIFY %s %s CHARACTER SET '%s' COLLATE '%s' %s",
-      column.getTable(), column.getColumn(), type, column.getCharset(), csCollation, nullability);
-    LOGGER.info("Changing collation of column [{}.{}] from {} to {} | sql={}", column.getTable(), column.getColumn(), column.getCollation(), csCollation, alterSql);
-    getSqlExecutor().executeDdl(connection, alterSql);
-  }
-
-  private static String toCaseSensitive(String caseInsensitiveCollation) {
-    // Example: big5_chinese_ci becomes big5_bin
-    // Full list of collations is available with SQL request "show collation"
-    return StringUtils.substringBefore(caseInsensitiveCollation, "_") + "_bin";
-  }
-}
index f8ac77ad979ab490e13936222b435ac3fa73473c..e1556aba1d8a0c204aaa3d669d94e74db07b6ec3 100644 (file)
@@ -24,7 +24,6 @@ import javax.annotation.concurrent.Immutable;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -41,8 +40,6 @@ public class BlobColumnDef extends AbstractColumnDef {
     switch (dialect.getId()) {
       case MsSql.ID:
         return "VARBINARY(MAX)";
-      case MySql.ID:
-        return "LONGBLOB";
       case Oracle.ID:
       case H2.ID:
         return "BLOB";
index 69e060981781a12c78bb0f3e5aa4f5980e115b74..71587d14bf32c22f58ec9aa243b9293d2f81ae0b 100644 (file)
@@ -24,7 +24,6 @@ import javax.annotation.concurrent.Immutable;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -54,8 +53,6 @@ public class BooleanColumnDef extends AbstractColumnDef {
         return "NUMBER(1)";
       case MsSql.ID:
         return "BIT";
-      case MySql.ID:
-        return "TINYINT(1)";
       default:
         throw new UnsupportedOperationException(String.format("Unknown dialect '%s'", dialect.getId()));
     }
index 46f3a2859599cd24f94ecb150fe03b153eb988e0..4007d52eaff6709d3b4fe51f989c8c8d971938f1 100644 (file)
@@ -23,7 +23,6 @@ import javax.annotation.concurrent.Immutable;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -48,8 +47,6 @@ public class ClobColumnDef extends AbstractColumnDef {
     switch (dialect.getId()) {
       case MsSql.ID:
         return "NVARCHAR (MAX)";
-      case MySql.ID:
-        return "LONGTEXT";
       case Oracle.ID:
         return "CLOB";
       case H2.ID:
index 4405dc33847096a45f97922841e949074c5cfdae..d5b4305c94ce60a2c25334433783d52d6263d5d7 100644 (file)
@@ -24,7 +24,6 @@ import javax.annotation.concurrent.Immutable;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -63,7 +62,6 @@ public class DecimalColumnDef extends AbstractColumnDef {
       case PostgreSql.ID:
       case Oracle.ID:
         return String.format("NUMERIC (%s,%s)", precision, scale);
-      case MySql.ID:
       case MsSql.ID:
         return String.format("DECIMAL (%s,%s)", precision, scale);
       case H2.ID:
index 8c42fd1c4e5bf594af5e3b944be55b08b2473412..ad0424331a3f818508d51f7c972a6056a3aaec0d 100644 (file)
@@ -25,7 +25,6 @@ import javax.annotation.concurrent.Immutable;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -46,7 +45,6 @@ public class IntegerColumnDef extends AbstractColumnDef {
   public String generateSqlType(Dialect dialect) {
     switch (dialect.getId()) {
       case PostgreSql.ID:
-      case MySql.ID:
       case H2.ID:
         return "INTEGER";
       case MsSql.ID:
index fe87cf745636277e0586d20186283cf8c5928513..f8ac8893b5a1314be000cfcd72743f48fc8573bc 100644 (file)
@@ -23,7 +23,6 @@ import javax.annotation.concurrent.Immutable;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -33,8 +32,7 @@ import static org.sonar.server.platform.db.migration.def.Validations.validateCol
  * Used to define TIMESTAMP columns.
  *
  * @deprecated implemented for compatibility with old tables, but {@link BigIntegerColumnDef}
- * must be used for storing datetimes as bigints (no problems regarding timezone
- * nor MySQL precision).
+ * must be used for storing datetimes as bigints (no problems regarding timezone).
  */
 @Immutable
 @Deprecated
@@ -52,7 +50,6 @@ public class TimestampColumnDef extends AbstractColumnDef {
   public String generateSqlType(Dialect dialect) {
     switch (dialect.getId()) {
       case MsSql.ID:
-      case MySql.ID:
         return "DATETIME";
       case Oracle.ID:
         return "TIMESTAMP (6)";
index dda7cf49f339edb8364091eb63c1b22263ab41f4..87abdae6c3f3fc2b8b8388dd530e94d252efae3c 100644 (file)
@@ -24,7 +24,6 @@ import javax.annotation.concurrent.Immutable;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -51,9 +50,6 @@ public class TinyIntColumnDef extends AbstractColumnDef {
         return "SMALLINT";
       case Oracle.ID:
         return "NUMBER(3)";
-      case MySql.ID:
-        // do not use TINYINT(1) as it's considered as booleans by connector/J.
-        return "TINYINT(2)";
       case MsSql.ID:
       case H2.ID:
         return "TINYINT";
index 8763e306111f39420a9f54a7a48543b9d5455597..f98d23a2eca7c57965c4ab3d84ca7c7d631c0286 100644 (file)
@@ -24,7 +24,6 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import org.sonar.db.dialect.Dialect;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 import org.sonar.server.platform.db.migration.def.ColumnDef;
@@ -70,8 +69,6 @@ public class AlterColumnsBuilder {
     switch (dialect.getId()) {
       case PostgreSql.ID:
         return createPostgresQuery();
-      case MySql.ID:
-        return createMySqlQuery();
       case Oracle.ID:
         return createOracleQuery();
       default:
@@ -96,12 +93,6 @@ public class AlterColumnsBuilder {
     return Collections.singletonList(sql.toString());
   }
 
-  private List<String> createMySqlQuery() {
-    StringBuilder sql = new StringBuilder(ALTER_TABLE + tableName + " ");
-    addColumns(sql, "MODIFY COLUMN ", "", true);
-    return Collections.singletonList(sql.toString());
-  }
-
   private List<String> createOracleQuery() {
     List<String> sqls = new ArrayList<>();
     for (ColumnDef columnDef : columnDefs) {
index 79cb4a49e9984540887135d7adeffec53b310b29..78bcb720321902db1faec075b660771b589e8ab3 100644 (file)
@@ -22,10 +22,7 @@ package org.sonar.server.platform.db.migration.sql;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
-import org.sonar.db.dialect.Dialect;
-import org.sonar.db.dialect.MySql;
 import org.sonar.server.platform.db.migration.def.ColumnDef;
-import org.sonar.server.platform.db.migration.def.VarcharColumnDef;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Collections.singletonList;
@@ -35,18 +32,11 @@ import static org.sonar.server.platform.db.migration.def.Validations.validateTab
 
 public class CreateIndexBuilder {
 
-  private static final int MAX_LENGTH_ON_MYSQL = 255;
-
-  private final Dialect dialect;
   private final List<ColumnDef> columns = new ArrayList<>();
   private String tableName;
   private String indexName;
   private boolean unique = false;
 
-  public CreateIndexBuilder(Dialect dialect) {
-    this.dialect = dialect;
-  }
-
   /**
    * Required name of table on which index is created
    */
@@ -100,22 +90,8 @@ public class CreateIndexBuilder {
     sql.append(" ON ");
     sql.append(tableName);
     sql.append(" (");
-    sql.append(columns.stream().map(this::columnSql).collect(Collectors.joining(", ")));
+    sql.append(columns.stream().map(ColumnDef::getName).collect(Collectors.joining(", ")));
     sql.append(")");
     return sql.toString();
   }
-
-  private String columnSql(ColumnDef column) {
-    String length = "";
-    // Index of varchar column is limited to 767 bytes on mysql (<= 255 UTF-8 characters)
-    // See http://jira.sonarsource.com/browse/SONAR-4137 and
-    // http://dev.mysql.com/doc/refman/5.6/en/innodb-restrictions.html
-    if (dialect.getId().equals(MySql.ID) && column instanceof VarcharColumnDef) {
-      VarcharColumnDef varcharColumn = (VarcharColumnDef) column;
-      if (varcharColumn.getColumnSize() > MAX_LENGTH_ON_MYSQL) {
-        length = "(" + MAX_LENGTH_ON_MYSQL + ")";
-      }
-    }
-    return column.getName() + length;
-  }
 }
index 6db351b9f964f26410bbfbb8e04a444ce98aa151..5d67ba657f0e9c8789a9248cb673eb3baba05e36 100644 (file)
@@ -37,7 +37,6 @@ import org.sonar.db.DatabaseUtils;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 import org.sonar.server.platform.db.migration.def.BigIntegerColumnDef;
@@ -127,7 +126,6 @@ public class CreateTableBuilder {
     appendColumns(res, dialect, columnDefs);
     appendPkConstraint(res);
     res.append(')');
-    appendCollationClause(res, dialect);
     return res.toString();
   }
 
@@ -212,9 +210,6 @@ public class CreateTableBuilder {
         case MsSql.ID:
           res.append(" IDENTITY (1,1)");
           break;
-        case MySql.ID:
-          res.append(" AUTO_INCREMENT");
-          break;
         case H2.ID:
           res.append(" AUTO_INCREMENT (1,1)");
           break;
@@ -255,12 +250,6 @@ public class CreateTableBuilder {
     }
   }
 
-  private static void appendCollationClause(StringBuilder res, Dialect dialect) {
-    if (MySql.ID.equals(dialect.getId())) {
-      res.append(" ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin");
-    }
-  }
-
   private Stream<String> createOracleAutoIncrementStatements() {
     if (!Oracle.ID.equals(dialect.getId())) {
       return Stream.empty();
index 138e50ff5fd75017b67855b5d0c83da881e31349..e076c1ffbc8d7bc8c9f27d68dcee7a1bac8d5c24 100644 (file)
@@ -27,7 +27,6 @@ import org.sonar.core.util.stream.MoreCollectors;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -51,7 +50,6 @@ public class DropColumnsBuilder {
   public List<String> build() {
     switch (dialect.getId()) {
       case PostgreSql.ID:
-      case MySql.ID:
         StringBuilder sql = new StringBuilder().append(ALTER_TABLE).append(tableName).append(" ");
         dropColumns(sql, "DROP COLUMN ", columns);
         return Collections.singletonList(sql.toString());
index 548cbfbf87cc064fe1959fe20a675dade48c9dd0..286667affaef1e76be45d88692bf39af6d0d9f49 100644 (file)
@@ -27,7 +27,6 @@ import org.sonar.db.DatabaseUtils;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -64,7 +63,6 @@ public class DropIndexBuilder {
   private String createSqlStatement() {
     switch (dialect.getId()) {
       case MsSql.ID:
-      case MySql.ID:
         return "DROP INDEX " + indexName + " ON " + tableName;
       case Oracle.ID:
         return "DROP INDEX " + indexName;
index 5989ea2e7f2b3262675e8c36170f1944f45a9df6..43f7e9b980d0e999ede187474d8b7b595946dfb0 100644 (file)
@@ -23,7 +23,6 @@ import java.util.List;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -47,7 +46,6 @@ public class DropTableBuilder {
       case Oracle.ID:
         return forOracle(tableName);
       case H2.ID:
-      case MySql.ID:
       case PostgreSql.ID:
         return singletonList("drop table if exists " + tableName);
       case MsSql.ID:
index 475b58df30deac49f324b26aa6a6af359714dabe..eb40fa10a278ef68925aff7fb0c2589525024ed3 100644 (file)
@@ -26,7 +26,6 @@ import javax.annotation.CheckForNull;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 import org.sonar.server.platform.db.migration.def.ColumnDef;
@@ -37,9 +36,7 @@ import static org.sonar.server.platform.db.migration.def.Validations.validateTab
 
 /**
  * This builder have the main goal to change the name column.
- *
- * For MySQL the column definition is mandatory, however the change of column
- * is not supported on this class.
+ * <p>
  * In case of renaming and changing a column, this must be done in two separate steps,
  * first rename the column then update the types of this column with @see {@link AlterColumnsBuilder}
  */
@@ -79,8 +76,6 @@ public class RenameColumnsBuilder {
           case Oracle.ID:
           case PostgreSql.ID:
             return "ALTER TABLE " + tableName + " RENAME COLUMN " + r.getOldColumnName() + " TO " + r.getNewColumnName();
-          case MySql.ID:
-            return "ALTER TABLE " + tableName + " CHANGE " + r.getOldColumnName() + " " + r.getNewColumnName() + " " + r.generateSqlType(dialect);
           case MsSql.ID:
             return "EXEC sp_rename '" + tableName + "." + r.getOldColumnName() + "', '" + r.getNewColumnName() + "', 'COLUMN'";
           default:
index 0b89f60fe1555be296db49939873c45a9fa4d2ac..586d22d7c02a24b980ec3776feb442899a29c4c0 100644 (file)
@@ -23,7 +23,6 @@ import java.util.List;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -75,7 +74,6 @@ public class RenameTableBuilder {
   private List<String> createSqlStatement() {
     switch (dialect.getId()) {
       case H2.ID:
-      case MySql.ID:
       case PostgreSql.ID:
         return singletonList("ALTER TABLE " + name + " RENAME TO " + newName);
       case MsSql.ID:
index 3a4d138fe89c76668d7aea436ad3c3db2991784d..54e7faf925fb7a55fa45250710f5d962e36467b9 100644 (file)
@@ -904,7 +904,7 @@ public class CreateInitialSchema extends DdlChange {
   }
 
   private void addIndex(Context context, String table, String index, boolean unique, ColumnDef... columns) throws SQLException {
-    CreateIndexBuilder builder = new CreateIndexBuilder(getDialect())
+    CreateIndexBuilder builder = new CreateIndexBuilder()
       .setTable(table)
       .setName(index)
       .setUnique(unique);
index 5753b3447766c7606b0082e6e942240fa4dd87a3..343e78d4b4e94f469e484cf2e5b986a5850f8925 100644 (file)
@@ -36,7 +36,7 @@ public class AddIndexOnAnalysisUuidOfMeasures extends DdlChange {
   @Override
   public void execute(Context context) throws SQLException {
     // this index must be present for the performance of next migration
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("project_measures")
       .setName("measures_analysis_metric")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("analysis_uuid").setLimit(50).setIgnoreOracleUnit(true).build())
index 025a8e07ce66c364a2c50ff6e9f7ba809e5f43f5..d56cc5a3c533c24b50826dd9612eb3856fd72d92 100644 (file)
@@ -34,7 +34,7 @@ public class AddIndexOnComponentUuidOfMeasures extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("project_measures")
       .setName("measures_component_uuid")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("component_uuid").setLimit(50).setIgnoreOracleUnit(true).build())
index 00737b99cf1849243d16ec9d7bfeb56f3f5d6e4f..6a1079e46a0efd5cd35d8b5fd6e29599c0c32035 100644 (file)
@@ -34,7 +34,7 @@ public class AddUniqueIndexOnUuidOfSnapshots extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("snapshots")
       .setName("analyses_uuid")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("uuid").setLimit(50).setIgnoreOracleUnit(true).build())
index 723bf6786c09884e2236472143208963a1551420..1ddc99ded10a5676db1bb4a7992471fa831709ea 100644 (file)
@@ -55,7 +55,7 @@ public class CreatePermTemplatesCharacteristics extends DdlChange {
         .addColumn(newBigIntegerColumnDefBuilder().setColumnName("updated_at").setIsNullable(false).build())
         .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_NAME)
       .setName("uniq_perm_tpl_charac")
       .setUnique(true)
index 935cc1546f896c2669a3408b1ed49c6338cbe64d..ee02d2e885aca1889eb53f0efe1b4a7ea0231137 100644 (file)
@@ -37,12 +37,12 @@ public class CreateTemporaryIndicesFor1211 extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("ce_activity")
       .setName(INDEX_ON_CE_ACTIVITY)
       .addColumn(newIntegerColumnDefBuilder().setColumnName("snapshot_id").build())
       .build());
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("duplications_index")
       .setName(INDEX_ON_DUPLICATIONS_INDEX)
       .addColumn(newIntegerColumnDefBuilder().setColumnName("project_snapshot_id").build())
index cc3e14973936cb1be983731685fa6058b1de5cd3..90fdce146b28a41cb8e05de086cd752e8a605407 100644 (file)
@@ -49,7 +49,7 @@ public class MakeAnalysisUuidNotNullOnEvents extends DdlChange {
       .updateColumn(analysisUuidColumn)
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_EVENTS)
       .setName("events_analysis")
       .addColumn(analysisUuidColumn)
index 419cc81a6356c5c4c9619f8cad7b748528b04a36..d5c76b82db97795560ebecd2ee26ef25c88731dc 100644 (file)
@@ -46,7 +46,7 @@ public class MakeComponentUuidAndAnalysisUuidNotNullOnDuplicationsIndex extends
       .updateColumn(analysisUuid)
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_DUPLICATIONS_INDEX)
       .setName("duplication_analysis_component")
       .addColumn(analysisUuid)
index f77f14b63fed95233f0da5accdbcb4e73c76684a..3f420c206ad2d5d585ae5264f8b7ce488b3d7e16 100644 (file)
@@ -46,12 +46,12 @@ public class MakeComponentUuidColumnsNotNullOnSnapshots extends DdlChange {
       .updateColumn(rootComponentUuid)
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_SNAPSHOTS)
       .setName("snapshot_component")
       .addColumn(componentUuid)
       .build());
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_SNAPSHOTS)
       .setName("snapshot_root_component")
       .addColumn(rootComponentUuid)
index 67e1819280f31dd779911273ca32341534964a75..df2f5794598b70d42baed901c06a0be6cd8b35dc 100644 (file)
@@ -45,7 +45,7 @@ public class MakeUuidColumnsNotNullOnProjects extends DdlChange {
       .updateColumn(rootUuid)
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_PROJECTS)
       .setName("projects_root_uuid")
       .addColumn(rootUuid)
index 5e7b07ea782c939e27f09f18053ab2a2020c9a2a..d53c67b1a38c1ece4ffd74a600a838ea67a3c971 100644 (file)
@@ -34,7 +34,7 @@ public class RecreateIndexProjectsUuidFromProjects extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("projects")
       .setName("projects_uuid")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("uuid").setLimit(50).setIgnoreOracleUnit(true).build())
index a9f5c53c1a9ff9bb9c38fa563efe86bbb3c04ff7..7f682d5519c28cfb0353f56ebee937eb128a4831 100644 (file)
@@ -60,7 +60,7 @@ public class CreateTableProperties2 extends DdlChange {
       .build();
     context.execute(stmts);
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_NAME)
       .setName("properties2_key")
       .addColumn(propKey)
index b8e95f2666f7259d33a8a912d48b6b99a0e399a2..62f23a562c7192f0ac29fe39f18568ba0d142fbb 100644 (file)
@@ -46,7 +46,7 @@ public class RenameTableProperties2ToProperties extends DdlChange {
       .setNewName("properties")
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("properties")
       .setName("properties_key")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("prop_key").setLimit(512).setIsNullable(false).setIgnoreOracleUnit(true).build())
index 07d7117515a4bf338092b6904170a74466eb7018..bfe0bccde6c2ed06cb8972f415ebc1e1b8f69d76 100644 (file)
@@ -53,7 +53,7 @@ public class CreateTableOrganizations extends DdlChange {
         .addColumn(newBigIntegerColumnDefBuilder().setColumnName("updated_at").setIsNullable(false).build())
         .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_NAME)
       .setName("organization_key")
       .addColumn(keeColumn)
index ce43fef9edb016f44e558c7e9f0df98d202a2971..52e10f1992357ebbbe7c664144b728eb701156a3 100644 (file)
@@ -62,13 +62,13 @@ public class CreateTableWebhookDeliveries extends DdlChange {
         .build());
 
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName("component_uuid")
         .addColumn(componentUuidColumn)
         .build());
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName("ce_task_uuid")
         .addColumn(ceTaskUuidColumn)
index 95daa60adc93b82822e746e141b12c9e84a31790..16bf180ac8ba545ebf455135ac0a9c4e07319a17 100644 (file)
@@ -43,7 +43,7 @@ public class IncludeOrganizationUuidInUniqueIndexOfGroupRoles extends DdlChange
       .setName("uniq_group_roles")
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_GROUP_ROLES)
       .setName("uniq_group_roles")
       .setUnique(true)
index 6335619c0bbf805b498f5e082545a4f36f0cb8bd..e15953cebd9d6c503d413c3121d8794b1a237605 100644 (file)
@@ -34,7 +34,7 @@ public class AddIndexOnOrganizationUuidOfProjects extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("projects")
       .setName("projects_organization")
       .addColumn(newVarcharColumnDefBuilder()
index a084cd3692fc79ccd6033285ad5444ca325c25fc..8724db97bcf9f0534dbb24e4d456137f85edeba7 100644 (file)
@@ -50,7 +50,7 @@ public class DropTableResourceIndex extends DdlChange {
       // introduced in 6.0, has been dropped in 6.7 for performance reasons. There was no need to
       // alter the table resource_index while it's dropped later in 6.3.
       // As a consequence this index may not exist when upgrading from 6.1+.
-      // Note that the "delete index if exists" is still not supported by MySQL, Oracle and MSSQL < 2016,
+      // Note that the "delete index if exists" is still not supported by Oracle and MSSQL < 2016,
       // that's why an exception is raised if the index does not exist.
     }
 
index 8c19ce45fd413c35ae4a6b4e3848e017e97ed9be..2223ce74ea6fa16d45919b68c897d8d647ddedcb 100644 (file)
@@ -43,7 +43,7 @@ public class MakeIndexOnOrganizationsKeeUnique extends DdlChange {
       .setName(INDEX_NAME)
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_ORGANIZATIONS)
       .setName(INDEX_NAME)
       .addColumn(newVarcharColumnDefBuilder()
index c495eb2fe47670ed8eccaa1bb1550a5d44030d95..9d474257fd3eda79bfa16e70b42e2db05c4d8a39 100644 (file)
@@ -44,7 +44,7 @@ public class MakeUuidNotNullOnEvents extends DdlChange {
       .updateColumn(uuidColumn)
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE)
       .setName("events_uuid")
       .setUnique(true)
index 06053180667986107202b725f92e44c39dce715a..ff1566d16a1387e9b551a4609237ab921ea2d7af 100644 (file)
@@ -33,7 +33,7 @@ public class AddIndexLoadedTemplatesType extends DdlChange {
   @Override
   public void execute(Context context) throws SQLException {
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable("loaded_templates")
         .setName("ix_loaded_templates_type")
         .addColumn(VarcharColumnDef.newVarcharColumnDefBuilder()
index e1811da69d0c1b90f00748894ec5f466e067dd69..73eaef40ea9bb56c82a801741581123e4e45660a 100644 (file)
@@ -34,7 +34,7 @@ public class AddIndexOnActiveRuleParameters extends DdlChange {
   @Override
   public void execute(Context context) throws SQLException {
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable("active_rule_parameters")
         .setName("ix_arp_on_active_rule_id")
         .addColumn(newIntegerColumnDefBuilder().setColumnName("active_rule_id").setIsNullable(false).build())
index 6ee240b6c45d592ff8a128c9a81d052f528a141f..0fb21bb9a90ac0a21744701713b5aa72fbaab0b9 100644 (file)
@@ -55,7 +55,7 @@ public class MakeProjectUuidNotNullable extends DdlChange {
       .updateColumn(projectUuidCol)
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_PROJECTS)
       .setName(INDEX_PROJECTS_PROJECT_UUID)
       .setUnique(false).addColumn(projectUuidCol)
index dab74b4a08843ec499530eac9f73ad17e656aa47..3d791a406d8e1899e713968bfb17456b3780fbb0 100644 (file)
@@ -36,7 +36,7 @@ public class MakeQualityProfileKeyUnique extends DdlChange {
   @Override
   public void execute(DdlChange.Context context) throws SQLException {
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
       .setTable("rules_profiles")
       .setName("uniq_qprof_key")
       .addColumn(
index cf5f75339b9963dcfda1992840e6d1396a3238b8..96e0d7f68837b77d3518be5d431da6259d4312de 100644 (file)
@@ -36,7 +36,7 @@ public class MakeQualityProfileOrganizationUuidAndKeyUnique extends DdlChange {
   @Override
   public void execute(DdlChange.Context context) throws SQLException {
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable("rules_profiles")
         .setName("uniq_qprof_org_and_key")
         .addColumn(
index 5000b0a70e77f28f654049d5a59efdf35967ccec..36c9401f968e23a60c3d83fdafd2bc9ded8ee9bc 100644 (file)
@@ -38,7 +38,7 @@ public class AddIndexOnEsQueueCreatedAt extends DdlChange {
       .setIsNullable(false)
       .build();
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setName("es_queue_created_at")
       .setTable("es_queue")
       .addColumn(column)
index 4dcb5fe47cb20ec308aefb9dad30f5895e170153..5bb7864dfb77cd3a37d03edd2246986557bf279b 100644 (file)
@@ -43,7 +43,7 @@ public class AddIndexRulesProfileUuidOnQProfileChanges extends DdlChange {
       .setIsNullable(false)
       .build();
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setName(NEW_INDEX_NAME)
       .setTable(TABLE_NAME)
       .addColumn(rulesProfileUuid)
index fb065d370559116ba53a77c6f90abed8bdf66958..a9fa08e2ee3e103a90ae6d93591f54f244f59e16 100644 (file)
@@ -71,7 +71,7 @@ public class CreateTableDefaultQProfiles extends DdlChange {
         .build());
 
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable("default_qprofiles")
         .setName("uniq_default_qprofiles_uuid")
         .addColumn(profileUuidColumn)
index ac8c856067518bad1f9187edea53dba1ef2ff41e..c3998fa31d5552a31469f74bbf7836993e2c1580 100644 (file)
@@ -87,14 +87,14 @@ public class CreateTableOrgQProfiles extends DdlChange {
         .build());
 
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName("qprofiles_org_uuid")
         .addColumn(organizationColumn)
         .build());
 
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName("qprofiles_rp_uuid")
         .addColumn(rulesProfileUuid)
index e79f71a72f24c42a0c198a77dfe3cc0370fde026..7f0cb6f23ccb83772d20c6ab75a53b94d5018d0d 100644 (file)
@@ -35,7 +35,7 @@ public class RecreateIndexEventsComponentUuid extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("events")
       .setName("events_component_uuid")
       .setUnique(false)
index 783f2c497cffd57a7b9dfb39d5fcee73d494d809..5ef0672dc95416a09a09f9af84d155d8b48ad5a8 100644 (file)
@@ -35,7 +35,7 @@ public class RecreateIndexManualMeasuresComponentUuid extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("manual_measures")
       .setName("manual_measures_component_uuid")
       .setUnique(false)
index 3e9a73132766641c995539d73e2d48290e877358..a4dee131644359ee664687b029d3b73677742c13 100644 (file)
@@ -33,7 +33,7 @@ public class AddIndexOnProjectBranchesKey extends DdlChange {
   @Override
   public void execute(Context context) throws SQLException {
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable("project_branches")
         .setName("project_branches_kee")
         .setUnique(true)
index 71d5d2af9018ffbb2cd9c05a635ac2742a2cb0bc..0ee0110fad2f7bcf491dc64877a7304df8d41fcd 100644 (file)
  */
 package org.sonar.server.platform.db.migration.version.v66;
 
-import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.UUID_SIZE;
-import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.newVarcharColumnDefBuilder;
-
 import java.sql.SQLException;
-
 import org.sonar.db.Database;
 import org.sonar.server.platform.db.migration.def.VarcharColumnDef;
 import org.sonar.server.platform.db.migration.sql.CreateIndexBuilder;
 import org.sonar.server.platform.db.migration.sql.CreateTableBuilder;
 import org.sonar.server.platform.db.migration.step.DdlChange;
 
+import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.UUID_SIZE;
+import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.newVarcharColumnDefBuilder;
+
 public class CreateTableCeTaskCharacteristics extends DdlChange {
   private static final String TABLE_NAME = "ce_task_characteristics";
 
@@ -73,7 +72,7 @@ public class CreateTableCeTaskCharacteristics extends DdlChange {
         .build());
 
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName("ce_characteristics_" + ceTaskUuidColumn.getName())
         .addColumn(ceTaskUuidColumn)
index 871b0e70bddbd72a18fd4dd219c6a92c190114b3..8d01c12442c2032284934bb9eea74c835ed37827 100644 (file)
@@ -71,7 +71,7 @@ public class CreateTablePlugins extends DdlChange {
         .build());
 
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName("plugins_key")
         .addColumn(keyColumn)
index 1db140b58c0fe7f4056ebeae927d18d8b94db6e9..343b55030897cae5fd28180290736795c0b8da9f 100644 (file)
@@ -64,14 +64,14 @@ public class CreateTableQProfileEditGroups extends DdlChange {
     );
 
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName(TABLE_NAME + "_qprofile")
         .addColumn(qProfileUuidColumn)
         .setUnique(false)
         .build());
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName(TABLE_NAME + "_unique")
         .addColumn(groupColumn)
index 7d1413fc803ff6173202a4ac99e97ce51102fffe..e4a3027904269fc6b576b107f0b0f48c5b410824 100644 (file)
@@ -64,14 +64,14 @@ public class CreateTableQProfileEditUsers extends DdlChange {
     );
 
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName(TABLE_NAME + "_qprofile")
         .addColumn(qProfileUuidColumn)
         .setUnique(false)
         .build());
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName(TABLE_NAME + "_unique")
         .addColumn(userLoginColumn)
index 5db73a9cfc17416e2a1c206098b5658f6563d012..dc07ef8a2241ecda22e8f92b22cc78678f61e5bf 100644 (file)
@@ -76,7 +76,7 @@ public class CreateTableAnalysisProperties extends DdlChange {
       .build()
     );
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .addColumn(SNAPSHOT_UUID_COLUMN)
       .setUnique(false)
       .setTable(TABLE_NAME)
index d08933471a4e0c4ae2490f26f57e6d7357fe60b6..e2de5885439aea07d6fcf6aba88897a700d46393 100644 (file)
@@ -41,7 +41,7 @@ public class AddLiveMeasuresMetricIndex extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .addColumn(newVarcharColumnDefBuilder()
         .setColumnName("component_uuid")
         .setIsNullable(false)
index 0f555576f04f7a59ea0205abee5c333c18a45ff7..6402e262a320bad1bb30595ac5fb777051527ec6 100644 (file)
@@ -37,7 +37,7 @@ public class AddSnapshotIsLastIndex extends DdlChange {
   @Override
   public void execute(Context context) throws SQLException {
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName(INDEX_NAME)
         .setUnique(false)
index 71e8d3ff22a6e488c3ae5a4c9cfc7c74b2099fd4..0db787715c0d7b6719eef0679e80b2427a052f90 100644 (file)
@@ -63,7 +63,7 @@ public class CreateOrgQualityGatesTable extends DdlChange {
         .build()
       );
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .addColumn(ORGANIZATION_UUID_COLUMN)
         .addColumn(QUALITY_GATE_UUID_COLUMN)
         .setUnique(true)
index a86d9d78e8f968b69583138743feb51cef4fef63..eb65327565571751c5a4cce9497bad48c8a10eca 100644 (file)
@@ -99,7 +99,7 @@ public class CreateTableLiveMeasures extends DdlChange {
         .build())
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .addColumn(projectUuidCol)
       .setUnique(false)
       .setTable(TABLE_NAME)
index 1f78dc960c19d64b2b4489dee117e2cd48f8d144..d50440ad9f5d8c2487777e79239d4a7a4538910a 100644 (file)
@@ -23,7 +23,6 @@ import java.sql.SQLException;
 import org.sonar.db.Database;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 import org.sonar.server.platform.db.migration.step.DataChange;
@@ -54,7 +53,6 @@ public class DeletePersonMeasures extends DataChange {
 
   private String getDeleteSql() {
     switch (getDialect().getId()) {
-      case MySql.ID:
       case MsSql.ID:
         return "delete pm from project_measures pm " +
           "inner join projects c on c.uuid = pm.component_uuid " +
index 496b07f95004b7d78a60b97c5088eec810f135c0..4267dc1531b98c4c74908ed9ce6a0cf3056306f8 100644 (file)
@@ -45,7 +45,7 @@ public class MakeUuidNotNullableOnQualityGates extends DdlChange {
       .updateColumn(UUID_COLUMN)
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .addColumn(UUID_COLUMN)
       .setUnique(true)
       .setTable(TABLE_NAME)
index 3e7b93377ca83378540756bb849c9cad4fe5d094..0d5637b1d9c85de7b3a73a2ba3693d8c78333adf 100644 (file)
@@ -76,7 +76,7 @@ public class CreateDeprecatedRuleKeysTable extends DdlChange {
         .build()
       );
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .setTable(DEPRECATED_RULE_KEYS)
         .addColumn(OLD_REPOSITORY_KEY_COLUMN)
         .addColumn(OLD_RULE_KEY_COLUMN)
@@ -85,7 +85,7 @@ public class CreateDeprecatedRuleKeysTable extends DdlChange {
         .build()
       );
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .setTable(DEPRECATED_RULE_KEYS)
         .addColumn(RULE_ID_COLUMN)
         .setUnique(true)
index b129ebbe48b5eae4c9db0ea6fbd26e439793e5f8..91d887eddd4cf5eb422d5b847725e30879dd973b 100644 (file)
@@ -93,7 +93,7 @@ public class CreateWebhooksTable extends DdlChange {
         .build()
       );
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .addColumn(ORGANIZATION_UUID_COLUMN)
         .setUnique(false)
         .setTable(TABLE_NAME)
@@ -101,7 +101,7 @@ public class CreateWebhooksTable extends DdlChange {
         .build()
       );
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .addColumn(PROJECT_UUID_COLUMN)
         .setUnique(false)
         .setTable(TABLE_NAME)
index 6507ac72c7bc21c2fddf72b85722bf7522f6c93b..4aa10c6e4c2c012de14eed6f74a26e2376e88ebd 100644 (file)
@@ -42,7 +42,7 @@ public class RenameTableProjectLinks2ToProjectLinks extends DdlChange {
       .setAutoGeneratedId(false)
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("project_links")
       .setName("project_links_project")
       .addColumn(newVarcharColumnDefBuilder()
index f7c0850fa17ee9c2a3005a8fba36648fec520b3c..790abeb3e86a8420c90339126463b7b5e2f0518c 100644 (file)
@@ -61,7 +61,7 @@ public class ReplaceIndexInProjectBranches extends DdlChange {
       .setName(OLD_INDEX_NAME)
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .addColumn(PROJECT_UUID_COLUMN)
       .addColumn(KEE_COLUMN)
       .addColumn(KEY_TYPE_COLUMN)
index fd60f60155eb55cefac447fe2aa5722386c6b2a7..d0644008952babaf88a9ebfbec8911d53975b6f3 100644 (file)
@@ -41,7 +41,7 @@ public class AddUniqueIndexOnRulesParameters extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("rules_parameters")
       .setName("rules_parameters_unique")
       .setUnique(true)
index 03858019f49483b98e3f4200d366cd293b854bea..615901e9eb868418c86c66c3813b44ee12439e24 100644 (file)
@@ -35,14 +35,14 @@ public class AddUniqueIndexesOnUsers extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("users")
       .setName("users_uuid")
       .setUnique(true)
       .addColumn(notNullableColumn("uuid", 255))
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("users")
       .setName("uniq_external_id")
       .setUnique(true)
index fd234e1e0274b4be569721c33824c43f434fd2ae..368b0f915a5058d6eee93aa80145930b41882d4d 100644 (file)
@@ -84,14 +84,14 @@ public class CreateAlmAppInstallsTable extends DdlChange {
         .addColumn(UPDATED_AT_COLUMN)
         .build());
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .addColumn(ALM_ID_COLUMN)
         .addColumn(OWNER_COLUMN)
         .setUnique(true)
         .setTable(TABLE_NAME)
         .setName("alm_app_installs_owner")
         .build());
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .addColumn(ALM_ID_COLUMN)
         .addColumn(INSTALL_COLUMN)
         .setUnique(true)
index cbe0447733f7a8f217d95a61314363adbe7921b9..e50fc1276caabe9851ea660179ab43207a60afde 100644 (file)
@@ -78,7 +78,7 @@ public class CreateProjectMappingsTable extends DdlChange {
         .addColumn(CREATED_AT_COLUMN)
         .build());
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .addColumn(KEY_TYPE_COLUMN)
         .addColumn(KEE_COLUMN)
         .setUnique(true)
@@ -86,7 +86,7 @@ public class CreateProjectMappingsTable extends DdlChange {
         .setName("key_type_kee")
         .build());
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .addColumn(PROJECT_UUID)
         .setUnique(false)
         .setTable(TABLE_NAME)
index f80a68b4139cd1c000cf92117357e0f8e2ce438a..436a9c572e0512895195b8e417074fc84a98503b 100644 (file)
@@ -53,7 +53,7 @@ public class MakeSomeColumnsOfUsersNotNullable extends DdlChange {
       .updateColumn(notNullableColumn("external_identity_provider", 100))
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(USERS_TABLE)
       .setName(USERS_LOGIN_INDEX)
       .addColumn(notNullableColumn("login", 255))
index 7b0fd679fc613fbc4539dc69fa314fb078a4293d..7ea968173baac30516a09d914e95847f2f7a621d 100644 (file)
@@ -40,10 +40,10 @@ public class PurgeDuplicateRulesParameters extends DataChange {
   private static final String REMOVE_DUPLICATE_ACTIVE_RULE_PARAMS_SQL_FOR_GENERIC =
     "DELETE FROM active_rule_parameters arp WHERE arp.rules_parameter_id NOT IN (SELECT * FROM (SELECT MIN(id) FROM rules_parameters GROUP BY rule_id, name) temp)";
 
-  private static final String REMOVE_DUPLICATE_RULES_PARAMS_SQL_FOR_MYSQL_MSSQL =
+  private static final String REMOVE_DUPLICATE_RULES_PARAMS_SQL_FOR_MSSQL =
     "DELETE p1 FROM rules_parameters as p1 WHERE id NOT IN (SELECT id FROM (SELECT MIN(id) as id FROM rules_parameters GROUP BY rule_id, name) temp)";
 
-  private static final String REMOVE_DUPLICATE_ACTIVE_RULE_PARAMS_SQL_FOR_MYSQL_MSSQL =
+  private static final String REMOVE_DUPLICATE_ACTIVE_RULE_PARAMS_SQL_FOR_MSSQL =
     "DELETE arp FROM active_rule_parameters as arp WHERE arp.rules_parameter_id NOT IN (SELECT id FROM (SELECT MIN(id) as id FROM rules_parameters GROUP BY rule_id, name) temp)";
 
   public PurgeDuplicateRulesParameters(Database db) {
@@ -56,9 +56,8 @@ public class PurgeDuplicateRulesParameters extends DataChange {
     String removeDuplicateActiveRuleParamsSql;
     switch (getDialect().getId()) {
       case "mssql":
-      case "mysql":
-        removeDuplicateRulesParamsSql = REMOVE_DUPLICATE_RULES_PARAMS_SQL_FOR_MYSQL_MSSQL;
-        removeDuplicateActiveRuleParamsSql = REMOVE_DUPLICATE_ACTIVE_RULE_PARAMS_SQL_FOR_MYSQL_MSSQL;
+        removeDuplicateRulesParamsSql = REMOVE_DUPLICATE_RULES_PARAMS_SQL_FOR_MSSQL;
+        removeDuplicateActiveRuleParamsSql = REMOVE_DUPLICATE_ACTIVE_RULE_PARAMS_SQL_FOR_MSSQL;
         break;
       default:
         removeDuplicateRulesParamsSql = REMOVE_DUPLICATE_RULES_PARAMS_SQL_FOR_GENERIC;
index 2c27fcf91ae60b75736bf1f5b2472cb517eb2204..e399cd041149be2b7b7f90aea8d0bc8a0f93c276 100644 (file)
@@ -56,7 +56,7 @@ public class PurgeOrphansForCE extends DataChange {
 
   private String buildDeleteFromQuery(String tableName, String alias, String whereClause) {
     String dialectId = getDialect().getId();
-    if ("mssql".equals(dialectId) || "mysql".equals(dialectId)) {
+    if ("mssql".equals(dialectId)) {
       return "delete " + alias + " from " + tableName + " as " + alias + " where " + whereClause;
     }
     return "delete from " + tableName + " " + alias + " where " + whereClause;
index 5bc44ec5e690d223735c80cf37c64e3a91abba8d..54fd5f4d061735be44af228ea7dccd2211ef2397 100644 (file)
@@ -54,7 +54,7 @@ public class RenameLoginToUserUuidOnTableUserTokens extends DdlChange {
         userUuidColumn)
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(USER_TOKENS_TABLE)
       .setName("user_tokens_user_uuid_name")
       .setUnique(true)
index b14b978e7ef68e3f42ab5cfb324d868b23d9eb64..1055e19f6662e8c363bd6d078bc65f78915e3cf2 100644 (file)
@@ -35,7 +35,7 @@ public class AddIndexOnOrganizationMembers extends DdlChange {
   @Override
   public void execute(Context context) throws SQLException {
     context.execute(
-      new CreateIndexBuilder(getDialect())
+      new CreateIndexBuilder()
         .setTable("organization_members")
         .setName("ix_org_members_on_user_id")
         .addColumn(IntegerColumnDef.newIntegerColumnDefBuilder()
index 15a778c7a7fe5c93bb58e2efa2bdc57b2e75aece..11163f36e5351fddaf255ed47d7b0ece91a64db3 100644 (file)
@@ -97,14 +97,14 @@ public class CreateProjectAlmBindingsTable extends DdlChange {
         .addColumn(UPDATED_AT_COLUMN)
         .build());
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .addColumn(ALM_ID_COLUMN)
         .addColumn(REPO_ID_COLUMN)
         .setUnique(true)
         .setTable(TABLE_NAME)
         .setName(TABLE_NAME + "_alm_repo")
         .build());
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .addColumn(PROJECT_UUID_COLUMN)
         .setUnique(true)
         .setTable(TABLE_NAME)
index fb81bcdade532099b13c99244591e0a6c0482f74..ff1f5a987894ff1c5e1b8f2004e0691a5da02e04 100644 (file)
@@ -28,7 +28,6 @@ import org.sonar.api.utils.System2;
 import org.sonar.core.util.UuidFactory;
 import org.sonar.db.Database;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.server.platform.db.migration.SupportsBlueGreen;
 import org.sonar.server.platform.db.migration.step.DataChange;
 import org.sonar.server.platform.db.migration.step.MassUpdate;
@@ -49,7 +48,7 @@ public class FixMissingQualityProfilesOnOrganizations extends DataChange {
     this.system2 = system2;
     this.uuidFactory = uuidFactory;
     this.configuration = configuration;
-    if (db.getDialect().getId().equals(MySql.ID) || db.getDialect().getId().equals(MsSql.ID)) {
+    if (db.getDialect().getId().equals(MsSql.ID)) {
       as = " AS ";
     } else {
       as = "";
index 083d10c451024871b66aa43c7ad980937f10f3d8..51ab5562ae1284119a82a4e7e73827ded31a6792 100644 (file)
@@ -54,13 +54,13 @@ abstract class AddTmpColumnsToCeTable extends DdlChange {
       .build());
 
     // create indexes
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(tableName)
       .setName(tableName + "_tmp_cpnt_uuid")
       .addColumn(COLUMN_TMP_COMPONENT_UUID)
       .setUnique(false)
       .build());
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(tableName)
       .setName(tableName + "_tmp_main_cpnt_uuid")
       .addColumn(COLUMN_TMP_MAIN_COMPONENT_UUID)
index 00fc09038406d123bd25d7907677f15f12c7b656..fcc299822ca9d8091db732d0b7980a6ca37ccd2c 100644 (file)
@@ -74,26 +74,26 @@ public class AddTmpLastKeyColumnsToCeActivity extends DdlChange {
       .build());
 
     // create indexes
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_NAME)
       .setName(TABLE_NAME + "_t_islast_key")
       .addColumn(COLUMN_TMP_IS_LAST_KEY)
       .setUnique(false)
       .build());
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_NAME)
       .setName(TABLE_NAME + "_t_islast")
       .addColumn(COLUMN_TMP_IS_LAST)
       .addColumn(COLUMN_STATUS)
       .setUnique(false)
       .build());
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_NAME)
       .setName(TABLE_NAME + "_t_main_islast_key")
       .addColumn(COLUMN_TMP_MAIN_IS_LAST_KEY)
       .setUnique(false)
       .build());
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_NAME)
       .setName(TABLE_NAME + "_t_main_islast")
       .addColumn(COLUMN_TMP_MAIN_IS_LAST)
index 6b4ea8485af415f3668f35ca18270656d151f8ca..4b87653fa0b01b46168beb80b2dbee9f70fd5817 100644 (file)
@@ -72,7 +72,7 @@ public class CreateCeTaskMessage extends DdlChange {
         .addColumn(COLUMN_CREATED_AT)
         .build());
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName(TABLE_NAME + "_task")
         .addColumn(COLUMN_TASK_UUID)
index 811ec3285f321d0132dd8354e7dfb3580e4c722e..af2a9911bd5c087b8c639cb9c5699b56268ed0ea 100644 (file)
@@ -75,13 +75,13 @@ public abstract class FinalizeMainComponentUuidColumnsToCeTable extends DdlChang
       .build());
 
     // recreate indexes on renamed columns
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(tableName)
       .setName(tableName + "_component")
       .addColumn(COLUMN_COMPONENT_UUID)
       .setUnique(false)
       .build());
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(tableName)
       .setName(tableName + "_main_component")
       .addColumn(COLUMN_MAIN_COMPONENT_UUID)
index a0d98086eed0901f3235739f31c3f021fc6db4c8..e93c562ff6ed94807b974ba34e1a5ca1a5c79b01 100644 (file)
@@ -116,26 +116,26 @@ public class FinalizeMainLastKeyColumnsToCeActivity extends DdlChange {
       .build());
 
     // create indexes
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_NAME)
       .setName(TABLE_NAME + "_islast_key")
       .addColumn(COLUMN_IS_LAST_KEY)
       .setUnique(false)
       .build());
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_NAME)
       .setName(TABLE_NAME + "_islast")
       .addColumn(COLUMN_IS_LAST)
       .addColumn(COLUMN_STATUS)
       .setUnique(false)
       .build());
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_NAME)
       .setName(TABLE_NAME + "_main_islast_key")
       .addColumn(COLUMN_MAIN_IS_LAST_KEY)
       .setUnique(false)
       .build());
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_NAME)
       .setName(TABLE_NAME + "_main_islast")
       .addColumn(COLUMN_MAIN_IS_LAST)
index 8fd31c59d79d5d32ce02314b25b7926983685576..ee56f735e99e33c0790c446e192bfe17e3be88d7 100644 (file)
@@ -107,7 +107,7 @@ public class AddEventComponentChanges extends DdlChange {
         .addColumn(COLUMN_CREATED_AT)
         .build());
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName(TABLE_NAME + "_unique")
         .addColumn(COLUMN_EVENT_UUID)
@@ -115,13 +115,13 @@ public class AddEventComponentChanges extends DdlChange {
         .addColumn(COLUMN_COMPONENT_UUID)
         .setUnique(true)
         .build());
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName("event_cpnt_changes_cpnt")
         .addColumn(COLUMN_EVENT_COMPONENT_UUID)
         .setUnique(false)
         .build());
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .setTable(TABLE_NAME)
         .setName("event_cpnt_changes_analysis")
         .addColumn(COLUMN_EVENT_ANALYSIS_UUID)
index f2d2487a4e5b31e7744df343ec82e3360f996d74..3ed05df6886cbc5715ce06c6d098d64c3fe85610 100644 (file)
@@ -48,7 +48,7 @@ public class AddUserExternalIdColumnInAlmAppInstall extends DdlChange {
       .build();
     context.execute(new AddColumnsBuilder(getDialect(), ALM_APP_INSTALLS_TABLE)
       .addColumn(userExternalIdDef).build());
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(ALM_APP_INSTALLS_TABLE)
       .addColumn(userExternalIdDef)
       .setUnique(false)
index 2f97745db0950f222b9d3f032be0bcef51379dda..8c7421e2b8865d50011df5317e526d6227d6a1e2 100644 (file)
@@ -90,14 +90,14 @@ public class CreateOrganizationsAlmBindingsTable extends DdlChange {
         .addColumn(CREATED_AT_COLUMN)
         .build());
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .addColumn(ORGANIZATION_UUID_COLUMN)
         .setUnique(true)
         .setTable(TABLE_NAME)
         .setName("org_alm_bindings_org")
         .build());
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .addColumn(ALM_APP_INSTALL_UUID_COLUMN)
         .setUnique(true)
         .setTable(TABLE_NAME)
index ab9e77652ff0e20c297bed4525a15dab8746cfdc..cb01b4464d25edf5878c4e758c1ff651060c3e55 100644 (file)
@@ -38,7 +38,7 @@ public class AddUniqueIndexInUserPropertiesTable extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .addColumn(newVarcharColumnDefBuilder()
         .setColumnName("user_uuid")
         .setIsNullable(false)
index ee456d71392ed39587f963c0d845ab8b0bdb676b..61e30223affcf9ed7835c49d33d29fbaca5ab40c 100644 (file)
@@ -37,7 +37,7 @@ public class AddUniqueIndexOnExternalLoginInUsersTable extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable("users")
       .setName("uniq_external_login")
       .setUnique(true)
index 8e87f66b49f61b2a5f189e1f170a55e84d31b9f5..6ace29f51798d04924bfc0cc6f239bc45630d4e5 100644 (file)
@@ -48,7 +48,7 @@ public class DropDataTypeFromFileSources extends DdlChange {
     context.execute(new DropColumnsBuilder(getDialect(), TABLE_NAME, "data_type")
       .build());
 
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .setTable(TABLE_NAME)
       .setName("file_sources_file_uuid")
       .setUnique(true)
index 33089c0e39e22f29deb9a29e4035a13459d025b0..e983ec7c4e96df9327ed6c4dd7aab5233646f29c 100644 (file)
@@ -36,7 +36,7 @@ public class AddIndexToOrgQProfileParentUuid extends DdlChange {
 
   @Override
   public void execute(Context context) throws SQLException {
-    context.execute(new CreateIndexBuilder(getDialect())
+    context.execute(new CreateIndexBuilder()
       .addColumn(newVarcharColumnDefBuilder()
         .setColumnName("parent_uuid")
         .setLimit(255)
index 872ede4d5f0c924f093771b878f4d971545c6d42..bd2c70a069ac9b88061c5e2346f5598f6df5cce8 100644 (file)
@@ -88,7 +88,7 @@ public class CreateInternalComponentPropertiesTable  extends DdlChange {
         .addColumn(CREATED_AT_COLUMN)
         .build());
 
-      context.execute(new CreateIndexBuilder(getDialect())
+      context.execute(new CreateIndexBuilder()
         .addColumn(COMPONENT_UUID_COLUMN)
         .addColumn(KEE_COLUMN)
         .setUnique(true)
index 7a90b88c91fc36562e7b63145e631e6997d821b1..f5cb4df8ac4abe3a80cee1520d4d110a4856fbfe 100644 (file)
@@ -29,7 +29,6 @@ import org.sonar.db.Database;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -78,11 +77,6 @@ public class DatabaseCharsetCheckerTest {
     assertThat(underTest.getHandler(new H2())).isNull();
   }
 
-  @Test
-  public void getHandler_returns_MysqlCharsetHandler_if_mysql() {
-    assertThat(underTest.getHandler(new MySql())).isInstanceOf(MysqlCharsetHandler.class);
-  }
-
   @Test
   public void getHandler_returns_MssqlCharsetHandler_if_mssql() {
     assertThat(underTest.getHandler(new MsSql())).isInstanceOf(MssqlCharsetHandler.class);
diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/charset/MysqlCharsetHandlerTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/charset/MysqlCharsetHandlerTest.java
deleted file mode 100644 (file)
index 0489960..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2019 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.charset;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-import static java.util.Arrays.asList;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-
-public class MysqlCharsetHandlerTest {
-
-  private static final String TABLE_ISSUES = "issues";
-  private static final String TABLE_PROJECTS = "projects";
-  private static final String COLUMN_KEE = "kee";
-  private static final String COLUMN_NAME = "name";
-
-  @Rule
-  public ExpectedException expectedException = ExpectedException.none();
-
-  private SqlExecutor sqlExecutor = mock(SqlExecutor.class);
-  private Connection connection = mock(Connection.class);
-  private MysqlCharsetHandler underTest = new MysqlCharsetHandler(sqlExecutor);
-
-  @Test
-  public void upgrade_verifies_that_columns_are_utf8_and_case_sensitive() throws Exception {
-    answerColumnDef(
-      new ColumnDef(TABLE_ISSUES, COLUMN_KEE, "utf8", "utf8_bin", "varchar", 10, false),
-      new ColumnDef(TABLE_PROJECTS, COLUMN_NAME, "utf8", "utf8_bin", "varchar", 10, false));
-
-    // all columns are utf8
-    underTest.handle(connection, DatabaseCharsetChecker.State.UPGRADE);
-  }
-
-  @Test
-  public void fresh_install_does_not_verify_anything() throws Exception {
-    underTest.handle(connection, DatabaseCharsetChecker.State.FRESH_INSTALL);
-    verifyZeroInteractions(sqlExecutor);
-  }
-
-  @Test
-  public void regular_startup_does_not_verify_anything() throws Exception {
-    underTest.handle(connection, DatabaseCharsetChecker.State.STARTUP);
-    verifyZeroInteractions(sqlExecutor);
-  }
-
-  @Test
-  public void repair_case_insensitive_column() throws Exception {
-    answerColumnDef(
-      new ColumnDef(TABLE_ISSUES, COLUMN_KEE, "big5_chinese", "big5_chinese_ci", "varchar", 10, false),
-      new ColumnDef(TABLE_PROJECTS, COLUMN_NAME, "latin1", "latin1_swedish_ci", "varchar", 10, false));
-
-    underTest.handle(connection, DatabaseCharsetChecker.State.UPGRADE);
-
-    verify(sqlExecutor).executeDdl(connection, "ALTER TABLE issues MODIFY kee varchar(10) CHARACTER SET 'big5_chinese' COLLATE 'big5_bin' NOT NULL");
-    verify(sqlExecutor).executeDdl(connection, "ALTER TABLE projects MODIFY name varchar(10) CHARACTER SET 'latin1' COLLATE 'latin1_bin' NOT NULL");
-  }
-
-  @Test
-  public void size_should_be_ignored_on_longtext_column() throws Exception {
-    answerColumnDef(
-      new ColumnDef(TABLE_ISSUES, COLUMN_KEE, "latin1", "latin1_german1_ci", "longtext", 4_294_967_295L, false));
-
-    underTest.handle(connection, DatabaseCharsetChecker.State.UPGRADE);
-
-    verify(sqlExecutor).executeDdl(connection, "ALTER TABLE " + TABLE_ISSUES + " MODIFY " + COLUMN_KEE + " longtext CHARACTER SET 'latin1' COLLATE 'latin1_bin' NOT NULL");
-  }
-
-  private void answerColumnDef(ColumnDef... columnDefs) throws SQLException {
-    when(sqlExecutor.select(any(Connection.class), anyString(), eq(ColumnDef.ColumnDefRowConverter.INSTANCE)))
-      .thenReturn(asList(columnDefs));
-  }
-}
index 0f1f1dbabf1013c6ef4839807ba9324f5ee66dc3..3908fc7420a5a98dbbd4d92d37c13f4f57612576 100644 (file)
@@ -24,7 +24,6 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -66,7 +65,6 @@ public class BigIntegerColumnDefTest {
     assertThat(def.generateSqlType(new H2())).isEqualTo("BIGINT");
     assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("BIGINT");
     assertThat(def.generateSqlType(new MsSql())).isEqualTo("BIGINT");
-    assertThat(def.generateSqlType(new MySql())).isEqualTo("BIGINT");
     assertThat(def.generateSqlType(new Oracle())).isEqualTo("NUMBER (38)");
   }
 
index 0c0868c512f62ca089eeeb292f0460281d9a1f18..97485e3f7b790bec5f9d274768a22f15b47f6525 100644 (file)
@@ -25,7 +25,6 @@ import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -80,11 +79,6 @@ public class BlobColumnDefTest {
     assertThat(underTest.generateSqlType(new MsSql())).isEqualTo("VARBINARY(MAX)");
   }
 
-  @Test
-  public void generateSqlType_for_MySql() {
-    assertThat(underTest.generateSqlType(new MySql())).isEqualTo("LONGBLOB");
-  }
-
   @Test
   public void generateSqlType_for_Oracle() {
     assertThat(underTest.generateSqlType(new Oracle())).isEqualTo("BLOB");
index afaf7e431e0e3f310c7d9b618cf05dc314338a83..9973211f4815efb8fbd6e3dd9022a41f1ca5dd1a 100644 (file)
@@ -24,7 +24,6 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -70,7 +69,6 @@ public class BooleanColumnDefTest {
     assertThat(def.generateSqlType(new H2())).isEqualTo("BOOLEAN");
     assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("BOOLEAN");
     assertThat(def.generateSqlType(new MsSql())).isEqualTo("BIT");
-    assertThat(def.generateSqlType(new MySql())).isEqualTo("TINYINT(1)");
     assertThat(def.generateSqlType(new Oracle())).isEqualTo("NUMBER(1)");
   }
 
index 675649528f39cf22ca97d4cc3b7c145999afa04a..19a5b944beccae1257cf9389fabcf83d5b327b52 100644 (file)
@@ -24,7 +24,6 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -67,11 +66,6 @@ public class ClobColumnDefTest {
     assertThat(underTest.generateSqlType(new H2())).isEqualTo("CLOB(2147483647)");
   }
 
-  @Test
-  public void generate_sql_type_on_mysql() {
-    assertThat(underTest.generateSqlType(new MySql())).isEqualTo("LONGTEXT");
-  }
-
   @Test
   public void generate_sql_type_on_oracle() {
     assertThat(underTest.generateSqlType(new Oracle())).isEqualTo("CLOB");
index 1518d3c8ac034fd34c88ef7cf40b8dca090d2eb7..81536d6cab99e0ee419a9cf4a2c61397309c33ea 100644 (file)
@@ -25,7 +25,6 @@ import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -118,7 +117,6 @@ public class DecimalColumnDefTest {
     assertThat(def.generateSqlType(new H2())).isEqualTo("DOUBLE");
     assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("NUMERIC (30,20)");
     assertThat(def.generateSqlType(new MsSql())).isEqualTo("DECIMAL (30,20)");
-    assertThat(def.generateSqlType(new MySql())).isEqualTo("DECIMAL (30,20)");
     assertThat(def.generateSqlType(new Oracle())).isEqualTo("NUMERIC (30,20)");
   }
 
index 2f2e4ae149164560dc274a2c17e1df474dc88fc4..fc273794ff16da17889ad2b0d76576963ce5f63e 100644 (file)
@@ -25,7 +25,6 @@ import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -90,11 +89,6 @@ public class IntegerColumnDefTest {
     assertThat(underTest.generateSqlType(new MsSql())).isEqualTo("INT");
   }
 
-  @Test
-  public void generateSqlType_for_MySql() {
-    assertThat(underTest.generateSqlType(new MySql())).isEqualTo("INTEGER");
-  }
-
   @Test
   public void generateSqlType_for_Oracle() {
     assertThat(underTest.generateSqlType(new Oracle())).isEqualTo("NUMBER(38,0)");
index 721a8553937596c2c5384c6903ee283ab336be52..3c625fcb2a5722f30c1282b42ed2f4a0726cacd8 100644 (file)
@@ -24,7 +24,6 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -69,7 +68,6 @@ public class TimestampColumnDefTest {
     assertThat(def.generateSqlType(new H2())).isEqualTo("TIMESTAMP");
     assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("TIMESTAMP");
     assertThat(def.generateSqlType(new MsSql())).isEqualTo("DATETIME");
-    assertThat(def.generateSqlType(new MySql())).isEqualTo("DATETIME");
     assertThat(def.generateSqlType(new Oracle())).isEqualTo("TIMESTAMP (6)");
   }
 
index a55a9a6795e14444ba17100fa338bcc431445141..8c21b9ba190f5db4098fc0c48a27277a7007dff1 100644 (file)
@@ -25,7 +25,6 @@ import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -60,7 +59,6 @@ public class TinyIntColumnDefTest {
     assertThat(def.generateSqlType(new H2())).isEqualTo("TINYINT");
     assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("SMALLINT");
     assertThat(def.generateSqlType(new MsSql())).isEqualTo("TINYINT");
-    assertThat(def.generateSqlType(new MySql())).isEqualTo("TINYINT(2)");
     assertThat(def.generateSqlType(new Oracle())).isEqualTo("NUMBER(3)");
   }
 
index a29bc11b5d15a8e1150b95b6927191f70bbccd14..0907a2e2c890a21af0bf9c7b033f8ce3f5533c6b 100644 (file)
@@ -24,7 +24,6 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -73,7 +72,6 @@ public class VarcharColumnDefTest {
 
     assertThat(def.generateSqlType(new H2())).isEqualTo("VARCHAR (10)");
     assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("VARCHAR (10)");
-    assertThat(def.generateSqlType(new MySql())).isEqualTo("VARCHAR (10)");
     assertThat(def.generateSqlType(new MsSql())).isEqualTo("NVARCHAR (10)");
     assertThat(def.generateSqlType(new Oracle())).isEqualTo("VARCHAR2 (10 CHAR)");
   }
index 9e9ab5a831cc237375a4ff4c7813eb09d29433c3..604acdfa1835244a97cfe8601b0320c5de7a16c8 100644 (file)
@@ -25,7 +25,6 @@ import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 import org.sonar.server.platform.db.migration.def.BigIntegerColumnDef;
@@ -48,12 +47,6 @@ public class AddColumnsBuilderTest {
       .isEqualTo("ALTER TABLE issues ADD (date_in_ms BIGINT NULL, name VARCHAR (10) NOT NULL, col_with_default BOOLEAN DEFAULT false NOT NULL, varchar_col_with_default VARCHAR (3) DEFAULT 'foo' NOT NULL)");
   }
 
-  @Test
-  public void add_columns_on_mysql() {
-    assertThat(createSampleBuilder(new MySql()).build())
-      .isEqualTo("ALTER TABLE issues ADD (date_in_ms BIGINT NULL, name VARCHAR (10) NOT NULL, col_with_default TINYINT(1) DEFAULT false NOT NULL, varchar_col_with_default VARCHAR (3) DEFAULT 'foo' NOT NULL)");
-  }
-
   @Test
   public void add_columns_on_oracle() {
     assertThat(createSampleBuilder(new Oracle()).build())
index 69549c8818f51bab02b34ef72853479163ec4a59..449b24b38a0fa6cb0992d35333fe4101c950fea4 100644 (file)
@@ -25,7 +25,6 @@ import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 import org.sonar.server.platform.db.migration.def.BooleanColumnDef;
@@ -83,18 +82,6 @@ public class AlterColumnsBuilderTest {
       .containsOnly("ALTER TABLE issues ALTER COLUMN name TYPE VARCHAR (10), ALTER COLUMN name SET NOT NULL");
   }
 
-  @Test
-  public void update_columns_on_mysql() {
-    assertThat(createSampleBuilder(new MySql()).build())
-      .containsOnly("ALTER TABLE issues MODIFY COLUMN value DECIMAL (30,20) NULL, MODIFY COLUMN name VARCHAR (10) NULL");
-  }
-
-  @Test
-  public void update_not_nullable_column_on_mysql() {
-    assertThat(createNotNullableBuilder(new MySql()).build())
-      .containsOnly("ALTER TABLE issues MODIFY COLUMN name VARCHAR (10) NOT NULL");
-  }
-
   @Test
   public void update_columns_on_oracle() {
     assertThat(createSampleBuilder(new Oracle()).build())
index e0379d33e8f80bf7626c2c664e24771f15d6a0aa..2a4b74655319704d085cb38b5a3e104f3d752ae9 100644 (file)
  */
 package org.sonar.server.platform.db.migration.sql;
 
-import java.util.Arrays;
 import java.util.List;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.sonar.db.dialect.Dialect;
-import org.sonar.db.dialect.H2;
-import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
-import org.sonar.db.dialect.Oracle;
-import org.sonar.db.dialect.PostgreSql;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.newVarcharColumnDefBuilder;
@@ -41,7 +34,7 @@ public class CreateIndexBuilderTest {
 
   @Test
   public void create_index_on_single_column() {
-    verifySql(new CreateIndexBuilder(new H2())
+    verifySql(new CreateIndexBuilder()
       .setTable("issues")
       .setName("issues_key")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build()),
@@ -50,7 +43,7 @@ public class CreateIndexBuilderTest {
 
   @Test
   public void create_unique_index_on_single_column() {
-    verifySql(new CreateIndexBuilder(new H2())
+    verifySql(new CreateIndexBuilder()
       .setTable("issues")
       .setName("issues_key")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build())
@@ -60,7 +53,7 @@ public class CreateIndexBuilderTest {
 
   @Test
   public void create_index_on_multiple_columns() {
-    verifySql(new CreateIndexBuilder(new H2())
+    verifySql(new CreateIndexBuilder()
       .setTable("rules")
       .setName("rules_key")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("repository").setLimit(10).build())
@@ -70,7 +63,7 @@ public class CreateIndexBuilderTest {
 
   @Test
   public void create_unique_index_on_multiple_columns() {
-    verifySql(new CreateIndexBuilder(new H2())
+    verifySql(new CreateIndexBuilder()
       .setTable("rules")
       .setName("rules_key")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("repository").setLimit(10).build())
@@ -80,22 +73,12 @@ public class CreateIndexBuilderTest {
   }
 
   @Test
-  public void index_length_is_not_specified_on_big_varchar_columns_if_not_mysql() {
-    Arrays.<Dialect>asList(new H2(), new MsSql(), new PostgreSql(), new Oracle())
-      .forEach(dialect -> verifySql(new CreateIndexBuilder(dialect)
-        .setTable("issues")
-        .setName("issues_key")
-        .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(4000).build()),
-        "CREATE INDEX issues_key ON issues (kee)"));
-  }
-
-  @Test
-  public void index_length_is_limited_to_255_on_big_varchar_columns_if_mysql() {
-    verifySql(new CreateIndexBuilder(new MySql())
+  public void index_length_is_not_specified_on_big_varchar_columns() {
+    verifySql(new CreateIndexBuilder()
       .setTable("issues")
       .setName("issues_key")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(4000).build()),
-      "CREATE INDEX issues_key ON issues (kee(255))");
+      "CREATE INDEX issues_key ON issues (kee)");
   }
 
   @Test
@@ -103,7 +86,7 @@ public class CreateIndexBuilderTest {
     expectedException.expect(NullPointerException.class);
     expectedException.expectMessage("Table name cannot be null");
 
-    new CreateIndexBuilder(new H2())
+    new CreateIndexBuilder()
       .setName("issues_key")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build())
       .build();
@@ -114,7 +97,7 @@ public class CreateIndexBuilderTest {
     expectedException.expect(NullPointerException.class);
     expectedException.expectMessage("Index name cannot be null");
 
-    new CreateIndexBuilder(new H2())
+    new CreateIndexBuilder()
       .setTable("issues")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build())
       .build();
@@ -125,7 +108,7 @@ public class CreateIndexBuilderTest {
     expectedException.expect(IllegalArgumentException.class);
     expectedException.expectMessage("at least one column must be specified");
 
-    new CreateIndexBuilder(new H2())
+    new CreateIndexBuilder()
       .setTable("issues")
       .setName("issues_key")
       .build();
@@ -136,7 +119,7 @@ public class CreateIndexBuilderTest {
     expectedException.expect(IllegalArgumentException.class);
     expectedException.expectMessage("Table name must be lower case and contain only alphanumeric chars or '_', got '(not valid)'");
 
-    new CreateIndexBuilder(new H2())
+    new CreateIndexBuilder()
       .setTable("(not valid)")
       .setName("issues_key")
       .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build())
@@ -148,7 +131,7 @@ public class CreateIndexBuilderTest {
     expectedException.expect(NullPointerException.class);
     expectedException.expectMessage("Column cannot be null");
 
-    new CreateIndexBuilder(new H2())
+    new CreateIndexBuilder()
       .setTable("issues")
       .setName("issues_key")
       .addColumn(null)
index 8390487a7b7c88b79741b159f1e755961ec44331..e60bfa982d9ff996c81f2baef2d725848208936b 100644 (file)
@@ -31,7 +31,6 @@ import org.junit.runner.RunWith;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 import org.sonar.server.platform.db.migration.def.ColumnDef;
@@ -55,8 +54,7 @@ public class CreateTableBuilderTest {
   private static final Oracle ORACLE = new Oracle();
   private static final PostgreSql POSTGRESQL = new PostgreSql();
   private static final MsSql MS_SQL = new MsSql();
-  private static final MySql MY_SQL = new MySql();
-  private static final Dialect[] ALL_DIALECTS = {H2, MY_SQL, MS_SQL, POSTGRESQL, ORACLE};
+  private static final Dialect[] ALL_DIALECTS = {H2, MS_SQL, POSTGRESQL, ORACLE};
   private static final String TABLE_NAME = "table_42";
 
   @Rule
@@ -126,7 +124,7 @@ public class CreateTableBuilderTest {
 
   @DataProvider
   public static Object[][] digitCharsDataProvider() {
-    return new Object[][] {
+    return new Object[][]{
       {'0'},
       {'1'},
       {'2'},
@@ -291,27 +289,6 @@ public class CreateTableBuilderTest {
         "CREATE TABLE table_42 (id INTEGER NOT NULL AUTO_INCREMENT (1,1), CONSTRAINT pk_table_42 PRIMARY KEY (id))");
   }
 
-  @Test
-  public void build_adds_AUTO_INCREMENT_clause_on_MySql() {
-    List<String> stmts = new CreateTableBuilder(MY_SQL, TABLE_NAME)
-      .addPkColumn(newIntegerColumnDefBuilder().setColumnName("id").setIsNullable(false).build(), AUTO_INCREMENT)
-      .build();
-    assertThat(stmts).hasSize(1);
-    assertThat(stmts.iterator().next())
-      .startsWith("CREATE TABLE table_42 (id INTEGER NOT NULL AUTO_INCREMENT, CONSTRAINT pk_table_42 PRIMARY KEY (id))");
-  }
-
-  @Test
-  public void builds_adds_hardcoded_collation_clause_on_MySql() {
-    List<String> stmts = new CreateTableBuilder(MY_SQL, TABLE_NAME)
-      .addPkColumn(newIntegerColumnDefBuilder().setColumnName("id").setIsNullable(false).build(), AUTO_INCREMENT)
-      .build();
-    assertThat(stmts).hasSize(1);
-    assertThat(stmts.iterator().next())
-      .endsWith(" ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin");
-
-  }
-
   @Test
   public void withPkConstraintName_throws_NPE_if_name_is_null() {
     expectedException.expect(NullPointerException.class);
@@ -521,11 +498,6 @@ public class CreateTableBuilderTest {
     verifyDefaultClauseOnVarcharColumn(MS_SQL, "CREATE TABLE table_42 (status NVARCHAR (1) DEFAULT 'P' NOT NULL)");
   }
 
-  @Test
-  public void build_adds_DEFAULT_clause_on_varchar_column_on_MySQL() {
-    verifyDefaultClauseOnVarcharColumn(MY_SQL, "CREATE TABLE table_42 (status VARCHAR (1) DEFAULT 'P' NOT NULL) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin");
-  }
-
   @Test
   public void build_adds_DEFAULT_clause_on_varchar_column_on_Oracle() {
     verifyDefaultClauseOnVarcharColumn(ORACLE, "CREATE TABLE table_42 (status VARCHAR2 (1 CHAR) DEFAULT 'P' NOT NULL)");
@@ -553,11 +525,6 @@ public class CreateTableBuilderTest {
     verifyDefaultClauseOnBooleanColumn(MS_SQL, "CREATE TABLE table_42 (enabled BIT DEFAULT 1 NOT NULL)");
   }
 
-  @Test
-  public void build_adds_DEFAULT_clause_on_boolean_column_on_MySQL() {
-    verifyDefaultClauseOnBooleanColumn(MY_SQL, "CREATE TABLE table_42 (enabled TINYINT(1) DEFAULT true NOT NULL) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin");
-  }
-
   @Test
   public void build_adds_DEFAULT_clause_on_boolean_column_on_Oracle() {
     verifyDefaultClauseOnBooleanColumn(ORACLE, "CREATE TABLE table_42 (enabled NUMBER(1) DEFAULT 1 NOT NULL)");
index 735ad17af240533e39e503a2ca56e18bc841f785..ec719b1100d0bdefa66ca4d51659694f16ad936e 100644 (file)
@@ -22,7 +22,6 @@ package org.sonar.server.platform.db.migration.sql;
 import org.junit.Test;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -30,12 +29,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 public class DropColumnsBuilderTest {
 
-  @Test
-  public void drop_columns_on_mysql() {
-    assertThat(new DropColumnsBuilder(new MySql(), "issues", "date_in_ms", "name").build())
-      .containsOnly("ALTER TABLE issues DROP COLUMN date_in_ms, DROP COLUMN name");
-  }
-
   @Test
   public void drop_columns_on_oracle() {
     assertThat(new DropColumnsBuilder(new Oracle(), "issues", "date_in_ms", "name").build())
index 671c368393f08876e9c839cf2d8fa7c8c459db72..c8d36d1101429b8c8d620fe20e1354d81d35919e 100644 (file)
@@ -26,7 +26,6 @@ import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -41,7 +40,6 @@ public class DropIndexBuilderTest {
   public void drop_index_in_table() {
     verifySql(new H2(), "DROP INDEX IF EXISTS issues_key");
     verifySql(new MsSql(), "DROP INDEX issues_key ON issues");
-    verifySql(new MySql(), "DROP INDEX issues_key ON issues");
     verifySql(new Oracle(), "DROP INDEX issues_key");
     verifySql(new PostgreSql(), "DROP INDEX IF EXISTS issues_key");
   }
index cf79ebaca51ce0f37b72ae902185b15c0c8cdc1d..5f5ad4dfa644137e662bbb4973249b5bce8d0b78 100644 (file)
@@ -24,7 +24,6 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -35,12 +34,6 @@ public class DropTableBuilderTest {
   @Rule
   public ExpectedException expectedException = ExpectedException.none();
 
-  @Test
-  public void drop_tables_on_mysql() {
-    assertThat(new DropTableBuilder(new MySql(), "issues")
-      .build()).containsOnly("drop table if exists issues");
-  }
-
   @Test
   public void drop_tables_on_postgresql() {
     assertThat(new DropTableBuilder(new PostgreSql(), "issues")
index 1e24959ae46b4cbd87386e238e402b33a4b1d428..10e357a8901440abbede45fc84959507413b1327 100644 (file)
@@ -33,7 +33,6 @@ import org.junit.runner.RunWith;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 import org.sonar.server.platform.db.migration.def.BigIntegerColumnDef;
@@ -61,7 +60,6 @@ public class RenameColumnsBuilderTest {
   public static final DatabaseAndResult[] DATABASES = {
     new DatabaseAndResult(new H2(), "ALTER TABLE ${table_name} ALTER COLUMN ${old_column_name} RENAME TO ${new_column_name}"),
     new DatabaseAndResult(new PostgreSql(), "ALTER TABLE ${table_name} RENAME COLUMN ${old_column_name} TO ${new_column_name}"),
-    new DatabaseAndResult(new MySql(), "ALTER TABLE ${table_name} CHANGE ${old_column_name} ${new_column_name} ${column_def}"),
     new DatabaseAndResult(new MsSql(), "EXEC sp_rename '${table_name}.${old_column_name}', '${new_column_name}', 'COLUMN'"),
     new DatabaseAndResult(new Oracle(), "ALTER TABLE ${table_name} RENAME COLUMN ${old_column_name} TO ${new_column_name}")
   };
index 1dcdb9c7a41fe41987136a9f7c425ffc8d805547..fc536d95e7dca3265473b4917447231477253058 100644 (file)
@@ -26,7 +26,6 @@ import org.junit.rules.ExpectedException;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 
@@ -47,11 +46,6 @@ public class RenameTableBuilderTest {
     verifySql(new MsSql(), "EXEC sp_rename 'foo', 'bar'");
   }
 
-  @Test
-  public void rename_table_on_mysql() {
-    verifySql(new MySql(), "ALTER TABLE foo RENAME TO bar");
-  }
-
   @Test
   public void rename_table_on_oracle() {
     verifySql(new Oracle(),
index 64cbd61d25255e689036e788b394343d41e1c451..ef44fc749dc6037e565a5bc7b9daae0adc1ec714 100644 (file)
@@ -23,7 +23,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.sonar.db.Database;
-import org.sonar.db.dialect.MySql;
+import org.sonar.db.dialect.MsSql;
 import org.sonar.server.platform.db.migration.step.DdlChange;
 
 import static java.util.Arrays.asList;
@@ -40,9 +40,9 @@ public class DropIndexDuplicationsIndexSidFromDuplicationsIndexTest {
   @Before
   public void setUp() {
     // Some databases have unique names of indexes, so table name is not declared
-    // when dropping an index ("drop index <index name>"). Because of that MySQL is
+    // when dropping an index ("drop index <index name>"). Because of that SQLServer is
     // used in the test so that the table name can also be verified
-    when(db.getDialect()).thenReturn(new MySql());
+    when(db.getDialect()).thenReturn(new MsSql());
   }
 
   @Test
index 83348e686e8dd48790fae9d669267856067e6a2b..e39fa82beeac951f52031466a0ca8d270c264629 100644 (file)
@@ -23,7 +23,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.sonar.db.Database;
-import org.sonar.db.dialect.MySql;
+import org.sonar.db.dialect.MsSql;
 import org.sonar.server.platform.db.migration.step.DdlChange;
 
 import static java.util.Arrays.asList;
@@ -40,9 +40,9 @@ public class DropIndexProjectsRootIdFromProjectsTest {
   @Before
   public void setUp() {
     // Some databases have unique names of indexes, so table name is not declared
-    // when dropping an index ("drop index <index name>"). Because of that MySQL is
+    // when dropping an index ("drop index <index name>"). Because of that SQLServer is
     // used in the test so that the table name can also be verified
-    when(db.getDialect()).thenReturn(new MySql());
+    when(db.getDialect()).thenReturn(new MsSql());
   }
 
   @Test
index ef43cb70dbbef1b7b2c46711b22eeedf97b4bd28..97b7a40dc27b373244c03920676f2856ff17e278 100644 (file)
@@ -23,7 +23,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.sonar.db.Database;
-import org.sonar.db.dialect.MySql;
+import org.sonar.db.dialect.MsSql;
 import org.sonar.server.platform.db.migration.step.DdlChange;
 
 import static java.util.Arrays.asList;
@@ -40,9 +40,9 @@ public class DropIndexProjectsUuidFromProjectsTest {
   @Before
   public void setUp() {
     // Some databases have unique names of indexes, so table name is not declared
-    // when dropping an index ("drop index <index name>"). Because of that MySQL is
+    // when dropping an index ("drop index <index name>"). Because of that SQLServer is
     // used in the test so that the table name can also be verified
-    when(db.getDialect()).thenReturn(new MySql());
+    when(db.getDialect()).thenReturn(new MsSql());
   }
 
   @Test
index d29c8c70cfc85c48601d45a923334565c1e4c7d3..feb275607b049afc62a0d6a545be322eca323b29 100644 (file)
@@ -23,7 +23,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.sonar.db.Database;
-import org.sonar.db.dialect.MySql;
+import org.sonar.db.dialect.MsSql;
 import org.sonar.server.platform.db.migration.step.DdlChange;
 
 import static java.util.Arrays.asList;
@@ -40,9 +40,9 @@ public class DropResourceIndexRidFromResourceIndexTest {
   @Before
   public void setUp() {
     // Some databases have unique names of indexes, so table name is not declared
-    // when dropping an index ("drop index <index name>"). Because of that MySQL is
+    // when dropping an index ("drop index <index name>"). Because of that SQLServer is
     // used in the test so that the table name can also be verified
-    when(db.getDialect()).thenReturn(new MySql());
+    when(db.getDialect()).thenReturn(new MsSql());
   }
 
   @Test
index 0d22e032734ee8360f941ac14a9e675fa98648d7..daa9195bd3b9e64d3c4e0fddbc24910dd44ecbc8 100644 (file)
@@ -23,7 +23,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.sonar.db.Database;
-import org.sonar.db.dialect.MySql;
+import org.sonar.db.dialect.MsSql;
 import org.sonar.server.platform.db.migration.step.DdlChange;
 
 import static java.util.Arrays.asList;
@@ -41,9 +41,9 @@ public class DropSnapshotProjectIdFromSnapshotsTest {
   @Before
   public void setUp() {
     // Some databases have unique names of indexes, so table name is not declared
-    // when dropping an index ("drop index <index name>"). Because of that MySQL is
+    // when dropping an index ("drop index <index name>"). Because of that SQLServer is
     // used in the test so that the table name can also be verified
-    when(db.getDialect()).thenReturn(new MySql());
+    when(db.getDialect()).thenReturn(new MsSql());
   }
 
   @Test
index 525f0f3102f407057b020709fd7cc718ec263730..57e238327a3c6a652ec87ae1500f37d237b3b4d2 100644 (file)
@@ -23,7 +23,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.sonar.db.Database;
-import org.sonar.db.dialect.MySql;
+import org.sonar.db.dialect.MsSql;
 import org.sonar.server.platform.db.migration.step.DdlChange;
 
 import static java.util.Arrays.asList;
@@ -40,9 +40,9 @@ public class DropTemporaryIndicesOf1210Test {
   @Before
   public void setUp() {
     // Some databases have unique names of indexes, so table name is not declared
-    // when dropping an index ("drop index <index name>"). Because of that MySQL is
+    // when dropping an index ("drop index <index name>"). Because of that SQLServer is
     // used in the test so that the table name can also be verified
-    when(db.getDialect()).thenReturn(new MySql());
+    when(db.getDialect()).thenReturn(new MsSql());
   }
 
   @Test
index 94c39705510c7220cc614b7dcaf4298447ea985d..d6ce081b1624edf7c4d258132afbfb3984ea525e 100644 (file)
@@ -161,10 +161,6 @@ To grant more memory to a server-side process, uncomment and edit the relevant j
 - `sonar.ce.javaOpts`
 - `sonar.search.javaOpts`
 
-### Cannot connect to MySQL database
-
-By default, remote access to MySQL database server is disabled for security reasons. If you want to remotely access the database server, you need to follow this [quick guide](https://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html).
-
 ### Failed to start on Windows Vista
 
 SonarQube seems unable to start when installed under the `Program Files` directory on Windows Vista. It should therefore not be installed there.
index 6e17eb46d0449ca9f3e6a1c607ba094a01541184..5fec2b7c40128836b68b2ee408db9259196e940d 100644 (file)
@@ -47,7 +47,7 @@ public class JdbcSettings implements Consumer<Props> {
   private static final int JDBC_EMBEDDED_PORT_DEFAULT_VALUE = 9092;
 
   enum Provider {
-    H2("lib/jdbc/h2"), SQLSERVER("lib/jdbc/mssql"), MYSQL("lib/jdbc/mysql"), ORACLE("extensions/jdbc-driver/oracle"),
+    H2("lib/jdbc/h2"), SQLSERVER("lib/jdbc/mssql"), ORACLE("extensions/jdbc-driver/oracle"),
     POSTGRESQL("lib/jdbc/postgresql");
 
     final String path;
@@ -61,8 +61,6 @@ public class JdbcSettings implements Consumer<Props> {
   public void accept(Props props) {
     File homeDir = props.nonNullValueAsFile(PATH_HOME.getKey());
     Provider provider = resolveProviderAndEnforceNonnullJdbcUrl(props);
-    String url = props.value(JDBC_URL.getKey());
-    checkUrlParameters(provider, url);
     String driverPath = driverPath(homeDir, provider);
     props.set(JDBC_DRIVER_PATH.getKey(), driverPath);
   }
@@ -124,15 +122,6 @@ public class JdbcSettings implements Consumer<Props> {
     return format("jdbc:h2:tcp://%s:%d/sonar", host, embeddedDatabasePort);
   }
 
-  void checkUrlParameters(Provider provider, String url) {
-    if (Provider.MYSQL.equals(provider)) {
-      checkRequiredParameter(url, "useUnicode=true");
-      checkRequiredParameter(url, "characterEncoding=utf8");
-      checkRecommendedParameter(url, "rewriteBatchedStatements=true");
-      checkRecommendedParameter(url, "useConfigs=maxPerformance");
-    }
-  }
-
   private static void warnIfUrlIsSet(int port, String existing, String expectedUrl) {
     if (isNotEmpty(existing)) {
       Logger logger = LoggerFactory.getLogger(JdbcSettings.class);
index 22081fdaa741b72d66fd188a35c2400f3ab1cf67..0ab663485beafaa96b0b63fe0ab8894eb9d0e124 100644 (file)
@@ -99,7 +99,7 @@ public class ClusterSettingsLoopbackTest {
       .set(CLUSTER_HZ_HOSTS.getKey(), nonLoopbackLocal.getHostAddress())
       .set(CLUSTER_SEARCH_HOSTS.getKey(), nonLoopbackLocal.getHostAddress())
       .set("sonar.auth.jwtBase64Hs256Secret", "abcde")
-      .set(JDBC_URL.getKey(), "jdbc:mysql://localhost:3306/sonar");
+      .set(JDBC_URL.getKey(), "jdbc:postgresql://localhost:3306/sonar");
   }
 
   private TestAppSettings newSettingsForSearchNode() {
index 010561804ba57db3c2ed87f1ceb2b0a9f7f45ded..b74b4b74efda91800dd23e0284579782df577ac1 100644 (file)
@@ -280,7 +280,7 @@ public class ClusterSettingsTest {
       .set(CLUSTER_HZ_HOSTS.getKey(), nonLoopbackLocal.getHostAddress())
       .set(CLUSTER_SEARCH_HOSTS.getKey(), nonLoopbackLocal.getHostAddress())
       .set("sonar.auth.jwtBase64Hs256Secret", "abcde")
-      .set(JDBC_URL.getKey(), "jdbc:mysql://localhost:3306/sonar");
+      .set(JDBC_URL.getKey(), "jdbc:postgresql://localhost/sonar");
   }
 
   private TestAppSettings newSettingsForSearchNode() {
index 5dddb4ac11de0e144cbb01d39914c4d1be8cb96c..29b29d1d40921250d2f834d836f479ba82b9d495 100644 (file)
@@ -67,13 +67,6 @@ public class JdbcSettingsTest {
     checkProviderForUrlAndUnchangedUrl("jdbc:OrAcLe:foo", Provider.ORACLE);
   }
 
-  @Test
-  public void resolve_MySql_when_jdbc_url_contains_mysql_in_any_case() {
-    checkProviderForUrlAndUnchangedUrl("jdbc:mysql:foo", Provider.MYSQL);
-
-    checkProviderForUrlAndUnchangedUrl("jdbc:mYsQL:foo", Provider.MYSQL);
-  }
-
   @Test
   public void resolve_SqlServer_when_jdbc_url_contains_sqlserver_in_any_case() {
     checkProviderForUrlAndUnchangedUrl("jdbc:sqlserver:foo", Provider.SQLSERVER);
@@ -115,23 +108,6 @@ public class JdbcSettingsTest {
     underTest.resolveProviderAndEnforceNonnullJdbcUrl(props);
   }
 
-  @Test
-  public void check_mysql_parameters() {
-    // minimal -> ok
-    underTest.checkUrlParameters(Provider.MYSQL,
-      "jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8");
-
-    // full -> ok
-    underTest.checkUrlParameters(Provider.MYSQL,
-      "jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance");
-
-    // missing required -> ko
-    expectedException.expect(MessageException.class);
-    expectedException.expectMessage("JDBC URL must have the property 'useUnicode=true'");
-
-    underTest.checkUrlParameters(Provider.MYSQL, "jdbc:mysql://localhost:3306/sonar?characterEncoding=utf8");
-  }
-
   @Test
   public void checkAndComplete_sets_driver_path_for_oracle() throws Exception {
     File driverFile = new File(homeDir, "extensions/jdbc-driver/oracle/ojdbc6.jar");
index 9c205b3480589f1f91115720fbf4055d687619aa..c6c64aea51cbba1797493628afd0821e62233aee 100644 (file)
@@ -33,13 +33,6 @@ public class JdbcUrlSanitizerTest {
     verifyJdbcUrl("jdbc:h2:tcp://localhost/mem:TEST", "jdbc:h2:tcp://localhost/mem:test");
   }
 
-  @Test
-  public void sanitize_mysql_url() {
-    verifyJdbcUrl("jdbc:mysql://127.0.0.1:3306/sonarqube?useUnicode=true&characterEncoding=utf8", "jdbc:mysql://127.0.0.1:3306/sonarqube");
-    verifyJdbcUrl("jdbc:mysql://127.0.0.1:3306/sonarqube", "jdbc:mysql://127.0.0.1:3306/sonarqube");
-    verifyJdbcUrl("jdbc:mysql://127.0.0.1:3306/SONARQUBE", "jdbc:mysql://127.0.0.1:3306/sonarqube");
-  }
-
   @Test
   public void sanitize_oracle_url() {
     verifyJdbcUrl("sonar.jdbc.url=jdbc:oracle:thin:@localhost:1521/XE", "sonar.jdbc.url=jdbc:oracle:thin:@localhost:1521/xe");
index da4c1c3cb93a0a85abed82ba9455a38d4d5fced5..7c289f5120f62880ede77049fd46cebe794847ed 100644 (file)
@@ -21,7 +21,6 @@ package org.sonar.server.component;
 
 import com.google.common.collect.ImmutableSet;
 import java.util.Date;
-import java.util.List;
 import java.util.Locale;
 import java.util.Set;
 import javax.annotation.Nullable;
@@ -58,8 +57,8 @@ public class ComponentUpdater {
   private final ProjectIndexers projectIndexers;
 
   public ComponentUpdater(DbClient dbClient, I18n i18n, System2 system2,
-    PermissionTemplateService permissionTemplateService, FavoriteUpdater favoriteUpdater,
-    ProjectIndexers projectIndexers) {
+                          PermissionTemplateService permissionTemplateService, FavoriteUpdater favoriteUpdater,
+                          ProjectIndexers projectIndexers) {
     this.dbClient = dbClient;
     this.i18n = i18n;
     this.system2 = system2;
@@ -90,7 +89,6 @@ public class ComponentUpdater {
     if (isRootProject(componentDto)) {
       createMainBranch(dbSession, componentDto.uuid());
     }
-    removeDuplicatedProjects(dbSession, componentDto.getDbKey());
     handlePermissionTemplate(dbSession, componentDto, userId);
     return componentDto;
   }
@@ -141,19 +139,6 @@ public class ComponentUpdater {
     dbClient.branchDao().upsert(session, branch);
   }
 
-  /**
-   * On MySQL, as PROJECTS.KEE is not unique, if the same project is provisioned multiple times, then it will be duplicated in the database.
-   * So, after creating a project, we commit, and we search in the db if their are some duplications and we remove them.
-   *
-   * SONAR-6332
-   */
-  private void removeDuplicatedProjects(DbSession session, String projectKey) {
-    List<ComponentDto> duplicated = dbClient.componentDao().selectComponentsHavingSameKeyOrderedById(session, projectKey);
-    for (int i = 1; i < duplicated.size(); i++) {
-      dbClient.componentDao().delete(session, duplicated.get(i).getId());
-    }
-  }
-
   private void handlePermissionTemplate(DbSession dbSession, ComponentDto componentDto, @Nullable Integer userId) {
     permissionTemplateService.applyDefault(dbSession, componentDto, userId);
     if (componentDto.qualifier().equals(PROJECT)
index 66001567d87e434efa313456ec0b2ea474d51a03..3ba78fc31aaf010ce65c5dae547f1e06b88acd58 100644 (file)
@@ -51,15 +51,15 @@ public class EsDbCompatibilityImplTest {
 
   @Test
   public void hasSameDbVendor_is_true_if_values_match() {
-    prepareDb("mysql");
-    prepareEs("mysql");
+    prepareDb("mssql");
+    prepareEs("mssql");
 
     assertThat(underTest.hasSameDbVendor()).isTrue();
   }
 
   @Test
   public void hasSameDbVendor_is_false_if_values_dont_match() {
-    prepareDb("mysql");
+    prepareDb("mssql");
     prepareEs("postgres");
 
     assertThat(underTest.hasSameDbVendor()).isFalse();
@@ -67,23 +67,23 @@ public class EsDbCompatibilityImplTest {
 
   @Test
   public void hasSameDbVendor_is_false_if_value_is_absent_from_es() {
-    prepareDb("mysql");
+    prepareDb("mssql");
 
     assertThat(underTest.hasSameDbVendor()).isFalse();
   }
 
   @Test
   public void markAsCompatible_db_metadata_in_es() {
-    prepareDb("mysql");
+    prepareDb("mssql");
 
     underTest.markAsCompatible();
 
-    assertThat(metadataIndex.getDbVendor()).hasValue("mysql");
+    assertThat(metadataIndex.getDbVendor()).hasValue("mssql");
   }
 
   @Test
   public void markAsCompatible_updates_db_metadata_in_es() {
-    prepareEs("mysql");
+    prepareEs("mssql");
     prepareDb("postgres");
 
     underTest.markAsCompatible();
index 460b657689870bfc27311d1191d0760f89925ddb..5fd2bbdf8479328fde5f3518e8b8914e07005f0e 100644 (file)
@@ -33,7 +33,6 @@ import org.sonar.db.DbSession;
 import org.sonar.db.dialect.Dialect;
 import org.sonar.db.dialect.H2;
 import org.sonar.db.dialect.MsSql;
-import org.sonar.db.dialect.MySql;
 import org.sonar.db.dialect.Oracle;
 import org.sonar.db.dialect.PostgreSql;
 import org.sonar.server.platform.DefaultServerUpgradeStatus;
@@ -81,11 +80,6 @@ public class AutoDbMigrationTest {
     verifyInfoLog();
   }
 
-  @Test
-  public void start_runs_MigrationEngine_on_mysql_if_fresh_install() {
-    start_runs_MigrationEngine_for_dialect_if_fresh_install(new MySql());
-  }
-
   @Test
   public void start_runs_MigrationEngine_on_postgre_if_fresh_install() {
     start_runs_MigrationEngine_for_dialect_if_fresh_install(new PostgreSql());
index 918fb5af4bfb66bb8a2d8753fc7fea6a4d903f3b..1a20d2e87feae81588a34946e9e5bdd72e38dd3c 100644 (file)
@@ -36,7 +36,7 @@ import org.sonar.core.platform.PluginInfo;
 import org.sonar.core.platform.PluginRepository;
 import org.sonar.db.DbClient;
 import org.sonar.db.dialect.H2;
-import org.sonar.db.dialect.MySql;
+import org.sonar.db.dialect.PostgreSql;
 import org.sonar.server.branch.BranchFeatureRule;
 import org.sonar.server.organization.DefaultOrganizationProvider;
 import org.sonar.server.organization.TestDefaultOrganizationProvider;
@@ -212,7 +212,7 @@ public class GlobalActionTest {
   @Test
   public void return_if_production_database_or_not() {
     init();
-    when(dbClient.getDatabase().getDialect()).thenReturn(new MySql());
+    when(dbClient.getDatabase().getDialect()).thenReturn(new PostgreSql());
 
     assertJson(call()).isSimilarTo("{" +
       "  \"productionDatabase\": true" +
@@ -287,7 +287,7 @@ public class GlobalActionTest {
         .build()
     });
     when(server.getVersion()).thenReturn("6.2");
-    when(dbClient.getDatabase().getDialect()).thenReturn(new MySql());
+    when(dbClient.getDatabase().getDialect()).thenReturn(new PostgreSql());
     when(webServer.isStandalone()).thenReturn(true);
     when(editionProvider.get()).thenReturn(Optional.of(EditionProvider.Edition.COMMUNITY));