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]

74
75
76
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 74

def column_name_matcher
  COLUMN_NAME
end

#column_name_with_order_matcherObject

[View source]

78
79
80
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 78

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
23
24
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 9

def quote_bound_value(value)
  case value
  when Rational
    quote(value.to_f.to_s)
  when Numeric, ActiveSupport::Duration
    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]

26
27
28
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 26

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

#quote_table_name(name) ⇒ Object

[View source]

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

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

#quoted_binary(value) ⇒ Object

[View source]

50
51
52
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 50

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

#quoted_date(value) ⇒ Object

[View source]

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

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]

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

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]

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

def unquoted_false
  0
end

#unquoted_trueObject

[View source]

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

def unquoted_true
  1
end