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.



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

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 adapter. You can turn off the conversion by setting this to false.



44
45
46
# File 'lib/sequel/adapters/mysql.rb', line 44

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.



9
10
11
# File 'lib/sequel/adapters/shared/mysql.rb', line 9

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.



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

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.



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

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.



50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/sequel/adapters/mysql.rb', line 50

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