As USERS.UUID will be fed by login during the migration, this column cannot be smaller than login's length.
CREATE TABLE "USERS" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "UUID" VARCHAR(40) NOT NULL,
+ "UUID" VARCHAR(255) NOT NULL,
"LOGIN" VARCHAR(255) NOT NULL,
"NAME" VARCHAR(200),
"EMAIL" VARCHAR(100),
*/
package org.sonar.server.platform.db.migration.version.v72;
+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.AddColumnsBuilder;
import org.sonar.server.platform.db.migration.step.DdlChange;
-import java.sql.SQLException;
-
public class AddUUIDtoUsers extends DdlChange {
private static final String TABLE_NAME = "users";
private static final String UUID_COLUMN_NAME = "uuid";
- private static final int UUID_LENGTH = 40;
+ // We need to use a length of 255 as the migration that fed it will use login, which are using a length of 255
+ private static final int UUID_LENGTH = 255;
public AddUUIDtoUsers(Database db) {
super(db);
.setTable("users")
.setName("users_uuid")
.setUnique(true)
- .addColumn(notNullableColumn("uuid", 40))
+ .addColumn(notNullableColumn("uuid", 255))
.build());
context.execute(new CreateIndexBuilder(getDialect())
.build());
context.execute(new AlterColumnsBuilder(getDialect(), USERS_TABLE)
- .updateColumn(notNullableColumn("uuid", 40))
+ .updateColumn(notNullableColumn("uuid", 255))
.updateColumn(notNullableColumn("login", 255))
.updateColumn(notNullableColumn("external_id", 255))
.updateColumn(notNullableColumn("external_login", 255))
public void column_is_added_to_table() throws SQLException {
underTest.execute();
- dbTester.assertColumnDefinition("users", "uuid", VARCHAR, 40, true);
+ dbTester.assertColumnDefinition("users", "uuid", VARCHAR, 255, true);
}
@Test
public void columns_are_set_as_not_nullable() throws SQLException {
underTest.execute();
- db.assertColumnDefinition("users", "uuid", VARCHAR, 40, false);
+ db.assertColumnDefinition("users", "uuid", VARCHAR, 255, false);
db.assertColumnDefinition("users", "login", VARCHAR, 255, false);
db.assertColumnDefinition("users", "external_id", VARCHAR, 255, false);
db.assertColumnDefinition("users", "external_login", VARCHAR, 255, false);
underTest.execute();
underTest.execute();
- db.assertColumnDefinition("users", "uuid", VARCHAR, 40, false);
+ db.assertColumnDefinition("users", "uuid", VARCHAR, 255, false);
db.assertColumnDefinition("users", "login", VARCHAR, 255, false);
db.assertColumnDefinition("users", "external_id", VARCHAR, 255, false);
db.assertColumnDefinition("users", "external_login", VARCHAR, 255, false);
*/
package org.sonar.server.platform.db.migration.version.v72;
+import com.google.common.base.Strings;
import java.sql.SQLException;
import java.util.ArrayList;
-import java.util.Date;
-import java.util.stream.Collectors;
-
import org.assertj.core.groups.Tuple;
import org.junit.Rule;
import org.junit.Test;
@Test
public void update_uuid_when_login_is_present() throws SQLException {
-
String login1 = insertUser(NO_UUID, randomAlphanumeric(10));
String login2 = insertUser(NO_UUID, randomAlphanumeric(10));
String login3 = insertUser(NO_UUID, randomAlphanumeric(10));
);
}
+ @Test
+ public void check_max_length() throws Exception {
+ String login = insertUser(NO_UUID, Strings.repeat("a", 255));
+
+ underTest.execute();
+
+ assertUser(tuple(login, login, PAST, NOW));
+ }
+
@Test
public void generate_random_uuid_when_login_is_null() throws SQLException {
insertUser(NO_UUID, NO_LOGIN);
}
@Test
- public void _do_nothing_when_uuid_is_already_present() throws SQLException {
+ public void do_nothing_when_uuid_is_already_present() throws SQLException {
String login1 = insertUser(NO_UUID, randomAlphanumeric(10));
String login2 = insertUser("existing-uuid", randomAlphanumeric(10));
CREATE TABLE "USERS" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "UUID" VARCHAR(40),
+ "UUID" VARCHAR(255),
"LOGIN" VARCHAR(255),
"NAME" VARCHAR(200),
"EMAIL" VARCHAR(100),
CREATE TABLE "USERS" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "UUID" VARCHAR(40) NOT NULL,
+ "UUID" VARCHAR(255) NOT NULL,
"LOGIN" VARCHAR(255) NOT NULL,
"NAME" VARCHAR(200),
"EMAIL" VARCHAR(100),
CREATE TABLE "USERS" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "UUID" VARCHAR(40),
+ "UUID" VARCHAR(255),
"LOGIN" VARCHAR(255),
"NAME" VARCHAR(200),
"EMAIL" VARCHAR(100),
CREATE TABLE "USERS" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "UUID" VARCHAR(40),
+ "UUID" VARCHAR(255),
"LOGIN" VARCHAR(255),
"NAME" VARCHAR(200),
"EMAIL" VARCHAR(100),
CREATE TABLE "USERS" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "UUID" VARCHAR(40),
+ "UUID" VARCHAR(255),
"LOGIN" VARCHAR(255),
"NAME" VARCHAR(200),
"EMAIL" VARCHAR(100),
CREATE TABLE "USERS" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "UUID" VARCHAR(40) NOT NULL,
+ "UUID" VARCHAR(255) NOT NULL,
"LOGIN" VARCHAR(255) NOT NULL,
"NAME" VARCHAR(200),
"EMAIL" VARCHAR(100),
CREATE TABLE "USERS" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "UUID" VARCHAR(40),
+ "UUID" VARCHAR(255),
"LOGIN" VARCHAR(255),
"NAME" VARCHAR(200),
"EMAIL" VARCHAR(100),
CREATE TABLE "USERS" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "UUID" VARCHAR(40),
+ "UUID" VARCHAR(255),
"LOGIN" VARCHAR(255),
"NAME" VARCHAR(200),
"EMAIL" VARCHAR(100),
CREATE TABLE "USERS" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
- "UUID" VARCHAR(40),
+ "UUID" VARCHAR(255),
"LOGIN" VARCHAR(255),
"NAME" VARCHAR(200),
"EMAIL" VARCHAR(100),