Merge pull request #44408 from kmcphillips/mysql-quote-duration
Quote ActiveSupport::Duration in mysql2 adapter
This commit is contained in:
commit
f9a1671c18
@ -8,7 +8,7 @@ module MySQL
|
|||||||
module Quoting # :nodoc:
|
module Quoting # :nodoc:
|
||||||
def quote_bound_value(value)
|
def quote_bound_value(value)
|
||||||
case value
|
case value
|
||||||
when Numeric
|
when Numeric, ActiveSupport::Duration
|
||||||
quote(value.to_s)
|
quote(value.to_s)
|
||||||
when BigDecimal
|
when BigDecimal
|
||||||
quote(value.to_s("F"))
|
quote(value.to_s("F"))
|
||||||
|
@ -7,7 +7,7 @@ module ActiveRecord
|
|||||||
module ConnectionAdapters
|
module ConnectionAdapters
|
||||||
class Mysql2Adapter
|
class Mysql2Adapter
|
||||||
class BindParameterTest < ActiveRecord::Mysql2TestCase
|
class BindParameterTest < ActiveRecord::Mysql2TestCase
|
||||||
fixtures :topics
|
fixtures :topics, :posts
|
||||||
|
|
||||||
def test_update_question_marks
|
def test_update_question_marks
|
||||||
str = "foo?bar"
|
str = "foo?bar"
|
||||||
@ -46,6 +46,36 @@ def test_create_null_bytes
|
|||||||
assert_equal str, x.title
|
assert_equal str, x.title
|
||||||
assert_equal str, x.content
|
assert_equal str, x.content
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_where_with_string_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", "Welcome to the weblog").count
|
||||||
|
assert_equal 1, count
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_integer_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", 0).count
|
||||||
|
assert_equal 0, count
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_float_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", 0.0).count
|
||||||
|
assert_equal 0, count
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_boolean_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", false).count
|
||||||
|
assert_equal 0, count
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_decimal_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", BigDecimal(0)).count
|
||||||
|
assert_equal 0, count
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_duration_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", 0.seconds).count
|
||||||
|
assert_equal 0, count
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -16,6 +16,10 @@ def test_quote_bound_big_decimal
|
|||||||
assert_equal "'4.2'", @conn.quote_bound_value(BigDecimal("4.2"))
|
assert_equal "'4.2'", @conn.quote_bound_value(BigDecimal("4.2"))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_quote_bound_duration
|
||||||
|
assert_equal "'42'", @conn.quote_bound_value(42.seconds)
|
||||||
|
end
|
||||||
|
|
||||||
def test_quote_bound_true
|
def test_quote_bound_true
|
||||||
assert_equal "'1'", @conn.quote_bound_value(true)
|
assert_equal "'1'", @conn.quote_bound_value(true)
|
||||||
end
|
end
|
||||||
|
@ -0,0 +1,48 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "cases/helper"
|
||||||
|
|
||||||
|
module ActiveRecord
|
||||||
|
module ConnectionAdapters
|
||||||
|
class PostgreSQLAdapter
|
||||||
|
class BindParameterTest < ActiveRecord::PostgreSQLTestCase
|
||||||
|
fixtures :posts
|
||||||
|
|
||||||
|
def test_where_with_string_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", "Welcome to the weblog").count
|
||||||
|
assert_equal 1, count
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_integer_for_string_column_using_bind_parameters
|
||||||
|
assert_raises ActiveRecord::StatementInvalid do
|
||||||
|
Post.where("title = ?", 0).count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_float_for_string_column_using_bind_parameters
|
||||||
|
assert_raises ActiveRecord::StatementInvalid do
|
||||||
|
Post.where("title = ?", 0.0).count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_boolean_for_string_column_using_bind_parameters
|
||||||
|
assert_raises ActiveRecord::StatementInvalid do
|
||||||
|
Post.where("title = ?", false).count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_decimal_for_string_column_using_bind_parameters
|
||||||
|
assert_raises ActiveRecord::StatementInvalid do
|
||||||
|
Post.where("title = ?", BigDecimal(0)).count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_duration_for_string_column_using_bind_parameters
|
||||||
|
assert_raises ActiveRecord::StatementInvalid do
|
||||||
|
Post.where("title = ?", 0.seconds).count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,43 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "cases/helper"
|
||||||
|
|
||||||
|
module ActiveRecord
|
||||||
|
module ConnectionAdapters
|
||||||
|
class SQLite3Adapter
|
||||||
|
class BindParameterTest < ActiveRecord::SQLite3TestCase
|
||||||
|
fixtures :posts
|
||||||
|
|
||||||
|
def test_where_with_string_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", "Welcome to the weblog").count
|
||||||
|
assert_equal 1, count
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_integer_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", 0).count
|
||||||
|
assert_equal 0, count
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_float_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", 0.0).count
|
||||||
|
assert_equal 0, count
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_boolean_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", false).count
|
||||||
|
assert_equal 0, count
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_decimal_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", BigDecimal(0)).count
|
||||||
|
assert_equal 0, count
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_where_with_duration_for_string_column_using_bind_parameters
|
||||||
|
count = Post.where("title = ?", 0.seconds).count
|
||||||
|
assert_equal 0, count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user