Skip to content

Commit f39779f

Browse files
committed
Merge pull request rails#27126 from kamipo/fix_unsigned_with_zerofill
Fix that unsigned with zerofill is treated as signed
1 parent 97a4592 commit f39779f

File tree

4 files changed

+9
-2
lines changed

4 files changed

+9
-2
lines changed

activerecord/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
* Fix that unsigned with zerofill is treated as signed.
2+
3+
Fixes #27125.
4+
5+
*Ryuta Kamizono*
6+
17
* Fix the uniqueness validation scope with a polymorphic association.
28

39
*Sergey Alekseev*

activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -692,7 +692,7 @@ def initialize_type_map(m) # :nodoc:
692692

693693
def register_integer_type(mapping, key, options) # :nodoc:
694694
mapping.register_type(key) do |sql_type|
695-
if /\bunsigned\z/ === sql_type
695+
if /\bunsigned\b/.match?(sql_type)
696696
Type::UnsignedInteger.new(options)
697697
else
698698
Type::Integer.new(options)

activerecord/lib/active_record/connection_adapters/mysql/column.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def blob_or_text_column?
2020
end
2121

2222
def unsigned?
23-
/\bunsigned\z/ === sql_type
23+
!/\A(?:enum|set)\b/.match?(sql_type) && /\bunsigned\b/.match?(sql_type)
2424
end
2525

2626
def case_sensitive?

activerecord/test/cases/adapters/mysql2/unsigned_type_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class UnsignedType < ActiveRecord::Base
4848
t.unsigned_bigint :unsigned_bigint_t
4949
t.unsigned_float :unsigned_float_t
5050
t.unsigned_decimal :unsigned_decimal_t, precision: 10, scale: 2
51+
t.column :unsigned_zerofill, "int unsigned zerofill"
5152
end
5253

5354
@connection.columns("unsigned_types").select { |c| /^unsigned_/ === c.name }.each do |column|

0 commit comments

Comments
 (0)