MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Rafal Somla Date:November 18 2009 9:32am
Subject:Re: bzr commit into mysql-6.0-backup branch (charles.bell:2894)
View as plain text  

Ingo Strüwing wrote:
>> +    s_stream << "WHERE LOWER(routine_schema) = LOWER('" << db_name
> << "') AND ";
>> +  else
>> +    s_stream << "WHERE routine_schema COLLATE utf8_bin = '" <<
> db_name << "' AND ";
>> +  s_stream << "routine_type = 'PROCEDURE'";
> 3) I wonder if COLLATE utf8_bin could be useful even after LOWER()?
> Or do we even have a collation that is case insensitive?
> Or isn't comparison case insensitive by default (utf8_general_ci), and
> COLLATE utf8_bin broke that? Won't removal of COLLATE utf8_bin be all
> what is needed to fix the problem? OTOH, utf8_general_ci would compare
> 'a', 'A', 'À', and 'á' as equal, which might have been the reason for
> using utf8_bin in the first place. But then it would make sense after
> LOWER() too.

I introduced explicit utf8_bin collation to make comparisons case sensitive. 
This was needed to fix some issue (don't remember the bug# at the moment). I 
think it is needed for case sensitive platforms like unix. Without it, 
si_objects incorrectly identifies different objects whose names differs in 
case only. For lctn=1 case comparison works fine even with utf8_bin, because 
then names are transformed to lc before comparison (we use "canonical" names).

It is worrying that 'a' and accented 'a' can be identified. I wonder if 
LOWER() would do that. If yes, I'd say we still have error in this WHERE 

> Would be nice to have a test for these subtle differences.
> Applies to the other two functions too.

Yes, good idea. Maybe I'll try to formulate WL for this.


bzr commit into mysql-6.0-backup branch (charles.bell:2894) Bug#47804Chuck Bell17 Nov
  • Re: bzr commit into mysql-6.0-backup branch (charles.bell:2894)Bug#47804Ingo Strüwing18 Nov
    • Re: bzr commit into mysql-6.0-backup branch (charles.bell:2894)Bug#47804Rafal Somla18 Nov