aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilder.java2
-rw-r--r--server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilderTest.java67
2 files changed, 28 insertions, 41 deletions
diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilder.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilder.java
index f9e405c14ff..59bae4f8a97 100644
--- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilder.java
+++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilder.java
@@ -136,7 +136,7 @@ public class CreateIndexBuilder {
*/
if (unique && !dialect.supportsNullNotDistinct() && PostgreSql.ID.equals(dialect.getId())) {
sql.append(columns.stream()
- .map(c -> c.isNullable() ? "COALESCE(%s, '')".formatted(c.name()) : c.name())
+ .map(c -> Boolean.TRUE.equals(c.isNullable()) ? "COALESCE(%s, '')".formatted(c.name()) : c.name())
.collect(Collectors.joining(", ")));
} else {
sql.append(columns.stream()
diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilderTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilderTest.java
index fbeb7be6e02..6485fd61b0d 100644
--- a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilderTest.java
+++ b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/sql/CreateIndexBuilderTest.java
@@ -133,76 +133,63 @@ public class CreateIndexBuilderTest {
@Test
public void throw_NPE_if_table_is_missing() {
- assertThatThrownBy(() -> {
- new CreateIndexBuilder(new Oracle())
- .setName("issues_key")
- .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build())
- .build();
- })
+ CreateIndexBuilder builder = new CreateIndexBuilder(new Oracle())
+ .setName("issues_key")
+ .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build());
+ assertThatThrownBy(builder::build)
.isInstanceOf(NullPointerException.class)
.hasMessage("Table name can't be null");
}
@Test
public void throw_NPE_if_index_name_is_missing() {
- assertThatThrownBy(() -> {
- new CreateIndexBuilder(new H2())
- .setTable("issues")
- .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build())
- .build();
- })
+ CreateIndexBuilder builder = new CreateIndexBuilder(new H2())
+ .setTable("issues")
+ .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build());
+ assertThatThrownBy(builder::build)
.isInstanceOf(NullPointerException.class)
.hasMessage("Index name can't be null");
}
@Test
public void build_shouldThrowException_whenUniqueAndColumnNullabilityIsNotProvided() {
- assertThatThrownBy(() -> {
- new CreateIndexBuilder(new H2())
- .setTable("issues")
- .setName("name")
- .addColumn("columnName")
- .setUnique(true)
- .build();
- })
+ CreateIndexBuilder builder = new CreateIndexBuilder(new H2())
+ .setTable("issues")
+ .setName("name")
+ .addColumn("columnName")
+ .setUnique(true);
+ assertThatThrownBy(builder::build)
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("Nullability of column should be provided for unique indexes");
}
@Test
public void throw_IAE_if_columns_are_missing() {
- assertThatThrownBy(() -> {
- new CreateIndexBuilder(new H2())
- .setTable("issues")
- .setName("issues_key")
- .build();
- })
+ CreateIndexBuilder builder = new CreateIndexBuilder(new H2())
+ .setTable("issues")
+ .setName("issues_key");
+ assertThatThrownBy(builder::build)
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("at least one column must be specified");
}
@Test
public void throw_IAE_if_table_name_is_not_valid() {
- assertThatThrownBy(() -> {
- new CreateIndexBuilder(new H2())
- .setTable("(not valid)")
- .setName("issues_key")
- .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build())
- .build();
- })
+ CreateIndexBuilder builder = new CreateIndexBuilder(new H2())
+ .setTable("(not valid)")
+ .setName("issues_key")
+ .addColumn(newVarcharColumnDefBuilder().setColumnName("kee").setLimit(10).build());
+ assertThatThrownBy(builder::build)
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("Table name must be lower case and contain only alphanumeric chars or '_', got '(not valid)'");
}
@Test
public void throw_NPE_when_adding_null_column() {
- assertThatThrownBy(() -> {
- new CreateIndexBuilder(new H2())
- .setTable("issues")
- .setName("issues_key")
- .addColumn((String) null)
- .build();
- })
+ CreateIndexBuilder builder = new CreateIndexBuilder(new H2())
+ .setTable("issues")
+ .setName("issues_key");
+ assertThatThrownBy(() -> builder.addColumn((String) null))
.isInstanceOf(NullPointerException.class)
.hasMessage("Column cannot be null");
}