]> source.dussan.org Git - redmine.git/commitdiff
Merged r22417 from trunk to 5.1-stable (#39443).
authorMarius Balteanu <marius.balteanu@zitec.com>
Sat, 11 Nov 2023 07:12:34 +0000 (07:12 +0000)
committerMarius Balteanu <marius.balteanu@zitec.com>
Sat, 11 Nov 2023 07:12:34 +0000 (07:12 +0000)
git-svn-id: https://svn.redmine.org/redmine/branches/5.1-stable@22420 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue_query.rb

index 235bf2fbe4f293e27883df451baee6a837af9530..9e1e1c432983a82fd414104cd0be9c9c97228f3c 100644 (file)
@@ -566,11 +566,12 @@ class IssueQuery < Query
     when "*", "!*" # Member / Not member
       sw = operator == "!*" ? 'NOT' : ''
       nl = operator == "!*" ? "#{Issue.table_name}.assigned_to_id IS NULL OR" : ''
+
       subquery =
-        "SELECT DISTINCT #{Member.table_name}.user_id" +
+        "SELECT 1" +
         " FROM #{Member.table_name}" +
-        " WHERE #{Member.table_name}.project_id = #{Issue.table_name}.project_id"
-      "(#{nl} #{Issue.table_name}.assigned_to_id #{sw} IN (#{subquery}))"
+        " WHERE #{Issue.table_name}.project_id = #{Member.table_name}.project_id AND #{Member.table_name}.user_id = #{Issue.table_name}.assigned_to_id"
+      "(#{nl} #{sw} EXISTS (#{subquery}))"
     when "=", "!"
       role_cond =
         if value.any?
@@ -581,10 +582,10 @@ class IssueQuery < Query
       sw = operator == "!" ? 'NOT' : ''
       nl = operator == "!" ? "#{Issue.table_name}.assigned_to_id IS NULL OR" : ''
       subquery =
-        "SELECT DISTINCT #{Member.table_name}.user_id, #{Member.table_name}.project_id" +
-        " FROM #{Member.table_name}, #{MemberRole.table_name}" +
-        " WHERE #{Member.table_name}.id = #{MemberRole.table_name}.member_id AND #{role_cond}"
-      "(#{nl} (#{Issue.table_name}.assigned_to_id, #{Issue.table_name}.project_id) #{sw} IN (#{subquery}))"
+        "SELECT 1" +
+        " FROM #{Member.table_name} inner join #{MemberRole.table_name} on members.id = member_roles.member_id" +
+        " WHERE #{Issue.table_name}.project_id = #{Member.table_name}.project_id AND #{Member.table_name}.user_id = #{Issue.table_name}.assigned_to_id AND #{role_cond}"
+      "(#{nl} #{sw} EXISTS (#{subquery}))"
     end
   end