diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2011-02-20 13:03:32 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2011-02-20 13:03:32 +0000 |
commit | f357912d211cc588921e2cc34a8f529d066656c6 (patch) | |
tree | 94509c927edefed894c25ef4bc07d193c91d995a /app | |
parent | 329b2aa2630860796196d71404c8d82d2e6e9223 (diff) | |
download | redmine-f357912d211cc588921e2cc34a8f529d066656c6.tar.gz redmine-f357912d211cc588921e2cc34a8f529d066656c6.zip |
Fixed: SQL error when filtering issues with an empty group or role (#7656).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4888 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r-- | app/models/query.rb | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/app/models/query.rb b/app/models/query.rb index 1f033048a..057626885 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -566,9 +566,19 @@ class Query < ActiveRecord::Base sql = '' case operator when "=" - sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" + if value.any? + sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" + else + # IN an empty set + sql = "1=0" + end when "!" - sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" + if value.any? + sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" + else + # NOT IN an empty set + sql = "1=1" + end when "!*" sql = "#{db_table}.#{db_field} IS NULL" sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter |