From cbff1bcf385aba876933b2b4569826e9bc46183c Mon Sep 17 00:00:00 2001
From: Ernie Miller <ernie@erniemiller.org>
Date: Thu, 14 Jun 2012 11:45:51 -0400
Subject: Fix in [] to be false, in [] to be true

This is in response to discussion on 62207fa
---
 lib/arel/visitors/to_sql.rb | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

(limited to 'lib/arel/visitors')

diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb
index cb8df8329a..a350daa3da 100644
--- a/lib/arel/visitors/to_sql.rb
+++ b/lib/arel/visitors/to_sql.rb
@@ -370,11 +370,19 @@ key on UpdateManager using UpdateManager#key=
       end
 
       def visit_Arel_Nodes_In o
-        "#{visit o.left} IN (#{visit o.right})"
+        if Array === o.right && o.right.empty?
+          '1=0'
+        else
+          "#{visit o.left} IN (#{visit o.right})"
+        end
       end
 
       def visit_Arel_Nodes_NotIn o
-        "#{visit o.left} NOT IN (#{visit o.right})"
+        if Array === o.right && o.right.empty?
+          '1=1'
+        else
+          "#{visit o.left} NOT IN (#{visit o.right})"
+        end
       end
 
       def visit_Arel_Nodes_And o
-- 
cgit v1.2.3