| Bug #3349 | Stored procedures with non-English names are displayed wrong | ||
|---|---|---|---|
| Submitted: | 31 Mar 2004 14:13 | Modified: | 12 May 2006 19:39 |
| Reporter: | Peter Gulutzan | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | MySQL Server: Stored Routines | Severity: | S3 (Non-critical) |
| Version: | 5.0.1-alpha-debug | OS: | Linux (SuSE 8.2/Win XP) |
| Assigned to: | Alexander Nozdrin | CPU Architecture: | Any |
[31 Mar 2004 14:13]
Peter Gulutzan
[25 Aug 2004 18:27]
Peter Gulutzan
Special characters can cause more than just display problems. I can't call or drop a procedure named ß, and can't use ß as a label.
[6 Dec 2004 6:32]
Alexander Barkov
I don't know a quick solution yet. It looks rather an architecture level task.
I believe all clients should see variables and labels as Y WITH DIAERESIS,
no matter the client character set is, cp850, latin1 or utf8. That means
we need to store body of a procedure in UTF8, and change proc.body type
from BLOB to TEXT CHARACTER SET utf8.
This brings problem with character set introducers though.
If a procedure body embeds some character string with a
character set introducer, this string should NOT be converted
into utf8 during procedure creation. This string should not be
also converted into client character set during SHOW CREATE PROCEDURE.
That means we need to escape somehow accented values.
I can see possible ways are:
1. hex notation: _latin1 0xAABBCC
Monty does not like hex notation,
he prefers when basic latin letters are seen as is.
I agree with him at this point.
2. U+ notation: _latin1 'Kaj \U+00C5rno"
3. semi-hex notation, with safe characters written
as is and accented letters escaped: _latin1 'Kaj \xC5rno"
So, before fixing this bug we need to implement either #2 or #3,
or both.
[10 Dec 2004 17:40]
Alexander Barkov
Thank you for your bug report. This issue has been committed to our
source repository of that product and will be incorporated into the
next release.
If necessary, you can access the source repository and build the latest
available version, including the bugfix, yourself. More information
about accessing the source trees is available at
http://www.mysql.com/doc/en/Installing_source_tree.html
Additional info:
Brian votes for semi-hex notation, i.e. : _latin1 'Kaj \xC5rno"
I'm going to stick to this way.
In the future we should implemente Unicode notation as well,
as it is now a Standard SQL part. The disadvantage of Unicode
notation is that it needs more space, comparing to semi-hex
notation.
[10 Dec 2004 17:40]
Alexander Barkov
sorry, I closed it in a mistake.
[19 Jul 2005 7:20]
Alexander Barkov
See also bug#11888
[12 May 2006 19:39]
Trudy Pelzer
Re-tested with 5.1.10-beta and cannot repeat. Looks like this problem was fixed by another patch (I'm speculating that it was "table name to filename encoding").
