From 9cf5918d4768bc0eee765acbccbafec24de225b7 Mon Sep 17 00:00:00 2001 From: Duarte Meneses Date: Tue, 22 Sep 2020 16:08:24 -0500 Subject: [PATCH] SONAR-13861 Remove column 'key_type" from the table 'project_branches' --- .../issue/SiblingsIssuesLoader.java | 4 +- .../org/sonar/db/component/BranchDao.java | 18 ++--- .../org/sonar/db/component/BranchDto.java | 12 ---- .../org/sonar/db/component/BranchMapper.java | 2 +- .../java/org/sonar/db/issue/PrIssueDto.java | 12 ++-- .../org/sonar/db/measure/LiveMeasureDao.java | 3 +- .../sonar/db/measure/LiveMeasureMapper.java | 2 - .../db/organization/OrganizationDao.java | 3 +- .../db/organization/OrganizationMapper.java | 2 - .../org/sonar/db/component/BranchMapper.xml | 5 +- .../sonar/db/component/ComponentMapper.xml | 1 - .../org/sonar/db/issue/IssueMapper.xml | 2 +- .../sonar/db/measure/LiveMeasureMapper.xml | 1 - .../db/organization/OrganizationMapper.xml | 1 - server/sonar-db-dao/src/schema/schema-sq.ddl | 5 +- .../org/sonar/db/component/BranchDtoTest.java | 2 +- .../java/org/sonar/db/issue/IssueDaoTest.java | 2 - .../db/migration/version/v85/DbVersion85.java | 8 ++- .../v85/DropProjectBranchesKeyType.java | 49 +++++++++++++ .../v85/FillProjectBranchesBranchType.java | 46 ++++++++++++ ...ProjectBranchesBranchTypeNotNullable.java} | 25 +++++-- .../v85/DropProjectBranchesKeyTypeTest.java | 66 +++++++++++++++++ .../FillProjectBranchesBranchTypeTest.java | 70 +++++++++++++++++++ ...jectBranchesBranchTypeNotNullableTest.java | 65 +++++++++++++++++ .../DropProjectBranchesKeyTypeTest/schema.sql | 16 +++++ .../schema.sql | 16 +++++ .../schema.sql | 16 +++++ .../server/newcodeperiod/ws/ListAction.java | 2 + 28 files changed, 393 insertions(+), 63 deletions(-) create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v85/DropProjectBranchesKeyType.java create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v85/FillProjectBranchesBranchType.java rename server/{sonar-db-dao/src/main/java/org/sonar/db/component/KeyType.java => sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v85/MakeProjectBranchesBranchTypeNotNullable.java} (50%) create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v85/DropProjectBranchesKeyTypeTest.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v85/FillProjectBranchesBranchTypeTest.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v85/MakeProjectBranchesBranchTypeNotNullableTest.java create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v85/DropProjectBranchesKeyTypeTest/schema.sql create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v85/FillProjectBranchesBranchTypeTest/schema.sql create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v85/MakeProjectBranchesBranchTypeNotNullableTest/schema.sql diff --git a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/SiblingsIssuesLoader.java b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/SiblingsIssuesLoader.java index 68bd4404074..21aaed78c35 100644 --- a/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/SiblingsIssuesLoader.java +++ b/server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/SiblingsIssuesLoader.java @@ -31,8 +31,8 @@ import org.sonar.ce.task.projectanalysis.component.SiblingComponentsWithOpenIssu import org.sonar.core.issue.DefaultIssue; import org.sonar.db.DbClient; import org.sonar.db.DbSession; +import org.sonar.db.component.BranchType; import org.sonar.db.component.ComponentDto; -import org.sonar.db.component.KeyType; import org.sonar.db.issue.IssueDto; import org.sonar.db.issue.PrIssueDto; @@ -69,7 +69,7 @@ public class SiblingsIssuesLoader { } private static SiblingIssue toSiblingIssue(PrIssueDto dto) { - Preconditions.checkState(dto.getKeyType().equals(KeyType.PULL_REQUEST), "Expected all issues to belong to P/Rs"); + Preconditions.checkState(dto.getBranchType().equals(BranchType.PULL_REQUEST), "Expected all issues to belong to P/Rs"); return new SiblingIssue(dto.getKey(), dto.getLine(), dto.getMessage(), dto.getChecksum(), dto.getRuleKey(), dto.getStatus(), dto.getBranchKey(), longToDate(dto.getIssueUpdateDate())); } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/component/BranchDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/component/BranchDao.java index 0898737cec8..eea97147e49 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/component/BranchDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/component/BranchDao.java @@ -41,27 +41,17 @@ public class BranchDao implements Dao { } public void insert(DbSession dbSession, BranchDto dto) { - setKeyType(dto); mapper(dbSession).insert(dto, system2.now()); } public void upsert(DbSession dbSession, BranchDto dto) { BranchMapper mapper = mapper(dbSession); long now = system2.now(); - setKeyType(dto); if (mapper.update(dto, now) == 0) { mapper.insert(dto, now); } } - private static void setKeyType(BranchDto dto) { - if (dto.getBranchType() == BranchType.PULL_REQUEST) { - dto.setKeyType(KeyType.PULL_REQUEST); - } else { - dto.setKeyType(KeyType.BRANCH); - } - } - public int updateMainBranchName(DbSession dbSession, String projectUuid, String newBranchKey) { long now = system2.now(); return mapper(dbSession).updateMainBranchName(projectUuid, newBranchKey, now); @@ -73,7 +63,7 @@ public class BranchDao implements Dao { } public Optional selectByBranchKey(DbSession dbSession, String projectUuid, String key) { - return selectByKey(dbSession, projectUuid, key, KeyType.BRANCH); + return selectByKey(dbSession, projectUuid, key, BranchType.BRANCH); } public List selectByBranchKeys(DbSession dbSession, Map branchKeyByProjectUuid) { @@ -84,11 +74,11 @@ public class BranchDao implements Dao { } public Optional selectByPullRequestKey(DbSession dbSession, String projectUuid, String key) { - return selectByKey(dbSession, projectUuid, key, KeyType.PULL_REQUEST); + return selectByKey(dbSession, projectUuid, key, BranchType.PULL_REQUEST); } - private static Optional selectByKey(DbSession dbSession, String projectUuid, String key, KeyType keyType) { - return Optional.ofNullable(mapper(dbSession).selectByKey(projectUuid, key, keyType)); + private static Optional selectByKey(DbSession dbSession, String projectUuid, String key, BranchType branchType) { + return Optional.ofNullable(mapper(dbSession).selectByKey(projectUuid, key, branchType)); } public Collection selectByComponent(DbSession dbSession, ComponentDto component) { diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/component/BranchDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/component/BranchDto.java index cfdb4dfbdac..72a6952333d 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/component/BranchDto.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/component/BranchDto.java @@ -60,12 +60,6 @@ public class BranchDto { */ private String kee; - /** - * Key type, as provided by {@link KeyType}. - * Not null. - */ - private KeyType keyType; - /** * Branch type, as provided by {@link BranchType}. * Not null. @@ -138,11 +132,6 @@ public class BranchDto { return this; } - BranchDto setKeyType(KeyType keyType) { - this.keyType = keyType; - return this; - } - public BranchType getBranchType() { return branchType; } @@ -239,7 +228,6 @@ public class BranchDto { "uuid='" + uuid + '\'' + ", projectUuid='" + projectUuid + '\'' + ", kee='" + kee + '\'' + - ", keyType=" + keyType + ", branchType=" + branchType + ", mergeBranchUuid='" + mergeBranchUuid + '\'' + ", excludeFromPurge=" + excludeFromPurge + diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/component/BranchMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/component/BranchMapper.java index 60a017fcac3..c44507015fd 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/component/BranchMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/component/BranchMapper.java @@ -38,7 +38,7 @@ public interface BranchMapper { int updateExcludeFromPurge(@Param("uuid") String uuid, @Param("excludeFromPurge") boolean excludeFromPurge, @Param("now") long now); - BranchDto selectByKey(@Param("projectUuid") String projectUuid, @Param("key") String key, @Param("keyType") KeyType keyType); + BranchDto selectByKey(@Param("projectUuid") String projectUuid, @Param("key") String key, @Param("branchType") BranchType branchType); BranchDto selectByUuid(@Param("uuid") String uuid); diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/issue/PrIssueDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/issue/PrIssueDto.java index ccf39fba9fc..94a2653fa8c 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/issue/PrIssueDto.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/issue/PrIssueDto.java @@ -25,7 +25,7 @@ import javax.annotation.Nullable; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import org.sonar.api.rule.RuleKey; -import org.sonar.db.component.KeyType; +import org.sonar.db.component.BranchType; public final class PrIssueDto implements Serializable { @@ -40,7 +40,7 @@ public final class PrIssueDto implements Serializable { private String ruleKey; private String ruleRepo; private String branchKey; - private KeyType keyType; + private BranchType branchType; public String getKey() { return kee; @@ -83,12 +83,12 @@ public final class PrIssueDto implements Serializable { return this; } - public KeyType getKeyType() { - return keyType; + public BranchType getBranchType() { + return branchType; } - public PrIssueDto setKeyType(KeyType s) { - this.keyType = s; + public PrIssueDto setBranchType(BranchType s) { + this.branchType = s; return this; } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java index 4b778ff52d0..d4abbce6721 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureDao.java @@ -30,7 +30,6 @@ import org.sonar.db.Dao; import org.sonar.db.DbSession; import org.sonar.db.component.BranchType; import org.sonar.db.component.ComponentDto; -import org.sonar.db.component.KeyType; import org.sonar.db.dialect.Dialect; import static org.sonar.api.measures.CoreMetrics.NCLOC_KEY; @@ -101,7 +100,7 @@ public class LiveMeasureDao implements Dao { */ public long sumNclocOfBiggestBranch(DbSession dbSession, SumNclocDbQuery dbQuery) { Long ncloc = mapper(dbSession).sumNclocOfBiggestBranch( - NCLOC_KEY, KeyType.BRANCH, BranchType.BRANCH, dbQuery.getOrganizationUuid(), dbQuery.getOnlyPrivateProjects(), dbQuery.getProjectUuidToExclude()); + NCLOC_KEY, BranchType.BRANCH, dbQuery.getOrganizationUuid(), dbQuery.getOnlyPrivateProjects(), dbQuery.getProjectUuidToExclude()); return ncloc == null ? 0L : ncloc; } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java index 5f805a36979..22e5ee92cc1 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/measure/LiveMeasureMapper.java @@ -25,7 +25,6 @@ import javax.annotation.Nullable; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.session.ResultHandler; import org.sonar.db.component.BranchType; -import org.sonar.db.component.KeyType; public interface LiveMeasureMapper { @@ -58,7 +57,6 @@ public interface LiveMeasureMapper { Long sumNclocOfBiggestBranch( @Param("ncloc") String nclocKey, - @Param("branch") KeyType branchOrPullRequest, @Param("branchType") BranchType branchType, @Param("organizationUuid") String organizationUuid, @Param("private") Boolean privateProject, diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationDao.java index b81990c3ea2..f120445e3bf 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationDao.java @@ -29,7 +29,6 @@ import org.sonar.db.DbSession; import org.sonar.db.Pagination; import org.sonar.db.alm.ALM; import org.sonar.db.component.BranchType; -import org.sonar.db.component.KeyType; import org.sonar.db.qualitygate.QGateWithOrgDto; import org.sonar.db.user.GroupDto; @@ -145,7 +144,7 @@ public class OrganizationDao implements Dao { public List selectOrganizationsWithNcloc(DbSession dbSession, List organizationUuids) { List result = new ArrayList<>(); executeLargeUpdates(organizationUuids, chunk -> - result.addAll(getMapper(dbSession).selectOrganizationsWithNcloc(NCLOC_KEY, chunk, KeyType.BRANCH, BranchType.BRANCH)) + result.addAll(getMapper(dbSession).selectOrganizationsWithNcloc(NCLOC_KEY, chunk, BranchType.BRANCH)) ); return result; } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMapper.java index fdf43b88c0b..8e806bda37b 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMapper.java @@ -24,7 +24,6 @@ import javax.annotation.CheckForNull; import org.apache.ibatis.annotations.Param; import org.sonar.db.Pagination; import org.sonar.db.component.BranchType; -import org.sonar.db.component.KeyType; public interface OrganizationMapper { void insert(@Param("organization") OrganizationDto organization, @Param("newProjectPrivate") boolean newProjectPrivate); @@ -80,7 +79,6 @@ public interface OrganizationMapper { List selectOrganizationsWithNcloc( @Param("ncloc") String ncloc, @Param("organizationUuids") List organizationUuids, - @Param("branch") KeyType branchOrPullRequest, @Param("branchType") BranchType branchType); } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/component/BranchMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/component/BranchMapper.xml index af4785fd8d9..dccb832be36 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/component/BranchMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/component/BranchMapper.xml @@ -6,7 +6,6 @@ pb.uuid as uuid, pb.project_uuid as projectUuid, pb.kee as kee, - pb.key_type as keyType, pb.branch_type as branchType, pb.merge_branch_uuid as mergeBranchUuid, pb.pull_request_binary as pullRequestBinary, @@ -19,7 +18,6 @@ uuid, project_uuid, kee, - key_type, branch_type, merge_branch_uuid, pull_request_binary, @@ -31,7 +29,6 @@ #{dto.uuid, jdbcType=VARCHAR}, #{dto.projectUuid, jdbcType=VARCHAR}, #{dto.kee, jdbcType=VARCHAR}, - #{dto.keyType, jdbcType=VARCHAR}, #{dto.branchType, jdbcType=VARCHAR}, #{dto.mergeBranchUuid, jdbcType=VARCHAR}, #{dto.pullRequestBinary, jdbcType=BINARY}, @@ -76,7 +73,7 @@ where pb.project_uuid = #{projectUuid, jdbcType=VARCHAR} and pb.kee = #{key, jdbcType=VARCHAR} and - pb.key_type = #{keyType, jdbcType=VARCHAR} + pb.branch_type = #{branchType, jdbcType=VARCHAR}