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
- #init_column(name, default, *args) ⇒ Object
-
#missing_default_forged_as_empty_string? ⇒ Boolean
MySQL misreports NOT NULL column default when none is given.
- #simplified_type(field_type) ⇒ Object
Instance Method Details
#init_column(name, default, *args) ⇒ Object
49 50 51 52 |
# File 'lib/jdbc_adapter/jdbc_mysql.rb', line 49 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 ”.
61 62 63 |
# File 'lib/jdbc_adapter/jdbc_mysql.rb', line 61 def missing_default_forged_as_empty_string? !null && @original_default == '' && !TYPES_ALLOWING_EMPTY_STRING_DEFAULT.include?(type) end |
#simplified_type(field_type) ⇒ Object
43 44 45 46 47 |
# File 'lib/jdbc_adapter/jdbc_mysql.rb', line 43 def simplified_type(field_type) return :boolean if field_type =~ /tinyint\(1\)|bit/i return :string if field_type =~ /enum/i super end |