Project

General

Profile

Feature #44407

Updated by Go MAEDA 1 day ago

show.api.rsb renders the author of every attachment of the issue, causing an author lookup for each attachment. 

 <pre> 
   Attachment Load (0.1ms)    SELECT "attachments".* FROM "attachments" WHERE "attachments"."container_id" = ? AND "attachments"."container_type" = ? ORDER BY attachments.created_on ASC, attachments.id ASC    [["container_id", 3], ["container_type", "Issue"]] 
   ↳ app/views/issues/show.api.rsb:37 
   CACHE User Load (0.0ms)    SELECT "users".* FROM "users" WHERE "users"."type" IN (?, ?) AND "users"."id" = ? LIMIT ?    [["type", "User"], ["type", "AnonymousUser"], ["id", 2], ["LIMIT", 1]] 
   ↳ app/helpers/attachments_helper.rb:85:in 'AttachmentsHelper#render_api_attachment_attributes' 
   CACHE User Load (0.0ms)    SELECT "users".* FROM "users" WHERE "users"."type" IN (?, ?) AND "users"."id" = ? LIMIT ?    [["type", "User"], ["type", "AnonymousUser"], ["id", 2], ["LIMIT", 1]] 
   ↳ app/helpers/attachments_helper.rb:85:in 'AttachmentsHelper#render_api_attachment_attributes' 
   CACHE User Load (0.0ms)    SELECT "users".* FROM "users" WHERE "users"."type" IN (?, ?) AND "users"."id" = ? LIMIT ?    [["type", "User"], ["type", "AnonymousUser"], ["id", 2], ["LIMIT", 1]] 
   ↳ app/helpers/attachments_helper.rb:85:in 'AttachmentsHelper#render_api_attachment_attributes' 
   CACHE User Load (0.0ms)    SELECT "users".* FROM "users" WHERE "users"."type" IN (?, ?) AND "users"."id" = ? LIMIT ?    [["type", "User"], ["type", "AnonymousUser"], ["id", 2], ["LIMIT", 1]] 
   ↳ app/helpers/attachments_helper.rb:85:in 'AttachmentsHelper#render_api_attachment_attributes' 
 </pre> 

 The patch loads all attachment authors with a single query. Requests without @include=attachments@ are not affected. 

 <pre> 
   Attachment Load (0.1ms)    SELECT "attachments".* FROM "attachments" WHERE "attachments"."container_id" = ? AND "attachments"."container_type" "att 
 achments"."container_type" = ? ORDER BY attachments.created_on ASC, attachments.id ASC    [["container_id", 3], ["container_type", ["cont 
 ainer_type", "Issue"]] 
   ↳ app/views/issues/show.api.rsb:37 
   User Load (0.1ms)    SELECT "users".* FROM "users" WHERE "users"."type" IN (?, ?) AND "users"."id" = ?    [["type", "User"], "U 
 ser"], ["type", "AnonymousUser"], ["id", 2]] 
   ↳ app/views/issues/show.api.rsb:37 
 </pre>

Back