Skip to content
Browse files

Merge pull request #3713 from kf8a/master

postgresql adapter should quote not a number and infinity correctly for float columns
  • Loading branch information...
2 parents d5cc711 + 06c23c4 commit 58950ee224e8d81cb8bd79edb4a2f0fb7ca75b68 @tenderlove tenderlove committed May 4, 2012
View
9 activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
@@ -511,8 +511,13 @@ def quote(value, column = nil) #:nodoc:
else super
end
when Float
- return super unless value.infinite? && column.type == :datetime
- "'#{value.to_s.downcase}'"
+ if value.infinite? && column.type == :datetime
+ "'#{value.to_s.downcase}'"
+ elsif value.infinite? || value.nan?
+ "'#{value.to_s}'"
+ else
+ super
+ end
when Numeric
return super unless column.sql_type == 'money'
# Not truly string input, so doesn't require (or allow) escape string syntax.
View
12 activerecord/test/cases/adapters/postgresql/quoting_test.rb
@@ -19,6 +19,18 @@ def test_type_cast_false
assert_equal 'f', @conn.type_cast(false, nil)
assert_equal 'f', @conn.type_cast(false, c)
end
+
+ def test_quote_float_nan
+ nan = 0.0/0
+ c = Column.new(nil, 1, 'float')
+ assert_equal "'NaN'", @conn.quote(nan, c)
+ end
+
+ def test_quote_float_infinity
+ infinity = 1.0/0
+ c = Column.new(nil, 1, 'float')
+ assert_equal "'Infinity'", @conn.quote(infinity, c)
+ end
end
end
end

0 comments on commit 58950ee

Please sign in to comment.
Something went wrong with that request. Please try again.