mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
MySQL: schema.rb now includes TEXT and BLOB column limits.
This commit is contained in:
parent
39303c0221
commit
da74eeb294
3 changed files with 15 additions and 8 deletions
|
@ -1,3 +1,7 @@
|
|||
* MySQL: schema.rb now includes TEXT and BLOB column limits.
|
||||
|
||||
*Jeremy Kemper*
|
||||
|
||||
* MySQL: correct LONGTEXT and LONGBLOB limits from 2GB to their true 4GB.
|
||||
|
||||
*Jeremy Kemper*
|
||||
|
|
|
@ -640,16 +640,19 @@ module ActiveRecord
|
|||
|
||||
def initialize_type_map(m) # :nodoc:
|
||||
super
|
||||
|
||||
m.register_type(%r(enum)i) do |sql_type|
|
||||
limit = sql_type[/^enum\((.+)\)/i, 1]
|
||||
.split(',').map{|enum| enum.strip.length - 2}.max
|
||||
Type::String.new(limit: limit)
|
||||
end
|
||||
|
||||
m.register_type %r(tinytext)i, Type::Text.new(limit: 255)
|
||||
m.register_type %r(tinyblob)i, Type::Binary.new(limit: 255)
|
||||
m.register_type %r(mediumtext)i, Type::Text.new(limit: 16777215)
|
||||
m.register_type %r(mediumblob)i, Type::Binary.new(limit: 16777215)
|
||||
m.register_type %r(tinytext)i, Type::Text.new(limit: 2**8 - 1)
|
||||
m.register_type %r(tinyblob)i, Type::Binary.new(limit: 2**8 - 1)
|
||||
m.register_type %r(text)i, Type::Text.new(limit: 2**16 - 1)
|
||||
m.register_type %r(blob)i, Type::Binary.new(limit: 2**16 - 1)
|
||||
m.register_type %r(mediumtext)i, Type::Text.new(limit: 2**24 - 1)
|
||||
m.register_type %r(mediumblob)i, Type::Binary.new(limit: 2**24 - 1)
|
||||
m.register_type %r(longtext)i, Type::Text.new(limit: 2**32 - 1)
|
||||
m.register_type %r(longblob)i, Type::Binary.new(limit: 2**32 - 1)
|
||||
m.register_type %r(^bigint)i, Type::Integer.new(limit: 8)
|
||||
|
|
|
@ -203,9 +203,9 @@ class SchemaDumperTest < ActiveRecord::TestCase
|
|||
end
|
||||
|
||||
if current_adapter?(:MysqlAdapter, :Mysql2Adapter)
|
||||
def test_schema_dump_should_not_add_default_value_for_mysql_text_field
|
||||
def test_schema_dump_should_add_default_value_for_mysql_text_field
|
||||
output = standard_dump
|
||||
assert_match %r{t.text\s+"body",\s+null: false$}, output
|
||||
assert_match %r{t.text\s+"body",\s+limit: 65535,\s+null: false$}, output
|
||||
end
|
||||
|
||||
def test_schema_dump_includes_length_for_mysql_binary_fields
|
||||
|
@ -217,11 +217,11 @@ class SchemaDumperTest < ActiveRecord::TestCase
|
|||
def test_schema_dump_includes_length_for_mysql_blob_and_text_fields
|
||||
output = standard_dump
|
||||
assert_match %r{t.binary\s+"tiny_blob",\s+limit: 255$}, output
|
||||
assert_match %r{t.binary\s+"normal_blob"$}, output
|
||||
assert_match %r{t.binary\s+"normal_blob",\s+limit: 65535$}, output
|
||||
assert_match %r{t.binary\s+"medium_blob",\s+limit: 16777215$}, output
|
||||
assert_match %r{t.binary\s+"long_blob",\s+limit: 4294967295$}, output
|
||||
assert_match %r{t.text\s+"tiny_text",\s+limit: 255$}, output
|
||||
assert_match %r{t.text\s+"normal_text"$}, output
|
||||
assert_match %r{t.text\s+"normal_text",\s+limit: 65535$}, output
|
||||
assert_match %r{t.text\s+"medium_text",\s+limit: 16777215$}, output
|
||||
assert_match %r{t.text\s+"long_text",\s+limit: 4294967295$}, output
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue