aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/arel/visitors/to_sql.rb4
-rw-r--r--spec/arel/visitors/to_sql_spec.rb7
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb
index cbe2b6cca3..5a92e27149 100644
--- a/lib/arel/visitors/to_sql.rb
+++ b/lib/arel/visitors/to_sql.rb
@@ -155,7 +155,9 @@ module Arel
end
def visit_Arel_Nodes_In o
- "#{visit o.left} IN (#{o.right.map { |x| visit x }.join ', '})"
+ right = o.right
+ right = right.empty? ? 'NULL' : right.map { |x| visit x }.join(', ')
+ "#{visit o.left} IN (#{right})"
end
def visit_Arel_Nodes_And o
diff --git a/spec/arel/visitors/to_sql_spec.rb b/spec/arel/visitors/to_sql_spec.rb
index c8bfb845c1..b277810863 100644
--- a/spec/arel/visitors/to_sql_spec.rb
+++ b/spec/arel/visitors/to_sql_spec.rb
@@ -65,6 +65,13 @@ module Arel
"users"."id" IN (1, 2, 3)
}
end
+
+ it "should turn empty right to NULL" do
+ node = @attr.in []
+ @visitor.accept(node).should be_like %{
+ "users"."id" IN (NULL)
+ }
+ end
end
describe 'Equality' do