module ActiveRecord::ConnectionAdapters::MySQL::Quoting

def cast_bound_value(value)

def cast_bound_value(value)
  case value
  when Rational
    value.to_f.to_s
  when Numeric
    value.to_s
  when BigDecimal
    value.to_s("F")
  when true
    "1"
  when false
    "0"
  else
    value
  end
end

def quoted_binary(value)

def quoted_binary(value)
  "x'#{value.hex}'"
end

def type_cast(value) # :nodoc:

:nodoc:
of Strings since MySQL adapters are able to handle those classes more efficiently.
Override +type_cast+ we pass to mysql2 Date and Time objects instead
def type_cast(value) # :nodoc:
  case value
  when ActiveSupport::TimeWithZone
    # We need to check explicitly for ActiveSupport::TimeWithZone because
    # we need to transform it to Time objects but we don't want to
    # transform Time objects to themselves.
    if default_timezone == :utc
      value.getutc
    else
      value.getlocal
    end
  when Time
    if default_timezone == :utc
      value.utc? ? value : value.getutc
    else
      value.utc? ? value.getlocal : value
    end
  when Date
    value
  else
    super
  end
end

def unquote_identifier(identifier)

def unquote_identifier(identifier)
  if identifier && identifier.start_with?("`")
    identifier[1..-2]
  else
    identifier
  end
end

def unquoted_false

def unquoted_false
  0
end

def unquoted_true

def unquoted_true
  1
end