diff options
author | Havoc Pennington <havoc.pennington@sonarsource.com> | 2025-04-30 11:56:09 -0400 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2025-04-30 20:03:53 +0000 |
commit | f726ef07e7e1836624489befab56ae7c59c3040d (patch) | |
tree | cc833156b5127f90dce83277889c25ea1d5189c6 /server/sonar-db-dao/src | |
parent | fcb3daa28591b66e667994b5d771167f7c104a18 (diff) | |
download | sonarqube-master.tar.gz sonarqube-master.zip |
Diffstat (limited to 'server/sonar-db-dao/src')
5 files changed, 40 insertions, 0 deletions
diff --git a/server/sonar-db-dao/src/it/java/org/sonar/db/purge/PurgeDaoIT.java b/server/sonar-db-dao/src/it/java/org/sonar/db/purge/PurgeDaoIT.java index 10dda0d3735..535a6109e38 100644 --- a/server/sonar-db-dao/src/it/java/org/sonar/db/purge/PurgeDaoIT.java +++ b/server/sonar-db-dao/src/it/java/org/sonar/db/purge/PurgeDaoIT.java @@ -2001,6 +2001,21 @@ oldCreationDate)); "sca_issue_uuid", "issue-uuid2", "sca_release_uuid", "release-uuid2"))); assertThat(db.countRowsOfTable(dbSession, "sca_issues_releases")).isEqualTo(2); + + var analysisBase = Map.of( + "created_at", 0L, + "updated_at", 0L, + "status", "COMPLETED", + "errors", "[]", + "parsed_files", "[]", + "failed_reason", "something"); + db.executeInsert("sca_analyses", merge(analysisBase, Map.of( + "uuid", "analysis-uuid1", + "component_uuid", branch1Uuid))); + db.executeInsert("sca_analyses", merge(analysisBase, Map.of( + "uuid", "analysis-uuid2", + "component_uuid", branch2Uuid))); + assertThat(db.countRowsOfTable(dbSession, "sca_analyses")).isEqualTo(2); } @Test @@ -2016,6 +2031,7 @@ oldCreationDate)); assertThat(db.countRowsOfTable(dbSession, "sca_releases")).isEqualTo(1); assertThat(db.countRowsOfTable(dbSession, "sca_dependencies")).isEqualTo(1); assertThat(db.countRowsOfTable(dbSession, "sca_issues_releases")).isEqualTo(1); + assertThat(db.countRowsOfTable(dbSession, "sca_analyses")).isEqualTo(1); } @Test diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java index e0fb94fa09a..7f7519b661a 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java @@ -532,6 +532,12 @@ class PurgeCommands { } public void deleteScaActivity(String componentUuid) { + // delete sca_analyses first since it sort of marks the analysis as valid/existing + profiler.start("deleteScaAnalyses (sca_analyses)"); + purgeMapper.deleteScaAnalysesByComponentUuid(componentUuid); + session.commit(); + profiler.stop(); + profiler.start("deleteScaDependencies (sca_dependencies)"); purgeMapper.deleteScaDependenciesByComponentUuid(componentUuid); session.commit(); diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java index 085b28cef6c..4df1984b48f 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java @@ -195,6 +195,8 @@ public interface PurgeMapper { void deleteIssuesFixedByBranchUuid(@Param("branchUuid") String branchUuid); + void deleteScaAnalysesByComponentUuid(@Param("componentUuid") String componentUuid); + void deleteScaDependenciesByComponentUuid(@Param("componentUuid") String componentUuid); void deleteScaIssuesReleasesByComponentUuid(@Param("componentUuid") String componentUuid); diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml index f8d213b6a3b..f713aebd9d7 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml @@ -674,6 +674,9 @@ delete from architecture_graphs where branch_uuid = #{branchUuid,jdbcType=VARCHAR} </delete> + <delete id="deleteScaAnalysesByComponentUuid"> + delete from sca_analyses where component_uuid = #{componentUuid,jdbcType=VARCHAR} + </delete> <delete id="deleteScaDependenciesByComponentUuid"> delete from sca_dependencies where sca_release_uuid in (select uuid from sca_releases where component_uuid = #{componentUuid,jdbcType=VARCHAR}) </delete> diff --git a/server/sonar-db-dao/src/schema/schema-sq.ddl b/server/sonar-db-dao/src/schema/schema-sq.ddl index bb7e4166b03..1f942ae9125 100644 --- a/server/sonar-db-dao/src/schema/schema-sq.ddl +++ b/server/sonar-db-dao/src/schema/schema-sq.ddl @@ -1042,6 +1042,19 @@ CREATE TABLE "SAML_MESSAGE_IDS"( ALTER TABLE "SAML_MESSAGE_IDS" ADD CONSTRAINT "PK_SAML_MESSAGE_IDS" PRIMARY KEY("UUID"); CREATE UNIQUE NULLS NOT DISTINCT INDEX "SAML_MESSAGE_IDS_UNIQUE" ON "SAML_MESSAGE_IDS"("MESSAGE_ID" NULLS FIRST); +CREATE TABLE "SCA_ANALYSES"( + "UUID" CHARACTER VARYING(40) NOT NULL, + "COMPONENT_UUID" CHARACTER VARYING(40) NOT NULL, + "STATUS" CHARACTER VARYING(40) NOT NULL, + "FAILED_REASON" CHARACTER VARYING(255), + "ERRORS" CHARACTER LARGE OBJECT NOT NULL, + "PARSED_FILES" CHARACTER LARGE OBJECT NOT NULL, + "CREATED_AT" BIGINT NOT NULL, + "UPDATED_AT" BIGINT NOT NULL +); +ALTER TABLE "SCA_ANALYSES" ADD CONSTRAINT "PK_SCA_ANALYSES" PRIMARY KEY("UUID"); +CREATE UNIQUE NULLS NOT DISTINCT INDEX "SCA_ANALYSES_COMPONENT_UNIQ" ON "SCA_ANALYSES"("COMPONENT_UUID" NULLS FIRST); + CREATE TABLE "SCA_DEPENDENCIES"( "UUID" CHARACTER VARYING(40) NOT NULL, "SCA_RELEASE_UUID" CHARACTER VARYING(40) NOT NULL, |