From 4d90b8ee6b314f9ff43ad00e56956e3683b620b7 Mon Sep 17 00:00:00 2001 From: Roberto Dip Date: Fri, 19 Jan 2024 15:42:42 -0300 Subject: [PATCH] filter for hosts_count > 0 in software title query (#16225) for #15964, pair programmed with @jacobshandling --------- Co-authored-by: Jacob Shandling --- changes/15964-software | 1 + server/datastore/mysql/software_titles.go | 1 + server/datastore/mysql/software_titles_test.go | 8 +++++++- 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 changes/15964-software diff --git a/changes/15964-software b/changes/15964-software new file mode 100644 index 0000000000..e05b5ede9d --- /dev/null +++ b/changes/15964-software @@ -0,0 +1 @@ +* Fixed a bug that caused the software/titles page to error diff --git a/server/datastore/mysql/software_titles.go b/server/datastore/mysql/software_titles.go index aa592dbe32..5a90cb1228 100644 --- a/server/datastore/mysql/software_titles.go +++ b/server/datastore/mysql/software_titles.go @@ -184,6 +184,7 @@ JOIN software_titles_host_counts sthc ON sthc.software_title_id = st.id %s -- placeholder for optional extra WHERE filter WHERE sthc.team_id = ? %s +AND sthc.hosts_count > 0 GROUP BY st.id` cveJoinType := "LEFT" diff --git a/server/datastore/mysql/software_titles_test.go b/server/datastore/mysql/software_titles_test.go index dd943d1c2c..fe91532cc1 100644 --- a/server/datastore/mysql/software_titles_test.go +++ b/server/datastore/mysql/software_titles_test.go @@ -215,10 +215,16 @@ func testSoftwareSyncHostsSoftwareTitles(t *testing.T, ds *Datastore) { checkTableTotalCount(3) - // update host4 (team2), remove all software and delete team + // update host4 (team2), remove all software software4 = []fleet.Software{} _, err = ds.UpdateHostSoftware(ctx, host4.ID, software4) require.NoError(t, err) + require.NoError(t, ds.ReconcileSoftwareTitles(ctx)) + require.NoError(t, ds.SyncHostsSoftware(ctx, time.Now())) + require.NoError(t, ds.SyncHostsSoftwareTitles(ctx, time.Now())) + listSoftwareTitlesCheckCount(t, ds, 0, 0, team2Opts, false) + + // delete team require.NoError(t, ds.DeleteTeam(ctx, team2.ID)) // this call will remove team2 from the software host counts table