From 2a4a20ad67e90055d66cf3680da1a03afbe19728 Mon Sep 17 00:00:00 2001 From: Alan Guo Xiang Tan Date: Thu, 10 Jun 2021 08:50:17 +0800 Subject: [PATCH] PERF: Avoid running a pointless PG query when theme has no variables. (#13342) When `Theme#all_theme_variables` returns an empty array, we were running a pointless query in `StyleSheet::Manager#uploads_digest`. `SELECT "sha1" FROM "theme_fields" INNER JOIN "uploads" ON "uploads"."id" = "theme_fields"."upload_id" WHERE 1=0` --- lib/stylesheet/manager.rb | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/stylesheet/manager.rb b/lib/stylesheet/manager.rb index f40e21200b4..9c719efd93f 100644 --- a/lib/stylesheet/manager.rb +++ b/lib/stylesheet/manager.rb @@ -434,7 +434,18 @@ class Stylesheet::Manager end def uploads_digest - Digest::SHA1.hexdigest(ThemeField.joins(:upload).where(id: theme&.all_theme_variables).pluck(:sha1).join(",")) + sha1s = + if (theme_ids = theme&.all_theme_variables).present? + ThemeField + .joins(:upload) + .where(id: theme_ids) + .pluck(:sha1) + .join(",") + else + "" + end + + Digest::SHA1.hexdigest(sha1s) end def color_scheme_digest