import javax.annotation.CheckForNull;
import org.sonar.db.dialect.Dialect;
+import org.sonar.db.dialect.MsSql;
+import static java.lang.String.format;
import static java.util.Objects.requireNonNull;
import static org.sonar.db.version.ColumnDefValidation.validateColumnName;
@Override
public String generateSqlType(Dialect dialect) {
- return "VARCHAR (" + Integer.toString(columnSize) + ")";
+ if (MsSql.ID.equals(dialect.getId())) {
+ return format("NVARCHAR (%d)", columnSize);
+ }
+ return format("VARCHAR (%d)", columnSize);
}
public static class Builder {
@Test
public void add_columns_on_mssql() {
assertThat(createSampleBuilder(new MsSql()).build())
- .isEqualTo("ALTER TABLE issues ADD date_in_ms BIGINT NULL, name VARCHAR (10) NOT NULL");
+ .isEqualTo("ALTER TABLE issues ADD date_in_ms BIGINT NULL, name NVARCHAR (10) NOT NULL");
}
@Test
@Test
public void update_columns_on_mssql() {
assertThat(createSampleBuilder(new MsSql()).build())
- .containsOnly("ALTER TABLE issues ALTER COLUMN value DECIMAL (30,20)", "ALTER TABLE issues ALTER COLUMN name VARCHAR (10)");
+ .containsOnly("ALTER TABLE issues ALTER COLUMN value DECIMAL (30,20)", "ALTER TABLE issues ALTER COLUMN name NVARCHAR (10)");
}
@Test
assertThat(def.generateSqlType(new H2())).isEqualTo("VARCHAR (10)");
assertThat(def.generateSqlType(new PostgreSql())).isEqualTo("VARCHAR (10)");
assertThat(def.generateSqlType(new MySql())).isEqualTo("VARCHAR (10)");
- assertThat(def.generateSqlType(new MsSql())).isEqualTo("VARCHAR (10)");
+ assertThat(def.generateSqlType(new MsSql())).isEqualTo("NVARCHAR (10)");
assertThat(def.generateSqlType(new Oracle())).isEqualTo("VARCHAR (10)");
}