Module: ActiveRecord::ConnectionAdapters::MySQL::Quoting
- Included in:
- AbstractMysqlAdapter
- Defined in:
- lib/active_record/connection_adapters/mysql/quoting.rb
Overview
:nodoc:
Constant Summary collapse
- QUOTED_COLUMN_NAMES =
:nodoc:
Concurrent::Map.new
- QUOTED_TABLE_NAMES =
:nodoc:
Concurrent::Map.new
Instance Method Summary collapse
- #column_name_matcher ⇒ Object
- #column_name_with_order_matcher ⇒ Object
- #quote_bound_value(value) ⇒ Object
- #quote_column_name(name) ⇒ Object
- #quote_table_name(name) ⇒ Object
- #quoted_binary(value) ⇒ Object
- #quoted_date(value) ⇒ Object
-
#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. - #unquote_identifier(identifier) ⇒ Object
- #unquoted_false ⇒ Object
- #unquoted_true ⇒ Object
Instance Method Details
#column_name_matcher ⇒ Object
85 86 87 |
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 85 def column_name_matcher COLUMN_NAME end |
#column_name_with_order_matcher ⇒ Object
89 90 91 |
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 89 def column_name_with_order_matcher COLUMN_NAME_WITH_ORDER end |
#quote_bound_value(value) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 12 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
29 30 31 |
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 29 def quote_column_name(name) QUOTED_COLUMN_NAMES[name] ||= "`#{super.gsub('`', '``')}`" end |
#quote_table_name(name) ⇒ Object
33 34 35 |
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 33 def quote_table_name(name) QUOTED_TABLE_NAMES[name] ||= super.gsub(".", "`.`").freeze end |
#quoted_binary(value) ⇒ Object
53 54 55 |
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 53 def quoted_binary(value) "x'#{value.hex}'" end |
#quoted_date(value) ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 45 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.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 67 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 |
#unquote_identifier(identifier) ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 57 def unquote_identifier(identifier) if identifier && identifier.start_with?("`") identifier[1..-2] else identifier end end |
#unquoted_false ⇒ Object
41 42 43 |
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 41 def unquoted_false 0 end |
#unquoted_true ⇒ Object
37 38 39 |
# File 'lib/active_record/connection_adapters/mysql/quoting.rb', line 37 def unquoted_true 1 end |