##// END OF EJS Templates
Fixed: SQL error when filtering issues with an empty group or role (#7656)....
Jean-Philippe Lang -
r4768:f357912d211c
parent child
Show More
@@ -566,9 +566,19 class Query < ActiveRecord::Base
566 sql = ''
566 sql = ''
567 case operator
567 case operator
568 when "="
568 when "="
569 if value.any?
569 sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")"
570 sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")"
571 else
572 # IN an empty set
573 sql = "1=0"
574 end
570 when "!"
575 when "!"
576 if value.any?
571 sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))"
577 sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))"
578 else
579 # NOT IN an empty set
580 sql = "1=1"
581 end
572 when "!*"
582 when "!*"
573 sql = "#{db_table}.#{db_field} IS NULL"
583 sql = "#{db_table}.#{db_field} IS NULL"
574 sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter
584 sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter
@@ -484,7 +484,6 class QueryTest < ActiveSupport::TestCase
484 # Users not in a group
484 # Users not in a group
485 assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')"
485 assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')"
486 assert_find_issues_with_query_is_successful @query
486 assert_find_issues_with_query_is_successful @query
487
488 end
487 end
489
488
490 should "search assigned to any group member (all)" do
489 should "search assigned to any group member (all)" do
@@ -494,7 +493,22 class QueryTest < ActiveSupport::TestCase
494 # Only users in a group
493 # Only users in a group
495 assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')"
494 assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')"
496 assert_find_issues_with_query_is_successful @query
495 assert_find_issues_with_query_is_successful @query
496 end
497
497
498 should "return an empty set with = empty group" do
499 @empty_group = Group.generate!
500 @query = Query.new(:name => '_')
501 @query.add_filter('member_of_group', '=', [@empty_group.id.to_s])
502
503 assert_equal [], find_issues_with_query(@query)
504 end
505
506 should "return issues with ! empty group" do
507 @empty_group = Group.generate!
508 @query = Query.new(:name => '_')
509 @query.add_filter('member_of_group', '!', [@empty_group.id.to_s])
510
511 assert_find_issues_with_query_is_successful @query
498 end
512 end
499 end
513 end
500
514
@@ -540,6 +554,22 class QueryTest < ActiveSupport::TestCase
540 assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')"
554 assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')"
541 assert_find_issues_with_query_is_successful @query
555 assert_find_issues_with_query_is_successful @query
542 end
556 end
557
558 should "return an empty set with empty role" do
559 @empty_role = Role.generate!
560 @query = Query.new(:name => '_')
561 @query.add_filter('assigned_to_role', '=', [@empty_role.id.to_s])
562
563 assert_equal [], find_issues_with_query(@query)
564 end
565
566 should "return issues with ! empty role" do
567 @empty_role = Role.generate!
568 @query = Query.new(:name => '_')
569 @query.add_filter('member_of_group', '!', [@empty_role.id.to_s])
570
571 assert_find_issues_with_query_is_successful @query
572 end
543 end
573 end
544 end
574 end
545
575
General Comments 0
You need to be logged in to leave comments. Login now