send painful query to slave
Change-Id: I9d84220347cdc4f630250c26040ed5e4d2407f72 Reviewed-on: https://gerrit.instructure.com/15949 Reviewed-by: Brian Palmer <brianp@instructure.com> QA-Review: Cody Cutrer <cody@instructure.com> Tested-by: Cody Cutrer <cody@instructure.com>
This commit is contained in:
parent
7b03752291
commit
698c127575
|
@ -1781,40 +1781,42 @@ class User < ActiveRecord::Base
|
|||
opts[:start_at] ||= 2.weeks.ago
|
||||
opts[:limit] ||= 20
|
||||
|
||||
submissions = []
|
||||
submissions += self.submissions.after(opts[:start_at]).for_context_codes(context_codes).find(
|
||||
:all,
|
||||
:conditions => ["submissions.score IS NOT NULL AND assignments.workflow_state != ? AND assignments.muted = ?", 'deleted', false],
|
||||
:include => [:assignment, :user, :submission_comments],
|
||||
:order => 'submissions.created_at DESC',
|
||||
:limit => opts[:limit]
|
||||
)
|
||||
ActiveRecord::Base::ConnectionSpecification.with_environment(:slave) do
|
||||
submissions = []
|
||||
submissions += self.submissions.after(opts[:start_at]).for_context_codes(context_codes).find(
|
||||
:all,
|
||||
:conditions => ["submissions.score IS NOT NULL AND assignments.workflow_state != ? AND assignments.muted = ?", 'deleted', false],
|
||||
:include => [:assignment, :user, :submission_comments],
|
||||
:order => 'submissions.created_at DESC',
|
||||
:limit => opts[:limit]
|
||||
)
|
||||
|
||||
# THIS IS SLOW, it takes ~230ms for mike
|
||||
submissions += Submission.for_context_codes(context_codes).find(
|
||||
:all,
|
||||
:select => "submissions.*, last_updated_at_from_db",
|
||||
:joins => self.class.send(:sanitize_sql_array, [<<-SQL, opts[:start_at], self.id, self.id]),
|
||||
INNER JOIN (
|
||||
SELECT MAX(submission_comments.created_at) AS last_updated_at_from_db, submission_id
|
||||
FROM submission_comments, submission_comment_participants
|
||||
WHERE submission_comments.id = submission_comment_id
|
||||
AND (submission_comments.created_at > ?)
|
||||
AND (submission_comment_participants.user_id = ?)
|
||||
AND (submission_comments.author_id <> ?)
|
||||
GROUP BY submission_id
|
||||
) AS relevant_submission_comments ON submissions.id = submission_id
|
||||
INNER JOIN assignments ON assignments.id = submissions.assignment_id AND assignments.workflow_state <> 'deleted'
|
||||
SQL
|
||||
:order => 'last_updated_at_from_db DESC',
|
||||
:limit => opts[:limit],
|
||||
:conditions => { "assignments.muted" => false }
|
||||
)
|
||||
# THIS IS SLOW, it takes ~230ms for mike
|
||||
submissions += Submission.for_context_codes(context_codes).find(
|
||||
:all,
|
||||
:select => "submissions.*, last_updated_at_from_db",
|
||||
:joins => self.class.send(:sanitize_sql_array, [<<-SQL, opts[:start_at], self.id, self.id]),
|
||||
INNER JOIN (
|
||||
SELECT MAX(submission_comments.created_at) AS last_updated_at_from_db, submission_id
|
||||
FROM submission_comments, submission_comment_participants
|
||||
WHERE submission_comments.id = submission_comment_id
|
||||
AND (submission_comments.created_at > ?)
|
||||
AND (submission_comment_participants.user_id = ?)
|
||||
AND (submission_comments.author_id <> ?)
|
||||
GROUP BY submission_id
|
||||
) AS relevant_submission_comments ON submissions.id = submission_id
|
||||
INNER JOIN assignments ON assignments.id = submissions.assignment_id AND assignments.workflow_state <> 'deleted'
|
||||
SQL
|
||||
:order => 'last_updated_at_from_db DESC',
|
||||
:limit => opts[:limit],
|
||||
:conditions => { "assignments.muted" => false }
|
||||
)
|
||||
|
||||
submissions = submissions.sort_by{|t| (t.last_updated_at_from_db.to_datetime.in_time_zone rescue nil) || t.created_at}.reverse
|
||||
submissions = submissions.uniq
|
||||
submissions.first(opts[:limit])
|
||||
submissions
|
||||
submissions = submissions.sort_by{|t| (t.last_updated_at_from_db.to_datetime.in_time_zone rescue nil) || t.created_at}.reverse
|
||||
submissions = submissions.uniq
|
||||
submissions.first(opts[:limit])
|
||||
submissions
|
||||
end
|
||||
end
|
||||
memoize :submissions_for_context_codes
|
||||
|
||||
|
|
Loading…
Reference in New Issue