Skip to content

Commit 1696a12

Browse files
authored
Merge pull request rails#54735 from flavorjones/flavorjones-sqlite-adapter-quote-infinity
fix: sqlite3 adapter should quote Infinity and NaN
2 parents af7ed3c + d4f3a45 commit 1696a12

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

activerecord/lib/active_record/connection_adapters/sqlite3/quoting.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,19 @@ def quote_table_name(name)
5050
end
5151
end
5252

53+
def quote(value) # :nodoc:
54+
case value
55+
when Numeric
56+
if value.finite?
57+
super
58+
else
59+
"'#{value}'"
60+
end
61+
else
62+
super
63+
end
64+
end
65+
5366
def quote_string(s)
5467
::SQLite3::Database.quote(s)
5568
end

activerecord/test/cases/adapters/sqlite3/quoting_test.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,16 @@ def test_quoted_time_dst_local
9595
end
9696
end
9797
end
98+
99+
def test_quote_numeric_infinity
100+
assert_equal "'Infinity'", @conn.quote(Float::INFINITY)
101+
assert_equal "'-Infinity'", @conn.quote(-Float::INFINITY)
102+
assert_equal "'Infinity'", @conn.quote(BigDecimal(Float::INFINITY))
103+
assert_equal "'-Infinity'", @conn.quote(BigDecimal(-Float::INFINITY))
104+
end
105+
106+
def test_quote_float_nan
107+
assert_equal "'NaN'", @conn.quote(Float::NAN)
108+
assert_equal "'NaN'", @conn.quote(BigDecimal(Float::NAN))
109+
end
98110
end

0 commit comments

Comments
 (0)