123456789_123456789_123456789_123456789_123456789_

Module: ActiveRecord::ConnectionAdapters::MySQL::Quoting

Do not use. This module is for internal use only.

Constant Summary

Instance Method Summary

Instance Method Details

#cast_bound_value(value)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 12

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"
  when ActiveSupport::Duration
    warn_quote_duration_deprecated
    value.to_s
  else
    value
  end
end

#column_name_matcher

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 88

def column_name_matcher
  COLUMN_NAME
end

#column_name_with_order_matcher

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 92

def column_name_with_order_matcher
  COLUMN_NAME_WITH_ORDER
end

#quote_column_name(name)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 32

def quote_column_name(name)
  QUOTED_COLUMN_NAMES[name] ||= "`#{super.gsub('`', '``')}`"
end

#quote_table_name(name)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 36

def quote_table_name(name)
  QUOTED_TABLE_NAMES[name] ||= super.gsub(".", "`.`").freeze
end

#quoted_binary(value)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 56

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

#quoted_date(value)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 48

def quoted_date(value)
  if supports_datetime_with_precision?
    super
  else
    super.sub(/\.\d{6}\z/, "")
  end
end

#type_cast(value)

Override type_cast we pass to mysql2 ::Date and ::Time objects instead of Strings since ::ActiveRecord::ConnectionAdapters::MySQL adapters are able to handle those classes more efficiently.

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 70

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 Date, Time
    value
  else
    super
  end
end

#unquote_identifier(identifier)

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 60

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

#unquoted_false

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 44

def unquoted_false
  0
end

#unquoted_true

[ GitHub ]

  
# File 'activerecord/lib/active_record/connection_adapters/mysql/quoting.rb', line 40

def unquoted_true
  1
end