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

Included in:
AbstractMysqlAdapter
Defined in:
lib/active_record/connection_adapters/mysql/quoting.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#column_name_matcherObject

[View source]

72
73
74
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 72

def column_name_matcher
  COLUMN_NAME
end

#column_name_with_order_matcherObject

[View source]

76
77
78
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 76

def column_name_with_order_matcher
  COLUMN_NAME_WITH_ORDER
end

#quote_bound_value(value) ⇒ Object

[View source]

9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 9

def quote_bound_value(value)
  case value
  when Numeric
    quote(value.to_s)
  when BigDecimal
    quote(value.to_s("F"))
  when true
    "'1'"
  when false
    "'0'"
  else
    quote(value)
  end
end

#quote_column_name(name) ⇒ Object

[View source]

24
25
26
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 24

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

#quote_table_name(name) ⇒ Object

[View source]

28
29
30
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 28

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

#quoted_binary(value) ⇒ Object

[View source]

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

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

#quoted_date(value) ⇒ Object

[View source]

40
41
42
43
44
45
46
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 40

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

#type_cast(value) ⇒ Object

Override type_cast we pass to mysql2 Date and Time objects instead of Strings since mysql2 is able to handle those classes more efficiently.

[View source]

54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 54

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 ActiveRecord.default_timezone == :utc
      value.getutc
    else
      value.getlocal
    end
  when Date, Time
    value
  else
    super
  end
end

#unquoted_falseObject

[View source]

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

def unquoted_false
  0
end

#unquoted_trueObject

[View source]

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

def unquoted_true
  1
end