Module: Sequel::MySQL

Defined in:
lib/sequel/adapters/mysql.rb,
lib/sequel/adapters/shared/mysql.rb

Overview

Module for holding all MySQL-related classes and modules for Sequel.

Defined Under Namespace

Modules: DatabaseMethods, DatasetMethods Classes: Database, Dataset

Constant Summary collapse

MYSQL_TYPES =

Mapping of type numbers to conversion procs

{}
MYSQL_TYPE_PROCS =

Use only a single proc for each type to save on memory

{
  [0, 246]  => lambda{|v| BigDecimal.new(v)},                         # decimal
  [1]  => lambda{|v| convert_tinyint_to_bool ? v.to_i != 0 : v.to_i}, # tinyint
  [2, 3, 8, 9, 13, 247, 248]  => lambda{|v| v.to_i},                  # integer
  [4, 5]  => lambda{|v| v.to_f},                                      # float
  [10, 14]  => lambda{|v| convert_date_time(:string_to_date, v)},     # date
  [7, 12] => lambda{|v| convert_date_time(:database_to_application_timestamp, v)},   # datetime
  [11]  => lambda{|v| convert_date_time(:string_to_time, v)},         # time
  [249, 250, 251, 252]  => lambda{|v| Sequel::SQL::Blob.new(v)}       # blob
}

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.convert_invalid_date_timeObject

By default, Sequel raises an exception if in invalid date or time is used. However, if this is set to nil or :nil, the adapter treats dates like 0000-00-00 and times like 838:00:00 as nil values. If set to :string, it returns the strings as is.



38
39
40
# File 'lib/sequel/adapters/mysql.rb', line 38

def convert_invalid_date_time
  @convert_invalid_date_time
end

.convert_tinyint_to_boolObject

Sequel converts the column type tinyint(1) to a boolean by default when using the native MySQL or Mysql2 adapter. You can turn off the conversion by setting this to false. This setting is ignored when connecting to MySQL via the do or jdbc adapters, both of which automatically do the conversion.



13
14
15
# File 'lib/sequel/adapters/shared/mysql.rb', line 13

def convert_tinyint_to_bool
  @convert_tinyint_to_bool
end

.default_charsetObject

Set the default charset used for CREATE TABLE. You can pass the :charset option to create_table to override this setting.



17
18
19
# File 'lib/sequel/adapters/shared/mysql.rb', line 17

def default_charset
  @default_charset
end

.default_collateObject

Set the default collation used for CREATE TABLE. You can pass the :collate option to create_table to override this setting.



21
22
23
# File 'lib/sequel/adapters/shared/mysql.rb', line 21

def default_collate
  @default_collate
end

.default_engineObject

Set the default engine used for CREATE TABLE. You can pass the :engine option to create_table to override this setting.



25
26
27
# File 'lib/sequel/adapters/shared/mysql.rb', line 25

def default_engine
  @default_engine
end

Class Method Details

.convert_date_time(meth, v) ⇒ Object

If convert_invalid_date_time is nil, :nil, or :string and the conversion raises an InvalidValue exception, return v if :string and nil otherwise.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/sequel/adapters/mysql.rb', line 44

def self.convert_date_time(meth, v)
  begin
    Sequel.send(meth, v)
  rescue InvalidValue
    case @convert_invalid_date_time
    when nil, :nil
      nil
    when :string
      v
    else 
      raise
    end
  end
end