diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2013-11-26 04:59:18 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2013-11-26 04:59:18 +0900 |
commit | 501ae92a32285528c8bbdcf2af422eadb6a63c0e (patch) | |
tree | 982ad6636414d3ecb51cd98a37dcb40669c0decc /activerecord/lib/active_record/connection_adapters | |
parent | a6900a20739cf372e47a8f19954b11005a24de3d (diff) | |
download | rails-501ae92a32285528c8bbdcf2af422eadb6a63c0e.tar.gz rails-501ae92a32285528c8bbdcf2af422eadb6a63c0e.tar.bz2 rails-501ae92a32285528c8bbdcf2af422eadb6a63c0e.zip |
Only use BINARY for mysql case sensitive uniqueness check when column has a case insensitive collation.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_adapter.rb | 5 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb index 8aa1ce5c04..21829b4932 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb @@ -334,6 +334,11 @@ module ActiveRecord node end + def case_sensitive_comparison(table, attribute, column, value) + value = case_sensitive_modifier(value) unless value.nil? + table[attribute].eq(value) + end + def case_insensitive_comparison(table, attribute, column, value) table[attribute].lower.eq(table.lower(value)) end diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb index dcbc3466b2..b17ac5ebf6 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -585,6 +585,14 @@ module ActiveRecord Arel::Nodes::Bin.new(node) end + def case_sensitive_comparison(table, attribute, column, value) + if column.case_sensitive? + table[attribute].eq(value) + else + super + end + end + def case_insensitive_comparison(table, attribute, column, value) if column.case_sensitive? super |