Browse Source

SONAR-12246 remove MySQL dialect

tags/8.0
Simon Brandhof 5 years ago
parent
commit
983f593231
100 changed files with 118 additions and 653 deletions
  1. 12
    13
      server/sonar-db-core/src/main/java/org/sonar/db/DefaultDatabase.java
  2. 0
    10
      server/sonar-db-core/src/main/java/org/sonar/db/dialect/AbstractDialect.java
  3. 3
    7
      server/sonar-db-core/src/main/java/org/sonar/db/dialect/Dialect.java
  4. 1
    1
      server/sonar-db-core/src/main/java/org/sonar/db/dialect/DialectUtils.java
  5. 0
    65
      server/sonar-db-core/src/main/java/org/sonar/db/dialect/MySql.java
  6. 0
    14
      server/sonar-db-core/src/test/java/org/sonar/db/DatabaseCommands.java
  7. 1
    1
      server/sonar-db-core/src/test/java/org/sonar/db/DdlUtilsTest.java
  8. 4
    4
      server/sonar-db-core/src/test/java/org/sonar/db/dialect/DialectUtilsTest.java
  9. 0
    1
      server/sonar-db-core/src/test/java/org/sonar/db/dialect/MsSqlTest.java
  10. 0
    108
      server/sonar-db-core/src/test/java/org/sonar/db/dialect/MySqlTest.java
  11. 0
    1
      server/sonar-db-core/src/test/java/org/sonar/db/dialect/OracleTest.java
  12. 0
    8
      server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java
  13. 0
    4
      server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentDao.java
  14. 0
    2
      server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentMapper.java
  15. 0
    8
      server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml
  16. 0
    70
      server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentDaoWithDuplicatedKeysTest.java
  17. 0
    63
      server/sonar-db-dao/src/test/resources/org/sonar/db/component/ComponentDaoWithDuplicatedKeysTest/schema.sql
  18. 2
    5
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/charset/DatabaseCharsetChecker.java
  19. 0
    91
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/charset/MysqlCharsetHandler.java
  20. 0
    3
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/BlobColumnDef.java
  21. 0
    3
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/BooleanColumnDef.java
  22. 0
    3
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/ClobColumnDef.java
  23. 0
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/DecimalColumnDef.java
  24. 0
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/IntegerColumnDef.java
  25. 1
    4
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/TimestampColumnDef.java
  26. 0
    4
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/TinyIntColumnDef.java
  27. 0
    9
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/AlterColumnsBuilder.java
  28. 1
    25
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilder.java
  29. 0
    11
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/CreateTableBuilder.java
  30. 0
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropColumnsBuilder.java
  31. 0
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropIndexBuilder.java
  32. 0
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropTableBuilder.java
  33. 1
    6
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/RenameColumnsBuilder.java
  34. 0
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/RenameTableBuilder.java
  35. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v56/CreateInitialSchema.java
  36. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/AddIndexOnAnalysisUuidOfMeasures.java
  37. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/AddIndexOnComponentUuidOfMeasures.java
  38. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/AddUniqueIndexOnUuidOfSnapshots.java
  39. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/CreatePermTemplatesCharacteristics.java
  40. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/CreateTemporaryIndicesFor1211.java
  41. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/MakeAnalysisUuidNotNullOnEvents.java
  42. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/MakeComponentUuidAndAnalysisUuidNotNullOnDuplicationsIndex.java
  43. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/MakeComponentUuidColumnsNotNullOnSnapshots.java
  44. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/MakeUuidColumnsNotNullOnProjects.java
  45. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/RecreateIndexProjectsUuidFromProjects.java
  46. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v61/CreateTableProperties2.java
  47. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v61/RenameTableProperties2ToProperties.java
  48. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v62/CreateTableOrganizations.java
  49. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v62/CreateTableWebhookDeliveries.java
  50. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v62/IncludeOrganizationUuidInUniqueIndexOfGroupRoles.java
  51. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v63/AddIndexOnOrganizationUuidOfProjects.java
  52. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v63/DropTableResourceIndex.java
  53. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v63/MakeIndexOnOrganizationsKeeUnique.java
  54. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v63/MakeUuidNotNullOnEvents.java
  55. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/AddIndexLoadedTemplatesType.java
  56. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/AddIndexOnActiveRuleParameters.java
  57. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/MakeProjectUuidNotNullable.java
  58. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/MakeQualityProfileKeyUnique.java
  59. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/MakeQualityProfileOrganizationUuidAndKeyUnique.java
  60. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/AddIndexOnEsQueueCreatedAt.java
  61. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/AddIndexRulesProfileUuidOnQProfileChanges.java
  62. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/CreateTableDefaultQProfiles.java
  63. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/CreateTableOrgQProfiles.java
  64. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/RecreateIndexEventsComponentUuid.java
  65. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/RecreateIndexManualMeasuresComponentUuid.java
  66. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/AddIndexOnProjectBranchesKey.java
  67. 4
    5
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/CreateTableCeTaskCharacteristics.java
  68. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/CreateTablePlugins.java
  69. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/CreateTableQProfileEditGroups.java
  70. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/CreateTableQProfileEditUsers.java
  71. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v67/CreateTableAnalysisProperties.java
  72. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/AddLiveMeasuresMetricIndex.java
  73. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/AddSnapshotIsLastIndex.java
  74. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/CreateOrgQualityGatesTable.java
  75. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/CreateTableLiveMeasures.java
  76. 0
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/DeletePersonMeasures.java
  77. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/MakeUuidNotNullableOnQualityGates.java
  78. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/CreateDeprecatedRuleKeysTable.java
  79. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/CreateWebhooksTable.java
  80. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/RenameTableProjectLinks2ToProjectLinks.java
  81. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/ReplaceIndexInProjectBranches.java
  82. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/AddUniqueIndexOnRulesParameters.java
  83. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/AddUniqueIndexesOnUsers.java
  84. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/CreateAlmAppInstallsTable.java
  85. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/CreateProjectMappingsTable.java
  86. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/MakeSomeColumnsOfUsersNotNullable.java
  87. 4
    5
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/PurgeDuplicateRulesParameters.java
  88. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/PurgeOrphansForCE.java
  89. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/RenameLoginToUserUuidOnTableUserTokens.java
  90. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v73/AddIndexOnOrganizationMembers.java
  91. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v73/CreateProjectAlmBindingsTable.java
  92. 1
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v73/FixMissingQualityProfilesOnOrganizations.java
  93. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/AddTmpColumnsToCeTable.java
  94. 4
    4
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/AddTmpLastKeyColumnsToCeActivity.java
  95. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/CreateCeTaskMessage.java
  96. 2
    2
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/FinalizeMainComponentUuidColumnsToCeTable.java
  97. 4
    4
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/FinalizeMainLastKeyColumnsToCeActivity.java
  98. 3
    3
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v75/AddEventComponentChanges.java
  99. 1
    1
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v75/AddUserExternalIdColumnInAlmAppInstall.java
  100. 0
    0
      server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v75/CreateOrganizationsAlmBindingsTable.java

+ 12
- 13
server/sonar-db-core/src/main/java/org/sonar/db/DefaultDatabase.java View 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 {

+ 0
- 10
server/sonar-db-core/src/main/java/org/sonar/db/dialect/AbstractDialect.java View 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;

+ 3
- 7
server/sonar-db-core/src/main/java/org/sonar/db/dialect/Dialect.java View 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.

+ 1
- 1
server/sonar-db-core/src/main/java/org/sonar/db/dialect/DialectUtils.java View 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

+ 0
- 65
server/sonar-db-core/src/main/java/org/sonar/db/dialect/MySql.java View File

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

+ 0
- 14
server/sonar-db-core/src/test/java/org/sonar/db/DatabaseCommands.java View 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;

+ 1
- 1
server/sonar-db-core/src/test/java/org/sonar/db/DdlUtilsTest.java View 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();
}

+ 4
- 4
server/sonar-db-core/src/test/java/org/sonar/db/dialect/DialectUtilsTest.java View 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)

+ 0
- 1
server/sonar-db-core/src/test/java/org/sonar/db/dialect/MsSqlTest.java View 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

+ 0
- 108
server/sonar-db-core/src/test/java/org/sonar/db/dialect/MySqlTest.java View File

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

+ 0
- 1
server/sonar-db-core/src/test/java/org/sonar/db/dialect/OracleTest.java View File

@@ -56,7 +56,6 @@ public class OracleTest {
@Test
public void testFetchSizeForScrolling() {
assertThat(underTest.getScrollDefaultFetchSize()).isEqualTo(200);
assertThat(underTest.getScrollSingleRowFetchSize()).isEqualTo(1);
}

@Test

+ 0
- 8
server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java View 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 {

+ 0
- 4
server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentDao.java View 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

+ 0
- 2
server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentMapper.java View 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);

+ 0
- 8
server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml View File

@@ -57,14 +57,6 @@
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"/>

+ 0
- 70
server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentDaoWithDuplicatedKeysTest.java View File

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

+ 0
- 63
server/sonar-db-dao/src/test/resources/org/sonar/db/component/ComponentDaoWithDuplicatedKeysTest/schema.sql View File

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

+ 2
- 5
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/charset/DatabaseCharsetChecker.java View 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:

+ 0
- 91
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/charset/MysqlCharsetHandler.java View File

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

+ 0
- 3
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/BlobColumnDef.java View 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";

+ 0
- 3
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/BooleanColumnDef.java View 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()));
}

+ 0
- 3
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/ClobColumnDef.java View 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:

+ 0
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/DecimalColumnDef.java View 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:

+ 0
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/IntegerColumnDef.java View 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:

+ 1
- 4
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/TimestampColumnDef.java View 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)";

+ 0
- 4
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/TinyIntColumnDef.java View 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";

+ 0
- 9
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/AlterColumnsBuilder.java View 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) {

+ 1
- 25
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilder.java View 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;
}
}

+ 0
- 11
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/CreateTableBuilder.java View 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();

+ 0
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropColumnsBuilder.java View 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());

+ 0
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropIndexBuilder.java View 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;

+ 0
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/DropTableBuilder.java View 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:

+ 1
- 6
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/RenameColumnsBuilder.java View 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:

+ 0
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/RenameTableBuilder.java View 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:

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v56/CreateInitialSchema.java View 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);

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/AddIndexOnAnalysisUuidOfMeasures.java View 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())

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/AddIndexOnComponentUuidOfMeasures.java View 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())

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/AddUniqueIndexOnUuidOfSnapshots.java View 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())

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/CreatePermTemplatesCharacteristics.java View 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)

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/CreateTemporaryIndicesFor1211.java View 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())

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/MakeAnalysisUuidNotNullOnEvents.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/MakeComponentUuidAndAnalysisUuidNotNullOnDuplicationsIndex.java View 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)

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/MakeComponentUuidColumnsNotNullOnSnapshots.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/MakeUuidColumnsNotNullOnProjects.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v60/RecreateIndexProjectsUuidFromProjects.java View 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())

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v61/CreateTableProperties2.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v61/RenameTableProperties2ToProperties.java View 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())

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v62/CreateTableOrganizations.java View 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)

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v62/CreateTableWebhookDeliveries.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v62/IncludeOrganizationUuidInUniqueIndexOfGroupRoles.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v63/AddIndexOnOrganizationUuidOfProjects.java View 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()

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v63/DropTableResourceIndex.java View 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.
}


+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v63/MakeIndexOnOrganizationsKeeUnique.java View 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()

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v63/MakeUuidNotNullOnEvents.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/AddIndexLoadedTemplatesType.java View 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()

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/AddIndexOnActiveRuleParameters.java View 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())

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/MakeProjectUuidNotNullable.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/MakeQualityProfileKeyUnique.java View 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(

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v64/MakeQualityProfileOrganizationUuidAndKeyUnique.java View 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(

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/AddIndexOnEsQueueCreatedAt.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/AddIndexRulesProfileUuidOnQProfileChanges.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/CreateTableDefaultQProfiles.java View 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)

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/CreateTableOrgQProfiles.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/RecreateIndexEventsComponentUuid.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v65/RecreateIndexManualMeasuresComponentUuid.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/AddIndexOnProjectBranchesKey.java View 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)

+ 4
- 5
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/CreateTableCeTaskCharacteristics.java View File

@@ -19,17 +19,16 @@
*/
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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/CreateTablePlugins.java View 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)

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/CreateTableQProfileEditGroups.java View 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)

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v66/CreateTableQProfileEditUsers.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v67/CreateTableAnalysisProperties.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/AddLiveMeasuresMetricIndex.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/AddSnapshotIsLastIndex.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/CreateOrgQualityGatesTable.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/CreateTableLiveMeasures.java View 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)

+ 0
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/DeletePersonMeasures.java View 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 " +

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v70/MakeUuidNotNullableOnQualityGates.java View 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)

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/CreateDeprecatedRuleKeysTable.java View 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)

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/CreateWebhooksTable.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/RenameTableProjectLinks2ToProjectLinks.java View 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()

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/ReplaceIndexInProjectBranches.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/AddUniqueIndexOnRulesParameters.java View 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)

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/AddUniqueIndexesOnUsers.java View 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)

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/CreateAlmAppInstallsTable.java View 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)

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/CreateProjectMappingsTable.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/MakeSomeColumnsOfUsersNotNullable.java View 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))

+ 4
- 5
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/PurgeDuplicateRulesParameters.java View 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;

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/PurgeOrphansForCE.java View 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;

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/RenameLoginToUserUuidOnTableUserTokens.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v73/AddIndexOnOrganizationMembers.java View 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()

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v73/CreateProjectAlmBindingsTable.java View 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)

+ 1
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v73/FixMissingQualityProfilesOnOrganizations.java View 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 = "";

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/AddTmpColumnsToCeTable.java View 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)

+ 4
- 4
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/AddTmpLastKeyColumnsToCeActivity.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/CreateCeTaskMessage.java View 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)

+ 2
- 2
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/FinalizeMainComponentUuidColumnsToCeTable.java View 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)

+ 4
- 4
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v74/FinalizeMainLastKeyColumnsToCeActivity.java View 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)

+ 3
- 3
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v75/AddEventComponentChanges.java View 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)

+ 1
- 1
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v75/AddUserExternalIdColumnInAlmAppInstall.java View 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)

+ 0
- 0
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v75/CreateOrganizationsAlmBindingsTable.java View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save