From file util_str.c in function strupper_m: while (*s && !(((unsigned char)s[0]) & 0x7f)) { The expression !(((unsigned char)s[0]) & 0x7f) is FALSE for all values of s[0] except 0 and 0x80. The desired optimization never takes place. Should be corrected to: while (*s && !(((unsigned char)s[0]) & 0x80)) { Same for strlower_m.
*** This bug has been marked as a duplicate of 922 ***
database cleanup