From f4512f4acd8fa938629c99d199d7dd33a5e30b6c Mon Sep 17 00:00:00 2001 From: Jens Reimann Date: Thu, 26 Feb 2026 16:47:30 +0100 Subject: [PATCH] chore: select SBOMs to delete from the median Assisted-by: Claude Code --- src/scenario/mod.rs | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/scenario/mod.rs b/src/scenario/mod.rs index 45223e7..351f825 100644 --- a/src/scenario/mod.rs +++ b/src/scenario/mod.rs @@ -343,23 +343,28 @@ LIMIT 10; } /// Get a pool of deletable SBOMs (up to 100) - /// These SBOMs are selected based on having the most packages + /// These SBOMs are selected from around the median package count pub async fn deletable_sboms(&self) -> anyhow::Result> { let mut db = crate::db::connect(&self.db).await?; let rows = sqlx::query( r#" -SELECT - a.sbom_id::text as id, - count(b.*) as package_count -FROM - sbom a - JOIN sbom_package b ON a.sbom_id = b.sbom_id -GROUP BY - a.sbom_id -ORDER BY - package_count DESC, - a.sbom_id +WITH counts AS ( + SELECT + sbom_id, + COUNT(*)::bigint AS package_count + FROM sbom_package + GROUP BY sbom_id +), +med AS ( + SELECT + percentile_disc(0.5) WITHIN GROUP (ORDER BY package_count) AS median_count + FROM counts +) +SELECT c.sbom_id::text AS id +FROM counts c +CROSS JOIN med +ORDER BY ABS(c.package_count - med.median_count), c.package_count, c.sbom_id LIMIT 100 "#, )