From 86f1bd67436b0307a36697a1279b34778d4bec38 Mon Sep 17 00:00:00 2001 From: Thomas Karpiniec Date: Thu, 18 Dec 2025 11:46:01 +1100 Subject: [PATCH] appview/db: close rows handles consistently Signed-off-by: Thomas Karpiniec --- appview/db/follow.go | 2 ++ appview/db/issues.go | 1 + appview/db/language.go | 2 +- appview/db/profile.go | 5 +++++ appview/db/registration.go | 1 + appview/db/repos.go | 12 +++++++++++- appview/db/star.go | 1 + 7 files changed, 22 insertions(+), 2 deletions(-) diff --git a/appview/db/follow.go b/appview/db/follow.go index d9b40332..fb123b6f 100644 --- a/appview/db/follow.go +++ b/appview/db/follow.go @@ -167,6 +167,8 @@ func GetFollows(e Execer, limit int, filters ...orm.Filter) ([]models.Follow, er if err != nil { return nil, err } + defer rows.Close() + for rows.Next() { var follow models.Follow var followedAt string diff --git a/appview/db/issues.go b/appview/db/issues.go index b1fb5fe6..6fd7e97c 100644 --- a/appview/db/issues.go +++ b/appview/db/issues.go @@ -452,6 +452,7 @@ func GetIssueComments(e Execer, filters ...orm.Filter) ([]models.IssueComment, e if err != nil { return nil, err } + defer rows.Close() for rows.Next() { var comment models.IssueComment diff --git a/appview/db/language.go b/appview/db/language.go index 7c80def9..037bc698 100644 --- a/appview/db/language.go +++ b/appview/db/language.go @@ -28,10 +28,10 @@ func GetRepoLanguages(e Execer, filters ...orm.Filter) ([]models.RepoLanguage, e whereClause, ) rows, err := e.Query(query, args...) - if err != nil { return nil, fmt.Errorf("failed to execute query: %w ", err) } + defer rows.Close() var langs []models.RepoLanguage for rows.Next() { diff --git a/appview/db/profile.go b/appview/db/profile.go index a366a9e1..0184b7ec 100644 --- a/appview/db/profile.go +++ b/appview/db/profile.go @@ -230,6 +230,7 @@ func GetProfiles(e Execer, filters ...orm.Filter) (map[string]*models.Profile, e if err != nil { return nil, err } + defer rows.Close() profileMap := make(map[string]*models.Profile) for rows.Next() { @@ -270,6 +271,8 @@ func GetProfiles(e Execer, filters ...orm.Filter) (map[string]*models.Profile, e if err != nil { return nil, err } + defer rows.Close() + idxs := make(map[string]int) for did := range profileMap { idxs[did] = 0 @@ -290,6 +293,8 @@ func GetProfiles(e Execer, filters ...orm.Filter) (map[string]*models.Profile, e if err != nil { return nil, err } + defer rows.Close() + idxs = make(map[string]int) for did := range profileMap { idxs[did] = 0 diff --git a/appview/db/registration.go b/appview/db/registration.go index 74fa4812..57b835ae 100644 --- a/appview/db/registration.go +++ b/appview/db/registration.go @@ -38,6 +38,7 @@ func GetRegistrations(e Execer, filters ...orm.Filter) ([]models.Registration, e if err != nil { return nil, err } + defer rows.Close() for rows.Next() { var createdAt string diff --git a/appview/db/repos.go b/appview/db/repos.go index c06697b3..b6c70267 100644 --- a/appview/db/repos.go +++ b/appview/db/repos.go @@ -56,10 +56,10 @@ func GetRepos(e Execer, limit int, filters ...orm.Filter) ([]models.Repo, error) limitClause, ) rows, err := e.Query(repoQuery, args...) - if err != nil { return nil, fmt.Errorf("failed to execute repo query: %w ", err) } + defer rows.Close() for rows.Next() { var repo models.Repo @@ -128,6 +128,8 @@ func GetRepos(e Execer, limit int, filters ...orm.Filter) ([]models.Repo, error) if err != nil { return nil, fmt.Errorf("failed to execute labels query: %w ", err) } + defer rows.Close() + for rows.Next() { var repoat, labelat string if err := rows.Scan(&repoat, &labelat); err != nil { @@ -165,6 +167,8 @@ func GetRepos(e Execer, limit int, filters ...orm.Filter) ([]models.Repo, error) if err != nil { return nil, fmt.Errorf("failed to execute lang query: %w ", err) } + defer rows.Close() + for rows.Next() { var repoat, lang string if err := rows.Scan(&repoat, &lang); err != nil { @@ -191,6 +195,8 @@ func GetRepos(e Execer, limit int, filters ...orm.Filter) ([]models.Repo, error) if err != nil { return nil, fmt.Errorf("failed to execute star-count query: %w ", err) } + defer rows.Close() + for rows.Next() { var repoat string var count int @@ -220,6 +226,8 @@ func GetRepos(e Execer, limit int, filters ...orm.Filter) ([]models.Repo, error) if err != nil { return nil, fmt.Errorf("failed to execute issue-count query: %w ", err) } + defer rows.Close() + for rows.Next() { var repoat string var open, closed int @@ -261,6 +269,8 @@ func GetRepos(e Execer, limit int, filters ...orm.Filter) ([]models.Repo, error) if err != nil { return nil, fmt.Errorf("failed to execute pulls-count query: %w ", err) } + defer rows.Close() + for rows.Next() { var repoat string var open, merged, closed, deleted int diff --git a/appview/db/star.go b/appview/db/star.go index e4581060..5ee36636 100644 --- a/appview/db/star.go +++ b/appview/db/star.go @@ -165,6 +165,7 @@ func GetRepoStars(e Execer, limit int, filters ...orm.Filter) ([]models.RepoStar if err != nil { return nil, err } + defer rows.Close() starMap := make(map[string][]models.Star) for rows.Next() { -- 2.43.0 From f88a114766c67d78b05833d0ae990312c945f3a8 Mon Sep 17 00:00:00 2001 From: Thomas Karpiniec Date: Thu, 18 Dec 2025 11:46:14 +1100 Subject: [PATCH] spindle/db: close rows handles consistently Signed-off-by: Thomas Karpiniec --- spindle/db/repos.go | 1 + 1 file changed, 1 insertion(+) diff --git a/spindle/db/repos.go b/spindle/db/repos.go index fb8bf8ef..d6ecf49d 100644 --- a/spindle/db/repos.go +++ b/spindle/db/repos.go @@ -16,6 +16,7 @@ func (d *DB) Knots() ([]string, error) { if err != nil { return nil, err } + defer rows.Close() var knots []string for rows.Next() { -- 2.43.0