diff options
Diffstat (limited to 'lib/arel/engines/sql')
-rw-r--r-- | lib/arel/engines/sql/core_extensions/array.rb | 4 | ||||
-rw-r--r-- | lib/arel/engines/sql/core_extensions/range.rb | 4 | ||||
-rw-r--r-- | lib/arel/engines/sql/predicates.rb | 8 | ||||
-rw-r--r-- | lib/arel/engines/sql/relations/relation.rb | 4 |
4 files changed, 20 insertions, 0 deletions
diff --git a/lib/arel/engines/sql/core_extensions/array.rb b/lib/arel/engines/sql/core_extensions/array.rb index 72f579b7eb..412479dc83 100644 --- a/lib/arel/engines/sql/core_extensions/array.rb +++ b/lib/arel/engines/sql/core_extensions/array.rb @@ -12,6 +12,10 @@ module Arel def inclusion_predicate_sql "IN" end + + def exclusion_predicate_sql + "NOT IN" + end Array.send(:include, self) end diff --git a/lib/arel/engines/sql/core_extensions/range.rb b/lib/arel/engines/sql/core_extensions/range.rb index 46124f8865..b5b1534e48 100644 --- a/lib/arel/engines/sql/core_extensions/range.rb +++ b/lib/arel/engines/sql/core_extensions/range.rb @@ -8,6 +8,10 @@ module Arel def inclusion_predicate_sql "BETWEEN" end + + def exclusion_predicate_sql + "NOT BETWEEN" + end Range.send(:include, self) end diff --git a/lib/arel/engines/sql/predicates.rb b/lib/arel/engines/sql/predicates.rb index e40240eec5..e9a068fb13 100644 --- a/lib/arel/engines/sql/predicates.rb +++ b/lib/arel/engines/sql/predicates.rb @@ -51,9 +51,17 @@ module Arel class Match < Binary def predicate_sql; 'LIKE' end end + + class NotMatch < Binary + def predicate_sql; 'NOT LIKE' end + end class In < Binary def predicate_sql; operand2.inclusion_predicate_sql end end + + class NotIn < Binary + def predicate_sql; operand2.exclusion_predicate_sql end + end end end diff --git a/lib/arel/engines/sql/relations/relation.rb b/lib/arel/engines/sql/relations/relation.rb index f372589af1..fc353fe0c8 100644 --- a/lib/arel/engines/sql/relations/relation.rb +++ b/lib/arel/engines/sql/relations/relation.rb @@ -21,6 +21,10 @@ module Arel def inclusion_predicate_sql "IN" end + + def exclusion_predicate_sql + "NOT IN" + end def primary_key connection_id = engine.connection.object_id |