aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/engines/sql
diff options
context:
space:
mode:
Diffstat (limited to 'lib/arel/engines/sql')
-rw-r--r--lib/arel/engines/sql/core_extensions/array.rb4
-rw-r--r--lib/arel/engines/sql/core_extensions/range.rb4
-rw-r--r--lib/arel/engines/sql/predicates.rb8
-rw-r--r--lib/arel/engines/sql/relations/relation.rb4
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