Module: JdbcSpec::MySQL::Column

Defined in:
lib/jdbc_adapter/jdbc_mysql.rb

Constant Summary collapse

TYPES_ALLOWING_EMPTY_STRING_DEFAULT =
Set.new([:binary, :string, :text])

Instance Method Summary collapse

Instance Method Details

#init_column(name, default, *args) ⇒ Object



43
44
45
46
# File 'lib/jdbc_adapter/jdbc_mysql.rb', line 43

def init_column(name, default, *args)
  @original_default = default
  @default = nil if missing_default_forged_as_empty_string?
end

#missing_default_forged_as_empty_string?Boolean

MySQL misreports NOT NULL column default when none is given. We can’t detect this for columns which may have a legitimate ” default (string, text, binary) but we can for others (integer, datetime, boolean, and the rest).

Test whether the column has default ”, is not null, and is not a type allowing default ”.

Returns:

  • (Boolean)


55
56
57
# File 'lib/jdbc_adapter/jdbc_mysql.rb', line 55

def missing_default_forged_as_empty_string?
  !null && @original_default == '' && !TYPES_ALLOWING_EMPTY_STRING_DEFAULT.include?(type)
end

#simplified_type(field_type) ⇒ Object



37
38
39
40
41
# File 'lib/jdbc_adapter/jdbc_mysql.rb', line 37

def simplified_type(field_type)
  return :boolean if field_type =~ /tinyint\(1\)|bit/i
  return :string  if field_type =~ /enum/i
  super
end