Skip to content

Commit

Permalink
Merge pull request #11802 from ko1/fix_field_encoding_for_mysql
Browse files Browse the repository at this point in the history
Set field encoding to client_encoding for mysql adapter.
  • Loading branch information
tenderlove committed Aug 8, 2013
2 parents 5ac2341 + 0d435cc commit 4d8f234
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 3 deletions.
3 changes: 2 additions & 1 deletion activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb 100644 → 100755
Expand Up @@ -469,7 +469,8 @@ def columns(table_name)#:nodoc:
sql = "SHOW FULL FIELDS FROM #{quote_table_name(table_name)}" sql = "SHOW FULL FIELDS FROM #{quote_table_name(table_name)}"
execute_and_free(sql, 'SCHEMA') do |result| execute_and_free(sql, 'SCHEMA') do |result|
each_hash(result).map do |field| each_hash(result).map do |field|
new_column(field[:Field], field[:Default], field[:Type], field[:Null] == "YES", field[:Collation], field[:Extra]) field_name = set_field_encoding(field[:Field])
new_column(field_name, field[:Default], field[:Type], field[:Null] == "YES", field[:Collation], field[:Extra])
end end
end end
end end
Expand Down
4 changes: 4 additions & 0 deletions activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb 100644 → 100755
Expand Up @@ -269,6 +269,10 @@ def configure_connection
def version def version
@version ||= @connection.info[:version].scan(/^(\d+)\.(\d+)\.(\d+)/).flatten.map { |v| v.to_i } @version ||= @connection.info[:version].scan(/^(\d+)\.(\d+)\.(\d+)/).flatten.map { |v| v.to_i }
end end

def set_field_encoding field_name
field_name
end
end end
end end
end end
8 changes: 8 additions & 0 deletions activerecord/lib/active_record/connection_adapters/mysql_adapter.rb 100644 → 100755
Expand Up @@ -559,6 +559,14 @@ def select(sql, name = nil, binds = [])
def version def version
@version ||= @connection.server_info.scan(/^(\d+)\.(\d+)\.(\d+)/).flatten.map { |v| v.to_i } @version ||= @connection.server_info.scan(/^(\d+)\.(\d+)\.(\d+)/).flatten.map { |v| v.to_i }
end end

def set_field_encoding field_name
field_name.force_encoding(client_encoding)
if internal_enc = Encoding.default_internal
field_name = field_name.encoding(internal_enc)
end
field_name
end
end end
end end
end end
2 changes: 0 additions & 2 deletions activerecord/test/cases/base_test.rb 100644 → 100755
Expand Up @@ -585,8 +585,6 @@ def test_readonly_attributes
end end


def test_unicode_column_name def test_unicode_column_name
skip "not on mysql" if current_adapter?(:MysqlAdapter)
columns = Weird.columns_hash.keys
weird = Weird.create(:なまえ => 'たこ焼き仮面') weird = Weird.create(:なまえ => 'たこ焼き仮面')
assert_equal 'たこ焼き仮面', weird.なまえ assert_equal 'たこ焼き仮面', weird.なまえ
end end
Expand Down

0 comments on commit 4d8f234

Please sign in to comment.