comparison app/models/.svn/text-base/query.rb.svn-base @ 245:051f544170fe

* Update to SVN trunk revision 4993
author Chris Cannam
date Thu, 03 Mar 2011 11:42:28 +0000
parents 8661b858af72
children cbce1fd3b1b7
comparison
equal deleted inserted replaced
244:8972b600f4fb 245:051f544170fe
564 # Helper method to generate the WHERE sql for a +field+, +operator+ and a +value+ 564 # Helper method to generate the WHERE sql for a +field+, +operator+ and a +value+
565 def sql_for_field(field, operator, value, db_table, db_field, is_custom_filter=false) 565 def sql_for_field(field, operator, value, db_table, db_field, is_custom_filter=false)
566 sql = '' 566 sql = ''
567 case operator 567 case operator
568 when "=" 568 when "="
569 sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" 569 if value.any?
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 "!"
571 sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" 576 if value.any?
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
575 when "*" 585 when "*"
576 sql = "#{db_table}.#{db_field} IS NOT NULL" 586 sql = "#{db_table}.#{db_field} IS NOT NULL"