]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-19597 Set USERS.UUID length to 255 instead of 40
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Mon, 28 May 2018 07:19:25 +0000 (09:19 +0200)
committerSonarTech <sonartech@sonarsource.com>
Mon, 28 May 2018 18:20:43 +0000 (20:20 +0200)
As USERS.UUID will be fed by login during the migration, this column cannot be smaller than login's length.

16 files changed:
server/sonar-db-core/src/main/resources/org/sonar/db/version/schema-h2.ddl
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/AddUUIDtoUsers.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/AddUniqueIndexesOnUsers.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v72/MakeSomeColumnsOfUsersNotNullable.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v72/AddUUIDtoUsersTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v72/MakeSomeColumnsOfUsersNotNullableTest.java
server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v72/PopulateUUIDOnUsersTest.java
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v72/AddExternalIdToUsersTest/users.sql
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v72/AddOrganizationUuidToUsersTest/users.sql
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v72/AddUniqueIndexesOnUsersTest/users.sql
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v72/MakeSomeColumnsOfUsersNotNullableTest/users.sql
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v72/PopulateExternalIdOnUsersTest/users.sql
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v72/PopulateOrganizationUuidOnUsersTest/schema.sql
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v72/PopulateUUIDOnUsersTest/users.sql
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v72/RenameExternalIdentityToExternalLoginOnUsersTest/users.sql
server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v72/UpdateNullValuesFromExternalColumnsAndLoginOfUsersTest/users.sql

index 1718c97533d18caad18eaf9a60e19d7db99cd857..83a3091a455e671d502744c55ea1057649c7224a 100644 (file)
@@ -453,7 +453,7 @@ CREATE INDEX "IX_ARP_ON_ACTIVE_RULE_ID" ON "ACTIVE_RULE_PARAMETERS" ("ACTIVE_RUL
 
 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),
index d05abca5a630fcfe7ee22194169d30fd7cb4002e..cc5ca02cdfe43e55cad9b2a19e55ba1fec325783 100644 (file)
  */
 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);
index 41dfef1548d6ca57608360c6090fdb2576e4744b..2092c717cef8bd81d58ba7b47e87f96db16437b3 100644 (file)
@@ -39,7 +39,7 @@ public class AddUniqueIndexesOnUsers extends DdlChange {
       .setTable("users")
       .setName("users_uuid")
       .setUnique(true)
-      .addColumn(notNullableColumn("uuid", 40))
+      .addColumn(notNullableColumn("uuid", 255))
       .build());
 
     context.execute(new CreateIndexBuilder(getDialect())
index 82f18e8d28fdef85861db132b3192f7ca53f47f1..ca518bf7bdb9320c9d9f8fbdca23fe99909976bc 100644 (file)
@@ -46,7 +46,7 @@ public class MakeSomeColumnsOfUsersNotNullable extends DdlChange {
       .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))
index 29165a3543cbecc0f91d12f6f9d2d12d0beefd28..29b1f06ab941026e500a8ebcc767b8bad37d84fb 100644 (file)
@@ -43,7 +43,7 @@ public class AddUUIDtoUsersTest {
   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
index 73c60165234bcbbf2f87bc6096c1822352e867bb..98eb73058501492cf351209a64a725c1487e4a5d 100644 (file)
@@ -38,7 +38,7 @@ public class MakeSomeColumnsOfUsersNotNullableTest {
   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);
@@ -51,7 +51,7 @@ public class MakeSomeColumnsOfUsersNotNullableTest {
     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);
index 948a36cff7a7b90d74ee2416d56c9972c3d5325f..609eefe532df1dff857311aedfcb4c275c21cd0c 100644 (file)
  */
 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;
@@ -62,7 +60,6 @@ public class PopulateUUIDOnUsersTest {
 
   @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));
@@ -76,6 +73,15 @@ public class PopulateUUIDOnUsersTest {
     );
   }
 
+  @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);
@@ -88,7 +94,7 @@ public class PopulateUUIDOnUsersTest {
   }
 
   @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));
 
index c1d3972c0b5e72abdc7922361b6b3479ddb159c7..63f3678158cf3cc1035e4a45ba09f2704eb1f438 100644 (file)
@@ -1,6 +1,6 @@
 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),
index 74cb1f155717b23a56c267160b1500a1b23bee7b..3d35b327f62d95ca2ff8133429130b5ea09c2253 100644 (file)
@@ -1,6 +1,6 @@
 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),
index a63e0aeb4db5feed2f2f0f4b42e64468dcb11c07..5d8477543c8dcf1979458081e0a6cc5124cb6198 100644 (file)
@@ -1,6 +1,6 @@
 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),
index a63e0aeb4db5feed2f2f0f4b42e64468dcb11c07..5d8477543c8dcf1979458081e0a6cc5124cb6198 100644 (file)
@@ -1,6 +1,6 @@
 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),
index a63e0aeb4db5feed2f2f0f4b42e64468dcb11c07..5d8477543c8dcf1979458081e0a6cc5124cb6198 100644 (file)
@@ -1,6 +1,6 @@
 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),
index 194d79601538e2fda050a14da7977492b626a808..a3d5dc0b61802cdd728f167f7a371f41507f6753 100644 (file)
@@ -1,6 +1,6 @@
 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),
index 9f03d34955f1288cca1d5b4481a00b6779ff55c0..d5b823e4b608224026824ace2facb5f6ea0bda60 100644 (file)
@@ -1,6 +1,6 @@
 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),