From 65e12a8ca01341c1ad00809d807bb8db0f5bf4b2 Mon Sep 17 00:00:00 2001 From: Jacek Date: Fri, 17 Apr 2020 16:39:24 +0200 Subject: [PATCH] SONAR-13221 change PK to uuid of RULES_PARAMETERS table * change rules_parameter_id of ACTIVE_RULE_PARAMETERS table to rules_parameter_uuid --- .../db/qualityprofile/ActiveRuleDao.java | 2 +- .../db/qualityprofile/ActiveRuleParamDto.java | 14 +- .../main/java/org/sonar/db/rule/RuleDao.java | 15 ++- .../java/org/sonar/db/rule/RuleMapper.java | 4 +- .../java/org/sonar/db/rule/RuleParamDto.java | 10 +- .../db/qualityprofile/ActiveRuleMapper.xml | 6 +- .../org/sonar/db/rule/RuleMapper.xml | 16 ++- server/sonar-db-dao/src/schema/schema-sq.ddl | 10 +- .../db/qualityprofile/ActiveRuleDaoTest.java | 6 +- .../java/org/sonar/db/rule/RuleDaoTest.java | 6 +- .../db/migration/version/v83/DbVersion83.java | 26 ++++ ...KeyOnUuidColumnOfRulesParametersTable.java | 38 ++++++ .../AddUuidColumnToRulesParameters.java | 31 +++++ .../DropIdColumnOfRulesParametersTable.java | 31 +++++ ...ryKeyOnIdColumnOfRulesParametersTable.java | 32 +++++ ...eRulesParametersUuidColumnNotNullable.java | 31 +++++ .../PopulateRulesParametersUuid.java | 50 +++++++ ...meterUuidColumnToActiveRuleParameters.java | 50 +++++++ ...erIdColumnOfActiveRuleParametersTable.java | 37 +++++ ...rsRulesParameterUuidColumnNotNullable.java | 50 +++++++ ...ctiveRuleParametersRulesParameterUuid.java | 49 +++++++ ...nUuidColumnOfRulesParametersTableTest.java | 51 +++++++ .../AddUuidColumnToRulesParametersTest.java | 67 +++++++++ ...ropIdColumnOfRulesParametersTableTest.java | 51 +++++++ ...yOnIdColumnOfRulesParametersTableTest.java | 56 ++++++++ ...esParametersUuidColumnNotNullableTest.java | 43 ++++++ .../PopulateRulesParametersUuidTest.java | 82 +++++++++++ ...rUuidColumnToActiveRuleParametersTest.java | 66 +++++++++ ...ColumnOfActiveRuleParametersTableTest.java | 51 +++++++ ...lesParameterUuidColumnNotNullableTest.java | 43 ++++++ ...eRuleParametersRulesParameterUuidTest.java | 127 ++++++++++++++++++ .../schema.sql | 11 ++ .../schema.sql | 11 ++ .../schema.sql | 12 ++ .../schema.sql | 12 ++ .../schema.sql | 12 ++ .../schema.sql | 12 ++ .../schema.sql | 9 ++ .../schema.sql | 10 ++ .../schema.sql | 10 ++ .../schema.sql | 23 ++++ .../org/sonar/server/rule/RegisterRules.java | 2 +- .../QProfileFactoryImplTest.java | 4 +- .../sonar/server/rule/RuleUpdaterTest.java | 2 +- .../sonar/server/rule/ws/ShowActionTest.java | 2 +- 45 files changed, 1239 insertions(+), 44 deletions(-) create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/AddPrimaryKeyOnUuidColumnOfRulesParametersTable.java create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/AddUuidColumnToRulesParameters.java create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/DropIdColumnOfRulesParametersTable.java create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/DropPrimaryKeyOnIdColumnOfRulesParametersTable.java create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/MakeRulesParametersUuidColumnNotNullable.java create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/PopulateRulesParametersUuid.java create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/fk/AddRulesParameterUuidColumnToActiveRuleParameters.java create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/fk/DropRulesParameterIdColumnOfActiveRuleParametersTable.java create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/fk/MakeActiveRuleParametersRulesParameterUuidColumnNotNullable.java create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/fk/PopulateActiveRuleParametersRulesParameterUuid.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/AddPrimaryKeyOnUuidColumnOfRulesParametersTableTest.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/AddUuidColumnToRulesParametersTest.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/DropIdColumnOfRulesParametersTableTest.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/DropPrimaryKeyOnIdColumnOfRulesParametersTableTest.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/MakeRulesParametersUuidColumnNotNullableTest.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/PopulateRulesParametersUuidTest.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/fk/AddRulesParameterUuidColumnToActiveRuleParametersTest.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/fk/DropRulesParameterIdColumnOfActiveRuleParametersTableTest.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/fk/MakeActiveRuleParametersRulesParameterUuidColumnNotNullableTest.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v83/rulesparameters/fk/PopulateActiveRuleParametersRulesParameterUuidTest.java create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v83/rulesparameters/AddPrimaryKeyOnUuidColumnOfRulesParametersTableTest/schema.sql create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v83/rulesparameters/AddUuidColumnToRulesParametersTest/schema.sql create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v83/rulesparameters/DropIdColumnOfRulesParametersTableTest/schema.sql create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v83/rulesparameters/DropPrimaryKeyOnIdColumnOfRulesParametersTableTest/schema.sql create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v83/rulesparameters/MakeRulesParametersUuidColumnNotNullableTest/schema.sql create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v83/rulesparameters/PopulateRulesParametersUuidTest/schema.sql create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v83/rulesparameters/fk/AddRulesParameterUuidColumnToActiveRuleParametersTest/schema.sql create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v83/rulesparameters/fk/DropRulesParameterIdColumnOfActiveRuleParametersTableTest/schema.sql create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v83/rulesparameters/fk/MakeActiveRuleParametersRulesParameterUuidColumnNotNullableTest/schema.sql create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v83/rulesparameters/fk/PopulateActiveRuleParametersRulesParameterUuidTest/schema.sql diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/ActiveRuleDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/ActiveRuleDao.java index 68e156594d0..bea2f1a725a 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/ActiveRuleDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/ActiveRuleDao.java @@ -153,7 +153,7 @@ public class ActiveRuleDao implements Dao { public ActiveRuleParamDto insertParam(DbSession dbSession, ActiveRuleDto activeRule, ActiveRuleParamDto activeRuleParam) { checkArgument(activeRule.getUuid() != null, ACTIVE_RULE_IS_NOT_PERSISTED); checkArgument(activeRuleParam.getUuid() == null, ACTIVE_RULE_PARAM_IS_ALREADY_PERSISTED); - Preconditions.checkNotNull(activeRuleParam.getRulesParameterId(), RULE_PARAM_IS_NOT_PERSISTED); + Preconditions.checkNotNull(activeRuleParam.getRulesParameterUuid(), RULE_PARAM_IS_NOT_PERSISTED); activeRuleParam.setActiveRuleUuid(activeRule.getUuid()); activeRuleParam.setUuid(uuidFactory.create()); diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/ActiveRuleParamDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/ActiveRuleParamDto.java index c42c89923a4..ebfcda04ff8 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/ActiveRuleParamDto.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/ActiveRuleParamDto.java @@ -31,7 +31,7 @@ public class ActiveRuleParamDto { private String uuid; private String activeRuleUuid; - private Integer rulesParameterId; + private String rulesParameterUuid; private String kee; private String value; @@ -53,13 +53,13 @@ public class ActiveRuleParamDto { return this; } - public Integer getRulesParameterId() { - return rulesParameterId; + public String getRulesParameterUuid() { + return rulesParameterUuid; } // TODO set private or drop - public ActiveRuleParamDto setRulesParameterId(Integer rulesParameterId) { - this.rulesParameterId = rulesParameterId; + public ActiveRuleParamDto setRulesParameterUuid(String rulesParameterUuid) { + this.rulesParameterUuid = rulesParameterUuid; return this; } @@ -87,10 +87,10 @@ public class ActiveRuleParamDto { } public static ActiveRuleParamDto createFor(RuleParamDto param) { - Preconditions.checkArgument(param.getId() != null, "Parameter is not persisted"); + Preconditions.checkArgument(param.getUuid() != null, "Parameter is not persisted"); return new ActiveRuleParamDto() .setKey(param.getName()) - .setRulesParameterId(param.getId()); + .setRulesParameterUuid(param.getUuid()); } public static Map groupByKey(Collection params) { diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleDao.java index 2139c8670a7..7fa6d8a3554 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleDao.java @@ -28,6 +28,7 @@ import javax.annotation.Nullable; import org.apache.ibatis.session.ResultHandler; import org.sonar.api.rule.RuleKey; import org.sonar.api.rules.RuleQuery; +import org.sonar.core.util.UuidFactory; import org.sonar.db.Dao; import org.sonar.db.DbSession; import org.sonar.db.RowNotFoundException; @@ -43,6 +44,12 @@ import static org.sonar.db.DatabaseUtils.executeLargeUpdates; public class RuleDao implements Dao { + private final UuidFactory uuidFactory; + + public RuleDao(UuidFactory uuidFactory) { + this.uuidFactory = uuidFactory; + } + public Optional selectByKey(DbSession session, String organizationUuid, RuleKey key) { RuleDto res = mapper(session).selectByKey(organizationUuid, key); ensureOrganizationIsSet(organizationUuid, res); @@ -235,19 +242,21 @@ public class RuleDao implements Dao { public void insertRuleParam(DbSession session, RuleDefinitionDto rule, RuleParamDto param) { checkNotNull(rule.getId(), "Rule id must be set"); param.setRuleId(rule.getId()); + + param.setUuid(uuidFactory.create()); mapper(session).insertParameter(param); } public RuleParamDto updateRuleParam(DbSession session, RuleDefinitionDto rule, RuleParamDto param) { checkNotNull(rule.getId(), "Rule id must be set"); - checkNotNull(param.getId(), "Rule parameter is not yet persisted must be set"); + checkNotNull(param.getUuid(), "Rule parameter is not yet persisted must be set"); param.setRuleId(rule.getId()); mapper(session).updateParameter(param); return param; } - public void deleteRuleParam(DbSession session, int ruleParameterId) { - mapper(session).deleteParameter(ruleParameterId); + public void deleteRuleParam(DbSession session, String ruleParameterUuid) { + mapper(session).deleteParameter(ruleParameterUuid); } public Set selectAllDeprecatedRuleKeys(DbSession session) { diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleMapper.java index 308a422e4a7..8c26caa5e10 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleMapper.java @@ -23,9 +23,9 @@ import java.util.List; import java.util.Set; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.session.ResultHandler; -import org.sonar.db.es.RuleExtensionId; import org.sonar.api.rule.RuleKey; import org.sonar.api.rules.RuleQuery; +import org.sonar.db.es.RuleExtensionId; public interface RuleMapper { @@ -85,7 +85,7 @@ public interface RuleMapper { void updateParameter(RuleParamDto param); - void deleteParameter(Integer paramId); + void deleteParameter(String paramUuid); Set selectAllDeprecatedRuleKeys(); diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleParamDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleParamDto.java index 7d35788103e..d30ad25377e 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleParamDto.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/rule/RuleParamDto.java @@ -28,19 +28,19 @@ import static com.google.common.base.Preconditions.checkArgument; public class RuleParamDto { - private Integer id; + private String uuid; private Integer ruleId; private String name; private String type; private String defaultValue; private String description; - public Integer getId() { - return id; + public String getUuid() { + return uuid; } - public RuleParamDto setId(Integer id) { - this.id = id; + public RuleParamDto setUuid(String uuid) { + this.uuid = uuid; return this; } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/qualityprofile/ActiveRuleMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/qualityprofile/ActiveRuleMapper.xml index 7649914ce45..26e013c0bfb 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/qualityprofile/ActiveRuleMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/qualityprofile/ActiveRuleMapper.xml @@ -198,7 +198,7 @@ p.uuid, p.active_rule_uuid as activeRuleUuid, - p.rules_parameter_id as rulesParameterId, + p.rules_parameter_uuid as rulesParameterUuid, p.rules_parameter_key as kee, p.value as value @@ -207,13 +207,13 @@ insert into active_rule_parameters ( uuid, active_rule_uuid, - rules_parameter_id, + rules_parameter_uuid, rules_parameter_key, value ) values ( #{uuid, jdbcType=VARCHAR}, #{activeRuleUuid, jdbcType=VARCHAR}, - #{rulesParameterId, jdbcType=BIGINT}, + #{rulesParameterUuid, jdbcType=BIGINT}, #{key, jdbcType=VARCHAR}, #{value, jdbcType=VARCHAR} ) diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/rule/RuleMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/rule/RuleMapper.xml index 1c976aacead..b55391d4cbc 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/rule/RuleMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/rule/RuleMapper.xml @@ -461,15 +461,15 @@ and organization_uuid=#{organizationUuid,jdbcType=VARCHAR} - + delete from active_rule_parameters where - rules_parameter_id=#{id,jdbcType=INTEGER} + rules_parameter_uuid=#{uuid,jdbcType=VARCHAR} - p.id as "id", + p.uuid as "uuid", p.rule_id as "ruleId", p.name as "name", p.param_type as "type", @@ -512,15 +512,16 @@ - + delete from rules_parameters where - id=#{id,jdbcType=INTEGER} + uuid=#{uuid,jdbcType=INTEGER} - + insert into rules_parameters ( + uuid, rule_id, name, param_type, @@ -528,6 +529,7 @@ description ) values ( + #{uuid,jdbcType=VARCHAR}, #{ruleId,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, @@ -542,7 +544,7 @@ default_value=#{defaultValue,jdbcType=VARCHAR}, description=#{description,jdbcType=VARCHAR} where - id=#{id,jdbcType=INTEGER} + uuid=#{uuid,jdbcType=VARCHAR}