diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb index a0420c994..192dfdd0f 100644 --- a/app/models/issue_query.rb +++ b/app/models/issue_query.rb @@ -736,6 +736,8 @@ class IssueQuery < Query " WHERE #{IssueRelation.table_name}.relation_type =" \ " '#{self.class.connection.quote_string(relation_type)}')" when "=", "!" + return '1=0' if ids.empty? + op = (operator == "=" ? 'IN' : 'NOT IN') "#{Issue.table_name}.id #{op}" \ " (SELECT DISTINCT #{IssueRelation.table_name}.#{join_column}" \ diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index 8c5b5e1c8..bb3eecb04 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -1650,6 +1650,10 @@ class QueryTest < ActiveSupport::TestCase query.filters = {"relates" => {:operator => '=', :values => ['1,2']}} assert_equal [1, 2, 3], find_issues_with_query(query).map(&:id).sort + query = IssueQuery.new(:name => '_') + query.filters = {"relates" => {:operator => '=', :values => ['invalid']}} + assert_equal [], find_issues_with_query(query).map(&:id) + query = IssueQuery.new(:name => '_') query.filters = {"relates" => {:operator => '!', :values => ['1']}} assert_equal Issue.where.not(:id => [2, 3]).order(:id).ids, find_issues_with_query(query).map(&:id).sort